From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3E413A0548; Tue, 22 Jun 2021 08:20:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A4C4E4003F; Tue, 22 Jun 2021 08:20:00 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 61E254003C for ; Tue, 22 Jun 2021 08:19:58 +0200 (CEST) IronPort-SDR: hTex1qnptmN1VQNTBYyvbhYyNmtm+eDf2JJDtszmNqsoBNkMd1h9PRU3q/egv4wVtUsXSqMch6 h/6vljhf4u4w== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="206937190" X-IronPort-AV: E=Sophos;i="5.83,291,1616482800"; d="scan'208";a="206937190" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 23:19:57 -0700 IronPort-SDR: VGFsbXIg8zI0qGgvPlkghKrGpyyWmAtejVD8JklCpY6ZXdmKaYD11h3JE+2iWqP1iZKCK7ivaF D/CIrizaao/A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,291,1616482800"; d="scan'208";a="639008326" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga006.fm.intel.com with ESMTP; 21 Jun 2021 23:19:56 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 21 Jun 2021 23:19:55 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Mon, 21 Jun 2021 23:19:55 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Mon, 21 Jun 2021 23:19:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WeX4y8x/qYCRIDV6ohgBVLiN4MRAZtVWG3130k7ZZRnwi9GwCOJs6Vq0I6rMh8yHtHe49rPksQW22f3BxaDhF2K8IT04RcyRLCGYxTpS+YVXpOLNSux54O0xPDLIWxEVufykCbu+tq/LTOzsO4KcoNCU/PKEBlP9NAIcNsq7JaQVaBjsTcnqjr8TWApvG7DuKKPlklbYc+kVMWJnYPdOpltloXB3tiL2hm9lAyCag9NJk20rq5YjO0pgpbE8RUkT/Ke8i6cF0ryAD0IeNh+3Ee5q3zkXqA2XKlxIDdU8igYv0IUCLxgbMFbJIM6Za4h4T9pI1is++4bQg0sMoGbwkA== 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=fmvorwEzAsrCTGZvcfqBuG4IA59aKbHKihpdvAdX2VM=; b=K8XBJ9HyStnwrrSjA1XQ+42wVFo9mOdkg4bWCun/X8r9Cwi4DCcKAltUU/dsDMh60u0bDXgHUmPwlPyzLApn2N8EY9BvFI+QTCmFtfoQU/WyvQowy7rShWTYpM1F7KUJtrPSgGjvyIIVWDDhdgIUiz9dyWLO0atRf1niRXymtL3D+LkUkzeT1qPcbP7n9qGOHlpCb1LO6j6s0WsxuhHCKoLhZkwfqOFcptw8PMc4kkv8Jp4YqELOCAoz09AqFfVQsvfaY1HeSE+/YAsrxzoQqdRCH/AwYEFgbiBw8eOcoZqjwzS5pbUysUEyoJCppzHgkOl4Nfagism/ekrXYMEt/A== 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=fmvorwEzAsrCTGZvcfqBuG4IA59aKbHKihpdvAdX2VM=; b=Fhg5X7qUoVXQ0tTMSIWwd7vLdoOaZO3w3BZqiY6H1kuYaSXSo5pLlY5kvcxNZc6My8Z+zTlofGw5KeOtjQBABQg35SvFN+NBp3GtR5OC7vJ9PtJoF3DPNLS6x6ujfRyZumOspbo8wMdBpe/bKiK9SHNdF5fmsVz2Haj1VR5QtEM= Received: from SJ0PR11MB5216.namprd11.prod.outlook.com (2603:10b6:a03:2db::23) by SJ0PR11MB5040.namprd11.prod.outlook.com (2603:10b6:a03:2d6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.18; Tue, 22 Jun 2021 06:19:52 +0000 Received: from SJ0PR11MB5216.namprd11.prod.outlook.com ([fe80::7409:faaa:1b88:b9b0]) by SJ0PR11MB5216.namprd11.prod.outlook.com ([fe80::7409:faaa:1b88:b9b0%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 06:19:52 +0000 From: "Ding, Xuan" To: Maxime Coquelin , "Xia, Chenbo" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Pai G, Sunil" , "Richardson, Bruce" , "Van Haaren, Harry" , "Liu, Yong" , "Jiang, Cheng1" Thread-Topic: [PATCH v3] vhost: enable IOMMU for async vhost Thread-Index: AQHXWFTdpQPQx4fw0UWNEqutf4jwDqsaCjwAgAQSyKA= Date: Tue, 22 Jun 2021 06:18:25 +0000 Message-ID: References: <20210531150629.35020-1-xuan.ding@intel.com> <20210603173023.10487-1-xuan.ding@intel.com> <302392cf-6643-a290-1050-27b0a592e74e@redhat.com> In-Reply-To: <302392cf-6643-a290-1050-27b0a592e74e@redhat.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: [192.102.204.51] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a7544a8b-a230-428a-ddba-08d93545bf12 x-ms-traffictypediagnostic: SJ0PR11MB5040: 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:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P4QnWVG8TSnKBXhhX8CONmQrIHSxpZ4SLIj7W7OignNnBik9rmqb/swXl4b0/FKNzV5D0nIXUt2muZRWn5rjVMtDcvOT89MzBtQAwUEmQ6GRC27ktuuBDa4XV/F9H5Uw0ZEzCoaWLOhLnYZOWCeBx1+qCAR/+1TdN6HxNseIzIAwLCSDBcWyGMDypvx2q7tnZ+hfoJNbIy7xvsb6CEaLpLmh6VAUJSiJufusZj2HXE1Cso3Denn7iOL54MxbrF72LEldXqELxmZO5/p3u5bTsnweMqAkQ+wcHDX0FdCosObcmZ69A8rqqbtekT2jnn4PCqcTuFKmJ7mvC1EuzkE+AP5ocwzPf8L11N55lsQkzzJ5/5tpdPURcB+gScIQbvMK2Z9cmjrFK0+Bd2Z+GHUNmkWeTb0HSrISXhsLScFzAv1avUeY2wWKuYq7Hs1lH3feXpe90TNGljS0xj2OTk3EkE3Nt1XaLtJ2QFf2kELHopdwZ3X0q8E+acTbv4M9s1aNi9bqoY+VJFxUBtMHzm6/s1YRJDOafElS9+xEP/XRWhWwBtCcRZ/rEGwD6lR0kT+q0sNIFgB3s797pARinBXaOTlolN2FzLobBI7dVTJgbYE= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5216.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(396003)(376002)(136003)(39860400002)(346002)(66946007)(53546011)(30864003)(6506007)(66476007)(66556008)(64756008)(66446008)(186003)(83380400001)(76116006)(8676002)(52536014)(71200400001)(26005)(33656002)(86362001)(6666004)(54906003)(110136005)(316002)(7696005)(8936002)(6636002)(9686003)(55016002)(478600001)(2906002)(107886003)(38100700002)(5660300002)(4326008)(122000001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d09Ia2hvOWsxNGJsYm1qaWlxSFhVcjhjV251UUlyeExiWU1LaDJPRnE4ZmVI?= =?utf-8?B?YUJpNnAxbW5WZ2grdEVXNEpZcEJYQzYzNnppcitPSjYzbVFjTUZmTDNsUjdG?= =?utf-8?B?TDBvZGFvMFpaY1l3T3lLb2dLM0JKallZOVZkRkhYVDlwQVJleDhYdVpEWUdu?= =?utf-8?B?dklFQUtJb3hUNmJlM1A3ZnJRbCs1ZHhpNTlkRVFpbHROUU1PdUVYS2w3d3k3?= =?utf-8?B?V1ZyQ01BRUp1NmdEOEkySHlmREVBajhwK01LZkpTT0dVUXl2b2p6azZ2UVMw?= =?utf-8?B?dDBzaUVRWjZRZTRPaXhHb2lCV2N5bFhQVXhoSU5qN0FJbVFFVWRhYUdrUWN6?= =?utf-8?B?NmlQbDI1RzBTUXhFUk9wNWhoV0dzdEdYWVFWYXVqQzRhUmpzQmt6V0lIOXlt?= =?utf-8?B?MTlpRFNmdlN0Q3dGK3ZBcEl5WEtHcFpPOFRnWHduYWt4UXJucThqZzZuOTVm?= =?utf-8?B?NmhOaDhMQ0p0SjFTZFVoeEtKRmpId0loYmY3ZXMwTjdjL09EVUMwRktveGEz?= =?utf-8?B?R05uczB4dHA2dVcvdWNCMVR2STdPUlp5TG5YSmd0akpyMmpVemdRWVNzUEJZ?= =?utf-8?B?VGtQdUFoelV1NXVPL3d5RkI2VGo1cWQwUWZIRE5Hak0zckhKWXMxWFBBdUw4?= =?utf-8?B?bjF5SzF3cE9NQXRwdjYrb2drU3pkYlk2OFg3OGhieUdTOFQzanpFTXNrMjd2?= =?utf-8?B?OGVxYXBLYlgwS3JWTDNESVJHY0RDcmJodTJGdzUrZHpiNUR2eVd4dHhiVEtw?= =?utf-8?B?T0FxZk9CcU43OEYvelU2U3E1YUxRdm90Q2hsa0pUU2o3aFNkRFZWdCtad3lH?= =?utf-8?B?YlhhWUJzOFdxbVNoSW5YekZqTmdzWWlZZE41MEtLWUlCODRBV0dhWXZvUE1R?= =?utf-8?B?S3hKMzhjZVV1RUtNZTR6TUQ4ZXNyL3NvaklnWnpWWUxHOXMvTWRKRTM1UEhC?= =?utf-8?B?RTFtYitPOTJWVk5jUTdjZmN4TDRuV2RWdE1kL2xkRmxiVHR1LzFTT0grMjZZ?= =?utf-8?B?clhVczJIeHRFNjg2ZHAzUjZ1N1hmRFNzNnBuclYwWExhWkxqbGJ5TGNzcGVB?= =?utf-8?B?U0FEWkFZMmpobnRlbjZ6K0FqOWpmamJCTFgrdGQ4dWtBcTZOdmhJNnlsZ3RH?= =?utf-8?B?UjFoR1djS3VMZmFYY09IS0dXLzJZZGRyQXBxaGVzWnE0bXhoNHdZNUx1ajVV?= =?utf-8?B?b012cS9peU5IelFWK2UrOG16YW51YUpLOXdFOVhzTnB4cjczNmZhSDUxMUt5?= =?utf-8?B?bzRoMGVFcXo5VjZVRm1qQzJQTkM2UkdjZ3NaU2lvUHRweC8yblViUkxXd294?= =?utf-8?B?TVllRm1rYlV0YnZVVnZLUmxGWGppZE0zWHQrSENYYit4cjhBcjVhYU9UVFdL?= =?utf-8?B?ZDRwcUl2dk0xYWJrNkdhZTVoOUtFTEdkWUkvTnNHSXlWeEhGRkJXZVVMWFZh?= =?utf-8?B?enlsK1doaEx6RFE0RnJFdnRJeG9yN1J3WU9FRk1XV0xYRkxzNktQdmZxcjRM?= =?utf-8?B?eHdpalpBZHQ5UHdNVTZPT295QmcycUZTSStNdjEwV0xuYTVhVmJJa1JzS05B?= =?utf-8?B?bndVK0RWSmRnbmh4Y0RRSnJWdDFBdG84T0Z2V3E0Q3gxNWtURmx3WXBPS3hK?= =?utf-8?B?RVZwdU9QT0xZdFhIQ0pQQi9iMW1HelltaFhwSFJtc2MyQXgwbWgraWlzdmNk?= =?utf-8?B?d0RGTlBiMlpFd3ZvdHZVcld4NGhSTUk1dld4dFc1NWNzS2pyMkxxMm0xOHBJ?= =?utf-8?Q?v5glAFERRE+vhoFjQPJmwhZjtE0v7aupYWk8dBK?= 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: SJ0PR11MB5216.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7544a8b-a230-428a-ddba-08d93545bf12 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jun 2021 06:18:25.8869 (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: zjYa2HEOFYHRqND0vySuULPRB7NdvpgLveWo2YtnbzCZNXd4BQJihhcjvklOfo11PCRczCFJxYBzvZEWuXeYEA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5040 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3] vhost: enable IOMMU for async vhost X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lLA0KDQpSZXBsaWVzIGFyZSBpbmxpbmUuCQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhh dC5jb20+DQo+IFNlbnQ6IFNhdHVyZGF5LCBKdW5lIDE5LCAyMDIxIDEyOjE4IEFNDQo+IFRvOiBE aW5nLCBYdWFuIDx4dWFuLmRpbmdAaW50ZWwuY29tPjsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFA aW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVs LmNvbT47IFBhaSBHLCBTdW5pbA0KPiA8c3VuaWwucGFpLmdAaW50ZWwuY29tPjsgUmljaGFyZHNv biwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgVmFuDQo+IEhhYXJlbiwgSGFy cnkgPGhhcnJ5LnZhbi5oYWFyZW5AaW50ZWwuY29tPjsgTGl1LCBZb25nIDx5b25nLmxpdUBpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjNdIHZob3N0OiBlbmFibGUgSU9NTVUgZm9y IGFzeW5jIHZob3N0DQo+IA0KPiBIaSBYdWFuLA0KPiANCj4gT24gNi8zLzIxIDc6MzAgUE0sIHh1 YW4uZGluZ0BpbnRlbC5jb20gd3JvdGU6DQo+ID4gRnJvbTogWHVhbiBEaW5nIDx4dWFuLmRpbmdA aW50ZWwuY29tPg0KPiA+DQo+ID4gRm9yIGFzeW5jIGNvcHksIGl0IGlzIHVuc2FmZSB0byBkaXJl Y3RseSB1c2UgdGhlIHBoeXNpY2FsIGFkZHJlc3MuDQo+ID4gQW5kIGN1cnJlbnQgYWRkcmVzcyB0 cmFuc2xhdGlvbiBmcm9tIEdQQSB0byBIUEEgdmlhIFNXIGFsc28gdGFrZXMNCj4gPiBDUFUgY3lj bGVzLCB0aGVzZSBjYW4gYWxsIGJlbmVmaXQgZnJvbSBJT01NVS4NCj4gPg0KPiA+IFNpbmNlIHRo ZSBleGlzdGluZyBETUEgZW5naW5lIHN1cHBvcnRzIHRvIHVzZSBwbGF0Zm9ybSBJT01NVSwNCj4g PiB0aGlzIHBhdGNoIGVuYWJsZXMgSU9NTVUgZm9yIGFzeW5jIHZob3N0LCB3aGljaCBkZWZpbmVz IElPQVQNCj4gPiBkZXZpY2VzIHRvIHVzZSB2aXJ0dWFsIGFkZHJlc3MgaW5zdGVhZCBvZiBwaHlz aWNhbCBhZGRyZXNzLg0KPiANCj4gV2UgaGF2ZSB0byBrZWVwIGluIG1pbmQgYSBnZW5lcmljIERN QSBhcGkgaXMgY29taW5nLCBhbmQgbWF5YmUgd2Ugd2FudA0KPiBhIFNXIGltcGxlbWVudGF0aW9u IG9mIGEgZG1hZGV2IGJhc2VkIG9uIG1lbWNweSBhdCBsZWFzdCBmb3INCj4gdGVzdGluZy9kZWJ1 Z2dpbmcgcHVycG9zZS4NCg0KSSBub3RpY2VkIHRoZSBnZW5lcmljIGRtYWRldiBtb2RlbCBpcyB1 bmRlciBkaXNjdXNzaW9uLiBUbyBzdXBwb3J0IGEgU1cNCmltcGxlbWVudGF0aW9uLCB0aGUgVkEg bW9kZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhpcyBpcyBhbHNvIHRoZSBwcm9ibGVtDQp0aGF0IHRo aXMgcGF0Y2ggaG9wZXMgdG8gc29sdmUuIFRyYWRpdGlvbmFsbHksIERNQSBlbmdpbmUgY2FuIG9u bHkgdXNlDQpwaHlzaWNhbCBhZGRyZXNzIGluIFBBIG1vZGUuDQoNCj4gDQo+ID4gV2hlbiBzZXQg bWVtb3J5IHRhYmxlLCB0aGUgZnJvbnRlbmQncyBtZW1vcnkgd2lsbCBiZSBtYXBwZWQNCj4gPiB0 byB0aGUgZGVmYXVsdCBjb250YWluZXIgb2YgRFBESyB3aGVyZSBJT0FUIGRldmljZXMgaGF2ZSBi ZWVuDQo+ID4gYWRkZWQgaW50by4gV2hlbiBETUEgY29weSBmYWlscywgdGhlIHZpcnR1YWwgYWRk cmVzcyBwcm92aWRlZA0KPiA+IHRvIElPQVQgZGV2aWNlcyBhbHNvIGFsbG93IHVzIGZhbGxiYWNr IHRvIFNXIGNvcHkgb3IgUEEgY29weS4NCj4gPg0KPiA+IFdpdGggSU9NTVUgZW5hYmxlZCwgdG8g dXNlIElPQVQgZGV2aWNlczoNCj4gPiAxLiBJT0FUIGRldmljZXMgbXVzdCBiZSBiaW5kZWQgdG8g dmZpby1wY2ksIHJhdGhlciB0aGFuIGlnYl91aW8uDQo+ID4gMi4gRFBESyBtdXN0IHVzZSAiLS1p b3ZhLW1vZGU9dmEiLg0KPiANCj4gSSB0aGluayB0aGlzIGlzIHByb2JsZW1hdGljLCBhdCBsZWFz dCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSByaWdodCBpb3ZhDQo+IG1vZGUgaGFzIGJlZW4gc2VsZWN0 ZWQsIGJ1dCBldmVuIHdpdGggZG9pbmcgdGhhdCBpdCBpcyBsaW1pdGluZy4NCg0KQXMgYSBsaWJy YXJ5LCB2aG9zdCBpcyBub3QgYXdhcmUgb2YgdGhlIGRldmljZSBzZWxlY3RlZCBhZGRyZXNzKFBB IG9yIFZBKQ0KYW5kIGN1cnJlbnQgRFBESyBpb3ZhIG1vZGUuIFRvIHNvbWUgZXh0ZW50LCB0aGlz IHBhdGNoIGlzIGEgcHJvcG9zYWwuDQpXaXRoIGRldmljZSBmZWQgd2l0aCBWQSwgU1cgZmFsbGJh Y2sgY2FuIGJlIHN1cHBvcnRlZC4NCkFuZCBWQSBjYW4gYWxzbyBiZSB0cmFuc2xhdGVkIHRvIFBB IHRocm91Z2ggcnRlX21lbV92aXJ0MmlvdmEoKS4NCkZpbmFsbHksIHRoZSBhZGRyZXNzIHNlbGVj dGVkIGJ5IHRoZSBkZXZpY2UgaXMgZGV0ZXJtaW5lZCBieSBjYWxsYmFjay4NCk5vdCB2aWNlIHZl cnNhLg0KDQpJZiB0aGUgRE1BIGNhbGxiYWNrIGltcGxlbWVudGVyIGZvbGxvd3MgdGhpcyBkZXNp Z24sIFNXIGZhbGxiYWNrIGNhbiBiZSBzdXBwb3J0ZWQuDQpJIHdvdWxkIGJlIHZlcnkgZ3JhdGVm dWwgaWYgeW91IGNvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0cyBmb3IgdGhpcyBkZXNpZ24uIDop DQoNCj4gDQo+IFdoYXQgcHJldmVudCB1cyB0byByZXVzZSBhZGRfZ3Vlc3RfcGFnZXMoKSBhbG9n cml0aG0gdG8gaW1wbGVtZW50DQo+IElPVkFfQVNfUEE/DQoNCklmIElPVkEgaXMgUEEsIGl0J3Mg bm90IGVhc3kgdG8gdHJhbnNsYXRlIFBBIHRvIFZBIHRvIHN1cHBvcnQgU1cgaW1wbGVtZW50YXRp b24uDQpVbnRpbCBub3csIEkgZG9uJ3QgaGF2ZSBhbnkgZ29vZCBpZGVhcyB0byBiZSBjb21wYXRp YmxlIHdpdGggSU9WQV9BU19QQSANCmFuZCBJT1ZBX0FTX1ZBIGF0IHRoZSBzYW1lIHRpbWUsIGJl Y2F1c2UgaXQgcmVxdWlyZXMgdmhvc3QgbGlicmFyeSB0bw0Kc2VsZWN0IFBBL1ZBIGZvciBETUEg ZGV2aWNlIGFjY29yZGluZyB0byBkaWZmZXJlbnQgRFBESyBpb3ZhIG1vZGUuDQoNClRoYW5rcywN Clh1YW4NCg0KPiANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFh1YW4gRGluZyA8eHVhbi5kaW5n QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPg0KPiA+IHYzOg0KPiA+ICogRml4ZWQgc29tZSB0eXBv cy4NCj4gPg0KPiA+IHYyOg0KPiA+ICogRml4ZWQgYSBmb3JtYXQgaXNzdWUuDQo+ID4gKiBBZGRl ZCB0aGUgZG1hIHVubWFwIGxvZ2ljIHdoZW4gZGV2aWNlIGlzIGNsb3NlZC4NCj4gPiAtLS0NCj4g PiAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Zob3N0X2xpYi5yc3QgfCAgMjAgKysrKysNCj4gPiAg bGliL3Zob3N0L3Zob3N0X3VzZXIuYyAgICAgICAgICAgICAgfCAxMjUgKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+ICBsaWIvdmhvc3QvdmlydGlvX25ldC5jICAgICAgICAgICAgICB8 ICAzMCArKystLS0tDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTA2 IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS92aG9zdF9saWIucnN0DQo+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Zob3N0X2xpYi5yc3QN Cj4gPiBpbmRleCBkMThmYjk4OTEwLi41Nzc3ZjBkYTk2IDEwMDY0NA0KPiA+IC0tLSBhL2RvYy9n dWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9n X2d1aWRlL3Zob3N0X2xpYi5yc3QNCj4gPiBAQCAtNDIwLDMgKzQyMCwyMyBAQCBGaW5hbGx5LCBh IHNldCBvZiBkZXZpY2Ugb3BzIGlzIGRlZmluZWQgZm9yIGRldmljZQ0KPiBzcGVjaWZpYyBvcGVy YXRpb25zOg0KPiA+ICAqIGBgZ2V0X25vdGlmeV9hcmVhYGANCj4gPg0KPiA+ICAgIENhbGxlZCB0 byBnZXQgdGhlIG5vdGlmeSBhcmVhIGluZm8gb2YgdGhlIHF1ZXVlLg0KPiA+ICsNCj4gPiArVmhv c3QgYXN5bmMgZGF0YSBwYXRoDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICsNCj4g PiArKiBBZGRyZXNzIG1vZGUNCj4gPiArDQo+ID4gKyAgTW9kZXJuIElPQVQgZGV2aWNlcyBzdXBw b3J0IHRvIHVzZSB0aGUgSU9NTVUsIHdoaWNoIGNhbiBhdm9pZCB1c2luZw0KPiA+ICsgIHRoZSB1 bnNhZmUgSFBBLiBCZXNpZGVzLCB0aGUgQ1BVIGN5Y2xlcyB0b29rIGJ5IFNXIHRvIHRyYW5zbGF0 ZSBmcm9tDQo+ID4gKyAgR1BBIHRvIEhQQSBjYW4gYWxzbyBiZSBzYXZlZC4gU28gSU9BVCBkZXZp Y2VzIGFyZSBkZWZpbmVkIHRvIHVzZQ0KPiA+ICsgIHZpcnR1YWwgYWRkcmVzcyBpbnN0ZWFkIG9m IHBoeXNpY2FsIGFkZHJlc3MuDQo+ID4gKw0KPiA+ICsgIFdpdGggSU9NTVUgZW5hYmxlZCwgdG8g dXNlIElPQVQgZGV2aWNlczoNCj4gPiArICAxLiBJT0FUIGRldmljZXMgbXVzdCBiZSBiaW5kZWQg dG8gdmZpby1wY2ksIHJhdGhlciB0aGFuIGlnYl91aW8uDQo+ID4gKyAgMi4gRFBESyBtdXN0IHVz ZSBgYC0taW92YS1tb2RlPXZhYGAuDQo+ID4gKw0KPiA+ICsqIEZhbGxiYWNrDQo+ID4gKw0KPiA+ ICsgIFdoZW4gdGhlIERNQSBjb3B5IGZhaWxzLCB0aGUgdXNlciB3aG8gaW1wbGVtZW50cyB0aGUg dHJhbnNmZXJfZGF0YQ0KPiA+ICsgIGNhbGxiYWNrIGNhbiBmYWxsYmFjayB0byBTVyBjb3B5IG9y IGZhbGxiYWNrIHRvIFBBIGNvcHkgdGhyb3VnaA0KPiA+ICsgIHJ0ZV9tZW1fdmlydDJpb3ZhKCku DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aG9zdF91c2VyLmMgYi9saWIvdmhvc3Qvdmhv c3RfdXNlci5jDQo+ID4gaW5kZXggOGYwZWJhNjQxMi4uYzMzZmE3ODRmZiAxMDA2NDQNCj4gPiAt LS0gYS9saWIvdmhvc3Qvdmhvc3RfdXNlci5jDQo+ID4gKysrIGIvbGliL3Zob3N0L3Zob3N0X3Vz ZXIuYw0KPiA+IEBAIC00NSw2ICs0NSw3IEBADQo+ID4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+ DQo+ID4gICNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQo+ID4gICNpbmNsdWRlIDxydGVfbG9nLmg+ DQo+ID4gKyNpbmNsdWRlIDxydGVfdmZpby5oPg0KPiA+DQo+ID4gICNpbmNsdWRlICJpb3RsYi5o Ig0KPiA+ICAjaW5jbHVkZSAidmhvc3QuaCINCj4gPiBAQCAtMTQxLDYgKzE0MiwzNCBAQCBnZXRf YmxrX3NpemUoaW50IGZkKQ0KPiA+ICAJcmV0dXJuIHJldCA9PSAtMSA/ICh1aW50NjRfdCktMSA6 ICh1aW50NjRfdClzdGF0LnN0X2Jsa3NpemU7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50 DQo+ID4gK2FzeW5jX2RtYV9tYXAoc3RydWN0IHJ0ZV92aG9zdF9tZW1fcmVnaW9uICpyZWdpb24s IGJvb2wgZG9fbWFwKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArCWlmIChkb19t YXApIHsNCj4gPiArCQkvKiBBZGQgbWFwcGVkIHJlZ2lvbiBpbnRvIHRoZSBkZWZhdWx0IGNvbnRh aW5lciBvZiBEUERLLiAqLw0KPiA+ICsJCXJldCA9DQo+IHJ0ZV92ZmlvX2NvbnRhaW5lcl9kbWFf bWFwKFJURV9WRklPX0RFRkFVTFRfQ09OVEFJTkVSX0ZELA0KPiA+ICsJCQkJCQkgcmVnaW9uLT5o b3N0X3VzZXJfYWRkciwNCj4gPiArCQkJCQkJIHJlZ2lvbi0+aG9zdF91c2VyX2FkZHIsDQo+ID4g KwkJCQkJCSByZWdpb24tPnNpemUpOw0KPiA+ICsJCWlmIChyZXQpIHsNCj4gPiArCQkJVkhPU1Rf TE9HX0NPTkZJRyhFUlIsICJETUEgZW5naW5lIG1hcCBmYWlsZWRcbiIpOw0KPiA+ICsJCQlyZXR1 cm4gcmV0Ow0KPiA+ICsJCX0NCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJLyogUmVtb3ZlIG1hcHBl ZCByZWdpb24gZnJvbSB0aGUgZGVmYXVsdCBjb250YWluZXIgb2YgRFBESy4NCj4gKi8NCj4gPiAr CQlyZXQgPQ0KPiBydGVfdmZpb19jb250YWluZXJfZG1hX3VubWFwKFJURV9WRklPX0RFRkFVTFRf Q09OVEFJTkVSX0ZELA0KPiA+ICsJCQkJCQkgICByZWdpb24tPmhvc3RfdXNlcl9hZGRyLA0KPiA+ ICsJCQkJCQkgICByZWdpb24tPmhvc3RfdXNlcl9hZGRyLA0KPiA+ICsJCQkJCQkgICByZWdpb24t PnNpemUpOw0KPiA+ICsJCWlmIChyZXQpIHsNCj4gPiArCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIs ICJETUEgZW5naW5lIHVubWFwDQo+IGZhaWxlZFxuIik7DQo+ID4gKwkJCXJldHVybiByZXQ7DQo+ ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAg c3RhdGljIHZvaWQNCj4gPiAgZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYp DQo+ID4gIHsNCj4gPiBAQCAtMTU1LDYgKzE4NCw5IEBAIGZyZWVfbWVtX3JlZ2lvbihzdHJ1Y3Qg dmlydGlvX25ldCAqZGV2KQ0KPiA+ICAJCWlmIChyZWctPmhvc3RfdXNlcl9hZGRyKSB7DQo+ID4g IAkJCW11bm1hcChyZWctPm1tYXBfYWRkciwgcmVnLT5tbWFwX3NpemUpOw0KPiA+ICAJCQljbG9z ZShyZWctPmZkKTsNCj4gPiArDQo+ID4gKwkJCWlmIChkZXYtPmFzeW5jX2NvcHkpDQo+ID4gKwkJ CQlhc3luY19kbWFfbWFwKHJlZywgZmFsc2UpOw0KPiA+ICAJCX0NCj4gPiAgCX0NCj4gPiAgfQ0K PiA+IEBAIC04NjYsODcgKzg5OCw2IEBAIHZob3N0X3VzZXJfc2V0X3ZyaW5nX2Jhc2Uoc3RydWN0 IHZpcnRpb19uZXQgKipwZGV2LA0KPiA+ICAJcmV0dXJuIFJURV9WSE9TVF9NU0dfUkVTVUxUX09L Ow0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIGludA0KPiA+IC1hZGRfb25lX2d1ZXN0X3BhZ2Uo c3RydWN0IHZpcnRpb19uZXQgKmRldiwgdWludDY0X3QgZ3Vlc3RfcGh5c19hZGRyLA0KPiA+IC0J CSAgIHVpbnQ2NF90IGhvc3RfcGh5c19hZGRyLCB1aW50NjRfdCBzaXplKQ0KPiA+IC17DQo+ID4g LQlzdHJ1Y3QgZ3Vlc3RfcGFnZSAqcGFnZSwgKmxhc3RfcGFnZTsNCj4gPiAtCXN0cnVjdCBndWVz dF9wYWdlICpvbGRfcGFnZXM7DQo+ID4gLQ0KPiA+IC0JaWYgKGRldi0+bnJfZ3Vlc3RfcGFnZXMg PT0gZGV2LT5tYXhfZ3Vlc3RfcGFnZXMpIHsNCj4gPiAtCQlkZXYtPm1heF9ndWVzdF9wYWdlcyAq PSAyOw0KPiA+IC0JCW9sZF9wYWdlcyA9IGRldi0+Z3Vlc3RfcGFnZXM7DQo+ID4gLQkJZGV2LT5n dWVzdF9wYWdlcyA9IHJ0ZV9yZWFsbG9jKGRldi0+Z3Vlc3RfcGFnZXMsDQo+ID4gLQkJCQkJZGV2 LT5tYXhfZ3Vlc3RfcGFnZXMgKiBzaXplb2YoKnBhZ2UpLA0KPiA+IC0JCQkJCVJURV9DQUNIRV9M SU5FX1NJWkUpOw0KPiA+IC0JCWlmIChkZXYtPmd1ZXN0X3BhZ2VzID09IE5VTEwpIHsNCj4gPiAt CQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJjYW5ub3QgcmVhbGxvYw0KPiBndWVzdF9wYWdlc1xu Iik7DQo+ID4gLQkJCXJ0ZV9mcmVlKG9sZF9wYWdlcyk7DQo+ID4gLQkJCXJldHVybiAtMTsNCj4g PiAtCQl9DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0JaWYgKGRldi0+bnJfZ3Vlc3RfcGFnZXMgPiAw KSB7DQo+ID4gLQkJbGFzdF9wYWdlID0gJmRldi0+Z3Vlc3RfcGFnZXNbZGV2LT5ucl9ndWVzdF9w YWdlcyAtIDFdOw0KPiA+IC0JCS8qIG1lcmdlIGlmIHRoZSB0d28gcGFnZXMgYXJlIGNvbnRpbnVv dXMgKi8NCj4gPiAtCQlpZiAoaG9zdF9waHlzX2FkZHIgPT0gbGFzdF9wYWdlLT5ob3N0X3BoeXNf YWRkciArDQo+ID4gLQkJCQkgICAgICBsYXN0X3BhZ2UtPnNpemUpIHsNCj4gPiAtCQkJbGFzdF9w YWdlLT5zaXplICs9IHNpemU7DQo+ID4gLQkJCXJldHVybiAwOw0KPiA+IC0JCX0NCj4gPiAtCX0N Cj4gPiAtDQo+ID4gLQlwYWdlID0gJmRldi0+Z3Vlc3RfcGFnZXNbZGV2LT5ucl9ndWVzdF9wYWdl cysrXTsNCj4gPiAtCXBhZ2UtPmd1ZXN0X3BoeXNfYWRkciA9IGd1ZXN0X3BoeXNfYWRkcjsNCj4g PiAtCXBhZ2UtPmhvc3RfcGh5c19hZGRyICA9IGhvc3RfcGh5c19hZGRyOw0KPiA+IC0JcGFnZS0+ c2l6ZSA9IHNpemU7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIDA7DQo+ID4gLX0NCj4gPiAtDQo+ID4g LXN0YXRpYyBpbnQNCj4gPiAtYWRkX2d1ZXN0X3BhZ2VzKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYs IHN0cnVjdCBydGVfdmhvc3RfbWVtX3JlZ2lvbiAqcmVnLA0KPiA+IC0JCXVpbnQ2NF90IHBhZ2Vf c2l6ZSkNCj4gPiAtew0KPiA+IC0JdWludDY0X3QgcmVnX3NpemUgPSByZWctPnNpemU7DQo+ID4g LQl1aW50NjRfdCBob3N0X3VzZXJfYWRkciAgPSByZWctPmhvc3RfdXNlcl9hZGRyOw0KPiA+IC0J dWludDY0X3QgZ3Vlc3RfcGh5c19hZGRyID0gcmVnLT5ndWVzdF9waHlzX2FkZHI7DQo+ID4gLQl1 aW50NjRfdCBob3N0X3BoeXNfYWRkcjsNCj4gPiAtCXVpbnQ2NF90IHNpemU7DQo+ID4gLQ0KPiA+ IC0JaG9zdF9waHlzX2FkZHIgPSBydGVfbWVtX3ZpcnQyaW92YSgodm9pZCAqKSh1aW50cHRyX3Qp aG9zdF91c2VyX2FkZHIpOw0KPiA+IC0Jc2l6ZSA9IHBhZ2Vfc2l6ZSAtIChndWVzdF9waHlzX2Fk ZHIgJiAocGFnZV9zaXplIC0gMSkpOw0KPiA+IC0Jc2l6ZSA9IFJURV9NSU4oc2l6ZSwgcmVnX3Np emUpOw0KPiA+IC0NCj4gPiAtCWlmIChhZGRfb25lX2d1ZXN0X3BhZ2UoZGV2LCBndWVzdF9waHlz X2FkZHIsIGhvc3RfcGh5c19hZGRyLCBzaXplKSA8DQo+IDApDQo+ID4gLQkJcmV0dXJuIC0xOw0K PiA+IC0NCj4gPiAtCWhvc3RfdXNlcl9hZGRyICArPSBzaXplOw0KPiA+IC0JZ3Vlc3RfcGh5c19h ZGRyICs9IHNpemU7DQo+ID4gLQlyZWdfc2l6ZSAtPSBzaXplOw0KPiA+IC0NCj4gPiAtCXdoaWxl IChyZWdfc2l6ZSA+IDApIHsNCj4gPiAtCQlzaXplID0gUlRFX01JTihyZWdfc2l6ZSwgcGFnZV9z aXplKTsNCj4gPiAtCQlob3N0X3BoeXNfYWRkciA9IHJ0ZV9tZW1fdmlydDJpb3ZhKCh2b2lkICop KHVpbnRwdHJfdCkNCj4gPiAtCQkJCQkJICBob3N0X3VzZXJfYWRkcik7DQo+ID4gLQkJaWYgKGFk ZF9vbmVfZ3Vlc3RfcGFnZShkZXYsIGd1ZXN0X3BoeXNfYWRkciwgaG9zdF9waHlzX2FkZHIsDQo+ ID4gLQkJCQlzaXplKSA8IDApDQo+ID4gLQkJCXJldHVybiAtMTsNCj4gPiAtDQo+ID4gLQkJaG9z dF91c2VyX2FkZHIgICs9IHNpemU7DQo+ID4gLQkJZ3Vlc3RfcGh5c19hZGRyICs9IHNpemU7DQo+ ID4gLQkJcmVnX3NpemUgLT0gc2l6ZTsNCj4gPiAtCX0NCj4gPiAtDQo+ID4gLQkvKiBzb3J0IGd1 ZXN0IHBhZ2UgYXJyYXkgaWYgb3ZlciBiaW5hcnkgc2VhcmNoIHRocmVzaG9sZCAqLw0KPiA+IC0J aWYgKGRldi0+bnJfZ3Vlc3RfcGFnZXMgPj0gVkhPU1RfQklOQVJZX1NFQVJDSF9USFJFU0gpIHsN Cj4gPiAtCQlxc29ydCgodm9pZCAqKWRldi0+Z3Vlc3RfcGFnZXMsIGRldi0+bnJfZ3Vlc3RfcGFn ZXMsDQo+ID4gLQkJCXNpemVvZihzdHJ1Y3QgZ3Vlc3RfcGFnZSksIGd1ZXN0X3BhZ2VfYWRkcmNt cCk7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIDA7DQo+ID4gLX0NCj4gPiAtDQo+ID4g ICNpZmRlZiBSVEVfTElCUlRFX1ZIT1NUX0RFQlVHDQo+ID4gIC8qIFRPRE86IGVuYWJsZSBpdCBv bmx5IGluIGRlYnVnIG1vZGU/ICovDQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gQEAgLTExMDUsNiAr MTA1Niw3IEBAIHZob3N0X3VzZXJfbW1hcF9yZWdpb24oc3RydWN0IHZpcnRpb19uZXQgKmRldiwN Cj4gPiAgCXVpbnQ2NF90IG1tYXBfc2l6ZTsNCj4gPiAgCXVpbnQ2NF90IGFsaWdubWVudDsNCj4g PiAgCWludCBwb3B1bGF0ZTsNCj4gPiArCWludCByZXQ7DQo+ID4NCj4gPiAgCS8qIENoZWNrIGZv ciBtZW1vcnlfc2l6ZSArIG1tYXBfb2Zmc2V0IG92ZXJmbG93ICovDQo+ID4gIAlpZiAobW1hcF9v ZmZzZXQgPj0gLXJlZ2lvbi0+c2l6ZSkgew0KPiA+IEBAIC0xMTU4LDEyICsxMTEwLDEzIEBAIHZo b3N0X3VzZXJfbW1hcF9yZWdpb24oc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiAgCXJlZ2lv bi0+bW1hcF9zaXplID0gbW1hcF9zaXplOw0KPiA+ICAJcmVnaW9uLT5ob3N0X3VzZXJfYWRkciA9 ICh1aW50NjRfdCkodWludHB0cl90KW1tYXBfYWRkciArDQo+IG1tYXBfb2Zmc2V0Ow0KPiA+DQo+ ID4gLQlpZiAoZGV2LT5hc3luY19jb3B5KQ0KPiA+IC0JCWlmIChhZGRfZ3Vlc3RfcGFnZXMoZGV2 LCByZWdpb24sIGFsaWdubWVudCkgPCAwKSB7DQo+ID4gLQkJCVZIT1NUX0xPR19DT05GSUcoRVJS LA0KPiA+IC0JCQkJCSJhZGRpbmcgZ3Vlc3QgcGFnZXMgdG8gcmVnaW9uDQo+IGZhaWxlZC5cbiIp Ow0KPiA+ICsJaWYgKGRldi0+YXN5bmNfY29weSkgew0KPiA+ICsJCXJldCA9IGFzeW5jX2RtYV9t YXAocmVnaW9uLCB0cnVlKTsNCj4gPiArCQlpZiAocmV0KSB7DQo+ID4gKwkJCVZIT1NUX0xPR19D T05GSUcoRVJSLCAiQ29uZmlndXJlIElPTU1VIGZvciBETUENCj4gZW5naW5lIGZhaWxlZFxuIik7 DQo+ID4gIAkJCXJldHVybiAtMTsNCj4gDQo+IE1heWJlIHdlJ3JlIHRvbyBsYXRlIGluIHRoZSBp bml0IGFscmVhZHksIGJ1dCBJIHdvdWxkIHRoaW5rIHdlIG1heSB3YW50DQo+IHRvIGZhbGxiYWNr IHRvIFNXIGltcGxlbWVudGF0aW9uIGluc2VhDQo+IA0KPiA+IC0JCX0NCj4gPiArCQkJfQ0KPiA+ ICsJfQ0KPiA+DQo+ID4gIAlWSE9TVF9MT0dfQ09ORklHKElORk8sDQo+ID4gIAkJCSJndWVzdCBt ZW1vcnkgcmVnaW9uIHNpemU6IDB4JSIgUFJJeDY0ICJcbiINCj4gPiBkaWZmIC0tZ2l0IGEvbGli L3Zob3N0L3ZpcnRpb19uZXQuYyBiL2xpYi92aG9zdC92aXJ0aW9fbmV0LmMNCj4gPiBpbmRleCA4 ZGE4YTg2YTEwLi44ODExMGQyY2IzIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi92aG9zdC92aXJ0aW9f bmV0LmMNCj4gPiArKysgYi9saWIvdmhvc3QvdmlydGlvX25ldC5jDQo+ID4gQEAgLTk4MCwxMSAr OTgwLDkgQEAgYXN5bmNfbWJ1Zl90b19kZXNjKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVj dA0KPiB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiA+ICAJc3RydWN0IGJhdGNoX2NvcHlfZWxlbSAq YmF0Y2hfY29weSA9IHZxLT5iYXRjaF9jb3B5X2VsZW1zOw0KPiA+ICAJc3RydWN0IHZpcnRpb19u ZXRfaGRyX21yZ19yeGJ1ZiB0bXBfaGRyLCAqaGRyID0gTlVMTDsNCj4gPiAgCWludCBlcnJvciA9 IDA7DQo+ID4gLQl1aW50NjRfdCBtYXBwZWRfbGVuOw0KPiA+DQo+ID4gIAl1aW50MzJfdCB0bGVu ID0gMDsNCj4gPiAgCWludCB0dmVjX2lkeCA9IDA7DQo+ID4gLQl2b2lkICpocGE7DQo+ID4NCj4g PiAgCWlmICh1bmxpa2VseShtID09IE5VTEwpKSB7DQo+ID4gIAkJZXJyb3IgPSAtMTsNCj4gPiBA QCAtMTA3NCwyNyArMTA3MiwxOSBAQCBhc3luY19tYnVmX3RvX2Rlc2Moc3RydWN0IHZpcnRpb19u ZXQgKmRldiwNCj4gc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsDQo+ID4NCj4gPiAgCQljcHlf bGVuID0gUlRFX01JTihidWZfYXZhaWwsIG1idWZfYXZhaWwpOw0KPiA+DQo+ID4gLQkJd2hpbGUg KHVubGlrZWx5KGNweV9sZW4gJiYgY3B5X2xlbiA+PSBjcHlfdGhyZXNob2xkKSkgew0KPiA+IC0J CQlocGEgPSAodm9pZCAqKSh1aW50cHRyX3QpZ3BhX3RvX2ZpcnN0X2hwYShkZXYsDQo+ID4gLQkJ CQkJYnVmX2lvdmEgKyBidWZfb2Zmc2V0LA0KPiA+IC0JCQkJCWNweV9sZW4sICZtYXBwZWRfbGVu KTsNCj4gPiAtDQo+ID4gLQkJCWlmICh1bmxpa2VseSghaHBhIHx8IG1hcHBlZF9sZW4gPCBjcHlf dGhyZXNob2xkKSkNCj4gPiAtCQkJCWJyZWFrOw0KPiA+IC0NCj4gPiArCQlpZiAodW5saWtlbHko Y3B5X2xlbiA+PSBjcHlfdGhyZXNob2xkKSkgew0KPiA+ICAJCQlhc3luY19maWxsX3ZlYyhzcmNf aW92ZWMgKyB0dmVjX2lkeCwNCj4gPiAtCQkJCSh2b2lkICopKHVpbnRwdHJfdClydGVfcGt0bWJ1 Zl9pb3ZhX29mZnNldChtLA0KPiA+IC0JCQkJbWJ1Zl9vZmZzZXQpLCAoc2l6ZV90KW1hcHBlZF9s ZW4pOw0KPiA+ICsJCQkJcnRlX3BrdG1idWZfbXRvZF9vZmZzZXQobSwgdm9pZCAqLA0KPiBtYnVm X29mZnNldCksIChzaXplX3QpY3B5X2xlbik7DQo+ID4NCj4gPiAgCQkJYXN5bmNfZmlsbF92ZWMo ZHN0X2lvdmVjICsgdHZlY19pZHgsDQo+ID4gLQkJCQkJaHBhLCAoc2l6ZV90KW1hcHBlZF9sZW4p Ow0KPiA+IC0NCj4gPiAtCQkJdGxlbiArPSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPiAtCQkJ Y3B5X2xlbiAtPSAodWludDMyX3QpbWFwcGVkX2xlbjsNCj4gPiAtCQkJbWJ1Zl9hdmFpbCAgLT0g KHVpbnQzMl90KW1hcHBlZF9sZW47DQo+ID4gLQkJCW1idWZfb2Zmc2V0ICs9ICh1aW50MzJfdClt YXBwZWRfbGVuOw0KPiA+IC0JCQlidWZfYXZhaWwgIC09ICh1aW50MzJfdCltYXBwZWRfbGVuOw0K PiA+IC0JCQlidWZfb2Zmc2V0ICs9ICh1aW50MzJfdCltYXBwZWRfbGVuOw0KPiA+ICsJCQkJKHZv aWQgKikoKHVpbnRwdHJfdCkoYnVmX2FkZHIgKyBidWZfb2Zmc2V0KSksDQo+IChzaXplX3QpY3B5 X2xlbik7DQo+ID4gKw0KPiA+ICsJCQl0bGVuICs9IGNweV9sZW47DQo+ID4gKwkJCW1idWZfYXZh aWwgIC09IGNweV9sZW47DQo+ID4gKwkJCW1idWZfb2Zmc2V0ICs9IGNweV9sZW47DQo+ID4gKwkJ CWJ1Zl9hdmFpbCAgLT0gY3B5X2xlbjsNCj4gPiArCQkJYnVmX29mZnNldCArPSBjcHlfbGVuOw0K PiA+ICsJCQljcHlfbGVuID0gMDsNCj4gPiAgCQkJdHZlY19pZHgrKzsNCj4gPiAgCQl9DQo+ID4N Cj4gPg0KDQo=