From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E992AC43141 for ; Fri, 15 Nov 2019 21:17:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C35762073A for ; Fri, 15 Nov 2019 21:17:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726828AbfKOVRp (ORCPT ); Fri, 15 Nov 2019 16:17:45 -0500 Received: from mga11.intel.com ([192.55.52.93]:44002 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726598AbfKOVRo (ORCPT ); Fri, 15 Nov 2019 16:17:44 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2019 13:17:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,309,1569308400"; d="scan'208";a="356226040" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by orsmga004.jf.intel.com with ESMTP; 15 Nov 2019 13:17:42 -0800 Received: from orsmsx101.amr.corp.intel.com ([169.254.8.229]) by ORSMSX108.amr.corp.intel.com ([169.254.2.82]) with mapi id 14.03.0439.000; Fri, 15 Nov 2019 13:17:41 -0800 From: "Ertman, David M" To: 'Greg KH' , "Kirsher, Jeffrey T" CC: "davem@davemloft.net" , "netdev@vger.kernel.org" , "linux-rdma@vger.kernel.org" , "nhorman@redhat.com" , "sassmann@redhat.com" , "parav@mellanox.com" , "jgg@ziepe.ca" , "Patil, Kiran" Subject: RE: [net-next 1/1] virtual-bus: Implementation of Virtual Bus Thread-Topic: [net-next 1/1] virtual-bus: Implementation of Virtual Bus Thread-Index: AQHVmMVm9b0Ngs5xNEiEdFE1b2GqoqeIlM4AgAEGwxA= Date: Fri, 15 Nov 2019 21:17:41 +0000 Message-ID: <2B0E3F215D1AB84DA946C8BEE234CCC97B3008C1@ORSMSX101.amr.corp.intel.com> References: <20191111192219.30259-1-jeffrey.t.kirsher@intel.com> <20191112212826.GA1837470@kroah.com> In-Reply-To: <20191112212826.GA1837470@kroah.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.138] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHcmVnIEtIIDxncmVna2hAbGlu dXhmb3VuZGF0aW9uLm9yZz4NCj4gU2VudDogVHVlc2RheSwgTm92ZW1iZXIgMTIsIDIwMTkgMToy OCBQTQ0KPiBUbzogS2lyc2hlciwgSmVmZnJleSBUIDxqZWZmcmV5LnQua2lyc2hlckBpbnRlbC5j b20+DQo+IENjOiBkYXZlbUBkYXZlbWxvZnQubmV0OyBFcnRtYW4sIERhdmlkIE0gPGRhdmlkLm0u ZXJ0bWFuQGludGVsLmNvbT47DQo+IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXJkbWFA dmdlci5rZXJuZWwub3JnOw0KPiBuaG9ybWFuQHJlZGhhdC5jb207IHNhc3NtYW5uQHJlZGhhdC5j b207IHBhcmF2QG1lbGxhbm94LmNvbTsNCj4gamdnQHppZXBlLmNhOyBQYXRpbCwgS2lyYW4gPGtp cmFuLnBhdGlsQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtuZXQtbmV4dCAxLzFdIHZpcnR1 YWwtYnVzOiBJbXBsZW1lbnRhdGlvbiBvZiBWaXJ0dWFsIEJ1cw0KPiANCj4gT24gTW9uLCBOb3Yg MTEsIDIwMTkgYXQgMTE6MjI6MTlBTSAtMDgwMCwgSmVmZiBLaXJzaGVyIHdyb3RlOg0KPiA+IEZy b206IERhdmUgRXJ0bWFuIDxkYXZpZC5tLmVydG1hbkBpbnRlbC5jb20+DQo+ID4NCj4gPiBUaGlz IGlzIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWaXJ0dWFsIEJ1cywgdmlydGJ1 c19kZXZpY2UNCj4gPiBhbmQgdmlydGJ1c19kcml2ZXIuICBUaGUgdmlydHVhbCBidXMgaXMgYSBz b2Z0d2FyZSBiYXNlZCBidXMgaW50ZW5kZWQNCj4gPiB0byBzdXBwb3J0IGxpZ2h0d2VpZ2h0IGRl dmljZXMgYW5kIGRyaXZlcnMgYW5kIHByb3ZpZGUgbWF0Y2hpbmcNCj4gPiBiZXR3ZWVuIHRoZW0g YW5kIHByb2Jpbmcgb2YgdGhlIHJlZ2lzdGVyZWQgZHJpdmVycy4NCj4gPg0KPiA+IEZpbGVzIGFk ZGVkOg0KPiA+IAlkcml2ZXJzL2J1cy92aXJ0dWFsX2J1cy5jDQo+ID4gCWluY2x1ZGUvbGludXgv dmlydHVhbF9idXMuaA0KPiA+IAlEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmlydHVhbF9idXMu cnN0DQo+ID4NCj4gPiBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZSB2aXJ1YWwgYnVzIGlzIHRv IHByb3ZpZGUgbWF0Y2hpbmcgc2VydmljZXMNCj4gPiBhbmQgdG8gcGFzcyB0aGUgZGF0YSBwb2lu dGVyIGNvbnRhaW5lZCBpbiB0aGUgdmlydGJ1c19kZXZpY2UgdG8gdGhlDQo+ID4gdmlydGJ1c19k cml2ZXIgZHVyaW5nIGl0cyBwcm9iZSBjYWxsLiAgVGhpcyB3aWxsIGFsbG93IHR3byBzZXBhcmF0 ZQ0KPiA+IGtlcm5lbCBvYmplY3RzIHRvIG1hdGNoIHVwIGFuZCBzdGFydCBjb21tdW5pY2F0aW9u Lg0KPiA+DQo+ID4gVGhlIGJ1cyB3aWxsIHN1cHBvcnQgcHJvYmUvcmVtb3ZlIHNodXRkb3duIGFu ZCBzdXNwZW5kL3Jlc3VtZQ0KPiA+IGNhbGxiYWNrcy4NCj4gPg0KPiA+IEtjb25maWcgYW5kIE1h a2VmaWxlIGFsdGVyYXRpb25zIGFyZSBpbmNsdWRlZA0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTog RGF2ZSBFcnRtYW4gPGRhdmlkLm0uZXJ0bWFuQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBLaXJhbiBQYXRpbCA8a2lyYW4ucGF0aWxAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IEplZmYgS2lyc2hlciA8amVmZnJleS50LmtpcnNoZXJAaW50ZWwuY29tPg0KPiANCj4gSW50ZXJl c3RpbmcsIGFuZCBraW5kIG9mIHdoYXQgSSB3YXMgdGhpbmtpbmcgb2YsIGJ1dCB0aGUgaW1wbGVt ZW50YXRpb24gaXMgb2RkDQo+IGFuZCBJIGRvbid0IHJlYWxseSBzZWUgaG93IHlvdSBjYW4gdXNl IGl0Lg0KPiANCj4gQ2FuIHlvdSBwcm92aWRlIGEgc2Vjb25kIHBhdGNoIHRoYXQgYWN0dWFsbHkg dXNlcyB0aGlzIGFwaT8NCj4gDQo+IENvZGUgY29tbWVudHMgYmVsb3cgZm9yIHdoZW4geW91IHJl c2VuZDoNCj4gDQo+ID4gK1ZpcnR1YWwgQnVzIFN0cnVjdHMNCj4gPiArfn5+fn5+fn5+fn5+fn5+ fn5+fg0KPiA+ICtzdHJ1Y3QgZGV2aWNlIHZpcnR1YWxfYnVzID0gew0KPiA+ICsgICAgICAgIC5p bml0X25hbWUgICAgICA9ICJ2aXJ0YnVzIiwNCj4gPiArICAgICAgICAucmVsZWFzZSAgICAgICAg PSB2aXJ0dWFsX2J1c19yZWxlYXNlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGJ1c190 eXBlIHZpcnR1YWxfYnVzX3R5cGUgPSB7DQo+ID4gKyAgICAgICAgLm5hbWUgICAgICAgICAgID0g InZpcnRidXMiLA0KPiA+ICsgICAgICAgIC5tYXRjaCAgICAgICAgICA9IHZpcnRidXNfbWF0Y2gs DQo+ID4gKyAgICAgICAgLnByb2JlICAgICAgICAgID0gdmlydGJ1c19wcm9iZSwNCj4gPiArICAg ICAgICAucmVtb3ZlICAgICAgICAgPSB2aXJ0YnVzX3JlbW92ZSwNCj4gPiArICAgICAgICAuc2h1 dGRvd24gICAgICAgPSB2aXJ0YnVzX3NodXRkb3duLA0KPiA+ICsgICAgICAgIC5zdXNwZW5kICAg ICAgICA9IHZpcnRidXNfc3VzcGVuZCwNCj4gPiArICAgICAgICAucmVzdW1lICAgICAgICAgPSB2 aXJ0YnVzX3Jlc3VtZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCB2aXJ0YnVzX2Rldmlj ZSB7DQo+ID4gKyAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAqbmFtZTsN Cj4gPiArICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOw0KPiA+ICsg ICAgICAgIGNvbnN0IHN0cnVjdCB2aXJ0YnVzX2Rldl9pZCAgICAgKmRldl9pZDsNCj4gPiArICAg ICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAgIGRldjsNCj4gPiArICAgICAgICB2 b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IHZpcnRidXNfZHJpdmVyIHsNCj4gPiArICAgICAgICBpbnQgKCpwcm9iZSkoc3Ry dWN0IHZpcnRidXNfZGV2aWNlICopOw0KPiA+ICsgICAgICAgIGludCAoKnJlbW92ZSkoc3RydWN0 IHZpcnRidXNfZGV2aWNlICopOw0KPiA+ICsgICAgICAgIHZvaWQgKCpzaHV0ZG93bikoc3RydWN0 IHZpcnRidXNfZGV2aWNlICopOw0KPiA+ICsgICAgICAgIGludCAoKnN1c3BlbmQpKHN0cnVjdCB2 aXJ0YnVzX2RldmljZSAqLCBwbV9tZXNzYWdlX3Qgc3RhdGUpOw0KPiA+ICsgICAgICAgIGludCAo KnJlc3VtZSkoc3RydWN0IHZpcnRidXNfZGV2aWNlICopOw0KPiA+ICsgICAgICAgIHN0cnVjdCBk ZXZpY2VfZHJpdmVyIGRyaXZlcjsNCj4gPiArfTsNCj4gDQo+IA0KPiBBbGwgb2YgdGhlIGFib3Zl IHNob3VsZCBjb21lIHN0cmFpZ2h0IGZyb20gdGhlIC5jLy5oIGZpbGVzLCBubyBuZWVkIHRvDQo+ IGR1cGxpY2F0ZSBpdCBpbiBhIHRleHQgZmlsZSB0aGF0IHdpbGwgYmUgZ3VhcmFudGVlZCB0byBn ZXQgb3V0IG9mIHN5bmMuDQoNClJlbW92ZWQNCg0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9idXMvdmlydHVhbF9idXMuYyBiL2RyaXZlcnMvYnVzL3ZpcnR1YWxfYnVzLmMgbmV3DQo+ID4g ZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwMDAuLmFmM2Y2ZDliNjBmNA0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2J1cy92aXJ0dWFsX2J1cy5jDQo+ID4gQEAg LTAsMCArMSwzMzkgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4gPiArLyoNCj4gPiArICogdmlydHVhbF9idXMuYyAtIGxpZ2h0d2VpZ2h0IHNvZnR3YXJlIGJh c2VkIGJ1cyBmb3IgdmlydHVhbCBkZXZpY2VzDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAo YykgMjAxOS0yMCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBQbGVhc2Ugc2Vl IERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92aXJ0dWFsX2J1cy5yc3QgZm9yDQo+ID4gKyAqIG1v cmUgaW5mb3JtYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvc3Ry aW5nLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC92aXJ0dWFsX2J1cy5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvb2ZfaXJxLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BtX2RvbWFpbi5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvYWNwaS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gKw0KPiA+ICtN T0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiTGlnaHR3 ZWlnaHQgVmlydHVhbCBCdXMiKTsNCj4gTU9EVUxFX0FVVEhPUigiRGF2aWQNCj4gPiArRXJ0bWFu IDxkYXZpZC5tLmVydG1hbkBpbnRlbC5jb20+Iik7IE1PRFVMRV9BVVRIT1IoIktpcmFuIFBhdGls DQo+ID4gKzxraXJhbi5wYXRpbEBpbnRlbC5jb20+Iik7DQo+ID4gKw0KPiA+ICtzdGF0aWMgREVG SU5FX0lEQSh2aXJ0YnVzX2Rldl9pZCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB2aXJ0dWFs X2J1c19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ICsJcHJfaW5mbygiUmVtb3Zp bmcgdmlydHVhbCBidXMgZGV2aWNlLlxuIik7IH0NCj4gDQo+IFRoaXMgaXMganVzdCBvbmUgc3Rl cCBhd2F5IGZyb20gZG9pbmcgaG9ycmlibGUgdGhpbmdzLg0KPiANCj4gQSByZWxlYXNlIGZ1bmN0 aW9uIHNob3VsZCBmcmVlIHRoZSBtZW1vcnkuICBOb3QganVzdCBwcmludCBhIG1lc3NhZ2UgOigN Cj4gDQo+IEFsc28sIHRoaXMgaXMgdGhlIGRyaXZlciBjb2RlLCB1c2UgZGV2X2luZm8oKSBhbmQg ZnJpZW5kcywgbmV2ZXIgdXNlDQo+IHByXyooKSAgIFNhbWUgZ29lcyBmb3IgYWxsIHBsYWNlcyBp biB0aGlzIGNvZGUuDQo+IA0KPiBTbyB0aGlzIGlzIGEgZGVidWdnaW5nIGxpbmUsIHdoeT8NCj4g SG93IGNhbiB0aGlzIGJlIGNhbGxlZD8gIFlvdSBvbmx5IHVzZSBpdDoNCg0KVGhpcyB3YXMgbGVm dG92ZXIgYW5kIG5vdCBuZWNlc3NhcnksIHNvcnJ5IGZvciB0aGUgdGhyYXNoLg0KUmVtb3ZlZCB1 bm5lY2Vzc2FyeSBjb2RlLg0KDQo+IA0KPiA+ICsNCj4gPiArc3RydWN0IGRldmljZSB2aXJ0dWFs X2J1cyA9IHsNCj4gPiArCS5pbml0X25hbWUJPSAidmlydGJ1cyIsDQo+ID4gKwkucmVsZWFzZQk9 IHZpcnR1YWxfYnVzX3JlbGVhc2UsDQo+ID4gK307DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHZp cnR1YWxfYnVzKTsNCj4gDQo+IEhlcmUuDQo+IA0KPiBJY2suDQo+IA0KPiBBIHN0YXRpYyBzdHJ1 Y3QgZGV2aWNlPyAgQ2FsbGVkICdidXMnPyAgVGhhdCdzIF9SRUFMTFlfIGNvbmZ1c2luZy4gIFdo YXQgaXMgdGhpcw0KPiBmb3I/ICBBbmQgd2h5IGV4cG9ydCBpdD8gIFRoYXQncyBndWFyYW50ZWVk IHRvIGNhdXNlIHByb2JsZW1zIChoaW50LCBjb2RlDQo+IGxpZmVjeWNsZSB2cy4gZGF0YSBsaWZl Y3ljbGVzLi4uKQ0KPiANCg0KRVhQT1JUX1NZTUJPTCByZW1vdmVkLg0KDQpUaGlzIHdhcyBvcmln aW5hbGx5IGdvaW5nIHRvIGFjdCBhcyBhIGRlZmF1bHQgcGFyZW50IGRldmljZSBmb3IgdGhlIGJ1 cyBkZXZpY2VzLA0KYnV0IGFmdGVyIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgdGhpcyB3YXMgdW5u ZWNlc3NhcnkgZm9yIHRoZSBpbnRlbmRlZA0KZnVuY3Rpb25hbGl0eSBvZiB0aGUgYnVzIC0gcmVt b3ZlZC4NCg0KPiA+ICsvKioNCj4gPiArICogdmlydGJ1c19hZGRfZGV2IC0gYWRkIGEgdmlydHVh bCBidXMgZGV2aWNlDQo+ID4gKyAqIEB2ZGV2OiB2aXJ0dWFsIGJ1cyBkZXZpY2UgdG8gYWRkDQo+ ID4gKyAqLw0KPiA+ICtpbnQgdmlydGJ1c19kZXZfYWRkKHN0cnVjdCB2aXJ0YnVzX2RldmljZSAq dmRldikgew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAoIXZkZXYpDQo+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZGV2aWNlX2luaXRpYWxpemUoJnZkZXYtPmRl dik7DQo+ID4gKwlpZiAoIXZkZXYtPmRldi5wYXJlbnQpDQo+ID4gKwkJdmRldi0+ZGV2LnBhcmVu dCA9ICZ2aXJ0dWFsX2J1czsNCj4gDQo+IFNvIGl0J3MgYSBwYXJlbnQ/ICBPaywgdGhlbiB3aHkg ZXhwb3J0IGl0Pw0KPiANCj4gQWdhaW4gSSB3YW50IHRvIHNlZSBhIHVzZXIgcGxlYXNlLi4uDQoN ClJlbW92ZWQsIGFuZCBjb25zdW1lcnMgd2lsbCBiZSBzZW50IDopDQoNCj4gDQo+ID4gKw0KPiA+ ICsJdmRldi0+ZGV2LmJ1cyA9ICZ2aXJ0dWFsX2J1c190eXBlOw0KPiA+ICsJLyogQWxsIGRldmlj ZSBJRHMgYXJlIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVkICovDQo+ID4gKwlyZXQgPSBpZGFfc2lt cGxlX2dldCgmdmlydGJ1c19kZXZfaWQsIDAsIDAsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKHJl dCA8IDApDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwl2ZGV2LT5pZCA9IHJldDsN Cj4gPiArCWRldl9zZXRfbmFtZSgmdmRldi0+ZGV2LCAiJXMuJWQiLCB2ZGV2LT5uYW1lLCB2ZGV2 LT5pZCk7DQo+ID4gKw0KPiA+ICsJcHJfZGVidWcoIlJlZ2lzdGVyaW5nIFZpcnRCdXMgZGV2aWNl ICclcycuIFBhcmVudCBhdCAlc1xuIiwNCj4gPiArCQkgZGV2X25hbWUoJnZkZXYtPmRldiksIGRl dl9uYW1lKHZkZXYtPmRldi5wYXJlbnQpKTsNCj4gDQo+IGRldl9kYmcoKS4NCj4gDQo+ID4gKw0K PiA+ICsJcmV0ID0gZGV2aWNlX2FkZCgmdmRldi0+ZGV2KTsNCj4gPiArCWlmICghcmV0KQ0KPiA+ ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJLyogRXJyb3IgYWRkaW5nIHZpcnR1YWwgZGV2 aWNlICovDQo+ID4gKwlpZGFfc2ltcGxlX3JlbW92ZSgmdmlydGJ1c19kZXZfaWQsIHZkZXYtPmlk KTsNCj4gPiArCXZkZXYtPmlkID0gVklSVEJVU19ERVZJRF9OT05FOw0KPiANCj4gVGhhdCdzIGFs bCB5b3UgbmVlZCB0byBjbGVhbiB1cD8gIERpZCB5b3UgcmVhZCB0aGUgZGV2aWNlX2FkZCgpDQo+ IGRvY3VtZW50YXRpb24/ICBQbGVhc2UgZG8gc28uDQoNCkRldmljZV9kZWwoKSBhZGRlZCB0byBl cnJvciBjaGFpbi4NCg0KPiANCj4gQW5kIHdoYXQncyB1cCB3aXRoIHRoaXMgREVWSURfTk9ORSBz dHVmZj8NCg0KVXNpbmcgVklSVEJVU19ERVZJRF9OT05FIGRlZmluZWQgdG8gYmUgLTEsIHRoaXMg aXMgc28gdGhlIGNvbnN1bWVyIGNhbiBjaGVjaw0KVGhlIHZkZXYtPmlkIGZpZWxkIHRvIHNlZSBp ZiBpdCBjb250YWlucyBhIHZhbGlkIGlkICgwLCAxLCAuLi4sIG4pLg0KDQo+IA0KPiA+ICsNCj4g PiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTF9HUEwodmlydGJ1c19k ZXZfYWRkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB2aXJ0YnVzX2Rldl9kZWwgLSByZW1v dmUgYSB2aXJ0dWFsIGJ1cyBkZXZpY2UNCj4gPiArICogdmRldjogdmlydHVhbCBidXMgZGV2aWNl IHdlIGFyZSByZW1vdmluZyAgKi8gdm9pZA0KPiA+ICt2aXJ0YnVzX2Rldl9kZWwoc3RydWN0IHZp cnRidXNfZGV2aWNlICp2ZGV2KSB7DQo+ID4gKwlpZiAoIUlTX0VSUl9PUl9OVUxMKHZkZXYpKSB7 DQo+ID4gKwkJZGV2aWNlX2RlbCgmdmRldi0+ZGV2KTsNCj4gPiArDQo+ID4gKwkJaWRhX3NpbXBs ZV9yZW1vdmUoJnZpcnRidXNfZGV2X2lkLCB2ZGV2LT5pZCk7DQo+ID4gKwkJdmRldi0+aWQgPSBW SVJUQlVTX0RFVklEX05PTkU7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTF9H UEwodmlydGJ1c19kZXZfZGVsKTsNCj4gPiArDQo+ID4gK3N0cnVjdCB2aXJ0YnVzX29iamVjdCB7 DQo+ID4gKwlzdHJ1Y3QgdmlydGJ1c19kZXZpY2UgdmRldjsNCj4gPiArCWNoYXIgbmFtZVtdOw0K PiA+ICt9Ow0KPiANCj4gQSBkZXZpY2UgaGFzIGEgbmFtZSwgd2h5IGhhdmUgYW5vdGhlciBvbmU/ DQoNCkkgYWxzbyBmb2xsb3dlZCB0aGUgcGxhdGZvcm0gZGV2aWNlJ3MgbWV0aG9kIGhlcmUgZm9y IGFkZHJlc3NpbmcgYSBwcm9ibGVtDQphcm91bmQgYXNzaWduaW5nIHRoZSBzdHJpbmcgZmVkIGlu IGZvciBuYW1lIHRvIHRoZSBjb25zdCBjaGFyKiBmb3IgbmFtZQ0KaW4gdGhlIHN0cnVjdC4gIFdl IGJvdGggY3JlYXRlZCBhbiBvYmplY3QgdG8gY29udGFpbiB0aGUgbWVtb3J5IGZvcg0KYm90aCB0 aGUgZGV2aWNlIGFuZCB0aGUgc3RyaW5nIGZvciB0aGUgbmFtZSwgdGhlbiBqdXN0IGFzc2lnbiB0 aGUgcG9pbnRlcg0KaW4gdGhlIGRldmljZSBmb3IgbmFtZSB0byB0aGlzIG1lbW9yeSBsb2NhdGlv bi4gIFRoaXMgd2F5IHRoZSBhbGxvY2F0ZWQNCnNwYWNlIGZvciB0aGUgbmFtZSBsaXZlcyBhcyBs b25nIGFzIHRoZSBkZXZpY2UgZG9lcy4NCiANCj4gDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog dmlydGJ1c19kZXZfcmVsZWFzZSAtIERlc3Ryb3kgYSB2aXJ0YnVzIGRldmljZQ0KPiA+ICsgKiBA dmRldjogdmlydHVhbCBkZXZpY2UgdG8gcmVsZWFzZQ0KPiA+ICsgKg0KPiA+ICsgKiBOb3RlIHRo YXQgdGhlIHZkZXYtPmRhdGEgd2hpY2ggaXMgc2VwYXJhdGVseSBhbGxvY2F0ZWQgbmVlZHMgdG8g YmUNCj4gPiArICogc2VwYXJhdGVseSBmcmVlZCBvbiBpdCBvd24uDQo+ID4gKyAqLw0KPiA+ICtz dGF0aWMgdm9pZCB2aXJ0YnVzX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ ICsJc3RydWN0IHZpcnRidXNfb2JqZWN0ICp2byA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCB2 aXJ0YnVzX29iamVjdCwNCj4gPiArCQkJCQkJIHZkZXYuZGV2KTsNCj4gPiArDQo+ID4gKwlrZnJl ZSh2byk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB2aXJ0YnVzX2Rldl9hbGxv YyAtIGFsbG9jYXRlIGEgdmlydGJ1cyBkZXZpY2UNCj4gPiArICogQG5hbWU6IG5hbWUgdG8gYXNz b2NpYXRlIHdpdGggdGhlIHZkZXYNCj4gPiArICogQGRhdGE6IHBvaW50ZXIgdG8gZGF0YSB0byBi ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXZpY2UgICovDQo+ID4gK3N0cnVjdCB2aXJ0YnVzX2Rl dmljZSAqdmlydGJ1c19kZXZfYWxsb2MoY29uc3QgY2hhciAqbmFtZSwgdm9pZA0KPiA+ICsqZGF0 YSkgew0KPiA+ICsJc3RydWN0IHZpcnRidXNfb2JqZWN0ICp2bzsNCj4gPiArDQo+ID4gKwkvKiBD cmVhdGUgYSB2aXJ0YnVzIG9iamVjdCB0byBjb250YWluIHRoZSB2ZGV2IGFuZCBuYW1lLiAgVGhp cw0KPiA+ICsJICogYXZvaWRzIGEgcHJvYmxlbSB3aXRoIHRoZSBjb25zdCBhdHRyaWJ1dGUgb2Yg bmFtZSBpbiB0aGUgdmRldi4NCj4gPiArCSAqIFRoZSB2aXJ0YnVzX29iamVjdCB3aWxsIGJlIGFs bG9jYXRlZCBoZXJlIGFuZCBmcmVlZCBpbiB0aGUNCj4gPiArCSAqIHJlbGVhc2UgZnVuY3Rpb24u DQo+ID4gKwkgKi8NCj4gPiArCXZvID0ga3phbGxvYyhzaXplb2YoKnZvKSArIHN0cmxlbihuYW1l KSArIDEsIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCF2bykNCj4gPiArCQlyZXR1cm4gTlVMTDsN Cj4gDQo+IFdoYXQgcHJvYmxlbSBhcmUgeW91IHRyeWluZyB0byB3b3JrIGFyb3VuZCB3aXRoIHRo ZSBuYW1lPw0KDQpTaW5jZSB0aGUgbmFtZSBpcyBhIGNvbnN0IGNoYXIsIHlvdSBjYW5ub3Qgc3Ry Y3B5IGludG8gaXQuICBUaGlzIGFsbG93cw0KZm9yIGp1c3QgYXNzaWduaW5nIGEgcG9pbnRlciBm b3IgdGhpcyBzdHJ1Y3QgZWxlbWVudCB0byBhbiBhbHJlYWR5IGNyZWF0ZWQNCnN0cmluZyBhbmQg YmVpbmcgc3VyZSB0aGF0IHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgc3RyaW5nIGxpdmVz IGFzDQpsb25nIGFzIHRoZSB2aXJ0YnVzX2RldmljZSBsaXZlcy4NCg0KPiANCj4gPiArDQo+ID4g KwlzdHJjcHkodm8tPm5hbWUsIG5hbWUpOw0KPiA+ICsJdm8tPnZkZXYubmFtZSA9IHZvLT5uYW1l Ow0KPiA+ICsJdm8tPnZkZXYuZGF0YSA9IGRhdGE7DQo+ID4gKwl2by0+dmRldi5kZXYucmVsZWFz ZSA9IHZpcnRidXNfZGV2X3JlbGVhc2U7DQo+ID4gKw0KPiA+ICsJcmV0dXJuICZ2by0+dmRldjsN Cj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTCh2aXJ0YnVzX2Rldl9hbGxvYyk7DQo+IA0K PiBXaHkgaGF2ZSBhbiBhbGxvYy9hZGQgcGFpciBvZiBmdW5jdGlvbnM/ICBXaHkgbm90IGp1c3Qg b25lPw0KDQpPbmNlIHRoZSBkZXZpY2UgaGFzIGJlZW4gYWxsb2NhdGVkLCB0aGUgY29uc3VtZXIg aGFzIHRoZSBvcHRpb24gb2YNCmRpcmVjdGx5IGNoYW5naW5nIGFueXRoaW5nIGluIHRoZSBuZXds eSBjcmVhdGVkIHN0cnVjdCBhbmQgYXNzb2NpYXRlZA0KZGV2aWNlIGJlZm9yZSBhZGRpbmcgaXQg dG8gdGhlIGJ1cyAoZS5nLiBjaGFuZ2luZyBwYXJlbnQgb2YgZGV2aWNlKS4NCg0KPiANCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQgdmlydGJ1c19kcnZfcHJvYmUoc3RydWN0IGRldmljZSAqX2Rldikg ew0KPiA+ICsJc3RydWN0IHZpcnRidXNfZHJpdmVyICp2ZHJ2ID0gdG9fdmlydGJ1c19kcnYoX2Rl di0+ZHJpdmVyKTsNCj4gPiArCXN0cnVjdCB2aXJ0YnVzX2RldmljZSAqdmRldiA9IHRvX3ZpcnRi dXNfZGV2KF9kZXYpOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSBkZXZfcG1f ZG9tYWluX2F0dGFjaChfZGV2LCB0cnVlKTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZf d2FybihfZGV2LCAiRmFpbGVkIHRvIGF0dGF0Y2ggdG8gUE0gRG9tYWluIDogJWRcbiIsDQo+IHJl dCk7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodmRydi0+ cHJvYmUpIHsNCj4gPiArCQlyZXQgPSB2ZHJ2LT5wcm9iZSh2ZGV2KTsNCj4gPiArCQlpZiAocmV0 KQ0KPiA+ICsJCQlkZXZfcG1fZG9tYWluX2RldGFjaChfZGV2LCB0cnVlKTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZp cnRidXNfZHJ2X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpfZGV2KSB7DQo+ID4gKwlzdHJ1Y3Qgdmly dGJ1c19kcml2ZXIgKnZkcnYgPSB0b192aXJ0YnVzX2RydihfZGV2LT5kcml2ZXIpOw0KPiA+ICsJ c3RydWN0IHZpcnRidXNfZGV2aWNlICp2ZGV2ID0gdG9fdmlydGJ1c19kZXYoX2Rldik7DQo+ID4g KwlpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAodmRydi0+cmVtb3ZlKQ0KPiA+ICsJCXJl dCA9IHZkcnYtPnJlbW92ZSh2ZGV2KTsNCj4gPiArDQo+ID4gKwlkZXZfcG1fZG9tYWluX2RldGFj aChfZGV2LCB0cnVlKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCB2aXJ0YnVzX2Rydl9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpfZGV2 KSB7DQo+ID4gKwlzdHJ1Y3QgdmlydGJ1c19kcml2ZXIgKnZkcnYgPSB0b192aXJ0YnVzX2Rydihf ZGV2LT5kcml2ZXIpOw0KPiA+ICsJc3RydWN0IHZpcnRidXNfZGV2aWNlICp2ZGV2ID0gdG9fdmly dGJ1c19kZXYoX2Rldik7DQo+ID4gKw0KPiA+ICsJaWYgKHZkcnYtPnNodXRkb3duKQ0KPiA+ICsJ CXZkcnYtPnNodXRkb3duKHZkZXYpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZp cnRidXNfZHJ2X3N1c3BlbmQoc3RydWN0IGRldmljZSAqX2RldiwgcG1fbWVzc2FnZV90DQo+ID4g K3N0YXRlKSB7DQo+ID4gKwlzdHJ1Y3QgdmlydGJ1c19kcml2ZXIgKnZkcnYgPSB0b192aXJ0YnVz X2RydihfZGV2LT5kcml2ZXIpOw0KPiA+ICsJc3RydWN0IHZpcnRidXNfZGV2aWNlICp2ZGV2ID0g dG9fdmlydGJ1c19kZXYoX2Rldik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHZkcnYtPnN1c3BlbmQg PyB2ZHJ2LT5zdXNwZW5kKHZkZXYsIHN0YXRlKSA6IDA7IH0NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdmlydGJ1c19kcnZfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKl9kZXYpIHsNCj4gPiArCXN0cnVj dCB2aXJ0YnVzX2RyaXZlciAqdmRydiA9IHRvX3ZpcnRidXNfZHJ2KF9kZXYtPmRyaXZlcik7DQo+ ID4gKwlzdHJ1Y3QgdmlydGJ1c19kZXZpY2UgKnZkZXYgPSB0b192aXJ0YnVzX2RldihfZGV2KTsN Cj4gPiArDQo+ID4gKwlyZXR1cm4gdmRydi0+cmVzdW1lID8gdmRydi0+cmVzdW1lKHZkZXYpIDog MDsgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHZpcnRidXNfZHJ2X3JlZ2lzdGVyIC0gcmVn aXN0ZXIgYSBkcml2ZXIgZm9yIHZpcnR1YWwgYnVzIGRldmljZXMNCj4gPiArICogQHZkcnY6IHZp cnRidXNfZHJpdmVyIHN0cnVjdHVyZQ0KPiA+ICsgKiBAb3duZXI6IG93bmluZyBtb2R1bGUvZHJp dmVyDQo+ID4gKyAqLw0KPiA+ICtpbnQgdmlydGJ1c19kcnZfcmVnaXN0ZXIoc3RydWN0IHZpcnRi dXNfZHJpdmVyICp2ZHJ2LCBzdHJ1Y3QgbW9kdWxlDQo+ID4gKypvd25lcikNCj4gDQo+IERvbid0 IGZvcmNlIHNvbWVvbmUgdG8gdHlwZSBUSElTX01PRFVMRSBmb3IgdGhpcyBjYWxsLCB1c2UgdGhl IG1hY3JvIHRyaWNrDQo+IGluc3RlYWQgdGhhdCBtb3N0IHN1YnN5c3RlbXMgdXNlLg0KDQpDaGFu Z2VkIHRvIHVzZSBtYWNybyB0cmljay4NCg0KPiANCj4gQWdhaW4sIEkgd2FudCB0byBzZWUgYSB1 c2VyLCB0aGF0IHdpbGwgY2F1c2UgbG90cyBvZiB0aGVzZSB0eXBlcyBvZiB0aGluZ3MgdG8gYmUN Cj4gcGFpbmZ1bGx5IG9idmlvdXMgOikNCj4gDQo+IA0KPiA+ICt7DQo+ID4gKwl2ZHJ2LT5kcml2 ZXIub3duZXIgPSBvd25lcjsNCj4gPiArCXZkcnYtPmRyaXZlci5idXMgPSAmdmlydHVhbF9idXNf dHlwZTsNCj4gPiArCXZkcnYtPmRyaXZlci5wcm9iZSA9IHZpcnRidXNfZHJ2X3Byb2JlOw0KPiA+ ICsJdmRydi0+ZHJpdmVyLnJlbW92ZSA9IHZpcnRidXNfZHJ2X3JlbW92ZTsNCj4gPiArCXZkcnYt PmRyaXZlci5zaHV0ZG93biA9IHZpcnRidXNfZHJ2X3NodXRkb3duOw0KPiA+ICsJdmRydi0+ZHJp dmVyLnN1c3BlbmQgPSB2aXJ0YnVzX2Rydl9zdXNwZW5kOw0KPiA+ICsJdmRydi0+ZHJpdmVyLnJl c3VtZSA9IHZpcnRidXNfZHJ2X3Jlc3VtZTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gZHJpdmVyX3Jl Z2lzdGVyKCZ2ZHJ2LT5kcml2ZXIpOyB9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHZpcnRidXNf ZHJ2X3JlZ2lzdGVyKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB2aXJ0YnVzX2Rydl91bnJl Z2lzdGVyIC0gdW5yZWdpc3RlciBhIGRyaXZlciBmb3IgdmlydHVhbCBidXMNCj4gPiArZGV2aWNl cw0KPiA+ICsgKiBAZHJ2OiB2aXJ0YnVzX2RyaXZlciBzdHJ1Y3R1cmUNCj4gPiArICovDQo+ID4g K3ZvaWQgdmlydGJ1c19kcnZfdW5yZWdpc3RlcihzdHJ1Y3QgdmlydGJ1c19kcml2ZXIgKnZkcnYp IHsNCj4gPiArCWRyaXZlcl91bnJlZ2lzdGVyKCZ2ZHJ2LT5kcml2ZXIpOw0KPiA+ICt9DQo+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKHZpcnRidXNfZHJ2X3VucmVnaXN0ZXIpOw0KPiA+ICsNCj4gPiAr c3RhdGljIGNvbnN0DQo+ID4gK3N0cnVjdCB2aXJ0YnVzX2Rldl9pZCAqdmlydGJ1c19tYXRjaF9p ZChjb25zdCBzdHJ1Y3QgdmlydGJ1c19kZXZfaWQgKmlkLA0KPiA+ICsJCQkJCXN0cnVjdCB2aXJ0 YnVzX2RldmljZSAqdmRldikNCj4gPiArew0KPiA+ICsJd2hpbGUgKGlkLT5uYW1lWzBdKSB7DQo+ ID4gKwkJaWYgKHN0cmNtcCh2ZGV2LT5uYW1lLCBpZC0+bmFtZSkgPT0gMCkgew0KPiA+ICsJCQl2 ZGV2LT5kZXZfaWQgPSBpZDsNCj4gPiArCQkJcmV0dXJuIGlkOw0KPiA+ICsJCX0NCj4gPiArCQlp ZCsrOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiB2aXJ0YnVzX21hdGNoIC0gYmluZCB2aXJ0YnVzIGRldmljZSB0byB2aXJ0YnVz IGRyaXZlcg0KPiA+ICsgKiBAZGV2OiBkZXZpY2UNCj4gPiArICogQGRydjogZHJpdmVyDQo+ID4g KyAqDQo+ID4gKyAqIFZpcnRidXMgZGV2aWNlIElEcyBhcmUgYWx3YXlzIGluICI8bmFtZT4uPGlu c3RhbmNlPiIgZm9ybWF0Lg0KPiA+ICsgKiBJbnN0YW5jZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2Vs ZWN0ZWQgdGhyb3VnaCBhbiBpZGFfc2ltcGxlX2dldCBzbw0KPiA+ICsgKiBhcmUgcG9zaXRpdmUg aW50ZWdlcnMuIE5hbWVzIGFyZSB0YWtlbiBmcm9tIHRoZSBkZXZpY2UgbmFtZSBmaWVsZC4NCj4g PiArICogRHJpdmVyIElEcyBhcmUgc2ltcGxlIDxuYW1lPi4gIE5lZWQgdG8gZXh0cmFjdCB0aGUg bmFtZSBmcm9tIHRoZQ0KPiA+ICsgKiBWaXJ0dWFsIERldmljZSBjb21wYXJlIHRvIG5hbWUgb2Yg dGhlIGRyaXZlci4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgdmlydGJ1c19tYXRjaChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyDQo+ID4gKypkcnYpIHsNCj4gPiAr CXN0cnVjdCB2aXJ0YnVzX2RyaXZlciAqdmRydiA9IHRvX3ZpcnRidXNfZHJ2KGRydik7DQo+ID4g KwlzdHJ1Y3QgdmlydGJ1c19kZXZpY2UgKnZkZXYgPSB0b192aXJ0YnVzX2RldihkZXYpOw0KPiA+ ICsNCj4gPiArCWlmICh2ZHJ2LT5pZF90YWJsZSkNCj4gPiArCQlyZXR1cm4gdmlydGJ1c19tYXRj aF9pZCh2ZHJ2LT5pZF90YWJsZSwgdmRldikgIT0gTlVMTDsNCj4gPiArDQo+ID4gKwlyZXR1cm4g KHN0cmNtcCh2ZGV2LT5uYW1lLCBkcnYtPm5hbWUpID09IDApOyB9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogdmlydGJ1c19wcm9iZSAtIGNhbGwgcHJvYmUgb2YgdGhlIHZpcnRidXNfZHJ2DQo+ ID4gKyAqIEBkZXY6IGRldmljZSBzdHJ1Y3QNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgdmly dGJ1c19wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpIHsNCj4gPiArCXJldHVybiBkZXYtPmRyaXZl ci0+cHJvYmUgPyBkZXYtPmRyaXZlci0+cHJvYmUoZGV2KSA6IDA7IH0NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgdmlydGJ1c19yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KSB7DQo+ID4gKwlyZXR1 cm4gZGV2LT5kcml2ZXItPnJlbW92ZSA/IGRldi0+ZHJpdmVyLT5yZW1vdmUoZGV2KSA6IDA7IH0N Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHZpcnRidXNfc2h1dGRvd24oc3RydWN0IGRldmljZSAq ZGV2KSB7DQo+ID4gKwlpZiAoZGV2LT5kcml2ZXItPnNodXRkb3duKQ0KPiA+ICsJCWRldi0+ZHJp dmVyLT5zaHV0ZG93bihkZXYpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpcnRi dXNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkgew0KPiA+ ICsJaWYgKGRldi0+ZHJpdmVyLT5zdXNwZW5kKQ0KPiA+ICsJCXJldHVybiBkZXYtPmRyaXZlci0+ c3VzcGVuZChkZXYsIHN0YXRlKTsNCj4gDQo+IFlvdSBoYXZlIHR3byBkaWZmZXJlbnQgc3R5bGVz IGhlcmUgd2l0aCB0aGVzZSBjYWxscywgdXNlIHRoaXMgb25lIGluc3RlYWQgb2YNCj4gdGhlIGNy YXp5ID8gOiBzdHlsZSBhYm92ZSBpbiBwcm9iZS9yZW1vdmUgcGxlYXNlLg0KDQpTdHlsZSBjaGFu Z2VkIHRvIHVzZSB0aGlzIG9uZSB1cCBhYm92ZS4NCg0KPiANCj4gPiArDQo+ID4gKwlyZXR1cm4g MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aXJ0YnVzX3Jlc3VtZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpIHsNCj4gPiArCWlmIChkZXYtPmRyaXZlci0+cmVzdW1lKQ0KPiA+ICsJCXJl dHVybiBkZXYtPmRyaXZlci0+cmVzdW1lKGRldik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBidXNfdHlwZSB2aXJ0dWFsX2J1c190eXBlID0gew0K PiA+ICsJLm5hbWUJCT0gInZpcnRidXMiLA0KPiA+ICsJLm1hdGNoCQk9IHZpcnRidXNfbWF0Y2gs DQo+ID4gKwkucHJvYmUJCT0gdmlydGJ1c19wcm9iZSwNCj4gPiArCS5yZW1vdmUJCT0gdmlydGJ1 c19yZW1vdmUsDQo+ID4gKwkuc2h1dGRvd24JPSB2aXJ0YnVzX3NodXRkb3duLA0KPiA+ICsJLnN1 c3BlbmQJPSB2aXJ0YnVzX3N1c3BlbmQsDQo+ID4gKwkucmVzdW1lCQk9IHZpcnRidXNfcmVzdW1l LA0KPiA+ICt9Ow0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTCh2aXJ0dWFsX2J1c190eXBlKTsNCj4g DQo+IFdoeSBpcyB0aGlzIGV4cG9ydGVkPw0KDQpFeHBvcnQgcmVtb3ZlZA0KDQo+IA0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBfX2luaXQgdmlydHVhbF9idXNfaW5pdCh2b2lkKSB7DQo+ID4gKwlp bnQgZXJyOw0KPiA+ICsNCj4gPiArCWVyciA9IGRldmljZV9yZWdpc3RlcigmdmlydHVhbF9idXMp Ow0KPiA+ICsJaWYgKGVycikgew0KPiA+ICsJCXB1dF9kZXZpY2UoJnZpcnR1YWxfYnVzKTsNCj4g PiArCQlyZXR1cm4gZXJyOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWVyciA9IGJ1c19yZWdpc3Rl cigmdmlydHVhbF9idXNfdHlwZSk7DQo+ID4gKwlpZiAoZXJyKSB7DQo+ID4gKwkJZGV2aWNlX3Vu cmVnaXN0ZXIoJnZpcnR1YWxfYnVzKTsNCj4gPiArCQlyZXR1cm4gZXJyOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXByX2RlYnVnKCJWaXJ0dWFsIEJ1cyAodmlydGJ1cykgcmVnaXN0ZXJlZCB3aXRo IGtlcm5lbFxuIik7DQo+IA0KPiBEb24ndCBiZSBub2lzeS4gIEFuZCByZW1vdmUgeW91ciBkZWJ1 Z2dpbmcgY29kZSA6KQ0KDQpSZW1vdmVkIDopDQoNCj4gDQo+IA0KPiA+ICsJcmV0dXJuIGVycjsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgX19leGl0IHZpcnR1YWxfYnVzX2V4aXQo dm9pZCkgew0KPiA+ICsJYnVzX3VucmVnaXN0ZXIoJnZpcnR1YWxfYnVzX3R5cGUpOw0KPiA+ICsJ ZGV2aWNlX3VucmVnaXN0ZXIoJnZpcnR1YWxfYnVzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArbW9k dWxlX2luaXQodmlydHVhbF9idXNfaW5pdCk7DQo+ID4gK21vZHVsZV9leGl0KHZpcnR1YWxfYnVz X2V4aXQpOw0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZpcnR1YWxfYnVzLmggYi9p bmNsdWRlL2xpbnV4L3ZpcnR1YWxfYnVzLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRl eCAwMDAwMDAwMDAwMDAuLjcyMmYwMjBhYzUzYg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9pbmNsdWRlL2xpbnV4L3ZpcnR1YWxfYnVzLmgNCj4gPiBAQCAtMCwwICsxLDY0IEBADQo+ID4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4gPiArLyoNCj4g PiArICogdmlydHVhbF9idXMuaCAtIGxpZ2h0d2VpZ2h0IHNvZnR3YXJlIGJ1cw0KPiA+ICsgKg0K PiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICoN Cj4gPiArICogUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmlydHVhbF9idXMu cnN0IGZvciBtb3JlDQo+ID4gK2luZm9ybWF0aW9uICAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBf VklSVFVBTF9CVVNfSF8NCj4gPiArI2RlZmluZSBfVklSVFVBTF9CVVNfSF8NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgVklSVEJVU19E RVZJRF9OT05FCSgtMSkNCj4gDQo+IFdoYXQgaXMgdGhpcyBmb3I/DQoNCk5lZ2F0aXZlIHZhbHVl cyBjYW5ub3QgYmUgdmFsaWQgZGV2aWNlIGlkcyBvYnRhaW5lZCBmcm9tDQp0aGUgSURBIG1ldGhv ZC4gIFVzaW5nIHRoaXMgYWxsb3dzIGZvciB0aGUgY29uc3VtZXIgdG8NCmNoZWNrIHRoYXQgdGhl IGlkIGlzID49MCBvciBtYXliZSAhPSBWSVJUQlVTX0RFVklEX05PTkUNCnRvIHNlZSBpZiB0aGV5 IGhhdmUgYSB2YWxpZCB2aXJ0YnVzX2RldmljZS4NCg0KPiANCj4gPiArI2RlZmluZSBWSVJUQlVT X05BTUVfU0laRQkyMA0KPiANCj4gV2h5PyAgV2h5IGlzIDIwICJvayI/DQoNCkFyYml0cmFyeSB2 YWx1ZS4gIEkgd2FudGVkIHNvbWV0aGluZyBub3QgdG9vIGJpZyBhbmQgbm90IHRvbw0Kc21hbGws IHNvIEkgbG9va2VkIGF0IHdoYXQgcGxhdGZvcm0gYnVzIHdhcyB1c2luZyBhbmQgY29waWVkDQp0 aGVtLg0KDQo+IA0KPiA+ICsNCj4gPiArc3RydWN0IHZpcnRidXNfZGV2X2lkIHsNCj4gPiArCWNo YXIgbmFtZVtWSVJUQlVTX05BTUVfU0laRV07DQo+ID4gKwl1NjQgZHJpdmVyX2RhdGE7DQo+IA0K PiB1NjQgb3IgYSBwb2ludGVyPyAgWW91IHVzZSBib3RoLCBwaWNrIG9uZSBwbGVhc2UuDQoNCkFy ZSB5b3UgdGhpbmtpbmcgb2YgdGhlIHZvaWQgKmRhdGEgaW4gdGhlIHN0cnVjdCB2aXJ0YnVzX2Rl dmljZT8NCg0KVGhpcyB1NjQgZWxlbWVudCBpcyBwYXJ0IG9mIHRoZSBpZF90YWJsZSB0aGF0IHRo ZSBkcml2ZXIgd2lsbCB1c2UNCmlmIG5lZWRlZCB0byBiZSBhYmxlIHRvIG1hdGNoIHdpdGggbW9y ZSB0aGFuIGEgc2luZ2xlIGRldmljZSBuYW1lLg0KSSB3aWxsIGRpc2N1c3MgaG93IHRoaXMgaXMg dXNlZCBiZWxvdyBpbiBhbnN3ZXJpbmcgeW91ciBuZXh0DQpxdWVzdGlvbiBiZWxvdy4NCg0KPiAN Cj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBkZXZfaWQgaXMg ZXhwZWN0ZWQgdG8gYmUgZG9uZSBieSB0aGUNCj4gPiArdmlydGJ1c19kcml2ZXINCj4gPiArICog dGhhdCB3aWxsIG1hdGNoIHdpdGggdGhlIHZpcnRidXNfZGV2aWNlLCBhbmQgdGhlIG1hdGNoaW5n IHByb2Nlc3MNCj4gPiArd2lsbA0KPiA+ICsgKiBjb3B5IHRoZSBwb2ludGVyIGZyb20gdGhlIG1h dGNoZWQgZWxlbWVudCBmcm9tIHRoZSBkcml2ZXIgdG8gdGhlDQo+IGRldmljZS4NCj4gDQo+IFdo YXQgcG9pbnRlcj8gIEkgZG9uJ3QgdW5kZXJzdGFuZC4NCg0KVGhlIG1hdGNoaW5nIHByb2Nlc3Mg Y2FuIHRha2Ugb25lIG9mIHR3byBmb3JtczoNCjEgLSBmYWxsYmFjayBtYXRjaGluZyAobm8gcG9p bnRlciBpc3N1ZXMgaW4gdGhpcyBtZXRob2QpDQpUaGlzIGlzIGEgc2ltcGxlIGRvIHRoZSBuYW1l cyBtYXRjaCBpbiB0aGUgZHJpdmVyIGFuZCBkZXZpY2UuDQoNCjIgLSBpZF90YWJsZSBtYXRjaGlu Zy4gIElmIHRoZSB2aXJ0YnVzIGRyaXZlciB3YW50cyB0byBiZSBhYmxlIHRvDQpiZSBtYXRjaGVk IHdpdGggbW9yZSB0aGFuIG9uZSB2aXJ0YnVzX2RldmljZSwgdGhleSBjYW4gc3VwcGx5DQphbiBp ZF90YWJsZSB0aGF0IGxvb2tzIGxpa2UgLQ0KCXsNCgluYW1lDQoJZGF0YQ0KCX0NCgl7DQoJbmFt ZQ0KCWRhdGENCgl9DQoJLi4uDQoNCkluIHRoaXMgbWV0aG9kLCB0aGUgZWxlbWVudCBpbiBpZF90 YWJsZSAob2Ygc3RydWN0IHZpcnRidXNfZGV2X2lkICopIHRoYXQNCmlzIG1hdGNoZWQgYnkgbmFt ZSwgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIHZpcnRidXNfZGV2aWNlJ3MgZGV2X2lkDQplbGVtZW50 LiAgVGhhdCB3YXkgZWFjaCBkaWZmZXJlbnQgZGV2aWNlIHR5cGUgY2FuIGhhdmUgaXRzIG93biB1 bmlxdWUNCmRyaXZlcl9kYXRhIGZlZCBiYWNrIHRvIHRoZSBkcml2ZXIgdmlhIGl0cyBwcm9iZS4N Cg0KSSB3aWxsIG1ha2UgdGhlIGNvbW1lbnQgKGhvcGVmdWxseSkgbW9yZSB1bmRlcnN0YW5kYWJs ZS4NCj4gDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgdmlydGJ1c19kZXZpY2Ugew0KPiA+ICsJY29u c3QgY2hhcgkJCSpuYW1lOw0KPiA+ICsJaW50CQkJCWlkOw0KPiA+ICsJY29uc3Qgc3RydWN0IHZp cnRidXNfZGV2X2lkCSpkZXZfaWQ7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlCQkJZGV2Ow0KPiA+ICsJ dm9pZAkJCQkqZGF0YTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCB2aXJ0YnVzX2RyaXZl ciB7DQo+ID4gKwlpbnQgKCpwcm9iZSkoc3RydWN0IHZpcnRidXNfZGV2aWNlICopOw0KPiA+ICsJ aW50ICgqcmVtb3ZlKShzdHJ1Y3QgdmlydGJ1c19kZXZpY2UgKik7DQo+ID4gKwl2b2lkICgqc2h1 dGRvd24pKHN0cnVjdCB2aXJ0YnVzX2RldmljZSAqKTsNCj4gPiArCWludCAoKnN1c3BlbmQpKHN0 cnVjdCB2aXJ0YnVzX2RldmljZSAqLCBwbV9tZXNzYWdlX3Qgc3RhdGUpOw0KPiA+ICsJaW50ICgq cmVzdW1lKShzdHJ1Y3QgdmlydGJ1c19kZXZpY2UgKik7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlX2Ry aXZlciBkcml2ZXI7DQo+ID4gKwljb25zdCBzdHJ1Y3QgdmlydGJ1c19kZXZfaWQgKmlkX3RhYmxl OyB9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSB2aXJ0YnVzX2dldF9kZXZfaWQodmRldikJKCh2ZGV2 KS0+aWRfZW50cnkpDQo+ID4gKyNkZWZpbmUgdmlydGJ1c19nZXRfZGV2ZGF0YShkZXYpCSgoZGV2 KS0+ZGV2ZGF0YSkNCj4gDQo+IFdoYXQgYXJlIHRoZXNlIGZvcj8NCj4gDQo+ID4gKyNkZWZpbmUg ZGV2X2lzX3ZpcnRidXMoZGV2KQkoKGRldiktPmJ1cyA9PSAmdmlydGJ1c190eXBlKQ0KPiANCj4g V2hvIG5lZWRzIHRoaXM/DQoNCkkgd2FzIHBsYW5uaW5nIG9uIHVzaW5nIHRoZXNlIHdoZW4gSSB3 YXMgZG9pbmcgc2V0dXAgYW5kIGVuZGVkIHVwDQpub3QgdXNpbmcgdGhlbS4gIFJlbW92aW5nLg0K DQo+IA0KPiA+ICsjZGVmaW5lIHRvX3ZpcnRidXNfZGV2KHgpCWNvbnRhaW5lcl9vZigoeCksIHN0 cnVjdCB2aXJ0YnVzX2RldmljZSwgZGV2KQ0KPiA+ICsjZGVmaW5lIHRvX3ZpcnRidXNfZHJ2KGRy dikJKGNvbnRhaW5lcl9vZigoZHJ2KSwgc3RydWN0DQo+IHZpcnRidXNfZHJpdmVyLCBcDQo+ID4g KwkJCQkgZHJpdmVyKSkNCj4gDQo+IFdoeSBhcmUgdGhlc2UgaW4gYSBwdWJsaWMgLmggZmlsZT8N Cg0KTW92ZWQgdG8gLmMgZmlsZQ0KDQo+IA0KPiA+ICsNCj4gPiArZXh0ZXJuIHN0cnVjdCBidXNf dHlwZSB2aXJ0dWFsX2J1c190eXBlOyBleHRlcm4gc3RydWN0IGRldmljZQ0KPiA+ICt2aXJ0dWFs X2J1czsNCj4gDQo+IEFnYWluLCB3aHkgZXhwb3J0ZWQ/DQoNCkV4cG9ydCByZW1vdmVkLCBleHRl cm4gcmVtb3ZlZA0KDQo+IA0KPiA+ICsNCj4gPiAraW50IHZpcnRidXNfZGV2X2FkZChzdHJ1Y3Qg dmlydGJ1c19kZXZpY2UgKnZkZXYpOyB2b2lkDQo+ID4gK3ZpcnRidXNfZGV2X2RlbChzdHJ1Y3Qg dmlydGJ1c19kZXZpY2UgKnZkZXYpOyBzdHJ1Y3QgdmlydGJ1c19kZXZpY2UNCj4gPiArKnZpcnRi dXNfZGV2X2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRldmRhdGEpOyBpbnQNCj4gPiAr dmlydGJ1c19kcnZfcmVnaXN0ZXIoc3RydWN0IHZpcnRidXNfZHJpdmVyICp2ZHJ2LCBzdHJ1Y3Qg bW9kdWxlDQo+ID4gKypvd25lcik7IHZvaWQgdmlydGJ1c19kcnZfdW5yZWdpc3RlcihzdHJ1Y3Qg dmlydGJ1c19kcml2ZXIgKnZkcnYpOw0KPiA+ICsNCj4gPiAraW50IHZpcnRidXNfZm9yX2VhY2hf ZGV2KHZvaWQgKmRhdGEsIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlICosIHZvaWQNCj4gPiArKikp OyBpbnQgdmlydGJ1c19mb3JfZWFjaF9kcnYodm9pZCAqZGF0YSwgaW50KCpmbikoc3RydWN0DQo+ ID4gK2RldmljZV9kcml2ZXIgKiwgdm9pZCAqKSk7DQo+IA0KPiBwaWNrIGEgY29kaW5nIHN0eWxl IGFuZCBzdGljayB3aXRoIGl0IHBsZWFzZS4uLg0KDQpPcHRlZCBmb3IgYWRkL2RlbCBzaW5jZSBp dCBpcyBzaG9ydGVyIHRvIHR5cGUgOikNCg0KPiANCj4gdGhhbmtzLA0KDQpUaGFuayBZb3UhISBH cmVhdCBmZWVkYmFjayENCg0KPiANCj4gZ3JlZyBrLWgNCg0KSSBoYXZlIGluY2x1ZGVkIGEgc21h bGwgc2FtcGxlIGRyaXZlciBhbmQgZGV2aWNlIGluOg0KdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv dmlydHVhbF9idXMvdmlydHVhbF9idXNfW2RydnxkZXZdLw0KDQpUaGVzZSB3aWxsIGFkZCB0aGVp ciByZXNwZWN0aXZlIGVsZW1lbnRzIHRvIHRoZSBidXMgYW5kIGluIHRoZQ0KcHJvYmUgb2YgdGhl IGRyaXZlciwgaXQgd2lsbCBhY2Nlc3MgdGhlIGRhdGEgZnJvbSB0aGUgZGV2aWNlDQppbiBhIHNp bXBsaXN0aWMgd2F5Lg0KDQpBbHNvLCB0aGUgcmV3b3JrIGZvciB0aGUgaWNlIGRyaXZlciB1c2lu ZyB0aGUgdmlydGJ1cyBpcyBkb25lLA0KYW5kIGdvaW5nIHRocm91Z2ggdGhlIHByb2Nlc3Mgb2Yg aGVhZGluZyB1cHN0cmVhbSBpZiB5b3UgbmVlZA0KYSByZWFsIHdvcmxkIGV4YW1wbGUgb2YgaG93 IHdlIHBsYW4gdG8gdXNlIHRoaXMuDQoNCi1EYXZlIEUNCg==