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 67821A0C43; Thu, 23 Sep 2021 09:35:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 02724410DD; Thu, 23 Sep 2021 09:35:32 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 6AF74410DC; Thu, 23 Sep 2021 09:35:29 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10115"; a="223825964" X-IronPort-AV: E=Sophos;i="5.85,316,1624345200"; d="scan'208";a="223825964" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2021 00:35:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,316,1624345200"; d="scan'208";a="558168637" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga002.fm.intel.com with ESMTP; 23 Sep 2021 00:35:25 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) 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.12; Thu, 23 Sep 2021 00:35:24 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 23 Sep 2021 00:35:24 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.42) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 23 Sep 2021 00:35:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g4ZAn1pZAPowrZFLtyaPhq5AcEKHaYoFn+n/P+KbNYwItUy0KONx140vGOYr4ZMZSNIbaeHMfNEwYdqYUO72Ua7kyrwE8c3xOcojPZ++0NfxfrheHfuwDoWUZ0YtnAjoc0JfXGH1HuX3lggVcRN1XG8PN+lguQnimLkD0YLSOBShY804IgSdpqzUADQMHSZmRNc7+YKN28tanCTj17px+b+c7tjgIi/4QZ/51SV6AiuImCtGLUNTVrUin+NeyINWkczlDRJKk9mbXx4yfJOm5F46Pen7rBssknyZXpibYwA04NRueKoUS4t0mblVfmQ48kW2yWieedydyWd8vTK9bw== 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; bh=5eWf1aPOg3+YzFUqmFyM0+gIN+oejuC4XuiW42e+G5Y=; b=SMMSAQjV4+7G3XapnpVf6lx9iuKRGx1akDc/klXd6a7HSOeCXRZOjcYz5MytNAu+E3UFp2INaeLl/+u3iXoH0oiafT2oEMgbeTvSUpepRPOlVCm2DTt6e/up7GKNxdR5n4szaYKcKc1/iVTHMoojOl5ZxQMKOqnA/wWh+qYk5aFT27Yn2TVnanCd6I8kTqlC6RZjlzD7r/Dl2uNas5AAUjaymqrmS/RayWw2sDbgzpUDF49rjDBSgHIzfGdCwOVYUeurBxQGM4OqPo+9RGkq1WsNxHhG2q7E3nydDFIEk5+7H16QVpy63inNoCCV70UCPUnxS24LwZ44MOxcNf7FzQ== 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=5eWf1aPOg3+YzFUqmFyM0+gIN+oejuC4XuiW42e+G5Y=; b=fNuOurwGyKquTlVRFX3nuBBiGXdyce01RBQYh+0ClVc2yMn4arf8wVwlmT8v1Lvt75r7fjbESiXt2rwApxn98rDthKp6SZ9/aMsNo/H2678VPPis2tZqC1h0KxEfjQLwXzU22LrUcyAOqfySUMaGrt30y3YAd0/M7j7bijevsCA= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3933.namprd11.prod.outlook.com (2603:10b6:208:13d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.15; Thu, 23 Sep 2021 07:35:23 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::6873:dced:7f68:801]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::6873:dced:7f68:801%3]) with mapi id 15.20.4544.014; Thu, 23 Sep 2021 07:35:23 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "amorenoz@redhat.com" , "david.marchand@redhat.com" , "andrew.rybchenko@oktetlabs.ru" , "Yigit, Ferruh" , "michaelba@nvidia.com" , "viacheslavo@nvidia.com" , "Li, Xiaoyun" CC: "stable@dpdk.org" , "nelio.laranjeiro@6wind.com" , "yvugenfi@redhat.com" , "ybendito@redhat.com" Thread-Topic: [PATCH v2 1/5] net/virtio: add initial RSS support Thread-Index: AQHXr5h2sF67TmJkN0qzZKo2XMwmFquxNhRg Date: Thu, 23 Sep 2021 07:35:22 +0000 Message-ID: References: <20210922095742.229262-1-maxime.coquelin@redhat.com> <20210922095742.229262-2-maxime.coquelin@redhat.com> In-Reply-To: <20210922095742.229262-2-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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6656fc3f-ee23-4e02-c99b-08d97e64b3f7 x-ms-traffictypediagnostic: MN2PR11MB3933: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: F1M17rDHn8floIbrSsC3On3W9RqESs92eCbWVBTpLr7VvIfucgfgCxjJNEvWN9TMqESw8HGOl22IwsfDsKoVXQoQvycyM6pRReb/FKVoYVgYXbxS03RSU37FsgNxhLXAcgVUG8BP6be/BceX679WRRZw7EbR93mVhGqL3OKrO7oN5JzM2JHreX2w7aodYmbV58neZ0iqPVFpAf507e9uSE7Lnz2cTST6DQaS94HikIplkrbv5egwsK7z16kzcKhf3ZpNKY+GNRxK9hxBBYSSmeOPKKkvbKXRQ7GJlF80PS2FQWDK+Jsb0eqHX3ta6bVJDx0sQMbsfG0kCphpBeNvg5psW+7eKbuEGeEW2eq3wlq+CXWfPWx2bgb1ikoFRsfjji1InwNWy2Vpj5gAiAyHFZsGbEw63YZ68VPb4fxZh5EP95+2AwRIdDeGyK0awYH3X+MNb1zNKT5/Aj6EwE3C0FgkKrezQCuC/6+f98vQhuLjS/Q3WTp+fB8unjV+8RnkkgoWr2eCbGRtVcQIYQQcJr37fqIEUPa9/nKdhe6KUpD/8QvBzmfnC3kzE5WTzZAg2qNt5gYvFtXqdmcYPgPpoOF2txa8phIa6rF2iCMRWpZCNkCMB9BFyVMfJJTj9D3ju/gCZyclZaMh5W+RaoU3qeWYSO1U4JMkSMAJj7yLIaZ0TkmT+vFSAdpBKm0GnOs1zZ94PCXcWHQCOvUaYNsBzfsR5eHSCul6piDagFnL2Yc= 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:(4636009)(366004)(26005)(6506007)(186003)(86362001)(33656002)(53546011)(7696005)(38070700005)(508600001)(921005)(83380400001)(66946007)(4326008)(66476007)(9686003)(122000001)(66446008)(55016002)(54906003)(76116006)(110136005)(7416002)(8936002)(52536014)(5660300002)(66556008)(8676002)(2906002)(316002)(38100700002)(30864003)(6636002)(64756008)(71200400001)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TENOK0dGQ1haR1BRcnRPblJML2V0dWxoVFV2dERrb29HSUM5aVVoeVNOWVdG?= =?utf-8?B?V3RMdzZrckM0eCtzdDJyM3Bway9SaTF0RGVLbWUySEZIR3dLOVVraVZMdFhs?= =?utf-8?B?MGd1bmRTUVU0OEhFcmd0U3pxd0d5S3I5Rm8yZnh5K0FXdWJvbVA1c2JKaVZv?= =?utf-8?B?aHMwc2RsRlBTUGg1SlhKY1phK1A0RVlaMWpUVnN2RjBFVW1uZ2kwNXVBelFy?= =?utf-8?B?Nk96Z05iL2VabVdNckpPSUxKSENhK3E4WTN0WFh4MzBqY3ozSlJUSFBZdWhF?= =?utf-8?B?M0NoLzFuWDRGc1VXczhhRDMzQi85K25yc0hscHhpZHJjaTlxWjdZL2FteWlX?= =?utf-8?B?ejZid3NRbkZobmFsUmJSdlJyWHUzdDFIb1hRTDY3SGZnSVVyVThUeWV4VGRI?= =?utf-8?B?OGk4Rmc5bHkraU9ERVVKSjZrMUptVm43U0I2Qld3OFNPR1FqeG1rNnhiby95?= =?utf-8?B?Ni9VRWlRaHVHV0ZoWFI0WXVmaTlMOE96UUZrVE05cHRab3BVWW9ZcWZNeFhN?= =?utf-8?B?UUNyRk5kRHJqbFQ2eTc2blFONUMwSDB0Sk53ZnJ2VkVJTFA4TktuRS9VZnhu?= =?utf-8?B?djIvU2hjZ0U1RENIOUJtRy9DOWozSDBzbDc1TFRnNkd1K0FnWkhSMnBIWmhu?= =?utf-8?B?eWtVUVNwWHRkUkRGbnFqVlplQnBLRlpNTHpZZU1YTFppVFpNb2hGa3YyUG42?= =?utf-8?B?SzVVWmR1VE5XZDVhQU1iTTl0bG5WTkw3RENBeWVuTklXRk4zcWxMZi9RaDB1?= =?utf-8?B?WHNnRnlBREZXZ1JaRTEveTRBSlQ2REhZalRQb21GeExkczFNTGZBSGhNbmNv?= =?utf-8?B?OWQrdlJMZjhSTWJCQkF5aWRnS2cwemp0eDZOQ0RZek5ENU5GRGpxWEpJSkhB?= =?utf-8?B?VG9kS3pWRUtRL2Vpa1NoVXZSZVFEc0ovZXp2UmFURVYrVjlybXdLbzcvcW1F?= =?utf-8?B?RU9yejQ3Q0l1NzF4bzM5eGdYc0hQZXhlb2txSDRLV0ZCV0o5N21rU1p5Zzdh?= =?utf-8?B?Snl0S1JRbFYyVlFVV3FNY2h6S1JpWUdrTDNiZS9CdFMzR1Z3QUJ2VE44QVNG?= =?utf-8?B?VUg5RmwzVHU5dVJQR2IxSXhpSGMrSHFmWFIwRm9GYnZuVFZYSEM1YW1IbnJD?= =?utf-8?B?alJSMXljdncrZDJRek9UQms3MFUvUnRjOXlKUW5RWkdPOThpcWpoQloyRmNN?= =?utf-8?B?SVFhRzNmaXFDeTllaGMzNUFtSGhFZ0RRWjZxUEdkdy9nWTEycWdpNHBGazNy?= =?utf-8?B?RGVVbVpKVktmWSt3L3JGNGxNbW9RVk9NaVlZZlRTZCs0dDF3Sm91U1RCUjlm?= =?utf-8?B?WmhubVVPdHhmdHZxMENhN0xxRHlyMUh0S2RWVDRGM0hkVkJReGdSQ1dyR0dP?= =?utf-8?B?U2Z6bitoaVNDN3F4NldWalI5d2VaUWxVLytNcFpCNVdaenRwRW9taFE4Ykg4?= =?utf-8?B?Wkp6QkM4Y1dBWG50akxoOHRsenNHSXBXdDhZN2NSYnlZUVQ2bzZuM2ZuMEdI?= =?utf-8?B?dTNBektremZjbmVOY1hTZklGWkh2RjhWYlpFZUFBRXljK0l5OUlaQzM3K2JR?= =?utf-8?B?aWZFMm1kMERjU0RxS3RUNmJMMHVSMkIrMEdFY0VZNFRpZnNSSThlZzFiV0xC?= =?utf-8?B?VGhMWUd6TFoxSHowOUY0R0tCTUtud051T21xZG5HcE91RFdSZzZETjVlTGxp?= =?utf-8?B?UHFWcHphclJUblJNTFpUSjZIOTlhTk5IZXB5N3gwRnJuWmdCZzdmTlBxT0sx?= =?utf-8?Q?fQy4H66xDUYWdKRjyMpOOjwzjZK3uo+y1Xtq4sO?= 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: 6656fc3f-ee23-4e02-c99b-08d97e64b3f7 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2021 07:35:22.9536 (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: bMLSpPYvZcdt54BL9db3iHRZ0fV2MXYmziKUlvTCKSLw7uOt0K0mnQuz496Ti1HMpefshA0Pm3yTzGIsmmoy5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3933 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v2 1/5] net/virtio: add initial RSS support 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+IFNlbnQ6IFdlZG5lc2Rh eSwgU2VwdGVtYmVyIDIyLCAyMDIxIDU6NTggUE0NCj4gVG86IGRldkBkcGRrLm9yZzsgWGlhLCBD aGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgYW1vcmVub3pAcmVkaGF0LmNvbTsNCj4gZGF2 aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsgYW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU7IFlp Z2l0LCBGZXJydWgNCj4gPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBtaWNoYWVsYmFAbnZpZGlh LmNvbTsgdmlhY2hlc2xhdm9AbnZpZGlhLmNvbTsgTGksDQo+IFhpYW95dW4gPHhpYW95dW4ubGlA aW50ZWwuY29tPg0KPiBDYzogc3RhYmxlQGRwZGsub3JnOyBuZWxpby5sYXJhbmplaXJvQDZ3aW5k LmNvbTsgeXZ1Z2VuZmlAcmVkaGF0LmNvbTsNCj4geWJlbmRpdG9AcmVkaGF0LmNvbTsgTWF4aW1l IENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogW1BBVENI IHYyIDEvNV0gbmV0L3ZpcnRpbzogYWRkIGluaXRpYWwgUlNTIHN1cHBvcnQNCj4gDQo+IFByb3Zp ZGUgdGhlIGNhcGFiaWxpdHkgdG8gdXBkYXRlIHRoZSBoYXNoIGtleSwgaGFzaCB0eXBlcw0KPiBh bmQgUkVUQSB0YWJsZSBvbiB0aGUgZmx5ICh3aXRob3V0IG5lZWRpbmcgdG8gc3RvcC9zdGFydA0K PiB0aGUgZGV2aWNlKS4gSG93ZXZlciwgdGhlIGtleSBsZW5ndGggYW5kIHRoZSBudW1iZXIgb2Yg UkVUQQ0KPiBlbnRyaWVzIGFyZSBmaXhlZCB0byA0MEIgYW5kIDEyOCBlbnRyaWVzIHJlc3BlY3Rp dmVseS4gVGhpcw0KPiBpcyBkb25lIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoZSBkZXNpZ24sIGJ1 dCBtYXkgYmUNCj4gcmV2aXNpdGVkIGxhdGVyIGFzIHRoZSBWaXJ0aW8gc3BlYyBwcm92aWRlcyB0 aGlzDQo+IGZsZXhpYmlsaXR5Lg0KPiANCj4gTm90ZSB0aGF0IG9ubHkgVklSVElPX05FVF9GX1JT UyBzdXBwb3J0IGlzIGltcGxlbWVudGVkLA0KPiBWSVJUSU9fTkVUX0ZfSEFTSF9SRVBPUlQsIHdo aWNoIHdvdWxkIGVuYWJsZSByZXBvcnRpbmcgdGhlDQo+IHBhY2tldCBSU1MgaGFzaCBjYWxjdWxh dGVkIGJ5IHRoZSBkZXZpY2UgaW50byBtYnVmLnJzcywgaXMNCj4gbm90IHlldCBzdXBwb3J0ZWQu DQo+IA0KPiBSZWdhcmRpbmcgdGhlIGRlZmF1bHQgUlNTIGNvbmZpZ3VyYXRpb24sIGl0IGhhcyBi ZWVuDQo+IGNob3NlbiB0byB1c2UgdGhlIGRlZmF1bHQgSW50ZWwgaXhnYmUga2V5IGFzIGRlZmF1 bHQga2V5LA0KPiBhbmQgZGVmYXVsdCBSRVRBIGlzIGEgc2ltcGxlIG1vZHVsbyBiZXR3ZWVuIHRo ZSBoYXNoIGFuZA0KPiB0aGUgbnVtYmVyIG9mIFJ4IHF1ZXVlcy4NCj4gDQo+IFNpZ25lZC1vZmYt Ynk6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IC0tLQ0K PiAgZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL3ZpcnRpby5pbmkgICAgfCAgIDMgKw0KPiAgZG9j L2d1aWRlcy9uaWNzL3ZpcnRpby5yc3QgICAgICAgICAgICAgfCAgIDMgKw0KPiAgZG9jL2d1aWRl cy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8xMS5yc3QgfCAgIDYgKw0KPiAgZHJpdmVycy9uZXQvdmly dGlvL3ZpcnRpby5oICAgICAgICAgICAgfCAgMzEgKystDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8v dmlydGlvX2V0aGRldi5jICAgICB8IDM2NyArKysrKysrKysrKysrKysrKysrKysrKystDQo+ICBk cml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5oICAgICB8ICAgMyArLQ0KPiAgZHJpdmVy cy9uZXQvdmlydGlvL3ZpcnRxdWV1ZS5oICAgICAgICAgfCAgMjEgKysNCj4gIDcgZmlsZXMgY2hh bmdlZCwgNDI4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL3ZpcnRpby5pbmkNCj4gYi9kb2MvZ3VpZGVzL25p Y3MvZmVhdHVyZXMvdmlydGlvLmluaQ0KPiBpbmRleCA0OGY2ZjM5M2IxLi5hNWVhYjQ5MzJmIDEw MDY0NA0KPiAtLS0gYS9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvdmlydGlvLmluaQ0KPiArKysg Yi9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvdmlydGlvLmluaQ0KPiBAQCAtMTQsNiArMTQsOSBA QCBQcm9taXNjdW91cyBtb2RlICAgICA9IFkNCj4gIEFsbG11bHRpY2FzdCBtb2RlICAgID0gWQ0K PiAgVW5pY2FzdCBNQUMgZmlsdGVyICAgPSBZDQo+ICBNdWx0aWNhc3QgTUFDIGZpbHRlciA9IFkN Cj4gK1JTUyBoYXNoICAgICAgICAgICAgID0gUA0KPiArUlNTIGtleSB1cGRhdGUgICAgICAgPSBZ DQo+ICtSU1MgcmV0YSB1cGRhdGUgICAgICA9IFkNCj4gIFZMQU4gZmlsdGVyICAgICAgICAgID0g WQ0KPiAgQmFzaWMgc3RhdHMgICAgICAgICAgPSBZDQo+ICBTdGF0cyBwZXIgcXVldWUgICAgICA9 IFkNCj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvbmljcy92aXJ0aW8ucnN0IGIvZG9jL2d1aWRl cy9uaWNzL3ZpcnRpby5yc3QNCj4gaW5kZXggODJjZTczOTljZS4uOThlMGQwMTJiNyAxMDA2NDQN Cj4gLS0tIGEvZG9jL2d1aWRlcy9uaWNzL3ZpcnRpby5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9u aWNzL3ZpcnRpby5yc3QNCj4gQEAgLTczLDYgKzczLDkgQEAgSW4gdGhpcyByZWxlYXNlLCB0aGUg dmlydGlvIFBNRCBkcml2ZXIgcHJvdmlkZXMgdGhlIGJhc2ljDQo+IGZ1bmN0aW9uYWxpdHkgb2Yg cGFja2UNCj4gDQo+ICAqICAgVmlydGlvIHN1cHBvcnRzIHVzaW5nIHBvcnQgSU8gdG8gZ2V0IFBD SSByZXNvdXJjZSB3aGVuIFVJTyBtb2R1bGUgaXMgbm90DQo+IGF2YWlsYWJsZS4NCj4gDQo+ICsq ICAgVmlydGlvIHN1cHBvcnRzIFJTUyBSeCBtb2RlIHdpdGggNDBCIGNvbmZpZ3VyYWJsZSBoYXNo IGtleSBsZW5ndGgsIDEyOA0KPiArICAgIGNvbmZpZ3VyYWJsZSBSRVRBIGVudHJpZXMgYW5kIGNv bmZpZ3VyYWJsZSBoYXNoIHR5cGVzLg0KPiArDQo+ICBQcmVyZXF1aXNpdGVzDQo+ICAtLS0tLS0t LS0tLS0tDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y MV8xMS5yc3QNCj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdA0KPiBp bmRleCBmNWQxNjk5M2RiLi4yZjlkODE5MjZiIDEwMDY0NA0KPiAtLS0gYS9kb2MvZ3VpZGVzL3Jl bF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdA0KPiArKysgYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzIxXzExLnJzdA0KPiBAQCAtOTYsNiArOTYsMTIgQEAgTmV3IEZlYXR1cmVzDQo+ICAg IEFkZGVkIGNvbW1hbmQtbGluZSBvcHRpb25zIHRvIHNwZWNpZnkgdG90YWwgbnVtYmVyIG9mIHBy b2Nlc3NlcyBhbmQNCj4gICAgY3VycmVudCBwcm9jZXNzIElELiBFYWNoIHByb2Nlc3Mgb3ducyBz dWJzZXQgb2YgUnggYW5kIFR4IHF1ZXVlcy4NCj4gDQo+ICsqICoqQWRkZWQgaW5pdGlhbCBSU1Mg c3VwcG9ydCB0byBWaXJ0aW8gUE1ELioqDQo+ICsNCj4gKyAgSW5pdGlhbCBzdXBwb3J0IGZvciBS U1MgcmVjZWl2ZSBtb2RlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBWaXJ0aW8gUE1ELA0KPiArICB3 aXRoIHRoZSBjYXBhYmlsaXR5IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY29uZmlndXJlIHRoZSBo YXNoIGtleSwgdGhlDQo+ICsgIFJFVEEgYW5kIHRoZSBoYXNoIHR5cGVzLiBWaXJ0aW8gaGFzaCBy ZXBvcnRpbmcgaXMgeWV0IHRvIGJlIGFkZGVkLg0KPiArDQo+IA0KPiAgUmVtb3ZlZCBJdGVtcw0K PiAgLS0tLS0tLS0tLS0tLQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRp by5oIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpby5oDQo+IGluZGV4IDUyNWUyZGFkNGMuLmI0 ZjIxZGMwYzcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW8uaA0KPiAr KysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvLmgNCj4gQEAgLTMwLDYgKzMwLDcgQEANCj4g ICNkZWZpbmUgVklSVElPX05FVF9GX0dVRVNUX0FOTk9VTkNFIDIxCS8qIEd1ZXN0IGNhbiBhbm5v dW5jZSBkZXZpY2Ugb24gdGhlDQo+IG5ldHdvcmsgKi8NCj4gICNkZWZpbmUgVklSVElPX05FVF9G X01RCQkyMgkvKiBEZXZpY2Ugc3VwcG9ydHMgUmVjZWl2ZSBGbG93DQo+IFN0ZWVyaW5nICovDQo+ ICAjZGVmaW5lIFZJUlRJT19ORVRfRl9DVFJMX01BQ19BRERSIDIzCS8qIFNldCBNQUMgYWRkcmVz cyAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0ZfUlNTCTYwCS8qIFJTUyBzdXBwb3J0ZWQgKi8N Cj4gDQo+ICAvKg0KPiAgICogRG8gd2UgZ2V0IGNhbGxiYWNrcyB3aGVuIHRoZSByaW5nIGlzIGNv bXBsZXRlbHkgdXNlZCwNCj4gQEAgLTEwMCw2ICsxMDEsMjkgQEANCj4gICAqLw0KPiAgI2RlZmlu ZSBWSVJUSU9fTUFYX0lORElSRUNUICgoaW50KShydGVfbWVtX3BhZ2Vfc2l6ZSgpIC8gMTYpKQ0K PiANCj4gKy8qICBWaXJ0aW8gUlNTIGhhc2ggdHlwZXMgKi8NCj4gKyNkZWZpbmUgVklSVElPX05F VF9IQVNIX1RZUEVfSVBWNAkoMSA8PCAwKQ0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0hBU0hfVFlQ RV9UQ1BWNAkoMSA8PCAxKQ0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0hBU0hfVFlQRV9VRFBWNAko MSA8PCAyKQ0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0hBU0hfVFlQRV9JUFY2CSgxIDw8IDMpDQo+ ICsjZGVmaW5lIFZJUlRJT19ORVRfSEFTSF9UWVBFX1RDUFY2CSgxIDw8IDQpDQo+ICsjZGVmaW5l IFZJUlRJT19ORVRfSEFTSF9UWVBFX1VEUFY2CSgxIDw8IDUpDQoNClNwZWMgdXNlcyAndicgaW5z dGVhZCBvZiAnVicgZm9yIG1hY3JvIGRlZmluaXRpb24uDQpCZXR0ZXIgdG8gYWxpZ24gaXQ/DQoN Cj4gKyNkZWZpbmUgVklSVElPX05FVF9IQVNIX1RZUEVfSVBfRVgJKDEgPDwgNikNCj4gKyNkZWZp bmUgVklSVElPX05FVF9IQVNIX1RZUEVfVENQX0VYCSgxIDw8IDcpDQo+ICsjZGVmaW5lIFZJUlRJ T19ORVRfSEFTSF9UWVBFX1VEUF9FWAkoMSA8PCA4KQ0KPiArDQo+ICsjZGVmaW5lIFZJUlRJT19O RVRfSEFTSF9UWVBFX01BU0sgKCBcDQo+ICsJVklSVElPX05FVF9IQVNIX1RZUEVfSVBWNCB8IFwN Cj4gKwlWSVJUSU9fTkVUX0hBU0hfVFlQRV9UQ1BWNCB8IFwNCj4gKwlWSVJUSU9fTkVUX0hBU0hf VFlQRV9VRFBWNCB8IFwNCj4gKwlWSVJUSU9fTkVUX0hBU0hfVFlQRV9JUFY2IHwgXA0KPiArCVZJ UlRJT19ORVRfSEFTSF9UWVBFX1RDUFY2IHwgXA0KPiArCVZJUlRJT19ORVRfSEFTSF9UWVBFX1VE UFY2IHwgXA0KPiArCVZJUlRJT19ORVRfSEFTSF9UWVBFX0lQX0VYIHwgXA0KPiArCVZJUlRJT19O RVRfSEFTSF9UWVBFX1RDUF9FWCB8IFwNCj4gKwlWSVJUSU9fTkVUX0hBU0hfVFlQRV9VRFBfRVgp DQo+ICsNCj4gKw0KPiAgLyoNCj4gICAqIE1heGltdW0gbnVtYmVyIG9mIHZpcnRxdWV1ZXMgcGVy IGRldmljZS4NCj4gICAqLw0KPiBAQCAtMTU3LDcgKzE4MSw5IEBAIHN0cnVjdCB2aXJ0aW9fbmV0 X2NvbmZpZyB7DQo+ICAJICogQW55IG90aGVyIHZhbHVlIHN0YW5kcyBmb3IgdW5rbm93bi4NCj4g IAkgKi8NCj4gIAl1aW50OF90IGR1cGxleDsNCj4gLQ0KPiArCXVpbnQ4X3QgcnNzX21heF9rZXlf c2l6ZTsNCj4gKwl1aW50MTZfdCByc3NfbWF4X2luZGlyZWN0aW9uX3RhYmxlX2xlbmd0aDsNCj4g Kwl1aW50MzJfdCBzdXBwb3J0ZWRfaGFzaF90eXBlczsNCj4gIH0gX19ydGVfcGFja2VkOw0KPiAN Cj4gIHN0cnVjdCB2aXJ0aW9faHcgew0KPiBAQCAtMTkwLDYgKzIxNiw5IEBAIHN0cnVjdCB2aXJ0 aW9faHcgew0KPiAgCXJ0ZV9zcGlubG9ja190IHN0YXRlX2xvY2s7DQo+ICAJc3RydWN0IHJ0ZV9t YnVmICoqaW5qZWN0X3BrdHM7DQo+ICAJdWludDE2X3QgbWF4X3F1ZXVlX3BhaXJzOw0KPiArCXVp bnQzMl90IHJzc19oYXNoX3R5cGVzOw0KPiArCXVpbnQxNl90ICpyc3NfcmV0YTsNCj4gKwl1aW50 OF90ICpyc3Nfa2V5Ow0KPiAgCXVpbnQ2NF90IHJlcV9ndWVzdF9mZWF0dXJlczsNCj4gIAlzdHJ1 Y3QgdmlydG5ldF9jdGwgKmN2cTsNCj4gIH07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92 aXJ0aW8vdmlydGlvX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhk ZXYuYw0KPiBpbmRleCBkYTE2MzNkNzdlLi4xMGE5ZjcwOGViIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fZXRoZGV2LmMNCj4gQEAgLTUxLDYgKzUxLDE2IEBAIHN0YXRpYyBpbnQgdmlydGlv X2Rldl9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gIHN0YXRpYyBpbnQgdmly dGlvX2Rldl9saW5rX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gIAlpbnQgd2Fp dF90b19jb21wbGV0ZSk7DQo+ICBzdGF0aWMgaW50IHZpcnRpb19kZXZfdmxhbl9vZmZsb2FkX3Nl dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IG1hc2spOw0KPiArc3RhdGljIGludCB2aXJ0 aW9fZGV2X3Jzc19oYXNoX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gKwkJc3Ry dWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsNCj4gK3N0YXRpYyBpbnQgdmlydGlvX2Rl dl9yc3NfaGFzaF9jb25mX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gKwkJc3RydWN0 IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsNCj4gK3N0YXRpYyBpbnQgdmlydGlvX2Rldl9y c3NfcmV0YV91cGRhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICsJCQkgc3RydWN0IHJ0 ZV9ldGhfcnNzX3JldGFfZW50cnk2NCAqcmV0YV9jb25mLA0KPiArCQkJIHVpbnQxNl90IHJldGFf c2l6ZSk7DQo+ICtzdGF0aWMgaW50IHZpcnRpb19kZXZfcnNzX3JldGFfcXVlcnkoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsDQo+ICsJCQkgc3RydWN0IHJ0ZV9ldGhfcnNzX3JldGFfZW50cnk2NCAq cmV0YV9jb25mLA0KPiArCQkJIHVpbnQxNl90IHJldGFfc2l6ZSk7DQo+IA0KPiAgc3RhdGljIHZv aWQgdmlydGlvX3NldF9od2FkZHIoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiAgc3RhdGljIHZv aWQgdmlydGlvX2dldF9od2FkZHIoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiBAQCAtMzQ3LDcg KzM1NywzOCBAQCB2aXJ0aW9fc2VuZF9jb21tYW5kKHN0cnVjdCB2aXJ0bmV0X2N0bCAqY3ZxLCBz dHJ1Y3QNCj4gdmlydGlvX3BtZF9jdHJsICpjdHJsLA0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQN Cj4gLXZpcnRpb19zZXRfbXVsdGlwbGVfcXVldWVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1 aW50MTZfdCBuYl9xdWV1ZXMpDQo+ICt2aXJ0aW9fc2V0X211bHRpcGxlX3F1ZXVlc19yc3Moc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG5iX3F1ZXVlcykNCj4gK3sNCj4gKwlzdHJ1 Y3QgdmlydGlvX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IHZp cnRpb19wbWRfY3RybCBjdHJsOw0KPiArCXN0cnVjdCB2aXJ0aW9fbmV0X2N0cmxfcnNzIHJzczsN Cj4gKwlpbnQgZGxlblsxXSwgcmV0Ow0KDQpEbyB3ZSByZWFsbHkgbmVlZCAnaW50IGRsZW5bMV0n IHJhdGhlciB0aGFuICdpbnQgZGxlbic/DQoNCj4gKw0KPiArCXJzcy5oYXNoX3R5cGVzID0gaHct PnJzc19oYXNoX3R5cGVzICYgVklSVElPX05FVF9IQVNIX1RZUEVfTUFTSzsNCj4gKwlyc3MuaW5k aXJlY3Rpb25fdGFibGVfbWFzayA9IFZJUlRJT19ORVRfUlNTX1JFVEFfU0laRSAtIDE7DQo+ICsJ cnNzLnVuY2xhc3NpZmllZF9xdWV1ZSA9IDA7DQo+ICsJbWVtY3B5KHJzcy5pbmRpcmVjdGlvbl90 YWJsZSwgaHctPnJzc19yZXRhLCBWSVJUSU9fTkVUX1JTU19SRVRBX1NJWkUgKg0KPiBzaXplb2Yo dWludDE2X3QpKTsNCj4gKwlyc3MubWF4X3R4X3ZxID0gbmJfcXVldWVzOw0KPiArCXJzcy5oYXNo X2tleV9sZW5ndGggPSBWSVJUSU9fTkVUX1JTU19LRVlfU0laRTsNCj4gKwltZW1jcHkocnNzLmhh c2hfa2V5X2RhdGEsIGh3LT5yc3Nfa2V5LCBWSVJUSU9fTkVUX1JTU19LRVlfU0laRSk7DQo+ICsN Cj4gKwljdHJsLmhkci5jbGFzcyA9IFZJUlRJT19ORVRfQ1RSTF9NUTsNCj4gKwljdHJsLmhkci5j bWQgPSBWSVJUSU9fTkVUX0NUUkxfTVFfUlNTX0NPTkZJRzsNCj4gKwltZW1jcHkoY3RybC5kYXRh LCAmcnNzLCBzaXplb2YocnNzKSk7DQo+ICsNCj4gKwlkbGVuWzBdID0gc2l6ZW9mKHJzcyk7DQo+ ICsNCj4gKwlyZXQgPSB2aXJ0aW9fc2VuZF9jb21tYW5kKGh3LT5jdnEsICZjdHJsLCBkbGVuLCAx KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICJSU1MgbXVsdGlxdWV1 ZSBjb25maWd1cmVkIGJ1dCBzZW5kIGNvbW1hbmQNCj4gZmFpbGVkIik7DQo+ICsJCXJldHVybiAt RUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50DQo+ICt2aXJ0aW9fc2V0X211bHRpcGxlX3F1ZXVlc19hdXRvKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCB1aW50MTZfdCBuYl9xdWV1ZXMpDQo+ICB7DQo+ICAJc3RydWN0IHZpcnRpb19odyAq aHcgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiAgCXN0cnVjdCB2aXJ0aW9fcG1kX2N0cmwg Y3RybDsNCj4gQEAgLTM3MCw2ICs0MTEsMTcgQEAgdmlydGlvX3NldF9tdWx0aXBsZV9xdWV1ZXMo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHVpbnQxNl90IG5iX3F1ZXVlcykNCj4gIAlyZXR1 cm4gMDsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgaW50DQo+ICt2aXJ0aW9fc2V0X211bHRpcGxlX3F1 ZXVlcyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgbmJfcXVldWVzKQ0KPiArew0K PiArCXN0cnVjdCB2aXJ0aW9faHcgKmh3ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKw0K PiArCWlmICh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfUlNTKSkNCj4gKwkJ cmV0dXJuIHZpcnRpb19zZXRfbXVsdGlwbGVfcXVldWVzX3JzcyhkZXYsIG5iX3F1ZXVlcyk7DQo+ ICsJZWxzZQ0KPiArCQlyZXR1cm4gdmlydGlvX3NldF9tdWx0aXBsZV9xdWV1ZXNfYXV0byhkZXYs IG5iX3F1ZXVlcyk7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkDQo+ICB2aXJ0aW9fZGV2X3F1 ZXVlX3JlbGVhc2Uodm9pZCAqcXVldWUgX19ydGVfdW51c2VkKQ0KPiAgew0KPiBAQCAtNzAxLDYg Kzc1MywxNiBAQCB2aXJ0aW9fYWxsb2NfcXVldWVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0K PiANCj4gIHN0YXRpYyB2b2lkIHZpcnRpb19xdWV1ZXNfdW5iaW5kX2ludHIoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYpOw0KPiANCj4gK3N0YXRpYyB2b2lkDQo+ICt2aXJ0aW9fZnJlZV9yc3Moc3Ry dWN0IHZpcnRpb19odyAqaHcpDQo+ICt7DQo+ICsJcnRlX2ZyZWUoaHctPnJzc19rZXkpOw0KPiAr CWh3LT5yc3Nfa2V5ID0gTlVMTDsNCj4gKw0KPiArCXJ0ZV9mcmVlKGh3LT5yc3NfcmV0YSk7DQo+ ICsJaHctPnJzc19yZXRhID0gTlVMTDsNCj4gK30NCj4gKw0KPiAgaW50DQo+ICB2aXJ0aW9fZGV2 X2Nsb3NlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgew0KPiBAQCAtNzMxLDYgKzc5Myw3 IEBAIHZpcnRpb19kZXZfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAJdmlydGlv X3Jlc2V0KGh3KTsNCj4gIAl2aXJ0aW9fZGV2X2ZyZWVfbWJ1ZnMoZGV2KTsNCj4gIAl2aXJ0aW9f ZnJlZV9xdWV1ZXMoaHcpOw0KPiArCXZpcnRpb19mcmVlX3Jzcyhodyk7DQo+IA0KPiAgCXJldHVy biBWSVJUSU9fT1BTKGh3KS0+ZGV2X2Nsb3NlKGh3KTsNCj4gIH0NCj4gQEAgLTk3MSw2ICsxMDM0 LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgdmlydGlvX2V0aF9kZXZfb3Bz ID0gew0KPiAgCS5yeF9xdWV1ZV9yZWxlYXNlICAgICAgICA9IHZpcnRpb19kZXZfcXVldWVfcmVs ZWFzZSwNCj4gIAkudHhfcXVldWVfc2V0dXAgICAgICAgICAgPSB2aXJ0aW9fZGV2X3R4X3F1ZXVl X3NldHVwLA0KPiAgCS50eF9xdWV1ZV9yZWxlYXNlICAgICAgICA9IHZpcnRpb19kZXZfcXVldWVf cmVsZWFzZSwNCj4gKwkucnNzX2hhc2hfdXBkYXRlICAgICAgICAgPSB2aXJ0aW9fZGV2X3Jzc19o YXNoX3VwZGF0ZSwNCj4gKwkucnNzX2hhc2hfY29uZl9nZXQgICAgICAgPSB2aXJ0aW9fZGV2X3Jz c19oYXNoX2NvbmZfZ2V0LA0KPiArCS5yZXRhX3VwZGF0ZSAgICAgICAgICAgICA9IHZpcnRpb19k ZXZfcnNzX3JldGFfdXBkYXRlLA0KPiArCS5yZXRhX3F1ZXJ5ICAgICAgICAgICAgICA9IHZpcnRp b19kZXZfcnNzX3JldGFfcXVlcnksDQo+ICAJLyogY29sbGVjdCBzdGF0cyBwZXIgcXVldWUgKi8N Cj4gIAkucXVldWVfc3RhdHNfbWFwcGluZ19zZXQgPSB2aXJ0aW9fZGV2X3F1ZXVlX3N0YXRzX21h cHBpbmdfc2V0LA0KPiAgCS52bGFuX2ZpbHRlcl9zZXQgICAgICAgICA9IHZpcnRpb192bGFuX2Zp bHRlcl9zZXQsDQo+IEBAIC0xNzE0LDYgKzE3ODEsMjcwIEBAIHZpcnRpb19jb25maWd1cmVfaW50 cihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICsN Cj4gK3N0YXRpYyB1aW50NjRfdA0KPiArdmlydGlvX3RvX2V0aGRldl9yc3Nfb2ZmbG9hZHModWlu dDY0X3QgdmlydGlvX2hhc2hfdHlwZXMpDQo+ICt7DQo+ICsJdWludDY0X3QgcnNzX29mZmxvYWRz ID0gMDsNCj4gKw0KPiArCWlmICh2aXJ0aW9faGFzaF90eXBlcyAmIFZJUlRJT19ORVRfSEFTSF9U WVBFX0lQVjQpDQo+ICsJCXJzc19vZmZsb2FkcyB8PSBFVEhfUlNTX0lQVjQgfCBFVEhfUlNTX0ZS QUdfSVBWNCB8DQo+IEVUSF9SU1NfTk9ORlJBR19JUFY0X09USEVSOw0KPiArDQo+ICsJaWYgKHZp cnRpb19oYXNoX3R5cGVzICYgVklSVElPX05FVF9IQVNIX1RZUEVfVENQVjQpDQo+ICsJCXJzc19v ZmZsb2FkcyB8PSBFVEhfUlNTX05PTkZSQUdfSVBWNF9UQ1A7DQo+ICsNCj4gKwlpZiAodmlydGlv X2hhc2hfdHlwZXMgJiBWSVJUSU9fTkVUX0hBU0hfVFlQRV9VRFBWNCkNCj4gKwkJcnNzX29mZmxv YWRzIHw9IEVUSF9SU1NfTk9ORlJBR19JUFY0X1VEUDsNCj4gKw0KPiArCWlmICh2aXJ0aW9faGFz aF90eXBlcyAmIFZJUlRJT19ORVRfSEFTSF9UWVBFX0lQVjYpDQo+ICsJCXJzc19vZmZsb2FkcyB8 PSBFVEhfUlNTX0lQVjYgfCBFVEhfUlNTX0ZSQUdfSVBWNiB8DQo+IEVUSF9SU1NfTk9ORlJBR19J UFY2X09USEVSOw0KPiArDQo+ICsJaWYgKHZpcnRpb19oYXNoX3R5cGVzICYgVklSVElPX05FVF9I QVNIX1RZUEVfVENQVjYpDQo+ICsJCXJzc19vZmZsb2FkcyB8PSBFVEhfUlNTX05PTkZSQUdfSVBW Nl9UQ1A7DQo+ICsNCj4gKwlpZiAodmlydGlvX2hhc2hfdHlwZXMgJiBWSVJUSU9fTkVUX0hBU0hf VFlQRV9VRFBWNikNCj4gKwkJcnNzX29mZmxvYWRzIHw9IEVUSF9SU1NfTk9ORlJBR19JUFY2X1VE UDsNCj4gKw0KPiArCWlmICh2aXJ0aW9faGFzaF90eXBlcyAmIFZJUlRJT19ORVRfSEFTSF9UWVBF X0lQX0VYKQ0KPiArCQlyc3Nfb2ZmbG9hZHMgfD0gRVRIX1JTU19JUFY2X0VYOw0KPiArDQo+ICsJ aWYgKHZpcnRpb19oYXNoX3R5cGVzICYgVklSVElPX05FVF9IQVNIX1RZUEVfVENQX0VYKQ0KPiAr CQlyc3Nfb2ZmbG9hZHMgfD0gRVRIX1JTU19JUFY2X1RDUF9FWDsNCj4gKw0KPiArCWlmICh2aXJ0 aW9faGFzaF90eXBlcyAmIFZJUlRJT19ORVRfSEFTSF9UWVBFX1VEUF9FWCkNCj4gKwkJcnNzX29m ZmxvYWRzIHw9IEVUSF9SU1NfSVBWNl9VRFBfRVg7DQo+ICsNCj4gKwlyZXR1cm4gcnNzX29mZmxv YWRzOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICt2aXJ0aW9fZGV2X2dldF9yc3NfY29u ZmlnKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCB1aW50MzJfdCAqcnNzX2hhc2hfdHlwZXMpDQo+ICt7 DQo+ICsJc3RydWN0IHZpcnRpb19uZXRfY29uZmlnIGxvY2FsX2NvbmZpZzsNCj4gKwlzdHJ1Y3Qg dmlydGlvX25ldF9jb25maWcgKmNvbmZpZyA9ICZsb2NhbF9jb25maWc7DQo+ICsNCj4gKwl2aXJ0 aW9fcmVhZF9kZXZfY29uZmlnKGh3LA0KPiArCQkJb2Zmc2V0b2Yoc3RydWN0IHZpcnRpb19uZXRf Y29uZmlnLCByc3NfbWF4X2tleV9zaXplKSwNCj4gKwkJCSZjb25maWctPnJzc19tYXhfa2V5X3Np emUsDQo+ICsJCQlzaXplb2YoY29uZmlnLT5yc3NfbWF4X2tleV9zaXplKSk7DQo+ICsJaWYgKGNv bmZpZy0+cnNzX21heF9rZXlfc2l6ZSA8IFZJUlRJT19ORVRfUlNTX0tFWV9TSVpFKSB7DQo+ICsJ CVBNRF9JTklUX0xPRyhFUlIsICJJbnZhbGlkIGRldmljZSBSU1MgbWF4IGtleSBzaXplICgldSki LA0KPiArCQkJCWNvbmZpZy0+cnNzX21heF9rZXlfc2l6ZSk7DQo+ICsJCXJldHVybiAtMTsNCj4g Kwl9DQo+ICsNCj4gKwl2aXJ0aW9fcmVhZF9kZXZfY29uZmlnKGh3LA0KPiArCQkJb2Zmc2V0b2Yo c3RydWN0IHZpcnRpb19uZXRfY29uZmlnLA0KPiArCQkJCXJzc19tYXhfaW5kaXJlY3Rpb25fdGFi bGVfbGVuZ3RoKSwNCj4gKwkJCSZjb25maWctPnJzc19tYXhfaW5kaXJlY3Rpb25fdGFibGVfbGVu Z3RoLA0KPiArCQkJc2l6ZW9mKGNvbmZpZy0+cnNzX21heF9pbmRpcmVjdGlvbl90YWJsZV9sZW5n dGgpKTsNCj4gKwlpZiAoY29uZmlnLT5yc3NfbWF4X2luZGlyZWN0aW9uX3RhYmxlX2xlbmd0aCA8 IFZJUlRJT19ORVRfUlNTX1JFVEFfU0laRSkNCj4gew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAi SW52YWxpZCBkZXZpY2UgUlNTIG1heCByZXRhIHNpemUgKCV1KSIsDQo+ICsJCQkJY29uZmlnLT5y c3NfbWF4X2luZGlyZWN0aW9uX3RhYmxlX2xlbmd0aCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9 DQo+ICsNCj4gKwl2aXJ0aW9fcmVhZF9kZXZfY29uZmlnKGh3LA0KPiArCQkJb2Zmc2V0b2Yoc3Ry dWN0IHZpcnRpb19uZXRfY29uZmlnLCBzdXBwb3J0ZWRfaGFzaF90eXBlcyksDQo+ICsJCQkmY29u ZmlnLT5zdXBwb3J0ZWRfaGFzaF90eXBlcywNCj4gKwkJCXNpemVvZihjb25maWctPnN1cHBvcnRl ZF9oYXNoX3R5cGVzKSk7DQo+ICsJaWYgKChjb25maWctPnN1cHBvcnRlZF9oYXNoX3R5cGVzICYg VklSVElPX05FVF9IQVNIX1RZUEVfTUFTSykgPT0gMCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJS LCAiSW52YWxpZCBkZXZpY2UgUlNTIGhhc2ggdHlwZXMgKCV1KSIsDQo+ICsJCQkJY29uZmlnLT5z dXBwb3J0ZWRfaGFzaF90eXBlcyk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwkq cnNzX2hhc2hfdHlwZXMgPSBjb25maWctPnN1cHBvcnRlZF9oYXNoX3R5cGVzICYNCj4gVklSVElP X05FVF9IQVNIX1RZUEVfTUFTSzsNCj4gKw0KPiArCVBNRF9JTklUX0xPRyhERUJVRywgIkRldmlj ZSBSU1MgY29uZmlnOiIpOw0KPiArCVBNRF9JTklUX0xPRyhERUJVRywgIlx0LU1heCBrZXkgc2l6 ZTogJXUiLCBjb25maWctPnJzc19tYXhfa2V5X3NpemUpOw0KPiArCVBNRF9JTklUX0xPRyhERUJV RywgIlx0LU1heCByZXRhIHNpemU6ICV1IiwgY29uZmlnLQ0KPiA+cnNzX21heF9pbmRpcmVjdGlv bl90YWJsZV9sZW5ndGgpOw0KPiArCVBNRF9JTklUX0xPRyhERUJVRywgIlx0LVN1cHBvcnRlZCBo YXNoIHR5cGVzOiAweCV4IiwgKnJzc19oYXNoX3R5cGVzKTsNCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICt2aXJ0aW9fZGV2X3Jzc19oYXNoX3VwZGF0ZShz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gKwkJc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJz c19jb25mKQ0KPiArew0KPiArCXN0cnVjdCB2aXJ0aW9faHcgKmh3ID0gZGV2LT5kYXRhLT5kZXZf cHJpdmF0ZTsNCj4gKwl1aW50MTZfdCBuYl9xdWV1ZXM7DQo+ICsNCj4gKwlpZiAoIXZpcnRpb193 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9SU1MpKQ0KPiArCQlyZXR1cm4gLUVOT1RTVVA7 DQo+ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19oZiAmDQo+IH52aXJ0aW9fdG9fZXRoZGV2X3Jz c19vZmZsb2FkcyhWSVJUSU9fTkVUX0hBU0hfVFlQRV9NQVNLKSkNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsNCj4gKwlody0+cnNzX2hhc2hfdHlwZXMgPSAwOw0KPiArDQo+ICsJaWYgKHJzc19j b25mLT5yc3NfaGYgJiAoRVRIX1JTU19JUFY0IHwgRVRIX1JTU19GUkFHX0lQVjQgfA0KPiBFVEhf UlNTX05PTkZSQUdfSVBWNF9PVEhFUikpDQo+ICsJCWh3LT5yc3NfaGFzaF90eXBlcyB8PSBWSVJU SU9fTkVUX0hBU0hfVFlQRV9JUFY0Ow0KPiArDQo+ICsJaWYgKHJzc19jb25mLT5yc3NfaGYgJiBF VEhfUlNTX05PTkZSQUdfSVBWNF9UQ1ApDQo+ICsJCWh3LT5yc3NfaGFzaF90eXBlcyB8PSBWSVJU SU9fTkVUX0hBU0hfVFlQRV9UQ1BWNDsNCj4gKw0KPiArCWlmIChyc3NfY29uZi0+cnNzX2hmICYg RVRIX1JTU19OT05GUkFHX0lQVjRfVURQKQ0KPiArCQlody0+cnNzX2hhc2hfdHlwZXMgfD0gVklS VElPX05FVF9IQVNIX1RZUEVfVURQVjQ7DQo+ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19oZiAm IChFVEhfUlNTX0lQVjYgfCBFVEhfUlNTX0ZSQUdfSVBWNiB8DQo+IEVUSF9SU1NfTk9ORlJBR19J UFY2X09USEVSKSkNCj4gKwkJaHctPnJzc19oYXNoX3R5cGVzIHw9IFZJUlRJT19ORVRfSEFTSF9U WVBFX0lQVjY7DQo+ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19oZiAmIEVUSF9SU1NfTk9ORlJB R19JUFY2X1RDUCkNCj4gKwkJaHctPnJzc19oYXNoX3R5cGVzIHw9IFZJUlRJT19ORVRfSEFTSF9U WVBFX1RDUFY2Ow0KPiArDQo+ICsJaWYgKHJzc19jb25mLT5yc3NfaGYgJiBFVEhfUlNTX05PTkZS QUdfSVBWNl9VRFApDQo+ICsJCWh3LT5yc3NfaGFzaF90eXBlcyB8PSBWSVJUSU9fTkVUX0hBU0hf VFlQRV9VRFBWNjsNCj4gKw0KPiArCWlmIChyc3NfY29uZi0+cnNzX2hmICYgRVRIX1JTU19JUFY2 X0VYKQ0KPiArCQlody0+cnNzX2hhc2hfdHlwZXMgfD0gVklSVElPX05FVF9IQVNIX1RZUEVfSVBf RVg7DQo+ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19oZiAmIEVUSF9SU1NfSVBWNl9UQ1BfRVgp DQo+ICsJCWh3LT5yc3NfaGFzaF90eXBlcyB8PSBWSVJUSU9fTkVUX0hBU0hfVFlQRV9UQ1BfRVg7 DQo+ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19oZiAmIEVUSF9SU1NfSVBWNl9VRFBfRVgpDQo+ ICsJCWh3LT5yc3NfaGFzaF90eXBlcyB8PSBWSVJUSU9fTkVUX0hBU0hfVFlQRV9VRFBfRVg7DQo+ ICsNCj4gKwlpZiAocnNzX2NvbmYtPnJzc19rZXkgJiYgcnNzX2NvbmYtPnJzc19rZXlfbGVuKSB7 DQo+ICsJCWlmIChyc3NfY29uZi0+cnNzX2tleV9sZW4gIT0gVklSVElPX05FVF9SU1NfS0VZX1NJ WkUpIHsNCj4gKwkJCVBNRF9JTklUX0xPRyhFUlIsICJEcml2ZXIgb25seSBzdXBwb3J0cyAldSBS U1Mga2V5IGxlbmd0aCIsDQo+ICsJCQkJCVZJUlRJT19ORVRfUlNTX0tFWV9TSVpFKTsNCj4gKwkJ CXJldHVybiAtRUlOVkFMOw0KPiArCQl9DQo+ICsJCW1lbWNweShody0+cnNzX2tleSwgcnNzX2Nv bmYtPnJzc19rZXksIFZJUlRJT19ORVRfUlNTX0tFWV9TSVpFKTsNCj4gKwl9DQo+ICsNCj4gKwlu Yl9xdWV1ZXMgPSBSVEVfTUFYKGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzLCBkZXYtPmRhdGEtPm5i X3R4X3F1ZXVlcyk7DQo+ICsJcmV0dXJuIHZpcnRpb19zZXRfbXVsdGlwbGVfcXVldWVzX3Jzcyhk ZXYsIG5iX3F1ZXVlcyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3ZpcnRpb19kZXZf cnNzX2hhc2hfY29uZl9nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICsJCXN0cnVjdCBy dGVfZXRoX3Jzc19jb25mICpyc3NfY29uZikNCj4gK3sNCj4gKwlzdHJ1Y3QgdmlydGlvX2h3ICpo dyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ICsNCj4gKwlpZiAoIXZpcnRpb193aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19ORVRfRl9SU1MpKQ0KPiArCQlyZXR1cm4gLUVOT1RTVVA7DQo+ICsN Cj4gKwlpZiAoIXJzc19jb25mKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCg0KTm8gbmVlZCB0byBj aGVjaywgaXQncyBkb25lIGluIGV0aGRldi4NCg0KPiArDQo+ICsJaWYgKHJzc19jb25mLT5yc3Nf a2V5ICYmIHJzc19jb25mLT5yc3Nfa2V5X2xlbiA+PQ0KPiBWSVJUSU9fTkVUX1JTU19LRVlfU0la RSkNCj4gKwkJbWVtY3B5KHJzc19jb25mLT5yc3Nfa2V5LCBody0+cnNzX2tleSwgVklSVElPX05F VF9SU1NfS0VZX1NJWkUpOw0KPiArCXJzc19jb25mLT5yc3Nfa2V5X2xlbiA9IFZJUlRJT19ORVRf UlNTX0tFWV9TSVpFOw0KPiArCXJzc19jb25mLT5yc3NfaGYgPSB2aXJ0aW9fdG9fZXRoZGV2X3Jz c19vZmZsb2Fkcyhody0+cnNzX2hhc2hfdHlwZXMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgdmlydGlvX2Rldl9yc3NfcmV0YV91cGRhdGUoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsDQo+ICsJCQkgc3RydWN0IHJ0ZV9ldGhfcnNzX3JldGFfZW50cnk2NCAq cmV0YV9jb25mLA0KPiArCQkJIHVpbnQxNl90IHJldGFfc2l6ZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qg dmlydGlvX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ICsJdWludDE2X3QgbmJf cXVldWVzOw0KPiArCWludCBpZHgsIHBvcywgaTsNCj4gKw0KPiArCWlmICghdmlydGlvX3dpdGhf ZmVhdHVyZShodywgVklSVElPX05FVF9GX1JTUykpDQo+ICsJCXJldHVybiAtRU5PVFNVUDsNCj4g Kw0KPiArCWlmICghcmV0YV9jb25mKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCg0KRGl0dG8uDQoN Cj4gKw0KPiArCWlmIChyZXRhX3NpemUgIT0gVklSVElPX05FVF9SU1NfUkVUQV9TSVpFKQ0KPiAr CQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCWZvciAoaWR4ID0gMCwgaSA9IDA7IGkgPCByZXRh X3NpemU7IGkrKykgew0KPiArCQlpZHggPSBpIC8gUlRFX1JFVEFfR1JPVVBfU0laRTsNCj4gKwkJ cG9zID0gaSAlIFJURV9SRVRBX0dST1VQX1NJWkU7DQo+ICsNCj4gKwkJaWYgKCgocmV0YV9jb25m W2lkeF0ubWFzayA+PiBwb3MpICYgMHgxKSA9PSAwKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4g KwkJaHctPnJzc19yZXRhW2ldID0gcmV0YV9jb25mW2lkeF0ucmV0YVtwb3NdOw0KPiArCX0NCj4g Kw0KPiArCW5iX3F1ZXVlcyA9IFJURV9NQVgoZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMsIGRldi0+ ZGF0YS0+bmJfdHhfcXVldWVzKTsNCj4gKwlyZXR1cm4gdmlydGlvX3NldF9tdWx0aXBsZV9xdWV1 ZXNfcnNzKGRldiwgbmJfcXVldWVzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB2aXJ0aW9f ZGV2X3Jzc19yZXRhX3F1ZXJ5KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiArCQkJIHN0cnVj dCBydGVfZXRoX3Jzc19yZXRhX2VudHJ5NjQgKnJldGFfY29uZiwNCj4gKwkJCSB1aW50MTZfdCBy ZXRhX3NpemUpDQo+ICt7DQo+ICsJc3RydWN0IHZpcnRpb19odyAqaHcgPSBkZXYtPmRhdGEtPmRl dl9wcml2YXRlOw0KPiArCWludCBpZHgsIGk7DQo+ICsNCj4gKwlpZiAoIXZpcnRpb193aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19ORVRfRl9SU1MpKQ0KPiArCQlyZXR1cm4gLUVOT1RTVVA7DQo+ICsN Cj4gKwlpZiAoIXJldGFfY29uZikNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQoNCkRpdHRvDQoNCj4g Kw0KPiArCWlmIChyZXRhX3NpemUgIT0gVklSVElPX05FVF9SU1NfUkVUQV9TSVpFKQ0KPiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCWZvciAoaWR4ID0gMCwgaSA9IDA7IGkgPCByZXRhX3Np emU7IGkrKykgew0KPiArCQlpZHggPSBpIC8gUlRFX1JFVEFfR1JPVVBfU0laRTsNCj4gKwkJcmV0 YV9jb25mW2lkeF0ucmV0YVtpICUgUlRFX1JFVEFfR1JPVVBfU0laRV0gPSBody0+cnNzX3JldGFb aV07DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBB cyBkZWZhdWx0IFJTUyBoYXNoIGtleSwgaXQgdXNlcyB0aGUgZGVmYXVsdCBrZXkgb2YgdGhlDQo+ ICsgKiBJbnRlbCBJWEdCRSBkZXZpY2VzLiBJdCBjYW4gYmUgdXBkYXRlZCBieSB0aGUgYXBwbGlj YXRpb24NCj4gKyAqIHdpdGggYW55IDQwQiBrZXkgdmFsdWUuDQo+ICsgKi8NCj4gK3N0YXRpYyB1 aW50OF90IHJzc19pbnRlbF9rZXlbVklSVElPX05FVF9SU1NfS0VZX1NJWkVdID0gew0KPiArCTB4 NkQsIDB4NUEsIDB4NTYsIDB4REEsIDB4MjUsIDB4NUIsIDB4MEUsIDB4QzIsDQo+ICsJMHg0MSwg MHg2NywgMHgyNSwgMHgzRCwgMHg0MywgMHhBMywgMHg4RiwgMHhCMCwNCj4gKwkweEQwLCAweENB LCAweDJCLCAweENCLCAweEFFLCAweDdCLCAweDMwLCAweEI0LA0KPiArCTB4NzcsIDB4Q0IsIDB4 MkQsIDB4QTMsIDB4ODAsIDB4MzAsIDB4RjIsIDB4MEMsDQo+ICsJMHg2QSwgMHg0MiwgMHhCNywg MHgzQiwgMHhCRSwgMHhBQywgMHgwMSwgMHhGQSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQN Cj4gK3ZpcnRpb19kZXZfcnNzX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0KPiAr ew0KPiArCXN0cnVjdCB2aXJ0aW9faHcgKmh3ID0gZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7 DQo+ICsJdWludDE2X3QgbmJfcnhfcXVldWVzID0gZXRoX2Rldi0+ZGF0YS0+bmJfcnhfcXVldWVz Ow0KPiArCWludCBpOw0KPiArDQo+ICsJaWYgKHZpcnRpb19kZXZfZ2V0X3Jzc19jb25maWcoaHcs ICZody0+cnNzX2hhc2hfdHlwZXMpKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwlpZiAoIWh3 LT5yc3Nfa2V5KSB7DQo+ICsJCS8qIFNldHVwIGRlZmF1bHQgUlNTIGtleSBpZiBub3QgYWxyZWFk eSBzZXR1cCBieSB0aGUgdXNlciAqLw0KPiArCQlody0+cnNzX2tleSA9IHJ0ZV9tYWxsb2Nfc29j a2V0KCJyc3Nfa2V5IiwNCj4gKwkJCQlWSVJUSU9fTkVUX1JTU19LRVlfU0laRSwgMCwNCj4gKwkJ CQlldGhfZGV2LT5kZXZpY2UtPm51bWFfbm9kZSk7DQo+ICsJCWlmICghaHctPnJzc19rZXkpIHsN Cj4gKwkJCVBNRF9JTklUX0xPRyhFUlIsICJGYWlsZWQgdG8gYWxsb2NhdGUgUlNTIGtleSIpOw0K PiArCQkJcmV0dXJuIC0xOw0KPiArCQl9DQo+ICsJCXJ0ZV9tZW1jcHkoaHctPnJzc19rZXksIHJz c19pbnRlbF9rZXksIFZJUlRJT19ORVRfUlNTX0tFWV9TSVpFKTsNCj4gKwl9DQo+ICsNCj4gKwlp ZiAoIWh3LT5yc3NfcmV0YSkgew0KPiArCQkvKiBTZXR1cCBkZWZhdWx0IFJTUyByZXRhIGlmIG5v dCBhbHJlYWR5IHNldHVwIGJ5IHRoZSB1c2VyICovDQo+ICsJCWh3LT5yc3NfcmV0YSA9IHJ0ZV9t YWxsb2Nfc29ja2V0KCJyc3NfcmV0YSIsDQo+ICsJCQkJVklSVElPX05FVF9SU1NfUkVUQV9TSVpF ICogc2l6ZW9mKHVpbnQxNl90KSwgMCwNCj4gKwkJCQlldGhfZGV2LT5kZXZpY2UtPm51bWFfbm9k ZSk7DQo+ICsJCWlmICghaHctPnJzc19yZXRhKSB7DQo+ICsJCQlQTURfSU5JVF9MT0coRVJSLCAi RmFpbGVkIHRvIGFsbG9jYXRlIFJTUyByZXRhIik7DQo+ICsJCQlyZXR1cm4gLTE7DQo+ICsJCX0N Cj4gKwkJZm9yIChpID0gMDsgaSA8IFZJUlRJT19ORVRfUlNTX1JFVEFfU0laRTsgaSsrKQ0KPiAr CQkJaHctPnJzc19yZXRhW2ldID0gaSAlIG5iX3J4X3F1ZXVlczsNCj4gKwl9DQo+ICsNCj4gKwly ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAgI2RlZmluZSBEVVBMRVhfVU5LTk9XTiAgIDB4ZmYNCj4g IC8qIHJlc2V0IGRldmljZSBhbmQgcmVuZWdvdGlhdGUgZmVhdHVyZXMgaWYgbmVlZGVkICovDQo+ ICBzdGF0aWMgaW50DQo+IEBAIC0xODAxLDE0ICsyMTMyLDE1IEBAIHZpcnRpb19pbml0X2Rldmlj ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsDQo+IHVpbnQ2NF90IHJlcV9mZWF0dXJlcykN Cj4gIAkJCWNvbmZpZy0+c3RhdHVzID0gMDsNCj4gIAkJfQ0KPiANCj4gLQkJaWYgKHZpcnRpb193 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9NUSkpIHsNCj4gKwkJaWYgKHZpcnRpb193aXRo X2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9NUSkgfHwNCj4gKwkJCQl2aXJ0aW9fd2l0aF9mZWF0 dXJlKGh3LCBWSVJUSU9fTkVUX0ZfUlNTKSkgew0KPiAgCQkJdmlydGlvX3JlYWRfZGV2X2NvbmZp ZyhodywNCj4gIAkJCQlvZmZzZXRvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcsDQo+IG1heF92 aXJ0cXVldWVfcGFpcnMpLA0KPiAgCQkJCSZjb25maWctPm1heF92aXJ0cXVldWVfcGFpcnMsDQo+ ICAJCQkJc2l6ZW9mKGNvbmZpZy0+bWF4X3ZpcnRxdWV1ZV9wYWlycykpOw0KPiAgCQl9IGVsc2Ug ew0KPiAgCQkJUE1EX0lOSVRfTE9HKERFQlVHLA0KPiAtCQkJCSAgICAgIlZJUlRJT19ORVRfRl9N USBpcyBub3Qgc3VwcG9ydGVkIik7DQo+ICsJCQkJICAgICAiTmVpdGhlciBWSVJUSU9fTkVUX0Zf TVEgbm9yIFZJUlRJT19ORVRfRl9SU1MgYXJlDQo+IHN1cHBvcnRlZCIpOw0KPiAgCQkJY29uZmln LT5tYXhfdmlydHF1ZXVlX3BhaXJzID0gMTsNCj4gIAkJfQ0KPiANCj4gQEAgLTE4NDAsNiArMjE3 MiwxMSBAQCB2aXJ0aW9faW5pdF9kZXZpY2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LA0K PiB1aW50NjRfdCByZXFfZmVhdHVyZXMpDQo+ICAJCQkJVkxBTl9UQUdfTEVOIC0gaHctPnZ0bmV0 X2hkcl9zaXplOw0KPiAgCQl9DQo+IA0KPiArCQlody0+cnNzX2hhc2hfdHlwZXMgPSAwOw0KPiAr CQlpZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1JTUykpDQo+ICsJCQlp ZiAodmlydGlvX2Rldl9yc3NfaW5pdChldGhfZGV2KSkNCj4gKwkJCQlyZXR1cm4gLTE7DQo+ICsN Cj4gIAkJUE1EX0lOSVRfTE9HKERFQlVHLCAiY29uZmlnLT5tYXhfdmlydHF1ZXVlX3BhaXJzPSVk IiwNCj4gIAkJCQljb25maWctPm1heF92aXJ0cXVldWVfcGFpcnMpOw0KPiAgCQlQTURfSU5JVF9M T0coREVCVUcsICJjb25maWctPnN0YXR1cz0lZCIsIGNvbmZpZy0+c3RhdHVzKTsNCj4gQEAgLTIw ODMsNyArMjQyMCw3IEBAIHZpcnRpb19kZXZfY29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2KQ0KPiAgCVBNRF9JTklUX0xPRyhERUJVRywgImNvbmZpZ3VyZSIpOw0KPiAgCXJlcV9mZWF0 dXJlcyA9IFZJUlRJT19QTURfREVGQVVMVF9HVUVTVF9GRUFUVVJFUzsNCj4gDQo+IC0JaWYgKHJ4 bW9kZS0+bXFfbW9kZSAhPSBFVEhfTVFfUlhfTk9ORSkgew0KPiArCWlmIChyeG1vZGUtPm1xX21v ZGUgIT0gRVRIX01RX1JYX05PTkUgJiYgcnhtb2RlLT5tcV9tb2RlICE9DQo+IEVUSF9NUV9SWF9S U1MpIHsNCj4gIAkJUE1EX0RSVl9MT0coRVJSLA0KPiAgCQkJIlVuc3VwcG9ydGVkIFJ4IG11bHRp IHF1ZXVlIG1vZGUgJWQiLA0KPiAgCQkJcnhtb2RlLT5tcV9tb2RlKTsNCj4gQEAgLTIxMDMsNiAr MjQ0MCw5IEBAIHZpcnRpb19kZXZfY29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0K PiAgCQkJcmV0dXJuIHJldDsNCj4gIAl9DQo+IA0KPiArCWlmIChyeG1vZGUtPm1xX21vZGUgPT0g RVRIX01RX1JYX1JTUykNCj4gKwkJcmVxX2ZlYXR1cmVzIHw9ICgxVUxMIDw8IFZJUlRJT19ORVRf Rl9SU1MpOw0KPiArDQo+ICAJaWYgKChyeF9vZmZsb2FkcyAmIERFVl9SWF9PRkZMT0FEX0pVTUJP X0ZSQU1FKSAmJg0KPiAgCSAgICAocnhtb2RlLT5tYXhfcnhfcGt0X2xlbiA+IGh3LT5tYXhfbXR1 ICsgZXRoZXJfaGRyX2xlbikpDQo+ICAJCXJlcV9mZWF0dXJlcyAmPSB+KDFVTEwgPDwgVklSVElP X05FVF9GX01UVSk7DQo+IEBAIC0yMTM3LDYgKzI0NzcsMTIgQEAgdmlydGlvX2Rldl9jb25maWd1 cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAJCQlyZXR1cm4gcmV0Ow0KPiAgCX0NCj4g DQo+ICsJaWYgKChyeG1vZGUtPm1xX21vZGUgJiBFVEhfTVFfUlhfUlNTX0ZMQUcpICYmDQo+ICsJ CQkhdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1JTUykpIHsNCj4gKwkJUE1E X0RSVl9MT0coRVJSLCAiUlNTIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5 IHRoZQ0KPiBkZXZpY2UiKTsNCj4gKwkJcmV0dXJuIC1FTk9UU1VQOw0KPiArCX0NCj4gKw0KPiAg CWlmICgocnhfb2ZmbG9hZHMgJiAoREVWX1JYX09GRkxPQURfVURQX0NLU1VNIHwNCj4gIAkJCSAg ICBERVZfUlhfT0ZGTE9BRF9UQ1BfQ0tTVU0pKSAmJg0KPiAgCQkhdmlydGlvX3dpdGhfZmVhdHVy ZShodywgVklSVElPX05FVF9GX0dVRVNUX0NTVU0pKSB7DQo+IEBAIC0yNTAzLDYgKzI4NDksNyBA QCBzdGF0aWMgaW50DQo+ICB2aXJ0aW9fZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LCBzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbw0KPiAqZGV2X2luZm8pDQo+ICB7DQo+ICAJdWlu dDY0X3QgdHNvX21hc2ssIGhvc3RfZmVhdHVyZXM7DQo+ICsJdWludDMyX3QgcnNzX2hhc2hfdHlw ZXMgPSAwOw0KPiAgCXN0cnVjdCB2aXJ0aW9faHcgKmh3ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0 ZTsNCj4gIAlkZXZfaW5mby0+c3BlZWRfY2FwYSA9IHZpcnRpb19kZXZfc3BlZWRfY2FwYV9nZXQo aHctPnNwZWVkKTsNCj4gDQo+IEBAIC0yNTQzLDYgKzI4OTAsMTggQEAgdmlydGlvX2Rldl9pbmZv X2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0DQo+IHJ0ZV9ldGhfZGV2X2luZm8g KmRldl9pbmZvKQ0KPiAgCQkoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfSE9TVF9UU082KTsNCj4gIAlp ZiAoKGhvc3RfZmVhdHVyZXMgJiB0c29fbWFzaykgPT0gdHNvX21hc2spDQo+ICAJCWRldl9pbmZv LT50eF9vZmZsb2FkX2NhcGEgfD0gREVWX1RYX09GRkxPQURfVENQX1RTTzsNCj4gKwlpZiAoaG9z dF9mZWF0dXJlcyAmICgxVUxMIDw8IFZJUlRJT19ORVRfRl9SU1MpKSB7DQo+ICsJCXZpcnRpb19k ZXZfZ2V0X3Jzc19jb25maWcoaHcsICZyc3NfaGFzaF90eXBlcyk7DQo+ICsJCWRldl9pbmZvLT5o YXNoX2tleV9zaXplID0gVklSVElPX05FVF9SU1NfS0VZX1NJWkU7DQo+ICsJCWRldl9pbmZvLT5y ZXRhX3NpemUgPSBWSVJUSU9fTkVUX1JTU19SRVRBX1NJWkU7DQo+ICsJCWRldl9pbmZvLT5mbG93 X3R5cGVfcnNzX29mZmxvYWRzID0NCj4gKwkJCXZpcnRpb190b19ldGhkZXZfcnNzX29mZmxvYWRz KHJzc19oYXNoX3R5cGVzKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlkZXZfaW5mby0+aGFzaF9rZXlf c2l6ZSA9IDA7DQo+ICsJCWRldl9pbmZvLT5yZXRhX3NpemUgPSAwOw0KPiArCQlkZXZfaW5mby0+ Zmxvd190eXBlX3Jzc19vZmZsb2FkcyA9IDA7DQo+ICsJfQ0KPiArDQo+IA0KPiAgCWlmIChob3N0 X2ZlYXR1cmVzICYgKDFVTEwgPDwgVklSVElPX0ZfUklOR19QQUNLRUQpKSB7DQo+ICAJCS8qDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5oDQo+IGIvZHJp dmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuaA0KPiBpbmRleCAyZjYzZWYyYjJkLi4zZmUz MGQ4Nzg0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5o DQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmgNCj4gQEAgLTQ1LDcg KzQ1LDggQEANCj4gIAkgMXUgPDwgVklSVElPX05FVF9GX0dVRVNUX1RTTzYgICAgIHwJXA0KPiAg CSAxdSA8PCBWSVJUSU9fTkVUX0ZfQ1NVTSAgICAgICAgICAgfAlcDQo+ICAJIDF1IDw8IFZJUlRJ T19ORVRfRl9IT1NUX1RTTzQgICAgICB8CVwNCj4gLQkgMXUgPDwgVklSVElPX05FVF9GX0hPU1Rf VFNPNikNCj4gKwkgMXUgPDwgVklSVElPX05FVF9GX0hPU1RfVFNPNiAgICAgIHwJXA0KPiArCSAx VUxMIDw8IFZJUlRJT19ORVRfRl9SU1MpDQo+IA0KPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGhf ZGV2X29wcyB2aXJ0aW9fdXNlcl9zZWNvbmRhcnlfZXRoX2Rldl9vcHM7DQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRxdWV1ZS5oIGIvZHJpdmVycy9uZXQvdmlydGlv L3ZpcnRxdWV1ZS5oDQo+IGluZGV4IDAzOTU3YjJiZDAuLjk5YTBlNjhkMzggMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0cXVldWUuaA0KPiArKysgYi9kcml2ZXJzL25ldC92 aXJ0aW8vdmlydHF1ZXVlLmgNCj4gQEAgLTE4Miw2ICsxODIsMjQgQEAgc3RydWN0IHZpcnRpb19u ZXRfY3RybF9tYWMgew0KPiAgI2RlZmluZSBWSVJUSU9fTkVUX0NUUkxfVkxBTl9BREQgMA0KPiAg I2RlZmluZSBWSVJUSU9fTkVUX0NUUkxfVkxBTl9ERUwgMQ0KPiANCj4gKy8qKg0KPiArICogUlNT IGNvbnRyb2wNCj4gKyAqDQo+ICsgKiBUaGUgUlNTIGZlYXR1cmUgPHRvZG8+DQo+ICsgKi8NCj4g KyNkZWZpbmUgVklSVElPX05FVF9SU1NfUkVUQV9TSVpFIDEyOA0KPiArI2RlZmluZSBWSVJUSU9f TkVUX1JTU19LRVlfU0laRSAgICAgICA0MA0KDQpCZXR0ZXIgYWxpZ24gdGhlIG51bWJlcnM/DQoN ClRoYW5rcywNCkNoZW5ibw0KDQo+ICsNCj4gK3N0cnVjdCB2aXJ0aW9fbmV0X2N0cmxfcnNzIHsN Cj4gKwl1aW50MzJfdCBoYXNoX3R5cGVzOw0KPiArCXVpbnQxNl90IGluZGlyZWN0aW9uX3RhYmxl X21hc2s7DQo+ICsJdWludDE2X3QgdW5jbGFzc2lmaWVkX3F1ZXVlOw0KPiArCXVpbnQxNl90IGlu ZGlyZWN0aW9uX3RhYmxlW1ZJUlRJT19ORVRfUlNTX1JFVEFfU0laRV07DQo+ICsJdWludDE2X3Qg bWF4X3R4X3ZxOw0KPiArCXVpbnQ4X3QgaGFzaF9rZXlfbGVuZ3RoOw0KPiArCXVpbnQ4X3QgaGFz aF9rZXlfZGF0YVtWSVJUSU9fTkVUX1JTU19LRVlfU0laRV07DQo+ICt9Ow0KPiArDQo+ICAvKg0K PiAgICogQ29udHJvbCBsaW5rIGFubm91bmNlIGFja25vd2xlZGdlbWVudA0KPiAgICoNCj4gQEAg LTI3Miw3ICsyOTAsMTAgQEAgc3RydWN0IHZpcnRxdWV1ZSB7DQo+IA0KPiAgLyogSWYgbXVsdGlx dWV1ZSBpcyBwcm92aWRlZCBieSBob3N0LCB0aGVuIHdlIHN1cHBwb3J0IGl0LiAqLw0KPiAgI2Rl ZmluZSBWSVJUSU9fTkVUX0NUUkxfTVEgICA0DQo+ICsNCj4gICNkZWZpbmUgVklSVElPX05FVF9D VFJMX01RX1ZRX1BBSVJTX1NFVCAgICAgICAgMA0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0NUUkxf TVFfUlNTX0NPTkZJRyAgICAgICAgICAxDQo+ICsNCj4gICNkZWZpbmUgVklSVElPX05FVF9DVFJM X01RX1ZRX1BBSVJTX01JTiAgICAgICAgMQ0KPiAgI2RlZmluZSBWSVJUSU9fTkVUX0NUUkxfTVFf VlFfUEFJUlNfTUFYICAgICAgICAweDgwMDANCj4gDQo+IC0tDQo+IDIuMzEuMQ0KDQo=