Received: by 2002:a05:6358:700f:b0:131:369:b2a3 with SMTP id 15csp842726rwo; Wed, 2 Aug 2023 05:13:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlFyHqPfMfN8p8dqi/3QNleG1obSgBsbKcOffCsazKXCQTWhmCwaX7Ph4YGbK4xw/NZhmcKE X-Received: by 2002:a05:6870:2198:b0:1bb:fdb7:d979 with SMTP id l24-20020a056870219800b001bbfdb7d979mr16727391oae.11.1690978405472; Wed, 02 Aug 2023 05:13:25 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1690978405; cv=pass; d=google.com; s=arc-20160816; b=HTbU5lvUVOz6bH6/QiFxFnw0A9zsDYJtJUQ4CNVNCdXKS+cQyjD0uhcgJ/0PZUa4TT y8VAD+rC/oV2zBQYvSLaWUL7wIW/nxpsZ3dE3LmBTtFtWYo0iiO2Rqo8qprG0UdNBZ/9 Eig6MJGEC6b2sigWFsf95MAFREJgCtCz5gf5K9RS8g1mSYB9vOlhpeIa696X75LJUgwB 62u8xpCoQvqOSArL2oepnQ4c1hHYIwNq4OmMvkQnumV6oFdDJi7+CQ8qnH4DNNTm8IzG xia43h9FusFP8wXbFUPLN4NgiM3IctLk6EDJnphR7jcKCwrbPhssk4G2X5hZJWxNOX3a K2JQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=rySMGvM6Ibnsu5ArZs3AWeRSrSwBPdE1Ny4MHQ4j19Q=; fh=+j5rXU9EMaJHiFmXtNMGqxjN8XX/1GWzw7oXW9cPbVM=; b=MIZtsEa9C/TCivpca10NBv/KywD1QXgVu99In7u976qDy7/xLDg/eFoN4rYKlKFhtk jgTWKbDsciKwOJHYu8O29SuPJL6hsrKllXtClIWzwOD01by2rk5+OX5HCNauSi/vUDEz tky/uscpztOENXKwqt5XEAjwrUtyX5oRQiORjowcZchqBSakLwd/MRy362tOkOmeOkoh 7AV7Ts0vapvd9W8c3G5Kvv+5vfq5yAYmT5Nlrk5kYgkSpyDezQVGm8CUrLszaZbCz/QY roGHtjn7TyJc3WqKpw1S2RdNbrxOK5sEGcEC9r5z2gksQkfIstjx/l/Ccfg1LOKY5zoe 9cOQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=VLvKn502; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=T+eQ2Ams; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gm13-20020a17090b100d00b002631bfbd8d0si1099551pjb.129.2023.08.02.05.13.12; Wed, 02 Aug 2023 05:13:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=VLvKn502; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=T+eQ2Ams; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233978AbjHBKmM (ORCPT + 99 others); Wed, 2 Aug 2023 06:42:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232466AbjHBKly (ORCPT ); Wed, 2 Aug 2023 06:41:54 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33E4259F3; Wed, 2 Aug 2023 03:39:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1690972751; x=1722508751; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=rySMGvM6Ibnsu5ArZs3AWeRSrSwBPdE1Ny4MHQ4j19Q=; b=VLvKn502Tj0/Z4cl7mx9vchkZdkxJRCYo1FxlrAGk1sw3mfyZX+aBzAW GrqEGc3PC55uV1R+W/mc3l1xP43qdaOifQzWom31PpFdgZxap84KXSjke +oz5flUKIDZuM+4fX5Jv7BesZt7NfsgNsqbW2FAgIiAYDsKzk6ndT1dko sC5p6hiAN6t0tdm9gEuVaEA5/wcX5bN+nJbM4mxYQ1pKlJEpMqMhN0DP6 VxAiII48datPdx28MfcPnKIlQ2CUG+H0rHMFVs1QZcKXzIAWsPmIZPzfM d7anGscZlyeYOVKWvlUS+1Ao1Pp3w+LXcAyXGhKrj3bT6WVa200TUxQ6q g==; X-IronPort-AV: E=Sophos;i="6.01,249,1684825200"; d="scan'208";a="239332194" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 02 Aug 2023 03:39:10 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 2 Aug 2023 03:39:05 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 2 Aug 2023 03:39:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B6a/lvAmRFy0nYgW6vN+MyXQjo2yR8QjkjZY0ShHKN6SmkBWYakezfmwSLzw1jlj0MgyqLq2h0zqNj0v4pj0PZHVu+13Oc9kC9vTX+/ecuayQAFZzrWQu01rvVJ/vq5Zs5MNIU4U5H3KqaaHO/zxSYJBv8XBBHrTW84viVe+N4OXW2NcTBu6jsA92XTJzAKIK7TXricmu6pcmliN1SwIPJgHdwQyAQPnJHhZA3YnF6wJV9tQ/nLDC4Jx/eo/sOGE6UC5FgRQ4nRAZyjraWp8PKxllgEBCKU0rNrCYNH6W4yXvdfxDWMxwsCP1hCbEHbB9ExValmgGE23JU6LxA7HLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rySMGvM6Ibnsu5ArZs3AWeRSrSwBPdE1Ny4MHQ4j19Q=; b=An7K64PwM8dRHjwVTCNg1C71tMv/FEcT6cEbmXrYsgRcSdLxkHbM81MRgHyjCIpbbhsleoZbjvwAXg/4cte6EbrOdG4x/gNOGKVh1ZgnLikIrg/F3p0J5lWtTUEj5Jc4lzs/zEOiKUCCbmPdGmK/Jf4xfsZmLD+o/Jq7rtJ8WcGS29mNX9yQNdeULhfcl79jKAj8w24QDfwwADgzmX7DGGU+rSqtPQGB9RQw3iUocM1Y2aXIqpVV9JL2mItX1sSjVUmnXR2svEZ20zYmKchKZJZ5kQf5tSdoC8B1FDx1we+SfWSUHwKx/Ofo4OYLWzi5w49IvEOm9Vjqsq4z6lthLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rySMGvM6Ibnsu5ArZs3AWeRSrSwBPdE1Ny4MHQ4j19Q=; b=T+eQ2Ams3oGaZeib6mK9LNoSLQJ/qVsZtGup3t3TJy/OEuJQRq3NbXfr1dj7VRz5aTp2d/CNb7Lv+2YXtTy5bltGR4+kVfRkrqWZhVT4fas/EfCmTsibuo6J+ekjfV1Eb/gl7Ir+BFmRc0BsrnXTEJ0cPpwX/DjgsfD66SrYY1c= Received: from DM6PR11MB4185.namprd11.prod.outlook.com (2603:10b6:5:195::29) by PH7PR11MB8251.namprd11.prod.outlook.com (2603:10b6:510:1a9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.45; Wed, 2 Aug 2023 10:39:02 +0000 Received: from DM6PR11MB4185.namprd11.prod.outlook.com ([fe80::591f:32f4:3319:e1f8]) by DM6PR11MB4185.namprd11.prod.outlook.com ([fe80::591f:32f4:3319:e1f8%7]) with mapi id 15.20.6631.045; Wed, 2 Aug 2023 10:39:02 +0000 From: To: , , , , , , , , , , , , , , , CC: , , , , , Subject: Re: [PATCH v2 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Topic: [PATCH v2 6/9] drm: atmel_hlcdc: Add support for XLCDC in atmel LCD driver Thread-Index: AQHZtGqBLPDFAnruw027OonLO3SUkq/W8kgA Date: Wed, 2 Aug 2023 10:39:02 +0000 Message-ID: <7963595c-918b-1cc4-c8c6-b7668e62dfd5@microchip.com> References: <20230712024017.218921-1-manikandan.m@microchip.com> <20230712024017.218921-7-manikandan.m@microchip.com> In-Reply-To: <20230712024017.218921-7-manikandan.m@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR11MB4185:EE_|PH7PR11MB8251:EE_ x-ms-office365-filtering-correlation-id: 63f5d2d8-317c-4385-d62d-08db9344b006 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ijKNE4OI6OZyOz53igzRY3cDde5ui8MJUmXvMd+jsmmcsEazMyuQBjBUNxX7zbkPAyGtgvW0AytvHQ8B2W7CcFp+/9Y3bH2UAu+CWsbBsMWUYEHijxKziMCoXZXxmXHoe50ASqBERHvuDQPQk/yG9p7LDX+Ib1+AlgbguJE/OnvmegXQMxCxXy8SoJFGywu1lkRrQR59MdGMJ3M/43IH6aTGBWPtY7kx8s+DLNgfR96HWLYO3Q4J6BbTxaaMG34mZVKAqBoclOfePzomYZOM5xVTTY911AfdK6uGEUViOj4/GXWKFAVgBn6tx9epU/W7MKK/4K/XWlQpCrWPqIszXpZLZ023urxZdeHYqGQ4y66csnHR26R/xZ+r7hJ5Fvf9Wq32mFYgZk555uBkjD5hf/kj242200dj9bLplUZTj4d5MVMp7EeH93PkA61Ndwgrycj6jr3VTB1qOwKek8vz+V5y6Fy9c+ys4p/Q+QtLinnBciMhJmQJst1G0zxDzUadWen6v6KxNzg8wvRhF4E6TtSL6qn5bMc1D5kQwJD7LY1Cf5Dtl5m203mJpu2y5M+xgmDSKbNHogSSdCcA7XBDCGgFOON9+Rtak7hZ0tKbZZSEb3I2jwnhMdfx9eP0tyXP1dMd5Z/brImMQ1/Ty3l1/hxP+iHxDzf4PdGhHSrCo2tGrZ2tvVr/JWSiSB3dWd9P x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4185.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(136003)(346002)(396003)(366004)(376002)(451199021)(2616005)(107886003)(53546011)(26005)(6506007)(83380400001)(186003)(30864003)(316002)(4326008)(76116006)(66946007)(66556008)(91956017)(2906002)(64756008)(66446008)(66476007)(5660300002)(7416002)(41300700001)(8676002)(8936002)(71200400001)(6486002)(6512007)(54906003)(478600001)(110136005)(38100700002)(921005)(122000001)(31696002)(86362001)(36756003)(38070700005)(31686004)(21314003)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N3QvRFRPM01xT0RyaUFYQ3RmcGE0ZlBtUmljRjdqL2IrVnZiYmRySzQ4ODJw?= =?utf-8?B?YzdyNXpMc0d2cXN0bFhIZU9INEtnME04cmdQS2VmdGFiSmhnWnI1cDRha282?= =?utf-8?B?cENjR1ByM25IYk1IWldobXpTMllmMjl1MjZWNDYyNEZkekJOVW5xbkZxWkx2?= =?utf-8?B?U2FQR2h1b3M5eHJ4VGlXeFZEMUxua3dXM0REMTQwdFNKSmZKS1dua3JPQlM3?= =?utf-8?B?QmYrYVJVUWhRZktRZDVHZCszanNnNkp1QVJnemtIT1pidy9wZ0FhenJPNVN4?= =?utf-8?B?c0FiMkRmN3BXR1lJVlBkanRnQTl0VGdXS0JDdFJ0RjNwQnJyTzBlcWhjZW82?= =?utf-8?B?cEhCMHRZNDFSRzdaaDlXbllWaktWQUt2L0d1L1F0MmUxNVlTOEh1Z2Y4UUVV?= =?utf-8?B?TjVwK25DNmpYVlp1ZUsvdFJKMFlyS1p2bEtSWlpxOHpPdEhQNDRWWFJ0alkw?= =?utf-8?B?OXlDM252R0tuSGVnZld3cDQ0MHpiL20xOFVIMW4yZmppTDNiTDM4cVhKN0Zt?= =?utf-8?B?cGpQYjV1SllVYjE2ZjFkY21kc0t3dW5MMm5JK0FWOTJaamUvdXFHcStST3hD?= =?utf-8?B?Um5uME9NcmZMVDVvWEt1RGVPc05BcS8wNWFQbS9mRC9QQUR3V2RCQ1BiV2Fk?= =?utf-8?B?bW92K3ZPZWUrMUM1NTd1Q3VIbTIvZXdRUlVKdzN5bUlIeFlNbDhNanhZemdS?= =?utf-8?B?M2hHMWR2RTdrbGdMcTJFdVpGQTdWeHNxSzJoVTU4VEp1M3VZRnYvNytLUEhV?= =?utf-8?B?OXBtS3h3UFZLM05MOENqSEN0R05MVWxMUWx4bVJvTWJ6QWhZbFdDb3hmcWNM?= =?utf-8?B?UzBLTVdwNGMzT09vMitRNWFua3d4OGRtWGdXTDI2eWpvUkgyblNnNThuWTJZ?= =?utf-8?B?QUs3VitKbjhteVk3eUdqakhQS1I4YnhaRmNady9lUDFiS3FQazdVUU00Nitt?= =?utf-8?B?K2VTRm85dzcxa2JTNUNyN3czMFlTR0VNVXBmWkR0eTdmelE1SjRrck1SVUdJ?= =?utf-8?B?b0Q2Z3RtT2RKeGErOUVhT3R1TkgxdnFLZGpPZDFrcXlGZ0FRS2hhbHNaTjR1?= =?utf-8?B?M0VsS1ZYd016WmlCMHVzWkd4bytsckNSdGNnc2RlN2U2VDF6bDhLdUh4cmVn?= =?utf-8?B?K3JjYTVUMzJKSXdiMEo3TWVGd0tQL2syU0JQYm1iRFFmbzNuUFEya1pyMDBV?= =?utf-8?B?WG1lbnBOdHVYTWFNUVAzN251bGRTdGlXU2FYZEYwMldOYWw1aHYzMmcvZW1G?= =?utf-8?B?MlB2Mkc1QUVMUGFkY0NrQ3BYQ1h2bmkwWHhiQXhLeFZocVB1MGpCWmJNeGFm?= =?utf-8?B?ZTJBVnl1Q0MvZEVFWlMzQkwwNzRtcWpyWHZERlpvTHJFR0ZJQlR5Mmw4U3lC?= =?utf-8?B?bkVOR3IzdUFBRm9lVUh3NkpWTE03SkdYOVpMNzNkbnJkc2JGNnJhUTYvUjEy?= =?utf-8?B?N3lzMnpEZjFVL2lSK1ZoeHY0b3lEVnlDOHpvQXpUTWFydHM3eHBnMVdQL0ZN?= =?utf-8?B?QTVucGtaUVdUMisvUWNkWFF2WXJ1anBpdkk1eGp3NDRGSmJHYndFaCswYXI4?= =?utf-8?B?S3VvZTEvL1FGVTVKclNVYTVobnRReGhiYU1JdFJ5VTBzWjFQRjEwOUloSm52?= =?utf-8?B?SGpvUkVaZDZCNjcySzMvUmFmbXRPV3piUmw5dGRxeEpXLzVGcS9VVHF4SFQv?= =?utf-8?B?OUdNWklSbStSTXQrdG9tTHFKdWlXaGlvdWRKYXROaUdkVERhZnlGaWpqbjdI?= =?utf-8?B?TXdLNU1mV05LSU0wcXkwdFhyMWdoNExOOFZaMy85WitOZDM2NDVQWEM4RnZw?= =?utf-8?B?TEJuN0xWN1U2WklJOW9mYnJWbGVORmZablN0VjZSditMWTVJNGNvSWRCZzJ2?= =?utf-8?B?ZmlwSzRSa2VzVmtYc1owbkhLOU9oVzhzeXJiUnR0TVRJWnBwY29uZGgrU1My?= =?utf-8?B?Rzc0R1ZTajZJa2p2WXRLbVFLMDM0VW96K1BrZ0pXZ1VTS1YySDlFWUxHcWdF?= =?utf-8?B?YTYrQXpHR1IvM1EycHBpdDA2YVRGU1NjMW5UYkN6YjZpTUNpcys3Zkd3UnVh?= =?utf-8?B?YTZORUhHTHE2Rmp5VVJOaEFQdGNEdDFJSm1lditkMklNL3JKK1Z2Ulh2RE5P?= =?utf-8?B?VXI5MFpOZG91VldsSlJUOERBa2Erb3RCcnZabi9rV2xrc1RtbXI4VmpCaUFU?= =?utf-8?B?aUE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <466FB12FF4D6CF47B36ADE42F8396E60@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4185.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63f5d2d8-317c-4385-d62d-08db9344b006 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2023 10:39:02.3353 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +LZASjQMJx0ifEKVaYh/drctIS+3R7KQLzUmzvJMPwu1g+hpbpsTlqbF8ZthL4tD85zdGss6LM59cBI1BUtBOEohBbYMhqCgu5AktoyjzGU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8251 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDEyLzA3LzIzIDg6MTAgYW0sIE1hbmlrYW5kYW4gTXVyYWxpZGhhcmFuIHdyb3RlOg0K PiAtIFhMQ0RDIGluIFNBTTlYNyBoYXMgZGlmZmVyZW50IHNldHMgb2YgcmVnaXN0ZXJzIGFuZCBh ZGRpdGlvbmFsDQo+IGNvbmZpZ3VyYXRpb24gYml0cyB3aGVuIGNvbXBhcmVkIHRvIHByZXZpb3Vz IEhMQ0RDIElQLiBSZWFkL3dyaXRlDQo+IG9wZXJhdGlvbiBvbiB0aGUgY29udHJvbGxlciByZWdp c3RlcnMgaXMgbm93IHNlcGFyYXRlZCB1c2luZyB0aGUNCj4gWExDREMgc3RhdHVzIGZsYWcuDQo+ IAktIEhFTyBzY2FsaW5nLCB3aW5kb3cgcmVzYW1wbGluZywgQWxwaGEgYmxlbmRpbmcsIFlVVi10 by1SR0INCj4gY29udmVyc2lvbiBpbiBYTENEQyBpcyBkZXJpdmVkIGFuZCBoYW5kbGVkIHVzaW5n IGFkZGl0aW9uYWwNCj4gY29uZmlndXJhdGlvbiBiaXRzIGFuZCByZWdpc3RlcnMuDQo+IAktIFdy aXRpbmcgb25lIHRvIHRoZSBFbmFibGUgZmllbGRzIG9mIGVhY2ggbGF5ZXIgaW4gTENEX0FUVFJF DQo+IGlzIHJlcXVpcmVkIHRvIHJlZmxlY3QgdGhlIHZhbHVlcyBzZXQgaW4gQ29uZmlndXJhdGlv biwgRkJBLCBFbmFibGUNCj4gcmVnaXN0ZXJzIG9mIGVhY2ggbGF5ZXINCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IE1hbmlrYW5kYW4gTXVyYWxpZGhhcmFuIDxtYW5pa2FuZGFuLm1AbWljcm9jaGlwLmNv bT4NCj4gQ28tZGV2ZWxvcGVkLWJ5OiBIYXJpIFByYXNhdGggR3VqdWxhbiBFbGFuZ28gPEhhcmku UHJhc2F0aEdFQG1pY3JvY2hpcC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEhhcmkgUHJhc2F0aCBH dWp1bGFuIEVsYW5nbyA8SGFyaS5QcmFzYXRoR0VAbWljcm9jaGlwLmNvbT4NCj4gQ28tZGV2ZWxv cGVkLWJ5OiBEdXJhaSBNYW5pY2thbSBLUiA8ZHVyYWkubWFuaWNrYW1rckBtaWNyb2NoaXAuY29t Pg0KPiBTaWduZWQtb2ZmLWJ5OiBEdXJhaSBNYW5pY2thbSBLUiA8ZHVyYWkubWFuaWNrYW1rckBt aWNyb2NoaXAuY29tPg0KPiAtLS0NCj4gICAuLi4vZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9o bGNkY19jcnRjLmMgICAgfCAgMzIgKy0NCj4gICAuLi4vZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1l bF9obGNkY19wbGFuZS5jICAgfCAzMzcgKysrKysrKysrKysrKysrLS0tDQo+ICAgMiBmaWxlcyBj aGFuZ2VkLCAzMTIgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gaW5kZXggNTgx ODRjZDZhYjBiLi4yN2Y4NmNlYThiZmYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h dG1lbC1obGNkYy9hdG1lbF9obGNkY19jcnRjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2F0 bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2NydGMuYw0KPiBAQCAtMTM5LDEwICsxMzksMTAgQEAgc3Rh dGljIHZvaWQgYXRtZWxfaGxjZGNfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAq YykNCj4gICAJc3RhdGUgPSBkcm1fY3J0Y19zdGF0ZV90b19hdG1lbF9obGNkY19jcnRjX3N0YXRl KGMtPnN0YXRlKTsNCj4gICAJY2ZnID0gc3RhdGUtPm91dHB1dF9tb2RlIDw8IDg7DQo+ICAgDQo+ IC0JaWYgKGFkai0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykNCj4gKwlpZiAoIWNydGMt PmRjLT5kZXNjLT5pc194bGNkYyAmJiAoYWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5D KSkNCg0KSW5zdGVhZCBvZiBkZS1yZWZlcmVuY2luZyB0aGUgdmFsdWUgb2YgaXNfeGxjZGMgZmxh ZyBtdWx0aXBsZSB0aW1lcywgY2FuIA0Kd2UgaGF2ZSBpdCBhc3NpZ25lZCB0byBhIGxvY2FsIHZh cmlhYmxlIGluc3RlYWQgdG8gbWFrZSBpdCBtb3JlIHJlYWRhYmxlIA0KYW5kIGF2b2lkIG11bHRp cGxlIG1lbW9yeSBhY2Nlc3NlcyA/DQoNCj4gICAJCWNmZyB8PSBBVE1FTF9ITENEQ19WU1BPTDsN Cj4gICANCj4gLQlpZiAoYWRqLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTkhTWU5DKQ0KPiArCWlm ICghY3J0Yy0+ZGMtPmRlc2MtPmlzX3hsY2RjICYmIChhZGotPmZsYWdzICYgRFJNX01PREVfRkxB R19OSFNZTkMpKQ0KPiAgIAkJY2ZnIHw9IEFUTUVMX0hMQ0RDX0hTUE9MOw0KPiAgIA0KPiAgIAly ZWdtYXBfdXBkYXRlX2JpdHMocmVnbWFwLCBBVE1FTF9ITENEQ19DRkcoNSksDQo+IEBAIC0xNzcs NiArMTc3LDIwIEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX2NydGNfYXRvbWljX2Rpc2FibGUo c3RydWN0IGRybV9jcnRjICpjLA0KPiAgIA0KPiAgIAlwbV9ydW50aW1lX2dldF9zeW5jKGRldi0+ ZGV2KTsNCj4gICANCj4gKwlpZiAoY3J0Yy0+ZGMtPmRlc2MtPmlzX3hsY2RjKSB7DQo+ICsJCXJl Z21hcF93cml0ZShyZWdtYXAsIEFUTUVMX0hMQ0RDX0RJUywgQVRNRUxfWExDRENfQ00pOw0KPiAr CQlpZiAoIXJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChyZWdtYXAsIEFUTUVMX0hMQ0RDX1NSLCBz dGF0dXMsDQo+ICsJCQkJCSAgICAgICEoc3RhdHVzICYgQVRNRUxfWExDRENfQ00pLCAxMCwNCj4g KwkJCQkJICAgICAgMCkpDQo+ICsJCQljcHVfcmVsYXgoKTsNCg0KY3B1X3JlbGF4KCkgaXMgbm90 IHJlcXVpcmVkIGhlcmUgYW5kIGF0IG90aGVyIHBsYWNlcyBiZWxvdyBzaW5jZSB0aGUgDQphYm92 ZSBmdW5jdGlvbiB5aWVsZHMgdGhlIGNwdSBhbnl3YXkscmVtb3ZlIHRoZW0uDQoNCj4gKw0KPiAr CQlyZWdtYXBfd3JpdGUocmVnbWFwLCBBVE1FTF9ITENEQ19ESVMsIEFUTUVMX1hMQ0RDX1NEKTsN Cj4gKwkJaWYgKCFyZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocmVnbWFwLCBBVE1FTF9ITENEQ19T Uiwgc3RhdHVzLA0KPiArCQkJCQkgICAgICBzdGF0dXMgJiBBVE1FTF9YTENEQ19TRCwgMTAsDQo+ ICsJCQkJCSAgICAgIDApKQ0KPiArCQkJY3B1X3JlbGF4KCk7DQo+ICsJfQ0KPiArDQo+ICAgCXJl Z21hcF93cml0ZShyZWdtYXAsIEFUTUVMX0hMQ0RDX0RJUywgQVRNRUxfSExDRENfRElTUCk7DQo+ ICAgCXdoaWxlICghcmVnbWFwX3JlYWQocmVnbWFwLCBBVE1FTF9ITENEQ19TUiwgJnN0YXR1cykg JiYNCj4gICAJICAgICAgIChzdGF0dXMgJiBBVE1FTF9ITENEQ19ESVNQKSkNCj4gQEAgLTIzMSw2 ICsyNDUsMjAgQEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfY3J0Y19hdG9taWNfZW5hYmxlKHN0 cnVjdCBkcm1fY3J0YyAqYywNCj4gICAJICAgICAgICEoc3RhdHVzICYgQVRNRUxfSExDRENfRElT UCkpDQo+ICAgCQljcHVfcmVsYXgoKTsNCj4gICANCj4gKwlpZiAoY3J0Yy0+ZGMtPmRlc2MtPmlz X3hsY2RjKSB7DQo+ICsJCXJlZ21hcF93cml0ZShyZWdtYXAsIEFUTUVMX0hMQ0RDX0VOLCBBVE1F TF9YTENEQ19DTSk7DQo+ICsJCWlmICghcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHJlZ21hcCwg QVRNRUxfSExDRENfU1IsIHN0YXR1cywNCj4gKwkJCQkJICAgICAgc3RhdHVzICYgQVRNRUxfWExD RENfQ00sIDEwLA0KPiArCQkJCQkgICAgICAwKSkNCj4gKwkJCWNwdV9yZWxheCgpOw0KPiArDQo+ ICsJCXJlZ21hcF93cml0ZShyZWdtYXAsIEFUTUVMX0hMQ0RDX0VOLCBBVE1FTF9YTENEQ19TRCk7 DQo+ICsJCWlmICghcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHJlZ21hcCwgQVRNRUxfSExDRENf U1IsIHN0YXR1cywNCj4gKwkJCQkJICAgICAgIShzdGF0dXMgJiBBVE1FTF9YTENEQ19TRCksIDEw LA0KPiArCQkJCQkgICAgICAwKSkNCj4gKwkJCWNwdV9yZWxheCgpOw0KPiArCX0NCj4gKw0KPiAg IAlwbV9ydW50aW1lX3B1dF9zeW5jKGRldi0+ZGV2KTsNCj4gICANCj4gICB9DQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfcGxhbmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jDQo+IGluZGV4IGRh YTUwODUwNGY0Ny4uODFmMTAzYjFhNTFmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfcGxhbmUuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfcGxhbmUuYw0KPiBAQCAtMzMwLDExICszMzAsNTkgQEAg c3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcGxhbmVfc2V0dXBfc2NhbGVyKHN0cnVjdCBhdG1lbF9o bGNkY19wbGFuZSAqcGxhbmUsDQo+ICAgCQkJCQkJCQkgICAgIHlmYWN0b3IpKTsNCj4gICB9DQo+ ICAgDQo+ICtzdGF0aWMgdm9pZCBhdG1lbF94bGNkY19wbGFuZV9zZXR1cF9zY2FsZXIoc3RydWN0 IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gKwkJCQkJICAgc3RydWN0IGF0bWVsX2hsY2Rj X3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwljb25zdCBzdHJ1Y3QgYXRtZWxfaGxjZGNf bGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5lLT5sYXllci5kZXNjOw0KPiArCXUzMiB4ZmFjdG9yLCB5 ZmFjdG9yOw0KPiArDQo+ICsJaWYgKCFkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZykNCj4gKwkJ cmV0dXJuOw0KPiArDQo+ICsJaWYgKHN0YXRlLT5jcnRjX3cgPT0gc3RhdGUtPnNyY193ICYmIHN0 YXRlLT5jcnRjX2ggPT0gc3RhdGUtPnNyY19oKSB7DQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dy aXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCQkgICAgZGVzYy0+bGF5b3V0LnNjYWxlcl9j b25maWcsIDApOw0KPiArCQlyZXR1cm47DQo+ICsJfQ0KPiArDQo+ICsJLyogeGZhY3RvciA9IHJv dW5kWygyXjIwICogWE1FTVNJWkUpL1hTSVpFKV0gKi8NCj4gKwl4ZmFjdG9yID0gKDEwNDg1NzYg KiBzdGF0ZS0+c3JjX3cpIC8gc3RhdGUtPmNydGNfdzsNCg0KVXNlIHRoZSBsZWZ0IHNoaWZ0IG9w ZXJhdG9yIHRvIHJlcHJlc2VudCAyXjIwLiBUaGUgY29tbWVudCBzYXlzIHdlIG5lZWQgDQp0byBy b3VuZCBvZmYgdGhlIHJlc3VsdCBvZiB0aGlzIG1hdGggb3BlcmF0aW9uIGJ1dCB0aGUgYWN0dWFs IGNvZGUgDQpkb2Vzbid0IGltcGxlbWVudCB0aGlzLkxvb2sgZm9yIGtlcm5lbCBtYWNybydzIHRo YXQgZG9lcyB0aGlzLlNob3VsZG4ndCANCnRoZSB2YXJpYWJsZXMgeGZhY3RvciAmIHlmYWN0b3Ig YmVsb3cgYmUgZGVjbGFyZWQgYXMgdTY0ID8NCg0KPiArDQo+ICsJLyogeWZhY3RvciA9IHJvdW5k WygyXjIwICogWU1FTVNJWkUpL1lTSVpFKV0gKi8NCj4gKwl5ZmFjdG9yID0gKDEwNDg1NzYgKiBz dGF0ZS0+c3JjX2gpIC8gc3RhdGUtPmNydGNfaDsNCj4gKw0KPiArCWF0bWVsX2hsY2RjX2xheWVy X3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZywNCj4g KwkJCQkgICAgQVRNRUxfWExDRENfTEFZRVJfVlNDQUxFUl9MVU1BX0VOQUJMRSB8DQo+ICsJCQkJ ICAgIEFUTUVMX1hMQ0RDX0xBWUVSX1ZTQ0FMRVJfQ0hST01BX0VOQUJMRSB8DQo+ICsJCQkJICAg IEFUTUVMX1hMQ0RDX0xBWUVSX0hTQ0FMRVJfTFVNQV9FTkFCTEUgfA0KPiArCQkJCSAgICBBVE1F TF9YTENEQ19MQVlFUl9IU0NBTEVSX0NIUk9NQV9FTkFCTEUpOw0KPiArDQo+ICsJYXRtZWxfaGxj ZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29u ZmlnICsgMSwNCj4gKwkJCQkgICAgeWZhY3Rvcik7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMywNCj4g KwkJCQkgICAgeGZhY3Rvcik7DQo+ICsNCj4gKwkvKiBBcyBwZXIgWUNiQ3Igd2luZG93IHJlc2Ft cGxpbmcgY29uZmlndXJhdGlvbiAqLw0KPiArCWlmIChzdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5m b3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVVY0MjApIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfY2ZnKCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgMiwNCj4g KwkJCQkJICAgIHlmYWN0b3IgLyAyKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2Zn KCZwbGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJ ICAgIHhmYWN0b3IgLyAyKTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBBcyBwZXIgQVJHQiB3aW5k b3cgcmVzYW1wbGluZyBjb25maWd1cmF0aW9uICovDQo+ICsJCWF0bWVsX2hsY2RjX2xheWVyX3dy aXRlX2NmZygmcGxhbmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuc2NhbGVyX2NvbmZpZyArIDIsDQo+ ICsJCQkJCSAgICB5ZmFjdG9yKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZw bGFuZS0+bGF5ZXIsIGRlc2MtPmxheW91dC5zY2FsZXJfY29uZmlnICsgNCwNCj4gKwkJCQkJICAg IHhmYWN0b3IpOw0KPiArCX0NCj4gK30NCj4gKw0KPiAgIHN0YXRpYyB2b2lkDQo+ICAgYXRtZWxf aGxjZGNfcGxhbmVfdXBkYXRlX3Bvc19hbmRfc2l6ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUg KnBsYW5lLA0KPiAgIAkJCQkgICAgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0 YXRlKQ0KPiAgIHsNCj4gICAJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRl c2MgPSBwbGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNfZGMgKmRjID0g cGxhbmUtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gICANCj4gICAJaWYgKGRlc2MtPmxheW91 dC5zaXplKQ0KPiAgIAkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIs IGRlc2MtPmxheW91dC5zaXplLA0KPiBAQCAtMzUyLDcgKzQwMCwxMCBAQCBhdG1lbF9obGNkY19w bGFuZV91cGRhdGVfcG9zX2FuZF9zaXplKHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUs DQo+ICAgCQkJCQlBVE1FTF9ITENEQ19MQVlFUl9QT1Moc3RhdGUtPmNydGNfeCwNCj4gICAJCQkJ CQkJICAgICAgc3RhdGUtPmNydGNfeSkpOw0KPiAgIA0KPiAtCWF0bWVsX2hsY2RjX3BsYW5lX3Nl dHVwX3NjYWxlcihwbGFuZSwgc3RhdGUpOw0KPiArCWlmIChkYy0+ZGVzYy0+aXNfeGxjZGMpDQo+ ICsJCWF0bWVsX3hsY2RjX3BsYW5lX3NldHVwX3NjYWxlcihwbGFuZSwgc3RhdGUpOw0KPiArCWVs c2UNCj4gKwkJYXRtZWxfaGxjZGNfcGxhbmVfc2V0dXBfc2NhbGVyKHBsYW5lLCBzdGF0ZSk7DQo+ ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkDQo+IEBAIC0zOTMsNiArNDQ0LDQwIEBAIGF0bWVs X2hsY2RjX3BsYW5lX3VwZGF0ZV9nZW5lcmFsX3NldHRpbmdzKHN0cnVjdCBhdG1lbF9obGNkY19w bGFuZSAqcGxhbmUsDQo+ICAgCQkJCSAgICBjZmcpOw0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyB2 b2lkDQo+ICthdG1lbF94bGNkY19wbGFuZV91cGRhdGVfZ2VuZXJhbF9zZXR0aW5ncyhzdHJ1Y3Qg YXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiArCQkJCQkgIHN0cnVjdCBhdG1lbF9obGNkY19w bGFuZV9zdGF0ZSAqc3RhdGUpDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IGNmZzsNCj4gKwljb25z dCBzdHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYyA9IHBsYW5lLT5sYXllci5kZXNj Ow0KPiArCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZvcm1hdCA9IHN0YXRlLT5iYXNl LmZiLT5mb3JtYXQ7DQo+ICsNCj4gKwlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5l LT5sYXllciwgQVRNRUxfWExDRENfTEFZRVJfRE1BX0NGRywNCj4gKwkJCQkgICAgQVRNRUxfSExD RENfTEFZRVJfRE1BX0JMRU5fSU5DUjE2IHwgc3RhdGUtPmFoYl9pZCk7DQo+ICsNCj4gKwljZmcg PSBBVE1FTF9YTENEQ19MQVlFUl9ETUEgfCBBVE1FTF9YTENEQ19MQVlFUl9SRVA7DQo+ICsNCj4g KwlpZiAocGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7DQo+ICsJ CS8qDQo+ICsJCSAqIEFscGhhIEJsZW5kaW5nIGJpdHMgc3BlY2lmaWMgdG8gU0FNOVg3IFNvQw0K PiArCQkgKi8NCj4gKwkJY2ZnIHw9IEFUTUVMX1hMQ0RDX0xBWUVSX1NGQUNUQ19BMF9NVUxUX0FT IHwNCj4gKwkJICAgICAgIEFUTUVMX1hMQ0RDX0xBWUVSX1NGQUNUQV9PTkUgfA0KPiArCQkgICAg ICAgQVRNRUxfWExDRENfTEFZRVJfREZBQ1RDX01fQTBfTVVMVF9BUyB8DQo+ICsJCSAgICAgICBB VE1FTF9YTENEQ19MQVlFUl9ERkFDVEFfT05FOw0KPiArCQlpZiAoZm9ybWF0LT5oYXNfYWxwaGEp DQo+ICsJCQljZmcgfD0gQVRNRUxfWExDRENfTEFZRVJfQTAoMHhmZik7DQo+ICsJCWVsc2UNCj4g KwkJCWNmZyB8PSBBVE1FTF9YTENEQ19MQVlFUl9BMChzdGF0ZS0+YmFzZS5hbHBoYSk7DQo+ICsJ fQ0KPiArDQo+ICsJaWYgKHN0YXRlLT5kaXNjX2ggJiYgc3RhdGUtPmRpc2NfdykNCj4gKwkJY2Zn IHw9IEFUTUVMX1hMQ0RDX0xBWUVSX0RJU0NFTjsNCj4gKw0KPiArCWF0bWVsX2hsY2RjX2xheWVy X3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLCBkZXNjLT5sYXlvdXQuZ2VuZXJhbF9jb25maWcsDQo+ ICsJCQkJICAgIGNmZyk7DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgdm9pZCBhdG1lbF9obGNkY19w bGFuZV91cGRhdGVfZm9ybWF0KHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUsDQo+ICAg CQkJCQlzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRlKQ0KPiAgIHsNCj4gQEAg LTQzNywzNiArNTIyLDU1IEBAIHN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX3VwZGF0ZV9j bHV0KHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUsDQo+ICAgCX0NCj4gICB9DQo+ICAg DQo+ICtzdGF0aWMgdm9pZCB1cGRhdGVfaGxjZGNfYnVmZmVycyhzdHJ1Y3QgYXRtZWxfaGxjZGNf cGxhbmUgKnBsYW5lLA0KPiArCQkJCSBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0 YXRlLCB1MzIgc3IsIGludCBpKQ0KPiArew0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3Jl ZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9QTEFORV9IRUFE KGkpLA0KPiArCQkJCSAgICBzdGF0ZS0+ZHNjcnNbaV0tPnNlbGYpOw0KPiArDQo+ICsJaWYgKCEo c3IgJiBBVE1FTF9ITENEQ19MQVlFUl9FTikpIHsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9QTEFO RV9BRERSKGkpLA0KPiArCQkJCQkgICAgc3RhdGUtPmRzY3JzW2ldLT5hZGRyKTsNCj4gKwkJYXRt ZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJCSAgICBBVE1F TF9ITENEQ19MQVlFUl9QTEFORV9DVFJMKGkpLA0KPiArCQkJCQkgICAgc3RhdGUtPmRzY3JzW2ld LT5jdHJsKTsNCj4gKwkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIs DQo+ICsJCQkJCSAgICBBVE1FTF9ITENEQ19MQVlFUl9QTEFORV9ORVhUKGkpLA0KPiArCQkJCQkg ICAgc3RhdGUtPmRzY3JzW2ldLT5zZWxmKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIHVwZGF0ZV94bGNkY19idWZmZXJzKHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUs DQo+ICsJCQkJIHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZV9zdGF0ZSAqc3RhdGUsIGludCBpKQ0K PiArew0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLA0KPiAr CQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9QTEFORV9BRERSKGkpLA0KPiArCQkJCSAgICBzdGF0 ZS0+ZHNjcnNbaV0tPmFkZHIpOw0KPiArfQ0KPiArDQo+ICAgc3RhdGljIHZvaWQgYXRtZWxfaGxj ZGNfcGxhbmVfdXBkYXRlX2J1ZmZlcnMoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwN Cj4gLQkJCQkJc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4gKwkJCQkJ ICAgICBzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUgKnN0YXRlKQ0KPiAgIHsNCj4gICAJ Y29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRlc2MgPSBwbGFuZS0+bGF5ZXIu ZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNfZGMgKmRjID0gcGxhbmUtPmJhc2UuZGV2LT5k ZXZfcHJpdmF0ZTsNCj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFz ZS5mYjsNCj4gICAJdTMyIHNyOw0KPiAgIAlpbnQgaTsNCj4gICANCj4gLQlzciA9IGF0bWVsX2hs Y2RjX2xheWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIU1Ip Ow0KPiArCWlmICghZGMtPmRlc2MtPmlzX3hsY2RjKQ0KPiArCQlzciA9IGF0bWVsX2hsY2RjX2xh eWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIU1IpOw0KPiAg IA0KPiAgIAlmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5wbGFuZXM7IGkrKykgew0KPiAgIAkJc3Ry dWN0IGRybV9nZW1fZG1hX29iamVjdCAqZ2VtID0gZHJtX2ZiX2RtYV9nZXRfZ2VtX29iaihmYiwg aSk7DQo+ICAgDQo+ICAgCQlzdGF0ZS0+ZHNjcnNbaV0tPmFkZHIgPSBnZW0tPmRtYV9hZGRyICsg c3RhdGUtPm9mZnNldHNbaV07DQo+ICAgDQo+IC0JCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX3Jl ZygmcGxhbmUtPmxheWVyLA0KPiAtCQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJfUExBTkVfSEVB RChpKSwNCj4gLQkJCQkJICAgIHN0YXRlLT5kc2Nyc1tpXS0+c2VsZik7DQo+IC0NCj4gLQkJaWYg KCEoc3IgJiBBVE1FTF9ITENEQ19MQVlFUl9FTikpIHsNCj4gLQkJCWF0bWVsX2hsY2RjX2xheWVy X3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLA0KPiAtCQkJCQlBVE1FTF9ITENEQ19MQVlFUl9QTEFO RV9BRERSKGkpLA0KPiAtCQkJCQlzdGF0ZS0+ZHNjcnNbaV0tPmFkZHIpOw0KPiAtCQkJYXRtZWxf aGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCUFUTUVMX0hMQ0RD X0xBWUVSX1BMQU5FX0NUUkwoaSksDQo+IC0JCQkJCXN0YXRlLT5kc2Nyc1tpXS0+Y3RybCk7DQo+ IC0JCQlhdG1lbF9obGNkY19sYXllcl93cml0ZV9yZWcoJnBsYW5lLT5sYXllciwNCj4gLQkJCQkJ QVRNRUxfSExDRENfTEFZRVJfUExBTkVfTkVYVChpKSwNCj4gLQkJCQkJc3RhdGUtPmRzY3JzW2ld LT5zZWxmKTsNCj4gLQkJfQ0KPiArCQlpZiAoZGMtPmRlc2MtPmlzX3hsY2RjKQ0KPiArCQkJdXBk YXRlX3hsY2RjX2J1ZmZlcnMocGxhbmUsIHN0YXRlLCBpKTsNCj4gKwkJZWxzZQ0KPiArCQkJdXBk YXRlX2hsY2RjX2J1ZmZlcnMocGxhbmUsIHN0YXRlLCBzciwgaSk7DQo+ICAgDQo+ICAgCQlpZiAo ZGVzYy0+bGF5b3V0LnhzdHJpZGVbaV0pDQo+ICAgCQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVf Y2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IEBAIC03MTIsMTEgKzgxNiw4IEBAIHN0YXRpYyBpbnQgYXRt ZWxfaGxjZGNfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnAsDQo+ICAgCXJl dHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0 b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnAsDQo+IC0JCQkJCSAgICAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiArc3RhdGljIHZvaWQgaGxjZGNfYXRvbWljX2Rpc2Fi bGUoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSkNCj4gICB7DQo+IC0Jc3RydWN0IGF0 bWVsX2hsY2RjX3BsYW5lICpwbGFuZSA9IGRybV9wbGFuZV90b19hdG1lbF9obGNkY19wbGFuZShw KTsNCj4gLQ0KPiAgIAkvKiBEaXNhYmxlIGludGVycnVwdHMgKi8NCj4gICAJYXRtZWxfaGxjZGNf bGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0lEUiwNCj4g ICAJCQkJICAgIDB4ZmZmZmZmZmYpOw0KPiBAQCAtNzMxLDYgKzgzMiw3MiBAQCBzdGF0aWMgdm9p ZCBhdG1lbF9obGNkY19wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0K PiAgIAlhdG1lbF9obGNkY19sYXllcl9yZWFkX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENE Q19MQVlFUl9JU1IpOw0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyB2b2lkIHhsY2RjX2F0b21pY19k aXNhYmxlKHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICt7DQo+ICsJLyogRGlz YWJsZSBpbnRlcnJ1cHRzICovDQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFu ZS0+bGF5ZXIsIEFUTUVMX1hMQ0RDX0xBWUVSX0lEUiwNCj4gKwkJCQkgICAgMHhmZmZmZmZmZik7 DQo+ICsNCj4gKwkvKiBEaXNhYmxlIHRoZSBsYXllciAqLw0KPiArCWF0bWVsX2hsY2RjX2xheWVy X3dyaXRlX3JlZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCSAgICBBVE1FTF9YTENEQ19MQVlFUl9F TlIsIDApOw0KPiArDQo+ICsJLyogQ2xlYXIgYWxsIHBlbmRpbmcgaW50ZXJydXB0cyAqLw0KPiAr CWF0bWVsX2hsY2RjX2xheWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hMQ0RDX0xB WUVSX0lTUik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2F0 b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnAsDQo+ICsJCQkJCSAgICAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBhdG1lbF9obGNkY19wbGFu ZSAqcGxhbmUgPSBkcm1fcGxhbmVfdG9fYXRtZWxfaGxjZGNfcGxhbmUocCk7DQo+ICsJc3RydWN0 IGF0bWVsX2hsY2RjX2RjICpkYyA9IHBsYW5lLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQo+ICsN Cj4gKwlpZiAoZGMtPmRlc2MtPmlzX3hsY2RjKQ0KPiArCQl4bGNkY19hdG9taWNfZGlzYWJsZShw bGFuZSk7DQo+ICsJZWxzZQ0KPiArCQlobGNkY19hdG9taWNfZGlzYWJsZShwbGFuZSk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGhsY2RjX2F0b21pY191cGRhdGUoc3RydWN0IGF0bWVsX2hs Y2RjX3BsYW5lICpwbGFuZSkNCj4gK3sNCj4gKwl1MzIgc3I7DQo+ICsNCj4gKwkvKiBFbmFibGUg dGhlIG92ZXJydW4gaW50ZXJydXB0cy4gKi8NCj4gKwlhdG1lbF9obGNkY19sYXllcl93cml0ZV9y ZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfSExDRENfTEFZRVJfSUVSLA0KPiArCQkJCSAgICBBVE1F TF9ITENEQ19MQVlFUl9PVlJfSVJRKDApIHwNCj4gKwkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJf T1ZSX0lSUSgxKSB8DQo+ICsJCQkJICAgIEFUTUVMX0hMQ0RDX0xBWUVSX09WUl9JUlEoMikpOw0K PiArDQo+ICsJLyogQXBwbHkgdGhlIG5ldyBjb25maWcgYXQgdGhlIG5leHQgU09GIGV2ZW50LiAq Lw0KPiArCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRN RUxfSExDRENfTEFZRVJfQ0hTUik7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZw bGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIRVIsDQo+ICsJCQkJICAgIEFUTUVMX0hM Q0RDX0xBWUVSX1VQREFURSB8DQo+ICsJCQkJICAgIChzciAmIEFUTUVMX0hMQ0RDX0xBWUVSX0VO ID8NCj4gKwkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJfQTJRIDogQVRNRUxfSExDRENfTEFZRVJf RU4pKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgeGxjZGNfYXRvbWljX3VwZGF0ZShzdHJ1 Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiArCQkJCXN0cnVjdCBhdG1lbF9obGNkY19k YyAqZGMpDQo+ICt7DQo+ICsJLyogRW5hYmxlIHRoZSBvdmVycnVuIGludGVycnVwdHMuICovDQo+ ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX1hMQ0RD X0xBWUVSX0lFUiwNCj4gKwkJCQkgICAgQVRNRUxfWExDRENfTEFZRVJfT1ZSX0lSUSgwKSB8DQo+ ICsJCQkJICAgIEFUTUVMX1hMQ0RDX0xBWUVSX09WUl9JUlEoMSkgfA0KPiArCQkJCSAgICBBVE1F TF9YTENEQ19MQVlFUl9PVlJfSVJRKDIpKTsNCj4gKw0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dy aXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9YTENEQ19MQVlFUl9FTlIsDQo+ICsJCQkJICAg IEFUTUVMX1hMQ0RDX0xBWUVSX0VOKTsNCj4gKw0KPiArCS8qDQo+ICsJICogVXBkYXRpbmcgWExD RENfeHh4Q0ZHeCwgWExDRENfeHh4RkJBIGFuZCBYTENEQ194eHhFTiwNCj4gKwkgKiAod2hlcmUg eHh4IGluZGljYXRlcyBlYWNoIGxheWVyKSByZXF1aXJlcyB3cml0aW5nIG9uZSB0byB0aGUNCj4g KwkgKiBVcGRhdGUgQXR0cmlidXRlIGZpZWxkIGZvciBlYWNoIGxheWVyIGluIExDRENfQVRUUkUg cmVnaXN0ZXIgZm9yIFNBTTlYNy4NCj4gKwkgKi8NCj4gKwlyZWdtYXBfd3JpdGUoZGMtPmhsY2Rj LT5yZWdtYXAsIEFUTUVMX1hMQ0RDX0FUVFJFLCBBVE1FTF9YTENEQ19CQVNFX1VQREFURSB8DQo+ ICsJCSAgICAgQVRNRUxfWExDRENfT1ZSMV9VUERBVEUgfCBBVE1FTF9YTENEQ19PVlIzX1VQREFU RSB8DQo+ICsJCSAgICAgQVRNRUxfWExDRENfSEVPX1VQREFURSk7DQo+ICt9DQo+ICsNCj4gICBz dGF0aWMgdm9pZCBhdG1lbF9obGNkY19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxh bmUgKnAsDQo+ICAgCQkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAg IHsNCj4gQEAgLTczOSw3ICs5MDYsNyBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNkY19wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnAsDQo+ICAgCXN0cnVjdCBhdG1lbF9obGNk Y19wbGFuZSAqcGxhbmUgPSBkcm1fcGxhbmVfdG9fYXRtZWxfaGxjZGNfcGxhbmUocCk7DQo+ICAg CXN0cnVjdCBhdG1lbF9obGNkY19wbGFuZV9zdGF0ZSAqaHN0YXRlID0NCj4gICAJCQlkcm1fcGxh bmVfc3RhdGVfdG9fYXRtZWxfaGxjZGNfcGxhbmVfc3RhdGUobmV3X3MpOw0KPiAtCXUzMiBzcjsN Cj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNfZGMgKmRjID0gcC0+ZGV2LT5kZXZfcHJpdmF0ZTsNCj4g ICANCj4gICAJaWYgKCFuZXdfcy0+Y3J0YyB8fCAhbmV3X3MtPmZiKQ0KPiAgIAkJcmV0dXJuOw0K PiBAQCAtNzUwLDI5ICs5MTcsNzMgQEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcGxhbmVfYXRv bWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwLA0KPiAgIAl9DQo+ICAgDQo+ICAgCWF0bWVs X2hsY2RjX3BsYW5lX3VwZGF0ZV9wb3NfYW5kX3NpemUocGxhbmUsIGhzdGF0ZSk7DQo+IC0JYXRt ZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2dlbmVyYWxfc2V0dGluZ3MocGxhbmUsIGhzdGF0ZSk7DQo+ ICsJaWYgKGRjLT5kZXNjLT5pc194bGNkYykNCj4gKwkJYXRtZWxfeGxjZGNfcGxhbmVfdXBkYXRl X2dlbmVyYWxfc2V0dGluZ3MocGxhbmUsIGhzdGF0ZSk7DQo+ICsJZWxzZQ0KPiArCQlhdG1lbF9o bGNkY19wbGFuZV91cGRhdGVfZ2VuZXJhbF9zZXR0aW5ncyhwbGFuZSwgaHN0YXRlKTsNCj4gICAJ YXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2Zvcm1hdChwbGFuZSwgaHN0YXRlKTsNCj4gICAJYXRt ZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2NsdXQocGxhbmUsIGhzdGF0ZSk7DQo+ICAgCWF0bWVsX2hs Y2RjX3BsYW5lX3VwZGF0ZV9idWZmZXJzKHBsYW5lLCBoc3RhdGUpOw0KPiAgIAlhdG1lbF9obGNk Y19wbGFuZV91cGRhdGVfZGlzY19hcmVhKHBsYW5lLCBoc3RhdGUpOw0KPiAgIA0KPiAtCS8qIEVu YWJsZSB0aGUgb3ZlcnJ1biBpbnRlcnJ1cHRzLiAqLw0KPiAtCWF0bWVsX2hsY2RjX2xheWVyX3dy aXRlX3JlZygmcGxhbmUtPmxheWVyLCBBVE1FTF9ITENEQ19MQVlFUl9JRVIsDQo+IC0JCQkJICAg IEFUTUVMX0hMQ0RDX0xBWUVSX09WUl9JUlEoMCkgfA0KPiAtCQkJCSAgICBBVE1FTF9ITENEQ19M QVlFUl9PVlJfSVJRKDEpIHwNCj4gLQkJCQkgICAgQVRNRUxfSExDRENfTEFZRVJfT1ZSX0lSUSgy KSk7DQo+ICsJaWYgKGRjLT5kZXNjLT5pc194bGNkYykNCj4gKwkJeGxjZGNfYXRvbWljX3VwZGF0 ZShwbGFuZSwgZGMpOw0KPiArCWVsc2UNCj4gKwkJaGxjZGNfYXRvbWljX3VwZGF0ZShwbGFuZSk7 DQo+ICt9DQo+ICAgDQo+IC0JLyogQXBwbHkgdGhlIG5ldyBjb25maWcgYXQgdGhlIG5leHQgU09G IGV2ZW50LiAqLw0KPiAtCXNyID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5s YXllciwgQVRNRUxfSExDRENfTEFZRVJfQ0hTUik7DQo+IC0JYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0NIRVIsDQo+IC0JCQlBVE1F TF9ITENEQ19MQVlFUl9VUERBVEUgfA0KPiAtCQkJKHNyICYgQVRNRUxfSExDRENfTEFZRVJfRU4g Pw0KPiAtCQkJIEFUTUVMX0hMQ0RDX0xBWUVSX0EyUSA6IEFUTUVMX0hMQ0RDX0xBWUVSX0VOKSk7 DQo+ICtzdGF0aWMgdm9pZCBobGNkY19jc2NfaW5pdChzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUg KnBsYW5lLA0KPiArCQkJICAgY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRl c2MpDQo+ICt7DQo+ICsJLyoNCj4gKwkgKiBUT0RPOiBkZWNsYXJlIGEgInl1di10by1yZ2ItY29u di1mYWN0b3JzIiBwcm9wZXJ0eSB0byBsZXQNCj4gKwkgKiB1c2Vyc3BhY2UgbW9kaWZ5IHRoZXNl IGZhY3RvcnMgKHVzaW5nIGEgQkxPQiBwcm9wZXJ0eSA/KS4NCj4gKwkgKi8NCj4gKwlhdG1lbF9o bGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkgICAgZGVzYy0+bGF5 b3V0LmNzYywNCj4gKwkJCQkgICAgMHg0YzkwMDA5MSk7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJf d3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJICAgIGRlc2MtPmxheW91dC5jc2MgKyAx LA0KPiArCQkJCSAgICAweDdhNWY1MDkwKTsNCj4gKwlhdG1lbF9obGNkY19sYXllcl93cml0ZV9j ZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkgICAgZGVzYy0+bGF5b3V0LmNzYyArIDIsDQo+ICsJ CQkJICAgIDB4NDAwNDA4OTApOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB4bGNkY19jc2Nf aW5pdChzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiArCQkJICAgY29uc3Qgc3Ry dWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRlc2MpDQo+ICt7DQo+ICsJLyoNCj4gKwkgKiB5 dXYtdG8tcmdiLWNvbnYtZmFjdG9ycyBhcmUgbm93IGRlZmluZWQgZnJvbSBMQ0RDX0hFT0NGRzE2 IHRvDQo+ICsJICogTENEQ19IRU9DRkcyMSByZWdpc3RlcnMgaW4gU0FNOVg3Lg0KPiArCSAqLw0K PiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCSAg ICBkZXNjLT5sYXlvdXQuY3NjLA0KPiArCQkJCSAgICAweDAwMDAwNDg4KTsNCj4gKwlhdG1lbF9o bGNkY19sYXllcl93cml0ZV9jZmcoJnBsYW5lLT5sYXllciwNCj4gKwkJCQkgICAgZGVzYy0+bGF5 b3V0LmNzYyArIDEsDQo+ICsJCQkJICAgIDB4MDAwMDA2NDgpOw0KPiArCWF0bWVsX2hsY2RjX2xh eWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiArCQkJCSAgICBkZXNjLT5sYXlvdXQuY3Nj ICsgMiwNCj4gKwkJCQkgICAgMHgxRUEwMDQ4MCk7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3Jp dGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+ICsJCQkJICAgIGRlc2MtPmxheW91dC5jc2MgKyAzLA0K PiArCQkJCSAgICAweDAwMDAxRDI4KTsNCj4gKwlhdG1lbF9obGNkY19sYXllcl93cml0ZV9jZmco JnBsYW5lLT5sYXllciwNCj4gKwkJCQkgICAgZGVzYy0+bGF5b3V0LmNzYyArIDQsDQo+ICsJCQkJ ICAgIDB4MDgxMDA0ODApOw0KPiArCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUt PmxheWVyLA0KPiArCQkJCSAgICBkZXNjLT5sYXlvdXQuY3NjICsgNSwNCj4gKwkJCQkgICAgMHgw MDAwMDAwMCk7DQo+ICsJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIs DQo+ICsJCQkJICAgIGRlc2MtPmxheW91dC5jc2MgKyA2LA0KPiArCQkJCSAgICAweDAwMDAwMDA3 KTsNCj4gICB9DQo+ICAgDQoNCkJvdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBjYW4gYmUgbWFkZSBt b3JlIHJlYWRhYmxlL2Vhc2llciB0byBtYWludGFpbiBieSANCmhhdmluZyB0aGUgY29uZmlncyBp biBhbiBhcnJheSBhbmQganVzdCBsb29wIHRocm91Z2ggdGhlbS4NCg0KPiAgIHN0YXRpYyBpbnQg YXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhdG1lbF9obGNkY19wbGFu ZSAqcGxhbmUpDQo+ICAgew0KPiAgIAljb25zdCBzdHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVz YyAqZGVzYyA9IHBsYW5lLT5sYXllci5kZXNjOw0KPiArCXN0cnVjdCBhdG1lbF9obGNkY19kYyAq ZGMgPSBwbGFuZS0+YmFzZS5kZXYtPmRldl9wcml2YXRlOw0KPiAgIA0KPiAgIAlpZiAoZGVzYy0+ dHlwZSA9PSBBVE1FTF9ITENEQ19PVkVSTEFZX0xBWUVSIHx8DQo+ICAgCSAgICBkZXNjLT50eXBl ID09IEFUTUVMX0hMQ0RDX0NVUlNPUl9MQVlFUikgew0KPiBAQCAtNzk2LDMxICsxMDA3LDE5IEBA IHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcGxhbmVfaW5pdF9wcm9wZXJ0aWVzKHN0cnVjdCBhdG1l bF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICAgCQkJcmV0dXJuIHJldDsNCj4gICAJfQ0KPiAgIA0K PiAtCWlmIChkZXNjLT5sYXlvdXQuY3NjKSB7DQo+IC0JCS8qDQo+IC0JCSAqIFRPRE86IGRlY2Fy ZSBhICJ5dXYtdG8tcmdiLWNvbnYtZmFjdG9ycyIgcHJvcGVydHkgdG8gbGV0DQo+IC0JCSAqIHVz ZXJzcGFjZSBtb2RpZnkgdGhlc2UgZmFjdG9ycyAodXNpbmcgYSBCTE9CIHByb3BlcnR5ID8pLg0K PiAtCQkgKi8NCj4gLQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIs DQo+IC0JCQkJCSAgICBkZXNjLT5sYXlvdXQuY3NjLA0KPiAtCQkJCQkgICAgMHg0YzkwMDA5MSk7 DQo+IC0JCWF0bWVsX2hsY2RjX2xheWVyX3dyaXRlX2NmZygmcGxhbmUtPmxheWVyLA0KPiAtCQkJ CQkgICAgZGVzYy0+bGF5b3V0LmNzYyArIDEsDQo+IC0JCQkJCSAgICAweDdhNWY1MDkwKTsNCj4g LQkJYXRtZWxfaGxjZGNfbGF5ZXJfd3JpdGVfY2ZnKCZwbGFuZS0+bGF5ZXIsDQo+IC0JCQkJCSAg ICBkZXNjLT5sYXlvdXQuY3NjICsgMiwNCj4gLQkJCQkJICAgIDB4NDAwNDA4OTApOw0KPiAtCX0N Cg0KU2FtZSBhcyBhYm92ZS4NCg0KPiArCWlmIChkYy0+ZGVzYy0+aXNfeGxjZGMgJiYgZGVzYy0+ bGF5b3V0LmNzYykNCj4gKwkJeGxjZGNfY3NjX2luaXQocGxhbmUsIGRlc2MpOw0KPiArCWVsc2UN Cj4gKwkJaWYgKGRlc2MtPmxheW91dC5jc2MpDQo+ICsJCQlobGNkY19jc2NfaW5pdChwbGFuZSwg ZGVzYyk7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXZvaWQgYXRtZWxf aGxjZGNfcGxhbmVfaXJxKHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUpDQo+ICt2b2lk IGhsY2RjX2lycV9kYmcoc3RydWN0IGF0bWVsX2hsY2RjX3BsYW5lICpwbGFuZSwNCj4gKwkJICAg Y29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRlc2MpDQo+ICAgew0KPiAtCWNv bnN0IHN0cnVjdCBhdG1lbF9obGNkY19sYXllcl9kZXNjICpkZXNjID0gcGxhbmUtPmxheWVyLmRl c2M7DQo+IC0JdTMyIGlzcjsNCj4gLQ0KPiAtCWlzciA9IGF0bWVsX2hsY2RjX2xheWVyX3JlYWRf cmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xBWUVSX0lTUik7DQo+ICsJdTMyIGlzciA9 IGF0bWVsX2hsY2RjX2xheWVyX3JlYWRfcmVnKCZwbGFuZS0+bGF5ZXIsIEFUTUVMX0hMQ0RDX0xB WUVSX0lTUik7DQo+ICAgDQo+ICAgCS8qDQo+ICAgCSAqIFRoZXJlJ3Mgbm90IG11Y2ggd2UgY2Fu IGRvIGluIGNhc2Ugb2Ygb3ZlcnJ1biBleGNlcHQgaW5mb3JtaW5nDQo+IEBAIC04MzQsNiArMTAz MywzNCBAQCB2b2lkIGF0bWVsX2hsY2RjX3BsYW5lX2lycShzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxh bmUgKnBsYW5lKQ0KPiAgIAkJCWRlc2MtPm5hbWUpOw0KPiAgIH0NCj4gICANCj4gK3ZvaWQgeGxj ZGNfaXJxX2RiZyhzdHJ1Y3QgYXRtZWxfaGxjZGNfcGxhbmUgKnBsYW5lLA0KPiArCQkgICBjb25z dCBzdHJ1Y3QgYXRtZWxfaGxjZGNfbGF5ZXJfZGVzYyAqZGVzYykNCj4gK3sNCj4gKwl1MzIgaXNy ID0gYXRtZWxfaGxjZGNfbGF5ZXJfcmVhZF9yZWcoJnBsYW5lLT5sYXllciwgQVRNRUxfWExDRENf TEFZRVJfSVNSKTsNCj4gKw0KPiArCS8qDQo+ICsJICogVGhlcmUncyBub3QgbXVjaCB3ZSBjYW4g ZG8gaW4gY2FzZSBvZiBvdmVycnVuIGV4Y2VwdCBpbmZvcm1pbmcNCj4gKwkgKiB0aGUgdXNlci4g SG93ZXZlciwgd2UgYXJlIGluIGludGVycnVwdCBjb250ZXh0IGhlcmUsIGhlbmNlIHRoZQ0KPiAr CSAqIHVzZSBvZiBkZXZfZGJnKCkuDQo+ICsJICovDQo+ICsJaWYgKGlzciAmDQo+ICsJICAgIChB VE1FTF9YTENEQ19MQVlFUl9PVlJfSVJRKDApIHwgQVRNRUxfWExDRENfTEFZRVJfT1ZSX0lSUSgx KSB8DQo+ICsJICAgICBBVE1FTF9YTENEQ19MQVlFUl9PVlJfSVJRKDIpKSkNCj4gKwkJZGV2X2Ri ZyhwbGFuZS0+YmFzZS5kZXYtPmRldiwgIm92ZXJydW4gb24gcGxhbmUgJXNcbiIsDQo+ICsJCQlk ZXNjLT5uYW1lKTsNCg0KdXNlIHByX3dhcm4oKSBpbnN0ZWFkLg0KDQo+ICt9DQo+ICsNCj4gK3Zv aWQgYXRtZWxfaGxjZGNfcGxhbmVfaXJxKHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUp DQo+ICt7DQo+ICsJY29uc3Qgc3RydWN0IGF0bWVsX2hsY2RjX2xheWVyX2Rlc2MgKmRlc2MgPSBw bGFuZS0+bGF5ZXIuZGVzYzsNCj4gKwlzdHJ1Y3QgYXRtZWxfaGxjZGNfZGMgKmRjID0gcGxhbmUt PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCj4gKw0KPiArCWlmIChkYy0+ZGVzYy0+aXNfeGxjZGMp DQo+ICsJCXhsY2RjX2lycV9kYmcocGxhbmUsIGRlc2MpOw0KPiArCWVsc2UNCj4gKwkJaGxjZGNf aXJxX2RiZyhwbGFuZSwgZGVzYyk7DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgYXRtZWxfaGxjZGNfbGF5ZXJfcGxhbmVfaGVscGVyX2Z1 bmNzID0gew0KPiAgIAkuYXRvbWljX2NoZWNrID0gYXRtZWxfaGxjZGNfcGxhbmVfYXRvbWljX2No ZWNrLA0KPiAgIAkuYXRvbWljX3VwZGF0ZSA9IGF0bWVsX2hsY2RjX3BsYW5lX2F0b21pY191cGRh dGUsDQo=