Return-path: Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:52950 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755147AbdKOLFr (ORCPT ); Wed, 15 Nov 2017 06:05:47 -0500 From: Xinming Hu To: Brian Norris , Xinming Hu CC: Linux Wireless , Kalle Valo , Dmitry Torokhov , "rajatja@google.com" , Zhiyuan Yang , Tim Song , Cathy Luo , Ganapathi Bhat , James Cao Subject: Re: Re: [PATCH 1/3] mwifiex: refactor device dump code to make it generic for usb interface Date: Wed, 15 Nov 2017 11:05:39 +0000 Message-ID: (sfid-20171115_120557_683517_A5C89B7B) Content-Type: text/plain; charset="gb2312" MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org List-ID: SGkgQnJpYW4sDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCcmlh biBOb3JyaXMgW21haWx0bzpicmlhbm5vcnJpc0BjaHJvbWl1bS5vcmddDQo+IFNlbnQ6IDIwMTfE 6jjUwjE1yNUgNzo0NQ0KPiBUbzogWGlubWluZyBIdSA8aHV4aW5taW5nODIwQGdtYWlsLmNvbT4N Cj4gQ2M6IExpbnV4IFdpcmVsZXNzIDxsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmc+OyBL YWxsZSBWYWxvDQo+IDxrdmFsb0Bjb2RlYXVyb3JhLm9yZz47IERtaXRyeSBUb3Jva2hvdiA8ZHRv ckBnb29nbGUuY29tPjsNCj4gcmFqYXRqYUBnb29nbGUuY29tOyBaaGl5dWFuIFlhbmcgPHlhbmd6 eUBtYXJ2ZWxsLmNvbT47IFRpbSBTb25nDQo+IDxzb25ndGFvQG1hcnZlbGwuY29tPjsgQ2F0aHkg THVvIDxjbHVvQG1hcnZlbGwuY29tPjsgR2FuYXBhdGhpIEJoYXQNCj4gPGdiaGF0QG1hcnZlbGwu Y29tPjsgWGlubWluZyBIdSA8aHV4bUBtYXJ2ZWxsLmNvbT4NCj4gU3ViamVjdDogW0VYVF0gUmU6 IFtQQVRDSCAxLzNdIG13aWZpZXg6IHJlZmFjdG9yIGRldmljZSBkdW1wIGNvZGUgdG8gbWFrZSBp dA0KPiBnZW5lcmljIGZvciB1c2IgaW50ZXJmYWNlDQo+IA0KPiBFeHRlcm5hbCBFbWFpbA0KPiAN Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiBPbiBNb24sIEF1ZyAxNCwgMjAxNyBhdCAxMjoxOTowMVBNICsw MDAwLCBYaW5taW5nIEh1IHdyb3RlOg0KPiA+IEZyb206IFhpbm1pbmcgSHUgPGh1eG1AbWFydmVs bC5jb20+DQo+ID4NCj4gPiBUaGlzIHBhdGNoIHJlZmFjdG9yIGN1cnJlbnQgZGV2aWNlIGR1bXAg Y29kZSB0byBtYWtlIGl0IGdlbmVyaWMgZm9yDQo+ID4gc3Vic2VxdWVudCBpbXBsZW1lbnRhdGlv biBvbiB1c2IgaW50ZXJmYWNlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogWGlubWluZyBIdSA8 aHV4bUBtYXJ2ZWxsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBDYXRoeSBMdW8gPGNsdW9AbWFy dmVsbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogR2FuYXBhdGhpIEJoYXQgPGdiaGF0QG1hcnZl bGwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZp ZXgvbWFpbi5jIHwgOTANCj4gPiArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQ0KPiA+IGRy aXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmggfCAxMSArKystDQo+ID4g ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYyB8IDEzICsrKy0tDQo+ ID4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyB8IDE0ICsrKy0t DQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0p DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lm aWV4L21haW4uYw0KPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21h aW4uYw0KPiA+IGluZGV4IGVlNDBiNzMuLjkxOWQ5MWEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYw0KPiA+ICsrKyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMNCj4gPiBAQCAtMTA1Miw5ICsxMDUy LDI2IEBAIHZvaWQgbXdpZmlleF9tdWx0aV9jaGFuX3Jlc3luYyhzdHJ1Y3QNCj4gPiBtd2lmaWV4 X2FkYXB0ZXIgKmFkYXB0ZXIpICB9DQo+ID4gRVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF9tdWx0 aV9jaGFuX3Jlc3luYyk7DQo+ID4NCj4gPiAtaW50IG13aWZpZXhfZHJ2X2luZm9fZHVtcChzdHJ1 Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB2b2lkDQo+ID4gKipkcnZfaW5mbykNCj4gPiAr dm9pZCBtd2lmaWV4X3VwbG9hZF9kZXZpY2VfZHVtcCh1bnNpZ25lZCBsb25nIGZ1bmN0aW9uX2Nv bnRleHQpDQo+IA0KPiBNeSBleWVzISBJdCBidXJucyENCj4gDQo+IE1vc3QgY2FsbGVycyBkb24n dCBuZWVkIHRoZSBjYXN0aW5nLCBzbyB0aGlzIGxvb2tzIHRlcnJpYmx5IHVuc2FmZS4NCj4gUGxl YXNlIGtlZXAgdGhlIGNhc3RpbmcgdG8gb25seSB3aGVyZSBpdCdzIG5lZWRlZCAoaS5lLiwgaW4g dGhlIHRpbWVyLXJlbGF0ZWQNCj4gY29kZSkuDQoNCk15IGZhdWx0LCB3aWxsIGNvcnJlY3QgaXQg aW4gVjIuDQoNCj4gDQo+IEFsc28sIHdoeSBjYW4ndCB0aGUgY2FsbGVyIHBhc3MgaW4gdGhlIGR1 bXAgZGF0YS9sZW4gdmFsdWVzPyBZb3UncmUgbWFraW5nIFBDSWUNCj4gYW5kIFNESU8gbG9vayBl dmVuIHVnbGllciwganVzdCBiZWNhdXNlIHlvdSBjYW4ndCBmaWd1cmUgb3V0IGhvdyB0byB3cmFw IHRoaXMNCj4gbmljZWx5IGZvciBVU0IuDQo+IA0KPiBZb3UgbWlnaHQgZG8gYmV0dGVyIHRvIGNv bnNpZGVyIGhvdyB0byBtYWtlIHRoaXMgbmljZXIgYnkgaW1wbGVtZW50aW5nIGJldHRlcg0KPiBk cml2ZXIgY2FsbGJhY2tzLCBhbmQgZG9pbmcgbW9zdCBvZiB0aGUgd29yayBpbiB0aGUgY29yZS4N Cj4gT3ZlcmFsbCwgeW91IHNob3VsZG4ndCBuZWVkIHNvIG1hbnkgZXhwb3J0ZWQgc3ltYm9scy4N Cj4gDQoNClBsZWFzZSBjaGVjayB0aGUgY29tbWVudHMgYmVsb3cuDQoNCj4gPiAgew0KPiA+IC0J dm9pZCAqcDsNCj4gPiArCXN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPQ0KPiA+ICsJ CShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICopZnVuY3Rpb25fY29udGV4dDsNCj4gPiArDQo+ID4g KwkvKiBEdW1wIGFsbCB0aGUgbWVtb3J5IGRhdGEgaW50byBzaW5nbGUgZmlsZSwgYSB1c2Vyc3Bh Y2Ugc2NyaXB0IHdpbGwNCj4gPiArCSAqIGJlIHVzZWQgdG8gc3BsaXQgYWxsIHRoZSBtZW1vcnkg ZGF0YSB0byBtdWx0aXBsZSBmaWxlcw0KPiA+ICsJICovDQo+ID4gKwltd2lmaWV4X2RiZyhhZGFw dGVyLCBNU0csDQo+ID4gKwkJICAgICI9PSBtd2lmaWV4IGR1bXAgaW5mb3JtYXRpb24gdG8gL3N5 cy9jbGFzcy9kZXZjb3JlZHVtcA0KPiBzdGFydCIpOw0KPiA+ICsJZGV2X2NvcmVkdW1wdihhZGFw dGVyLT5kZXYsIGFkYXB0ZXItPmRldmR1bXBfZGF0YSwNCj4gYWRhcHRlci0+ZGV2ZHVtcF9sZW4s DQo+ID4gKwkJICAgICAgR0ZQX0tFUk5FTCk7DQo+ID4gKwltd2lmaWV4X2RiZyhhZGFwdGVyLCBN U0csDQo+ID4gKwkJICAgICI9PSBtd2lmaWV4IGR1bXAgaW5mb3JtYXRpb24gdG8gL3N5cy9jbGFz cy9kZXZjb3JlZHVtcA0KPiBlbmQiKTsgfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4 X3VwbG9hZF9kZXZpY2VfZHVtcCk7DQo+ID4gKw0KPiA+ICt2b2lkIG13aWZpZXhfZHJ2X2luZm9f ZHVtcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKSB7DQo+ID4gKwljaGFyICpwOw0K PiA+ICAJY2hhciBkcnZfdmVyc2lvbls2NF07DQo+ID4gIAlzdHJ1Y3QgdXNiX2NhcmRfcmVjICpj YXJkcDsNCj4gPiAgCXN0cnVjdCBzZGlvX21tY19jYXJkICpzZGlvX2NhcmQ7DQo+ID4gQEAgLTEw NjIsMTcgKzEwNzksMTIgQEAgaW50IG13aWZpZXhfZHJ2X2luZm9fZHVtcChzdHJ1Y3QNCj4gbXdp ZmlleF9hZGFwdGVyICphZGFwdGVyLCB2b2lkICoqZHJ2X2luZm8pDQo+ID4gIAlpbnQgaSwgaWR4 Ow0KPiA+ICAJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxOw0KPiA+ICAJc3RydWN0IG13aWZpZXhf ZGVidWdfaW5mbyAqZGVidWdfaW5mbzsNCj4gPiAtCXZvaWQgKmRydl9pbmZvX2R1bXA7DQo+ID4N Cj4gPiAgCW13aWZpZXhfZGJnKGFkYXB0ZXIsIE1TRywgIj09PW13aWZpZXggZHJpdmVyaW5mbyBk dW1wIHN0YXJ0PT09XG4iKTsNCj4gPg0KPiA+IC0JLyogbWVtb3J5IGFsbG9jYXRlIGhlcmUgc2hv dWxkIGJlIGZyZWUgaW4gbXdpZmlleF91cGxvYWRfZGV2aWNlX2R1bXAqLw0KPiA+IC0JZHJ2X2lu Zm9fZHVtcCA9IHZ6YWxsb2MoTVdJRklFWF9EUlZfSU5GT19TSVpFX01BWCk7DQo+ID4gLQ0KPiA+ IC0JaWYgKCFkcnZfaW5mb19kdW1wKQ0KPiA+IC0JCXJldHVybiAwOw0KPiA+IC0NCj4gPiAtCXAg PSAoY2hhciAqKShkcnZfaW5mb19kdW1wKTsNCj4gPiArCXAgPSBhZGFwdGVyLT5kZXZkdW1wX2Rh dGE7DQo+ID4gKwlzdHJjcHkocCwgIj09PT09PT09U3RhcnQgZHVtcCBkcml2ZXJpbmZvPT09PT09 PT1cbiIpOw0KPiA+ICsJcCArPSBzdHJsZW4oIj09PT09PT09U3RhcnQgZHVtcCBkcml2ZXJpbmZv PT09PT09PT1cbiIpOw0KPiA+ICAJcCArPSBzcHJpbnRmKHAsICJkcml2ZXJfbmFtZSA9ICIgIlwi bXdpZmlleFwiXG4iKTsNCj4gPg0KPiA+ICAJbXdpZmlleF9kcnZfZ2V0X2RyaXZlcl92ZXJzaW9u KGFkYXB0ZXIsIGRydl92ZXJzaW9uLCBAQCAtMTE1NiwyMQ0KPiA+ICsxMTY4LDE4IEBAIGludCBt d2lmaWV4X2Rydl9pbmZvX2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwNCj4g dm9pZCAqKmRydl9pbmZvKQ0KPiA+ICAJCWtmcmVlKGRlYnVnX2luZm8pOw0KPiA+ICAJfQ0KPiA+ DQo+ID4gKwlzdHJjcHkocCwgIlxuPT09PT09PT1FbmQgZHVtcD09PT09PT09XG4iKTsNCj4gPiAr CXAgKz0gc3RybGVuKCJcbj09PT09PT09RW5kIGR1bXA9PT09PT09PVxuIik7DQo+ID4gIAltd2lm aWV4X2RiZyhhZGFwdGVyLCBNU0csICI9PT1td2lmaWV4IGRyaXZlcmluZm8gZHVtcCBlbmQ9PT1c biIpOw0KPiA+IC0JKmRydl9pbmZvID0gZHJ2X2luZm9fZHVtcDsNCj4gPiAtCXJldHVybiBwIC0g ZHJ2X2luZm9fZHVtcDsNCj4gPiArCWFkYXB0ZXItPmRldmR1bXBfbGVuID0gcCAtIGFkYXB0ZXIt PmRldmR1bXBfZGF0YTsNCj4gPiAgfQ0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X2Ry dl9pbmZvX2R1bXApOw0KPiA+DQo+ID4gLXZvaWQgbXdpZmlleF91cGxvYWRfZGV2aWNlX2R1bXAo c3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdm9pZA0KPiAqZHJ2X2luZm8sDQo+ID4g LQkJCQlpbnQgZHJ2X2luZm9fc2l6ZSkNCj4gPiArdm9pZCBtd2lmaWV4X3ByZXBhcmVfZndfZHVt cF9pbmZvKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpDQo+ID4gIHsNCj4gPiAtCXU4 IGlkeCwgKmR1bXBfZGF0YSwgKmZ3X2R1bXBfcHRyOw0KPiA+IC0JdTMyIGR1bXBfbGVuOw0KPiA+ IC0NCj4gPiAtCWR1bXBfbGVuID0gKHN0cmxlbigiPT09PT09PT1TdGFydCBkdW1wIGRyaXZlcmlu Zm89PT09PT09PVxuIikgKw0KPiA+IC0JCSAgICAgICBkcnZfaW5mb19zaXplICsNCj4gPiAtCQkg ICAgICAgc3RybGVuKCJcbj09PT09PT09RW5kIGR1bXA9PT09PT09PVxuIikpOw0KPiA+ICsJdTgg aWR4Ow0KPiA+ICsJY2hhciAqZndfZHVtcF9wdHI7DQo+ID4gKwl1MzIgZHVtcF9sZW4gPSAwOw0K PiA+DQo+ID4gIAlmb3IgKGlkeCA9IDA7IGlkeCA8IGFkYXB0ZXItPm51bV9tZW1fdHlwZXM7IGlk eCsrKSB7DQo+ID4gIAkJc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgKmVudHJ5ID0gQEAgLTEx ODUsMjQgKzExOTQsMjQgQEANCj4gdm9pZA0KPiA+IG13aWZpZXhfdXBsb2FkX2RldmljZV9kdW1w KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHZvaWQNCj4gKmRydl9pbmZvLA0KPiA+ ICAJCX0NCj4gPiAgCX0NCj4gPg0KPiA+IC0JZHVtcF9kYXRhID0gdnphbGxvYyhkdW1wX2xlbiAr IDEpOw0KPiA+IC0JaWYgKCFkdW1wX2RhdGEpDQo+ID4gLQkJZ290byBkb25lOw0KPiA+IC0NCj4g PiAtCWZ3X2R1bXBfcHRyID0gZHVtcF9kYXRhOw0KPiA+ICsJaWYgKGR1bXBfbGVuICsgMSArIGFk YXB0ZXItPmRldmR1bXBfbGVuID4gTVdJRklFWF9GV19EVU1QX1NJWkUpIHsNCj4gPiArCQkvKiBS ZWFsbG9jIGluIGNhc2UgYnVmZmVyIG92ZXJmbG93ICovDQo+ID4gKwkJZndfZHVtcF9wdHIgPSB2 emFsbG9jKGR1bXBfbGVuICsgMSArIGFkYXB0ZXItPmRldmR1bXBfbGVuKTsNCj4gPiArCQltd2lm aWV4X2RiZyhhZGFwdGVyLCBNU0csICJSZWFsbG9jIGRldmljZSBkdW1wIGRhdGEuIik7DQo+ID4g KwkJaWYgKCFmd19kdW1wX3B0cikgew0KPiA+ICsJCQl2ZnJlZShhZGFwdGVyLT5kZXZkdW1wX2Rh dGEpOw0KPiA+ICsJCQltd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUiwNCj4gPiArCQkJCSAgICAi dnphbGxvYyBkZXZkdW1wIGRhdGEgZmFpbHVyZSFcbiIpOw0KPiA+ICsJCQlyZXR1cm47DQo+ID4g KwkJfQ0KPiA+DQo+ID4gLQkvKiBEdW1wIGFsbCB0aGUgbWVtb3J5IGRhdGEgaW50byBzaW5nbGUg ZmlsZSwgYSB1c2Vyc3BhY2Ugc2NyaXB0IHdpbGwNCj4gPiAtCSAqIGJlIHVzZWQgdG8gc3BsaXQg YWxsIHRoZSBtZW1vcnkgZGF0YSB0byBtdWx0aXBsZSBmaWxlcw0KPiA+IC0JICovDQo+ID4gLQlt d2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csDQo+ID4gLQkJICAgICI9PSBtd2lmaWV4IGR1bXAgaW5m b3JtYXRpb24gdG8gL3N5cy9jbGFzcy9kZXZjb3JlZHVtcA0KPiBzdGFydCIpOw0KPiA+ICsJCW1l bW1vdmUoZndfZHVtcF9wdHIsIGFkYXB0ZXItPmRldmR1bXBfZGF0YSwNCj4gPiArCQkJYWRhcHRl ci0+ZGV2ZHVtcF9sZW4pOw0KPiA+ICsJCXZmcmVlKGFkYXB0ZXItPmRldmR1bXBfZGF0YSk7DQo+ ID4gKwkJYWRhcHRlci0+ZGV2ZHVtcF9kYXRhID0gZndfZHVtcF9wdHI7DQo+ID4gKwl9DQo+ID4N Cj4gPiAtCXN0cmNweShmd19kdW1wX3B0ciwgIj09PT09PT09U3RhcnQgZHVtcCBkcml2ZXJpbmZv PT09PT09PT1cbiIpOw0KPiA+IC0JZndfZHVtcF9wdHIgKz0gc3RybGVuKCI9PT09PT09PVN0YXJ0 IGR1bXAgZHJpdmVyaW5mbz09PT09PT09XG4iKTsNCj4gPiAtCW1lbWNweShmd19kdW1wX3B0ciwg ZHJ2X2luZm8sIGRydl9pbmZvX3NpemUpOw0KPiA+IC0JZndfZHVtcF9wdHIgKz0gZHJ2X2luZm9f c2l6ZTsNCj4gPiAtCXN0cmNweShmd19kdW1wX3B0ciwgIlxuPT09PT09PT1FbmQgZHVtcD09PT09 PT09XG4iKTsNCj4gPiAtCWZ3X2R1bXBfcHRyICs9IHN0cmxlbigiXG49PT09PT09PUVuZCBkdW1w PT09PT09PT1cbiIpOw0KPiA+ICsJZndfZHVtcF9wdHIgPSBhZGFwdGVyLT5kZXZkdW1wX2RhdGEg KyBhZGFwdGVyLT5kZXZkdW1wX2xlbjsNCj4gPg0KPiA+ICAJZm9yIChpZHggPSAwOyBpZHggPCBh ZGFwdGVyLT5udW1fbWVtX3R5cGVzOyBpZHgrKykgew0KPiA+ICAJCXN0cnVjdCBtZW1vcnlfdHlw ZV9tYXBwaW5nICplbnRyeSA9IEBAIC0xMjI5LDExICsxMjM4LDggQEANCj4gdm9pZA0KPiA+IG13 aWZpZXhfdXBsb2FkX2RldmljZV9kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIs IHZvaWQNCj4gKmRydl9pbmZvLA0KPiA+ICAJLyogZGV2aWNlIGR1bXAgZGF0YSB3aWxsIGJlIGZy ZWUgaW4gZGV2aWNlIGNvcmVkdW1wIHJlbGVhc2UgZnVuY3Rpb24NCj4gPiAgCSAqIGFmdGVyIDUg bWluDQo+ID4gIAkgKi8NCj4gPiAtCWRldl9jb3JlZHVtcHYoYWRhcHRlci0+ZGV2LCBkdW1wX2Rh dGEsIGR1bXBfbGVuLCBHRlBfS0VSTkVMKTsNCj4gPiAtCW13aWZpZXhfZGJnKGFkYXB0ZXIsIE1T RywNCj4gPiAtCQkgICAgIj09IG13aWZpZXggZHVtcCBpbmZvcm1hdGlvbiB0byAvc3lzL2NsYXNz L2RldmNvcmVkdW1wIGVuZCIpOw0KPiA+ICsJYWRhcHRlci0+ZGV2ZHVtcF9sZW4gPSBmd19kdW1w X3B0ciAtIGFkYXB0ZXItPmRldmR1bXBfZGF0YTsNCj4gPg0KPiA+IC1kb25lOg0KPiA+ICAJZm9y IChpZHggPSAwOyBpZHggPCBhZGFwdGVyLT5udW1fbWVtX3R5cGVzOyBpZHgrKykgew0KPiA+ICAJ CXN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nICplbnRyeSA9DQo+ID4gIAkJCSZhZGFwdGVyLT5t ZW1fdHlwZV9tYXBwaW5nX3RibFtpZHhdOw0KPiA+IEBAIC0xMjQyLDEwICsxMjQ4LDggQEAgdm9p ZCBtd2lmaWV4X3VwbG9hZF9kZXZpY2VfZHVtcChzdHJ1Y3QNCj4gbXdpZmlleF9hZGFwdGVyICph ZGFwdGVyLCB2b2lkICpkcnZfaW5mbywNCj4gPiAgCQllbnRyeS0+bWVtX3B0ciA9IE5VTEw7DQo+ ID4gIAkJZW50cnktPm1lbV9zaXplID0gMDsNCj4gPiAgCX0NCj4gPiAtDQo+ID4gLQl2ZnJlZShk cnZfaW5mbyk7DQo+ID4gIH0NCj4gPiAtRVhQT1JUX1NZTUJPTF9HUEwobXdpZmlleF91cGxvYWRf ZGV2aWNlX2R1bXApOw0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtd2lmaWV4X3ByZXBhcmVfZndf ZHVtcF9pbmZvKTsNCj4gPg0KPiA+ICAvKg0KPiA+ICAgKiBDRkc4MDIuMTEgbmV0d29yayBkZXZp Y2UgaGFuZGxlciBmb3Igc3RhdGlzdGljcyByZXRyaWV2YWwuDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgNCj4gPiBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgNCj4gPiBpbmRleCAwYWFhZTA4Li5l MzA4YjhhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdp ZmlleC9tYWluLmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZp ZXgvbWFpbi5oDQo+ID4gQEAgLTk0LDYgKzk0LDggQEAgZW51bSB7DQo+ID4NCj4gPiAgI2RlZmlu ZSBNQVhfRVZFTlRfU0laRSAgICAgICAgICAgICAgICAgIDIwNDgNCj4gPg0KPiA+ICsjZGVmaW5l IE1XSUZJRVhfRldfRFVNUF9TSVpFICAgICAgICgyICogMTAyNCAqIDEwMjQpDQo+ID4gKw0KPiA+ ICAjZGVmaW5lIEFSUF9GSUxURVJfTUFYX0JVRl9TSVpFICAgICAgICAgNjgNCj4gPg0KPiA+ICAj ZGVmaW5lIE1XSUZJRVhfS0VZX0JVRkZFUl9TSVpFCQkJMTYNCj4gPiBAQCAtMTAzMyw2ICsxMDM1 LDkgQEAgc3RydWN0IG13aWZpZXhfYWRhcHRlciB7DQo+ID4gIAlib29sIHdha2VfYnlfd2lmaTsN Cj4gPiAgCS8qIEFnZ3JlZ2F0aW9uIHBhcmFtZXRlcnMqLw0KPiA+ICAJc3RydWN0IGJ1c19hZ2dy X3BhcmFtcyBidXNfYWdncjsNCj4gPiArCS8qIERldmljZSBkdW1wIGRhdGEvbGVuZ3RoICovDQo+ ID4gKwljaGFyICpkZXZkdW1wX2RhdGE7DQo+IA0KPiBTaG91bGQgYmUgJ3ZvaWQgKicuDQoNCk9r Lg0KDQo+IA0KPiA+ICsJaW50IGRldmR1bXBfbGVuOw0KPiANCj4gSSByZWFsbHkgcmVhbGx5IGRv bid0IGxpa2UgeW91IHN0aWNraW5nIHlldCBhbm90aGVyIHRyYW5zaWVudCBwaWVjZSBvZiBkYXRh IGhlcmUuDQo+IElJVUMsIHlvdSdyZSBqdXN0IGFkbWl0dGluZyB0aGF0IChhZnRlciB0aGUgZmly c3QgZHVtcCkgeW91J3JlIGdvaW5nIHRvIHdhc3RlDQo+IDJNQisgb2YgbWVtb3J5IGZvcmV2ZXI/ IFBsZWFzZSB0cnkgaGFyZGVyIHRoYW4gdGhhdC4NCj4gDQoNClNvcnJ5LCB0aGUgZGV2ZHVtcF9s ZW4gc2hvdWxkIGJlIHJlc2V0IGR1cmluZyBzb2Z0d2FyZSBpbml0aXphdGlvbi4NCg0KPiA+ICB9 Ow0KPiA+DQo+ID4gIHZvaWQgbXdpZmlleF9wcm9jZXNzX3R4X3F1ZXVlKHN0cnVjdCBtd2lmaWV4 X2FkYXB0ZXIgKmFkYXB0ZXIpOyBAQA0KPiA+IC0xNjU0LDkgKzE2NTksOSBAQCB2b2lkIG13aWZp ZXhfaGlzdF9kYXRhX2FkZChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlDQo+ID4gKnByaXYsDQo+ID4g IHU4IG13aWZpZXhfYWRqdXN0X2RhdGFfcmF0ZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2 LA0KPiA+ICAJCQkgICAgdTggcnhfcmF0ZSwgdTggaHRfaW5mbyk7DQo+ID4NCj4gPiAtaW50IG13 aWZpZXhfZHJ2X2luZm9fZHVtcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB2b2lk DQo+ID4gKipkcnZfaW5mbyk7IC12b2lkIG13aWZpZXhfdXBsb2FkX2RldmljZV9kdW1wKHN0cnVj dCBtd2lmaWV4X2FkYXB0ZXINCj4gKmFkYXB0ZXIsIHZvaWQgKmRydl9pbmZvLA0KPiA+IC0JCQkJ aW50IGRydl9pbmZvX3NpemUpOw0KPiA+ICt2b2lkIG13aWZpZXhfZHJ2X2luZm9fZHVtcChzdHJ1 Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTsgdm9pZA0KPiA+ICttd2lmaWV4X3ByZXBhcmVf ZndfZHVtcF9pbmZvKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpOyB2b2lkDQo+ID4g K213aWZpZXhfdXBsb2FkX2RldmljZV9kdW1wKHVuc2lnbmVkIGxvbmcgZnVuY3Rpb25fY29udGV4 dCk7DQo+ID4gIHZvaWQgKm13aWZpZXhfYWxsb2NfZG1hX2FsaWduX2J1ZihpbnQgcnhfbGVuLCBn ZnBfdCBmbGFncyk7ICB2b2lkDQo+ID4gbXdpZmlleF9xdWV1ZV9tYWluX3dvcmsoc3RydWN0IG13 aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7ICBpbnQNCj4gPiBtd2lmaWV4X2dldF93YWtldXBfcmVh c29uKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBhY3Rpb24sDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMNCj4gPiBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMNCj4gPiBpbmRleCBj ZDMxNDk0Li5kYmM1OTQ0IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21h cnZlbGwvbXdpZmlleC9wY2llLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2 ZWxsL213aWZpZXgvcGNpZS5jDQo+ID4gQEAgLTI3NjksMTIgKzI3NjksMTcgQEAgc3RhdGljIHZv aWQgbXdpZmlleF9wY2llX2Z3X2R1bXAoc3RydWN0DQo+ID4gbXdpZmlleF9hZGFwdGVyICphZGFw dGVyKQ0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9kZXZpY2VfZHVtcF93b3Jr KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXINCj4gPiAqYWRhcHRlcikgIHsNCj4gPiAtCWludCBkcnZf aW5mb19zaXplOw0KPiA+IC0Jdm9pZCAqZHJ2X2luZm87DQo+ID4gKwlhZGFwdGVyLT5kZXZkdW1w X2RhdGEgPSB2emFsbG9jKE1XSUZJRVhfRldfRFVNUF9TSVpFKTsNCj4gPiArCWlmICghYWRhcHRl ci0+ZGV2ZHVtcF9kYXRhKSB7DQo+ID4gKwkJbXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsDQo+ ID4gKwkJCSAgICAidnphbGxvYyBkZXZkdW1wIGRhdGEgZmFpbHVyZSFcbiIpOw0KPiA+ICsJCXJl dHVybjsNCj4gPiArCX0NCj4gPg0KPiA+IC0JZHJ2X2luZm9fc2l6ZSA9IG13aWZpZXhfZHJ2X2lu Zm9fZHVtcChhZGFwdGVyLCAmZHJ2X2luZm8pOw0KPiA+ICsJbXdpZmlleF9kcnZfaW5mb19kdW1w KGFkYXB0ZXIpOw0KPiA+ICAJbXdpZmlleF9wY2llX2Z3X2R1bXAoYWRhcHRlcik7DQo+ID4gLQlt d2lmaWV4X3VwbG9hZF9kZXZpY2VfZHVtcChhZGFwdGVyLCBkcnZfaW5mbywgZHJ2X2luZm9fc2l6 ZSk7DQo+ID4gKwltd2lmaWV4X3ByZXBhcmVfZndfZHVtcF9pbmZvKGFkYXB0ZXIpOw0KPiA+ICsJ bXdpZmlleF91cGxvYWRfZGV2aWNlX2R1bXAoKHVuc2lnbmVkIGxvbmcpYWRhcHRlcik7DQo+IA0K PiBIb3cgZGlkIHlvdSBtYW5hZ2UgdG8gbWFrZSA0IHNlcGFyYXRlIGZ1bmN0aW9uIGNhbGxzIGlu dG8gNSBzZXBhcmF0ZSBmdW5jdGlvbg0KPiBjYWxscyBhbmQgMSBtZW1vcnkgYWxsb2NhdGlvbj8g SSdtIHByZXR0eSBzdXJlIHlvdSdyZSBnb2luZyB0aGUgd3JvbmcgZGlyZWN0aW9uDQo+IG9uIHRo aXMgcmVmYWN0b3JpbmcuDQo+IA0KDQpUaGUgdXNiIGZpcm13YXJlIGR1bXAgbWVjaGFuaXNtIGlz IGRpZmZlcmVudCBmcm9tIGN1cnJlbnQgcGNpZS9zZGlvIGltcGxlbWVudGF0aW9uLCB0aGUgY29u dGV4dCBpcyB1cGxvYWRlZCBpbiBtdWx0aXBsZSBGV19EVU1QX0lORk8oMHg3MykgZXZlbnQuDQpV cG9uIHJlY2VpdmluZyBlYWNoIGV2ZW50LCBuZWVkIHBhc3RlIHRoZSBjb250ZXh0IHRvIGVuZCBv ZiBwcmV2aW91cyBjb2xsZWN0ZWQgZXZlbnQgZHVtcHMuDQoNClRodXMgd2UgbmVlZCBhZGFwdGVy LT5kZXZkdW1wX2RhdGEvZGV2ZHVtcF9sZW4gdG8gcmVwcmVzZW50IHRoZSBjdXJyZW50IGxvY2F0 aW9uIG9mIGV4aXN0IGR1bXAgbWVtb3J5Lg0KDQpUaGVyZWZvcmUgd2UgY2FuIHVzZSBhIHVuaWZp ZWQgd2F5IGZvciBhbGwgaW50ZXJmYWNlcywgYW5kIHNpbXBsaWZ5IHRoZSBleGlzdCBQQ0lFL1NE SU8gZHVtcCBmdW5jdGlvbiwgd2UgZG8gbm90IG5lZWQgdG8gYWxsb2NhdGUgImRydl9pbmZvIiBu b3cuDQoNCkFsc28sIHRoZXJlIGlzIG5vIG1lbW9yeSByZWdpb24gdGFibGUgZm9yIFVTQiBpbnRl cmZhY2UsIHNvIHRyeSB0byBzcGxpdCBjdXJyZW50IG13aWZpZXhfdXBsb2FkX2RldmljZV9kdW1w IGZ1bmN0aW9uIHRvDQooMSkgbXdpZmlleF9wcmVwYXJlX2Z3X2R1bXA6ICAgICBjb3B5IHRoZSBk dW1wIG9mIGVhY2ggbWVtb3J5IHJlZ2lvbiB0byBhZGFwdGVyLT5kZXZkdW1wX2RhdGEsICAgdGhp cyBpcyB1c2VkIGluIFNESU8gYW5kIFBDSUUNCigyKSBtd2lmaWV4X3VwbG9hZF9kZXZpY2VfZHVt cAkJY2FsbCBkZXZjb3JlZHVtcCBBUEkgdG8gdXBsb2FkIHRvIHN5c2ZzCSwJCXRoaXMgaXMgdXNl ZCBpbiBTRElPL1BDSUUgYW5kIFVTQg0KDQpTb3JyeSBmb3IgdGhlIGxhdGVyIHJlc3BvbnNlLCBw bGVhc2UgbGV0IHVzIGtub3cgeW91ciBzdWdnZXN0aW9ucyBpZiB0aGVyZSBhcmUgYW55IGlzc3Vl cy4NCg0KPiBCcmlhbg0KPiANCj4gPiAgfQ0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkIG13aWZpZXhf cGNpZV9jYXJkX3Jlc2V0X3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlcg0KPiA+ICphZGFwdGVy KSBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8u Yw0KPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYw0KPiA+ IGluZGV4IGZkNTE4M2MuLjgwMTAxMDkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMNCj4gPiBAQCAtMjUwNSwxNSArMjUwNSwyMSBAQCBz dGF0aWMgdm9pZA0KPiA+IG13aWZpZXhfc2Rpb19nZW5lcmljX2Z3X2R1bXAoc3RydWN0IG13aWZp ZXhfYWRhcHRlciAqYWRhcHRlcikgIHN0YXRpYw0KPiA+IHZvaWQgbXdpZmlleF9zZGlvX2Rldmlj ZV9kdW1wX3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcikgIHsNCj4gPiAgCXN0 cnVjdCBzZGlvX21tY19jYXJkICpjYXJkID0gYWRhcHRlci0+Y2FyZDsNCj4gPiAtCWludCBkcnZf aW5mb19zaXplOw0KPiA+IC0Jdm9pZCAqZHJ2X2luZm87DQo+ID4NCj4gPiAtCWRydl9pbmZvX3Np emUgPSBtd2lmaWV4X2Rydl9pbmZvX2R1bXAoYWRhcHRlciwgJmRydl9pbmZvKTsNCj4gPiArCWFk YXB0ZXItPmRldmR1bXBfZGF0YSA9IHZ6YWxsb2MoTVdJRklFWF9GV19EVU1QX1NJWkUpOw0KPiA+ ICsJaWYgKCFhZGFwdGVyLT5kZXZkdW1wX2RhdGEpIHsNCj4gPiArCQltd2lmaWV4X2RiZyhhZGFw dGVyLCBFUlJPUiwNCj4gPiArCQkJICAgICJ2emFsbG9jIGRldmR1bXAgZGF0YSBmYWlsdXJlIVxu Iik7DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW13aWZpZXhfZHJ2X2lu Zm9fZHVtcChhZGFwdGVyKTsNCj4gPiAgCWlmIChjYXJkLT5md19kdW1wX2VuaCkNCj4gPiAgCQlt d2lmaWV4X3NkaW9fZ2VuZXJpY19md19kdW1wKGFkYXB0ZXIpOw0KPiA+ICAJZWxzZQ0KPiA+ICAJ CW13aWZpZXhfc2Rpb19md19kdW1wKGFkYXB0ZXIpOw0KPiA+IC0JbXdpZmlleF91cGxvYWRfZGV2 aWNlX2R1bXAoYWRhcHRlciwgZHJ2X2luZm8sIGRydl9pbmZvX3NpemUpOw0KPiA+ICsJbXdpZmll eF9wcmVwYXJlX2Z3X2R1bXBfaW5mbyhhZGFwdGVyKTsNCj4gPiArCW13aWZpZXhfdXBsb2FkX2Rl dmljZV9kdW1wKCh1bnNpZ25lZCBsb25nKWFkYXB0ZXIpOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3Rh dGljIHZvaWQgbXdpZmlleF9zZGlvX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiA+ IC0tDQo+ID4gMS45LjENCj4gPg0K