Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2086651pxa; Sun, 16 Aug 2020 23:31:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwC6ModTV/cwIt5+fvmORwWTGzivYG5lf8f8SpgTyClqaqC/mTUpHZQ3ATHX+oUQSseVumH X-Received: by 2002:a17:907:20db:: with SMTP id qq27mr14166777ejb.550.1597645888576; Sun, 16 Aug 2020 23:31:28 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1597645888; cv=pass; d=google.com; s=arc-20160816; b=TPfrlZWyjcPXmRnllduktB/AFGByUJR/sEcNkvQjR6kAE6HhEWJX6DmSMEVNDe2l0J /KlE/QdPY1lThi6CD9jPvJ41BtVa1joQPelEUmthUMLoR881kE6u1VyEQx+D929mnI/S rlH7DzXtelggj/jzhwC1765lWk/Eg1FBk+U8NCRGkQMca5e7sOd5HpW9tUOUJvaFIQr1 Gj4GjhM2c23gEVgUHTIoAYwiv8Py0j++KBj6AVb0IQm7KYgsltoDG4/nrL0z5Mdz8kic 5dy7yE4oBMhkMOzszaE+nOW6ooMHGTH8uZ7FbCRaSgMxUCbrXZS4KjzVOlLuJRoTTwIt iVZg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-product:dlp-version:dlp-reaction:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature:ironport-sdr :ironport-sdr; bh=CuDeQ4AREPbmYvKEI5icP+TuatF5iuJ9geKCUbttbrk=; b=EwQvOu4v0X6frBn+jq9NBQuYUwHp7AjZkkPf6ku+EdtIxSKXphU8rvbsaQwRQfwqtC nc7h3HR6KVbAAYdX/rz14p+kIFb2Ce3pMZ3+ZyY0SnHSUoj+y9vQoLgsyJfm5nGiq1xO O04YrS4HRD/ivXZYz6QxZ1MiOOl7o8jNCMNzzHP4G8tgx7cQGXL8bLwwygFCntj+sG+8 31zHcA5iN4sqntnHtKGk1rIOJWr316BjXZi5zxoAZ4sa6ynsdikM9GJlCWuw19YYgptY fqRmhAx8D4tN5PiFqnsHsOvnIEOAr/fFtYzCiyaJJ1qR8e10/i0hiWtN0gStLxgQ2B85 sRdg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=D4YxXBNj; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a22si9769223ejj.163.2020.08.16.23.31.05; Sun, 16 Aug 2020 23:31:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=D4YxXBNj; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726703AbgHQGa0 (ORCPT + 99 others); Mon, 17 Aug 2020 02:30:26 -0400 Received: from mga05.intel.com ([192.55.52.43]:59871 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726308AbgHQGaZ (ORCPT ); Mon, 17 Aug 2020 02:30:25 -0400 IronPort-SDR: SI4tfm4ytWLKTb/is8+E+gwK8mEAsac0i3xfcrr9PH+t0xn+oVHoCGgV4Q7HLTpCIsasOwrvzk 8IlDyEMa7l8w== X-IronPort-AV: E=McAfee;i="6000,8403,9715"; a="239465343" X-IronPort-AV: E=Sophos;i="5.76,322,1592895600"; d="scan'208";a="239465343" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Aug 2020 23:30:22 -0700 IronPort-SDR: CB3JJBB4eB78X0RhFDKtTjKtvEjrdVenCuPk1zyd8ATIHmqDyO/Jn6O44rAuD0fc4NNd1yxORs W8yqreBjNMmQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,322,1592895600"; d="scan'208";a="336188063" Received: from fmsmsx601-2.cps.intel.com (HELO fmsmsx601.amr.corp.intel.com) ([10.18.84.211]) by orsmga007.jf.intel.com with ESMTP; 16 Aug 2020 23:30:22 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sun, 16 Aug 2020 23:30:22 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 16 Aug 2020 23:30:22 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Sun, 16 Aug 2020 23:30:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DXexKWYDI45emDOAaW+D8GglXnV/pfC1Lydnag3O2ztgW4KbTKfUpMfz+oKZqf5RAAZAYjcNNzSAQIgHcGeLOfuvFoeHdBYJt8UlENqGYVkaiNiv5uk1VsjwJLpCPrCAb1KfpPIgLm0ybrULTsyJpg6BEhlcQNYC3sH4pKw2BvQXy+N9QM3Fqks/hn/HUCtTqU9it0TRy+oL6W0bkaG8SiBdpbAgVgZe4oE+FAj+Ha6tDzAV9IE43pTS7SIAXyh+VStmUEallbXzrEJMcgUeJHys1fb+xcMUvoEbyb7Z4sBrOezzY9anjeSeF6V6yHyGhcUvKGD6m4ORJBwbL6mj5g== 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-SenderADCheck; bh=CuDeQ4AREPbmYvKEI5icP+TuatF5iuJ9geKCUbttbrk=; b=f4ZkJBZKEJFxZXwxTjlA0JwGwNJ6927jRwb/G+1jadUl10QVbLKNqkxkocHenoZAA25ThrWacTgfB5SrEcqjQ5lBbGpSVM1QCMdChRcBFU918YEtuTNM4X9tas8OS/LDa5iXNl9iVySN7Y61fnb4vU+rp6zQkQsvVGN6VhleX2I1MB5tAYQsmII7ZqDIMLqaG8FcGz7SqdeDKkAKG9BQac3ejy4enyWWyTryzrW5GKZSaGYTdBX+h3RJZqDnbuLDma4arb1AVP7Rt7GHuda0YuvUVVVFnWAUeyXBW561Tzx+u/ul68tn64YW+6HSPYKCcTYgf8PshKgn7WDdJhjDCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CuDeQ4AREPbmYvKEI5icP+TuatF5iuJ9geKCUbttbrk=; b=D4YxXBNjhh6Nbuw9exV+MDIYhc/Ul/tHmKxoiiS7WsIaqkENo0RvAfl1pZzpjhScb8Y0tdltDTEMe+LgzMzqg7zy5bsUWi6vFcj0mmbpqqNiTEtx2XfaqGSew/F3Mjct2cPobTYQnAe+oeibT7k+L1M2+IUZJeVdhkmxak9j8m8= Received: from DM5PR11MB1435.namprd11.prod.outlook.com (2603:10b6:4:7::18) by DM6PR11MB4441.namprd11.prod.outlook.com (2603:10b6:5:200::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3283.15; Mon, 17 Aug 2020 06:30:20 +0000 Received: from DM5PR11MB1435.namprd11.prod.outlook.com ([fe80::9002:97a2:d8c0:8364]) by DM5PR11MB1435.namprd11.prod.outlook.com ([fe80::9002:97a2:d8c0:8364%10]) with mapi id 15.20.3283.027; Mon, 17 Aug 2020 06:30:20 +0000 From: "Liu, Yi L" To: Auger Eric , "alex.williamson@redhat.com" , "baolu.lu@linux.intel.com" , "joro@8bytes.org" , "jacob.jun.pan@linux.intel.com" CC: "Tian, Kevin" , "Raj, Ashok" , "Tian, Jun J" , "Sun, Yi Y" , "jean-philippe@linaro.org" , "peterx@redhat.com" , "Wu, Hao" , "stefanha@gmail.com" , "iommu@lists.linux-foundation.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v6 10/15] vfio/type1: Support binding guest page tables to PASID Thread-Topic: [PATCH v6 10/15] vfio/type1: Support binding guest page tables to PASID Thread-Index: AQHWZKdLPXEeLFoo+Emu87CHPiN7Kqk6t6eAgAE39SA= Date: Mon, 17 Aug 2020 06:30:20 +0000 Message-ID: References: <1595917664-33276-1-git-send-email-yi.l.liu@intel.com> <1595917664-33276-11-git-send-email-yi.l.liu@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [117.169.230.130] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1ab25b7d-ead0-4c55-693f-08d8427703c3 x-ms-traffictypediagnostic: DM6PR11MB4441: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:446; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: htf9gvlzc07LkoZSgpzyv3NEswoJlyyh3W+20PiHvMEJCu//L5GcgfHJxoTYhbsgBmh9ogXuhC9anC4YmQj5kRFqs6RuUMCoGtlTFIoIMs8/Bt8424aXycL9yG5G35kXRu/eBA1ZIlzoqNdLcIUWf4xGP3ni1tBP+yi72YGytbXta6j1hQWI8UcDWMBRs6L+B4ovlR1Qsd0oW1tpzbrP4jTTJp+p2IrhOGewPZa/zKPEyfGJN7tDNtir6GYBqaEAbcrgkWEhQYo2Ys1YniYRNpHhUj8LNJuV7yPeaKYxkKBAStuVf05/oMG8lF8fOdFzKy6BeOjhnszadOrwrz+pPolfaj5tx9QbmWD6xROCmQmV2LLn9s5LsB+xKSuU8lESXVFwqgHBehn/L7dDpUlPoQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR11MB1435.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(346002)(136003)(376002)(396003)(39860400002)(30864003)(4326008)(2906002)(33656002)(83380400001)(66946007)(66446008)(8676002)(64756008)(66556008)(66476007)(76116006)(86362001)(8936002)(110136005)(478600001)(54906003)(5660300002)(7416002)(71200400001)(53546011)(55016002)(7696005)(966005)(6506007)(26005)(52536014)(9686003)(186003)(316002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 0lDAVmvCTiCh88PkYfkLk9Lr0h5PVVcUdjsfHJeHMCYubMH9LFjcX49kmp9o6OWM/F8Oz64KtghPcembS/54pqLHpDWxS6gvHp2THFJ1WUC8XAFg+d184lfhnNYU0Mp1rMjUBgDJAtoAqoYi6GkZ+fI3XzSsOZd7qJJUkIKOyoWGr9OInUI5TXVMUuXaT8b7O668/dfuehqVC0HDAx7plqBR7uJQ4UltdPuqMh+S4Lmf2gO7OvNKNoFgoV+2QLkT/RQasthqc4IEIt8fvtd/9CItlmXRiwVOM/+83n2N3UEnI3Mo4V2REqTN6pKkDEd5khAaLKRgds08NpW70/eSYcpYPNSPlezJHaSo1Q4Qyqo24wBgXUTZ/RiHy7tpECQOGCnILQLBywN2OODO6THmG0hEB9vYzSw65MC8oXJQ38EbVj+5PvENpHnkiBqRiGb6QGhCcT2GACHUNW6h8CmTimlIwOTSWawKjzWbPayT1+3TwSS5egEXpIWo+EOqY0mqFf5KTRy+BhF655pw8Bli7pKZHFMpc5bARt7Cs05Hui845oT7ENIABQYOn/kQdGx0OyzewQVbFZ0U0Wl759GNMicDbg6anEqwhun2I0rphqEPuGoioeu1IXhdxnSFW9ws9KnjBSqeXJfsl7z3DTrwOg== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR11MB1435.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ab25b7d-ead0-4c55-693f-08d8427703c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Aug 2020 06:30:20.2785 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: T82598TymB/CpInYRJHeFlWZJOb9uMK1ct9MOpiQ+Q3H9+nwaWBN+AKU8uwzD6Ggz/1XbV5Nlp15huxk/x9HkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4441 X-OriginatorOrg: intel.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRXJpYywNCg0KPiBGcm9tOiBBdWdlciBFcmljIDxlcmljLmF1Z2VyQHJlZGhhdC5jb20+DQo+ IFNlbnQ6IFN1bmRheSwgQXVndXN0IDE2LCAyMDIwIDc6MjkgUE0NCj4gDQo+IEhpIFlpLA0KPiAN Cj4gT24gNy8yOC8yMCA4OjI3IEFNLCBMaXUgWWkgTCB3cm90ZToNCj4gPiBOZXN0aW5nIHRyYW5z bGF0aW9uIGFsbG93cyB0d28tbGV2ZWxzL3N0YWdlcyBwYWdlIHRhYmxlcywgd2l0aCAxc3QgbGV2 ZWwNCj4gPiBmb3IgZ3Vlc3QgdHJhbnNsYXRpb25zIChlLmcuIEdWQS0+R1BBKSwgMm5kIGxldmVs IGZvciBob3N0IHRyYW5zbGF0aW9ucw0KPiA+IChlLmcuIEdQQS0+SFBBKS4gVGhpcyBwYXRjaCBh ZGRzIGludGVyZmFjZSBmb3IgYmluZGluZyBndWVzdCBwYWdlIHRhYmxlcw0KPiA+IHRvIGEgUEFT SUQuIFRoaXMgUEFTSUQgbXVzdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGJ5IHRoZSB1c2Vyc3BhY2Ug YmVmb3JlDQo+ID4gdGhlIGJpbmRpbmcgcmVxdWVzdC4NCj4gPg0KPiA+IENjOiBLZXZpbiBUaWFu IDxrZXZpbi50aWFuQGludGVsLmNvbT4NCj4gPiBDQzogSmFjb2IgUGFuIDxqYWNvYi5qdW4ucGFu QGxpbnV4LmludGVsLmNvbT4NCj4gPiBDYzogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1z b25AcmVkaGF0LmNvbT4NCj4gPiBDYzogRXJpYyBBdWdlciA8ZXJpYy5hdWdlckByZWRoYXQuY29t Pg0KPiA+IENjOiBKZWFuLVBoaWxpcHBlIEJydWNrZXIgPGplYW4tcGhpbGlwcGVAbGluYXJvLm9y Zz4NCj4gPiBDYzogSm9lcmcgUm9lZGVsIDxqb3JvQDhieXRlcy5vcmc+DQo+ID4gQ2M6IEx1IEJh b2x1IDxiYW9sdS5sdUBsaW51eC5pbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmVhbi1Q aGlsaXBwZSBCcnVja2VyIDxqZWFuLXBoaWxpcHBlQGxpbmFyby5jb20+DQo+ID4gU2lnbmVkLW9m Zi1ieTogTGl1IFlpIEwgPHlpLmwubGl1QGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBK YWNvYiBQYW4gPGphY29iLmp1bi5wYW5AbGludXguaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+IHY1 IC0+IHY2Og0KPiA+ICopIGRyb3BwZWQgdmZpb19maW5kX25lc3RpbmdfZ3JvdXAoKSBhbmQgYWRk IHZmaW9fZ2V0X25lc3RpbmdfZG9tYWluX2NhcHN1bGUoKS4NCj4gPiAgICBwZXIgY29tbWVudCBm cm9tIEVyaWMuDQo+ID4gKikgdXNlIGlvbW11X3VhcGlfc3ZhX2JpbmQvdW5iaW5kX2dwYXNpZCgp IGFuZCBpb21tdV9zdmFfdW5iaW5kX2dwYXNpZCgpIGluDQo+ID4gICAgbGludXgvaW9tbXUuaCBm b3IgdXNlcnNwYWNlIG9wZXJhdGlvbiBhbmQgaW4ta2VybmVsIG9wZXJhdGlvbi4NCj4gPg0KPiA+ IHYzIC0+IHY0Og0KPiA+ICopIGFkZHJlc3MgY29tbWVudHMgZnJvbSBBbGV4IG9uIHYzDQo+ID4N Cj4gPiB2MiAtPiB2MzoNCj4gPiAqKSB1c2UgX19pb21tdV9zdmFfdW5iaW5kX2dwYXNpZCgpIGZv ciB1bmJpbmQgY2FsbCBpc3N1ZWQgYnkgVkZJTw0KPiA+ICAgIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xpbnV4LWlvbW11LzE1OTI5MzE4MzctNTgyMjMtNi1naXQtc2VuZC1lbWFpbC0NCj4gamFj b2IuanVuLnBhbkBsaW51eC5pbnRlbC5jb20vDQo+ID4NCj4gPiB2MSAtPiB2MjoNCj4gPiAqKSBy ZW5hbWUgc3ViamVjdCBmcm9tICJ2ZmlvL3R5cGUxOiBCaW5kIGd1ZXN0IHBhZ2UgdGFibGVzIHRv IGhvc3QiDQo+ID4gKikgcmVtb3ZlIFZGSU9fSU9NTVVfQklORCwgaW50cm9kdWNlIFZGSU9fSU9N TVVfTkVTVElOR19PUCB0byBzdXBwb3J0DQo+IGJpbmQvDQo+ID4gICAgdW5iaW5kIGd1ZXQgcGFn ZSB0YWJsZQ0KPiA+ICopIHJlcGxhY2VkIHZmaW9faW9tbXVfZm9yX2VhY2hfZGV2KCkgd2l0aCBh IGdyb3VwIGxldmVsIGxvb3Agc2luY2UgdGhpcw0KPiA+ICAgIHNlcmllcyBlbmZvcmNlcyBvbmUg Z3JvdXAgcGVyIGNvbnRhaW5lciB3LyBuZXN0aW5nIHR5cGUgYXMgc3RhcnQuDQo+ID4gKikgcmVu YW1lIHZmaW9fYmluZC91bmJpbmRfZ3Bhc2lkX2ZuKCkgdG8gdmZpb19kZXZfYmluZC91bmJpbmRf Z3Bhc2lkX2ZuKCkNCj4gPiAqKSB2ZmlvX2Rldl91bmJpbmRfZ3Bhc2lkKCkgYWx3YXlzIHN1Y2Nl c3NmdWwNCj4gPiAqKSB1c2UgdmZpb19tbS0+cGFzaWRfbG9jayB0byBhdm9pZCByYWNlIGJldHdl ZW4gUEFTSUQgZnJlZSBhbmQgcGFnZSB0YWJsZQ0KPiA+ICAgIGJpbmQvdW5iaW5kDQo+ID4gLS0t DQo+ID4gIGRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMgfCAxNjENCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL3ZmaW8vdmZpb19w YXNpZC5jICAgICAgIHwgIDI2ICsrKysrKysNCj4gPiAgaW5jbHVkZS9saW51eC92ZmlvLmggICAg ICAgICAgICB8ICAyMCArKysrKw0KPiA+ICBpbmNsdWRlL3VhcGkvbGludXgvdmZpby5oICAgICAg IHwgIDMxICsrKysrKysrDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjM4IGluc2VydGlvbnMoKykN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV90eXBlMS5jIGIv ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYw0KPiA+IGluZGV4IGVhODljN2MuLjI0NTQz NmUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfdHlwZTEuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3R5cGUxLmMNCj4gPiBAQCAtMTQ5LDYgKzE0 OSwzNiBAQCBzdHJ1Y3QgdmZpb19yZWdpb25zIHsNCj4gPiAgI2RlZmluZSBESVJUWV9CSVRNQVBf UEFHRVNfTUFYCSAoKHU2NClJTlRfTUFYKQ0KPiA+ICAjZGVmaW5lIERJUlRZX0JJVE1BUF9TSVpF X01BWA0KPiBESVJUWV9CSVRNQVBfQllURVMoRElSVFlfQklUTUFQX1BBR0VTX01BWCkNCj4gPg0K PiA+ICtzdHJ1Y3QgZG9tYWluX2NhcHN1bGUgew0KPiA+ICsJc3RydWN0IHZmaW9fZ3JvdXAgKmdy b3VwOw0KPiA+ICsJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOw0KPiA+ICsJdm9pZCAqZGF0 YTsNCj4gWW91IG1heSBhZGQgYSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgZGF0YSBpcyBh IHVzZXIgcG9pbnRlciBvciB0aGUNCj4gZGlyZWN0IElPTU1VIFVBUEkgc3RydWN0Lg0KDQp5ZXMs IGl0IGlzIGhlbHBmdWwuDQoNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIGlvbW11LT5sb2NrIG11 c3QgYmUgaGVsZCAqLw0KPiA+ICtzdGF0aWMgaW50IHZmaW9fZ2V0X25lc3RpbmdfZG9tYWluX2Nh cHN1bGUoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LA0KPiA+ICsJCQkJCSAgIHN0cnVjdCBkb21h aW5fY2Fwc3VsZSAqZGMpDQo+IEkgd291bGQgcmVuYW1lIHRoZSBmdW5jdGlvbiBpbnRvIHZmaW9f cHJlcGFyZV9uZXN0aW5nX2RvbWFpbl9jYXBzdWxlDQoNCmdvdCBpdC4gOi0pDQoNCj4gPiArew0K PiA+ICsJc3RydWN0IHZmaW9fZG9tYWluICpkb21haW4gPSBOVUxMOw0KPiA+ICsJc3RydWN0IHZm aW9fZ3JvdXAgKmdyb3VwID0gTlVMTDsNCj4gPiArDQo+ID4gKwlpZiAoIWlvbW11LT5uZXN0aW5n X2luZm8pDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAq IE9ubHkgc3VwcG9ydCBzaW5nbGV0b24gY29udGFpbmVyIHdpdGggbmVzdGluZyB0eXBlLg0KPiA+ ICsJICogSWYgbmVzdGluZ19pbmZvIGlzIG5vbi1OVUxMLCB0aGUgY29uYXRpbmVyIHNob3VsZA0K PiBzL3Nob3VsZC9pcyBoZXJlIGFuZCBiZWxvdw0KPiBzL2NvbmF0aW5lci9jb250YWluZXINCg0K Z290IGl0LiB0aGFua3MuDQoNCj4gPiArCSAqIGJlIG5vbi1lbXB0eS4gQWxzbyBkb21haW4gc2hv dWxkIGJlIG5vbi1lbXB0eS4NCj4gPiArCSAqLw0KPiA+ICsJZG9tYWluID0gbGlzdF9maXJzdF9l bnRyeSgmaW9tbXUtPmRvbWFpbl9saXN0LA0KPiA+ICsJCQkJICBzdHJ1Y3QgdmZpb19kb21haW4s IG5leHQpOw0KPiA+ICsJZ3JvdXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkb21haW4tPmdyb3VwX2xp c3QsDQo+ID4gKwkJCQkgc3RydWN0IHZmaW9fZ3JvdXAsIG5leHQpOw0KPiA+ICsJZGMtPmdyb3Vw ID0gZ3JvdXA7DQo+ID4gKwlkYy0+ZG9tYWluID0gZG9tYWluLT5kb21haW47DQo+IGRjLT51c2Vy ID0gdHJ1ZTs/DQoNCnllcC4NCg0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g IHN0YXRpYyBpbnQgcHV0X3Bmbih1bnNpZ25lZCBsb25nIHBmbiwgaW50IHByb3QpOw0KPiA+DQo+ ID4gIHN0YXRpYyBzdHJ1Y3QgdmZpb19ncm91cCAqdmZpb19pb21tdV9maW5kX2lvbW11X2dyb3Vw KHN0cnVjdCB2ZmlvX2lvbW11DQo+ICppb21tdSwNCj4gPiBAQCAtMjM0OSw2ICsyMzc5LDQ4IEBA IHN0YXRpYyBpbnQgdmZpb19pb21tdV9yZXN2X3JlZnJlc2goc3RydWN0IHZmaW9faW9tbXUNCj4g KmlvbW11LA0KPiA+ICAJcmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQg dmZpb19kZXZfYmluZF9ncGFzaWRfZm4oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQ0K PiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZG9tYWluX2NhcHN1bGUgKmRjID0gKHN0cnVjdCBkb21haW5f Y2Fwc3VsZSAqKWRhdGE7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGFyZyA9ICoodW5zaWduZWQgbG9u ZyAqKWRjLT5kYXRhOw0KPiA+ICsNCj4gPiArCXJldHVybiBpb21tdV91YXBpX3N2YV9iaW5kX2dw YXNpZChkYy0+ZG9tYWluLCBkZXYsICh2b2lkIF9fdXNlciAqKWFyZyk7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgdmZpb19kZXZfdW5iaW5kX2dwYXNpZF9mbihzdHJ1Y3QgZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkb21haW5fY2Fwc3VsZSAq ZGMgPSAoc3RydWN0IGRvbWFpbl9jYXBzdWxlICopZGF0YTsNCj4gPiArCXVuc2lnbmVkIGxvbmcg YXJnID0gKih1bnNpZ25lZCBsb25nICopZGMtPmRhdGE7DQo+ID4gKw0KPiA+ICsJaW9tbXVfdWFw aV9zdmFfdW5iaW5kX2dwYXNpZChkYy0+ZG9tYWluLCBkZXYsICh2b2lkIF9fdXNlciAqKWFyZyk7 DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBfX3ZmaW9f ZGV2X3VuYmluZF9ncGFzaWRfZm4oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQ0KPiBj YW4gYmUgcmVtb3ZlZCBpZiBkYy0+dXNlciBmbGFnIGdldHMgYWRkZWQNCg0KeWVzLg0KDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBkb21haW5fY2Fwc3VsZSAqZGMgPSAoc3RydWN0IGRvbWFpbl9jYXBz dWxlICopZGF0YTsNCj4gPiArCXN0cnVjdCBpb21tdV9ncGFzaWRfYmluZF9kYXRhICp1bmJpbmRf ZGF0YSA9DQo+ID4gKwkJCQkoc3RydWN0IGlvbW11X2dwYXNpZF9iaW5kX2RhdGEgKilkYy0+ZGF0 YTsNCj4gPiArDQo+ID4gKwlpb21tdV9zdmFfdW5iaW5kX2dwYXNpZChkYy0+ZG9tYWluLCBkZXYs IHVuYmluZF9kYXRhKTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdm9pZCB2ZmlvX2dyb3VwX3VuYmluZF9ncGFzaWRfZm4oaW9hc2lkX3QgcGFzaWQsIHZvaWQg KmRhdGEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkb21haW5fY2Fwc3VsZSAqZGMgPSAoc3RydWN0 IGRvbWFpbl9jYXBzdWxlICopZGF0YTsNCj4gPiArCXN0cnVjdCBpb21tdV9ncGFzaWRfYmluZF9k YXRhIHVuYmluZF9kYXRhOw0KPiA+ICsNCj4gPiArCXVuYmluZF9kYXRhLmFyZ3N6ID0gb2Zmc2V0 b2Yoc3RydWN0IGlvbW11X2dwYXNpZF9iaW5kX2RhdGEsIHZlbmRvcik7DQo+IEkgZG8gbm90IHJl bWVtYmVyIHRvIGhhdmUgc2VlbiB0aGlzIGRvY3VtZW50ZWQgYW55d2hlcmUsIGllLiBvbiB1bmJp bmQsDQo+IHRoZSB2ZW5kb3IgZGF0YSBhcmUgbm90IHVzZWQuDQoNCnJpZ2h0LiBwZXJoYXBzIG5l ZWRzIHRvIGRvYyBpdCBpbiBKYWNvYidzIHBhdGNoLiBAUGFuLCBKYWNvYiBqdW4NCg0KPiA+ICsJ dW5iaW5kX2RhdGEuZmxhZ3MgPSAwOw0KPiA+ICsJdW5iaW5kX2RhdGEuaHBhc2lkID0gcGFzaWQ7 DQo+ID4gKw0KPiA+ICsJZGMtPmRhdGEgPSAmdW5iaW5kX2RhdGE7DQo+ID4gKw0KPiA+ICsJaW9t bXVfZ3JvdXBfZm9yX2VhY2hfZGV2KGRjLT5ncm91cC0+aW9tbXVfZ3JvdXAsDQo+ID4gKwkJCQkg ZGMsIF9fdmZpb19kZXZfdW5iaW5kX2dwYXNpZF9mbik7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0 YXRpYyB2b2lkIHZmaW9faW9tbXVfdHlwZTFfZGV0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEs DQo+ID4gIAkJCQkJICBzdHJ1Y3QgaW9tbXVfZ3JvdXAgKmlvbW11X2dyb3VwKQ0KPiA+ICB7DQo+ ID4gQEAgLTIzOTIsNiArMjQ2NCwyMSBAQCBzdGF0aWMgdm9pZCB2ZmlvX2lvbW11X3R5cGUxX2Rl dGFjaF9ncm91cCh2b2lkDQo+ICppb21tdV9kYXRhLA0KPiA+ICAJCWlmICghZ3JvdXApDQo+ID4g IAkJCWNvbnRpbnVlOw0KPiA+DQo+ID4gKwkJaWYgKGlvbW11LT5uZXN0aW5nX2luZm8gJiYgaW9t bXUtPnZtbSAmJg0KPiBpZiB2bW0gaXMgc2V0LCBkb2Vzbid0IGl0IG1lYW4gbmVzdGluZ19pbmZv IGlzIHNldD8NCg0KeWVzLCB3aWxsIHJlbW92ZSB0aGUgY2hlY2sgYWdhaW5zdCBpb21tdS0+bmVz dGluZ19pbmZvLg0KDQo+ID4gKwkJICAgIChpb21tdS0+bmVzdGluZ19pbmZvLT5mZWF0dXJlcyAm DQo+ID4gKwkJCQkJSU9NTVVfTkVTVElOR19GRUFUX0JJTkRfUEdUQkwpKSB7DQo+ID4gKwkJCXN0 cnVjdCBkb21haW5fY2Fwc3VsZSBkYyA9IHsgLmdyb3VwID0gZ3JvdXAsDQo+ID4gKwkJCQkJCSAg ICAgLmRvbWFpbiA9IGRvbWFpbi0+ZG9tYWluLA0KPiA+ICsJCQkJCQkgICAgIC5kYXRhID0gTlVM TCB9Ow0KPiA+ICsNCj4gPiArCQkJLyoNCj4gPiArCQkJICogVW5iaW5kIHBhZ2UgdGFibGVzIGJv dW5kIHdpdGggc3lzdGVtIHdpZGUgUEFTSURzDQo+ID4gKwkJCSAqIHdoaWNoIGFyZSBhbGxvY2F0 ZWQgdG8gdXNlcnNwYWNlLg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJdmZpb19tbV9mb3JfZWFjaF9w YXNpZChpb21tdS0+dm1tLCAmZGMsDQo+ID4gKwkJCQkJICAgICAgIHZmaW9fZ3JvdXBfdW5iaW5k X2dwYXNpZF9mbik7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiAgCQl2ZmlvX2lvbW11X2RldGFjaF9n cm91cChkb21haW4sIGdyb3VwKTsNCj4gPiAgCQl1cGRhdGVfZGlydHlfc2NvcGUgPSAhZ3JvdXAt PnBpbm5lZF9wYWdlX2RpcnR5X3Njb3BlOw0KPiA+ICAJCWxpc3RfZGVsKCZncm91cC0+bmV4dCk7 DQo+ID4gQEAgLTI5MjYsNiArMzAxMyw3OCBAQCBzdGF0aWMgaW50IHZmaW9faW9tbXVfdHlwZTFf cGFzaWRfcmVxdWVzdChzdHJ1Y3QNCj4gdmZpb19pb21tdSAqaW9tbXUsDQo+ID4gIAlyZXR1cm4g cmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGxvbmcgdmZpb19pb21tdV9oYW5kbGVfcGd0 Ymxfb3Aoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LA0KPiA+ICsJCQkJICAgICAgIGJvb2wgaXNf YmluZCwgdW5zaWduZWQgbG9uZyBhcmcpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkb21haW5fY2Fw c3VsZSBkYyA9IHsgLmRhdGEgPSAmYXJnIH07DQo+ID4gKwlzdHJ1Y3QgaW9tbXVfbmVzdGluZ19p bmZvICppbmZvOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwltdXRleF9sb2NrKCZpb21t dS0+bG9jayk7DQo+ID4gKw0KPiA+ICsJaW5mbyA9IGlvbW11LT5uZXN0aW5nX2luZm87DQo+ID4g KwlpZiAoIWluZm8gfHwgIShpbmZvLT5mZWF0dXJlcyAmIElPTU1VX05FU1RJTkdfRkVBVF9CSU5E X1BHVEJMKSkgew0KPiA+ICsJCXJldCA9IC1FT1BOT1RTVVBQOw0KPiA+ICsJCWdvdG8gb3V0X3Vu bG9jazsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoIWlvbW11LT52bW0pIHsNCj4gSXMgaXQg ZG9jdW1lbnRlZCBhbnl3aGVyZSwgYmVzaWRlcyBpbiB0aGlzIGNvbW1pdCBtZXNzYWdlIHRoYXQN Cj4gSU9NTVVfTkVTVElOR19GRUFUX0JJTkRfUEdUQkwgcmVxdWlyZXMNCj4gSU9NTVVfTkVTVElO R19GRUFUX1NZU1dJREVfUEFTSUQNCj4gKGluIHVhcGkgZG9jKT8NCg0KbmljZSBjYXRjaC4gaXQg aXMgbm90IGRvY3VtZW50ZWQgYW55d2hlcmUuIFZGSU9fSU9NTVVfTkVTVElOR19PUF9CSU5EX1BH VEJMDQpzaG91bGQgd29yayBmb3IgdGhlIGJpbmQgd2l0aCBwYXNpZCBvciB3aXRob3V0IHBhc2lk LiBwZXJoYXBzLCBJIGNhbiBhZGQgYQ0KZmxhZyBpbiB2ZmlvIHRvIGRpZmZlcmVudGlhdGUgdGhl IHR3byBiaW5kIGNhc2VzLiBpcyBpdCB3b3JrYWJsZSBwZXIgeW91cg0Kb3Bpbmlvbj8NCg0KPiA+ ICsJCXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJZ290byBvdXRfdW5sb2NrOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXJldCA9IHZmaW9fZ2V0X25lc3RpbmdfZG9tYWluX2NhcHN1bGUoaW9tbXUsICZk Yyk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCWdvdG8gb3V0X3VubG9jazsNCj4gPiArDQo+ID4g KwkvKiBBdm9pZCByYWNlIHdpdGggb3RoZXIgY29udGFpbmVycyB3aXRoaW4gdGhlIHNhbWUgcHJv Y2VzcyAqLw0KPiA+ICsJdmZpb19tbV9wYXNpZF9sb2NrKGlvbW11LT52bW0pOw0KPiA+ICsNCj4g PiArCXJldCA9IDA7DQo+IG5vbiBuZWVkZWQNCg0Kb2ggeWVzLg0KDQo+ID4gKwlpZiAoaXNfYmlu ZCkNCj4gPiArCQlyZXQgPSBpb21tdV9ncm91cF9mb3JfZWFjaF9kZXYoZGMuZ3JvdXAtPmlvbW11 X2dyb3VwLCAmZGMsDQo+ID4gKwkJCQkJICAgICAgIHZmaW9fZGV2X2JpbmRfZ3Bhc2lkX2ZuKTsN Cj4gPiArCWlmIChyZXQgfHwgIWlzX2JpbmQpIHsNCj4gPiArCQlpb21tdV9ncm91cF9mb3JfZWFj aF9kZXYoZGMuZ3JvdXAtPmlvbW11X2dyb3VwLA0KPiA+ICsJCQkJCSAmZGMsIHZmaW9fZGV2X3Vu YmluZF9ncGFzaWRfZm4pOw0KPiA+ICsJCXJldCA9IDA7DQo+IHJldCBpcyBub3QgY29ycmVjdCBp biBjYXNlIGJpbmQgcHJldmlvdXNseSBmYWlsZWQuIFlvdSBzaG91bGQgcmV0dXJuIHRoZQ0KPiBv cmlnaW5hbCByZXQgaW4gdGhhdCBjYXNlLg0KDQpyaWdodC4gd2lsbCByZW1vdmUgcmV0ID0gMC4N Cg0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXZmaW9fbW1fcGFzaWRfdW5sb2NrKGlvbW11LT52bW0p Ow0KPiA+ICtvdXRfdW5sb2NrOg0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZpb21tdS0+bG9jayk7DQo+ ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgbG9uZyB2ZmlvX2lv bW11X3R5cGUxX25lc3Rpbmdfb3Aoc3RydWN0IHZmaW9faW9tbXUgKmlvbW11LA0KPiA+ICsJCQkJ CXVuc2lnbmVkIGxvbmcgYXJnKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdmZpb19pb21tdV90eXBl MV9uZXN0aW5nX29wIGhkcjsNCj4gPiArCXVuc2lnbmVkIGludCBtaW5zejsNCj4gPiArCWludCBy ZXQ7DQo+ID4gKw0KPiA+ICsJbWluc3ogPSBvZmZzZXRvZmVuZChzdHJ1Y3QgdmZpb19pb21tdV90 eXBlMV9uZXN0aW5nX29wLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsJaWYgKGNvcHlfZnJvbV91c2Vy KCZoZHIsICh2b2lkIF9fdXNlciAqKWFyZywgbWluc3opKQ0KPiA+ICsJCXJldHVybiAtRUZBVUxU Ow0KPiA+ICsNCj4gPiArCWlmIChoZHIuYXJnc3ogPCBtaW5zeiB8fCBoZHIuZmxhZ3MgJiB+VkZJ T19ORVNUSU5HX09QX01BU0spDQo+IENoZWNraW5nIGFnYWluc3QgVkZJT19ORVNUSU5HX09QX01B U0sgaXMgbm90IGVub3VnaCBwcmVjaXNlIGVub3VnaCAoSQ0KPiBtZWFuIE9QX01BU0sgc2hvdWxk IG9ubHkgZW5jb21wYXNzZXMgdGhlIGFjdHVhbCBzdXBwb3J0ZWQgb3BzKS4gSWYgYSBhDQo+IHVz ZXJzcGFjZSB0cmllcyB0byB1c2UgYSBuZXcgT1AgaW4gdGhlIGZ1dHVyZSBhbmQgaWYgdGhpcyBy dW5zIG9uIHRoaXMNCj4ga2VybmVsIHZlcnNpb24sIHlvdSB3aWxsIGZhaXQgdG8gcmVjb2duaXpl IHRoZSBsYWNrIG9mIHN1cHBvcnQuDQoNCnllcywgdGhpcyBzaG91bGQgYmUgZml4ZWQuIHRoaXMg Y29kZSBvbmx5IGVuc3VyZXMgdGhlIGhpZ2ggMTYgYml0cyBhcmUNCnZhbGlkLCBidXQgZmFpbGVk IHRvIGNoZWNrIHRoZSBsb3dlciAxNiBiaXRzLiB0aGUgb3AgY291bnRzIGZyb20gMCB0bw0KMl4x Ni0xLiBzbyBJIG1heSBhZGQgYSBNQVhfT1AgbWFjcm8gdG8gc2VydmUgdGhlIHB1cnBvc2Ugb2Yg ZmFpbGluZw0KdW5zdXBwb3J0ZWQgb3AgdXNhZ2UuDQoNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArDQo+ID4gKwlzd2l0Y2ggKGhkci5mbGFncyAmIFZGSU9fTkVTVElOR19PUF9NQVNLKSB7 DQo+ID4gKwljYXNlIFZGSU9fSU9NTVVfTkVTVElOR19PUF9CSU5EX1BHVEJMOg0KPiA+ICsJCXJl dCA9IHZmaW9faW9tbXVfaGFuZGxlX3BndGJsX29wKGlvbW11LCB0cnVlLCBhcmcgKyBtaW5zeik7 DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIFZGSU9fSU9NTVVfTkVTVElOR19PUF9VTkJJTkRf UEdUQkw6DQo+ID4gKwkJcmV0ID0gdmZpb19pb21tdV9oYW5kbGVfcGd0Ymxfb3AoaW9tbXUsIGZh bHNlLCBhcmcgKyBtaW5zeik7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJ CXJldCA9IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiAgc3RhdGljIGxvbmcgdmZpb19pb21tdV90eXBlMV9pb2N0bCh2b2lkICpp b21tdV9kYXRhLA0KPiA+ICAJCQkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpDQo+ID4gIHsNCj4gPiBAQCAtMjk0NCw2ICszMTAzLDggQEAgc3RhdGljIGxvbmcgdmZpb19p b21tdV90eXBlMV9pb2N0bCh2b2lkICppb21tdV9kYXRhLA0KPiA+ICAJCXJldHVybiB2ZmlvX2lv bW11X3R5cGUxX2RpcnR5X3BhZ2VzKGlvbW11LCBhcmcpOw0KPiA+ICAJY2FzZSBWRklPX0lPTU1V X1BBU0lEX1JFUVVFU1Q6DQo+ID4gIAkJcmV0dXJuIHZmaW9faW9tbXVfdHlwZTFfcGFzaWRfcmVx dWVzdChpb21tdSwgYXJnKTsNCj4gPiArCWNhc2UgVkZJT19JT01NVV9ORVNUSU5HX09QOg0KPiA+ ICsJCXJldHVybiB2ZmlvX2lvbW11X3R5cGUxX25lc3Rpbmdfb3AoaW9tbXUsIGFyZyk7DQo+ID4g IAlkZWZhdWx0Og0KPiA+ICAJCXJldHVybiAtRU5PVFRZOw0KPiA+ICAJfQ0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19wYXNpZC5jIGIvZHJpdmVycy92ZmlvL3ZmaW9fcGFzaWQu Yw0KPiA+IGluZGV4IDhkMDMxN2YuLmU1MzFkNGEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy92 ZmlvL3ZmaW9fcGFzaWQuYw0KPiA+ICsrKyBiL2RyaXZlcnMvdmZpby92ZmlvX3Bhc2lkLmMNCj4g PiBAQCAtMjIxLDYgKzIyMSw4IEBAIHZvaWQgdmZpb19wYXNpZF9mcmVlX3JhbmdlKHN0cnVjdCB2 ZmlvX21tICp2bW0sDQo+ID4gIAkgKiBJT0FTSUQgY29yZSB3aWxsIG5vdGlmeSBQQVNJRCB1c2Vy cyAoZS5nLiBJT01NVSBkcml2ZXIpIHRvDQo+ID4gIAkgKiB0ZWFyZG93biBuZWNlc3Nhcnkgc3Ry dWN0dXJlcyBkZXBlbmRpbmcgb24gdGhlIHRvLWJlLWZyZWVkDQo+ID4gIAkgKiBQQVNJRC4NCj4g PiArCSAqIEhvbGQgcGFzaWRfbG9jayBhbHNvIGF2b2lkcyByYWNlIHdpdGggUEFTSUQgdXNhZ2Vz IGxpa2UgYmluZC8NCj4gPiArCSAqIHVuYmluZCBwYWdlIHRhYmxlcyB0byByZXF1ZXN0ZWQgUEFT SUQuDQo+ID4gIAkgKi8NCj4gPiAgCW11dGV4X2xvY2soJnZtbS0+cGFzaWRfbG9jayk7DQo+ID4g IAl3aGlsZSAoKHZpZCA9IHZmaW9fZmluZF9wYXNpZCh2bW0sIG1pbiwgbWF4KSkgIT0gTlVMTCkN Cj4gPiBAQCAtMjI5LDYgKzIzMSwzMCBAQCB2b2lkIHZmaW9fcGFzaWRfZnJlZV9yYW5nZShzdHJ1 Y3QgdmZpb19tbSAqdm1tLA0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGFz aWRfZnJlZV9yYW5nZSk7DQo+ID4NCj4gPiAraW50IHZmaW9fbW1fZm9yX2VhY2hfcGFzaWQoc3Ry dWN0IHZmaW9fbW0gKnZtbSwgdm9pZCAqZGF0YSwNCj4gPiArCQkJICAgdm9pZCAoKmZuKShpb2Fz aWRfdCBpZCwgdm9pZCAqZGF0YSkpDQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ ICsJbXV0ZXhfbG9jaygmdm1tLT5wYXNpZF9sb2NrKTsNCj4gPiArCXJldCA9IGlvYXNpZF9zZXRf Zm9yX2VhY2hfaW9hc2lkKHZtbS0+aW9hc2lkX3NpZCwgZm4sIGRhdGEpOw0KPiA+ICsJbXV0ZXhf dW5sb2NrKCZ2bW0tPnBhc2lkX2xvY2spOw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ ICtFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX21tX2Zvcl9lYWNoX3Bhc2lkKTsNCj4gPiArDQo+ID4g K3ZvaWQgdmZpb19tbV9wYXNpZF9sb2NrKHN0cnVjdCB2ZmlvX21tICp2bW0pDQo+ID4gK3sNCj4g PiArCW11dGV4X2xvY2soJnZtbS0+cGFzaWRfbG9jayk7DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZ TUJPTF9HUEwodmZpb19tbV9wYXNpZF9sb2NrKTsNCj4gPiArDQo+ID4gK3ZvaWQgdmZpb19tbV9w YXNpZF91bmxvY2soc3RydWN0IHZmaW9fbW0gKnZtbSkNCj4gPiArew0KPiA+ICsJbXV0ZXhfdW5s b2NrKCZ2bW0tPnBhc2lkX2xvY2spOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHZm aW9fbW1fcGFzaWRfdW5sb2NrKTsNCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgX19pbml0IHZmaW9f cGFzaWRfaW5pdCh2b2lkKQ0KPiA+ICB7DQo+ID4gIAltdXRleF9pbml0KCZ2ZmlvX21tX2xvY2sp Ow0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZmaW8uaCBiL2luY2x1ZGUvbGludXgv dmZpby5oDQo+ID4gaW5kZXggYTM1NWQwMS4uZTgzNWMyMyAxMDA2NDQNCj4gPiAtLS0gYS9pbmNs dWRlL2xpbnV4L3ZmaW8uaA0KPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvdmZpby5oDQo+ID4gQEAg LTEwNSw2ICsxMDUsMTEgQEAgZXh0ZXJuIGludCB2ZmlvX21tX2lvYXNpZF9zaWQoc3RydWN0IHZm aW9fbW0gKnZtbSk7DQo+ID4gIGV4dGVybiBpbnQgdmZpb19wYXNpZF9hbGxvYyhzdHJ1Y3QgdmZp b19tbSAqdm1tLCBpbnQgbWluLCBpbnQgbWF4KTsNCj4gPiAgZXh0ZXJuIHZvaWQgdmZpb19wYXNp ZF9mcmVlX3JhbmdlKHN0cnVjdCB2ZmlvX21tICp2bW0sDQo+ID4gIAkJCQkgIGlvYXNpZF90IG1p biwgaW9hc2lkX3QgbWF4KTsNCj4gPiArZXh0ZXJuIGludCB2ZmlvX21tX2Zvcl9lYWNoX3Bhc2lk KHN0cnVjdCB2ZmlvX21tICp2bW0sIHZvaWQgKmRhdGEsDQo+ID4gKwkJCQkgIHZvaWQgKCpmbiko aW9hc2lkX3QgaWQsIHZvaWQgKmRhdGEpKTsNCj4gPiArZXh0ZXJuIHZvaWQgdmZpb19tbV9wYXNp ZF9sb2NrKHN0cnVjdCB2ZmlvX21tICp2bW0pOw0KPiA+ICtleHRlcm4gdm9pZCB2ZmlvX21tX3Bh c2lkX3VubG9jayhzdHJ1Y3QgdmZpb19tbSAqdm1tKTsNCj4gPiArDQo+ID4gICNlbHNlDQo+ID4g IHN0YXRpYyBpbmxpbmUgc3RydWN0IHZmaW9fbW0gKnZmaW9fbW1fZ2V0X2Zyb21fdGFzayhzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQo+ID4gIHsNCj4gPiBAQCAtMTI5LDYgKzEzNCwyMSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgdmZpb19wYXNpZF9mcmVlX3JhbmdlKHN0cnVjdCB2ZmlvX21tDQo+ ICp2bW0sDQo+ID4gIAkJCQkJICBpb2FzaWRfdCBtaW4sIGlvYXNpZF90IG1heCkNCj4gPiAgew0K PiA+ICB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIGludCB2ZmlvX21tX2Zvcl9lYWNoX3Bh c2lkKHN0cnVjdCB2ZmlvX21tICp2bW0sIHZvaWQgKmRhdGEsDQo+ID4gKwkJCQkJIHZvaWQgKCpm bikoaW9hc2lkX3QgaWQsIHZvaWQgKmRhdGEpKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gLUVOT1RU WTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2b2lkIHZmaW9fbW1fcGFzaWRf bG9jayhzdHJ1Y3QgdmZpb19tbSAqdm1tKQ0KPiA+ICt7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbmxpbmUgdm9pZCB2ZmlvX21tX3Bhc2lkX3VubG9jayhzdHJ1Y3QgdmZpb19tbSAqdm1t KQ0KPiA+ICt7DQo+ID4gK30NCj4gPiArDQo+ID4gICNlbmRpZiAvKiBDT05GSUdfVkZJT19QQVNJ RCAqLw0KPiA+DQo+ID4gIC8qDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92 ZmlvLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oDQo+ID4gaW5kZXggNmQ3OTU1Ny4uOTUw MWNmYiAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdmZpby5oDQo+ID4gKysr IGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaA0KPiA+IEBAIC0xMjA5LDYgKzEyMDksMzcgQEAg c3RydWN0IHZmaW9faW9tbXVfdHlwZTFfcGFzaWRfcmVxdWVzdCB7DQo+ID4NCj4gPiAgI2RlZmlu ZSBWRklPX0lPTU1VX1BBU0lEX1JFUVVFU1QJX0lPKFZGSU9fVFlQRSwgVkZJT19CQVNFICsgMTgp DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAqIFZGSU9fSU9NTVVfTkVTVElOR19PUCAtIF9JT1coVkZJ T19UWVBFLCBWRklPX0JBU0UgKyAxOSwNCj4gPiArICoJCQkJc3RydWN0IHZmaW9faW9tbXVfdHlw ZTFfbmVzdGluZ19vcCkNCj4gPiArICoNCj4gPiArICogVGhpcyBpbnRlcmZhY2UgYWxsb3dzIHVz ZXJzcGFjZSB0byB1dGlsaXplIHRoZSBuZXN0aW5nIElPTU1VDQo+ID4gKyAqIGNhcGFiaWxpdGll cyBhcyByZXBvcnRlZCBpbiBWRklPX0lPTU1VX1RZUEUxX0lORk9fQ0FQX05FU1RJTkcNCj4gPiAr ICogY2FwIHRocm91Z2ggVkZJT19JT01NVV9HRVRfSU5GTy4NCj4gUEFTSUQgYWxsb2MvZnJlZSBh cmUgaGFuZGxlZCB0aHJvdWdoIGFub3RoZXIgSU9DVEwgc28geW91IHNob3VsZCBiZSBtb3JlDQo+ IHByZWNpc2UgSSB0aGluay4NCg0KeWVwLiB3aWxsIGFkZCBpdC4NCg0KUmVnYXJkcywNCllpIExp dQ0KDQo+ID4gKyAqDQo+ID4gKyAqIEBkYXRhW10gdHlwZXMgZGVmaW5lZCBmb3IgZWFjaCBvcDoN Cj4gPiArICoNCj4gKz09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Kw0KPiA+ICsgKiB8IE5FU1RJTkcgT1AgICAgICB8ICAgICAg QGRhdGFbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gKyAqDQo+ICs9 PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSsNCj4gPiArICogfCBCSU5EX1BHVEJMICAgICAgfCAgICAgIHN0cnVjdCBpb21tdV9n cGFzaWRfYmluZF9kYXRhICAgICAgICAgICAgfA0KPiA+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ID4gKyAq IHwgVU5CSU5EX1BHVEJMICAgIHwgICAgICBzdHJ1Y3QgaW9tbXVfZ3Bhc2lkX2JpbmRfZGF0YSAg ICAgICAgICAgIHwNCj4gPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiA+ICsgKg0KPiA+ICsgKiByZXR1cm5z OiAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvbiBmYWlsdXJlLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IHZmaW9faW9tbXVfdHlwZTFfbmVzdGluZ19vcCB7DQo+ID4gKwlfX3UzMglhcmdzejsNCj4gPiAr CV9fdTMyCWZsYWdzOw0KPiA+ICsjZGVmaW5lIFZGSU9fTkVTVElOR19PUF9NQVNLCSgweGZmZmYp IC8qIGxvd2VyIDE2LWJpdHMgZm9yIG9wICovDQo+ID4gKwlfX3U4CWRhdGFbXTsNCj4gPiArfTsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgVkZJT19JT01NVV9ORVNUSU5HX09QX0JJTkRfUEdUQkwJKDAp DQo+ID4gKyNkZWZpbmUgVkZJT19JT01NVV9ORVNUSU5HX09QX1VOQklORF9QR1RCTAkoMSkNCj4g PiArDQo+ID4gKyNkZWZpbmUgVkZJT19JT01NVV9ORVNUSU5HX09QCQlfSU8oVkZJT19UWVBFLCBW RklPX0JBU0UgKyAxOSkNCj4gPiArDQo+ID4gIC8qIC0tLS0tLS0tIEFkZGl0aW9uYWwgQVBJIGZv ciBTUEFQUiBUQ0UgKFNlcnZlciBQT1dFUlBDKSBJT01NVSAtLS0tLS0tLSAqLw0KPiA+DQo+ID4g IC8qDQo+ID4NCj4gVGhhbmtzDQo+IA0KPiBFcmljDQoNCg==