From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6136DA09FF; Wed, 30 Dec 2020 04:10:01 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6B9042D41; Wed, 30 Dec 2020 04:09:50 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 305DC2C7A for ; Wed, 30 Dec 2020 04:09:49 +0100 (CET) IronPort-SDR: 9Nuoz2T0Ai8aIkrTUtlkzQP0PT63iOrA5/2MVnhfVUOox4Yxn5+BY9g5fHPgjsJdAzgk13L6IQ gbPlVObJoJww== X-IronPort-AV: E=McAfee;i="6000,8403,9849"; a="261315695" X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="261315695" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Dec 2020 19:09:47 -0800 IronPort-SDR: YLmFhILLQfQ7oTfT+WTzPk6r4cJUh0MS6ZPTdO99aNvBQRnVAv8R4x/9JWFTi0oSqrbpfG1SRL 37cWtdYc6bwg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="376274509" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 29 Dec 2020 19:09:47 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) 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.1713.5; Tue, 29 Dec 2020 19:09:46 -0800 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Dec 2020 19:09:46 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 29 Dec 2020 19:09:46 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.171) 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; Tue, 29 Dec 2020 19:09:42 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZlR5DP8n058FyhohcqXR9zaS1FJPKejyREmeC00LkxOQpRsXltMEyhxkD6v4Q8WJH9fk8RISsYtwrtBVotinOFCymDqTGv/gtrxVfR2UlOWAvGG2I8IHYcCM42uzNEk/PJ/mMppWNc1oMgGaO1foaTBNE23PQaJh6jOVJUXpdCZoQmfcf0XJxmg+KjdmKcrtVSwnVMTp7Ro62vORdDsA6gvwlK01hTOqHbChyXBfD4NxNjbI6L29w53sdC7S+R2DpoZls6Dvsruic+dLjr1ILKwyeb9VhFng+Prj8glPmEO5WDqoKCFkgeo3h2aL9sCOse9SicFGSOysdY7oFJF7Ng== 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=QvoQEnaGLT0sqMc5DmzLbs6FiyswOea4ItDGdX6qBdE=; b=nzBG5UgAOmxRulWUGWGuLLgpQ/4GiSFuYVl4IRxb6M2wvFkukPDSqExt3DzLglzBrH430QejSo/AJCjl79GRPAERfc/tAmhqhlQT1YtrmZMrmLQi7tb6I8lbpPGB370eep/ZtlBTRDqPj/1NS1PH6dVV6oRpwWbGo7RW7t3P6dVVBUc7nyslxdiM6qIbARuXxBpj7r9rMt69x7nWV84K7KRvWVNahLvR0c8LP+juCRcXEnnCxp7eS7EbcuY4tDTdlDOf8FUzflGP0swNF8tLD7wdoYCbp/eW0ks7qRaXE7CJKCeHb8yxvoSf9Zu+x1uQ7IUnohCEddNE1wbu/9NDkA== 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=QvoQEnaGLT0sqMc5DmzLbs6FiyswOea4ItDGdX6qBdE=; b=cL/pb69rgdfeTOB6mP/IcPxg93l8OtKcMlykwenB2Pi3iFQ+f/dR30auNHxNvbpOs+45ED6jg0U66D3kS+OqvyKIvPEtbycdp5KDWRZhXKIr6qpzP5WxTZqWNJutveNbeKynjxplO9NaU660lgJfjLkUWlOI+Xd2db4Q2teeqXY= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3581.namprd11.prod.outlook.com (2603:10b6:208:f0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27; Wed, 30 Dec 2020 03:09:41 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272%7]) with mapi id 15.20.3700.031; Wed, 30 Dec 2020 03:09:41 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "olivier.matz@6wind.com" , "amorenoz@redhat.com" , "david.marchand@redhat.com" Thread-Topic: [PATCH 16/40] net/virtio: introduce generic virtio header Thread-Index: AQHW1xVCXb135dWJSUi+5/Zsi5n7lKoPBDSw Date: Wed, 30 Dec 2020 03:09:41 +0000 Message-ID: References: <20201220211405.313012-1-maxime.coquelin@redhat.com> <20201220211405.313012-17-maxime.coquelin@redhat.com> In-Reply-To: <20201220211405.313012-17-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.198.147.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c5cfa56-18f7-4ee2-cbe5-08d8ac7059d0 x-ms-traffictypediagnostic: MN2PR11MB3581: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IxaJggFqdhCPg/ESBA8XuRUY4UK6MkWdh+dpqp8VKZbd5HUP3TNH84MXLvBVElr42RtIy6/aEbdZvGqJggs+hdRA9h0VJMlY9bzYwO0gQviKvej+KDEZkhOLwr9V5gpGN6bQg92sC/fFKbRvF+SSRvfD2KdT5S+H5Gn41e3CqdDktRtafd4WH4elm7XbYsZDhJ330iulyammYKcSutFXGh6hldpO3G7EZuXWSUkMzwxI1pTQtsXRU3hVl4dsvosTKX9gzsMQdcL2eyQUinQFpkEROiUNm3vhCEHdoQu+jtFfzHdkOBhT6OGq9Ltmcq+JIcpQ3h/95cUPKTEwSkEj8tjjiSuwTO1z+4ngfmw3LZblHRjgeV/jPJqkS9lYbyXrIc1dZvGQKvWp3o4cZp+XERKrWYMP3iYEOsnQ8ROJyfAemNkoTsT6t6dvIuzzHh9u 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)(136003)(39860400002)(376002)(366004)(396003)(346002)(9686003)(55016002)(64756008)(26005)(7696005)(30864003)(66476007)(66946007)(316002)(66446008)(86362001)(83380400001)(66556008)(2906002)(33656002)(8936002)(76116006)(110136005)(186003)(478600001)(52536014)(53546011)(5660300002)(8676002)(6506007)(71200400001)(41533002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?b2ZVZUdueVFrYmc3c3NzeUZReVRqM0VlUXhPTUpyNnk2bjByS29aREYxOG1n?= =?utf-8?B?U29rVVd1ekNiQ24xcEFVRFlRS1orZEZOU0lyZEdDM0VmVk9MaHFjSkZNOVEx?= =?utf-8?B?djdQanVpMlNEbWNFZFcwYWUzSmVwMzNWSDU0WHVKYlVvbWRqbjVnRmt5ZklM?= =?utf-8?B?L0xBM2lkUXhGaWtZTzJzejlDcW5SRldtUlhMQ0YrR0x1NHN6bFZVdHo2bHRp?= =?utf-8?B?VmNtU21nQ3A5VzBtcXM4OXFsbEhyUkdoSm51Q3lFS2p0UWxFL3Qzc3JIK0ZR?= =?utf-8?B?Y25IUXBkRXpidkdVYnB4ZGN4anFYZ2JRMmRJYlF0ZkpoNEk0RGpQemQ0eGo3?= =?utf-8?B?aXdFeEFkZmtWRDh4SlN3N3lRc3djeEtJdUVocHgrN055L0lIUWdjUDNhSFIz?= =?utf-8?B?Z1hHeXNMWURCM241b241SXJpV2tKRGZrSTFIQng3ZzFEbTRFci9abjNMZ21j?= =?utf-8?B?aXJZcFhSR1k3UGNkN0dzbjI1STNINHNST0tMQXRuRUUvV2V2cStwVTdDVndR?= =?utf-8?B?aVkrZ1k4TVkrb3NXME1oQktFb0RLVTNhWEdPR1p4SFFjT08zenM5QVZIcG91?= =?utf-8?B?UkRMcEhCeEtPV1BjZStWT2ZSSksrVXRZR0pOdE00SjVhZ3pUcXozaDRzOVdW?= =?utf-8?B?Y2RBaHJaR0d0SFIwQ2hVenkzd09ZYTk4VjhuQ24yeDBQZm1lSENLaktFck81?= =?utf-8?B?V0Y5Qi9qeGVRQ05uUGQ1ZGdkMkh3YTNrQmlmdHJ1MUR6NFhMUmZ4OGtjbVZu?= =?utf-8?B?Q2tOeEtQcS9yejhLa01tTjZCVnZNNVFCak9zZ0xLdUdSSEw3bzJBTWNHVnFr?= =?utf-8?B?clBoeU9uSWU5VTB0T0l3ZEFodnU3RlR2a3k0TW9KSFFvTFJxTHRyYU5icmRR?= =?utf-8?B?cEJxd2JqTmxDZ0RYdEQ1MWNFOER0ak1jMXEzMEl0ZzR1MWU4TmtONXdPdlZ1?= =?utf-8?B?a2dVQm1BMDNaNmhOeWtGb0g3aTlhL2Y0Z3NLc1U4WiszbklCL3Fjajl0dlNU?= =?utf-8?B?cGhseXNXckVodzhYNmlzKzVyejRWaFViWHcvelViS3RmNFdtUEdreGErTWsw?= =?utf-8?B?dGtmbUErNm4xQjlhMTh1eUR3cUtQSFRZZml0ckUxMkRlZ1R4NXVzNXRGaE5k?= =?utf-8?B?byszV0RWNkdramowVTJLcmxFekxlVEJ0NkR2VWpqNmtaamp6amo0eWVmRE5i?= =?utf-8?B?VTl3VDhFZmVUNzBtUlZnbkM5YnNOQThHbVJLU1dKd0JlTUpjUG5qQ0dSODRB?= =?utf-8?B?cFlFMzFzZHdZL2ZIdm4xVmROa0lVaWFuKzFMSDF2N3NOSlhpSnpSeFRNeCsx?= =?utf-8?Q?MFA2/vIQ/7ZlUsTeQ5PKL02L4zorY/XNs/?= 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: 2c5cfa56-18f7-4ee2-cbe5-08d8ac7059d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Dec 2020 03:09:41.4656 (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: IlvrUOJD3BqPKFIra29v36VI2bjCHf5q2u204aVWkGhLsCU0qd+SBwxchexkKBXqU1umSGj5pfIOXDztfPfnFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3581 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 16/40] net/virtio: introduce generic virtio header X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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 eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBNb25kYXksIERlY2VtYmVyIDIxLCAy MDIwIDU6MTQgQU0NCj4gVG86IGRldkBkcGRrLm9yZzsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFA aW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsNCj4gYW1vcmVub3pAcmVkaGF0LmNv bTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbQ0KPiBDYzogTWF4aW1lIENvcXVlbGluIDxtYXhp bWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIDE2LzQwXSBuZXQvdmly dGlvOiBpbnRyb2R1Y2UgZ2VuZXJpYyB2aXJ0aW8gaGVhZGVyDQo+IA0KPiBUaGlzIHBhdGNoIG1v dmVzIHZpcnRpb19odyBhbmQgdmlydGlvIGNhbGxiYWNrcyBpbnRvDQo+IGEgZ2VuZXJpYyB2aXJ0 aW8gaGVhZGVyLCBub3cgdGhhdCB0aGV5IGhhdmUgYmVlbg0KPiBjdXJhdGVkIGZyb20gUENJIHJl ZmVyZW5jZXMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5j b3F1ZWxpbkByZWRoYXQuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW8u aCAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysNCj4gIGRyaXZlcnMvbmV0 L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMgICAgICB8IDIwICsrKy0tLQ0KPiAgZHJpdmVycy9uZXQv dmlydGlvL3ZpcnRpb19wY2kuYyAgICAgICAgIHwgMjYgKysrKy0tLS0NCj4gIGRyaXZlcnMvbmV0 L3ZpcnRpby92aXJ0aW9fcGNpLmggICAgICAgICB8IDgyICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fcGNpX2V0aGRldi5jICB8ICA1ICstDQo+ ICBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMgfCAgOCArLS0NCj4gIGRy aXZlcnMvbmV0L3ZpcnRpby92aXJ0cXVldWUuaCAgICAgICAgICB8ICAyICstDQo+ICA3IGZpbGVz IGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCAxMDggZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpby5oDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpby5oIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRp by5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmViMDc4YmMy MjcNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvLmgN Cj4gQEAgLTAsMCArMSw3NSBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0K PiArICogQ29weXJpZ2h0KGMpIDIwMjAgUmVkIEhhdCwgSW5jLg0KPiArICovDQo+ICsNCj4gKyNp Zm5kZWYgX1ZJUlRJT19IXw0KPiArI2RlZmluZSBfVklSVElPX0hfDQo+ICsNCj4gKyNpbmNsdWRl IDxydGVfZXRoZXIuaD4NCj4gKw0KPiArc3RydWN0IHZpcnRpb19odyB7DQo+ICsJc3RydWN0IHZp cnRxdWV1ZSAqKnZxczsNCj4gKwl1aW50NjRfdCBndWVzdF9mZWF0dXJlczsNCj4gKwl1aW50MTZf dCB2dG5ldF9oZHJfc2l6ZTsNCj4gKwl1aW50OF90IHN0YXJ0ZWQ7DQo+ICsJdWludDhfdCB3ZWFr X2JhcnJpZXJzOw0KPiArCXVpbnQ4X3Qgdmxhbl9zdHJpcDsNCj4gKwl1aW50OF90IGhhc190eF9v ZmZsb2FkOw0KPiArCXVpbnQ4X3QgaGFzX3J4X29mZmxvYWQ7DQo+ICsJdWludDhfdCB1c2VfdmVj X3J4Ow0KPiArCXVpbnQ4X3QgdXNlX3ZlY190eDsNCj4gKwl1aW50OF90IHVzZV9pbm9yZGVyX3J4 Ow0KPiArCXVpbnQ4X3QgdXNlX2lub3JkZXJfdHg7DQo+ICsJdWludDhfdCBvcGVuZWQ7DQo+ICsJ dWludDE2X3QgcG9ydF9pZDsNCj4gKwl1aW50OF90IG1hY19hZGRyW1JURV9FVEhFUl9BRERSX0xF Tl07DQo+ICsJdWludDMyX3Qgc3BlZWQ7ICAvKiBsaW5rIHNwZWVkIGluIE1CICovDQo+ICsJdWlu dDhfdCBkdXBsZXg7DQo+ICsJdWludDhfdCB1c2VfbXNpeDsNCj4gKwl1aW50MTZfdCBtYXhfbXR1 Ow0KPiArCS8qDQo+ICsJICogQXBwIG1hbmFnZW1lbnQgdGhyZWFkIGFuZCB2aXJ0aW8gaW50ZXJy dXB0IGhhbmRsZXIgdGhyZWFkDQo+ICsJICogYm90aCBjYW4gY2hhbmdlIGRldmljZSBzdGF0ZSwg dGhpcyBsb2NrIGlzIG1lYW50IHRvIGF2b2lkDQo+ICsJICogc3VjaCBhIGNvbnRlbnRpb24uDQo+ ICsJICovDQo+ICsJcnRlX3NwaW5sb2NrX3Qgc3RhdGVfbG9jazsNCj4gKwlzdHJ1Y3QgcnRlX21i dWYgKippbmplY3RfcGt0czsNCj4gKwl1aW50MTZfdCBtYXhfcXVldWVfcGFpcnM7DQo+ICsJdWlu dDY0X3QgcmVxX2d1ZXN0X2ZlYXR1cmVzOw0KPiArCXN0cnVjdCB2aXJ0bmV0X2N0bCAqY3ZxOw0K PiArfTsNCj4gKw0KPiArc3RydWN0IHZpcnRpb19vcHMgew0KPiArCXZvaWQgKCpyZWFkX2Rldl9j ZmcpKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzaXplX3Qgb2Zmc2V0LCB2b2lkICpkc3QsIGludA0K PiBsZW4pOw0KPiArCXZvaWQgKCp3cml0ZV9kZXZfY2ZnKShzdHJ1Y3QgdmlydGlvX2h3ICpodywg c2l6ZV90IG9mZnNldCwgY29uc3Qgdm9pZA0KPiAqc3JjLCBpbnQgbGVuKTsNCj4gKwl1aW50OF90 ICgqZ2V0X3N0YXR1cykoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiArCXZvaWQgKCpzZXRfc3Rh dHVzKShzdHJ1Y3QgdmlydGlvX2h3ICpodywgdWludDhfdCBzdGF0dXMpOw0KPiArCXVpbnQ2NF90 ICgqZ2V0X2ZlYXR1cmVzKShzdHJ1Y3QgdmlydGlvX2h3ICpodyk7DQo+ICsJdm9pZCAoKnNldF9m ZWF0dXJlcykoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQ2NF90IGZlYXR1cmVzKTsNCj4gKwlp bnQgKCpmZWF0dXJlc19vaykoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiArCXVpbnQ4X3QgKCpn ZXRfaXNyKShzdHJ1Y3QgdmlydGlvX2h3ICpodyk7DQo+ICsJdWludDE2X3QgKCpzZXRfY29uZmln X2lycSkoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQxNl90IHZlYyk7DQo+ICsJdWludDE2X3Qg KCpzZXRfcXVldWVfaXJxKShzdHJ1Y3QgdmlydGlvX2h3ICpodywgc3RydWN0IHZpcnRxdWV1ZSAq dnEsDQo+IHVpbnQxNl90IHZlYyk7DQo+ICsJdWludDE2X3QgKCpnZXRfcXVldWVfbnVtKShzdHJ1 Y3QgdmlydGlvX2h3ICpodywgdWludDE2X3QgcXVldWVfaWQpOw0KPiArCWludCAoKnNldHVwX3F1 ZXVlKShzdHJ1Y3QgdmlydGlvX2h3ICpodywgc3RydWN0IHZpcnRxdWV1ZSAqdnEpOw0KPiArCXZv aWQgKCpkZWxfcXVldWUpKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzdHJ1Y3QgdmlydHF1ZXVlICp2 cSk7DQo+ICsJdm9pZCAoKm5vdGlmeV9xdWV1ZSkoc3RydWN0IHZpcnRpb19odyAqaHcsIHN0cnVj dCB2aXJ0cXVldWUgKnZxKTsNCj4gKwlpbnQgKCpkZXZfY2xvc2UpKHN0cnVjdCB2aXJ0aW9faHcg Kmh3KTsNCj4gK307DQo+ICsNCj4gKy8qDQo+ICsgKiBXaGlsZSB2aXJ0aW9faHcgaXMgc3RvcmVk IGluIHNoYXJlZCBtZW1vcnksIHRoaXMgc3RydWN0dXJlIHN0b3Jlcw0KPiArICogc29tZSBpbmZv cyB0aGF0IG1heSB2YXJ5IGluIHRoZSBtdWx0aXBsZSBwcm9jZXNzIG1vZGVsIGxvY2FsbHkuDQo+ ICsgKiBGb3IgZXhhbXBsZSwgdGhlIHZ0cGNpX29wcyBwb2ludGVyLg0KPiArICovDQo+ICtzdHJ1 Y3QgdmlydGlvX2h3X2ludGVybmFsIHsNCj4gKwljb25zdCBzdHJ1Y3QgdmlydGlvX29wcyAqdmly dGlvX29wczsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgVklSVElPX09QUyhodykJKHZpcnRpb19o d19pbnRlcm5hbFsoaHcpLT5wb3J0X2lkXS52aXJ0aW9fb3BzKQ0KPiArDQo+ICtleHRlcm4gc3Ry dWN0IHZpcnRpb19od19pbnRlcm5hbCB2aXJ0aW9faHdfaW50ZXJuYWxbUlRFX01BWF9FVEhQT1JU U107DQo+ICsNCj4gKw0KPiArI2VuZGlmIC8qIF9WSVJUSU9fSF8gKi8NCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMNCj4gYi9kcml2ZXJzL25ldC92aXJ0 aW8vdmlydGlvX2V0aGRldi5jDQo+IGluZGV4IDg2ZDg5MzBlNzguLjgwYjNmZGJhOWUgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMNCj4gKysrIGIvZHJp dmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYw0KPiBAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZp cnRpb19pbml0X3F1ZXVlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdA0KPiB2dHBj aV9xdWV1ZV9pZHgpDQo+ICAJICogUmVhZCB0aGUgdmlydHF1ZXVlIHNpemUgZnJvbSB0aGUgUXVl dWUgU2l6ZSBmaWVsZA0KPiAgCSAqIEFsd2F5cyBwb3dlciBvZiAyIGFuZCBpZiAwIHZpcnRxdWV1 ZSBkb2VzIG5vdCBleGlzdA0KPiAgCSAqLw0KPiAtCXZxX3NpemUgPSBWVFBDSV9PUFMoaHcpLT5n ZXRfcXVldWVfbnVtKGh3LCB2dHBjaV9xdWV1ZV9pZHgpOw0KPiArCXZxX3NpemUgPSBWSVJUSU9f T1BTKGh3KS0+Z2V0X3F1ZXVlX251bShodywgdnRwY2lfcXVldWVfaWR4KTsNCj4gIAlQTURfSU5J VF9MT0coREVCVUcsICJ2cV9zaXplOiAldSIsIHZxX3NpemUpOw0KPiAgCWlmICh2cV9zaXplID09 IDApIHsNCj4gIAkJUE1EX0lOSVRfTE9HKEVSUiwgInZpcnRxdWV1ZSBkb2VzIG5vdCBleGlzdCIp Ow0KPiBAQCAtNjA4LDcgKzYwOCw3IEBAIHZpcnRpb19pbml0X3F1ZXVlKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCB1aW50MTZfdA0KPiB2dHBjaV9xdWV1ZV9pZHgpDQo+ICAJCX0NCj4gIAl9DQo+ IA0KPiAtCWlmIChWVFBDSV9PUFMoaHcpLT5zZXR1cF9xdWV1ZShodywgdnEpIDwgMCkgew0KPiAr CWlmIChWSVJUSU9fT1BTKGh3KS0+c2V0dXBfcXVldWUoaHcsIHZxKSA8IDApIHsNCj4gIAkJUE1E X0lOSVRfTE9HKEVSUiwgInNldHVwX3F1ZXVlIGZhaWxlZCIpOw0KPiAgCQlyZXR1cm4gLUVJTlZB TDsNCj4gIAl9DQo+IEBAIC03MDMsNyArNzAzLDcgQEAgdmlydGlvX2Rldl9jbG9zZShzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldikNCj4gDQo+ICAJLyogcmVzZXQgdGhlIE5JQyAqLw0KPiAgCWlmIChk ZXYtPmRhdGEtPmRldl9mbGFncyAmIFJURV9FVEhfREVWX0lOVFJfTFNDKQ0KPiAtCQlWVFBDSV9P UFMoaHcpLT5zZXRfY29uZmlnX2lycShodywgVklSVElPX01TSV9OT19WRUNUT1IpOw0KPiArCQlW SVJUSU9fT1BTKGh3KS0+c2V0X2NvbmZpZ19pcnEoaHcsIFZJUlRJT19NU0lfTk9fVkVDVE9SKTsN Cj4gIAlpZiAoaW50cl9jb25mLT5yeHEpDQo+ICAJCXZpcnRpb19xdWV1ZXNfdW5iaW5kX2ludHIo ZGV2KTsNCj4gDQo+IEBAIC03MTgsNyArNzE4LDcgQEAgdmlydGlvX2Rldl9jbG9zZShzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldikNCj4gIAl2aXJ0aW9fZGV2X2ZyZWVfbWJ1ZnMoZGV2KTsNCj4gIAl2 aXJ0aW9fZnJlZV9xdWV1ZXMoaHcpOw0KPiANCj4gLQlyZXR1cm4gVlRQQ0lfT1BTKGh3KS0+ZGV2 X2Nsb3NlKGh3KTsNCj4gKwlyZXR1cm4gVklSVElPX09QUyhodyktPmRldl9jbG9zZShodyk7DQo+ ICB9DQo+IA0KPiAgc3RhdGljIGludA0KPiBAQCAtMTI5MCw3ICsxMjkwLDcgQEAgdmlydGlvX25l Z290aWF0ZV9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX2h3ICpodywgdWludDY0X3QNCj4gcmVxX2Zl YXR1cmVzKQ0KPiAgCQlyZXFfZmVhdHVyZXMpOw0KPiANCj4gIAkvKiBSZWFkIGRldmljZShob3N0 KSBmZWF0dXJlIGJpdHMgKi8NCj4gLQlob3N0X2ZlYXR1cmVzID0gVlRQQ0lfT1BTKGh3KS0+Z2V0 X2ZlYXR1cmVzKGh3KTsNCj4gKwlob3N0X2ZlYXR1cmVzID0gVklSVElPX09QUyhodyktPmdldF9m ZWF0dXJlcyhodyk7DQo+ICAJUE1EX0lOSVRfTE9HKERFQlVHLCAiaG9zdF9mZWF0dXJlcyBiZWZv cmUgbmVnb3RpYXRlID0gJSIgUFJJeDY0LA0KPiAgCQlob3N0X2ZlYXR1cmVzKTsNCj4gDQo+IEBA IC0xMzE1LDcgKzEzMTUsNyBAQCB2aXJ0aW9fbmVnb3RpYXRlX2ZlYXR1cmVzKHN0cnVjdCB2aXJ0 aW9faHcgKmh3LCB1aW50NjRfdA0KPiByZXFfZmVhdHVyZXMpDQo+ICAJUE1EX0lOSVRfTE9HKERF QlVHLCAiZmVhdHVyZXMgYWZ0ZXIgbmVnb3RpYXRlID0gJSIgUFJJeDY0LA0KPiAgCQlody0+Z3Vl c3RfZmVhdHVyZXMpOw0KPiANCj4gLQlpZiAoVlRQQ0lfT1BTKGh3KS0+ZmVhdHVyZXNfb2soaHcp IDwgMCkgew0KPiArCWlmIChWSVJUSU9fT1BTKGh3KS0+ZmVhdHVyZXNfb2soaHcpIDwgMCkgew0K PiAgCQlQTURfSU5JVF9MT0coRVJSLCAiRmVhdHVyZXMgbm90IE9LIGF0IGJ1cyBsZXZlbFxuIik7 DQo+ICAJCXJldHVybiAtMTsNCj4gIAl9DQo+IEBAIC0xNTUxLDcgKzE1NTEsNyBAQCB2aXJ0aW9f cXVldWVzX2JpbmRfaW50cihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gIAlQTURfSU5JVF9M T0coSU5GTywgInF1ZXVlL2ludGVycnVwdCBiaW5kaW5nIik7DQo+ICAJZm9yIChpID0gMDsgaSA8 IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzOyArK2kpIHsNCj4gIAkJZGV2LT5pbnRyX2hhbmRsZS0+ aW50cl92ZWNbaV0gPSBpICsgMTsNCj4gLQkJaWYgKFZUUENJX09QUyhodyktPnNldF9xdWV1ZV9p cnEoaHcsIGh3LT52cXNbaSAqIDJdLCBpICsgMSkgPT0NCj4gKwkJaWYgKFZJUlRJT19PUFMoaHcp LT5zZXRfcXVldWVfaXJxKGh3LCBody0+dnFzW2kgKiAyXSwgaSArIDEpID09DQo+ICAJCQkJCQkg VklSVElPX01TSV9OT19WRUNUT1IpIHsNCj4gIAkJCVBNRF9EUlZfTE9HKEVSUiwgImZhaWxlZCB0 byBzZXQgcXVldWUgdmVjdG9yIik7DQo+ICAJCQlyZXR1cm4gLUVCVVNZOw0KPiBAQCAtMTU2OSw3 ICsxNTY5LDcgQEAgdmlydGlvX3F1ZXVlc191bmJpbmRfaW50cihzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldikNCj4gDQo+ICAJUE1EX0lOSVRfTE9HKElORk8sICJxdWV1ZS9pbnRlcnJ1cHQgdW5iaW5k aW5nIik7DQo+ICAJZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzOyArK2kp DQo+IC0JCVZUUENJX09QUyhodyktPnNldF9xdWV1ZV9pcnEoaHcsDQo+ICsJCVZJUlRJT19PUFMo aHcpLT5zZXRfcXVldWVfaXJxKGh3LA0KPiAgCQkJCQkgICAgIGh3LT52cXNbaSAqIFZUTkVUX0NR XSwNCj4gIAkJCQkJICAgICBWSVJUSU9fTVNJX05PX1ZFQ1RPUik7DQo+ICB9DQo+IEBAIC0yMDgx LDcgKzIwODEsNyBAQCB2aXJ0aW9fZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl dikNCj4gDQo+ICAJaWYgKGRldi0+ZGF0YS0+ZGV2X2ZsYWdzICYgUlRFX0VUSF9ERVZfSU5UUl9M U0MpDQo+ICAJCS8qIEVuYWJsZSB2ZWN0b3IgKDApIGZvciBMaW5rIFN0YXRlIEludHJlcnJ1cHQg Ki8NCj4gLQkJaWYgKFZUUENJX09QUyhodyktPnNldF9jb25maWdfaXJxKGh3LCAwKSA9PQ0KPiAr CQlpZiAoVklSVElPX09QUyhodyktPnNldF9jb25maWdfaXJxKGh3LCAwKSA9PQ0KPiAgCQkJCVZJ UlRJT19NU0lfTk9fVkVDVE9SKSB7DQo+ICAJCQlQTURfRFJWX0xPRyhFUlIsICJmYWlsZWQgdG8g c2V0IGNvbmZpZyB2ZWN0b3IiKTsNCj4gIAkJCXJldHVybiAtRUJVU1k7DQo+IEBAIC0yNDExLDcg KzI0MTEsNyBAQCB2aXJ0aW9fZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QNCj4gcnRlX2V0aF9kZXZfaW5mbyAqZGV2X2luZm8pDQo+ICAJZGV2X2luZm8tPm1heF9y eF9wa3RsZW4gPSBWSVJUSU9fTUFYX1JYX1BLVExFTjsNCj4gIAlkZXZfaW5mby0+bWF4X21hY19h ZGRycyA9IFZJUlRJT19NQVhfTUFDX0FERFJTOw0KPiANCj4gLQlob3N0X2ZlYXR1cmVzID0gVlRQ Q0lfT1BTKGh3KS0+Z2V0X2ZlYXR1cmVzKGh3KTsNCj4gKwlob3N0X2ZlYXR1cmVzID0gVklSVElP X09QUyhodyktPmdldF9mZWF0dXJlcyhodyk7DQo+ICAJZGV2X2luZm8tPnJ4X29mZmxvYWRfY2Fw YSA9IERFVl9SWF9PRkZMT0FEX1ZMQU5fU1RSSVA7DQo+ICAJZGV2X2luZm8tPnJ4X29mZmxvYWRf Y2FwYSB8PSBERVZfUlhfT0ZGTE9BRF9KVU1CT19GUkFNRTsNCj4gIAlpZiAoaG9zdF9mZWF0dXJl cyAmICgxVUxMIDw8IFZJUlRJT19ORVRfRl9HVUVTVF9DU1VNKSkgew0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuYyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0 aW9fcGNpLmMNCj4gaW5kZXggMjMwYTQzOGJmNy4uZGY2OWZjZGQ0NSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuYw0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0 aW8vdmlydGlvX3BjaS5jDQo+IEBAIC0yNjcsNyArMjY3LDcgQEAgbGVnYWN5X2Rldl9jbG9zZShz dHJ1Y3QgdmlydGlvX2h3ICpodykNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+IC1jb25zdCBz dHJ1Y3QgdmlydGlvX3BjaV9vcHMgbGVnYWN5X29wcyA9IHsNCj4gK2NvbnN0IHN0cnVjdCB2aXJ0 aW9fb3BzIGxlZ2FjeV9vcHMgPSB7DQo+ICAJLnJlYWRfZGV2X2NmZwk9IGxlZ2FjeV9yZWFkX2Rl dl9jb25maWcsDQo+ICAJLndyaXRlX2Rldl9jZmcJPSBsZWdhY3lfd3JpdGVfZGV2X2NvbmZpZywN Cj4gIAkuZ2V0X3N0YXR1cwk9IGxlZ2FjeV9nZXRfc3RhdHVzLA0KPiBAQCAtNTE1LDcgKzUxNSw3 IEBAIG1vZGVybl9kZXZfY2xvc2Uoc3RydWN0IHZpcnRpb19odyAqaHcpDQo+ICAJcmV0dXJuIDA7 DQo+ICB9DQo+IA0KPiAtY29uc3Qgc3RydWN0IHZpcnRpb19wY2lfb3BzIG1vZGVybl9vcHMgPSB7 DQo+ICtjb25zdCBzdHJ1Y3QgdmlydGlvX29wcyBtb2Rlcm5fb3BzID0gew0KPiAgCS5yZWFkX2Rl dl9jZmcJPSBtb2Rlcm5fcmVhZF9kZXZfY29uZmlnLA0KPiAgCS53cml0ZV9kZXZfY2ZnCT0gbW9k ZXJuX3dyaXRlX2Rldl9jb25maWcsDQo+ICAJLmdldF9zdGF0dXMJPSBtb2Rlcm5fZ2V0X3N0YXR1 cywNCj4gQEAgLTUzOCwxNCArNTM4LDE0IEBAIHZvaWQNCj4gIHZ0cGNpX3JlYWRfZGV2X2NvbmZp ZyhzdHJ1Y3QgdmlydGlvX2h3ICpodywgc2l6ZV90IG9mZnNldCwNCj4gIAkJICAgICAgdm9pZCAq ZHN0LCBpbnQgbGVuZ3RoKQ0KPiAgew0KPiAtCVZUUENJX09QUyhodyktPnJlYWRfZGV2X2NmZyho dywgb2Zmc2V0LCBkc3QsIGxlbmd0aCk7DQo+ICsJVklSVElPX09QUyhodyktPnJlYWRfZGV2X2Nm Zyhodywgb2Zmc2V0LCBkc3QsIGxlbmd0aCk7DQo+ICB9DQo+IA0KPiAgdm9pZA0KPiAgdnRwY2lf d3JpdGVfZGV2X2NvbmZpZyhzdHJ1Y3QgdmlydGlvX2h3ICpodywgc2l6ZV90IG9mZnNldCwNCj4g IAkJICAgICAgIGNvbnN0IHZvaWQgKnNyYywgaW50IGxlbmd0aCkNCj4gIHsNCj4gLQlWVFBDSV9P UFMoaHcpLT53cml0ZV9kZXZfY2ZnKGh3LCBvZmZzZXQsIHNyYywgbGVuZ3RoKTsNCj4gKwlWSVJU SU9fT1BTKGh3KS0+d3JpdGVfZGV2X2NmZyhodywgb2Zmc2V0LCBzcmMsIGxlbmd0aCk7DQo+ICB9 DQo+IA0KPiAgdWludDY0X3QNCj4gQEAgLTU1OCw3ICs1NTgsNyBAQCB2dHBjaV9uZWdvdGlhdGVf ZmVhdHVyZXMoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQ2NF90DQo+IGhvc3RfZmVhdHVyZXMp DQo+ICAJICogaG9zdCBhbGwgc3VwcG9ydC4NCj4gIAkgKi8NCj4gIAlmZWF0dXJlcyA9IGhvc3Rf ZmVhdHVyZXMgJiBody0+Z3Vlc3RfZmVhdHVyZXM7DQo+IC0JVlRQQ0lfT1BTKGh3KS0+c2V0X2Zl YXR1cmVzKGh3LCBmZWF0dXJlcyk7DQo+ICsJVklSVElPX09QUyhodyktPnNldF9mZWF0dXJlcyho dywgZmVhdHVyZXMpOw0KPiANCj4gIAlyZXR1cm4gZmVhdHVyZXM7DQo+ICB9DQo+IEBAIC01NjYs OSArNTY2LDkgQEAgdnRwY2lfbmVnb3RpYXRlX2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9faHcgKmh3 LCB1aW50NjRfdA0KPiBob3N0X2ZlYXR1cmVzKQ0KPiAgdm9pZA0KPiAgdnRwY2lfcmVzZXQoc3Ry dWN0IHZpcnRpb19odyAqaHcpDQo+ICB7DQo+IC0JVlRQQ0lfT1BTKGh3KS0+c2V0X3N0YXR1cyho dywgVklSVElPX0NPTkZJR19TVEFUVVNfUkVTRVQpOw0KPiArCVZJUlRJT19PUFMoaHcpLT5zZXRf c3RhdHVzKGh3LCBWSVJUSU9fQ09ORklHX1NUQVRVU19SRVNFVCk7DQo+ICAJLyogZmx1c2ggc3Rh dHVzIHdyaXRlICovDQo+IC0JVlRQQ0lfT1BTKGh3KS0+Z2V0X3N0YXR1cyhodyk7DQo+ICsJVklS VElPX09QUyhodyktPmdldF9zdGF0dXMoaHcpOw0KPiAgfQ0KPiANCj4gIHZvaWQNCj4gQEAgLTU4 MSwyMSArNTgxLDIxIEBAIHZvaWQNCj4gIHZ0cGNpX3NldF9zdGF0dXMoc3RydWN0IHZpcnRpb19o dyAqaHcsIHVpbnQ4X3Qgc3RhdHVzKQ0KPiAgew0KPiAgCWlmIChzdGF0dXMgIT0gVklSVElPX0NP TkZJR19TVEFUVVNfUkVTRVQpDQo+IC0JCXN0YXR1cyB8PSBWVFBDSV9PUFMoaHcpLT5nZXRfc3Rh dHVzKGh3KTsNCj4gKwkJc3RhdHVzIHw9IFZJUlRJT19PUFMoaHcpLT5nZXRfc3RhdHVzKGh3KTsN Cj4gDQo+IC0JVlRQQ0lfT1BTKGh3KS0+c2V0X3N0YXR1cyhodywgc3RhdHVzKTsNCj4gKwlWSVJU SU9fT1BTKGh3KS0+c2V0X3N0YXR1cyhodywgc3RhdHVzKTsNCj4gIH0NCj4gDQo+ICB1aW50OF90 DQo+ICB2dHBjaV9nZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9faHcgKmh3KQ0KPiAgew0KPiAtCXJl dHVybiBWVFBDSV9PUFMoaHcpLT5nZXRfc3RhdHVzKGh3KTsNCj4gKwlyZXR1cm4gVklSVElPX09Q UyhodyktPmdldF9zdGF0dXMoaHcpOw0KPiAgfQ0KPiANCj4gIHVpbnQ4X3QNCj4gIHZ0cGNpX2lz cihzdHJ1Y3QgdmlydGlvX2h3ICpodykNCj4gIHsNCj4gLQlyZXR1cm4gVlRQQ0lfT1BTKGh3KS0+ Z2V0X2lzcihodyk7DQo+ICsJcmV0dXJuIFZJUlRJT19PUFMoaHcpLT5nZXRfaXNyKGh3KTsNCj4g IH0NCj4gDQo+ICBzdGF0aWMgdm9pZCAqDQo+IEBAIC03NzIsNyArNzcyLDcgQEAgdnRwY2lfaW5p dChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYsIHN0cnVjdA0KPiB2aXJ0aW9fcGNpX2Rl diAqZGV2KQ0KPiAgCSAqLw0KPiAgCWlmICh2aXJ0aW9fcmVhZF9jYXBzKHBjaV9kZXYsIGh3KSA9 PSAwKSB7DQo+ICAJCVBNRF9JTklUX0xPRyhJTkZPLCAibW9kZXJuIHZpcnRpbyBwY2kgZGV0ZWN0 ZWQuIik7DQo+IC0JCXZpcnRpb19od19pbnRlcm5hbFtody0+cG9ydF9pZF0udnRwY2lfb3BzID0g Jm1vZGVybl9vcHM7DQo+ICsJCVZJUlRJT19PUFMoaHcpID0gJm1vZGVybl9vcHM7DQo+ICAJCWRl di0+bW9kZXJuID0gdHJ1ZTsNCj4gIAkJZ290byBtc2l4X2RldGVjdDsNCj4gIAl9DQo+IEBAIC03 OTEsNyArNzkxLDcgQEAgdnRwY2lfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYs IHN0cnVjdA0KPiB2aXJ0aW9fcGNpX2RldiAqZGV2KQ0KPiAgCQlyZXR1cm4gLTE7DQo+ICAJfQ0K PiANCj4gLQl2aXJ0aW9faHdfaW50ZXJuYWxbaHctPnBvcnRfaWRdLnZ0cGNpX29wcyA9ICZsZWdh Y3lfb3BzOw0KPiArCVZJUlRJT19PUFMoaHcpID0gJmxlZ2FjeV9vcHM7DQo+ICAJZGV2LT5tb2Rl cm4gPSBmYWxzZTsNCj4gDQo+ICBtc2l4X2RldGVjdDoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fcGNpLmggYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3BjaS5o DQo+IGluZGV4IGMzZGIzNmQyZmMuLjhiMDdjNGEzNjkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fcGNpLmgNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRp b19wY2kuaA0KPiBAQCAtMTIsNiArMTIsOCBAQA0KPiAgI2luY2x1ZGUgPHJ0ZV9idXNfcGNpLmg+ DQo+ICAjaW5jbHVkZSA8cnRlX2V0aGRldl9kcml2ZXIuaD4NCj4gDQo+ICsjaW5jbHVkZSAidmly dGlvLmgiDQo+ICsNCj4gIHN0cnVjdCB2aXJ0cXVldWU7DQo+ICBzdHJ1Y3QgdmlydG5ldF9jdGw7 DQo+IA0KPiBAQCAtMjE0LDY4ICsyMTYsNiBAQCBzdHJ1Y3QgdmlydGlvX3BjaV9jb21tb25fY2Zn IHsNCj4gIAl1aW50MzJfdCBxdWV1ZV91c2VkX2hpOwkJLyogcmVhZC13cml0ZSAqLw0KPiAgfTsN Cj4gDQo+IC1zdHJ1Y3QgdmlydGlvX2h3Ow0KPiAtDQo+IC1zdHJ1Y3QgdmlydGlvX3BjaV9vcHMg ew0KPiAtCXZvaWQgKCpyZWFkX2Rldl9jZmcpKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzaXplX3Qg b2Zmc2V0LA0KPiAtCQkJICAgICB2b2lkICpkc3QsIGludCBsZW4pOw0KPiAtCXZvaWQgKCp3cml0 ZV9kZXZfY2ZnKShzdHJ1Y3QgdmlydGlvX2h3ICpodywgc2l6ZV90IG9mZnNldCwNCj4gLQkJCSAg ICAgIGNvbnN0IHZvaWQgKnNyYywgaW50IGxlbik7DQo+IC0NCj4gLQl1aW50OF90ICgqZ2V0X3N0 YXR1cykoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiAtCXZvaWQgICAgKCpzZXRfc3RhdHVzKShz dHJ1Y3QgdmlydGlvX2h3ICpodywgdWludDhfdCBzdGF0dXMpOw0KPiAtDQo+IC0JdWludDY0X3Qg KCpnZXRfZmVhdHVyZXMpKHN0cnVjdCB2aXJ0aW9faHcgKmh3KTsNCj4gLQl2b2lkICAgICAoKnNl dF9mZWF0dXJlcykoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQ2NF90IGZlYXR1cmVzKTsNCj4g LQlpbnQgICAgICAoKmZlYXR1cmVzX29rKShzdHJ1Y3QgdmlydGlvX2h3ICpodyk7DQo+IC0NCj4g LQl1aW50OF90ICgqZ2V0X2lzcikoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiAtDQo+IC0JdWlu dDE2X3QgKCpzZXRfY29uZmlnX2lycSkoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQxNl90IHZl Yyk7DQo+IC0NCj4gLQl1aW50MTZfdCAoKnNldF9xdWV1ZV9pcnEpKHN0cnVjdCB2aXJ0aW9faHcg Kmh3LCBzdHJ1Y3QgdmlydHF1ZXVlICp2cSwNCj4gLQkJCXVpbnQxNl90IHZlYyk7DQo+IC0NCj4g LQl1aW50MTZfdCAoKmdldF9xdWV1ZV9udW0pKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCB1aW50MTZf dCBxdWV1ZV9pZCk7DQo+IC0JaW50ICgqc2V0dXBfcXVldWUpKHN0cnVjdCB2aXJ0aW9faHcgKmh3 LCBzdHJ1Y3QgdmlydHF1ZXVlICp2cSk7DQo+IC0Jdm9pZCAoKmRlbF9xdWV1ZSkoc3RydWN0IHZp cnRpb19odyAqaHcsIHN0cnVjdCB2aXJ0cXVldWUgKnZxKTsNCj4gLQl2b2lkICgqbm90aWZ5X3F1 ZXVlKShzdHJ1Y3QgdmlydGlvX2h3ICpodywgc3RydWN0IHZpcnRxdWV1ZSAqdnEpOw0KPiAtCWlu dCAoKmRldl9jbG9zZSkoc3RydWN0IHZpcnRpb19odyAqaHcpOw0KPiAtfTsNCj4gLQ0KPiAtc3Ry dWN0IHZpcnRpb19uZXRfY29uZmlnOw0KPiAtDQo+IC1zdHJ1Y3QgdmlydGlvX2h3IHsNCj4gLQlz dHJ1Y3QgdmlydHF1ZXVlICoqdnFzOw0KPiAtCXVpbnQ2NF90IGd1ZXN0X2ZlYXR1cmVzOw0KPiAt CXVpbnQxNl90IHZ0bmV0X2hkcl9zaXplOw0KPiAtCXVpbnQ4X3Qgc3RhcnRlZDsNCj4gLQl1aW50 OF90IHdlYWtfYmFycmllcnM7DQo+IC0JdWludDhfdCB2bGFuX3N0cmlwOw0KPiAtCXVpbnQ4X3Qg aGFzX3R4X29mZmxvYWQ7DQo+IC0JdWludDhfdCBoYXNfcnhfb2ZmbG9hZDsNCj4gLQl1aW50OF90 IHVzZV92ZWNfcng7DQo+IC0JdWludDhfdCB1c2VfdmVjX3R4Ow0KPiAtCXVpbnQ4X3QgdXNlX2lu b3JkZXJfcng7DQo+IC0JdWludDhfdCB1c2VfaW5vcmRlcl90eDsNCj4gLQl1aW50OF90IG9wZW5l ZDsNCj4gLQl1aW50MTZfdCBwb3J0X2lkOw0KPiAtCXVpbnQ4X3QgbWFjX2FkZHJbUlRFX0VUSEVS X0FERFJfTEVOXTsNCj4gLQl1aW50MzJfdCBzcGVlZDsgIC8qIGxpbmsgc3BlZWQgaW4gTUIgKi8N Cj4gLQl1aW50OF90IGR1cGxleDsNCj4gLQl1aW50OF90IHVzZV9tc2l4Ow0KPiAtCXVpbnQxNl90 IG1heF9tdHU7DQo+IC0JLyoNCj4gLQkgKiBBcHAgbWFuYWdlbWVudCB0aHJlYWQgYW5kIHZpcnRp byBpbnRlcnJ1cHQgaGFuZGxlciB0aHJlYWQNCj4gLQkgKiBib3RoIGNhbiBjaGFuZ2UgZGV2aWNl IHN0YXRlLCB0aGlzIGxvY2sgaXMgbWVhbnQgdG8gYXZvaWQNCj4gLQkgKiBzdWNoIGEgY29udGVu dGlvbi4NCj4gLQkgKi8NCj4gLQlydGVfc3BpbmxvY2tfdCBzdGF0ZV9sb2NrOw0KPiAtCXN0cnVj dCBydGVfbWJ1ZiAqKmluamVjdF9wa3RzOw0KPiAtCXVpbnQxNl90IG1heF9xdWV1ZV9wYWlyczsN Cj4gLQl1aW50NjRfdCByZXFfZ3Vlc3RfZmVhdHVyZXM7DQo+IC0Jc3RydWN0IHZpcnRuZXRfY3Rs ICpjdnE7DQo+IC19Ow0KPiANCj4gIHN0cnVjdCB2aXJ0aW9fcGNpX2RldiB7DQo+ICAJc3RydWN0 IHZpcnRpb19odyBodzsNCj4gQEAgLTI5MCwxOSArMjMwLDYgQEAgc3RydWN0IHZpcnRpb19wY2lf ZGV2IHsNCj4gDQo+ICAjZGVmaW5lIHZpcnRpb19wY2lfZ2V0X2RldihodykgY29udGFpbmVyX29m KGh3LCBzdHJ1Y3QgdmlydGlvX3BjaV9kZXYsIGh3KQ0KPiANCj4gLS8qDQo+IC0gKiBXaGlsZSB2 aXJ0aW9faHcgaXMgc3RvcmVkIGluIHNoYXJlZCBtZW1vcnksIHRoaXMgc3RydWN0dXJlIHN0b3Jl cw0KPiAtICogc29tZSBpbmZvcyB0aGF0IG1heSB2YXJ5IGluIHRoZSBtdWx0aXBsZSBwcm9jZXNz IG1vZGVsIGxvY2FsbHkuDQo+IC0gKiBGb3IgZXhhbXBsZSwgdGhlIHZ0cGNpX29wcyBwb2ludGVy Lg0KPiAtICovDQo+IC1zdHJ1Y3QgdmlydGlvX2h3X2ludGVybmFsIHsNCj4gLQljb25zdCBzdHJ1 Y3QgdmlydGlvX3BjaV9vcHMgKnZ0cGNpX29wczsNCj4gLX07DQo+IC0NCj4gLSNkZWZpbmUgVlRQ Q0lfT1BTKGh3KQkodmlydGlvX2h3X2ludGVybmFsWyhodyktPnBvcnRfaWRdLnZ0cGNpX29wcykN Cj4gLQ0KPiAtZXh0ZXJuIHN0cnVjdCB2aXJ0aW9faHdfaW50ZXJuYWwgdmlydGlvX2h3X2ludGVy bmFsW1JURV9NQVhfRVRIUE9SVFNdOw0KPiAtDQo+ICAvKg0KPiAgICogVGhpcyBzdHJ1Y3R1cmUg aXMganVzdCBhIHJlZmVyZW5jZSB0byByZWFkDQo+ICAgKiBuZXQgZGV2aWNlIHNwZWNpZmljIGNv bmZpZyBzcGFjZTsgaXQganVzdCBhIGNob2R1IHN0cnVjdHVyZQ0KPiBAQCAtMzgwLDggKzMwNyw3 IEBAIGVudW0gdmlydGlvX21zaXhfc3RhdHVzIHZ0cGNpX21zaXhfZGV0ZWN0KHN0cnVjdA0KPiBy dGVfcGNpX2RldmljZSAqZGV2KTsNCj4gIHZvaWQgdnRwY2lfbGVnYWN5X2lvcG9ydF91bm1hcChz dHJ1Y3QgdmlydGlvX2h3ICpodyk7DQo+ICBpbnQgdnRwY2lfbGVnYWN5X2lvcG9ydF9tYXAoc3Ry dWN0IHZpcnRpb19odyAqaHcpOw0KPiANCj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgdmlydGlvX3Bj aV9vcHMgbGVnYWN5X29wczsNCj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgdmlydGlvX3BjaV9vcHMg bW9kZXJuX29wczsNCj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgdmlydGlvX3BjaV9vcHMgdmlydGlv X3VzZXJfb3BzOw0KPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCB2aXJ0aW9fb3BzIGxlZ2FjeV9vcHM7 DQo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHZpcnRpb19vcHMgbW9kZXJuX29wczsNCj4gDQo+ICAj ZW5kaWYgLyogX1ZJUlRJT19QQ0lfSF8gKi8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Zp cnRpby92aXJ0aW9fcGNpX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19w Y2lfZXRoZGV2LmMNCj4gaW5kZXggMTczNDJhZTdkOC4uMzQ3ZGMyOTFlOCAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2lfZXRoZGV2LmMNCj4gKysrIGIvZHJpdmVy cy9uZXQvdmlydGlvL3ZpcnRpb19wY2lfZXRoZGV2LmMNCj4gQEAgLTE5LDYgKzE5LDcgQEANCj4g ICNpbmNsdWRlIDxydGVfZGV2Lmg+DQo+ICAjaW5jbHVkZSA8cnRlX2t2YXJncy5oPg0KPiANCj4g KyNpbmNsdWRlICJ2aXJ0aW8uaCINCj4gICNpbmNsdWRlICJ2aXJ0aW9fZXRoZGV2LmgiDQo+ICAj aW5jbHVkZSAidmlydGlvX3BjaS5oIg0KPiAgI2luY2x1ZGUgInZpcnRpb19sb2dzLmgiDQo+IEBA IC04Myw5ICs4NCw5IEBAIGV0aF92aXJ0aW9fcGNpX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpl dGhfZGV2KQ0KPiAgCQl9DQo+ICAJfSBlbHNlIHsNCj4gIAkJaWYgKGRldi0+bW9kZXJuKQ0KPiAt CQkJVlRQQ0lfT1BTKGh3KSA9ICZtb2Rlcm5fb3BzOw0KPiArCQkJVklSVElPX09QUyhodykgPSAm bW9kZXJuX29wczsNCj4gIAkJZWxzZQ0KPiAtCQkJVlRQQ0lfT1BTKGh3KSA9ICZsZWdhY3lfb3Bz Ow0KPiArCQkJVklSVElPX09QUyhodykgPSAmbGVnYWN5X29wczsNCj4gDQo+ICAJCXJldCA9IHZp cnRpb19yZW1hcF9wY2koUlRFX0VUSF9ERVZfVE9fUENJKGV0aF9kZXYpLCBkZXYpOw0KPiAgCQlp ZiAocmV0IDwgMCkgew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191 c2VyX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyX2V0aGRldi5j DQo+IGluZGV4IDE0MjBkYjMyYmUuLjE0NDY4ZGRmNTIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fdXNlcl9ldGhkZXYuYw0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0 aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMNCj4gQEAgLTIwLDcgKzIwLDcgQEANCj4gDQo+ICAjaW5j bHVkZSAidmlydGlvX2V0aGRldi5oIg0KPiAgI2luY2x1ZGUgInZpcnRpb19sb2dzLmgiDQo+IC0j aW5jbHVkZSAidmlydGlvX3BjaS5oIg0KPiArI2luY2x1ZGUgInZpcnRpby5oIg0KPiAgI2luY2x1 ZGUgInZpcnRxdWV1ZS5oIg0KPiAgI2luY2x1ZGUgInZpcnRpb19yeHR4LmgiDQo+ICAjaW5jbHVk ZSAidmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmgiDQo+IEBAIC00NzgsNyArNDc4LDcgQEAg dmlydGlvX3VzZXJfZGV2X2Nsb3NlKHN0cnVjdCB2aXJ0aW9faHcgKmh3KQ0KPiAgCXJldHVybiAw Ow0KPiAgfQ0KPiANCj4gLWNvbnN0IHN0cnVjdCB2aXJ0aW9fcGNpX29wcyB2aXJ0aW9fdXNlcl9v cHMgPSB7DQo+ICtjb25zdCBzdHJ1Y3QgdmlydGlvX29wcyB2aXJ0aW9fdXNlcl9vcHMgPSB7DQo+ ICAJLnJlYWRfZGV2X2NmZwk9IHZpcnRpb191c2VyX3JlYWRfZGV2X2NvbmZpZywNCj4gIAkud3Jp dGVfZGV2X2NmZwk9IHZpcnRpb191c2VyX3dyaXRlX2Rldl9jb25maWcsDQo+ICAJLmdldF9zdGF0 dXMJPSB2aXJ0aW9fdXNlcl9nZXRfc3RhdHVzLA0KPiBAQCAtNjM1LDcgKzYzNSw3IEBAIHZpcnRp b191c2VyX2V0aF9kZXZfYWxsb2Moc3RydWN0IHJ0ZV92ZGV2X2RldmljZSAqdmRldikNCj4gDQo+ ICAJaHctPnBvcnRfaWQgPSBkYXRhLT5wb3J0X2lkOw0KPiAgCWRldi0+cG9ydF9pZCA9IGRhdGEt PnBvcnRfaWQ7DQo+IC0JdmlydGlvX2h3X2ludGVybmFsW2h3LT5wb3J0X2lkXS52dHBjaV9vcHMg PSAmdmlydGlvX3VzZXJfb3BzOw0KPiArCVZJUlRJT19PUFMoaHcpID0gJnZpcnRpb191c2VyX29w czsNCj4gIAkvKg0KPiAgCSAqIE1TSVggaXMgcmVxdWlyZWQgdG8gZW5hYmxlIExTQyAoc2VlIHZp cnRpb19pbml0X2RldmljZSkuDQo+ICAJICogSGVyZSBqdXN0IHByZXRlbmQgdGhhdCB3ZSBzdXBw b3J0IG1zaXguDQo+IEBAIC03MDEsNyArNzAxLDcgQEAgdmlydGlvX3VzZXJfcG1kX3Byb2JlKHN0 cnVjdCBydGVfdmRldl9kZXZpY2UgKnZkZXYpDQo+IA0KPiAgCQlkZXYgPSBldGhfZGV2LT5kYXRh LT5kZXZfcHJpdmF0ZTsNCj4gIAkJaHcgPSAmZGV2LT5odzsNCj4gLQkJVlRQQ0lfT1BTKGh3KSA9 ICZ2aXJ0aW9fdXNlcl9vcHM7DQo+ICsJCVZJUlRJT19PUFMoaHcpID0gJnZpcnRpb191c2VyX29w czsNCj4gDQo+ICAJCWlmIChldGhfdmlydGlvX2Rldl9pbml0KGV0aF9kZXYpIDwgMCkgew0KPiAg CQkJUE1EX0lOSVRfTE9HKEVSUiwgImV0aF92aXJ0aW9fZGV2X2luaXQgZmFpbHMiKTsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0cXVldWUuaCBiL2RyaXZlcnMvbmV0L3Zp cnRpby92aXJ0cXVldWUuaA0KPiBpbmRleCBlNGExMzkzODE2Li45ZDIwODk3NjZiIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydHF1ZXVlLmgNCj4gKysrIGIvZHJpdmVycy9u ZXQvdmlydGlvL3ZpcnRxdWV1ZS5oDQo+IEBAIC01NjQsNyArNTY0LDcgQEAgdmlydHF1ZXVlX2tp Y2tfcHJlcGFyZV9wYWNrZWQoc3RydWN0IHZpcnRxdWV1ZSAqdnEpDQo+ICBzdGF0aWMgaW5saW5l IHZvaWQNCj4gIHZpcnRxdWV1ZV9ub3RpZnkoc3RydWN0IHZpcnRxdWV1ZSAqdnEpDQo+ICB7DQo+ IC0JVlRQQ0lfT1BTKHZxLT5odyktPm5vdGlmeV9xdWV1ZSh2cS0+aHcsIHZxKTsNCj4gKwlWSVJU SU9fT1BTKHZxLT5odyktPm5vdGlmeV9xdWV1ZSh2cS0+aHcsIHZxKTsNCj4gIH0NCj4gDQo+ICAj aWZkZWYgUlRFX0xJQlJURV9WSVJUSU9fREVCVUdfRFVNUA0KPiAtLQ0KPiAyLjI5LjINCg0KUmV2 aWV3ZWQtYnk6IENoZW5ibyBYaWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0K