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 26EA7A0C49; Fri, 18 Jun 2021 06:35:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 90A70410ED; Fri, 18 Jun 2021 06:34:50 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 60C84410FB for ; Fri, 18 Jun 2021 06:34:48 +0200 (CEST) IronPort-SDR: 6AKlo1uCFkU1vMN1pr3EmqR2XgstxS/5+etWTkOgJRzUWyyUme2MBlbCOz1FSLjFIf0BB2f0fS bgJo2haWcGdg== X-IronPort-AV: E=McAfee;i="6200,9189,10018"; a="206447006" X-IronPort-AV: E=Sophos;i="5.83,281,1616482800"; d="scan'208";a="206447006" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2021 21:34:48 -0700 IronPort-SDR: rzW7I4qCe+aJzlmZ0+ZnsLB/jHcJbAWq6P8jsiLG9oqYYtutylv/MJjJotw5zVzgyoBCFKX4ur Eaa9YWU4I5ZA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,281,1616482800"; d="scan'208";a="622271722" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga005.jf.intel.com with ESMTP; 17 Jun 2021 21:34:47 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Thu, 17 Jun 2021 21:34:47 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Thu, 17 Jun 2021 21:34:46 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.103) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Thu, 17 Jun 2021 21:34:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YSwg25SktgLz0ajmKCq+Vn8evq/d8dz6+YCXGRTRn0L3AyqGy7Q3tdc0d7d4YnMbR3pTg96x8QqHbu21thNJ8agwriZYUL9xsDEOmLqgNGGOhEpxe0G5Jw0pcW9Q6lyKkHtybez7YTv+55O0pqs+SRN79vSz/Cp94jpn9BTwPi6E+vM89eeDGe2X/Of4yZhcFsaOkm3gi1C9DcORR7rvZYudgW+WxBgwT7Vd9QKAVEwZzGrqshzs87SVhS4JL/8o7CYi5Uusowh9Y4zzrw0kB3EnPx53ID5gPcENgPGpVCSkXl+9Mws/g6uoHA7uTaoSXP0t3A8E25iPmP3HXOejFA== 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=kTyhvescu/gVCEnV16W+jtxSYonFgO10bArxqa5gYNI=; b=Bdm5hiugGLCzmvgHHC6JJcOx7vdZxJ7ryHkplKwZno2AwwfT/FlwYUv1Zkil0D2k27cCPfrv+dVd6VDnigJB5Bzj9vaxl4GVAudgV7cVLpTO3KlwB3/EtLoKV00q63kRMJWJ6/b1vUs+ABGp1bTXkxHkvqqn2jBj/PLvxcgLP+4WgxGwlejEbcpzpKBqIiMRxeqyG4l6lxBmtxaw852FgG1ajd7L/rrX0AyREklH6b9cWoFfd35PoSEVGd/ErFD177+e+b+9NpC4zr61W1aSRxLzeoli3Zp6HO4NNgXFR1FC1KX5DfGNU/63RHIMDzK/LlnTvnK4QnllQrvnLKZFPQ== 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=kTyhvescu/gVCEnV16W+jtxSYonFgO10bArxqa5gYNI=; b=O6GGBHuxPrCgWh0gLROiVUirSMntYkm5TEFOTdrUai/WhfjmkMVX4IDyx9KPzSk5OA8XrKPHToNmkDKu+4Br5JlwuNx02JVdPvotVdaf9oU0Yl9tVhIMZBu68xZ+ZRqZzDMRXEyPRaAQV1DJBLBtiE1uswMwoWGGlz+JvDZi7aI= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by BL3PR11MB5713.namprd11.prod.outlook.com (2603:10b6:208:350::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.21; Fri, 18 Jun 2021 04:34:45 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::d447:3a7a:aad7:4d32]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::d447:3a7a:aad7:4d32%7]) with mapi id 15.20.4219.026; Fri, 18 Jun 2021 04:34:45 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "david.marchand@redhat.com" Thread-Topic: [PATCH v4 5/7] vhost: improve NUMA reallocation Thread-Index: AQHXY47qcudp2vzAJEGdR09VlQSICqsZAu/g Date: Fri, 18 Jun 2021 04:34:45 +0000 Message-ID: References: <20210617153739.178011-1-maxime.coquelin@redhat.com> <20210617153739.178011-6-maxime.coquelin@redhat.com> In-Reply-To: <20210617153739.178011-6-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN 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: 69802545-d9ab-486e-c83e-08d93212660e x-ms-traffictypediagnostic: BL3PR11MB5713: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: l9aKPB2XY2OT8McRCMcDkmL46hZkRf3gEDmm4aVVBEX8OPqKS6L5JXPoU3bTCovwb4fTxddX6UGcZKwqcAAnvsC4KMq95Z1Pw3z1vrq7ytOuCQ7Xk5L+FR8oLnrgaswqhJieleLaDVzHcbfsPeDmeeLsLhh+9JeY6ShspzfrQVu7EPOsef4rSs6Y4VeusnBVWJZo15k1FScBbpcMbr7bvOs1QoAuaEEmdiCThGWe18Awvj+XlzEP7eENrjaeHVaDTiUjqQnH8Nyb5OVxSV7mIFMhzs48yNHR0uTFLaYqw5BFfhVQtlDJ2Ln2tuIOjmCYAs8H+DVS+4H75RNYXoihqrnezD2hYBdOLe9Kwd0C7VS8RKeeTo4VnX4op+dEvv6SxScfn6FRWwTpFwfX7HkmGg6nWmvXhJ3J1x2ByZR+sQrEf0hjBBbZbJHOfBJp27O+YJcBloDHZ4X1Gnu8oAkugzSvQJ6/lMfxnmGhq38WsvBNJYHxtgId8BrK8zHg06o9GJTptSsxFTI1H6c7jjiIMDsG23jU3W6lIHZKwMmq9oK+4e0r/wEZvbLkeulK4kO26GzlccyKgtSfJu2jZUziB5XQ9SkD6SomUiLVmEBcTco= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(376002)(366004)(346002)(396003)(39860400002)(136003)(76116006)(55016002)(9686003)(6506007)(66476007)(110136005)(86362001)(26005)(66446008)(2906002)(64756008)(66946007)(316002)(33656002)(7696005)(53546011)(66556008)(186003)(5660300002)(478600001)(52536014)(38100700002)(122000001)(83380400001)(71200400001)(8676002)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MkxGSENQTUMxSEQ5M2FUeEQ0Y1hLOTBrQlZzdnRCb1dwSzY4Q3dnQUkvd3Nr?= =?utf-8?B?KzhaSTMxNUkvc1RwM2x5d3p0akJUWXV0Z1FIbWlzdU9lazhGeGVRbG5aWGcz?= =?utf-8?B?SEVNdnBJN2EweUFaMTdNaVNZTkh4dGJkelhscDFncG5XUTQxV0pRUU9FbXVj?= =?utf-8?B?RlNrVTJEamZIOExLd2duWVA4bVZkbEV2VGovVytpeWl3L1hzU0ZzTlh3OVRL?= =?utf-8?B?Q1hxZUJLNEZKbVYrV2hOQWRxWklWdktCYmU1RnBLYjdlcXh0UW5NK2o0bGNT?= =?utf-8?B?czVadGFLZXZGL2F3Nms2QVU4SEZDNjRUZStSM1grYzk4ZXRsNU4xNkd4MDRm?= =?utf-8?B?Ny9Iai9PNTdqcW4yUjk1VlJWL29iRG90bEI5aWJvOEZ0cEc0WWFlZmJCV1Bw?= =?utf-8?B?VmhGaXh5WXVLWUhCZVZYaVNiZDdlNEI5bmtvbmkrQ256NnRaREQ4YitiQ0VR?= =?utf-8?B?SE1GRnFkQm01a1NmWGNYOGhvRHN0M1FJQ1FKclBZTnZXNVBoSTM2bms1YmpK?= =?utf-8?B?Q1BPaCtSRVcyUFYxaXRNZHFYSEJzcGVvLy81YnBkYWpLczV3RWVsZUNISkpn?= =?utf-8?B?VW1aZXlpQTNMNW5YSzZQVjd0c3hYTXBaeEUzWWFxZEljMVBuR1gySnpKK0Fy?= =?utf-8?B?UDNESlAwUmtackV0YUV0Sm1BU2NNQ3NqbVRyWlVkeXk4NGV0ZHFMQUNFa3VM?= =?utf-8?B?RGx4M2JnQW9OT2pDRm56N01NK2NrWXVmL0hTR0VweFI1Qk9OdVpzc2RoOGJn?= =?utf-8?B?ZEsxN3pyQXQ1VDBNMUdmYWR1Q29BZnhxZGFBNWF6L1JwbFBtQUw1NENNVVMx?= =?utf-8?B?U0gzRjlTT2tEdE1yb0l1dTFTRzQ2bW0ydkRNbFppNm5mbndmck1Pa093QlVo?= =?utf-8?B?SHJBdW53V05DbUFyeDlKS0lEaUZFOU9TL05LMmM4ZTVjSEZGeTU3eTNLNkNW?= =?utf-8?B?SmFITExXS0l1amFFMi9KbVFzOWtweUVwT2trMnFaMGhlK0hDSW9ySFcvV3B1?= =?utf-8?B?bndtbEErOEx1WmFET2JETzYyVFRyNXkraFR0S05UUCs3WWxVVE1neGJoMndK?= =?utf-8?B?eVVhOGFTelhzbWVTZjZtSVpiYWRRZjBRczU0cTlDS05pdksvK2pZVGh2OVVa?= =?utf-8?B?SEhFSTVnR1RheEhrd0laTFBRd2EwUGdiUUQ5YkJma1g3dkovRkVJdzczTWtq?= =?utf-8?B?aGFGbGNaSlp0aGJkRUFEUE9mT1NOYTg4a3pUS0FQWmZVMGhNYU1mc2YxR3Zm?= =?utf-8?B?ckZLMEFVWUNJMVRlamluNkNrb2xNUzVEcnFtdnUvYlRWL2hqQ004R0VqSmlV?= =?utf-8?B?MTNsdC81KzJDWWJsbTU0ZDdlMUdwRkt4SmxVam9ZSjQ3ZTdFV2tONFI0aFZS?= =?utf-8?B?YnAxT3BuOE5hZ2F6TXVxV2JTRnUwSFowL0l2ZnJqWmlsQlpmYkNvWncxR2x2?= =?utf-8?B?SU05azRJOWlOMFZVejVPalV5alFtSUdSSld3dWJTem9jT2hnRXlVU2UvdHdV?= =?utf-8?B?clZQRVFuN29DaDl5NjNrN2NvREJRWTBSWnFCTkgxZWthejk2R2R2TFRFbE9m?= =?utf-8?B?UnRtL2dsbWRXNVZYakxhOGZ0N01aTldvcUNQQmtHbUNlU3lUcmJDamFONWl6?= =?utf-8?B?T3dhVDFHdzNDdys3elJyK2tqa09PMUVBa1ZwMDBybGY0YVVYV3NWUEhCYnlD?= =?utf-8?B?bWZUVHVyK01HaG9rVFVMU2djWTRZSnViZjFIMVl6NElmZ1BpM0Q1blN0T21W?= =?utf-8?Q?oK/PUE9kxHLmKCa+ji++bwSJa1qCZeDFp15Wrfh?= x-ms-exchange-transport-forked: True 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: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69802545-d9ab-486e-c83e-08d93212660e X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jun 2021 04:34:45.1671 (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: XfrvgVfBBlTSCx+a5SO4IKCH+323swYyD9fWOVmZ0dehHALkLJr6rVZneg5nbfqg+PZ4fPkOYuCo7K+1nTeosg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB5713 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v4 5/7] vhost: improve NUMA reallocation 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5 LCBKdW5lIDE3LCAyMDIxIDExOjM4IFBNDQo+IFRvOiBkZXZAZHBkay5vcmc7IGRhdmlkLm1hcmNo YW5kQHJlZGhhdC5jb207IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gQ2M6 IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFN1YmplY3Q6 IFtQQVRDSCB2NCA1LzddIHZob3N0OiBpbXByb3ZlIE5VTUEgcmVhbGxvY2F0aW9uDQo+IA0KPiBU aGlzIHBhdGNoIGltcHJvdmVzIHRoZSBudW1hX3JlYWxsb2MoKSBmdW5jdGlvbiBieSBtYWtpbmcg dXNlDQo+IG9mIHJ0ZV9yZWFsbG9jX3NvY2tldCgpLCB3aGljaCB0YWtlcyBjYXJlIG9mIHRoZSBt ZW1vcnkgY29weQ0KPiBhbmQgZnJlZWluZyBvZiB0aGUgb2xkIGRhdGEuDQo+IA0KPiBTdWdnZXN0 ZWQtYnk6IERhdmlkIE1hcmNoYW5kIDxkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tPg0KPiBTaWdu ZWQtb2ZmLWJ5OiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0K PiAtLS0NCj4gIGxpYi92aG9zdC92aG9zdF91c2VyLmMgfCAxOTUgKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFuZ2VkLCA4NiBpbnNlcnRpb25z KCspLCAxMDkgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL3Zob3N0L3Zob3N0 X3VzZXIuYyBiL2xpYi92aG9zdC92aG9zdF91c2VyLmMNCj4gaW5kZXggNmU3YjMyN2VmOC4uMDU5 MGVmNmQxNCAxMDA2NDQNCj4gLS0tIGEvbGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiArKysgYi9s aWIvdmhvc3Qvdmhvc3RfdXNlci5jDQo+IEBAIC00ODAsMTQ0ICs0ODAsMTIxIEBAIHZob3N0X3Vz ZXJfc2V0X3ZyaW5nX251bShzdHJ1Y3QgdmlydGlvX25ldCAqKnBkZXYsDQo+ICBzdGF0aWMgc3Ry dWN0IHZpcnRpb19uZXQqDQo+ICBudW1hX3JlYWxsb2Moc3RydWN0IHZpcnRpb19uZXQgKmRldiwg aW50IGluZGV4KQ0KPiAgew0KPiAtCWludCBvbGRub2RlLCBuZXdub2RlOw0KPiArCWludCBub2Rl LCBkZXZfbm9kZTsNCj4gIAlzdHJ1Y3QgdmlydGlvX25ldCAqb2xkX2RldjsNCj4gLQlzdHJ1Y3Qg dmhvc3RfdmlydHF1ZXVlICpvbGRfdnEsICp2cTsNCj4gLQlzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVt ICpuZXdfc2hhZG93X3VzZWRfc3BsaXQ7DQo+IC0Jc3RydWN0IHZyaW5nX3VzZWRfZWxlbV9wYWNr ZWQgKm5ld19zaGFkb3dfdXNlZF9wYWNrZWQ7DQo+IC0Jc3RydWN0IGJhdGNoX2NvcHlfZWxlbSAq bmV3X2JhdGNoX2NvcHlfZWxlbXM7DQo+ICsJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ ICsJc3RydWN0IGJhdGNoX2NvcHlfZWxlbSAqYmNlOw0KPiArCXN0cnVjdCBndWVzdF9wYWdlICpn cDsNCj4gKwlzdHJ1Y3QgcnRlX3Zob3N0X21lbW9yeSAqbWVtOw0KPiArCXNpemVfdCBtZW1fc2l6 ZTsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gIAlvbGRfZGV2ID0gZGV2Ow0KPiAtCXZxID0gb2xkX3Zx ID0gZGV2LT52aXJ0cXVldWVbaW5kZXhdOw0KPiAtDQo+IC0JcmV0ID0gZ2V0X21lbXBvbGljeSgm bmV3bm9kZSwgTlVMTCwgMCwgb2xkX3ZxLT5kZXNjLA0KPiAtCQkJICAgIE1QT0xfRl9OT0RFIHwg TVBPTF9GX0FERFIpOw0KPiArCXZxID0gZGV2LT52aXJ0cXVldWVbaW5kZXhdOw0KPiANCj4gLQkv KiBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlYWxsb2NhdGUgdnEgKi8NCj4gLQlyZXQgfD0gZ2V0X21l bXBvbGljeSgmb2xkbm9kZSwgTlVMTCwgMCwgb2xkX3ZxLA0KPiAtCQkJICAgICBNUE9MX0ZfTk9E RSB8IE1QT0xfRl9BRERSKTsNCj4gKwlyZXQgPSBnZXRfbWVtcG9saWN5KCZub2RlLCBOVUxMLCAw LCB2cS0+ZGVzYywgTVBPTF9GX05PREUgfCBNUE9MX0ZfQUREUik7DQo+ICAJaWYgKHJldCkgew0K PiAtCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwNCj4gLQkJCSJVbmFibGUgdG8gZ2V0IHZxIG51bWEg aW5mb3JtYXRpb24uXG4iKTsNCj4gKwkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJVbmFibGUgdG8g Z2V0IHZpcnRxdWV1ZSAlZCBudW1hDQo+IGluZm9ybWF0aW9uLlxuIiwgaW5kZXgpOw0KPiAgCQly ZXR1cm4gZGV2Ow0KPiAgCX0NCj4gLQlpZiAob2xkbm9kZSAhPSBuZXdub2RlKSB7DQo+IC0JCWlm ICh2cS0+cmVhZHkpIHsNCj4gLQkJCXZxLT5yZWFkeSA9IGZhbHNlOw0KPiAtCQkJdmhvc3RfdXNl cl9ub3RpZnlfcXVldWVfc3RhdGUoZGV2LCBpbmRleCwgMCk7DQo+IC0JCX0NCj4gDQo+IC0JCVZI T1NUX0xPR19DT05GSUcoSU5GTywNCj4gLQkJCSJyZWFsbG9jYXRlIHZxIGZyb20gJWQgdG8gJWQg bm9kZVxuIiwgb2xkbm9kZSwgbmV3bm9kZSk7DQo+IC0JCXZxID0gcnRlX21hbGxvY19zb2NrZXQo TlVMTCwgc2l6ZW9mKCp2cSksIDAsIG5ld25vZGUpOw0KPiAtCQlpZiAoIXZxKQ0KPiAtCQkJcmV0 dXJuIGRldjsNCj4gKwlpZiAodnEtPnJlYWR5KSB7DQo+ICsJCXZxLT5yZWFkeSA9IGZhbHNlOw0K PiArCQl2aG9zdF91c2VyX25vdGlmeV9xdWV1ZV9zdGF0ZShkZXYsIGluZGV4LCAwKTsNCj4gKwl9 DQo+IA0KPiAtCQltZW1jcHkodnEsIG9sZF92cSwgc2l6ZW9mKCp2cSkpOw0KPiArCXZxID0gcnRl X3JlYWxsb2Nfc29ja2V0KHZxLCBzaXplb2YoKnZxKSwgMCwgbm9kZSk7DQo+ICsJaWYgKCF2cSkg ew0KPiArCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkZhaWxlZCB0byByZWFsbG9jIHZpcnRxdWV1 ZSAlZCBvbg0KPiBub2RlICVkXG4iLA0KPiArCQkJCWluZGV4LCBub2RlKTsNCj4gKwkJcmV0dXJu IGRldjsNCj4gKwl9DQo+IA0KPiAtCQlpZiAodnFfaXNfcGFja2VkKGRldikpIHsNCj4gLQkJCW5l d19zaGFkb3dfdXNlZF9wYWNrZWQgPSBydGVfbWFsbG9jX3NvY2tldChOVUxMLA0KPiAtCQkJCQl2 cS0+c2l6ZSAqDQo+IC0JCQkJCXNpemVvZihzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtX3BhY2tlZCks DQo+IC0JCQkJCVJURV9DQUNIRV9MSU5FX1NJWkUsDQo+IC0JCQkJCW5ld25vZGUpOw0KPiAtCQkJ aWYgKG5ld19zaGFkb3dfdXNlZF9wYWNrZWQpIHsNCj4gLQkJCQlydGVfZnJlZSh2cS0+c2hhZG93 X3VzZWRfcGFja2VkKTsNCj4gLQkJCQl2cS0+c2hhZG93X3VzZWRfcGFja2VkID0gbmV3X3NoYWRv d191c2VkX3BhY2tlZDsNCj4gLQkJCX0NCj4gLQkJfSBlbHNlIHsNCj4gLQkJCW5ld19zaGFkb3df dXNlZF9zcGxpdCA9IHJ0ZV9tYWxsb2Nfc29ja2V0KE5VTEwsDQo+IC0JCQkJCXZxLT5zaXplICoN Cj4gLQkJCQkJc2l6ZW9mKHN0cnVjdCB2cmluZ191c2VkX2VsZW0pLA0KPiAtCQkJCQlSVEVfQ0FD SEVfTElORV9TSVpFLA0KPiAtCQkJCQluZXdub2RlKTsNCj4gLQkJCWlmIChuZXdfc2hhZG93X3Vz ZWRfc3BsaXQpIHsNCj4gLQkJCQlydGVfZnJlZSh2cS0+c2hhZG93X3VzZWRfc3BsaXQpOw0KPiAt CQkJCXZxLT5zaGFkb3dfdXNlZF9zcGxpdCA9IG5ld19zaGFkb3dfdXNlZF9zcGxpdDsNCj4gLQkJ CX0NCj4gLQkJfQ0KPiArCWlmICh2cSAhPSBkZXYtPnZpcnRxdWV1ZVtpbmRleF0pIHsNCj4gKwkJ VkhPU1RfTE9HX0NPTkZJRyhJTkZPLCAicmVhbGxvY2F0ZWQgdmlydHF1ZXVlIG9uIG5vZGUgJWRc biIsIG5vZGUpOw0KPiArCQlkZXYtPnZpcnRxdWV1ZVtpbmRleF0gPSB2cTsNCj4gKwkJdmhvc3Rf dXNlcl9pb3RsYl9pbml0KGRldiwgaW5kZXgpOw0KPiArCX0NCj4gKw0KPiArCWlmICh2cV9pc19w YWNrZWQoZGV2KSkgew0KPiArCQlzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtX3BhY2tlZCAqc3VwOw0K PiANCj4gLQkJbmV3X2JhdGNoX2NvcHlfZWxlbXMgPSBydGVfbWFsbG9jX3NvY2tldChOVUxMLA0K PiAtCQkJdnEtPnNpemUgKiBzaXplb2Yoc3RydWN0IGJhdGNoX2NvcHlfZWxlbSksDQo+IC0JCQlS VEVfQ0FDSEVfTElORV9TSVpFLA0KPiAtCQkJbmV3bm9kZSk7DQo+IC0JCWlmIChuZXdfYmF0Y2hf Y29weV9lbGVtcykgew0KPiAtCQkJcnRlX2ZyZWUodnEtPmJhdGNoX2NvcHlfZWxlbXMpOw0KPiAt CQkJdnEtPmJhdGNoX2NvcHlfZWxlbXMgPSBuZXdfYmF0Y2hfY29weV9lbGVtczsNCj4gKwkJc3Vw ID0gcnRlX3JlYWxsb2Nfc29ja2V0KHZxLT5zaGFkb3dfdXNlZF9wYWNrZWQsIHZxLT5zaXplICoN Cj4gc2l6ZW9mKCpzdXApLA0KPiArCQkJCVJURV9DQUNIRV9MSU5FX1NJWkUsIG5vZGUpOw0KPiAr CQlpZiAoIXN1cCkgew0KPiArCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJGYWlsZWQgdG8gcmVh bGxvYyBzaGFkb3cgcGFja2VkIG9uDQo+IG5vZGUgJWRcbiIsIG5vZGUpOw0KPiArCQkJcmV0dXJu IGRldjsNCj4gIAkJfQ0KPiArCQl2cS0+c2hhZG93X3VzZWRfcGFja2VkID0gc3VwOw0KPiANCg0K QWJvdmUgYmxhbmsgbGluZSBjb3VsZCBiZSBkZWxldGVkPw0KDQpUaGFua3MsDQpDaGVuYm8NCg0K PiAtCQlpZiAodnEtPmxvZ19jYWNoZSkgew0KPiAtCQkJc3RydWN0IGxvZ19jYWNoZV9lbnRyeSAq bG9nX2NhY2hlOw0KPiArCX0gZWxzZSB7DQo+ICsJCXN0cnVjdCB2cmluZ191c2VkX2VsZW0gKnN1 czsNCj4gDQo+IC0JCQlsb2dfY2FjaGUgPSBydGVfcmVhbGxvY19zb2NrZXQodnEtPmxvZ19jYWNo ZSwNCj4gLQkJCQkJc2l6ZW9mKHN0cnVjdCBsb2dfY2FjaGVfZW50cnkpICoNCj4gVkhPU1RfTE9H X0NBQ0hFX05SLA0KPiAtCQkJCQkwLCBuZXdub2RlKTsNCj4gLQkJCWlmIChsb2dfY2FjaGUpDQo+ IC0JCQkJdnEtPmxvZ19jYWNoZSA9IGxvZ19jYWNoZTsNCj4gKwkJc3VzID0gcnRlX3JlYWxsb2Nf c29ja2V0KHZxLT5zaGFkb3dfdXNlZF9zcGxpdCwgdnEtPnNpemUgKg0KPiBzaXplb2YoKnN1cyks DQo+ICsJCQkJUlRFX0NBQ0hFX0xJTkVfU0laRSwgbm9kZSk7DQo+ICsJCWlmICghc3VzKSB7DQo+ ICsJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkZhaWxlZCB0byByZWFsbG9jIHNoYWRvdyBzcGxp dCBvbg0KPiBub2RlICVkXG4iLCBub2RlKTsNCj4gKwkJCXJldHVybiBkZXY7DQo+ICAJCX0NCj4g LQ0KPiAtCQlydGVfZnJlZShvbGRfdnEpOw0KPiArCQl2cS0+c2hhZG93X3VzZWRfc3BsaXQgPSBz dXM7DQo+ICAJfQ0KPiANCj4gLQlpZiAoZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfUlVOTklORykN Cj4gLQkJZ290byBvdXQ7DQo+IC0NCj4gLQkvKiBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlYWxsb2Nh dGUgZGV2ICovDQo+IC0JcmV0ID0gZ2V0X21lbXBvbGljeSgmb2xkbm9kZSwgTlVMTCwgMCwgb2xk X2RldiwNCj4gLQkJCSAgICBNUE9MX0ZfTk9ERSB8IE1QT0xfRl9BRERSKTsNCj4gLQlpZiAocmV0 KSB7DQo+IC0JCVZIT1NUX0xPR19DT05GSUcoRVJSLA0KPiAtCQkJIlVuYWJsZSB0byBnZXQgZGV2 IG51bWEgaW5mb3JtYXRpb24uXG4iKTsNCj4gLQkJZ290byBvdXQ7DQo+ICsJYmNlID0gcnRlX3Jl YWxsb2Nfc29ja2V0KHZxLT5iYXRjaF9jb3B5X2VsZW1zLCB2cS0+c2l6ZSAqIHNpemVvZigqYmNl KSwNCj4gKwkJCVJURV9DQUNIRV9MSU5FX1NJWkUsIG5vZGUpOw0KPiArCWlmICghYmNlKSB7DQo+ ICsJCVZIT1NUX0xPR19DT05GSUcoRVJSLCAiRmFpbGVkIHRvIHJlYWxsb2MgYmF0Y2ggY29weSBl bGVtIG9uDQo+IG5vZGUgJWRcbiIsIG5vZGUpOw0KPiArCQlyZXR1cm4gZGV2Ow0KPiAgCX0NCj4g LQlpZiAob2xkbm9kZSAhPSBuZXdub2RlKSB7DQo+IC0JCXN0cnVjdCBydGVfdmhvc3RfbWVtb3J5 ICpvbGRfbWVtOw0KPiAtCQlzdHJ1Y3QgZ3Vlc3RfcGFnZSAqb2xkX2dwOw0KPiAtCQlzc2l6ZV90 IG1lbV9zaXplLCBncF9zaXplOw0KPiArCXZxLT5iYXRjaF9jb3B5X2VsZW1zID0gYmNlOw0KPiAN Cj4gLQkJVkhPU1RfTE9HX0NPTkZJRyhJTkZPLA0KPiAtCQkJInJlYWxsb2NhdGUgZGV2IGZyb20g JWQgdG8gJWQgbm9kZVxuIiwNCj4gLQkJCW9sZG5vZGUsIG5ld25vZGUpOw0KPiAtCQlkZXYgPSBy dGVfbWFsbG9jX3NvY2tldChOVUxMLCBzaXplb2YoKmRldiksIDAsIG5ld25vZGUpOw0KPiAtCQlp ZiAoIWRldikgew0KPiAtCQkJZGV2ID0gb2xkX2RldjsNCj4gLQkJCWdvdG8gb3V0Ow0KPiAtCQl9 DQo+ICsJaWYgKHZxLT5sb2dfY2FjaGUpIHsNCj4gKwkJc3RydWN0IGxvZ19jYWNoZV9lbnRyeSAq bGM7DQo+IA0KPiAtCQltZW1jcHkoZGV2LCBvbGRfZGV2LCBzaXplb2YoKmRldikpOw0KPiAtCQly dGVfZnJlZShvbGRfZGV2KTsNCj4gLQ0KPiAtCQltZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnRl X3Zob3N0X21lbW9yeSkgKw0KPiAtCQkJc2l6ZW9mKHN0cnVjdCBydGVfdmhvc3RfbWVtX3JlZ2lv bikgKiBkZXYtPm1lbS0+bnJlZ2lvbnM7DQo+IC0JCW9sZF9tZW0gPSBkZXYtPm1lbTsNCj4gLQkJ ZGV2LT5tZW0gPSBydGVfbWFsbG9jX3NvY2tldChOVUxMLCBtZW1fc2l6ZSwgMCwgbmV3bm9kZSk7 DQo+IC0JCWlmICghZGV2LT5tZW0pIHsNCj4gLQkJCWRldi0+bWVtID0gb2xkX21lbTsNCj4gLQkJ CWdvdG8gb3V0Ow0KPiArCQlsYyA9IHJ0ZV9yZWFsbG9jX3NvY2tldCh2cS0+bG9nX2NhY2hlLCBz aXplb2YoKmxjKSAqDQo+IFZIT1NUX0xPR19DQUNIRV9OUiwgMCwgbm9kZSk7DQo+ICsJCWlmICgh bGMpIHsNCj4gKwkJCVZIT1NUX0xPR19DT05GSUcoRVJSLCAiRmFpbGVkIHRvIHJlYWxsb2MgbG9n IGNhY2hlIG9uDQo+IG5vZGUgJWRcbiIsIG5vZGUpOw0KPiArCQkJcmV0dXJuIGRldjsNCj4gIAkJ fQ0KPiArCQl2cS0+bG9nX2NhY2hlID0gbGM7DQo+ICsJfQ0KPiANCj4gLQkJbWVtY3B5KGRldi0+ bWVtLCBvbGRfbWVtLCBtZW1fc2l6ZSk7DQo+IC0JCXJ0ZV9mcmVlKG9sZF9tZW0pOw0KPiArCWlm IChkZXYtPmZsYWdzICYgVklSVElPX0RFVl9SVU5OSU5HKQ0KPiArCQlyZXR1cm4gZGV2Ow0KPiAN Cj4gLQkJZ3Bfc2l6ZSA9IGRldi0+bWF4X2d1ZXN0X3BhZ2VzICogc2l6ZW9mKCpkZXYtPmd1ZXN0 X3BhZ2VzKTsNCj4gLQkJb2xkX2dwID0gZGV2LT5ndWVzdF9wYWdlczsNCj4gLQkJZGV2LT5ndWVz dF9wYWdlcyA9IHJ0ZV9tYWxsb2Nfc29ja2V0KE5VTEwsIGdwX3NpemUsDQo+IFJURV9DQUNIRV9M SU5FX1NJWkUsIG5ld25vZGUpOw0KPiAtCQlpZiAoIWRldi0+Z3Vlc3RfcGFnZXMpIHsNCj4gLQkJ CWRldi0+Z3Vlc3RfcGFnZXMgPSBvbGRfZ3A7DQo+IC0JCQlnb3RvIG91dDsNCj4gLQkJfQ0KPiAr CXJldCA9IGdldF9tZW1wb2xpY3koJmRldl9ub2RlLCBOVUxMLCAwLCBkZXYsIE1QT0xfRl9OT0RF IHwgTVBPTF9GX0FERFIpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJVkhPU1RfTE9HX0NPTkZJRyhF UlIsICJVbmFibGUgdG8gZ2V0IFZpcnRpbyBkZXYgJWQgbnVtYQ0KPiBpbmZvcm1hdGlvbi5cbiIs IGRldi0+dmlkKTsNCj4gKwkJcmV0dXJuIGRldjsNCj4gKwl9DQo+IA0KPiAtCQltZW1jcHkoZGV2 LT5ndWVzdF9wYWdlcywgb2xkX2dwLCBncF9zaXplKTsNCj4gLQkJcnRlX2ZyZWUob2xkX2dwKTsN Cj4gKwlpZiAoZGV2X25vZGUgPT0gbm9kZSkNCj4gKwkJcmV0dXJuIGRldjsNCj4gKw0KPiArCWRl diA9IHJ0ZV9yZWFsbG9jX3NvY2tldChvbGRfZGV2LCBzaXplb2YoKmRldiksIDAsIG5vZGUpOw0K PiArCWlmICghZGV2KSB7DQo+ICsJCVZIT1NUX0xPR19DT05GSUcoRVJSLCAiRmFpbGVkIHRvIHJl YWxsb2MgZGV2IG9uIG5vZGUgJWRcbiIsIG5vZGUpOw0KPiArCQlyZXR1cm4gb2xkX2RldjsNCj4g IAl9DQo+IA0KPiAtb3V0Og0KPiAtCWRldi0+dmlydHF1ZXVlW2luZGV4XSA9IHZxOw0KPiArCVZI T1NUX0xPR19DT05GSUcoSU5GTywgInJlYWxsb2NhdGVkIGRldmljZSBvbiBub2RlICVkXG4iLCBu b2RlKTsNCj4gIAl2aG9zdF9kZXZpY2VzW2Rldi0+dmlkXSA9IGRldjsNCj4gDQo+IC0JaWYgKG9s ZF92cSAhPSB2cSkNCj4gLQkJdmhvc3RfdXNlcl9pb3RsYl9pbml0KGRldiwgaW5kZXgpOw0KPiAr CW1lbV9zaXplID0gc2l6ZW9mKHN0cnVjdCBydGVfdmhvc3RfbWVtb3J5KSArDQo+ICsJCXNpemVv ZihzdHJ1Y3QgcnRlX3Zob3N0X21lbV9yZWdpb24pICogZGV2LT5tZW0tPm5yZWdpb25zOw0KPiAr CW1lbSA9IHJ0ZV9yZWFsbG9jX3NvY2tldChkZXYtPm1lbSwgbWVtX3NpemUsIDAsIG5vZGUpOw0K PiArCWlmICghbWVtKSB7DQo+ICsJCVZIT1NUX0xPR19DT05GSUcoRVJSLCAiRmFpbGVkIHRvIHJl YWxsb2MgbWVtIHRhYmxlIG9uIG5vZGUgJWRcbiIsDQo+IG5vZGUpOw0KPiArCQlyZXR1cm4gZGV2 Ow0KPiArCX0NCj4gKwlkZXYtPm1lbSA9IG1lbTsNCj4gKw0KPiArCWdwID0gcnRlX3JlYWxsb2Nf c29ja2V0KGRldi0+Z3Vlc3RfcGFnZXMsIGRldi0+bWF4X2d1ZXN0X3BhZ2VzICoNCj4gc2l6ZW9m KCpncCksDQo+ICsJCQlSVEVfQ0FDSEVfTElORV9TSVpFLCBub2RlKTsNCj4gKwlpZiAoIWdwKSB7 DQo+ICsJCVZIT1NUX0xPR19DT05GSUcoRVJSLCAiRmFpbGVkIHRvIHJlYWxsb2MgZ3Vlc3QgcGFn ZXMgb24gbm9kZSAlZFxuIiwNCj4gbm9kZSk7DQo+ICsJCXJldHVybiBkZXY7DQo+ICsJfQ0KPiAr CWRldi0+Z3Vlc3RfcGFnZXMgPSBncDsNCj4gDQo+ICAJcmV0dXJuIGRldjsNCj4gIH0NCj4gLS0N Cj4gMi4zMS4xDQoNCg==