From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr10054.outbound.protection.outlook.com ([40.107.1.54]:43712 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932869AbeCMQLd (ORCPT ); Tue, 13 Mar 2018 12:11:33 -0400 From: Nipun Gupta To: Robin Murphy , "hch@lst.de" , "linux@armlinux.org.uk" , "gregkh@linuxfoundation.org" , "m.szyprowski@samsung.com" , "bhelgaas@google.com" CC: "dmitry.torokhov@gmail.com" , "rafael.j.wysocki@intel.com" , "jarkko.sakkinen@linux.intel.com" , "linus.walleij@linaro.org" , "johan@kernel.org" , "msuchanek@suse.de" , "linux-kernel@vger.kernel.org" , "iommu@lists.linux-foundation.org" , "linux-pci@vger.kernel.org" Subject: RE: [PATCH] dma-mapping: move dma configuration to bus infrastructure Date: Tue, 13 Mar 2018 16:11:28 +0000 Message-ID: References: <1520868292-2479-1-git-send-email-nipun.gupta@nxp.com> In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org List-ID: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUm9iaW4gTXVycGh5IFtt YWlsdG86cm9iaW4ubXVycGh5QGFybS5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDEzLCAy MDE4IDE3OjA2DQo+IA0KPiBPbiAxMi8wMy8xOCAxNToyNCwgTmlwdW4gR3VwdGEgd3JvdGU6DQo+ ID4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzICdkbWFfY29uZmlndXJlJyAmICdkbWFfZGVjb25maWd1 cmUnYXMNCj4gPiBidXMgY2FsbGJhY2sgZnVuY3Rpb25zIHNvIGVhY2ggYnVzIGNhbiBjaG9vc2Ug dG8gaW1wbGVtZW50DQo+ID4gaXRzIG93biBkbWEgY29uZmlndXJhdGlvbiBmdW5jdGlvbi4NCj4g PiBUaGlzIGVhc2VzIHRoZSBhZGRpdGlvbiBvZiBuZXcgYnVzc2VzIHcuci50LiBhZGRpbmcgdGhl IGRtYQ0KPiA+IGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25hbGl0eS4NCj4gDQo+IEl0J3MgcHJvYmFi bHkgd29ydGggY2xhcmlmeWluZyAtIGVpdGhlciBpbiB0aGUgY29tbWl0IG1lc3NhZ2UsIHRoZQ0K PiBrZXJuZWxkb2MsIG9yIGJvdGggLSB0aGF0IHRoZSBidXMtc3BlY2lmaWMgYXNwZWN0IGlzIHRo YXQgb2YgbWFwcGluZw0KPiBiZXR3ZWVuIGEgZ2l2ZW4gZGV2aWNlIG9uIHRoZSBidXMgYW5kIHRo ZSByZWxldmFudCBmaXJtd2FyZSBkZXNjcmlwdGlvbg0KPiBvZiBpdHMgRE1BIGNvbmZpZ3VyYXRp b24uDQoNCk9rYXkuDQoNCj4NCj4gPiBUaGUgY2hhbmdlIGFsc28gdXBkYXRlcyB0aGUgUENJLCBQ bGF0Zm9ybSBhbmQgQUNQSSBidXMgdG8gdXNlDQo+ID4gbmV3IGludHJvZHVjZWQgY2FsbGJhY2tz Lg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTmlwdW4gR3VwdGEgPG5pcHVuLmd1cHRhQG54cC5j b20+DQo+ID4gLS0tDQo+ID4gICAtIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGNvbW1lbnRz IG9uOg0KPiA+DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2su Y29tLz91cmw9aHR0cHMlM0ElMkYlMkZwYXRjaHdvDQo+IHJrLmtlcm5lbC5vcmclMkZwYXRjaCUy RjEwMjU5MDg3JTJGJmRhdGE9MDIlN0MwMSU3Q25pcHVuLmd1cHRhJTQwbnhwLmNvbSU3DQo+IENj NTQxMTAwZWNiOTQ0ZTc2NTBhNDA4ZDU4OGQ2OWFiMCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5 YzVjMzAxNjM1JTdDMCU3DQo+IEMwJTdDNjM2NTY1Mzc3NjY1Njc2NjMxJnNkYXRhPWsyWGpuNUIx R0VDeDRVakNnOXRDaE9wT3JEM05QTTdCa3pJWExMU3YzckklDQo+IDNEJnJlc2VydmVkPTANCj4g PiAgIC0gSSBoYXZlIHZhbGlkYXRlZCBmb3IgUENJIGFuZCBwbGF0Zm9ybSwgYnV0IG5vdCBmb3Ig QU1CQSBhcyBJDQo+ID4gICAgIGRvIG5vdCBoYXZlIGluZnJhc3RydWN0dXJlIHRvIHZhbGlkYXRl IGl0Lg0KPiA+ICAgICBDYW4gYW55b25lIHBsZWFzZSB2YWxpZGF0ZSB0aGVtIG9uIEFNQkE/DQo+ ID4NCj4gPiAgIGRyaXZlcnMvYW1iYS9idXMuYyAgICAgICAgICB8IDM4ICsrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tDQo+ID4gICBkcml2ZXJzL2Jhc2UvZGQuYyAgICAgICAgICAgfCAxNCAr KysrKysrLS0tLQ0KPiA+ICAgZHJpdmVycy9iYXNlL2RtYS1tYXBwaW5nLmMgIHwgNDEgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAgZHJpdmVycy9iYXNlL3BsYXRmb3JtLmMg ICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ID4gICBkcml2ZXJzL3BjaS9w Y2ktZHJpdmVyLmMgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst DQo+IC0tLS0tLS0tDQo+ID4gICBpbmNsdWRlL2xpbnV4L2RldmljZS5oICAgICAgfCAgNiArKysr Kw0KPiA+ICAgaW5jbHVkZS9saW51eC9kbWEtbWFwcGluZy5oIHwgMTIgLS0tLS0tLS0tDQo+ID4g ICA3IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FtYmEvYnVzLmMgYi9kcml2ZXJzL2FtYmEvYnVz LmMNCj4gPiBpbmRleCA1OTRjMjI4Li41ODI0MWQyIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv YW1iYS9idXMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYW1iYS9idXMuYw0KPiA+IEBAIC0yMCw2ICsy MCw4IEBADQo+ID4gICAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4NCj4gPiAgICNpbmNsdWRlIDxs aW51eC9saW1pdHMuaD4NCj4gPiAgICNpbmNsdWRlIDxsaW51eC9jbGsvY2xrLWNvbmYuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2Rldmlj ZS5oPg0KPiA+DQo+ID4gICAjaW5jbHVkZSA8YXNtL2lycS5oPg0KPiA+DQo+ID4gQEAgLTE3MSw2 ICsxNzMsMjggQEAgc3RhdGljIGludCBhbWJhX3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZp Y2UNCj4gKmRldikNCj4gPiAgIH0NCj4gPiAgICNlbmRpZiAvKiBDT05GSUdfUE0gKi8NCj4gPg0K PiA+ICtpbnQgYW1iYV9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0K PiA+ICsJZW51bSBkZXZfZG1hX2F0dHIgYXR0cjsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsN Cj4gPiArCWlmIChkZXYtPm9mX25vZGUpIHsNCj4gPiArCQlyZXQgPSBvZl9kbWFfY29uZmlndXJl KGRldiwgZGV2LT5vZl9ub2RlKTsNCj4gPiArCX0gZWxzZSBpZiAoaGFzX2FjcGlfY29tcGFuaW9u KGRldikpIHsNCj4gPiArCQlhdHRyID0gYWNwaV9nZXRfZG1hX2F0dHIodG9fYWNwaV9kZXZpY2Vf bm9kZShkZXYtPmZ3bm9kZSkpOw0KPiA+ICsJCWlmIChhdHRyICE9IERFVl9ETUFfTk9UX1NVUFBP UlRFRCkNCj4gPiArCQkJcmV0ID0gYWNwaV9kbWFfY29uZmlndXJlKGRldiwgYXR0cik7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiANCj4gSSB3b3VsZCBiZSBp bmNsaW5lZCB0byBoYXZlIGFtYmFfYnVzdHlwZSBqdXN0IHJlZmVyZW5jZQ0KPiBwbGF0Zm9ybV9k bWFfY29uZmlndXJlKCkgZGlyZWN0bHkgcmF0aGVyIHRoYW4gZHVwbGljYXRlIGl0IGxpa2UgdGhp cywNCj4gc2luY2UgdGhlcmUncyBubyBzZW5zaWJsZSByZWFzb24gZm9yIHRoZW0gdG8gZXZlciBk aWZmZXIuDQoNCkkgdGhpbmsgZG1hX2NvbW1vbl9jb25maWd1cmUoKSBoYXZpbmcgdGhpcyBhcyB0 aGUgY29tbW9uIGNvZGUgc2VlbXMgcHJldHR5DQpEZWNlbnQuIEFsbCB0aGUgYnVzc2VzIHdpbGwg cHJvYmFibHkgY2FsbCB0aGlzIEFQSS4NCg0KPiANCj4gPiArDQo+ID4gK3ZvaWQgYW1iYV9kbWFf ZGVjb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwlvZl9kbWFfZGVj b25maWd1cmUoZGV2KTsNCj4gPiArCWFjcGlfZG1hX2RlY29uZmlndXJlKGRldik7DQo+ID4gK30N Cj4gPiArDQo+ID4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgYW1iYV9wbSA9IHsN Cj4gPiAgIAkuc3VzcGVuZAk9IHBtX2dlbmVyaWNfc3VzcGVuZCwNCj4gPiAgIAkucmVzdW1lCQk9 IHBtX2dlbmVyaWNfcmVzdW1lLA0KPiA+IEBAIC0xOTAsMTIgKzIxNCwxNCBAQCBzdGF0aWMgaW50 IGFtYmFfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZQ0KPiAqZGV2KQ0KPiA+ICAgICog c28gd2UgY2FsbCB0aGUgYnVzICJhbWJhIi4NCj4gPiAgICAqLw0KPiA+ICAgc3RydWN0IGJ1c190 eXBlIGFtYmFfYnVzdHlwZSA9IHsNCj4gPiAtCS5uYW1lCQk9ICJhbWJhIiwNCj4gPiAtCS5kZXZf Z3JvdXBzCT0gYW1iYV9kZXZfZ3JvdXBzLA0KPiA+IC0JLm1hdGNoCQk9IGFtYmFfbWF0Y2gsDQo+ ID4gLQkudWV2ZW50CQk9IGFtYmFfdWV2ZW50LA0KPiA+IC0JLnBtCQk9ICZhbWJhX3BtLA0KPiA+ IC0JLmZvcmNlX2RtYQk9IHRydWUsDQo+ID4gKwkubmFtZQkJCT0gImFtYmEiLA0KPiA+ICsJLmRl dl9ncm91cHMJCT0gYW1iYV9kZXZfZ3JvdXBzLA0KPiA+ICsJLm1hdGNoCQkJPSBhbWJhX21hdGNo LA0KPiA+ICsJLnVldmVudAkJCT0gYW1iYV91ZXZlbnQsDQo+ID4gKwkucG0JCQk9ICZhbWJhX3Bt LA0KPiA+ICsJLmRtYV9jb25maWd1cmUJCT0gYW1iYV9kbWFfY29uZmlndXJlLA0KPiA+ICsJLmRt YV9kZWNvbmZpZ3VyZQk9IGFtYmFfZG1hX2RlY29uZmlndXJlLA0KPiA+ICsJLmZvcmNlX2RtYQkJ PSB0cnVlLA0KPiANCj4gVGhpcyBwYXRjaCBzaG91bGQgYWxzbyBiZSByZW1vdmluZyBmb3JjZV9k bWEgYmVjYXVzZSBpdCBubyBsb25nZXIgbWFrZXMNCj4gc2Vuc2UuIElmIERNQSBjb25maWd1cmF0 aW9uIGlzIG5vdyBkb25lIGJ5IGEgYnVzLWxldmVsIGNhbGxiYWNrLCB0aGVuIGENCj4gYnVzIHdo aWNoIHdhbnRzIGl0cyBjaGlsZHJlbiB0byBnZXQgRE1BIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8g aW1wbGVtZW50DQo+IHRoYXQgY2FsbGJhY2s7IHRoZXJlJ3Mgbm93aGVyZSB0byBmb3JjZSBhICJk ZWZhdWx0IiBnbG9iYWwgYmVoYXZpb3VyIGFueQ0KPiBtb3JlLg0KDQpBZ3JlZS4gV2Ugd2lsbCBh bHNvIG5lZWQgdG8gcGFzcyBhIGZvcmNlX2RtYSBmbGFnIGluIG9mX2RtYV9jb25maWd1cmUoKSBh cw0KQ2hyaXN0b3BoIHN1Z2dlc3RzLiBJbGwgdXBkYXRlIHRoaXMuDQoNCj4gDQo+ID4gICB9Ow0K PiA+DQo+ID4gICBzdGF0aWMgaW50IF9faW5pdCBhbWJhX2luaXQodm9pZCkNCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9iYXNlL2RkLmMgYi9kcml2ZXJzL2Jhc2UvZGQuYw0KPiA+IGluZGV4IGRl NmZkMDkuLmYxMjRmM2YgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9iYXNlL2RkLmMNCj4gPiAr KysgYi9kcml2ZXJzL2Jhc2UvZGQuYw0KPiA+IEBAIC00MjEsOSArNDIxLDExIEBAIHN0YXRpYyBp bnQgcmVhbGx5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0DQo+IGRldmljZV9kcml2 ZXIgKmRydikNCj4gPiAgIAlpZiAocmV0KQ0KPiA+ICAgCQlnb3RvIHBpbmN0cmxfYmluZF9mYWls ZWQ7DQo+ID4NCj4gPiAtCXJldCA9IGRtYV9jb25maWd1cmUoZGV2KTsNCj4gPiAtCWlmIChyZXQp DQo+ID4gLQkJZ290byBkbWFfZmFpbGVkOw0KPiA+ICsJaWYgKGRldi0+YnVzLT5kbWFfY29uZmln dXJlKSB7DQo+ID4gKwkJcmV0ID0gZGV2LT5idXMtPmRtYV9jb25maWd1cmUoZGV2KTsNCj4gPiAr CQlpZiAocmV0KQ0KPiA+ICsJCQlnb3RvIGRtYV9mYWlsZWQ7DQo+ID4gKwl9DQo+ID4NCj4gPiAg IAlpZiAoZHJpdmVyX3N5c2ZzX2FkZChkZXYpKSB7DQo+ID4gICAJCXByaW50ayhLRVJOX0VSUiAi JXM6IGRyaXZlcl9zeXNmc19hZGQoJXMpIGZhaWxlZFxuIiwNCj4gPiBAQCAtNDg2LDcgKzQ4OCw4 IEBAIHN0YXRpYyBpbnQgcmVhbGx5X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0DQo+ IGRldmljZV9kcml2ZXIgKmRydikNCj4gPiAgIAlnb3RvIGRvbmU7DQo+ID4NCj4gPiAgIHByb2Jl X2ZhaWxlZDoNCj4gPiAtCWRtYV9kZWNvbmZpZ3VyZShkZXYpOw0KPiA+ICsJaWYgKGRldi0+YnVz LT5kbWFfZGVjb25maWd1cmUpDQo+ID4gKwkJZGV2LT5idXMtPmRtYV9kZWNvbmZpZ3VyZShkZXYp Ow0KPiA+ICAgZG1hX2ZhaWxlZDoNCj4gPiAgIAlpZiAoZGV2LT5idXMpDQo+ID4gICAJCWJsb2Nr aW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oJmRldi0+YnVzLT5wLT5idXNfbm90aWZpZXIsDQo+ID4g QEAgLTg5NSw3ICs4OTgsOCBAQCBzdGF0aWMgdm9pZCBfX2RldmljZV9yZWxlYXNlX2RyaXZlcihz dHJ1Y3QgZGV2aWNlDQo+ICpkZXYsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCkNCj4gPiAgIAkJCWRy di0+cmVtb3ZlKGRldik7DQo+ID4NCj4gPiAgIAkJZGV2aWNlX2xpbmtzX2RyaXZlcl9jbGVhbnVw KGRldik7DQo+ID4gLQkJZG1hX2RlY29uZmlndXJlKGRldik7DQo+ID4gKwkJaWYgKGRldi0+YnVz LT5kbWFfZGVjb25maWd1cmUpDQo+ID4gKwkJCWRldi0+YnVzLT5kbWFfZGVjb25maWd1cmUoZGV2 KTsNCj4gPg0KPiA+ICAgCQlkZXZyZXNfcmVsZWFzZV9hbGwoZGV2KTsNCj4gPiAgIAkJZGV2LT5k cml2ZXIgPSBOVUxMOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvZG1hLW1hcHBpbmcu YyBiL2RyaXZlcnMvYmFzZS9kbWEtbWFwcGluZy5jDQo+ID4gaW5kZXggM2IxMTgzNS4uZjE2YmQ0 OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jhc2UvZG1hLW1hcHBpbmcuYw0KPiA+ICsrKyBi L2RyaXZlcnMvYmFzZS9kbWEtbWFwcGluZy5jDQo+ID4gQEAgLTYsMTEgKzYsOSBAQA0KPiA+ICAg ICogQ29weXJpZ2h0IChjKSAyMDA2ICBUZWp1biBIZW8gPHRlaGVvQHN1c2UuZGU+DQo+ID4gICAg Ki8NCj4gPg0KPiA+IC0jaW5jbHVkZSA8bGludXgvYWNwaS5oPg0KPiA+ICAgI2luY2x1ZGUgPGxp bnV4L2RtYS1tYXBwaW5nLmg+DQo+ID4gICAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+DQo+ID4g ICAjaW5jbHVkZSA8bGludXgvZ2ZwLmg+DQo+ID4gLSNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2Uu aD4NCj4gPiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gICAjaW5jbHVkZSA8bGludXgv dm1hbGxvYy5oPg0KPiA+DQo+ID4gQEAgLTMyOSw0MiArMzI3LDMgQEAgdm9pZCBkbWFfY29tbW9u X2ZyZWVfcmVtYXAodm9pZCAqY3B1X2FkZHIsIHNpemVfdA0KPiBzaXplLCB1bnNpZ25lZCBsb25n IHZtX2ZsYWdzKQ0KPiA+ICAgCXZ1bm1hcChjcHVfYWRkcik7DQo+ID4gICB9DQo+ID4gICAjZW5k aWYNCj4gPiAtDQo+ID4gLS8qDQo+ID4gLSAqIENvbW1vbiBjb25maWd1cmF0aW9uIHRvIGVuYWJs ZSBETUEgQVBJIHVzZSBmb3IgYSBkZXZpY2UNCj4gPiAtICovDQo+ID4gLSNpbmNsdWRlIDxsaW51 eC9wY2kuaD4NCj4gPiAtDQo+ID4gLWludCBkbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gPiAtew0KPiA+IC0Jc3RydWN0IGRldmljZSAqYnJpZGdlID0gTlVMTCwgKmRtYV9kZXYg PSBkZXY7DQo+ID4gLQllbnVtIGRldl9kbWFfYXR0ciBhdHRyOw0KPiA+IC0JaW50IHJldCA9IDA7 DQo+ID4gLQ0KPiA+IC0JaWYgKGRldl9pc19wY2koZGV2KSkgew0KPiA+IC0JCWJyaWRnZSA9IHBj aV9nZXRfaG9zdF9icmlkZ2VfZGV2aWNlKHRvX3BjaV9kZXYoZGV2KSk7DQo+ID4gLQkJZG1hX2Rl diA9IGJyaWRnZTsNCj4gPiAtCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfT0YpICYmIGRtYV9kZXYt PnBhcmVudCAmJg0KPiA+IC0JCSAgICBkbWFfZGV2LT5wYXJlbnQtPm9mX25vZGUpDQo+ID4gLQkJ CWRtYV9kZXYgPSBkbWFfZGV2LT5wYXJlbnQ7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0JaWYgKGRt YV9kZXYtPm9mX25vZGUpIHsNCj4gPiAtCQlyZXQgPSBvZl9kbWFfY29uZmlndXJlKGRldiwgZG1h X2Rldi0+b2Zfbm9kZSk7DQo+ID4gLQl9IGVsc2UgaWYgKGhhc19hY3BpX2NvbXBhbmlvbihkbWFf ZGV2KSkgew0KPiA+IC0JCWF0dHIgPSBhY3BpX2dldF9kbWFfYXR0cih0b19hY3BpX2RldmljZV9u b2RlKGRtYV9kZXYtPmZ3bm9kZSkpOw0KPiA+IC0JCWlmIChhdHRyICE9IERFVl9ETUFfTk9UX1NV UFBPUlRFRCkNCj4gPiAtCQkJcmV0ID0gYWNwaV9kbWFfY29uZmlndXJlKGRldiwgYXR0cik7DQo+ ID4gLQl9DQo+ID4gLQ0KPiA+IC0JaWYgKGJyaWRnZSkNCj4gPiAtCQlwY2lfcHV0X2hvc3RfYnJp ZGdlX2RldmljZShicmlkZ2UpOw0KPiA+IC0NCj4gPiAtCXJldHVybiByZXQ7DQo+ID4gLX0NCj4g PiAtDQo+ID4gLXZvaWQgZG1hX2RlY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiAt ew0KPiA+IC0Jb2ZfZG1hX2RlY29uZmlndXJlKGRldik7DQo+ID4gLQlhY3BpX2RtYV9kZWNvbmZp Z3VyZShkZXYpOw0KPiA+IC19DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9wbGF0Zm9y bS5jIGIvZHJpdmVycy9iYXNlL3BsYXRmb3JtLmMNCj4gPiBpbmRleCBmMWJmN2IzLi5hZGY5NGVi IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jDQo+ID4gKysrIGIvZHJp dmVycy9iYXNlL3BsYXRmb3JtLmMNCj4gPiBAQCAtMTEzMCw2ICsxMTMwLDI4IEBAIGludCBwbGF0 Zm9ybV9wbV9yZXN0b3JlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPg0KPiA+ICAgI2VuZGlmIC8q IENPTkZJR19ISUJFUk5BVEVfQ0FMTEJBQ0tTICovDQo+ID4NCj4gPiAraW50IHBsYXRmb3JtX2Rt YV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwllbnVtIGRldl9k bWFfYXR0ciBhdHRyOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsJaWYgKGRldi0+ b2Zfbm9kZSkgew0KPiA+ICsJCXJldCA9IG9mX2RtYV9jb25maWd1cmUoZGV2LCBkZXYtPm9mX25v ZGUpOw0KPiA+ICsJfSBlbHNlIGlmIChoYXNfYWNwaV9jb21wYW5pb24oZGV2KSkgew0KPiA+ICsJ CWF0dHIgPSBhY3BpX2dldF9kbWFfYXR0cih0b19hY3BpX2RldmljZV9ub2RlKGRldi0+Zndub2Rl KSk7DQo+ID4gKwkJaWYgKGF0dHIgIT0gREVWX0RNQV9OT1RfU1VQUE9SVEVEKQ0KPiA+ICsJCQly ZXQgPSBhY3BpX2RtYV9jb25maWd1cmUoZGV2LCBhdHRyKTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIHBsYXRmb3JtX2RtYV9kZWNv bmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArCW9mX2RtYV9kZWNvbmZp Z3VyZShkZXYpOw0KPiA+ICsJYWNwaV9kbWFfZGVjb25maWd1cmUoZGV2KTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBwbGF0Zm9ybV9kZXZfcG1f b3BzID0gew0KPiA+ICAgCS5ydW50aW1lX3N1c3BlbmQgPSBwbV9nZW5lcmljX3J1bnRpbWVfc3Vz cGVuZCwNCj4gPiAgIAkucnVudGltZV9yZXN1bWUgPSBwbV9nZW5lcmljX3J1bnRpbWVfcmVzdW1l LA0KPiA+IEBAIC0xMTM3LDEyICsxMTU5LDE0IEBAIGludCBwbGF0Zm9ybV9wbV9yZXN0b3JlKHN0 cnVjdCBkZXZpY2UgKmRldikNCj4gPiAgIH07DQo+ID4NCj4gPiAgIHN0cnVjdCBidXNfdHlwZSBw bGF0Zm9ybV9idXNfdHlwZSA9IHsNCj4gPiAtCS5uYW1lCQk9ICJwbGF0Zm9ybSIsDQo+ID4gLQku ZGV2X2dyb3Vwcwk9IHBsYXRmb3JtX2Rldl9ncm91cHMsDQo+ID4gLQkubWF0Y2gJCT0gcGxhdGZv cm1fbWF0Y2gsDQo+ID4gLQkudWV2ZW50CQk9IHBsYXRmb3JtX3VldmVudCwNCj4gPiAtCS5wbQkJ PSAmcGxhdGZvcm1fZGV2X3BtX29wcywNCj4gPiAtCS5mb3JjZV9kbWEJPSB0cnVlLA0KPiA+ICsJ Lm5hbWUJCQk9ICJwbGF0Zm9ybSIsDQo+ID4gKwkuZGV2X2dyb3VwcwkJPSBwbGF0Zm9ybV9kZXZf Z3JvdXBzLA0KPiA+ICsJLm1hdGNoCQkJPSBwbGF0Zm9ybV9tYXRjaCwNCj4gPiArCS51ZXZlbnQJ CQk9IHBsYXRmb3JtX3VldmVudCwNCj4gPiArCS5wbQkJCT0gJnBsYXRmb3JtX2Rldl9wbV9vcHMs DQo+ID4gKwkuZG1hX2NvbmZpZ3VyZQkJPSBwbGF0Zm9ybV9kbWFfY29uZmlndXJlLA0KPiA+ICsJ LmRtYV9kZWNvbmZpZ3VyZQk9IHBsYXRmb3JtX2RtYV9kZWNvbmZpZ3VyZSwNCj4gPiArCS5mb3Jj ZV9kbWEJCT0gdHJ1ZSwNCj4gPiAgIH07DQo+ID4gICBFWFBPUlRfU1lNQk9MX0dQTChwbGF0Zm9y bV9idXNfdHlwZSk7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLWRyaXZl ci5jIGIvZHJpdmVycy9wY2kvcGNpLWRyaXZlci5jDQo+ID4gaW5kZXggM2JlZDZiZS4uNGE3Nzgx NCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMNCj4gPiArKysgYi9k cml2ZXJzL3BjaS9wY2ktZHJpdmVyLmMNCj4gPiBAQCAtMTgsNiArMTgsOCBAQA0KPiA+ICAgI2lu Y2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gPiAgICNpbmNsdWRlIDxsaW51eC9zdXNwZW5k Lmg+DQo+ID4gICAjaW5jbHVkZSA8bGludXgva2V4ZWMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4 L2FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KPiA+ICAgI2luY2x1 ZGUgInBjaS5oIg0KPiA+DQo+ID4gICBzdHJ1Y3QgcGNpX2R5bmlkIHsNCj4gPiBAQCAtMTUyMiwx OSArMTUyNCw1MiBAQCBzdGF0aWMgaW50IHBjaV9idXNfbnVtX3ZmKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gPiAgIAlyZXR1cm4gcGNpX251bV92Zih0b19wY2lfZGV2KGRldikpOw0KPiA+ICAgfQ0K PiA+DQo+ID4gK2ludCBwY2lfZG1hX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmJyaWRnZSwgKmRtYV9kZXY7DQo+IA0KPiBZb3UgZG9u J3QgbmVlZCBkbWFfZGV2IGhlcmU7IHNlZSB0aGUgY29kZSByZW1vdmVkIGluIDA5NTE1ZWY1ZGRh ZCBmb3INCj4gaG93IHRoZSBsb2dpYyBvcmlnaW5hbGx5IHdvcmtlZC4NCg0KT2theS4gSSB3aWxs IGhhdmUgYSBsb29rIGluIHRoaXMgY29tbWl0IGlkLg0KDQo+IA0KPiA+ICsJZW51bSBkZXZfZG1h X2F0dHIgYXR0cjsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCWJyaWRnZSA9IHBj aV9nZXRfaG9zdF9icmlkZ2VfZGV2aWNlKHRvX3BjaV9kZXYoZGV2KSk7DQo+ID4gKwlkbWFfZGV2 ID0gYnJpZGdlOw0KPiA+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX09GKSAmJiBkbWFfZGV2LT5w YXJlbnQgJiYNCj4gPiArCSAgICBkbWFfZGV2LT5wYXJlbnQtPm9mX25vZGUpDQo+ID4gKwkJZG1h X2RldiA9IGRtYV9kZXYtPnBhcmVudDsNCj4gPiArDQo+ID4gKwlpZiAoZG1hX2Rldi0+b2Zfbm9k ZSkgew0KPiA+ICsJCXJldCA9IG9mX2RtYV9jb25maWd1cmUoZGV2LCBkbWFfZGV2LT5vZl9ub2Rl KTsNCj4gPiArCX0gZWxzZSBpZiAoaGFzX2FjcGlfY29tcGFuaW9uKGRtYV9kZXYpKSB7DQo+ID4g KwkJYXR0ciA9IGFjcGlfZ2V0X2RtYV9hdHRyKHRvX2FjcGlfZGV2aWNlX25vZGUoZG1hX2Rldi0+ Zndub2RlKSk7DQo+ID4gKwkJaWYgKGF0dHIgIT0gREVWX0RNQV9OT1RfU1VQUE9SVEVEKQ0KPiA+ ICsJCQlyZXQgPSBhY3BpX2RtYV9jb25maWd1cmUoZGV2LCBhdHRyKTsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlwY2lfcHV0X2hvc3RfYnJpZGdlX2RldmljZShicmlkZ2UpOw0KPiA+ICsNCj4gPiAr CXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgcGNpX2RtYV9kZWNvbmZpZ3Vy ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArCW9mX2RtYV9kZWNvbmZpZ3VyZShk ZXYpOw0KPiA+ICsJYWNwaV9kbWFfZGVjb25maWd1cmUoZGV2KTsNCj4gPiArfQ0KPiA+ICsNCj4g PiAgIHN0cnVjdCBidXNfdHlwZSBwY2lfYnVzX3R5cGUgPSB7DQo+ID4gLQkubmFtZQkJPSAicGNp IiwNCj4gPiAtCS5tYXRjaAkJPSBwY2lfYnVzX21hdGNoLA0KPiA+IC0JLnVldmVudAkJPSBwY2lf dWV2ZW50LA0KPiA+IC0JLnByb2JlCQk9IHBjaV9kZXZpY2VfcHJvYmUsDQo+ID4gLQkucmVtb3Zl CQk9IHBjaV9kZXZpY2VfcmVtb3ZlLA0KPiA+IC0JLnNodXRkb3duCT0gcGNpX2RldmljZV9zaHV0 ZG93biwNCj4gPiAtCS5kZXZfZ3JvdXBzCT0gcGNpX2Rldl9ncm91cHMsDQo+ID4gLQkuYnVzX2dy b3Vwcwk9IHBjaV9idXNfZ3JvdXBzLA0KPiA+IC0JLmRydl9ncm91cHMJPSBwY2lfZHJ2X2dyb3Vw cywNCj4gPiAtCS5wbQkJPSBQQ0lfUE1fT1BTX1BUUiwNCj4gPiAtCS5udW1fdmYJCT0gcGNpX2J1 c19udW1fdmYsDQo+ID4gLQkuZm9yY2VfZG1hCT0gdHJ1ZSwNCj4gPiArCS5uYW1lCQkJPSAicGNp IiwNCj4gPiArCS5tYXRjaAkJCT0gcGNpX2J1c19tYXRjaCwNCj4gPiArCS51ZXZlbnQJCQk9IHBj aV91ZXZlbnQsDQo+ID4gKwkucHJvYmUJCQk9IHBjaV9kZXZpY2VfcHJvYmUsDQo+ID4gKwkucmVt b3ZlCQkJPSBwY2lfZGV2aWNlX3JlbW92ZSwNCj4gPiArCS5zaHV0ZG93bgkJPSBwY2lfZGV2aWNl X3NodXRkb3duLA0KPiA+ICsJLmRldl9ncm91cHMJCT0gcGNpX2Rldl9ncm91cHMsDQo+ID4gKwku YnVzX2dyb3VwcwkJPSBwY2lfYnVzX2dyb3VwcywNCj4gPiArCS5kcnZfZ3JvdXBzCQk9IHBjaV9k cnZfZ3JvdXBzLA0KPiA+ICsJLnBtCQkJPSBQQ0lfUE1fT1BTX1BUUiwNCj4gPiArCS5udW1fdmYJ CQk9IHBjaV9idXNfbnVtX3ZmLA0KPiA+ICsJLmRtYV9jb25maWd1cmUJCT0gcGNpX2RtYV9jb25m aWd1cmUsDQo+ID4gKwkuZG1hX2RlY29uZmlndXJlCT0gcGNpX2RtYV9kZWNvbmZpZ3VyZSwNCj4g PiArCS5mb3JjZV9kbWEJCT0gdHJ1ZSwNCj4gPiAgIH07DQo+ID4gICBFWFBPUlRfU1lNQk9MKHBj aV9idXNfdHlwZSk7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZpY2Uu aCBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgNCj4gPiBpbmRleCBiMDkzNDA1Li45YjJkY2Y2IDEw MDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmgNCj4gPiArKysgYi9pbmNsdWRl L2xpbnV4L2RldmljZS5oDQo+ID4gQEAgLTg4LDYgKzg4LDkgQEAgZXh0ZXJuIGludCBfX211c3Rf Y2hlY2sgYnVzX2NyZWF0ZV9maWxlKHN0cnVjdA0KPiBidXNfdHlwZSAqLA0KPiA+ICAgICogQHJl c3VtZToJQ2FsbGVkIHRvIGJyaW5nIGEgZGV2aWNlIG9uIHRoaXMgYnVzIG91dCBvZiBzbGVlcCBt b2RlLg0KPiA+ICAgICogQG51bV92ZjoJQ2FsbGVkIHRvIGZpbmQgb3V0IGhvdyBtYW55IHZpcnR1 YWwgZnVuY3Rpb25zIGEgZGV2aWNlIG9uDQo+IHRoaXMNCj4gPiAgICAqCQlidXMgc3VwcG9ydHMu DQo+ID4gKyAqIEBkbWFfY29uZmlndXJlOglDYWxsZWQgdG8gc2V0dXAgRE1BIGNvbmZpZ3VyYXRp b24gb24gYSBkZXZpY2Ugb24NCj4gPiArCQkJdGhpcyBidXMuDQo+ID4gKyAqIEBkbWFfZGVjb25m aWd1cmU6CUNhbGxlZCB0byB0ZWFyIGRvd24gdGhlIERNQSBjb25maWd1cmF0aW9uLg0KPiA+ICAg ICogQHBtOgkJUG93ZXIgbWFuYWdlbWVudCBvcGVyYXRpb25zIG9mIHRoaXMgYnVzLCBjYWxsYmFj aw0KPiB0aGUgc3BlY2lmaWMNCj4gPiAgICAqCQlkZXZpY2UgZHJpdmVyJ3MgcG0tb3BzLg0KPiA+ ICAgICogQGlvbW11X29wczogIElPTU1VIHNwZWNpZmljIG9wZXJhdGlvbnMgZm9yIHRoaXMgYnVz LCB1c2VkIHRvIGF0dGFjaA0KPiBJT01NVQ0KPiA+IEBAIC0xMzAsNiArMTMzLDkgQEAgc3RydWN0 IGJ1c190eXBlIHsNCj4gPg0KPiA+ICAgCWludCAoKm51bV92Zikoc3RydWN0IGRldmljZSAqZGV2 KTsNCj4gPg0KPiA+ICsJaW50ICgqZG1hX2NvbmZpZ3VyZSkoc3RydWN0IGRldmljZSAqZGV2KTsN Cj4gPiArCXZvaWQgKCpkbWFfZGVjb25maWd1cmUpKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+IA0K PiBTZWVpbmcgaXQgbGFpZCBvdXQgaW4gdGhlIHBhdGNoLCBJIHJlYWxseSBkb24ndCB0aGluayB3 ZSBuZWVkIGENCj4gZGVjb25maWd1cmUgY2FsbGJhY2sgbGlrZSB0aGlzIC0gdGhlIGZhY3QgdGhh dCB3ZSdyZSBqdXN0IGNvcHktcGFzdGluZw0KPiB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24g ZXZlcnl3aGVyZSBpcyBhIGJpZyBoaW50LCBidXQgbW9yZQ0KPiBjb25jZXB0dWFsbHkgSSBjYW4n dCBzZWUgYSBnb29kIHJlYXNvbiBmb3IgaXQgdG8gZXZlciBuZWVkIGJ1cy1zcGVjaWZpYw0KPiBi ZWhhdmlvdXIgaW4gdGhlIHNhbWUgd2F5IHRoYXQgY29uZmlndXJlIGRvZXMuDQo+IA0KPiBNYXli ZSB0aGF0IG1lYW5zIHdlIGtlZXAgZG1hX2NvbmZpZ3VyZSgpIGFyb3VuZCBmb3IgdGhlIHNha2Ug b2YNCj4gc3ltbWV0cnksIGJ1dCBqdXN0IHJlZHVjZSBpdCB0bzoNCj4gDQo+IGludCBkbWFfY29u ZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gew0KPiAJaWYgKGRldi0+YnVzLT5kbWFfY29u ZmlndXJlKQ0KPiAJCXJldHVybiBkZXYtPmJ1cy0+ZG1hX2NvbmZpZ3VyZShkZXYpOw0KPiAJcmV0 dXJuIDA7DQo+IH0NCj4gDQo+IFJlYWxpc3RpY2FsbHkgdGhvdWdoLCBkbWFfZGVjb25maWd1cmUo KSBvbmx5IGV4aXN0cyBmb3IgdGhlIHNha2Ugb2YNCj4gY2FsbGluZyBhcmNoX3RlYXJkb3duX2Rt YV9vcHMoKSwgYW5kIHRoYXQgb25seSByZWFsbHkgZXhpc3RzIGZvciB0aGUNCj4gc2FrZSBvZiB0 aGUgb2xkIEFSTSBJT01NVSBjb2RlLCBzbyBJJ20gbm90IGluY2xpbmVkIHRvIHByZXRlbmQgaXQn cw0KPiBhbnl3aGVyZSBuZWFyIGFzIGltcG9ydGFudCBhcyB0aGUgZG1hX2NvbmZpZ3VyZSgpIHBh dGggaW4gZGVzaWduIHRlcm1zLg0KDQpZZXMsIEkgd2lsbCByZW1vdmUgZG1hX2RlY29uZmlndXJl IGNhbGxiYWNrLg0KDQpUaGFua3MsDQpOaXB1bg0KDQo+IA0KPiBSb2Jpbi4NCj4gDQo+ID4gKw0K PiA+ICAgCWNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbTsNCj4gPg0KPiA+ICAgCWNvbnN0IHN0 cnVjdCBpb21tdV9vcHMgKmlvbW11X29wczsNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9kbWEtbWFwcGluZy5oIGIvaW5jbHVkZS9saW51eC9kbWEtbWFwcGluZy5oDQo+ID4gaW5kZXgg ZWI5ZWFiNC4uMDM5MjI0YiAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYS1tYXBw aW5nLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1tYXBwaW5nLmgNCj4gPiBAQCAtNzYx LDE4ICs3NjEsNiBAQCB2b2lkICpkbWFfbWFya19kZWNsYXJlZF9tZW1vcnlfb2NjdXBpZWQoc3Ry dWN0DQo+IGRldmljZSAqZGV2LA0KPiA+ICAgfQ0KPiA+ICAgI2VuZGlmIC8qIENPTkZJR19IQVZF X0dFTkVSSUNfRE1BX0NPSEVSRU5UICovDQo+ID4NCj4gPiAtI2lmZGVmIENPTkZJR19IQVNfRE1B DQo+ID4gLWludCBkbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ID4gLXZvaWQg ZG1hX2RlY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ID4gLSNlbHNlDQo+ID4gLXN0 YXRpYyBpbmxpbmUgaW50IGRtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+IC17 DQo+ID4gLQlyZXR1cm4gMDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtc3RhdGljIGlubGluZSB2b2lk IGRtYV9kZWNvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpIHt9DQo+ID4gLSNlbmRpZg0KPiA+ IC0NCj4gPiAgIC8qDQo+ID4gICAgKiBNYW5hZ2VkIERNQSBBUEkNCj4gPiAgICAqLw0KPiA+DQo=