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 3E23EA052A; Tue, 26 Jan 2021 06:58:35 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C66C5140CFB; Tue, 26 Jan 2021 06:58:34 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 71C1D140CC2 for ; Tue, 26 Jan 2021 06:58:32 +0100 (CET) IronPort-SDR: Nnv8wnjoytAWDpoKJ9Z+7ShcjQlqZ9ZCt8oMxl4S11I0hVMJ3gSfWkhAnyHngV9HVOm+5N7Ghr deS/QtNkWurw== X-IronPort-AV: E=McAfee;i="6000,8403,9875"; a="176341896" X-IronPort-AV: E=Sophos;i="5.79,375,1602572400"; d="scan'208";a="176341896" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2021 21:58:31 -0800 IronPort-SDR: Vx8fnPkPbJKZ8sJj8UBRtOsJCafr54Ifx4lyoj8AhSDDSYs6fqO704sLA6CsuNSELI35ycvQYq qai4+tJwccgA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,375,1602572400"; d="scan'208";a="577699705" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga005.fm.intel.com with ESMTP; 25 Jan 2021 21:58:30 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 25 Jan 2021 21:58:30 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 25 Jan 2021 21:58:30 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.1713.5 via Frontend Transport; Mon, 25 Jan 2021 21:58:30 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.107) 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.1713.5; Mon, 25 Jan 2021 21:58:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gl09NvZJFgHYOcT0qoW+VU+ZGIDqa0CspVHi4uH5qZbkaN3f84Gf37aivve9KM/nC3J5PI8aaPKEq+4Bcbnk4ZqAH17hgTlSZcZriqiDGK0msAeq3v6zUhPa4UJ3jF1kB2SjomsL3gBy2SZZHCoZZRZgr6BYCqfHC+mNM1mY+2j28tQDXlPNm4W4/BoscWeYXY7kcFfdY8mdO2fNQsWTP7mY5IXyNgl0m8ECpUiJsvhGSq/OP65NYccOxyHPVcd+zC0P0KsLdSXl7ha7AnlxgJnrLpBYWlvyuGPlmNuqqMHXYEwOIzxt1zBT6PccQ4yXYhIH0Az/YGSEXZGaqIsd1w== 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=AlxN7NcbqG9vQmnDpBnQCbHA9XnqCd8NyJZXBSwR7Vk=; b=QT4qUIa6UUTaVrxz5sl2urQyYjKH07Q6CuqpJusp4WfMuzfmYXvsAis8C6YqkK7aAyCujgciCRSgZIJMBPXBXEjbbPX2sgHweUA7C0yg/y0npzDOs+zqopHKkeIjKv2TS6+OkBdWGJ5OILPdXPQkBx7x4ytzUJsN2u45UBjG1H/72p+ToZFzT8wLqVGOq3VOK7u6WNMDbrzMPdHksgAm8fXshszCYUzC/7523BQr42GdjyayVD7uypuu+1aQ9kKBSr7Qr2QgSqqoiIm6JtOw6NtlGxsvgtpqeC5JGPugfZg6pRRipQvhzQJZpalwo6JgaXBshGqx1a2xPUngeHpRHw== 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=AlxN7NcbqG9vQmnDpBnQCbHA9XnqCd8NyJZXBSwR7Vk=; b=wNlZ28RAKil8waXDnOnXHLEQJu0gH6rdkJ6x828NEs5SHLoCxkzMyiNCAaoMWqyoAaJgEtLDzdv0+mHu/aubvb7QIGUTzAeOtbeHXIAh4zRg9NSLdQAObBvdajlEDqdz/n9dveeg4iMDiIOgtidMFrbxgRQu7ElzBhuZQtER5Xg= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3712.namprd11.prod.outlook.com (2603:10b6:208:f6::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.13; Tue, 26 Jan 2021 05:58:28 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::4c5:a27c:aab2:a2ed]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::4c5:a27c:aab2:a2ed%7]) with mapi id 15.20.3784.017; Tue, 26 Jan 2021 05:58:28 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "olivier.matz@6wind.com" , "amorenoz@redhat.com" , "david.marchand@redhat.com" Thread-Topic: [PATCH v3 27/44] net/virtio: add Virtio-user features ops Thread-Index: AQHW8z3sqL6vyi2In06hgGzJlt6FOao5afNg Date: Tue, 26 Jan 2021 05:58:28 +0000 Message-ID: References: <20210125171444.167241-1-maxime.coquelin@redhat.com> <20210125171444.167241-28-maxime.coquelin@redhat.com> In-Reply-To: <20210125171444.167241-28-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.55.46.39] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 837cccce-7b34-45de-b1be-08d8c1bf66ed x-ms-traffictypediagnostic: MN2PR11MB3712: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1060; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KNECjB98nyPW0ARPcOx3A0oDeMz1cRmHFc0A52ffv+jEjHD6eDU0crtz3W2q9SxAzYAvJlRw+IoQEhBuJzSbORoOOqXK0bN+j4p4uehT5eG2Bc7ei++tZw2H8p0h0G+HHwV0p3Cz53LjU9iidPit7OqcqLqXAih2ZbbcNJBuqdskNNWDra9xB+b3RBrGNwn1qe1xfY5rWJ0Qs1668UT/RkzJRy5CpmR4/v5alHDJykM1/F62NRRc+uQ9PFaPhj01FRAdd6pOhRy6yrwULYybHKmplg5fBOCX3VVMGqRDcax/65nvs/zEt19NWfVFsK2Zr9L2bWbnqtmcI77iYB1TxG7hshR8CWW5N0l369+ZmL5GOWz9Q8HVWx/NMNGP4zWyqlw8ubnMrJrTp9yLBrEevA== 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)(376002)(346002)(396003)(136003)(39860400002)(30864003)(478600001)(64756008)(8676002)(8936002)(316002)(52536014)(76116006)(9686003)(2906002)(86362001)(66476007)(6506007)(186003)(7696005)(66946007)(66446008)(53546011)(71200400001)(55016002)(83380400001)(110136005)(26005)(5660300002)(66556008)(33656002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?MTE1NTMwdVQ5Rm1sdW9zQi9LblZnakpGRFQyaEFJeE1vekNVMFFyWEJEajg2?= =?utf-8?B?NFZrQkpmRlR5T3I1WGwzWEZ4Vm9GcThFNytFSUxOb2dHcFBUMjhaV2ZLSVdI?= =?utf-8?B?TFB2T0lpRVFlUG1lUWZwS1hJZHRPL0xyLzlqUldtcEVGQndWdmQybFNKMmpM?= =?utf-8?B?aStyaW9WODc4cVZWRGh3N1hvVWplTEsweVFhKzJuUjZiYWlINTllM1Q3SStR?= =?utf-8?B?aVFiYnd2TjM1SXdLS1g2NVo5b0FWUzhXWVpyc0QzbjQ3VTgvZG5PQysxbDdR?= =?utf-8?B?T3hKYWpiUGM3QVBOY05MM1IvZDZjdFhvZkoyZjFyRnBYaS85OWM3Uzk3ZEhY?= =?utf-8?B?OU9oSFJ6RzdxUVZ4alVlaTA3SzZ2MjN0Zkgra01pM1JydGZjMTNTR2pvT2Rq?= =?utf-8?B?MDZ0NGlCamZjdkp0SkZ4T0xDVnhER1d6emNtQ1VFclpESnM1emppdzlsditW?= =?utf-8?B?RTVJdk50YTc2ZmFUdG5ybWhReG1EcndiQ3QwaUFEaHgvY29tSVhJNFQ5QmVn?= =?utf-8?B?TGpOSWE3TmpFQSt2Z2lVc3RKM1JKME94MWxna2p1T1JFK0F4SU5YUEpHNDMv?= =?utf-8?B?U3pxdzA5VDd5dmVYR280bkRzclJ3aDg1Z1R0QjhkZmljb1MweTlMRlpzazc2?= =?utf-8?B?YlJ5QlZJRDVFRXB5RkJNeU8zN25HRUVXenIxSU8vNlNTeHZ2dVdieS9pQ1pt?= =?utf-8?B?VHEvQ1V3YVBBOVdsU2ZPVWZ0c1lrQ0FUK0UyVlQvVnRERjdQM0N0djlya1Mr?= =?utf-8?B?REFQRW9MOHZxRVI2dGd2ZHRDbnczZGdCNmw2YkdTbU5CMEVBNmNyK0pxeC9O?= =?utf-8?B?L09VYURKaWpKSUpTZFl2UXltc2x6NkpXVEtYcjJZMlZsbVltdXNOZHlCUGY5?= =?utf-8?B?NFZaZXI2UENjTWxOdDlYUVBYMldzeGtWcmRwNWVRS3ZxblZEbjl6c1loL1VB?= =?utf-8?B?ZjZzMjAxT0t6VzR3TlBGcXlmNzZycFVCSGFRVnQ1WVVFMVRXWmVLQkdlcG5q?= =?utf-8?B?U2ZpSXY5QUtHMDY4WUNvWUNXRk1maitWSW40LzdUcXI1TE5iTXpkZEZvSXpN?= =?utf-8?B?QzZiVURNbGpTa285WC9IMG0xRlFTSTd1OHVaUVhRTlJ2a0Y0OWhYWlBoN3Ay?= =?utf-8?B?NFovb0lqWVdkV3BhZ3NyQkNpWlNBMkVjenJYNE9PcjVGLzRCZi9NR2NmZHQv?= =?utf-8?B?bDhnbFdkS3F1b1piMHhEWTUzakZ6dzFMMG5mWVdnNjBnOUROQmVJL2MwdUow?= =?utf-8?B?UHhsWmxjSzhaZFVlOUlBeURTcEVteXYwYVRjVTBIY1c2eDJsOTJJcEZ0d0c0?= =?utf-8?B?SXBvMExzTjFtY05yZjR5ZzRXNGxyRTZTVnJDVzh3Wkt4YkRyMDZsOUoybGg4?= =?utf-8?B?a3NpK0g0bW90Y3k5cFZhQUg1OC9zODU5R0tMU204WGdhU0lQcDNibHpBN1l3?= =?utf-8?Q?FtDFiaO7?= 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: 837cccce-7b34-45de-b1be-08d8c1bf66ed X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jan 2021 05:58:28.1473 (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: hLkrNyJnHhnXE47bBptsHOdq0tD6sF3celmcdSvo1nv7yUSvcVzPPVskVwmHMEgqVOUuVBBBRVwf7w7VUdzWjA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3712 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3 27/44] net/virtio: add Virtio-user features ops 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1h eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBKYW51YXJ5IDI2LCAy MDIxIDE6MTQgQU0NCj4gVG86IGRldkBkcGRrLm9yZzsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFA aW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsNCj4gYW1vcmVub3pAcmVkaGF0LmNv bTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbQ0KPiBDYzogTWF4aW1lIENvcXVlbGluIDxtYXhp bWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHYzIDI3LzQ0XSBuZXQv dmlydGlvOiBhZGQgVmlydGlvLXVzZXIgZmVhdHVyZXMgb3BzDQo+IA0KPiBUaGlzIHBhdGNoIGlu dHJvZHVjZXMgbmV3IGNhbGxiYWNrcyBmb3IgZ2V0dGluZw0KPiBhbmQgc2V0dGluZyBWaXJ0aW8g ZmVhdHVyZXMsIGFuZCBpbXBsZW1lbnRzIHRoZW0NCj4gZm9yIHRoZSBkaWZmZXJlbnQgYmFja2Vu ZCB0eXBlcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNv cXVlbGluQHJlZGhhdC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191 c2VyL3Zob3N0LmggICAgICAgIHwgICAyICsNCj4gIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f dXNlci92aG9zdF9rZXJuZWwuYyB8IDE1MCArKysrKysrKystLS0tLS0tLS0NCj4gIC4uLi9uZXQv dmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbF90YXAuYyB8ICAyMyArKysNCj4gIC4uLi9u ZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbF90YXAuaCB8ICAgMSArDQo+ICBkcml2 ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdXNlci5jICAgfCAgNjQgKysrKysrKy0N Cj4gIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF92ZHBhLmMgICB8ICAzOCAr KystLQ0KPiAgLi4uL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmMgIHwg ICA1ICstDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMgICAgICAg fCAgIDMgKy0NCj4gIDggZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDk2IGRlbGV0 aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNl ci92aG9zdC5oDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0LmgNCj4g aW5kZXggNTQxM2VjNjc3OC4uMTNhODhjNzY3MSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQv dmlydGlvL3ZpcnRpb191c2VyL3Zob3N0LmgNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3Zp cnRpb191c2VyL3Zob3N0LmgNCj4gQEAgLTExMCw2ICsxMTAsOCBAQCBzdHJ1Y3QgdmlydGlvX3Vz ZXJfZGV2Ow0KPiAgc3RydWN0IHZpcnRpb191c2VyX2JhY2tlbmRfb3BzIHsNCj4gIAlpbnQgKCpz ZXR1cCkoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KTsNCj4gIAlpbnQgKCpzZXRfb3duZXIp KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldik7DQo+ICsJaW50ICgqZ2V0X2ZlYXR1cmVzKShz dHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIHVpbnQ2NF90ICpmZWF0dXJlcyk7DQo+ICsJaW50 ICgqc2V0X2ZlYXR1cmVzKShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIHVpbnQ2NF90IGZl YXR1cmVzKTsNCj4gIAlpbnQgKCpzZW5kX3JlcXVlc3QpKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYg KmRldiwNCj4gIAkJCSAgICBlbnVtIHZob3N0X3VzZXJfcmVxdWVzdCByZXEsDQo+ICAJCQkgICAg dm9pZCAqYXJnKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNl ci92aG9zdF9rZXJuZWwuYw0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9z dF9rZXJuZWwuYw0KPiBpbmRleCBiNzlkY2FkMTc5Li5lNDYwMzllNjQ5IDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsLmMNCj4gKysrIGIv ZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbC5jDQo+IEBAIC0zOCw2 ICszOCwyOCBAQCBzdHJ1Y3Qgdmhvc3RfbWVtb3J5X2tlcm5lbCB7DQo+ICAjZGVmaW5lIFZIT1NU X1NFVF9WUklOR19FUlIgX0lPVyhWSE9TVF9WSVJUSU8sIDB4MjIsIHN0cnVjdCB2aG9zdF92cmlu Z19maWxlKQ0KPiAgI2RlZmluZSBWSE9TVF9ORVRfU0VUX0JBQ0tFTkQgX0lPVyhWSE9TVF9WSVJU SU8sIDB4MzAsIHN0cnVjdA0KPiB2aG9zdF92cmluZ19maWxlKQ0KPiANCj4gKy8qIHdpdGggYmVs b3cgZmVhdHVyZXMsIHZob3N0IGtlcm5lbCBkb2VzIG5vdCBuZWVkIHRvIGRvIHRoZSBjaGVja3N1 bSBhbmQgVFNPLA0KPiArICogdGhlc2UgaW5mbyB3aWxsIGJlIHBhc3NlZCB0byB2aXJ0aW9fdXNl ciB0aHJvdWdoIHZpcnRpbyBuZXQgaGVhZGVyLg0KPiArICovDQo+ICsjZGVmaW5lIFZIT1NUX0tF Uk5FTF9HVUVTVF9PRkZMT0FEU19NQVNLCVwNCj4gKwkoKDFVTEwgPDwgVklSVElPX05FVF9GX0dV RVNUX0NTVU0pIHwJXA0KPiArCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfR1VFU1RfVFNPNCkgfAlc DQo+ICsJICgxVUxMIDw8IFZJUlRJT19ORVRfRl9HVUVTVF9UU082KSB8CVwNCj4gKwkgKDFVTEwg PDwgVklSVElPX05FVF9GX0dVRVNUX0VDTikgIHwJXA0KPiArCSAoMVVMTCA8PCBWSVJUSU9fTkVU X0ZfR1VFU1RfVUZPKSkNCj4gKw0KPiArLyogd2l0aCBiZWxvdyBmZWF0dXJlcywgd2hlbiBmbG93 cyBmcm9tIHZpcnRpb191c2VyIHRvIHZob3N0IGtlcm5lbA0KPiArICogKDEpIGlmIGZsb3dzIGdv ZXMgdXAgdGhyb3VnaCB0aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2ssIGl0IGRvZXMgbm90IG5l ZWQNCj4gKyAqIHRvIHZlcmlmeSBjaGVja3N1bSwgd2hpY2ggY2FuIHNhdmUgQ1BVIGN5Y2xlczsN Cj4gKyAqICgyKSBpZiBmbG93cyBnb2VzIHRocm91Z2ggYSBMaW51eCBicmlkZ2UgYW5kIG91dHNp ZGUgZnJvbSBhbiBpbnRlcmZhY2UNCj4gKyAqIChrZXJuZWwgZHJpdmVyKSwgY2hlY2tzdW0gYW5k IFRTTyB3aWxsIGJlIGRvbmUgYnkgR1NPIGluIGtlcm5lbCBvciBldmVuDQo+ICsgKiBvZmZsb2Fk ZWQgaW50byByZWFsIHBoeXNpY2FsIGRldmljZS4NCj4gKyAqLw0KPiArI2RlZmluZSBWSE9TVF9L RVJORUxfSE9TVF9PRkZMT0FEU19NQVNLCQlcDQo+ICsJKCgxVUxMIDw8IFZJUlRJT19ORVRfRl9I T1NUX1RTTzQpIHwJXA0KPiArCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfSE9TVF9UU082KSB8CVwN Cj4gKwkgKDFVTEwgPDwgVklSVElPX05FVF9GX0NTVU0pKQ0KPiArDQo+ICBzdGF0aWMgdWludDY0 X3QgbWF4X3JlZ2lvbnMgPSA2NDsNCj4gDQo+ICBzdGF0aWMgdm9pZA0KPiBAQCAtNzcsMTAgKzk5 LDU3IEBAIHZob3N0X2tlcm5lbF9zZXRfb3duZXIoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2 KQ0KPiAgCXJldHVybiB2aG9zdF9rZXJuZWxfaW9jdGwoZGV2LT52aG9zdGZkc1swXSwgVkhPU1Rf U0VUX09XTkVSLCBOVUxMKTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF9rZXJu ZWxfZ2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgdWludDY0X3QgKmZl YXR1cmVzKQ0KPiArew0KPiArCWludCByZXQ7DQo+ICsJdW5zaWduZWQgaW50IHRhcF9mZWF0dXJl czsNCj4gKw0KPiArCXJldCA9IHZob3N0X2tlcm5lbF9pb2N0bChkZXYtPnZob3N0ZmRzWzBdLCBW SE9TVF9HRVRfRkVBVFVSRVMsIGZlYXR1cmVzKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlQ TURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gZ2V0IGZlYXR1cmVzIik7DQo+ICsJCXJldHVybiAt MTsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSB0YXBfc3VwcG9ydF9mZWF0dXJlcygmdGFwX2ZlYXR1 cmVzKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQg dG8gZ2V0IFRBUCBmZWF0dXJlcyIpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJ Lyogd2l0aCB0YXAgYXMgdGhlIGJhY2tlbmQsIGFsbCB0aGVzZSBmZWF0dXJlcyBhcmUgc3VwcG9y dGVkDQo+ICsJICogYnV0IG5vdCBjbGFpbWVkIGJ5IHZob3N0LW5ldCwgc28gd2UgYWRkIHRoZW0g YmFjayB3aGVuDQo+ICsJICogcmVwb3J0aW5nIHRvIHVwcGVyIGxheWVyLg0KPiArCSAqLw0KPiAr CWlmICh0YXBfZmVhdHVyZXMgJiBJRkZfVk5FVF9IRFIpIHsNCj4gKwkJKmZlYXR1cmVzIHw9IFZI T1NUX0tFUk5FTF9HVUVTVF9PRkZMT0FEU19NQVNLOw0KPiArCQkqZmVhdHVyZXMgfD0gVkhPU1Rf S0VSTkVMX0hPU1RfT0ZGTE9BRFNfTUFTSzsNCj4gKwl9DQo+ICsNCj4gKwkvKiB2aG9zdF9rZXJu ZWwgd2lsbCBub3QgZGVjbGFyZSB0aGlzIGZlYXR1cmUsIGJ1dCBpdCBkb2VzDQo+ICsJICogc3Vw cG9ydCBtdWx0aS1xdWV1ZS4NCj4gKwkgKi8NCj4gKwlpZiAodGFwX2ZlYXR1cmVzICYgSUZGX01V TFRJX1FVRVVFKQ0KPiArCQkqZmVhdHVyZXMgfD0gKDF1bGwgPDwgVklSVElPX05FVF9GX01RKTsN Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF9r ZXJuZWxfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgdWludDY0X3Qg ZmVhdHVyZXMpDQo+ICt7DQo+ICsJLyogV2UgZG9uJ3QgbmVlZCBtZW1vcnkgcHJvdGVjdGlvbiBo ZXJlICovDQo+ICsJZmVhdHVyZXMgJj0gfigxVUxMIDw8IFZJUlRJT19GX0lPTU1VX1BMQVRGT1JN KTsNCj4gKwkvKiBWSE9TVCBrZXJuZWwgZG9lcyBub3Qga25vdyBhYm91dCBiZWxvdyBmbGFncyAq Lw0KPiArCWZlYXR1cmVzICY9IH5WSE9TVF9LRVJORUxfR1VFU1RfT0ZGTE9BRFNfTUFTSzsNCj4g KwlmZWF0dXJlcyAmPSB+VkhPU1RfS0VSTkVMX0hPU1RfT0ZGTE9BRFNfTUFTSzsNCj4gKwlmZWF0 dXJlcyAmPSB+KDFVTEwgPDwgVklSVElPX05FVF9GX01RKTsNCj4gKw0KPiArCXJldHVybiB2aG9z dF9rZXJuZWxfaW9jdGwoZGV2LT52aG9zdGZkc1swXSwgVkhPU1RfU0VUX0ZFQVRVUkVTLA0KPiAm ZmVhdHVyZXMpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdWludDY0X3Qgdmhvc3RfcmVxX3VzZXJf dG9fa2VybmVsW10gPSB7DQo+ICAJW1ZIT1NUX1VTRVJfUkVTRVRfT1dORVJdID0gVkhPU1RfUkVT RVRfT1dORVIsDQo+IC0JW1ZIT1NUX1VTRVJfU0VUX0ZFQVRVUkVTXSA9IFZIT1NUX1NFVF9GRUFU VVJFUywNCj4gLQlbVkhPU1RfVVNFUl9HRVRfRkVBVFVSRVNdID0gVkhPU1RfR0VUX0ZFQVRVUkVT LA0KPiAgCVtWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMXSA9IFZIT1NUX1NFVF9WUklOR19DQUxM LA0KPiAgCVtWSE9TVF9VU0VSX1NFVF9WUklOR19OVU1dID0gVkhPU1RfU0VUX1ZSSU5HX05VTSwN Cj4gIAlbVkhPU1RfVVNFUl9TRVRfVlJJTkdfQkFTRV0gPSBWSE9TVF9TRVRfVlJJTkdfQkFTRSwN Cj4gQEAgLTE1MCw1MSArMjE5LDYgQEAgcHJlcGFyZV92aG9zdF9tZW1vcnlfa2VybmVsKHZvaWQp DQo+ICAJcmV0dXJuIHZtOw0KPiAgfQ0KPiANCj4gLS8qIHdpdGggYmVsb3cgZmVhdHVyZXMsIHZo b3N0IGtlcm5lbCBkb2VzIG5vdCBuZWVkIHRvIGRvIHRoZSBjaGVja3N1bSBhbmQgVFNPLA0KPiAt ICogdGhlc2UgaW5mbyB3aWxsIGJlIHBhc3NlZCB0byB2aXJ0aW9fdXNlciB0aHJvdWdoIHZpcnRp byBuZXQgaGVhZGVyLg0KPiAtICovDQo+IC0jZGVmaW5lIFZIT1NUX0tFUk5FTF9HVUVTVF9PRkZM T0FEU19NQVNLCVwNCj4gLQkoKDFVTEwgPDwgVklSVElPX05FVF9GX0dVRVNUX0NTVU0pIHwJXA0K PiAtCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfR1VFU1RfVFNPNCkgfAlcDQo+IC0JICgxVUxMIDw8 IFZJUlRJT19ORVRfRl9HVUVTVF9UU082KSB8CVwNCj4gLQkgKDFVTEwgPDwgVklSVElPX05FVF9G X0dVRVNUX0VDTikgIHwJXA0KPiAtCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfR1VFU1RfVUZPKSkN Cj4gLQ0KPiAtLyogd2l0aCBiZWxvdyBmZWF0dXJlcywgd2hlbiBmbG93cyBmcm9tIHZpcnRpb191 c2VyIHRvIHZob3N0IGtlcm5lbA0KPiAtICogKDEpIGlmIGZsb3dzIGdvZXMgdXAgdGhyb3VnaCB0 aGUga2VybmVsIG5ldHdvcmtpbmcgc3RhY2ssIGl0IGRvZXMgbm90IG5lZWQNCj4gLSAqIHRvIHZl cmlmeSBjaGVja3N1bSwgd2hpY2ggY2FuIHNhdmUgQ1BVIGN5Y2xlczsNCj4gLSAqICgyKSBpZiBm bG93cyBnb2VzIHRocm91Z2ggYSBMaW51eCBicmlkZ2UgYW5kIG91dHNpZGUgZnJvbSBhbiBpbnRl cmZhY2UNCj4gLSAqIChrZXJuZWwgZHJpdmVyKSwgY2hlY2tzdW0gYW5kIFRTTyB3aWxsIGJlIGRv bmUgYnkgR1NPIGluIGtlcm5lbCBvciBldmVuDQo+IC0gKiBvZmZsb2FkZWQgaW50byByZWFsIHBo eXNpY2FsIGRldmljZS4NCj4gLSAqLw0KPiAtI2RlZmluZSBWSE9TVF9LRVJORUxfSE9TVF9PRkZM T0FEU19NQVNLCQlcDQo+IC0JKCgxVUxMIDw8IFZJUlRJT19ORVRfRl9IT1NUX1RTTzQpIHwJXA0K PiAtCSAoMVVMTCA8PCBWSVJUSU9fTkVUX0ZfSE9TVF9UU082KSB8CVwNCj4gLQkgKDFVTEwgPDwg VklSVElPX05FVF9GX0NTVU0pKQ0KPiAtDQo+IC1zdGF0aWMgdW5zaWduZWQgaW50DQo+IC10YXBf c3VwcG9ydF9mZWF0dXJlcyh2b2lkKQ0KPiAtew0KPiAtCWludCB0YXBmZDsNCj4gLQl1bnNpZ25l ZCBpbnQgdGFwX2ZlYXR1cmVzOw0KPiAtDQo+IC0JdGFwZmQgPSBvcGVuKFBBVEhfTkVUX1RVTiwg T19SRFdSKTsNCj4gLQlpZiAodGFwZmQgPCAwKSB7DQo+IC0JCVBNRF9EUlZfTE9HKEVSUiwgImZh aWwgdG8gb3BlbiAlczogJXMiLA0KPiAtCQkJICAgIFBBVEhfTkVUX1RVTiwgc3RyZXJyb3IoZXJy bm8pKTsNCj4gLQkJcmV0dXJuIC0xOw0KPiAtCX0NCj4gLQ0KPiAtCWlmIChpb2N0bCh0YXBmZCwg VFVOR0VURkVBVFVSRVMsICZ0YXBfZmVhdHVyZXMpID09IC0xKSB7DQo+IC0JCVBNRF9EUlZfTE9H KEVSUiwgIlRVTkdFVEZFQVRVUkVTIGZhaWxlZDogJXMiLCBzdHJlcnJvcihlcnJubykpOw0KPiAt CQljbG9zZSh0YXBmZCk7DQo+IC0JCXJldHVybiAtMTsNCj4gLQl9DQo+IC0NCj4gLQljbG9zZSh0 YXBmZCk7DQo+IC0JcmV0dXJuIHRhcF9mZWF0dXJlczsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGlu dA0KPiAgdmhvc3Rfa2VybmVsX3NlbmRfcmVxdWVzdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpk ZXYsDQo+ICAJCSAgIGVudW0gdmhvc3RfdXNlcl9yZXF1ZXN0IHJlcSwNCj4gQEAgLTIwNiw3ICsy MzAsNiBAQCB2aG9zdF9rZXJuZWxfc2VuZF9yZXF1ZXN0KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYg KmRldiwNCj4gIAlzdHJ1Y3Qgdmhvc3RfbWVtb3J5X2tlcm5lbCAqdm0gPSBOVUxMOw0KPiAgCWlu dCB2aG9zdGZkOw0KPiAgCXVuc2lnbmVkIGludCBxdWV1ZV9zZWw7DQo+IC0JdW5zaWduZWQgaW50 IGZlYXR1cmVzOw0KPiANCj4gIAlQTURfRFJWX0xPRyhJTkZPLCAiJXMiLCB2aG9zdF9tc2dfc3Ry aW5nc1tyZXFdKTsNCj4gDQo+IEBAIC0yMTksMTcgKzI0Miw2IEBAIHZob3N0X2tlcm5lbF9zZW5k X3JlcXVlc3Qoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiAgCQlhcmcgPSAodm9pZCAq KXZtOw0KPiAgCX0NCj4gDQo+IC0JaWYgKHJlcV9rZXJuZWwgPT0gVkhPU1RfU0VUX0ZFQVRVUkVT KSB7DQo+IC0JCS8qIFdlIGRvbid0IG5lZWQgbWVtb3J5IHByb3RlY3Rpb24gaGVyZSAqLw0KPiAt CQkqKHVpbnQ2NF90ICopYXJnICY9IH4oMVVMTCA8PCBWSVJUSU9fRl9JT01NVV9QTEFURk9STSk7 DQo+IC0NCj4gLQkJLyogVkhPU1Qga2VybmVsIGRvZXMgbm90IGtub3cgYWJvdXQgYmVsb3cgZmxh Z3MgKi8NCj4gLQkJKih1aW50NjRfdCAqKWFyZyAmPSB+VkhPU1RfS0VSTkVMX0dVRVNUX09GRkxP QURTX01BU0s7DQo+IC0JCSoodWludDY0X3QgKilhcmcgJj0gflZIT1NUX0tFUk5FTF9IT1NUX09G RkxPQURTX01BU0s7DQo+IC0NCj4gLQkJKih1aW50NjRfdCAqKWFyZyAmPSB+KDFVTEwgPDwgVklS VElPX05FVF9GX01RKTsNCj4gLQl9DQo+IC0NCj4gIAlzd2l0Y2ggKHJlcV9rZXJuZWwpIHsNCj4g IAljYXNlIFZIT1NUX1NFVF9WUklOR19OVU06DQo+ICAJY2FzZSBWSE9TVF9TRVRfVlJJTkdfQURE UjoNCj4gQEAgLTI1OSwyNCArMjcxLDYgQEAgdmhvc3Rfa2VybmVsX3NlbmRfcmVxdWVzdChzdHJ1 Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+ICAJCXJldCA9IGlvY3RsKHZob3N0ZmQsIHJlcV9r ZXJuZWwsIGFyZyk7DQo+ICAJfQ0KPiANCj4gLQlpZiAoIXJldCAmJiByZXFfa2VybmVsID09IFZI T1NUX0dFVF9GRUFUVVJFUykgew0KPiAtCQlmZWF0dXJlcyA9IHRhcF9zdXBwb3J0X2ZlYXR1cmVz KCk7DQo+IC0JCS8qIHdpdGggdGFwIGFzIHRoZSBiYWNrZW5kLCBhbGwgdGhlc2UgZmVhdHVyZXMg YXJlIHN1cHBvcnRlZA0KPiAtCQkgKiBidXQgbm90IGNsYWltZWQgYnkgdmhvc3QtbmV0LCBzbyB3 ZSBhZGQgdGhlbSBiYWNrIHdoZW4NCj4gLQkJICogcmVwb3J0aW5nIHRvIHVwcGVyIGxheWVyLg0K PiAtCQkgKi8NCj4gLQkJaWYgKGZlYXR1cmVzICYgSUZGX1ZORVRfSERSKSB7DQo+IC0JCQkqKCh1 aW50NjRfdCAqKWFyZykgfD0gVkhPU1RfS0VSTkVMX0dVRVNUX09GRkxPQURTX01BU0s7DQo+IC0J CQkqKCh1aW50NjRfdCAqKWFyZykgfD0gVkhPU1RfS0VSTkVMX0hPU1RfT0ZGTE9BRFNfTUFTSzsN Cj4gLQkJfQ0KPiAtDQo+IC0JCS8qIHZob3N0X2tlcm5lbCB3aWxsIG5vdCBkZWNsYXJlIHRoaXMg ZmVhdHVyZSwgYnV0IGl0IGRvZXMNCj4gLQkJICogc3VwcG9ydCBtdWx0aS1xdWV1ZS4NCj4gLQkJ ICovDQo+IC0JCWlmIChmZWF0dXJlcyAmIElGRl9NVUxUSV9RVUVVRSkNCj4gLQkJCSoodWludDY0 X3QgKilhcmcgfD0gKDF1bGwgPDwgVklSVElPX05FVF9GX01RKTsNCj4gLQl9DQo+IC0NCj4gIAlp ZiAodm0pDQo+ICAJCWZyZWUodm0pOw0KPiANCj4gQEAgLTQwNyw2ICs0MDEsOCBAQCB2aG9zdF9r ZXJuZWxfZW5hYmxlX3F1ZXVlX3BhaXIoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiAg c3RydWN0IHZpcnRpb191c2VyX2JhY2tlbmRfb3BzIHZpcnRpb19vcHNfa2VybmVsID0gew0KPiAg CS5zZXR1cCA9IHZob3N0X2tlcm5lbF9zZXR1cCwNCj4gIAkuc2V0X293bmVyID0gdmhvc3Rfa2Vy bmVsX3NldF9vd25lciwNCj4gKwkuZ2V0X2ZlYXR1cmVzID0gdmhvc3Rfa2VybmVsX2dldF9mZWF0 dXJlcywNCj4gKwkuc2V0X2ZlYXR1cmVzID0gdmhvc3Rfa2VybmVsX3NldF9mZWF0dXJlcywNCj4g IAkuc2VuZF9yZXF1ZXN0ID0gdmhvc3Rfa2VybmVsX3NlbmRfcmVxdWVzdCwNCj4gIAkuZW5hYmxl X3FwID0gdmhvc3Rfa2VybmVsX2VuYWJsZV9xdWV1ZV9wYWlyDQo+ICB9Ow0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbF90YXAuYw0KPiBi L2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF9rZXJuZWxfdGFwLmMNCj4gaW5k ZXggZWFkZTcwMmM1Yy4uOTkwOTZiZGYzOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvdmly dGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbF90YXAuYw0KPiArKysgYi9kcml2ZXJzL25ldC92 aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsX3RhcC5jDQo+IEBAIC0xOCw2ICsxOCwyOSBA QA0KPiAgI2luY2x1ZGUgIi4uL3ZpcnRpb19sb2dzLmgiDQo+ICAjaW5jbHVkZSAiLi4vdmlydGlv LmgiDQo+IA0KPiArDQo+ICtpbnQNCj4gK3RhcF9zdXBwb3J0X2ZlYXR1cmVzKHVuc2lnbmVkIGlu dCAqdGFwX2ZlYXR1cmVzKQ0KPiArew0KPiArCWludCB0YXBmZDsNCj4gKw0KPiArCXRhcGZkID0g b3BlbihQQVRIX05FVF9UVU4sIE9fUkRXUik7DQo+ICsJaWYgKHRhcGZkIDwgMCkgew0KPiArCQlQ TURfRFJWX0xPRyhFUlIsICJmYWlsIHRvIG9wZW4gJXM6ICVzIiwNCj4gKwkJCSAgICBQQVRIX05F VF9UVU4sIHN0cmVycm9yKGVycm5vKSk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4g KwlpZiAoaW9jdGwodGFwZmQsIFRVTkdFVEZFQVRVUkVTLCB0YXBfZmVhdHVyZXMpID09IC0xKSB7 DQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIlRVTkdFVEZFQVRVUkVTIGZhaWxlZDogJXMiLCBzdHJl cnJvcihlcnJubykpOw0KPiArCQljbG9zZSh0YXBmZCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9 DQo+ICsNCj4gKwljbG9zZSh0YXBmZCk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIGlu dA0KPiAgdmhvc3Rfa2VybmVsX3RhcF9zZXRfb2ZmbG9hZChpbnQgZmQsIHVpbnQ2NF90IGZlYXR1 cmVzKQ0KPiAgew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2Vy L3Zob3N0X2tlcm5lbF90YXAuaA0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92 aG9zdF9rZXJuZWxfdGFwLmgNCj4gaW5kZXggNWM0NDQ3YjI5Ni4uZWQwM2ZjZTIxZSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tlcm5lbF90YXAu aA0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsX3Rh cC5oDQo+IEBAIC00Myw1ICs0Myw2IEBAIGludCB2aG9zdF9rZXJuZWxfb3Blbl90YXAoY2hhciAq KnBfaWZuYW1lLCBpbnQgaGRyX3NpemUsIGludA0KPiByZXFfbXEsDQo+ICAJCQkgY29uc3QgY2hh ciAqbWFjLCB1aW50NjRfdCBmZWF0dXJlcyk7DQo+ICBpbnQgdmhvc3Rfa2VybmVsX3RhcF9zZXRf b2ZmbG9hZChpbnQgZmQsIHVpbnQ2NF90IGZlYXR1cmVzKTsNCj4gIGludCB2aG9zdF9rZXJuZWxf dGFwX3NldF9xdWV1ZShpbnQgZmQsIGJvb2wgYXR0YWNoKTsNCj4gK2ludCB0YXBfc3VwcG9ydF9m ZWF0dXJlcyh1bnNpZ25lZCBpbnQgKnRhcF9mZWF0dXJlcyk7DQo+IA0KPiAgI2VuZGlmDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdXNlci5jDQo+ IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X3VzZXIuYw0KPiBpbmRleCBl YTNiZDRjYTEwLi44ZTViZjMzMmQ2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8v dmlydGlvX3VzZXIvdmhvc3RfdXNlci5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0 aW9fdXNlci92aG9zdF91c2VyLmMNCj4gQEAgLTE0Myw2ICsxNDMsNjQgQEAgdmhvc3RfdXNlcl9z ZXRfb3duZXIoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCXJldHVybiAwOw0KPiAg fQ0KPiANCj4gK3N0YXRpYyBpbnQNCj4gK3Zob3N0X3VzZXJfZ2V0X2ZlYXR1cmVzKHN0cnVjdCB2 aXJ0aW9fdXNlcl9kZXYgKmRldiwgdWludDY0X3QgKmZlYXR1cmVzKQ0KPiArew0KPiArCWludCBy ZXQ7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJfbXNnIG1zZyA9IHsNCj4gKwkJLnJlcXVlc3QgPSBW SE9TVF9VU0VSX0dFVF9GRUFUVVJFUywNCj4gKwkJLmZsYWdzID0gVkhPU1RfVVNFUl9WRVJTSU9O LA0KPiArCX07DQo+ICsNCj4gKwlyZXQgPSB2aG9zdF91c2VyX3dyaXRlKGRldi0+dmhvc3RmZCwg Jm1zZywgTlVMTCwgMCk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWdvdG8gZXJyOw0KPiArDQo+ ICsJcmV0ID0gdmhvc3RfdXNlcl9yZWFkKGRldi0+dmhvc3RmZCwgJm1zZyk7DQo+ICsJaWYgKHJl dCA8IDApDQo+ICsJCWdvdG8gZXJyOw0KPiArDQo+ICsJaWYgKG1zZy5yZXF1ZXN0ICE9IFZIT1NU X1VTRVJfR0VUX0ZFQVRVUkVTKSB7DQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIlVuZXhwZWN0ZWQg cmVxdWVzdCB0eXBlICglZCkiLCBtc2cucmVxdWVzdCk7DQo+ICsJCWdvdG8gZXJyOw0KPiArCX0N Cj4gKw0KPiArCWlmIChtc2cuc2l6ZSAhPSBzaXplb2YoKmZlYXR1cmVzKSkgew0KPiArCQlQTURf RFJWX0xPRyhFUlIsICJVbmV4cGVjdGVkIHBheWxvYWQgc2l6ZSAoJXUpIiwgbXNnLnNpemUpOw0K PiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4gKwkqZmVhdHVyZXMgPSBtc2cucGF5bG9hZC51 NjQ7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK2VycjoNCj4gKwlQTURfRFJWX0xPRyhFUlIsICJG YWlsZWQgdG8gZ2V0IGJhY2tlbmQgZmVhdHVyZXMiKTsNCj4gKw0KPiArCXJldHVybiAtMTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludA0KPiArdmhvc3RfdXNlcl9zZXRfZmVhdHVyZXMoc3RydWN0 IHZpcnRpb191c2VyX2RldiAqZGV2LCB1aW50NjRfdCBmZWF0dXJlcykNCj4gK3sNCj4gKwlpbnQg cmV0Ow0KPiArCXN0cnVjdCB2aG9zdF91c2VyX21zZyBtc2cgPSB7DQo+ICsJCS5yZXF1ZXN0ID0g VkhPU1RfVVNFUl9TRVRfRkVBVFVSRVMsDQo+ICsJCS5mbGFncyA9IFZIT1NUX1VTRVJfVkVSU0lP TiwNCj4gKwkJLnNpemUgPSBzaXplb2YoZmVhdHVyZXMpLA0KPiArCQkucGF5bG9hZC51NjQgPSBm ZWF0dXJlcywNCj4gKwl9Ow0KPiArDQo+ICsJbXNnLnBheWxvYWQudTY0IHw9IGRldi0+ZGV2aWNl X2ZlYXR1cmVzICYgKDFVTEwgPDwNCj4gVkhPU1RfVVNFUl9GX1BST1RPQ09MX0ZFQVRVUkVTKTsN Cj4gKw0KPiArCXJldCA9IHZob3N0X3VzZXJfd3JpdGUoZGV2LT52aG9zdGZkLCAmbXNnLCBOVUxM LCAwKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQg dG8gc2V0IGZlYXR1cmVzIik7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiAgc3RydWN0IHdhbGtfYXJnIHsNCj4gIAlzdHJ1Y3Qgdmhvc3Rf bWVtb3J5ICp2bTsNCj4gIAlpbnQgKmZkczsNCj4gQEAgLTI0OSw4ICszMDcsNiBAQCBzdGF0aWMg c3RydWN0IHZob3N0X3VzZXJfbXNnIG07DQo+IA0KPiAgY29uc3QgY2hhciAqIGNvbnN0IHZob3N0 X21zZ19zdHJpbmdzW10gPSB7DQo+ICAJW1ZIT1NUX1VTRVJfUkVTRVRfT1dORVJdID0gIlZIT1NU X1JFU0VUX09XTkVSIiwNCj4gLQlbVkhPU1RfVVNFUl9TRVRfRkVBVFVSRVNdID0gIlZIT1NUX1NF VF9GRUFUVVJFUyIsDQo+IC0JW1ZIT1NUX1VTRVJfR0VUX0ZFQVRVUkVTXSA9ICJWSE9TVF9HRVRf RkVBVFVSRVMiLA0KPiAgCVtWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMXSA9ICJWSE9TVF9TRVRf VlJJTkdfQ0FMTCIsDQo+ICAJW1ZIT1NUX1VTRVJfU0VUX1ZSSU5HX05VTV0gPSAiVkhPU1RfU0VU X1ZSSU5HX05VTSIsDQo+ICAJW1ZIT1NUX1VTRVJfU0VUX1ZSSU5HX0JBU0VdID0gIlZIT1NUX1NF VF9WUklOR19CQVNFIiwNCj4gQEAgLTI5OSw3ICszNTUsNiBAQCB2aG9zdF91c2VyX3NvY2soc3Ry dWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiAgCQkJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJP VE9DT0xfRl9TVEFUVVMpKSkpDQo+ICAJCQlyZXR1cm4gLUVOT1RTVVA7DQo+ICAJCS8qIEZhbGx0 aHJvdWdoICovDQo+IC0JY2FzZSBWSE9TVF9VU0VSX0dFVF9GRUFUVVJFUzoNCj4gIAljYXNlIFZI T1NUX1VTRVJfR0VUX1BST1RPQ09MX0ZFQVRVUkVTOg0KPiAgCQluZWVkX3JlcGx5ID0gMTsNCj4g IAkJYnJlYWs7DQo+IEBAIC0zOTgsNyArNDUzLDYgQEAgdmhvc3RfdXNlcl9zb2NrKHN0cnVjdCB2 aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gIAkJfQ0KPiANCj4gIAkJc3dpdGNoIChyZXEpIHsNCj4g LQkJY2FzZSBWSE9TVF9VU0VSX0dFVF9GRUFUVVJFUzoNCj4gIAkJY2FzZSBWSE9TVF9VU0VSX0dF VF9TVEFUVVM6DQo+ICAJCWNhc2UgVkhPU1RfVVNFUl9HRVRfUFJPVE9DT0xfRkVBVFVSRVM6DQo+ ICAJCQlpZiAobXNnLnNpemUgIT0gc2l6ZW9mKG0ucGF5bG9hZC51NjQpKSB7DQo+IEBAIC01MzYs NiArNTkwLDggQEAgdmhvc3RfdXNlcl9lbmFibGVfcXVldWVfcGFpcihzdHJ1Y3QgdmlydGlvX3Vz ZXJfZGV2ICpkZXYsDQo+ICBzdHJ1Y3QgdmlydGlvX3VzZXJfYmFja2VuZF9vcHMgdmlydGlvX29w c191c2VyID0gew0KPiAgCS5zZXR1cCA9IHZob3N0X3VzZXJfc2V0dXAsDQo+ICAJLnNldF9vd25l ciA9IHZob3N0X3VzZXJfc2V0X293bmVyLA0KPiArCS5nZXRfZmVhdHVyZXMgPSB2aG9zdF91c2Vy X2dldF9mZWF0dXJlcywNCj4gKwkuc2V0X2ZlYXR1cmVzID0gdmhvc3RfdXNlcl9zZXRfZmVhdHVy ZXMsDQo+ICAJLnNlbmRfcmVxdWVzdCA9IHZob3N0X3VzZXJfc29jaywNCj4gIAkuZW5hYmxlX3Fw ID0gdmhvc3RfdXNlcl9lbmFibGVfcXVldWVfcGFpcg0KPiAgfTsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF92ZHBhLmMNCj4gYi9kcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRwYS5jDQo+IGluZGV4IGQ5YmMyMTNlMGQuLjIy YTMyOTUyNmEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92 aG9zdF92ZHBhLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0 X3ZkcGEuYw0KPiBAQCAtNDAsOCArNDAsNiBAQA0KPiANCj4gIHN0YXRpYyB1aW50NjRfdCB2aG9z dF9yZXFfdXNlcl90b192ZHBhW10gPSB7DQo+ICAJW1ZIT1NUX1VTRVJfUkVTRVRfT1dORVJdID0g VkhPU1RfUkVTRVRfT1dORVIsDQo+IC0JW1ZIT1NUX1VTRVJfU0VUX0ZFQVRVUkVTXSA9IFZIT1NU X1NFVF9GRUFUVVJFUywNCj4gLQlbVkhPU1RfVVNFUl9HRVRfRkVBVFVSRVNdID0gVkhPU1RfR0VU X0ZFQVRVUkVTLA0KPiAgCVtWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMXSA9IFZIT1NUX1NFVF9W UklOR19DQUxMLA0KPiAgCVtWSE9TVF9VU0VSX1NFVF9WUklOR19OVU1dID0gVkhPU1RfU0VUX1ZS SU5HX05VTSwNCj4gIAlbVkhPU1RfVVNFUl9TRVRfVlJJTkdfQkFTRV0gPSBWSE9TVF9TRVRfVlJJ TkdfQkFTRSwNCj4gQEAgLTEwNyw2ICsxMDUsMzIgQEAgdmhvc3RfdmRwYV9zZXRfb3duZXIoc3Ry dWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCXJldHVybiB2aG9zdF92ZHBhX2lvY3RsKGRl di0+dmhvc3RmZCwgVkhPU1RfU0VUX09XTkVSLCBOVUxMKTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMg aW50DQo+ICt2aG9zdF92ZHBhX2dldF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpk ZXYsIHVpbnQ2NF90ICpmZWF0dXJlcykNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJcmV0 ID0gdmhvc3RfdmRwYV9pb2N0bChkZXYtPnZob3N0ZmQsIFZIT1NUX0dFVF9GRUFUVVJFUywgZmVh dHVyZXMpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRv IGdldCBmZWF0dXJlcyIpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJLyogTXVs dGlxdWV1ZSBub3Qgc3VwcG9ydGVkIGZvciBub3cgKi8NCj4gKwkqZmVhdHVyZXMgJj0gfigxVUxM IDw8IFZJUlRJT19ORVRfRl9NUSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludA0KPiArdmhvc3RfdmRwYV9zZXRfZmVhdHVyZXMoc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2LCB1aW50NjRfdCBmZWF0dXJlcykNCj4gK3sNCj4gKwkvKiBXT1JLQVJPVU5EICov DQo+ICsJZmVhdHVyZXMgfD0gMVVMTCA8PCBWSVJUSU9fRl9JT01NVV9QTEFURk9STTsNCj4gKw0K PiArCXJldHVybiB2aG9zdF92ZHBhX2lvY3RsKGRldi0+dmhvc3RmZCwgVkhPU1RfU0VUX0ZFQVRV UkVTLCAmZmVhdHVyZXMpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgaW50DQo+ICB2aG9zdF92ZHBh X2lvdGxiX2JhdGNoX2JlZ2luKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIHsNCj4g QEAgLTM0MywxNCArMzY3LDYgQEAgdmhvc3RfdmRwYV9zZW5kX3JlcXVlc3Qoc3RydWN0IHZpcnRp b191c2VyX2RldiAqZGV2LA0KPiAgCWlmIChyZXFfdmRwYSA9PSBWSE9TVF9TRVRfTUVNX1RBQkxF KQ0KPiAgCQlyZXR1cm4gdmhvc3RfdmRwYV9kbWFfbWFwX2FsbChkZXYpOw0KPiANCj4gLQlpZiAo cmVxX3ZkcGEgPT0gVkhPU1RfU0VUX0ZFQVRVUkVTKSB7DQo+IC0JCS8qIFdPUktBUk9VTkQgKi8N Cj4gLQkJKih1aW50NjRfdCAqKWFyZyB8PSAxVUxMIDw8IFZJUlRJT19GX0lPTU1VX1BMQVRGT1JN Ow0KPiAtDQo+IC0JCS8qIE11bHRpcXVldWUgbm90IHN1cHBvcnRlZCBmb3Igbm93ICovDQo+IC0J CSoodWludDY0X3QgKilhcmcgJj0gfigxVUxMIDw8IFZJUlRJT19ORVRfRl9NUSk7DQo+IC0JfQ0K PiAtDQo+ICAJc3dpdGNoIChyZXFfdmRwYSkgew0KPiAgCWNhc2UgVkhPU1RfU0VUX1ZSSU5HX05V TToNCj4gIAljYXNlIFZIT1NUX1NFVF9WUklOR19BRERSOg0KPiBAQCAtNDI5LDYgKzQ0NSw4IEBA IHZob3N0X3ZkcGFfZW5hYmxlX3F1ZXVlX3BhaXIoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2 LA0KPiAgc3RydWN0IHZpcnRpb191c2VyX2JhY2tlbmRfb3BzIHZpcnRpb19vcHNfdmRwYSA9IHsN Cj4gIAkuc2V0dXAgPSB2aG9zdF92ZHBhX3NldHVwLA0KPiAgCS5zZXRfb3duZXIgPSB2aG9zdF92 ZHBhX3NldF9vd25lciwNCj4gKwkuZ2V0X2ZlYXR1cmVzID0gdmhvc3RfdmRwYV9nZXRfZmVhdHVy ZXMsDQo+ICsJLnNldF9mZWF0dXJlcyA9IHZob3N0X3ZkcGFfc2V0X2ZlYXR1cmVzLA0KPiAgCS5z ZW5kX3JlcXVlc3QgPSB2aG9zdF92ZHBhX3NlbmRfcmVxdWVzdCwNCj4gIAkuZW5hYmxlX3FwID0g dmhvc3RfdmRwYV9lbmFibGVfcXVldWVfcGFpciwNCj4gIAkuZG1hX21hcCA9IHZob3N0X3ZkcGFf ZG1hX21hcF9iYXRjaCwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f dXNlci92aXJ0aW9fdXNlcl9kZXYuYw0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNl ci92aXJ0aW9fdXNlcl9kZXYuYw0KPiBpbmRleCBmNGI5N2Q4NDg5Li4xZjNiYmFlNjYzIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2 LmMNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rl di5jDQo+IEBAIC0xNDEsNyArMTQxLDcgQEAgdmlydGlvX3VzZXJfZGV2X3NldF9mZWF0dXJlcyhz dHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpDQo+ICAJLyogU3RyaXAgVklSVElPX05FVF9GX0NU UkxfVlEsIGFzIGRldmljZXMgZG8gbm90IHJlYWxseSBuZWVkIHRvIGtub3cgKi8NCj4gIAlmZWF0 dXJlcyAmPSB+KDF1bGwgPDwgVklSVElPX05FVF9GX0NUUkxfVlEpOw0KPiAgCWZlYXR1cmVzICY9 IH4oMXVsbCA8PCBWSVJUSU9fTkVUX0ZfU1RBVFVTKTsNCj4gLQlyZXQgPSBkZXYtPm9wcy0+c2Vu ZF9yZXF1ZXN0KGRldiwgVkhPU1RfVVNFUl9TRVRfRkVBVFVSRVMsICZmZWF0dXJlcyk7DQo+ICsJ cmV0ID0gZGV2LT5vcHMtPnNldF9mZWF0dXJlcyhkZXYsIGZlYXR1cmVzKTsNCj4gIAlpZiAocmV0 IDwgMCkNCj4gIAkJZ290byBlcnJvcjsNCj4gIAlQTURfRFJWX0xPRyhJTkZPLCAic2V0IGZlYXR1 cmVzOiAlIiBQUkl4NjQsIGZlYXR1cmVzKTsNCj4gQEAgLTQ5Niw4ICs0OTYsNyBAQCB2aXJ0aW9f dXNlcl9kZXZfaW5pdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIGNoYXINCj4gKnBhdGgs IGludCBxdWV1ZXMsDQo+ICAJCQlyZXR1cm4gLTE7DQo+ICAJCX0NCj4gDQo+IC0JCWlmIChkZXYt Pm9wcy0+c2VuZF9yZXF1ZXN0KGRldiwgVkhPU1RfVVNFUl9HRVRfRkVBVFVSRVMsDQo+IC0JCQkJ CSAgICZkZXYtPmRldmljZV9mZWF0dXJlcykgPCAwKSB7DQo+ICsJCWlmIChkZXYtPm9wcy0+Z2V0 X2ZlYXR1cmVzKGRldiwgJmRldi0+ZGV2aWNlX2ZlYXR1cmVzKSA8IDApIHsNCj4gIAkJCVBNRF9J TklUX0xPRyhFUlIsICJnZXRfZmVhdHVyZXMgZmFpbGVkOiAlcyIsDQo+ICAJCQkJICAgICBzdHJl cnJvcihlcnJubykpOw0KPiAgCQkJcmV0dXJuIC0xOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvdmlydGlvL3ZpcnRpb191c2VyX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3Zp cnRpb191c2VyX2V0aGRldi5jDQo+IGluZGV4IDkxNzk0Yjg2NDUuLjU2YzM3OWJjMTUgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlcl9ldGhkZXYuYw0KPiArKysg Yi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMNCj4gQEAgLTg1LDggKzg1 LDcgQEAgdmlydGlvX3VzZXJfc2VydmVyX3JlY29ubmVjdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2 ICpkZXYpDQo+IA0KPiAgCXZpcnRpb19zZXRfc3RhdHVzKGh3LCBWSVJUSU9fQ09ORklHX1NUQVRV U19EUklWRVIpOw0KPiANCj4gLQlpZiAoZGV2LT5vcHMtPnNlbmRfcmVxdWVzdChkZXYsIFZIT1NU X1VTRVJfR0VUX0ZFQVRVUkVTLA0KPiAtCQkJCSAgICZkZXYtPmRldmljZV9mZWF0dXJlcykgPCAw KSB7DQo+ICsJaWYgKGRldi0+b3BzLT5nZXRfZmVhdHVyZXMoZGV2LCAmZGV2LT5kZXZpY2VfZmVh dHVyZXMpIDwgMCkgew0KPiAgCQlQTURfSU5JVF9MT0coRVJSLCAiZ2V0X2ZlYXR1cmVzIGZhaWxl ZDogJXMiLA0KPiAgCQkJICAgICBzdHJlcnJvcihlcnJubykpOw0KPiAgCQlyZXR1cm4gLTE7DQo+ IC0tDQo+IDIuMjkuMg0KDQpSZXZpZXdlZC1ieTogQ2hlbmJvIFhpYSA8Y2hlbmJvLnhpYUBpbnRl bC5jb20+DQo=