From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-bn1on0139.outbound.protection.outlook.com ([157.56.110.139]:21760 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753926AbaI3ChY (ORCPT ); Mon, 29 Sep 2014 22:37:24 -0400 From: "Hong-Xing.Zhu@freescale.com" To: Lucas Stach CC: "linux-pci-owner@vger.kernel.org" , "linux-pci@vger.kernel.org" , Shengchao Guo , "festevam@gmail.com" , "tharvey@gateworks.com" Subject: RE: [PATCH v3 7/9] PCI: imx6: add imx6sx pcie support Date: Tue, 30 Sep 2014 02:37:20 +0000 Message-ID: References: <1411966997-27118-1-git-send-email-r65037@freescale.com> <1411966997-27118-8-git-send-email-r65037@freescale.com> <1411985921.2625.13.camel@pengutronix.de> In-Reply-To: <1411985921.2625.13.camel@pengutronix.de> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org List-ID: SGkgTHVjYXM6DQpUaGFua3MgZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRzLg0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEx1Y2FzIFN0YWNoIFttYWlsdG86bC5zdGFjaEBw ZW5ndXRyb25peC5kZV0NCj4gU2VudDogTW9uZGF5LCBTZXB0ZW1iZXIgMjksIDIwMTQgNjoxOSBQ TQ0KPiBUbzogWmh1IFJpY2hhcmQtUjY1MDM3DQo+IENjOiBsaW51eC1wY2ktb3duZXJAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnOyBHdW8gU2hhd24tDQo+IFI2NTA3 MzsgZmVzdGV2YW1AZ21haWwuY29tOyB0aGFydmV5QGdhdGV3b3Jrcy5jb20NCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2MyA3LzldIFBDSTogaW14NjogYWRkIGlteDZzeCBwY2llIHN1cHBvcnQNCj4g DQo+IEFtIE1vbnRhZywgZGVuIDI5LjA5LjIwMTQsIDEzOjAzICswODAwIHNjaHJpZWIgUmljaGFy ZCBaaHU6DQo+ID4gLSBpbXg2c3ggcGNpZSBoYXMgaXRzIG93biBzdGFuZGFsb25lIHBjaWUgcG93 ZXIgc3VwcGx5Lg0KPiA+IEluIG9yZGVyIHRvIHR1cm4gb24gdGhlIGlteDZzeCBwY2llIHBvd2Vy IGR1cmluZyBpbml0aWFsaXphdGlvbi4gQWRkDQo+ID4gdGhlIHBjaWUgcmVndWxhdG9yIGFuZCB0 aGUgZ3BjIHJlZ21hcCBpbnRvIHRoZSBpbXg2c3ggcGNpZSBzdHJ1Y3R1cmUuDQo+ID4gLSBpbXg2 c3ggcGNpZSBoYXMgdGhlIG5ldyBhZGRlZCByZXNldCBtZWNoYW5pc20sIGFkZCB0aGUgcmVzZXQN Cj4gPiBvcGVyYXRpb25zIGludG8gdGhlIGluaXRpYWxpemF0aW9uLg0KPiA+IC0gUmVnaXN0ZXIg b25lIFBNIGNhbGwtYmFjaywgZW50ZXIvZXhpdCBMMiBzdGF0ZSBvZiB0aGUgQVNQTSBkdXJpbmcN Cj4gPiBzeXN0ZW0gc3VzcGVuZC9yZXN1bWUuDQo+ID4gLSBkaXNwX2F4aSBjbG9jayBpcyByZXF1 aXJlZCBieSBwY2llIGluYm91bmQgYXhpIHBvcnQgYWN0dWFsbHkuDQo+ID4gQWRkIG9uZSBtb3Jl IGNsb2NrIGZvciBpbXg2c3ggcGNpZS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQg Wmh1IDxyNjUwMzdAZnJlZXNjYWxlLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9wY2kvaG9z dC9wY2ktaW14Ni5jIHwgMTYyDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAxOCBk ZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3N0L3BjaS1p bXg2LmMgYi9kcml2ZXJzL3BjaS9ob3N0L3BjaS1pbXg2LmMNCj4gPiBpbmRleCBlYWM5NmZiLi5i ZTk1M2FhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGNpL2hvc3QvcGNpLWlteDYuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvcGNpL2hvc3QvcGNpLWlteDYuYw0KPiA+IEBAIC0xOCwxMiArMTgsMTYg QEANCj4gPiAgI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4NCj4gPiAgI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24vaW14NnEtaW9tdXhjLWdwci5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQo+IA0KPiBXaHkg ZG8geW91IG5lZWQgdGhpcyBpbmNsdWRlPw0KW1JpY2hhcmRdSXQncyBub3QgcmVxdWlyZWQgYW55 bW9yZSwgd291bGQgYmUgcmVtb3ZlZCBsYXRlci4NCj4gDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4NCj4gPiAgI2luY2x1 ZGUgPGxpbnV4L3BjaS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ DQo+ID4gICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvcmVzb3VyY2UuaD4NCj4g PiAgI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvc3lzY29y ZV9vcHMuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+ID4gICNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4NCj4gPg0KPiA+IEBAIC0zNSwxMSArMzksMTUgQEAgc3RydWN0IGlt eDZfcGNpZSB7DQo+ID4gIAlpbnQJCQlyZXNldF9ncGlvOw0KPiA+ICAJc3RydWN0IGNsawkJKnBj aWVfYnVzOw0KPiA+ICAJc3RydWN0IGNsawkJKnBjaWVfcGh5Ow0KPiA+ICsJc3RydWN0IGNsawkJ KmRpc3BfYXhpOw0KPiANCj4gVGhpcyBuZWVkcyBhIG1vcmUgZGVzY3JpcHRpdmUgbmFtZSwganVz dCBsaWtlIHRoZSBiaW5kaW5nLg0KW1JpY2hhcmRdaG93IGFib3V0IGxpa2UgInBjaWVfYXhpX2lu Ym91bmQiPw0KPiANCj4gPiAgCXN0cnVjdCBjbGsJCSpwY2llOw0KPiA+ICAJc3RydWN0IHBjaWVf cG9ydAlwcDsNCj4gPiAgCXN0cnVjdCByZWdtYXAJCSppb211eGNfZ3ByOw0KPiA+ICsJc3RydWN0 IHJlZ21hcAkJKmdwY19pcHNfcmVnOw0KPiA+ICsJc3RydWN0IHJlZ3VsYXRvcgkqcGNpZV9yZWd1 bGF0b3I7DQo+ID4gIAl2b2lkIF9faW9tZW0JCSptZW1fYmFzZTsNCj4gPiAgfTsNCj4gPiArc3Rh dGljIHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZTsNCj4gPg0KPiA+ICAvKiBQQ0llIFJvb3Qg Q29tcGxleCByZWdpc3RlcnMgKG1lbW9yeS1tYXBwZWQpICovDQo+ID4gICNkZWZpbmUgUENJRV9S Q19MQ1IJCQkJMHg3Yw0KPiA+IEBAIC03Nyw2ICs4NSwxOCBAQCBzdHJ1Y3QgaW14Nl9wY2llIHsN Cj4gPiAgI2RlZmluZSBQSFlfUlhfT1ZSRF9JTl9MT19SWF9EQVRBX0VOICgxIDw8IDUpICAjZGVm aW5lDQo+ID4gUEhZX1JYX09WUkRfSU5fTE9fUlhfUExMX0VOICgxIDw8IDMpDQo+ID4NCj4gPiAr LyogR1BDIFBDSUUgUEhZIGJpdCBkZWZpbml0aW9ucyAqLw0KPiA+ICsjZGVmaW5lIEdQQ19DTlRS CQkJMA0KPiA+ICsjZGVmaW5lIEdQQ19DTlRSX1BDSUVfUEhZX1BVUF9SRVEJQklUKDcpDQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfaW14NnN4X3BjaWUoc3RydWN0IGlteDZfcGNp ZSAqaW14Nl9wY2llKSB7DQo+ID4gKwlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZpbXg2X3BjaWUt PnBwOw0KPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBwLT5kZXYtPm9mX25vZGU7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAiZnNsLGlteDZz eC1wY2llIik7IH0NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgcGNpZV9waHlfcG9sbF9hY2sodm9p ZCBfX2lvbWVtICpkYmlfYmFzZSwgaW50IGV4cF92YWwpICB7DQo+ID4gIAl1MzIgdmFsOw0KPiA+ IEBAIC0yNzUsMTggKzI5NSwyOSBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9kZWFzc2VydF9jb3Jl X3Jlc2V0KHN0cnVjdA0KPiBwY2llX3BvcnQgKnBwKQ0KPiA+ICAJCWdvdG8gZXJyX3BjaWU7DQo+ ID4gIAl9DQo+ID4NCj4gPiAtCS8qIHBvd2VyIHVwIGNvcmUgcGh5IGFuZCBlbmFibGUgcmVmIGNs b2NrICovDQo+ID4gLQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJ T01VWENfR1BSMSwNCj4gPiAtCQkJSU1YNlFfR1BSMV9QQ0lFX1RFU1RfUEQsIDAgPDwgMTgpOw0K PiA+IC0JLyoNCj4gPiAtCSAqIHRoZSBhc3luYyByZXNldCBpbnB1dCBuZWVkIHJlZiBjbG9jayB0 byBzeW5jIGludGVybmFsbHksDQo+ID4gLQkgKiB3aGVuIHRoZSByZWYgY2xvY2sgY29tZXMgYWZ0 ZXIgcmVzZXQsIGludGVybmFsIHN5bmNlZA0KPiA+IC0JICogcmVzZXQgdGltZSBpcyB0b28gc2hv cnQgLCBjYW5ub3QgbWVldCB0aGUgcmVxdWlyZW1lbnQuDQo+ID4gLQkgKiBhZGQgb25lIH4xMHVz IGRlbGF5IGhlcmUuDQo+ID4gLQkgKi8NCj4gPiAtCXVkZWxheSgxMCk7DQo+ID4gLQlyZWdtYXBf dXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMSwNCj4gPiAtCQkJ SU1YNlFfR1BSMV9QQ0lFX1JFRl9DTEtfRU4sIDEgPDwgMTYpOw0KPiA+ICsJaWYgKGlzX2lteDZz eF9wY2llKGlteDZfcGNpZSkpIHsNCj4gPiArCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaW14 Nl9wY2llLT5kaXNwX2F4aSk7DQo+ID4gKwkJaWYgKHJldCkgew0KPiA+ICsJCQlkZXZfZXJyKHBw LT5kZXYsICJ1bmFibGUgdG8gZW5hYmxlIHBjaWUgY2xvY2tcbiIpOw0KPiA+ICsJCQlnb3RvIGVy cl9kaXNwOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZf cGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLA0KPiA+ICsJCQkJSU1YNlNYX0dQUjEyX1BD SUVfVEVTVF9QRCwgMCA8PCAzMCk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCS8qIHBvd2VyIHVw IGNvcmUgcGh5IGFuZCBlbmFibGUgcmVmIGNsb2NrICovDQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEsDQo+ID4gKwkJCQlJTVg2UV9H UFIxX1BDSUVfVEVTVF9QRCwgMCA8PCAxOCk7DQo+ID4gKwkJLyoNCj4gPiArCQkgKiB0aGUgYXN5 bmMgcmVzZXQgaW5wdXQgbmVlZCByZWYgY2xvY2sgdG8gc3luYyBpbnRlcm5hbGx5LA0KPiA+ICsJ CSAqIHdoZW4gdGhlIHJlZiBjbG9jayBjb21lcyBhZnRlciByZXNldCwgaW50ZXJuYWwgc3luY2Vk DQo+ID4gKwkJICogcmVzZXQgdGltZSBpcyB0b28gc2hvcnQgLCBjYW5ub3QgbWVldCB0aGUgcmVx dWlyZW1lbnQuDQo+ID4gKwkJICogYWRkIG9uZSB+MTB1cyBkZWxheSBoZXJlLg0KPiA+ICsJCSAq Lw0KPiA+ICsJCXVkZWxheSgxMCk7DQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNp ZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEsDQo+ID4gKwkJCQlJTVg2UV9HUFIxX1BDSUVfUkVG X0NMS19FTiwgMSA8PCAxNik7DQo+ID4gKwl9DQo+ID4NCj4gPiAgCS8qIGFsbG93IHRoZSBjbG9j a3MgdG8gc3RhYmlsaXplICovDQo+ID4gIAl1c2xlZXBfcmFuZ2UoMjAwLCA1MDApOw0KPiA+IEBA IC0yOTcsOCArMzI4LDE5IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2RlYXNzZXJ0X2NvcmVfcmVz ZXQoc3RydWN0DQo+IHBjaWVfcG9ydCAqcHApDQo+ID4gIAkJbXNsZWVwKDEwMCk7DQo+ID4gIAkJ Z3Bpb19zZXRfdmFsdWUoaW14Nl9wY2llLT5yZXNldF9ncGlvLCAxKTsNCj4gPiAgCX0NCj4gPiAr DQo+ID4gKwkvKg0KPiA+ICsJICogUmVsZWFzZSB0aGUgUENJZSBQSFkgcmVzZXQgaGVyZSwgdGhh dCB3ZSBoYXZlIHNldCBpbg0KPiA+ICsJICogaW14Nl9wY2llX2luaXRfcGh5KCkgbm93DQo+ID4g KwkgKi8NCj4gPiArCWlmIChpc19pbXg2c3hfcGNpZShpbXg2X3BjaWUpKQ0KPiA+ICsJCXJlZ21h cF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI1LA0KPiA+ICsJ CQkJSU1YNlNYX0dQUjVfUENJRV9CVE5SU1QsIDAgPDwgMTkpOw0KPiA+ICsNCj4gPiAgCXJldHVy biAwOw0KPiA+DQo+ID4gK2Vycl9kaXNwOg0KPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGlt eDZfcGNpZS0+cGNpZSk7DQo+ID4gIGVycl9wY2llOg0KPiA+ICAJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGlteDZfcGNpZS0+cGNpZV9idXMpOw0KPiA+ICBlcnJfcGNpZV9idXM6DQo+ID4gQEAgLTMx MSw2ICszNTMsMjYgQEAgZXJyX3BjaWVfcGh5Og0KPiA+ICBzdGF0aWMgdm9pZCBpbXg2X3BjaWVf aW5pdF9waHkoc3RydWN0IHBjaWVfcG9ydCAqcHApICB7DQo+ID4gIAlzdHJ1Y3QgaW14Nl9wY2ll ICppbXg2X3BjaWUgPSB0b19pbXg2X3BjaWUocHApOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ ID4gKwkvKiBQb3dlciB1cCB0aGUgc2VwYXJhdGUgZG9tYWluIGF2YWlsYWJsZSBvbiBpLk1YNlNY ICovDQo+ID4gKwlpZiAoaXNfaW14NnN4X3BjaWUoaW14Nl9wY2llKSkgew0KPiA+ICsJCS8qIEZv cmNlIFBDSWUgUEhZIHJlc2V0ICovDQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNp ZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjUsDQo+ID4gKwkJCQlJTVg2U1hfR1BSNV9QQ0lFX0JU TlJTVCwNCj4gPiArCQkJCUlNWDZTWF9HUFI1X1BDSUVfQlROUlNUKTsNCj4gPiArDQo+ID4gKwkJ cmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+Z3BjX2lwc19yZWcsIEdQQ19DTlRSLA0KPiA+ ICsJCQkJR1BDX0NOVFJfUENJRV9QSFlfUFVQX1JFUSwNCj4gPiArCQkJCUdQQ19DTlRSX1BDSUVf UEhZX1BVUF9SRVEpOw0KPiA+ICsJCXJlZ3VsYXRvcl9zZXRfdm9sdGFnZShpbXg2X3BjaWUtPnBj aWVfcmVndWxhdG9yLA0KPiA+ICsJCQkJMTEwMDAwMCwgMTEwMDAwMCk7DQo+ID4gKwkJcmV0ID0g cmVndWxhdG9yX2VuYWJsZShpbXg2X3BjaWUtPnBjaWVfcmVndWxhdG9yKTsNCj4gPiArCQlpZiAo cmV0KQ0KPiA+ICsJCQlkZXZfaW5mbyhwcC0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBwY2llIHJl Z3VsYXRvci5cbiIpOw0KPiA+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4 Y19ncHIsIElPTVVYQ19HUFIxMiwNCj4gPiArCQkJCUlNWDZTWF9HUFIxMl9SWF9FUV9NQVNLLCBJ TVg2U1hfR1BSMTJfUlhfRVFfMik7DQo+ID4gKwl9DQo+ID4NCj4gPiAgCXJlZ21hcF91cGRhdGVf Yml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwNCj4gPiAgCQkJSU1YNlFf R1BSMTJfUENJRV9DVExfMiwgMCA8PCAxMCk7DQo+ID4gQEAgLTMxOSw3ICszODEsNyBAQCBzdGF0 aWMgdm9pZCBpbXg2X3BjaWVfaW5pdF9waHkoc3RydWN0IHBjaWVfcG9ydCAqcHApDQo+ID4gIAly ZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIsDQo+ ID4gIAkJCUlNWDZRX0dQUjEyX0RFVklDRV9UWVBFLCBQQ0lfRVhQX1RZUEVfUk9PVF9QT1JUIDw8 IDEyKTsNCj4gPiAgCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElP TVVYQ19HUFIxMiwNCj4gPiAtCQkJSU1YNlFfR1BSMTJfTE9TX0xFVkVMLCA5IDw8IDQpOw0KPiA+ ICsJCQlJTVg2UV9HUFIxMl9MT1NfTEVWRUwsIElNWDZRX0dQUjEyX0xPU19MRVZFTF85KTsNCj4g Pg0KPiA+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhD X0dQUjgsDQo+ID4gIAkJCUlNWDZRX0dQUjhfVFhfREVFTVBIX0dFTjEsIDAgPDwgMCk7IEBAIC0z NzcsNyArNDM5LDggQEAgc3RhdGljDQo+IGludA0KPiA+IGlteDZfcGNpZV9zdGFydF9saW5rKHN0 cnVjdCBwY2llX3BvcnQgKnBwKQ0KPiA+DQo+ID4gIAkvKiBTdGFydCBMVFNTTS4gKi8NCj4gPiAg CXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwN Cj4gPiAtCQkJSU1YNlFfR1BSMTJfUENJRV9DVExfMiwgMSA8PCAxMCk7DQo+ID4gKwkJCUlNWDZR X0dQUjEyX1BDSUVfQ1RMXzIsDQo+ID4gKwkJCUlNWDZRX0dQUjEyX1BDSUVfQ1RMXzIpOw0KPiA+ DQo+ID4gIAlyZXQgPSBpbXg2X3BjaWVfd2FpdF9mb3JfbGluayhwcCk7DQo+ID4gIAlpZiAocmV0 KQ0KPiA+IEBAIC01NTMsOSArNjE2LDUwIEBAIHN0YXRpYyBpbnQgX19pbml0IGlteDZfYWRkX3Bj aWVfcG9ydChzdHJ1Y3QgcGNpZV9wb3J0DQo+ICpwcCwNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9 DQo+ID4NCj4gPiArI2lmZGVmIENPTkZJR19QTV9TTEVFUA0KPiA+ICtzdGF0aWMgaW50IHBjaV9p bXhfc3VzcGVuZCh2b2lkKQ0KPiA+ICt7DQo+ID4gKwlpZiAoaXNfaW14NnN4X3BjaWUoaW14Nl9w Y2llKSkgew0KPiA+ICsJCS8qIFBNX1RVUk5fT0ZGICovDQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLA0KPiA+ICsJCQkJSU1YNlNY X0dQUjEyX1BDSUVfUE1fVFVSTl9PRkYsDQo+ID4gKwkJCQlJTVg2U1hfR1BSMTJfUENJRV9QTV9U VVJOX09GRik7DQo+ID4gKwkJdWRlbGF5KDEwKTsNCj4gPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMo aW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIsDQo+ID4gKwkJCQlJTVg2U1hfR1BS MTJfUENJRV9QTV9UVVJOX09GRiwgMCA8PCAxNik7DQo+IA0KPiBKdXN0IHVzZSAwIGFzIHRoZSBs YXN0IGFyZ3VtZW50LiBUaG9zZSBzaGlmdHMgYXJlbid0IGFkZGluZyBhbnl0aGluZyBhbmQgSQ0K PiB3b3VsZCBsaWtlIHRvIGdldCByaWQgb2YgdGhlbSBsb25nIHRlcm0sIHNvIHBsZWFzZSBkb24n dCBpbnRyb2R1Y2UgbmV3IG9uZXMuDQo+IA0KW1JpY2hhcmRdIE9rLCBhbGwgdGhlc2Ugc2hpZnRz IHdvdWxkbid0IGJlIHJlbW92ZWQuDQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHBjaV9pbXhfcmVzdW1lKHZvaWQpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gJmlteDZfcGNpZS0+cHA7DQo+ID4gKw0K PiA+ICsJaWYgKGlzX2lteDZzeF9wY2llKGlteDZfcGNpZSkpIHsNCj4gPiArCQkvKiBSZXNldCBp TVg2U1ggUENJZSAqLw0KPiA+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4 Y19ncHIsIElPTVVYQ19HUFI1LA0KPiA+ICsJCQkJSU1YNlNYX0dQUjVfUENJRV9QRVJTVCwgSU1Y NlNYX0dQUjVfUENJRV9QRVJTVCk7DQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNp ZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjUsDQo+ID4gKwkJCQlJTVg2U1hfR1BSNV9QQ0lFX1BF UlNULCAwIDw8IDE4KTsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIGNvbnRyb2xsZXIgbWF5YmUgdHVy biBvZmYsIHJlLWNvbmZpZ3VyZSBhZ2Fpbg0KPiA+ICsJCSAqLw0KPiA+ICsJCWR3X3BjaWVfc2V0 dXBfcmMocHApOw0KPiA+ICsNCj4gPiArCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUENJX01TSSkp DQo+ID4gKwkJCWR3X3BjaWVfbXNpX2NmZ19yZXN0b3JlKHBwKTsNCj4gPiArCX0NCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBzeXNjb3JlX29wcyBwY2lfaW14X3N5c2NvcmVfb3Bz ID0gew0KPiA+ICsJLnN1c3BlbmQgPSBwY2lfaW14X3N1c3BlbmQsDQo+ID4gKwkucmVzdW1lID0g cGNpX2lteF9yZXN1bWUsDQo+ID4gK307DQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4gPiAgc3RhdGlj IGludCBfX2luaXQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp ICB7DQo+ID4gLQlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWU7DQo+ID4gIAlzdHJ1Y3QgcGNp ZV9wb3J0ICpwcDsNCj4gPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LT5kZXYub2Zf bm9kZTsNCj4gPiAgCXN0cnVjdCByZXNvdXJjZSAqZGJpX2Jhc2U7DQo+ID4gQEAgLTYxMCw5ICs3 MTQsMjcgQEAgc3RhdGljIGludCBfX2luaXQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIAkJcmV0dXJuIFBUUl9FUlIoaW14Nl9wY2llLT5wY2ll KTsNCj4gPiAgCX0NCj4gPg0KPiA+IC0JLyogR3JhYiBHUFIgY29uZmlnIHJlZ2lzdGVyIHJhbmdl ICovDQo+ID4gLQlpbXg2X3BjaWUtPmlvbXV4Y19ncHIgPQ0KPiA+IC0JCSBzeXNjb25fcmVnbWFw X2xvb2t1cF9ieV9jb21wYXRpYmxlKCJmc2wsaW14NnEtaW9tdXhjLWdwciIpOw0KPiA+ICsJaWYg KGlzX2lteDZzeF9wY2llKGlteDZfcGNpZSkpIHsNCj4gPiArCQlpbXg2X3BjaWUtPmRpc3BfYXhp ID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJkaXNwX2F4aSIpOw0KPiA+ICsJCWlmIChJU19F UlIoaW14Nl9wY2llLT5kaXNwX2F4aSkpIHsNCj4gPiArCQkJZGV2X2VycigmcGRldi0+ZGV2LA0K PiA+ICsJCQkJInBjaWUgY2xvY2sgc291cmNlIG1pc3Npbmcgb3IgaW52YWxpZFxuIik7DQo+ID4g KwkJCXJldHVybiBQVFJfRVJSKGlteDZfcGNpZS0+ZGlzcF9heGkpOw0KPiA+ICsJCX0NCj4gPiAr DQo+ID4gKwkJaW14Nl9wY2llLT5wY2llX3JlZ3VsYXRvciA9IGRldm1fcmVndWxhdG9yX2dldChw cC0+ZGV2LA0KPiA+ICsJCQkJInBjaWVfcGh5Iik7DQo+ID4gKw0KPiA+ICsJCWlteDZfcGNpZS0+ aW9tdXhjX2dwciA9DQo+ID4gKwkJCSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxl DQo+ID4gKwkJCSAoImZzbCxpbXg2c3gtaW9tdXhjLWdwciIpOw0KPiA+ICsJCWlteDZfcGNpZS0+ Z3BjX2lwc19yZWcgPQ0KPiA+ICsJCQkgc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJs ZSgiZnNsLGlteDZzeC1ncGMiKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJaW14Nl9wY2llLT5p b211eGNfZ3ByID0NCj4gPiArCQkJc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJsZQ0K PiA+ICsJCQkoImZzbCxpbXg2cS1pb211eGMtZ3ByIik7DQo+ID4gKwl9DQo+ID4gIAlpZiAoSVNf RVJSKGlteDZfcGNpZS0+aW9tdXhjX2dwcikpIHsNCj4gPiAgCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJ1bmFibGUgdG8gZmluZCBpb211eGMgcmVnaXN0ZXJzXG4iKTsNCj4gPiAgCQlyZXR1cm4gUFRS X0VSUihpbXg2X3BjaWUtPmlvbXV4Y19ncHIpOyBAQCAtNjIzLDYgKzc0NSw5IEBAIHN0YXRpYw0K PiA+IGludCBfX2luaXQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ID4gIAkJcmV0dXJuIHJldDsNCj4gPg0KPiA+ICAJcGxhdGZvcm1fc2V0X2RydmRhdGEo cGRldiwgaW14Nl9wY2llKTsNCj4gPiArI2lmZGVmIENPTkZJR19QTV9TTEVFUA0KPiA+ICsJcmVn aXN0ZXJfc3lzY29yZV9vcHMoJnBjaV9pbXhfc3lzY29yZV9vcHMpOw0KPiA+ICsjZW5kaWYNCj4g PiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtNjM2LDYgKzc2MSw3IEBAIHN0YXRp YyB2b2lkIGlteDZfcGNpZV9zaHV0ZG93bihzdHJ1Y3QNCj4gPiBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ID4NCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14Nl9wY2ll X29mX21hdGNoW10gPSB7DQo+ID4gIAl7IC5jb21wYXRpYmxlID0gImZzbCxpbXg2cS1wY2llIiwg fSwNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDZzeC1wY2llIiwgfSwNCj4gPiAgCXt9 LA0KPiA+ICB9Ow0KPiA+ICBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbXg2X3BjaWVfb2ZfbWF0 Y2gpOw0KPiANCj4gLS0NCj4gUGVuZ3V0cm9uaXggZS5LLiAgICAgICAgICAgICB8IEx1Y2FzIFN0 YWNoICAgICAgICAgICAgICAgICB8DQo+IEluZHVzdHJpYWwgTGludXggU29sdXRpb25zICAgfCBo dHRwOi8vd3d3LnBlbmd1dHJvbml4LmRlLyAgfA0KDQoNCkJlc3QgUmVnYXJkcw0KUmljaGFyZCBa aHUNCg0K