From mboxrd@z Thu Jan 1 00:00:00 1970 From: brace Subject: RE: [PATCH v3 37/42] hpsa: use block layer tag for command allocation Date: Fri, 27 Mar 2015 18:49:12 +0000 Message-ID: <07F70BBF6832E34FA1C923241E8833AB4868A743@BBYEXM01.pmc-sierra.internal> References: <20150317200139.19856.87982.stgit@brunhilda> <20150317200651.19856.77450.stgit@brunhilda> <55104616.2070303@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bby1mta03.pmc-sierra.com ([216.241.235.118]:56973 "EHLO bby1mta03.pmc-sierra.bc.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752264AbbC0StU (ORCPT ); Fri, 27 Mar 2015 14:49:20 -0400 In-Reply-To: <55104616.2070303@redhat.com> Content-Language: en-US Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Tomas Henzl , Scott Teel , Kevin Barnett , "james.bottomley@parallels.com" , "hch@infradead.org" , Justin Lindley , brace Cc: "linux-scsi@vger.kernel.org" SSdsbCBzZW5kIHVwIGFub3RoZXIgcGF0Y2ggdG8gZml4IHRoaXMgaXNzdWUuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVG9tYXMgSGVuemwgW21haWx0bzp0aGVuemxA cmVkaGF0LmNvbV0NCj4gU2VudDogTW9uZGF5LCBNYXJjaCAyMywgMjAxNSAxMTo1OCBBTQ0KPiBU bzogRG9uIEJyYWNlOyBTY290dCBUZWVsOyBLZXZpbiBCYXJuZXR0OyBqYW1lcy5ib3R0b21sZXlA cGFyYWxsZWxzLmNvbTsNCj4gaGNoQGluZnJhZGVhZC5vcmc7IEp1c3RpbiBMaW5kbGV5OyBicmFj ZQ0KPiBDYzogbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRD SCB2MyAzNy80Ml0gaHBzYTogdXNlIGJsb2NrIGxheWVyIHRhZyBmb3IgY29tbWFuZCBhbGxvY2F0 aW9uDQo+IA0KPiBPbiAwMy8xNy8yMDE1IDA5OjA2IFBNLCBEb24gQnJhY2Ugd3JvdGU6DQo+ID4g RnJvbTogV2ViYiBTY2FsZXMgPHdlYmJuaEBocC5jb20+DQo+ID4NCj4gPiBSZXdvcmsgc2xhdmUg YWxsb2NhdGlvbjoNCj4gPiAgIC0gc2VwYXJhdGUgdGhlIHRhZ2dpbmcgc3VwcG9ydCBzZXR1cCBm cm9tIHRoZSBob3N0ZGF0YSBzZXR1cA0KPiA+ICAgLSBtYWtlIHRoZSBob3N0ZGF0YSBzZXR1cCBh Y3QgY29uc2lzdGVudGx5IHdoZW4gdGhlIGxvb2t1cCBmYWlscw0KPiA+ICAgLSBtYWtlIHRoZSBo b3N0ZGF0YSBzZXR1cCBhY3QgY29uc2lzdGVudGx5IHdoZW4gdGhlIGRldmljZSBpcyBub3QgYWRk ZWQNCj4gPiAgIC0gc2V0IHVwIHRoZSBxdWV1ZSBkZXB0aCBjb25zaXN0ZW50bHkgYWNyb3NzIHRo ZXNlIHNjZW5hcmlvcw0KPiA+ICAgLSBpZiB0aGUgYmxvY2sgbGF5ZXIgbXEgc3VwcG9ydCBpcyBu b3QgYXZhaWxhYmxlLCBleHBsaWNpdGx5IGVuYWJsZSBhbmQNCj4gPiAgICAgYWN0aXZhdGUgdGhl IFNDU0kgbGF5ZXIgdGNxIHN1cHBvcnQgKGFuZCBkbyB0aGlzIGF0IGFsbG9jYXRpb24tdGltZSBz bw0KPiA+ICAgICB0aGF0IHRoZSB0YWdzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBJTlFVSVJZIGNv bW1hbmRzKQ0KPiA+DQo+ID4gVHdlYWsgc2xhdmUgY29uZmlndXJhdGlvbiBzbyB0aGF0IGRldmlj ZXMgd2hpY2ggYXJlIG1hc2tlZCBhcmUgYWxzbw0KPiA+IG5vdCBhdHRhY2hlZC4NCj4gPg0KPiA+ IFJldmlld2VkLWJ5OiBTY290dCBUZWVsIDxzY290dC50ZWVsQHBtY3MuY29tPg0KPiA+IFJldmll d2VkLWJ5OiBLZXZpbiBCYXJuZXR0IDxrZXZpbi5iYXJuZXR0QHBtY3MuY29tPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IFdlYmIgU2NhbGVzIDx3ZWJibmhAaHAuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IERvbiBCcmFjZSA8ZG9uLmJyYWNlQHBtY3MuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL3Nj c2kvaHBzYS5jIHwgIDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tDQo+IC0tLS0tLS0tDQo+ID4gIGRyaXZlcnMvc2NzaS9ocHNhLmggfCAgICAxDQo+ID4gIDIg ZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ocHNhLmMgYi9kcml2ZXJzL3Njc2kvaHBzYS5j DQo+ID4gaW5kZXggMzRjMTc4Yy4uNGUzNGE2MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3Nj c2kvaHBzYS5jDQo+ID4gKysrIGIvZHJpdmVycy9zY3NpL2hwc2EuYw0KPiA+IEBAIC00NCw2ICs0 NCw3IEBADQo+ID4gICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPg0KPiA+ICAjaW5jbHVkZSA8 c2NzaS9zY3NpX3RjcS5oPg0KPiA+ICAjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+DQo+ID4gKyNp bmNsdWRlIDxzY3NpL3Njc2lfZGJnLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9jY2lzc19pb2N0 bC5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51 eC9iaXRtYXAuaD4NCj4gPiBAQCAtMjEyLDYgKzIxMyw5IEBAIHN0YXRpYyBpbnQgaHBzYV9jb21w YXRfaW9jdGwoc3RydWN0IHNjc2lfZGV2aWNlICpkZXYsDQo+IGludCBjbWQsDQo+ID4NCj4gPiAg c3RhdGljIHZvaWQgY21kX2ZyZWUoc3RydWN0IGN0bHJfaW5mbyAqaCwgc3RydWN0IENvbW1hbmRM aXN0ICpjKTsNCj4gPiAgc3RhdGljIHN0cnVjdCBDb21tYW5kTGlzdCAqY21kX2FsbG9jKHN0cnVj dCBjdGxyX2luZm8gKmgpOw0KPiA+ICtzdGF0aWMgdm9pZCBjbWRfdGFnZ2VkX2ZyZWUoc3RydWN0 IGN0bHJfaW5mbyAqaCwgc3RydWN0IENvbW1hbmRMaXN0ICpjKTsNCj4gPiArc3RhdGljIHN0cnVj dCBDb21tYW5kTGlzdCAqY21kX3RhZ2dlZF9hbGxvYyhzdHJ1Y3QgY3Rscl9pbmZvICpoLA0KPiA+ ICsJCQkJCSAgICBzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kKTsNCj4gPiAgc3RhdGljIGludCBmaWxs X2NtZChzdHJ1Y3QgQ29tbWFuZExpc3QgKmMsIHU4IGNtZCwgc3RydWN0IGN0bHJfaW5mbyAqaCwN Cj4gPiAgCXZvaWQgKmJ1ZmYsIHNpemVfdCBzaXplLCB1MTYgcGFnZV9jb2RlLCB1bnNpZ25lZCBj aGFyICpzY3NpM2FkZHIsDQo+ID4gIAlpbnQgY21kX3R5cGUpOw0KPiA+IEBAIC0yMDQ3LDExICsy MDUxLDE3IEBAIHN0YXRpYyB2b2lkIGhwc2FfY21kX3Jlc29sdmVfZXZlbnRzKHN0cnVjdA0KPiBj dGxyX2luZm8gKmgsDQo+ID4gIAl9DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgdm9pZCBocHNh X2NtZF9yZXNvbHZlX2FuZF9mcmVlKHN0cnVjdCBjdGxyX2luZm8gKmgsDQo+ID4gKwkJCQkgICAg ICBzdHJ1Y3QgQ29tbWFuZExpc3QgKmMpDQo+ID4gK3sNCj4gPiArCWhwc2FfY21kX3Jlc29sdmVf ZXZlbnRzKGgsIGMpOw0KPiA+ICsJY21kX3RhZ2dlZF9mcmVlKGgsIGMpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICBzdGF0aWMgdm9pZCBocHNhX2NtZF9mcmVlX2FuZF9kb25lKHN0cnVjdCBjdGxyX2lu Zm8gKmgsDQo+ID4gIAkJc3RydWN0IENvbW1hbmRMaXN0ICpjLCBzdHJ1Y3Qgc2NzaV9jbW5kICpj bWQpDQo+ID4gIHsNCj4gPiAtCWhwc2FfY21kX3Jlc29sdmVfZXZlbnRzKGgsIGMpOw0KPiA+IC0J Y21kX2ZyZWUoaCwgYyk7DQo+ID4gKwlocHNhX2NtZF9yZXNvbHZlX2FuZF9mcmVlKGgsIGMpOw0K PiA+ICAJY21kLT5zY3NpX2RvbmUoY21kKTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTIwNzIsOCAr MjA4Miw3IEBAIHN0YXRpYyB2b2lkIGhwc2FfY21kX2Fib3J0X2FuZF9mcmVlKHN0cnVjdA0KPiBj dGxyX2luZm8gKmgsIHN0cnVjdCBDb21tYW5kTGlzdCAqYywNCj4gPiAgCWhwc2Ffc2V0X3Njc2lf Y21kX2Fib3J0ZWQoY21kKTsNCj4gPiAgCWRldl93YXJuKCZoLT5wZGV2LT5kZXYsICJDREIgJTE2 cGhOIHdhcyBhYm9ydGVkIHdpdGggc3RhdHVzDQo+IDB4JXhcbiIsDQo+ID4gIAkJCSBjLT5SZXF1 ZXN0LkNEQiwgYy0+ZXJyX2luZm8tPlNjc2lTdGF0dXMpOw0KPiA+IC0JaHBzYV9jbWRfcmVzb2x2 ZV9ldmVudHMoaCwgYyk7DQo+ID4gLQljbWRfZnJlZShoLCBjKTsJCS8qIEZJWC1NRTogIGNoYW5n ZSB0byBjbWRfdGFnZ2VkX2ZyZWUoaCwgYykgKi8NCj4gPiArCWhwc2FfY21kX3Jlc29sdmVfYW5k X2ZyZWUoaCwgYyk7DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBwcm9jZXNzX2lvYWNj ZWwyX2NvbXBsZXRpb24oc3RydWN0IGN0bHJfaW5mbyAqaCwNCj4gPiBAQCAtNDUzNSw3ICs0NTQ0 LDcgQEAgc3RhdGljIGludCBocHNhX2Npc3Nfc3VibWl0KHN0cnVjdCBjdGxyX2luZm8gKmgsDQo+ ID4gIAl9DQo+ID4NCj4gPiAgCWlmIChocHNhX3NjYXR0ZXJfZ2F0aGVyKGgsIGMsIGNtZCkgPCAw KSB7IC8qIEZpbGwgU0cgbGlzdCAqLw0KPiA+IC0JCWNtZF9mcmVlKGgsIGMpOw0KPiA+ICsJCWhw c2FfY21kX3Jlc29sdmVfYW5kX2ZyZWUoaCwgYyk7DQo+ID4gIAkJcmV0dXJuIFNDU0lfTUxRVUVV RV9IT1NUX0JVU1k7DQo+ID4gIAl9DQo+ID4gIAllbnF1ZXVlX2NtZF9hbmRfc3RhcnRfaW8oaCwg Yyk7DQo+ID4gQEAgLTQ1ODEsNiArNDU5MCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBocHNhX2Nt ZF9wYXJ0aWFsX2luaXQoc3RydWN0DQo+IGN0bHJfaW5mbyAqaCwgaW50IGluZGV4LA0KPiA+ICB7 DQo+ID4gIAlkbWFfYWRkcl90IGNtZF9kbWFfaGFuZGxlID0gaC0+Y21kX3Bvb2xfZGhhbmRsZSAr IGluZGV4ICoNCj4gc2l6ZW9mKCpjKTsNCj4gPg0KPiA+ICsJQlVHX09OKGMtPmNtZGluZGV4ICE9 IGluZGV4KTsNCj4gPiArDQo+ID4gIAltZW1zZXQoYy0+UmVxdWVzdC5DREIsIDAsIHNpemVvZihj LT5SZXF1ZXN0LkNEQikpOw0KPiA+ICAJbWVtc2V0KGMtPmVycl9pbmZvLCAwLCBzaXplb2YoKmMt PmVycl9pbmZvKSk7DQo+ID4gIAljLT5idXNhZGRyID0gKHUzMikgY21kX2RtYV9oYW5kbGU7DQo+ ID4gQEAgLTQ2NzUsMjcgKzQ2ODYsMjQgQEAgc3RhdGljIGludCBocHNhX3Njc2lfcXVldWVfY29t bWFuZChzdHJ1Y3QNCj4gU2NzaV9Ib3N0ICpzaCwgc3RydWN0IHNjc2lfY21uZCAqY21kKQ0KPiA+ DQo+ID4gIAkvKiBHZXQgdGhlIHB0ciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUgb3V0IG9mIGNt ZC0+aG9zdC4gKi8NCj4gPiAgCWggPSBzZGV2X3RvX2hiYShjbWQtPmRldmljZSk7DQo+ID4gKw0K PiA+ICsJQlVHX09OKGNtZC0+cmVxdWVzdC0+dGFnIDwgMCk7DQo+ID4gKw0KPiA+ICAJZGV2ID0g Y21kLT5kZXZpY2UtPmhvc3RkYXRhOw0KPiA+ICAJaWYgKCFkZXYpIHsNCj4gPiAgCQljbWQtPnJl c3VsdCA9IERJRF9OT19DT05ORUNUIDw8IDE2Ow0KPiA+ICAJCWNtZC0+c2NzaV9kb25lKGNtZCk7 DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4gLQltZW1jcHkoc2NzaTNhZGRyLCBkZXYt PnNjc2kzYWRkciwgc2l6ZW9mKHNjc2kzYWRkcikpOw0KPiA+DQo+ID4gLQlpZiAodW5saWtlbHko bG9ja3VwX2RldGVjdGVkKGgpKSkgew0KPiA+IC0JCWNtZC0+cmVzdWx0ID0gRElEX05PX0NPTk5F Q1QgPDwgMTY7DQo+ID4gLQkJY21kLT5zY3NpX2RvbmUoY21kKTsNCj4gPiAtCQlyZXR1cm4gMDsN Cj4gPiAtCX0NCj4gPiAtCWMgPSBjbWRfYWxsb2MoaCk7DQo+ID4gKwltZW1jcHkoc2NzaTNhZGRy LCBkZXYtPnNjc2kzYWRkciwgc2l6ZW9mKHNjc2kzYWRkcikpOw0KPiA+DQo+ID4gIAlpZiAodW5s aWtlbHkobG9ja3VwX2RldGVjdGVkKGgpKSkgew0KPiA+ICAJCWNtZC0+cmVzdWx0ID0gRElEX05P X0NPTk5FQ1QgPDwgMTY7DQo+ID4gLQkJY21kX2ZyZWUoaCwgYyk7DQo+ID4gIAkJY21kLT5zY3Np X2RvbmUoY21kKTsNCj4gPiAgCQlyZXR1cm4gMDsNCj4gPiAgCX0NCj4gPiArCWMgPSBjbWRfdGFn Z2VkX2FsbG9jKGgsIGNtZCk7DQo+ID4NCj4gPiAgCS8qDQo+ID4gIAkgKiBDYWxsIGFsdGVybmF0 ZSBzdWJtaXQgcm91dGluZSBmb3IgSS9PIGFjY2VsZXJhdGVkIGNvbW1hbmRzLg0KPiA+IEBAIC00 NzA4LDcgKzQ3MTYsNyBAQCBzdGF0aWMgaW50IGhwc2Ffc2NzaV9xdWV1ZV9jb21tYW5kKHN0cnVj dA0KPiBTY3NpX0hvc3QgKnNoLCBzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQpDQo+ID4gIAkJaWYgKHJj ID09IDApDQo+ID4gIAkJCXJldHVybiAwOw0KPiA+ICAJCWlmIChyYyA9PSBTQ1NJX01MUVVFVUVf SE9TVF9CVVNZKSB7DQo+ID4gLQkJCWNtZF9mcmVlKGgsIGMpOw0KPiA+ICsJCQlocHNhX2NtZF9y ZXNvbHZlX2FuZF9mcmVlKGgsIGMpOw0KPiA+ICAJCQlyZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1Rf QlVTWTsNCj4gPiAgCQl9DQo+ID4gIAl9DQo+ID4gQEAgLTQ4MjIsMTUgKzQ4MzAsMjMgQEAgc3Rh dGljIGludCBocHNhX3JlZ2lzdGVyX3Njc2koc3RydWN0IGN0bHJfaW5mbyAqaCkNCj4gPiAgCXNo LT5ob3N0ZGF0YVswXSA9ICh1bnNpZ25lZCBsb25nKSBoOw0KPiA+ICAJc2gtPmlycSA9IGgtPmlu dHJbaC0+aW50cl9tb2RlXTsNCj4gPiAgCXNoLT51bmlxdWVfaWQgPSBzaC0+aXJxOw0KPiA+ICsJ ZXJyb3IgPSBzY3NpX2luaXRfc2hhcmVkX3RhZ19tYXAoc2gsIHNoLT5jYW5fcXVldWUpOw0KPiA+ ICsJaWYgKGVycm9yKSB7DQo+ID4gKwkJZGV2X2VycigmaC0+cGRldi0+ZGV2LA0KPiA+ICsJCQki JXM6IHNjc2lfaW5pdF9zaGFyZWRfdGFnX21hcCBmYWlsZWQgZm9yIGNvbnRyb2xsZXINCj4gJWRc biIsDQo+ID4gKwkJCV9fZnVuY19fLCBoLT5jdGxyKTsNCj4gPiArCQlnb3RvIGZhaWxfaG9zdF9w dXQ7DQo+ID4gKwl9DQo+ID4gIAllcnJvciA9IHNjc2lfYWRkX2hvc3Qoc2gsICZoLT5wZGV2LT5k ZXYpOw0KPiA+IC0JaWYgKGVycm9yKQ0KPiA+ICsJaWYgKGVycm9yKSB7DQo+ID4gKwkJZGV2X2Vy cigmaC0+cGRldi0+ZGV2LCAiJXM6IHNjc2lfYWRkX2hvc3QgZmFpbGVkIGZvciBjb250cm9sbGVy DQo+ICVkXG4iLA0KPiA+ICsJCQlfX2Z1bmNfXywgaC0+Y3Rscik7DQo+ID4gIAkJZ290byBmYWls X2hvc3RfcHV0Ow0KPiA+ICsJfQ0KPiA+ICAJc2NzaV9zY2FuX2hvc3Qoc2gpOw0KPiA+ICAJcmV0 dXJuIDA7DQo+ID4NCj4gPiAgIGZhaWxfaG9zdF9wdXQ6DQo+ID4gLQlkZXZfZXJyKCZoLT5wZGV2 LT5kZXYsICIlczogc2NzaV9hZGRfaG9zdCINCj4gPiAtCQkiIGZhaWxlZCBmb3IgY29udHJvbGxl ciAlZFxuIiwgX19mdW5jX18sIGgtPmN0bHIpOw0KPiA+ICAJc2NzaV9ob3N0X3B1dChzaCk7DQo+ ID4gIAlyZXR1cm4gZXJyb3I7DQo+ID4gICBmYWlsOg0KPiA+IEBAIC00ODQwLDYgKzQ4NTYsMjMg QEAgc3RhdGljIGludCBocHNhX3JlZ2lzdGVyX3Njc2koc3RydWN0IGN0bHJfaW5mbyAqaCkNCj4g PiAgfQ0KPiA+DQo+ID4gIC8qDQo+ID4gKyAqIFRoZSBibG9jayBsYXllciBoYXMgYWxyZWFkeSBn b25lIHRvIHRoZSB0cm91YmxlIG9mIHBpY2tpbmcgb3V0IGEgdW5pcXVlLA0KPiA+ICsgKiBzbWFs bC1pbnRlZ2VyIHRhZyBmb3IgdGhpcyByZXF1ZXN0LiAgV2UgdXNlIGFuIG9mZnNldCBmcm9tIHRo YXQgdmFsdWUgYXMNCj4gPiArICogYW4gaW5kZXggdG8gc2VsZWN0IG91ciBjb21tYW5kIGJsb2Nr LiAgKFRoZSBvZmZzZXQgYWxsb3dzIHVzIHRvIHJlc2VydmUgdGhlDQo+ID4gKyAqIGxvdy1udW1i ZXJlZCBlbnRyaWVzIGZvciBvdXIgb3duIHVzZXMuKQ0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlu dCBocHNhX2dldF9jbWRfaW5kZXgoc3RydWN0IHNjc2lfY21uZCAqc2NtZCkNCj4gPiArew0KPiA+ ICsJaW50IGlkeCA9IHNjbWQtPnJlcXVlc3QtPnRhZzsNCj4gPiArDQo+ID4gKwlpZiAoaWR4IDwg MCkNCj4gPiArCQlyZXR1cm4gaWR4Ow0KPiA+ICsNCj4gPiArCS8qIE9mZnNldCB0byBsZWF2ZSBz cGFjZSBmb3IgaW50ZXJuYWwgY21kcy4gKi8NCj4gPiArCXJldHVybiBpZHggKz0gSFBTQV9OUkVT RVJWRURfQ01EUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiAgICogU2VuZCBhIFRFU1Rf VU5JVF9SRUFEWSBjb21tYW5kIHRvIHRoZSBzcGVjaWZpZWQgTFVOIHVzaW5nIHRoZQ0KPiBzcGVj aWZpZWQNCj4gPiAgICogcmVwbHkgcXVldWU7IHJldHVybnMgemVybyBpZiB0aGUgdW5pdCBpcyBy ZWFkeSwgYW5kIG5vbi16ZXJvIG90aGVyd2lzZS4NCj4gPiAgICovDQo+ID4gQEAgLTQ5NzksMTgg KzUwMTIsMTggQEAgc3RhdGljIGludCBocHNhX2VoX2RldmljZV9yZXNldF9oYW5kbGVyKHN0cnVj dA0KPiBzY3NpX2NtbmQgKnNjc2ljbWQpDQo+ID4gIAkvKiBpZiBjb250cm9sbGVyIGxvY2tlZCB1 cCwgd2UgY2FuIGd1YXJhbnRlZSBjb21tYW5kIHdvbid0IGNvbXBsZXRlDQo+ICovDQo+ID4gIAlp ZiAobG9ja3VwX2RldGVjdGVkKGgpKSB7DQo+ID4gIAkJZGV2X3dhcm4oJmgtPnBkZXYtPmRldiwN Cj4gPiAtCQkJInNjc2kgJWQ6JWQ6JWQ6JWQgUkVTRVQgRkFJTEVELCBsb2NrdXAgZGV0ZWN0ZWRc biIsDQo+ID4gLQkJCWgtPnNjc2lfaG9zdC0+aG9zdF9ubywgZGV2LT5idXMsIGRldi0+dGFyZ2V0 LA0KPiA+IC0JCQlkZXYtPmx1bik7DQo+ID4gKwkJCSAic2NzaSAlZDolZDolZDoldSBjbWQgJWQg UkVTRVQgRkFJTEVELCBsb2NrdXANCj4gZGV0ZWN0ZWRcbiIsDQo+ID4gKwkJCSBoLT5zY3NpX2hv c3QtPmhvc3Rfbm8sIGRldi0+YnVzLCBkZXYtPnRhcmdldCwgZGV2LQ0KPiA+bHVuLA0KPiA+ICsJ CQkgaHBzYV9nZXRfY21kX2luZGV4KHNjc2ljbWQpKTsNCj4gPiAgCQlyZXR1cm4gRkFJTEVEOw0K PiA+ICAJfQ0KPiA+DQo+ID4gIAkvKiB0aGlzIHJlc2V0IHJlcXVlc3QgbWlnaHQgYmUgdGhlIHJl c3VsdCBvZiBhIGxvY2t1cDsgY2hlY2sgKi8NCj4gPiAgCWlmIChkZXRlY3RfY29udHJvbGxlcl9s b2NrdXAoaCkpIHsNCj4gPiAgCQlkZXZfd2FybigmaC0+cGRldi0+ZGV2LA0KPiA+IC0JCQkgInNj c2kgJWQ6JWQ6JWQ6JWQgUkVTRVQgRkFJTEVELCBuZXcgbG9ja3VwDQo+IGRldGVjdGVkXG4iLA0K PiA+ICsJCQkgInNjc2kgJWQ6JWQ6JWQ6JXUgY21kICVkIFJFU0VUIEZBSUxFRCwgbmV3IGxvY2t1 cA0KPiBkZXRlY3RlZFxuIiwNCj4gPiAgCQkJIGgtPnNjc2lfaG9zdC0+aG9zdF9ubywgZGV2LT5i dXMsIGRldi0+dGFyZ2V0LA0KPiA+IC0JCQkgZGV2LT5sdW4pOw0KPiA+ICsJCQkgZGV2LT5sdW4s IGhwc2FfZ2V0X2NtZF9pbmRleChzY3NpY21kKSk7DQo+ID4gIAkJcmV0dXJuIEZBSUxFRDsNCj4g PiAgCX0NCj4gPg0KPiA+IEBAIC01NDQyLDYgKzU0NzUsNTkgQEAgc3RhdGljIGludCBocHNhX2Vo X2Fib3J0X2hhbmRsZXIoc3RydWN0IHNjc2lfY21uZA0KPiAqc2MpDQo+ID4gIH0NCj4gPg0KPiA+ ICAvKg0KPiA+ICsgKiBGb3Igb3BlcmF0aW9ucyB3aXRoIGFuIGFzc29jaWF0ZWQgU0NTSSBjb21t YW5kLCBhIGNvbW1hbmQgYmxvY2sgaXMNCj4gYWxsb2NhdGVkDQo+ID4gKyAqIGF0IGluaXQsIGFu ZCBtYW5hZ2VkIGJ5IGNtZF90YWdnZWRfYWxsb2MoKSBhbmQgY21kX3RhZ2dlZF9mcmVlKCkgdXNp bmcNCj4gdGhlDQo+ID4gKyAqIGJsb2NrIHJlcXVlc3QgdGFnIGFzIGFuIGluZGV4IGludG8gYSB0 YWJsZSBvZiBlbnRyaWVzLiAgY21kX3RhZ2dlZF9mcmVlKCkgaXMNCj4gPiArICogdGhlIGNvbXBs ZW1lbnQsIGFsdGhvdWdoIGNtZF9mcmVlKCkgbWF5IGJlIGNhbGxlZCBpbnN0ZWFkLg0KPiA+ICsg Ki8NCj4gPiArc3RhdGljIHN0cnVjdCBDb21tYW5kTGlzdCAqY21kX3RhZ2dlZF9hbGxvYyhzdHJ1 Y3QgY3Rscl9pbmZvICpoLA0KPiA+ICsJCQkJCSAgICBzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kKQ0K PiA+ICt7DQo+ID4gKwlpbnQgaWR4ID0gaHBzYV9nZXRfY21kX2luZGV4KHNjbWQpOw0KPiA+ICsJ c3RydWN0IENvbW1hbmRMaXN0ICpjID0gaC0+Y21kX3Bvb2wgKyBpZHg7DQo+ID4gKwlpbnQgcmVm Y291bnQgPSAwOw0KPiA+ICsNCj4gPiArCWlmIChpZHggPCBIUFNBX05SRVNFUlZFRF9DTURTIHx8 IGlkeCA+PSBoLT5ucl9jbWRzKSB7DQo+ID4gKwkJZGV2X2VycigmaC0+cGRldi0+ZGV2LCAiQmFk IGJsb2NrIHRhZzogJWQgbm90IGluIFslZC4uJWRdXG4iLA0KPiA+ICsJCQlpZHgsIEhQU0FfTlJF U0VSVkVEX0NNRFMsIGgtPm5yX2NtZHMgLSAxKTsNCj4gPiArCQkvKiBUaGUgaW5kZXggdmFsdWUg Y29tZXMgZnJvbSB0aGUgYmxvY2sgbGF5ZXIsIHNvIGlmIGl0J3Mgb3V0IG9mDQo+ID4gKwkJICog Ym91bmRzLCBpdCdzIHByb2JhYmx5IG5vdCBvdXIgYnVnLg0KPiA+ICsJCSAqLw0KPiA+ICsJCUJV RygpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJlZmNvdW50ID0gYXRvbWljX2luY19yZXR1cm4o JmMtPnJlZmNvdW50KTsNCj4gDQo+IHJlZmNvdW50IGlzIG5ldmVyIHVzZWQsIHVzZSBhdG9taWNf aW5jKCZjLT5yZWZjb3VudCk7IGluc3RlYWQ/DQo+IA0KPiA+ICsJaWYgKHVubGlrZWx5KCFocHNh X2lzX2NtZF9pZGxlKGMpKSkgew0KPiA+ICsJCS8qDQo+ID4gKwkJICogV2UgZXhwZWN0IHRoYXQg dGhlIFNDU0kgbGF5ZXIgd2lsbCBoYW5kIHVzIGEgdW5pcXVlIHRhZw0KPiA+ICsJCSAqIHZhbHVl LiAgVGh1cywgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgY29sbGlzaW9uIGhlcmUgYmV0d2Vlbg0K PiA+ICsJCSAqIHR3byByZXF1ZXN0cy4uLmJlY2F1c2UgaWYgdGhlIHNlbGVjdGVkIGNvbW1hbmQg aXNuJ3QgaWRsZQ0KPiA+ICsJCSAqIHRoZW4gc29tZW9uZSBpcyBnb2luZyB0byBiZSB2ZXJ5IGRp c2FwcG9pbnRlZC4NCj4gPiArCQkgKi8NCj4gPiArCQlkZXZfZXJyKCZoLT5wZGV2LT5kZXYsDQo+ ID4gKwkJCSJ0YWcgY29sbGlzaW9uICh0YWc9JWQpIGluIGNtZF90YWdnZWRfYWxsb2MoKS5cbiIs DQo+ID4gKwkJCWlkeCk7DQo+ID4gKwkJaWYgKGMtPnNjc2lfY21kICE9IE5VTEwpDQo+ID4gKwkJ CXNjc2lfcHJpbnRfY29tbWFuZChjLT5zY3NpX2NtZCk7DQo+ID4gKwkJc2NzaV9wcmludF9jb21t YW5kKHNjbWQpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWhwc2FfY21kX3BhcnRpYWxfaW5pdCho LCBpZHgsIGMpOw0KPiA+ICsJcmV0dXJuIGM7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIGNtZF90YWdnZWRfZnJlZShzdHJ1Y3QgY3Rscl9pbmZvICpoLCBzdHJ1Y3QgQ29tbWFuZExp c3QgKmMpDQo+ID4gK3sNCj4gPiArCS8qDQo+ID4gKwkgKiBSZWxlYXNlIG91ciByZWZlcmVuY2Ug dG8gdGhlIGJsb2NrLiAgV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZw0KPiA+ICsJICogZWxz ZSB0byBmcmVlIGl0LCBiZWNhdXNlIGl0IGlzIGFjY2Vzc2VkIGJ5IGluZGV4LiAgKFRoZXJlJ3Mg bm8gcG9pbnQNCj4gPiArCSAqIGluIGNoZWNraW5nIHRoZSByZXN1bHQgb2YgdGhlIGRlY3JlbWVu dCwgc2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZQ0KPiA+ICsJICogdGhhdCB0aGVyZSBpc24ndCBh IGNvbmN1cnJlbnQgYWJvcnQgd2hpY2ggaXMgYWxzbyBhY2Nlc3NpbmcgaXQuKQ0KPiA+ICsJICov DQo+ID4gKwkodm9pZClhdG9taWNfZGVjKCZjLT5yZWZjb3VudCk7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qDQo+ID4gICAqIEZvciBvcGVyYXRpb25zIHRoYXQgY2Fubm90IHNsZWVwLCBhIGNvbW1h bmQgYmxvY2sgaXMgYWxsb2NhdGVkIGF0IGluaXQsDQo+ID4gICAqIGFuZCBtYW5hZ2VkIGJ5IGNt ZF9hbGxvYygpIGFuZCBjbWRfZnJlZSgpIHVzaW5nIGEgc2ltcGxlIGJpdG1hcCB0byB0cmFjaw0K PiA+ICAgKiB3aGljaCBvbmVzIGFyZSBmcmVlIG9yIGluIHVzZS4gIExvY2sgbXVzdCBiZSBoZWxk IHdoZW4gY2FsbGluZyB0aGlzLg0KPiA+IEBAIC01NDU0LDcgKzU1NDAsNiBAQCBzdGF0aWMgc3Ry dWN0IENvbW1hbmRMaXN0ICpjbWRfYWxsb2Moc3RydWN0DQo+IGN0bHJfaW5mbyAqaCkNCj4gPiAg ew0KPiA+ICAJc3RydWN0IENvbW1hbmRMaXN0ICpjOw0KPiA+ICAJaW50IHJlZmNvdW50LCBpOw0K PiA+IC0JdW5zaWduZWQgbG9uZyBvZmZzZXQ7DQo+ID4NCj4gPiAgCS8qDQo+ID4gIAkgKiBUaGVy ZSBpcyBzb21lICpleHRyZW1lbHkqIHNtYWxsIGJ1dCBub24temVybyBjaGFuY2UgdGhhdCB0aGF0 DQo+ID4gQEAgLTU0NjYsMzEgKzU1NTEsMzkgQEAgc3RhdGljIHN0cnVjdCBDb21tYW5kTGlzdCAq Y21kX2FsbG9jKHN0cnVjdA0KPiBjdGxyX2luZm8gKmgpDQo+ID4gIAkgKiB2ZXJ5IHVubHVja3kg dGhyZWFkIG1pZ2h0IGJlIHN0YXJ2ZWQgYW55d2F5LCBuZXZlciBhYmxlIHRvDQo+ID4gIAkgKiBi ZWF0IHRoZSBvdGhlciB0aHJlYWRzLiAgSW4gcmVhbGl0eSwgdGhpcyBoYXBwZW5zIHNvDQo+ID4g IAkgKiBpbmZyZXF1ZW50bHkgYXMgdG8gYmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBuZXZlci4N Cj4gPiArCSAqDQo+ID4gKwkgKiBOb3RlIHRoYXQgd2Ugc3RhcnQgYWxsb2NhdGluZyBjb21tYW5k cyBiZWZvcmUgdGhlIFNDU0kgaG9zdA0KPiBzdHJ1Y3R1cmUNCj4gPiArCSAqIGlzIGluaXRpYWxp emVkLiAgU2luY2UgdGhlIHNlYXJjaCBzdGFydHMgYXQgYml0IHplcm8sIHRoaXMNCj4gPiArCSAq IGFsbCB3b3Jrcywgc2luY2Ugd2UgaGF2ZSBhdCBsZWFzdCBvbmUgY29tbWFuZCBzdHJ1Y3R1cmUg YXZhaWxhYmxlOw0KPiA+ICsJICogaG93ZXZlciwgaXQgbWVhbnMgdGhhdCB0aGUgc3RydWN0dXJl cyB3aXRoIHRoZSBsb3cgaW5kZXhlcyBoYXZlIHRvIGJlDQo+ID4gKwkgKiByZXNlcnZlZCBmb3Ig ZHJpdmVyLWluaXRpYXRlZCByZXF1ZXN0cywgd2hpbGUgcmVxdWVzdHMgZnJvbSB0aGUgYmxvY2sN Cj4gPiArCSAqIGxheWVyIHdpbGwgdXNlIHRoZSBoaWdoZXIgaW5kZXhlcy4NCj4gPiAgCSAqLw0K PiA+DQo+ID4gLQlvZmZzZXQgPSBoLT5sYXN0X2FsbG9jYXRpb247IC8qIGJlbmlnbmx5IHJhY3kg Ki8NCj4gPiAgCWZvciAoOzspIHsNCj4gPiAtCQlpID0gZmluZF9uZXh0X3plcm9fYml0KGgtPmNt ZF9wb29sX2JpdHMsIGgtPm5yX2NtZHMsIG9mZnNldCk7DQo+ID4gLQkJaWYgKHVubGlrZWx5KGkg PT0gaC0+bnJfY21kcykpIHsNCj4gPiAtCQkJb2Zmc2V0ID0gMDsNCj4gPiArCQlpID0gZmluZF9m aXJzdF96ZXJvX2JpdChoLT5jbWRfcG9vbF9iaXRzLA0KPiBIUFNBX05SRVNFUlZFRF9DTURTKTsN Cj4gPiArCQlpZiAodW5saWtlbHkoaSA+PSBIUFNBX05SRVNFUlZFRF9DTURTKSkNCj4gPiAgCQkJ Y29udGludWU7DQo+ID4gLQkJfQ0KPiA+ICAJCWMgPSBoLT5jbWRfcG9vbCArIGk7DQo+ID4gIAkJ cmVmY291bnQgPSBhdG9taWNfaW5jX3JldHVybigmYy0+cmVmY291bnQpOw0KPiA+ICAJCWlmICh1 bmxpa2VseShyZWZjb3VudCA+IDEpKSB7DQo+ID4gIAkJCWNtZF9mcmVlKGgsIGMpOyAvKiBhbHJl YWR5IGluIHVzZSAqLw0KPiA+IC0JCQlvZmZzZXQgPSAoaSArIDEpICUgaC0+bnJfY21kczsNCj4g DQo+IEhpIERvbiwNCj4gd2hlbiB0aGlzIGhhcHBlbnMgLSBhIGNvbW1hbmQgaGFzIGl0cyBiaXRm aWVsZCBmbGFnIGNsZWFyZWQgYW5kLCBidXQgaXQncyB0YWtlbiAtDQo+IHJlZmNvdW50IGlzID4g MQ0KPiBpdCB3aWxsIGJlIHNvIGxpa2VseSBmb3IgbmV4dCBzZXZlcmFsIHRob3VzYW5kcyBvZiB0 ZXN0cyBpbiB0aGlzIGZ1bmN0aW9uIHVudGlsIHRoZSBpdCBpcw0KPiBmcmVlZC4NCj4gV2hlbiBp dCBpcyB0aGUgZmlyc3QgYml0IGluIHRoZSBiaXRmaWVsZCBpdCB3aWxsIGJsb2NrIGFsbCBmb2xs b3dpbmcgY29tbWFuZHMgc2VudCB0bw0KPiB0aGUgY2FyZCBmb3IgdGhhdCB0aW1lLg0KPiBUaGUg cHJldmlvdXMgdmFyaWFudCAgJ2ZpbmRfbmV4dF96ZXJvX2JpdCArIG9mZnNldCA9IChpICsgMSkg JSBoLT5ucl9jbWRzJyBzZWVtcw0KPiB0byBoYW5kbGUgdGhpcyBiZXR0ZXIuDQo+IENoZWVycywg VG9tYXMNCj4gDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCX0NCj4gPiAgCQlzZXRfYml0KGkg JiAoQklUU19QRVJfTE9ORyAtIDEpLA0KPiA+ICAJCQloLT5jbWRfcG9vbF9iaXRzICsgKGkgLyBC SVRTX1BFUl9MT05HKSk7DQo+ID4gIAkJYnJlYWs7IC8qIGl0J3Mgb3VycyBub3cuICovDQo+ID4g IAl9DQo+ID4gLQloLT5sYXN0X2FsbG9jYXRpb24gPSBpOyAvKiBiZW5pZ25seSByYWN5ICovDQo+ ID4gIAlocHNhX2NtZF9wYXJ0aWFsX2luaXQoaCwgaSwgYyk7DQo+ID4gIAlyZXR1cm4gYzsNCj4g PiAgfQ0KPiA+DQo+ID4gKy8qDQo+ID4gKyAqIFRoaXMgaXMgdGhlIGNvbXBsZW1lbnRhcnkgb3Bl cmF0aW9uIHRvIGNtZF9hbGxvYygpLiAgTm90ZSwgaG93ZXZlciwgaW4NCj4gc29tZQ0KPiA+ICsg KiBjb3JuZXIgY2FzZXMgaXQgbWF5IGFsc28gYmUgdXNlZCB0byBmcmVlIGJsb2NrcyBhbGxvY2F0 ZWQgYnkNCj4gPiArICogY21kX3RhZ2dlZF9hbGxvYygpIGluIHdoaWNoIGNhc2UgdGhlIHJlZi1j b3VudCBkZWNyZW1lbnQgZG9lcyB0aGUgdHJpY2sNCj4gYW5kDQo+ID4gKyAqIHRoZSBjbGVhci1i aXQgaXMgaGFybWxlc3MuDQo+ID4gKyAqLw0KPiA+ICBzdGF0aWMgdm9pZCBjbWRfZnJlZShzdHJ1 Y3QgY3Rscl9pbmZvICpoLCBzdHJ1Y3QgQ29tbWFuZExpc3QgKmMpDQo+ID4gIHsNCj4gPiAgCWlm IChhdG9taWNfZGVjX2FuZF90ZXN0KCZjLT5yZWZjb3VudCkpIHsNCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zY3NpL2hwc2EuaCBiL2RyaXZlcnMvc2NzaS9ocHNhLmgNCj4gPiBpbmRleCAzZWM4 OTM0Li4yNTM2YjY3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvc2NzaS9ocHNhLmgNCj4gPiAr KysgYi9kcml2ZXJzL3Njc2kvaHBzYS5oDQo+ID4gQEAgLTE0MSw3ICsxNDEsNiBAQCBzdHJ1Y3Qg Y3Rscl9pbmZvIHsNCj4gPiAgCXN0cnVjdCBDZmdUYWJsZSBfX2lvbWVtICpjZmd0YWJsZTsNCj4g PiAgCWludAlpbnRlcnJ1cHRzX2VuYWJsZWQ7DQo+ID4gIAlpbnQgCW1heF9jb21tYW5kczsNCj4g PiAtCWludCBsYXN0X2FsbG9jYXRpb247DQo+ID4gIAlhdG9taWNfdCBjb21tYW5kc19vdXRzdGFu ZGluZzsNCj4gPiAgIwlkZWZpbmUgUEVSRl9NT0RFX0lOVAkwDQo+ID4gICMJZGVmaW5lIERPT1JC RUxMX0lOVAkxDQo+ID4NCj4gPiAtLQ0KPiA+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0 OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1zY3NpIiBpbg0KPiA+IHRoZSBib2R5 IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4gTW9yZSBtYWpv cmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s DQoNCg==