From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Madhani, Himanshu" Subject: Re: [PATCH v3 6/6] qla2xxx: Fix Target mode handling with Multiqueue changes. Date: Mon, 5 Dec 2016 21:06:54 +0000 Message-ID: References: <1480715097-13611-1-git-send-email-himanshu.madhani@cavium.com> <1480715097-13611-7-git-send-email-himanshu.madhani@cavium.com> <8040550f-93d5-11aa-4ba0-e0239fe21040@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-dm3nam03on0059.outbound.protection.outlook.com ([104.47.41.59]:4806 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752423AbcLEVG6 (ORCPT ); Mon, 5 Dec 2016 16:06:58 -0500 In-Reply-To: <8040550f-93d5-11aa-4ba0-e0239fe21040@suse.de> Content-Language: en-US Content-ID: <69664B9569658441AC2FDA03129351F1@namprd07.prod.outlook.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Hannes Reinecke , "martin.petersen@oracle.com" Cc: "linux-scsi@vger.kernel.org" DQpPbiAxMi80LzE2LCAxMTo0MiBQTSwgIkhhbm5lcyBSZWluZWNrZSIgPGhhcmVAc3VzZS5kZT4g d3JvdGU6DQoNCj5PbiAxMi8wMi8yMDE2IDEwOjQ0IFBNLCBIaW1hbnNodSBNYWRoYW5pIHdyb3Rl Og0KPj4gRnJvbTogUXVpbm4gVHJhbiA8cXVpbm4udHJhbkBjYXZpdW0uY29tPg0KPj4gDQo+PiAt IEZpeCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIGRwY190aHJlYWQgYWNjZXNzaW5nIE11bHRpcXVl dWUgcmVzb3VyY2VzDQo+PiAgIGFuZCBxbGEyeDAwX3JlbW92ZV9vbmUgdGhyZWFkIHRyeWluZyB0 byBmcmVlIHJlc291cmNlLg0KPj4gLSBGaXggb3V0IG9mIG9yZGVyIGZyZWUgZm9yIE11bHRpcXVl dWUgcmVzb3VyY2VzLiBBbHNvLCBNdWx0aXF1ZXVlDQo+PiAgIGludGVycnVwdHMgbmVlZHMgYSB3 b3JrcXVldWUuIEludGVycnVwdCBuZWVkZWQgdG8gc3RvcCBiZWZvcmUNCj4+ICAgdGhlIHdxIGNh biBiZSBkZXN0cm95ZWQuDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IFF1aW5uIFRyYW4gPHF1aW5u LnRyYW5AY2F2aXVtLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEhpbWFuc2h1IE1hZGhhbmkgPGhp bWFuc2h1Lm1hZGhhbmlAY2F2aXVtLmNvbT4NCj4+IC0tLQ0KPj4gIGRyaXZlcnMvc2NzaS9xbGEy eHh4L3FsYV9kZWYuaCB8ICAzICsrLQ0KPj4gIGRyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3Iu YyB8IDIwICsrKysrKystLS0tLS0tLS0tDQo+PiAgZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21x LmMgIHwgIDIgKy0NCj4+ICBkcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYyAgfCA1MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0NCj4+ICA0IGZpbGVzIGNoYW5n ZWQsIDQ5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgv cWxhX2RlZi5oDQo+PiBpbmRleCA2MDdkNTM5Li5lNjEzNTM1IDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oDQo+PiArKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4 eC9xbGFfZGVmLmgNCj4+IEBAIC0yNzM0LDcgKzI3MzQsOCBAQCBzdHJ1Y3QgaXNwX29wZXJhdGlv bnMgew0KPj4gIA0KPj4gICNkZWZpbmUgUUxBX01TSVhfREVGQVVMVAkJMHgwMA0KPj4gICNkZWZp bmUgUUxBX01TSVhfUlNQX1EJCQkweDAxDQo+PiAtI2RlZmluZSBRTEFfTVNJWF9RUEFJUl9NVUxU SVFfUlNQX1EJMHgwMg0KPj4gKyNkZWZpbmUgUUxBX0FUSU9fVkVDVE9SCQkweDAyDQo+PiArI2Rl ZmluZSBRTEFfTVNJWF9RUEFJUl9NVUxUSVFfUlNQX1EJMHgwMw0KPj4gIA0KPj4gICNkZWZpbmUg UUxBX01JRFhfREVGQVVMVAkwDQo+PiAgI2RlZmluZSBRTEFfTUlEWF9SU1BfUQkJMQ0KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYyBiL2RyaXZlcnMvc2NzaS9x bGEyeHh4L3FsYV9pc3IuYw0KPj4gaW5kZXggMTRmMjdhNy4uMDMzODRjZiAxMDA2NDQNCj4+IC0t LSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYw0KPj4gKysrIGIvZHJpdmVycy9zY3Np L3FsYTJ4eHgvcWxhX2lzci5jDQo+PiBAQCAtMjk3Niw2ICsyOTc2LDcgQEAgc3RydWN0IHFsYV9p bml0X21zaXhfZW50cnkgew0KPj4gIHN0YXRpYyBzdHJ1Y3QgcWxhX2luaXRfbXNpeF9lbnRyeSBt c2l4X2VudHJpZXNbXSA9IHsNCj4+ICAJeyAicWxhMnh4eCAoZGVmYXVsdCkiLCBxbGEyNHh4X21z aXhfZGVmYXVsdCB9LA0KPj4gIAl7ICJxbGEyeHh4IChyc3BfcSkiLCBxbGEyNHh4X21zaXhfcnNw X3EgfSwNCj4+ICsJeyAicWxhMnh4eCAoYXRpb19xKSIsIHFsYTgzeHhfbXNpeF9hdGlvX3EgfSwN Cj4+ICAJeyAicWxhMnh4eCAocXBhaXJfbXVsdGlxKSIsIHFsYTJ4eHhfbXNpeF9yc3BfcSB9LA0K Pj4gIH07DQo+PiAgDQo+PiBAQCAtMjk4NCwxNyArMjk4NSwxMCBAQCBzdHJ1Y3QgcWxhX2luaXRf bXNpeF9lbnRyeSB7DQo+PiAgCXsgInFsYTJ4eHggKHJzcF9xKSIsIHFsYTgyeHhfbXNpeF9yc3Bf cSB9LA0KPj4gIH07DQo+PiAgDQo+PiAtc3RhdGljIHN0cnVjdCBxbGFfaW5pdF9tc2l4X2VudHJ5 IHFsYTgzeHhfbXNpeF9lbnRyaWVzW10gPSB7DQo+PiAtCXsgInFsYTJ4eHggKGRlZmF1bHQpIiwg cWxhMjR4eF9tc2l4X2RlZmF1bHQgfSwNCj4+IC0JeyAicWxhMnh4eCAocnNwX3EpIiwgcWxhMjR4 eF9tc2l4X3JzcF9xIH0sDQo+PiAtCXsgInFsYTJ4eHggKGF0aW9fcSkiLCBxbGE4M3h4X21zaXhf YXRpb19xIH0sDQo+PiAtfTsNCj4+IC0NCj4+ICBzdGF0aWMgaW50DQo+PiAgcWxhMjR4eF9lbmFi bGVfbXNpeChzdHJ1Y3QgcWxhX2h3X2RhdGEgKmhhLCBzdHJ1Y3QgcnNwX3F1ZSAqcnNwKQ0KPj4g IHsNCj4+ICAjZGVmaW5lIE1JTl9NU0lYX0NPVU5UCTINCj4+IC0jZGVmaW5lIEFUSU9fVkVDVE9S CTINCj4+ICAJaW50IGksIHJldDsNCj4+ICAJc3RydWN0IHFsYV9tc2l4X2VudHJ5ICpxZW50cnk7 DQo+PiAgCXNjc2lfcWxhX2hvc3RfdCAqdmhhID0gcGNpX2dldF9kcnZkYXRhKGhhLT5wZGV2KTsN Cj4+IEBAIC0zMDUxLDcgKzMwNDUsNyBAQCBzdHJ1Y3QgcWxhX2luaXRfbXNpeF9lbnRyeSB7DQo+ PiAgCX0NCj4+ICANCj4+ICAJLyogRW5hYmxlIE1TSS1YIHZlY3RvcnMgZm9yIHRoZSBiYXNlIHF1 ZXVlICovDQo+PiAtCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsNCj4+ICsJZm9yIChpID0gMDsg aSA8IChRTEFfTVNJWF9SU1BfUSArIDEpOyBpKyspIHsNCj4+ICAJCXFlbnRyeSA9ICZoYS0+bXNp eF9lbnRyaWVzW2ldOw0KPj4gIAkJcWVudHJ5LT5oYW5kbGUgPSByc3A7DQo+PiAgCQlyc3AtPm1z aXggPSBxZW50cnk7DQo+PiBAQCAtMzA2OCw2ICszMDYyLDcgQEAgc3RydWN0IHFsYV9pbml0X21z aXhfZW50cnkgew0KPj4gIAkJaWYgKHJldCkNCj4+ICAJCQlnb3RvIG1zaXhfcmVnaXN0ZXJfZmFp bDsNCj4+ICAJCXFlbnRyeS0+aGF2ZV9pcnEgPSAxOw0KPj4gKwkJcWVudHJ5LT5pbl91c2UgPSAx Ow0KPj4gIA0KPj4gIAkJLyogUmVnaXN0ZXIgZm9yIENQVSBhZmZpbml0eSBub3RpZmljYXRpb24u ICovDQo+PiAgCQlpcnFfc2V0X2FmZmluaXR5X25vdGlmaWVyKHFlbnRyeS0+dmVjdG9yLCAmcWVu dHJ5LT5pcnFfbm90aWZ5KTsNCj4+IEBAIC0zMDg3LDE0ICszMDgyLDE1IEBAIHN0cnVjdCBxbGFf aW5pdF9tc2l4X2VudHJ5IHsNCj4+ICAJICogcXVldWUuDQo+PiAgCSAqLw0KPj4gIAlpZiAoUUxB X1RHVF9NT0RFX0VOQUJMRUQoKSAmJiBJU19BVElPX01TSVhfQ0FQQUJMRShoYSkpIHsNCj4+IC0J CXFlbnRyeSA9ICZoYS0+bXNpeF9lbnRyaWVzW0FUSU9fVkVDVE9SXTsNCj4+ICsJCXFlbnRyeSA9 ICZoYS0+bXNpeF9lbnRyaWVzW1FMQV9BVElPX1ZFQ1RPUl07DQo+PiAgCQlyc3AtPm1zaXggPSBx ZW50cnk7DQo+PiAgCQlxZW50cnktPmhhbmRsZSA9IHJzcDsNCj4+ICAJCXNjbnByaW50ZihxZW50 cnktPm5hbWUsIHNpemVvZihxZW50cnktPm5hbWUpLA0KPj4gLQkJICAgIHFsYTgzeHhfbXNpeF9l bnRyaWVzW0FUSU9fVkVDVE9SXS5uYW1lKTsNCj4+ICsJCSAgICBtc2l4X2VudHJpZXNbUUxBX0FU SU9fVkVDVE9SXS5uYW1lKTsNCj4+ICsJCXFlbnRyeS0+aW5fdXNlID0gMTsNCj4+ICAJCXJldCA9 IHJlcXVlc3RfaXJxKHFlbnRyeS0+dmVjdG9yLA0KPj4gLQkJCXFsYTgzeHhfbXNpeF9lbnRyaWVz W0FUSU9fVkVDVE9SXS5oYW5kbGVyLA0KPj4gLQkJCTAsIHFsYTgzeHhfbXNpeF9lbnRyaWVzW0FU SU9fVkVDVE9SXS5uYW1lLCByc3ApOw0KPj4gKwkJCW1zaXhfZW50cmllc1tRTEFfQVRJT19WRUNU T1JdLmhhbmRsZXIsDQo+PiArCQkJMCwgbXNpeF9lbnRyaWVzW1FMQV9BVElPX1ZFQ1RPUl0ubmFt ZSwgcnNwKTsNCj4+ICAJCXFlbnRyeS0+aGF2ZV9pcnEgPSAxOw0KPj4gIAl9DQo+PiAgDQo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21xLmMgYi9kcml2ZXJzL3Njc2kv cWxhMnh4eC9xbGFfbXEuYw0KPj4gaW5kZXggYTY0YjdiMC4uNTU0M2I0YyAxMDA2NDQNCj4+IC0t LSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9tcS5jDQo+PiArKysgYi9kcml2ZXJzL3Njc2kv cWxhMnh4eC9xbGFfbXEuYw0KPj4gQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1Y3QgcWxhX3FwYWly ICpxbGEyeHh4X2NyZWF0ZV9xcGFpcihzdHJ1Y3Qgc2NzaV9xbGFfaG9zdCAqdmhhLCBpbnQgcW9z LCBpbnQgdg0KPj4gIAkJcXBhaXItPnZwX2lkeCA9IHZwX2lkeDsNCj4+ICANCj4+ICAJCWZvciAo aSA9IDA7IGkgPCBoYS0+bXNpeF9jb3VudDsgaSsrKSB7DQo+PiAtCQkJbXNpeCA9ICZoYS0+bXNp eF9lbnRyaWVzW2kgKyAyXTsNCj4+ICsJCQltc2l4ID0gJmhhLT5tc2l4X2VudHJpZXNbaV07DQo+ PiAgCQkJaWYgKG1zaXgtPmluX3VzZSkNCj4+ICAJCQkJY29udGludWU7DQo+PiAgCQkJcXBhaXIt Pm1zaXggPSBtc2l4Ow0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9v cy5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMNCj4+IGluZGV4IDMzNzFiM2YuLjkx ZDhlN2EgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYw0KPj4g KysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMNCj4+IEBAIC00MzQsMjQgKzQzNCw0 MSBAQCBzdGF0aWMgdm9pZCBxbGEyeDAwX2ZyZWVfcXVldWVzKHN0cnVjdCBxbGFfaHdfZGF0YSAq aGEpDQo+PiAgCXN0cnVjdCByZXFfcXVlICpyZXE7DQo+PiAgCXN0cnVjdCByc3BfcXVlICpyc3A7 DQo+PiAgCWludCBjbnQ7DQo+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+PiAgDQo+PiArCXNw aW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOw0KPj4gIAlmb3IgKGNu dCA9IDA7IGNudCA8IGhhLT5tYXhfcmVxX3F1ZXVlczsgY250KyspIHsNCj4+ICAJCWlmICghdGVz dF9iaXQoY250LCBoYS0+cmVxX3FpZF9tYXApKQ0KPj4gIAkJCWNvbnRpbnVlOw0KPj4gIA0KPj4g IAkJcmVxID0gaGEtPnJlcV9xX21hcFtjbnRdOw0KPj4gKwkJY2xlYXJfYml0KGNudCwgaGEtPnJl cV9xaWRfbWFwKTsNCj4+ICsJCWhhLT5yZXFfcV9tYXBbY250XSA9IE5VTEw7DQo+PiArDQo+PiAr CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOw0KPj4g IAkJcWxhMngwMF9mcmVlX3JlcV9xdWUoaGEsIHJlcSk7DQo+PiArCQlzcGluX2xvY2tfaXJxc2F2 ZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsNCj4+ICAJfQ0KPj4gKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gIAlrZnJlZSho YS0+cmVxX3FfbWFwKTsNCj4+ICAJaGEtPnJlcV9xX21hcCA9IE5VTEw7DQo+PiAgDQo+PiArDQo+ PiArCXNwaW5fbG9ja19pcnFzYXZlKCZoYS0+aGFyZHdhcmVfbG9jaywgZmxhZ3MpOw0KPj4gIAlm b3IgKGNudCA9IDA7IGNudCA8IGhhLT5tYXhfcnNwX3F1ZXVlczsgY250KyspIHsNCj4+ICAJCWlm ICghdGVzdF9iaXQoY250LCBoYS0+cnNwX3FpZF9tYXApKQ0KPj4gIAkJCWNvbnRpbnVlOw0KPj4g IA0KPj4gIAkJcnNwID0gaGEtPnJzcF9xX21hcFtjbnRdOw0KPj4gKwkJY2xlYXJfYml0KGNudCwg aGEtPnJlcV9xaWRfbWFwKTsNCj4+ICsJCWhhLT5yc3BfcV9tYXBbY250XSA9ICBOVUxMOw0KPj4g KwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsNCj4+ ICAJCXFsYTJ4MDBfZnJlZV9yc3BfcXVlKGhhLCByc3ApOw0KPj4gKwkJc3Bpbl9sb2NrX2lycXNh dmUoJmhhLT5oYXJkd2FyZV9sb2NrLCBmbGFncyk7DQo+PiAgCX0NCj4+ICsJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmaGEtPmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICAJa2ZyZWUo aGEtPnJzcF9xX21hcCk7DQo+PiAgCWhhLT5yc3BfcV9tYXAgPSBOVUxMOw0KPj4gIH0NCj4+IEBA IC0xNzI5LDE3ICsxNzQ2LDIyIEBAIHVpbnQzMl90IHFsYTJ4MDBfaXNwX3JlZ19zdGF0KHN0cnVj dCBxbGFfaHdfZGF0YSAqaGEpDQo+PiAgCQlwY2lfcmVhZF9jb25maWdfd29yZChoYS0+cGRldiwN Cj4+ICAJCSAgICBRTEFfODNYWF9QQ0lfTVNJWF9DT05UUk9MLCAmbXNpeCk7DQo+PiAgCQloYS0+ bXNpeF9jb3VudCA9IG1zaXggKyAxOw0KPj4gLQkJLyogTWF4IHF1ZXVlcyBhcmUgYm91bmRlZCBi eSBhdmFpbGFibGUgbXNpeCB2ZWN0b3JzICovDQo+PiAtCQkvKiBxdWV1ZSAwIHVzZXMgdHdvIG1z aXggdmVjdG9ycyAqLw0KPj4gKwkJLyoNCj4+ICsJCSAqIEJ5IGRlZmF1bHQsIGRyaXZlciB1c2Vz IGF0IGxlYXN0IHR3byBtc2l4IHZlY3RvcnMNCj4+ICsJCSAqIChkZWZhdWx0ICYgcnNwcSkNCj4+ ICsJCSAqLw0KPj4gIAkJaWYgKHFsMnhtcXN1cHBvcnQpIHsNCj4+ICAJCQkvKiBNQiBpbnRlcnJ1 cHQgdXNlcyAxIHZlY3RvciAqLw0KPj4gIAkJCWhhLT5tYXhfcmVxX3F1ZXVlcyA9IGhhLT5tc2l4 X2NvdW50IC0gMTsNCj4+ICAJCQloYS0+bWF4X3JzcF9xdWV1ZXMgPSBoYS0+bWF4X3JlcV9xdWV1 ZXM7DQo+PiArDQo+PiArCQkJLyogQVRJT1EgbmVlZHMgMSB2ZWN0b3IuIFRoYXQncyAxIGxlc3Mg UVBhaXIgKi8NCj4+ICsJCQlpZiAoUUxBX1RHVF9NT0RFX0VOQUJMRUQoKSkNCj4+ICsJCQkJaGEt Pm1heF9yZXFfcXVldWVzLS07DQo+PiArDQo+PiAgCQkJLyogUXVldWUgcGFpcnMgaXMgdGhlIG1h eCB2YWx1ZSBtaW51cw0KPj4gIAkJCSAqIHRoZSBiYXNlIHF1ZXVlIHBhaXIgKi8NCj4+ICAJCQlo YS0+bWF4X3FwYWlycyA9IGhhLT5tYXhfcmVxX3F1ZXVlcyAtIDE7DQo+PiAtCQkJcWxfZGJnX3Bj aShxbF9kYmdfbXVsdGlxLCBoYS0+cGRldiwgMHhjMDEwLA0KPj4gLQkJCSAgICAiTWF4IG5vIG9m IHF1ZXVlcyBwYWlyczogJWQuXG4iLCBoYS0+bWF4X3FwYWlycyk7DQo+PiAgCQkJcWxfZGJnX3Bj aShxbF9kYmdfaW5pdCwgaGEtPnBkZXYsIDB4MDE5MCwNCj4+ICAJCQkgICAgIk1heCBubyBvZiBx dWV1ZXMgcGFpcnM6ICVkLlxuIiwgaGEtPm1heF9xcGFpcnMpOw0KPj4gIAkJfQ0KPkp1c3Qgb25l IHZlY3RvciBmb3IgQVRJTz8gU28gc2FkLi4uDQo+Q2FuJ3Qgd2UgaGF2ZSBmdWxsIG11bHRpcXVl dWUgc3VwcG9ydCBmb3IgdGFyZ2V0IG1vZGUsIHRvbz8NCg0KV2Ugd2lsbCBiZSB3b3JraW5nIG9u IHRoZSB0YXJnZXQgbXVsdGkgcXVldWUgY2hhbmdlcyBzaG9ydGx5LiBPbmNlIHBhdGNoZXMgYXJl IHJlYWR5IHdl4oCZbGwgcG9zdCBpdCBmb3IgcmV2aWV3LiANCg0KPg0KPj4gQEAgLTE3NTEsNiAr MTc3Myw4IEBAIHVpbnQzMl90IHFsYTJ4MDBfaXNwX3JlZ19zdGF0KHN0cnVjdCBxbGFfaHdfZGF0 YSAqaGEpDQo+PiAgDQo+PiAgbXFpb2Jhc2VfZXhpdDoNCj4+ICAJaGEtPm1zaXhfY291bnQgPSBo YS0+bWF4X3JzcF9xdWV1ZXMgKyAxOw0KPj4gKwlpZiAoUUxBX1RHVF9NT0RFX0VOQUJMRUQoKSkN Cj4+ICsJCWhhLT5tc2l4X2NvdW50Kys7DQo+PiAgDQo+PiAgCXFsdF84M3h4X2lvc3BhY2VfY29u ZmlnKGhhKTsNCj4+ICANCj4+IEBAIC0zMTIyLDEzICszMTQ2LDYgQEAgc3RhdGljIHZvaWQgcWxh MngwMF9kZXN0cm95X21ieF93cShzdHJ1Y3QgcWxhX2h3X2RhdGEgKmhhKQ0KPj4gIHN0YXRpYyB2 b2lkDQo+PiAgcWxhMngwMF9kZXN0cm95X2RlZmVycmVkX3dvcmsoc3RydWN0IHFsYV9od19kYXRh ICpoYSkNCj4+ICB7DQo+PiAtCS8qIEZsdXNoIHRoZSB3b3JrIHF1ZXVlIGFuZCByZW1vdmUgaXQg Ki8NCj4+IC0JaWYgKGhhLT53cSkgew0KPj4gLQkJZmx1c2hfd29ya3F1ZXVlKGhhLT53cSk7DQo+ PiAtCQlkZXN0cm95X3dvcmtxdWV1ZShoYS0+d3EpOw0KPj4gLQkJaGEtPndxID0gTlVMTDsNCj4+ IC0JfQ0KPj4gLQ0KPj4gIAkvKiBDYW5jZWwgYWxsIHdvcmsgYW5kIGRlc3Ryb3kgRFBDIHdvcmtx dWV1ZXMgKi8NCj4+ICAJaWYgKGhhLT5kcGNfbHBfd3EpIHsNCj4+ICAJCWNhbmNlbF93b3JrX3N5 bmMoJmhhLT5pZGNfYWVuKTsNCj4+IEBAIC0zMzI2LDkgKzMzNDMsMTcgQEAgc3RhdGljIHZvaWQg cWxhMngwMF9kZXN0cm95X21ieF93cShzdHJ1Y3QgcWxhX2h3X2RhdGEgKmhhKQ0KPj4gIAkJaGEt PmlzcF9vcHMtPmRpc2FibGVfaW50cnMoaGEpOw0KPj4gIAl9DQo+PiAgDQo+PiArCXFsYTJ4MDBf ZnJlZV9mY3BvcnRzKHZoYSk7DQo+PiArDQo+PiAgCXFsYTJ4MDBfZnJlZV9pcnFzKHZoYSk7DQo+ PiAgDQo+PiAtCXFsYTJ4MDBfZnJlZV9mY3BvcnRzKHZoYSk7DQo+PiArCS8qIEZsdXNoIHRoZSB3 b3JrIHF1ZXVlIGFuZCByZW1vdmUgaXQgKi8NCj4+ICsJaWYgKGhhLT53cSkgew0KPj4gKwkJZmx1 c2hfd29ya3F1ZXVlKGhhLT53cSk7DQo+PiArCQlkZXN0cm95X3dvcmtxdWV1ZShoYS0+d3EpOw0K Pj4gKwkJaGEtPndxID0gTlVMTDsNCj4+ICsJfQ0KPj4gKw0KPj4gIA0KPj4gIAlxbGEyeDAwX21l bV9mcmVlKGhhKTsNCj4+ICANCj4+IEBAIC01MDQ4LDggKzUwNzMsOCBAQCB2b2lkIHFsYTJ4MDBf cmVsb2dpbihzdHJ1Y3Qgc2NzaV9xbGFfaG9zdCAqdmhhKQ0KPj4gIA0KPj4gIAliYXNlX3ZoYS0+ ZmxhZ3MuaW5pdF9kb25lID0gMDsNCj4+ICAJcWxhMjV4eF9kZWxldGVfcXVldWVzKGJhc2Vfdmhh KTsNCj4+IC0JcWxhMngwMF9mcmVlX2lycXMoYmFzZV92aGEpOw0KPj4gIAlxbGEyeDAwX2ZyZWVf ZmNwb3J0cyhiYXNlX3ZoYSk7DQo+PiArCXFsYTJ4MDBfZnJlZV9pcnFzKGJhc2VfdmhhKTsNCj4+ ICAJcWxhMngwMF9tZW1fZnJlZShoYSk7DQo+PiAgCXFsYTgyeHhfbWRfZnJlZShiYXNlX3ZoYSk7 DQo+PiAgCXFsYTJ4MDBfZnJlZV9xdWV1ZXMoaGEpOw0KPj4gDQo+QWxzbyBoZXJlOyBwbGVhc2Ug Y2hlY2sgaWYgdGhlIGlycSBhZmZpbml0eSBsYXlvdXQgaXMgY29ycmVjdGx5DQo+KEkgc3VzcGVj dCBub3QpLg0KPllvdSBwcm9iYWJseSBuZWVkIHRvIHB1c2ggYW5vdGhlciBwYXRjaCBhZnRlciB0 aGUgaXJxLWFmZmluaXR5IGNoYW5nZXMNCj5mcm9tIENocmlzdG9waCBpbiB0aGUgdGlwIHRyZWUg YXJlIG1lcmdlZC4NCj4NCj5CdXQgdW50aWwgdGhlbjoNCj4NCj5SZXZpZXdlZC1ieTogSGFubmVz IFJlaW5lY2tlIDxoYXJlQHN1c2UuY29tPg0KDQpUaGFua3MgZm9yIHRoZSByZXZpZXcuIA0KWWVz LCBXZeKAmWxsIHN1Ym1pdCBjaGFuZ2VzIG9uY2UgQ2hyaXN0b3Bo4oCZcyBwYXRjaCBzZXJpZXMg aXMgbWVyZ2VkLiANCg0KPg0KPkNoZWVycywNCj4NCj5IYW5uZXMNCj4tLSANCj5Eci4gSGFubmVz IFJlaW5lY2tlCQkgICBUZWFtbGVhZCBTdG9yYWdlICYgTmV0d29ya2luZw0KPmhhcmVAc3VzZS5k ZQkJCSAgICAgICAgICAgICAgICs0OSA5MTEgNzQwNTMgNjg4DQo+U1VTRSBMSU5VWCBHbWJILCBN YXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcNCj5HRjogRi4gSW1lbmTDtnJmZmVyLCBKLiBT bWl0aGFyZCwgSi4gR3VpbGQsIEQuIFVwbWFueXUsIEcuIE5vcnRvbg0KPkhSQiAyMTI4NCAoQUcg TsO8cm5iZXJnKQ0K