From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Reinecke Subject: Re: [PATCH 10/12] dm-zoned: support arbitrary number of devices Date: Mon, 25 May 2020 09:52:20 +0200 Message-ID: References: <20200522153901.133375-1-hare@suse.de> <20200522153901.133375-11-hare@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Damien Le Moal Cc: "dm-devel@redhat.com" , Mike Snitzer List-Id: dm-devel.ids T24gNS8yNS8yMCA0OjM2IEFNLCBEYW1pZW4gTGUgTW9hbCB3cm90ZToKPiBPbiAyMDIwLzA1LzIz IDA6MzksIEhhbm5lcyBSZWluZWNrZSB3cm90ZToKPj4gUmVtb3ZlIHRoZSBoYXJkLWNvZGVkIGxp bWl0IG9mIHR3byBkZXZpY2VzIGFuZCBzdXBwb3J0IGFuIHVubGltaXRlZAo+PiBudW1iZXIgb2Yg YWRkaXRpb25hbCB6b25lZCBkZXZpY2VzLgo+PiBXaXRoIHRoYXQgd2UgbmVlZCB0byBpbmNyZWFz ZSB0aGUgZGV2aWNlLW1hcHBlciB2ZXJzaW9uIG51bWJlciB0bwo+PiAzLjAuMCBhcyB3ZSd2ZSBt b2RpZmllZCB0aGUgaW50ZXJmYWNlLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBIYW5uZXMgUmVpbmVj a2UgPGhhcmVAc3VzZS5kZT4KPj4gLS0tCj4+ICAgZHJpdmVycy9tZC9kbS16b25lZC1tZXRhZGF0 YS5jIHwgIDY4ICsrKysrKysrKysrLS0tLS0tLS0tLS0KPj4gICBkcml2ZXJzL21kL2RtLXpvbmVk LXJlY2xhaW0uYyAgfCAgMjggKysrKysrLS0tCj4+ICAgZHJpdmVycy9tZC9kbS16b25lZC10YXJn ZXQuYyAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4+ ICAgZHJpdmVycy9tZC9kbS16b25lZC5oICAgICAgICAgIHwgICA5ICstLQo+PiAgIDQgZmlsZXMg Y2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9kbS16b25lZC1tZXRhZGF0YS5jIGIvZHJpdmVycy9tZC9kbS16b25l ZC1tZXRhZGF0YS5jCj4+IGluZGV4IDVmNDQ5NzBhNjE4Ny4uODc3ODRlNzc4NWJjIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL21kL2RtLXpvbmVkLW1ldGFkYXRhLmMKPj4gKysrIGIvZHJpdmVycy9t ZC9kbS16b25lZC1tZXRhZGF0YS5jCj4+IEBAIC0yNjAsNiArMjYwLDExIEBAIHVuc2lnbmVkIGlu dCBkbXpfem9uZV9ucl9zZWN0b3JzX3NoaWZ0KHN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCkKPj4g ICAJcmV0dXJuIHptZC0+em9uZV9ucl9zZWN0b3JzX3NoaWZ0Owo+PiAgIH0KPj4gICAKPj4gK3Vu c2lnbmVkIGludCBkbXpfbnJfZGV2cyhzdHJ1Y3QgZG16X21ldGFkYXRhICp6bWQpCj4+ICt7Cj4+ ICsJcmV0dXJuIHptZC0+bnJfZGV2czsKPj4gK30KPiAKPiBJcyB0aGlzIGhlbHBlciByZWFsbHkg bmVlZGVkID8KPiAKClllcywgaW4gZG0tem9uZWQtcmVjbGFpbS5jCgo+PiArCj4+ICAgdW5zaWdu ZWQgaW50IGRtel9ucl96b25lcyhzdHJ1Y3QgZG16X21ldGFkYXRhICp6bWQpCj4+ICAgewo+PiAg IAlyZXR1cm4gem1kLT5ucl96b25lczsKPj4gQEAgLTI3MCwyNCArMjc1LDE0IEBAIHVuc2lnbmVk IGludCBkbXpfbnJfY2h1bmtzKHN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCkKPj4gICAJcmV0dXJu IHptZC0+bnJfY2h1bmtzOwo+PiAgIH0KPj4gICAKPj4gLXVuc2lnbmVkIGludCBkbXpfbnJfcm5k X3pvbmVzKHN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCkKPj4gK3Vuc2lnbmVkIGludCBkbXpfbnJf cm5kX3pvbmVzKHN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCwgaW50IGlkeCkKPj4gICB7Cj4+IC0J dW5zaWduZWQgaW50IG5yX3JuZF96b25lcyA9IDA7Cj4+IC0JaW50IGk7Cj4+IC0KPj4gLQlmb3Ig KGkgPSAwOyBpIDwgem1kLT5ucl9kZXZzOyBpKyspCj4+IC0JCW5yX3JuZF96b25lcyArPSB6bWQt PmRldltpXS5ucl9ybmQ7Cj4+IC0JcmV0dXJuIG5yX3JuZF96b25lczsKPj4gKwlyZXR1cm4gem1k LT5kZXZbaWR4XS5ucl9ybmQ7Cj4gCj4gQUguIE9LLiBTbyBteSBjb21tZW50IG9uIHBhdGNoIDgg aXMgdm9pZGVkIDopCj4gClllYWgsIHRoZSBwYXRjaCBhcnJhbmdlbWVudCBjb3VsZCBiZSBpbXBy b3ZlZDsgSSdsbCBzZWUgdG8gcm9sbCBib3RoIApjaGFuZ2VzIGludG8gb25lIHBhdGNoLgoKPj4g ICB9Cj4+ICAgCj4+IC11bnNpZ25lZCBpbnQgZG16X25yX3VubWFwX3JuZF96b25lcyhzdHJ1Y3Qg ZG16X21ldGFkYXRhICp6bWQpCj4+ICt1bnNpZ25lZCBpbnQgZG16X25yX3VubWFwX3JuZF96b25l cyhzdHJ1Y3QgZG16X21ldGFkYXRhICp6bWQsIGludCBpZHgpCj4+ICAgewo+PiAtCXVuc2lnbmVk IGludCBucl91bm1hcF9ybmRfem9uZXMgPSAwOwo+PiAtCWludCBpOwo+PiAtCj4+IC0JZm9yIChp ID0gMDsgaSA8IHptZC0+bnJfZGV2czsgaSsrKQo+PiAtCQlucl91bm1hcF9ybmRfem9uZXMgKz0g YXRvbWljX3JlYWQoJnptZC0+ZGV2W2ldLnVubWFwX25yX3JuZCk7Cj4+IC0JcmV0dXJuIG5yX3Vu bWFwX3JuZF96b25lczsKPj4gKwlyZXR1cm4gYXRvbWljX3JlYWQoJnptZC0+ZGV2W2lkeF0udW5t YXBfbnJfcm5kKTsKPj4gICB9Cj4+ICAgCj4+ICAgdW5zaWduZWQgaW50IGRtel9ucl9jYWNoZV96 b25lcyhzdHJ1Y3QgZG16X21ldGFkYXRhICp6bWQpCj4+IEBAIC0zMDAsMjQgKzI5NSwxNCBAQCB1 bnNpZ25lZCBpbnQgZG16X25yX3VubWFwX2NhY2hlX3pvbmVzKHN0cnVjdCBkbXpfbWV0YWRhdGEg KnptZCkKPj4gICAJcmV0dXJuIGF0b21pY19yZWFkKCZ6bWQtPnVubWFwX25yX2NhY2hlKTsKPj4g ICB9Cj4+ICAgCj4+IC11bnNpZ25lZCBpbnQgZG16X25yX3NlcV96b25lcyhzdHJ1Y3QgZG16X21l dGFkYXRhICp6bWQpCj4+ICt1bnNpZ25lZCBpbnQgZG16X25yX3NlcV96b25lcyhzdHJ1Y3QgZG16 X21ldGFkYXRhICp6bWQsIGludCBpZHgpCj4+ICAgewo+PiAtCXVuc2lnbmVkIGludCBucl9zZXFf em9uZXMgPSAwOwo+PiAtCWludCBpOwo+PiAtCj4+IC0JZm9yIChpID0gMDsgaSA8IHptZC0+bnJf ZGV2czsgaSsrKQo+PiAtCQlucl9zZXFfem9uZXMgKz0gem1kLT5kZXZbaV0ubnJfc2VxOwo+PiAt CXJldHVybiBucl9zZXFfem9uZXM7Cj4+ICsJcmV0dXJuIHptZC0+ZGV2W2lkeF0ubnJfc2VxOwo+ PiAgIH0KPj4gICAKPj4gLXVuc2lnbmVkIGludCBkbXpfbnJfdW5tYXBfc2VxX3pvbmVzKHN0cnVj dCBkbXpfbWV0YWRhdGEgKnptZCkKPj4gK3Vuc2lnbmVkIGludCBkbXpfbnJfdW5tYXBfc2VxX3pv bmVzKHN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCwgaW50IGlkeCkKPj4gICB7Cj4+IC0JdW5zaWdu ZWQgaW50IG5yX3VubWFwX3NlcV96b25lcyA9IDA7Cj4+IC0JaW50IGk7Cj4+IC0KPj4gLQlmb3Ig KGkgPSAwOyBpIDwgem1kLT5ucl9kZXZzOyBpKyspCj4+IC0JCW5yX3VubWFwX3NlcV96b25lcyAr PSBhdG9taWNfcmVhZCgmem1kLT5kZXZbaV0udW5tYXBfbnJfc2VxKTsKPj4gLQlyZXR1cm4gbnJf dW5tYXBfc2VxX3pvbmVzOwo+PiArCXJldHVybiBhdG9taWNfcmVhZCgmem1kLT5kZXZbaWR4XS51 bm1hcF9ucl9zZXEpOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgc3RydWN0IGRtX3pvbmUgKmRt el9nZXQoc3RydWN0IGRtel9tZXRhZGF0YSAqem1kLCB1bnNpZ25lZCBpbnQgem9uZV9pZCkKPj4g QEAgLTE1MzAsNyArMTUxNSwyMCBAQCBzdGF0aWMgaW50IGRtel9pbml0X3pvbmVzKHN0cnVjdCBk bXpfbWV0YWRhdGEgKnptZCkKPj4gICAJCSAqLwo+PiAgIAkJem1kLT5zYlswXS56b25lID0gZG16 X2dldCh6bWQsIDApOwo+PiAgIAo+PiAtCQl6b25lZF9kZXYgPSAmem1kLT5kZXZbMV07Cj4+ICsJ CWZvciAoaSA9IDE7IGkgPCB6bWQtPm5yX2RldnM7IGkrKykgewo+PiArCQkJem9uZWRfZGV2ID0g JnptZC0+ZGV2W2ldOwo+PiArCj4+ICsJCQlyZXQgPSBibGtkZXZfcmVwb3J0X3pvbmVzKHpvbmVk X2Rldi0+YmRldiwgMCwKPj4gKwkJCQkJCSAgQkxLX0FMTF9aT05FUywKPj4gKwkJCQkJCSAgZG16 X2luaXRfem9uZSwgem9uZWRfZGV2KTsKPj4gKwkJCWlmIChyZXQgPCAwKSB7Cj4+ICsJCQkJRE1E RUJVRygiKCVzKTogRmFpbGVkIHRvIHJlcG9ydCB6b25lcywgZXJyb3IgJWQiLAo+PiArCQkJCQl6 bWQtPmRldm5hbWUsIHJldCk7Cj4+ICsJCQkJZG16X2Ryb3Bfem9uZXMoem1kKTsKPj4gKwkJCQly ZXR1cm4gcmV0Owo+PiArCQkJfQo+PiArCQl9Cj4+ICsJCXJldHVybiAwOwo+PiAgIAl9Cj4+ICAg Cj4+ICAgCS8qCj4+IEBAIC0yOTIxLDEwICsyOTE5LDE0IEBAIGludCBkbXpfY3RyX21ldGFkYXRh KHN0cnVjdCBkbXpfZGV2ICpkZXYsIGludCBudW1fZGV2LAo+PiAgIAkJICAgICAgem1kLT5ucl9k YXRhX3pvbmVzLCB6bWQtPm5yX2NodW5rcyk7Cj4+ICAgCWRtel96bWRfZGVidWcoem1kLCAiICAg ICV1IGNhY2hlIHpvbmVzICgldSB1bm1hcHBlZCkiLAo+PiAgIAkJICAgICAgem1kLT5ucl9jYWNo ZSwgYXRvbWljX3JlYWQoJnptZC0+dW5tYXBfbnJfY2FjaGUpKTsKPj4gLQlkbXpfem1kX2RlYnVn KHptZCwgIiAgICAldSByYW5kb20gem9uZXMgKCV1IHVubWFwcGVkKSIsCj4+IC0JCSAgICAgIGRt el9ucl9ybmRfem9uZXMoem1kKSwgZG16X25yX3VubWFwX3JuZF96b25lcyh6bWQpKTsKPj4gLQlk bXpfem1kX2RlYnVnKHptZCwgIiAgICAldSBzZXF1ZW50aWFsIHpvbmVzICgldSB1bm1hcHBlZCki LAo+PiAtCQkgICAgICBkbXpfbnJfc2VxX3pvbmVzKHptZCksIGRtel9ucl91bm1hcF9zZXFfem9u ZXMoem1kKSk7Cj4+ICsJZm9yIChpID0gMDsgaSA8IHptZC0+bnJfZGV2czsgaSsrKSB7Cj4+ICsJ CWRtel96bWRfZGVidWcoem1kLCAiICAgICV1IHJhbmRvbSB6b25lcyAoJXUgdW5tYXBwZWQpIiwK Pj4gKwkJCSAgICAgIGRtel9ucl9ybmRfem9uZXMoem1kLCBpKSwKPj4gKwkJCSAgICAgIGRtel9u cl91bm1hcF9ybmRfem9uZXMoem1kLCBpKSk7Cj4+ICsJCWRtel96bWRfZGVidWcoem1kLCAiICAg ICV1IHNlcXVlbnRpYWwgem9uZXMgKCV1IHVubWFwcGVkKSIsCj4+ICsJCQkgICAgICBkbXpfbnJf c2VxX3pvbmVzKHptZCwgaSksCj4+ICsJCQkgICAgICBkbXpfbnJfdW5tYXBfc2VxX3pvbmVzKHpt ZCwgaSkpOwo+PiArCX0KPj4gICAJZG16X3ptZF9kZWJ1Zyh6bWQsICIgICV1IHJlc2VydmVkIHNl cXVlbnRpYWwgZGF0YSB6b25lcyIsCj4+ICAgCQkgICAgICB6bWQtPm5yX3Jlc2VydmVkX3NlcSk7 Cj4+ICAgCWRtel96bWRfZGVidWcoem1kLCAiRm9ybWF0OiIpOwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9kbS16b25lZC1yZWNsYWltLmMgYi9kcml2ZXJzL21kL2RtLXpvbmVkLXJlY2xhaW0u Ywo+PiBpbmRleCBmYmEwZDQ4ZTM4YTcuLmYyZTA1M2I1ZjJkYiAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9tZC9kbS16b25lZC1yZWNsYWltLmMKPj4gKysrIGIvZHJpdmVycy9tZC9kbS16b25lZC1y ZWNsYWltLmMKPj4gQEAgLTQ0MiwxNSArNDQyLDE4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZG16 X3JlY2xhaW1fcGVyY2VudGFnZShzdHJ1Y3QgZG16X3JlY2xhaW0gKnpyYykKPj4gICB7Cj4+ICAg CXN0cnVjdCBkbXpfbWV0YWRhdGEgKnptZCA9IHpyYy0+bWV0YWRhdGE7Cj4+ICAgCXVuc2lnbmVk IGludCBucl9jYWNoZSA9IGRtel9ucl9jYWNoZV96b25lcyh6bWQpOwo+PiAtCXVuc2lnbmVkIGlu dCBucl9ybmQgPSBkbXpfbnJfcm5kX3pvbmVzKHptZCk7Cj4+IC0JdW5zaWduZWQgaW50IG5yX3Vu bWFwLCBucl96b25lczsKPj4gKwl1bnNpZ25lZCBpbnQgbnJfdW5tYXAgPSAwLCBucl96b25lcyA9 IDA7Cj4+ICAgCj4+ICAgCWlmIChucl9jYWNoZSkgewo+PiAgIAkJbnJfem9uZXMgPSBucl9jYWNo ZTsKPj4gICAJCW5yX3VubWFwID0gZG16X25yX3VubWFwX2NhY2hlX3pvbmVzKHptZCk7Cj4+ICAg CX0gZWxzZSB7Cj4+IC0JCW5yX3pvbmVzID0gbnJfcm5kOwo+PiAtCQlucl91bm1hcCA9IGRtel9u cl91bm1hcF9ybmRfem9uZXMoem1kKTsKPj4gKwkJaW50IGk7Cj4+ICsKPj4gKwkJZm9yIChpID0g MDsgaSA8IGRtel9ucl9kZXZzKHptZCk7IGkrKykgewo+PiArCQkJbnJfem9uZXMgKz0gZG16X25y X3JuZF96b25lcyh6bWQsIGkpOwo+IAo+IE1heSBiZSBub3QuLi4gV2UgY291bGQga2VlcCBjb25z dGFudCB0b3RhbHMgaW4gem1kIHRvIGF2b2lkIHRoaXMuCj4gCj4+ICsJCQlucl91bm1hcCArPSBk bXpfbnJfdW5tYXBfcm5kX3pvbmVzKHptZCwgaSk7Cj4+ICsJCX0KPj4gICAJfQo+PiAgIAlyZXR1 cm4gbnJfdW5tYXAgKiAxMDAgLyBucl96b25lczsKPj4gICB9Cj4+IEBAIC00NjAsNyArNDYzLDEx IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZG16X3JlY2xhaW1fcGVyY2VudGFnZShzdHJ1Y3QgZG16 X3JlY2xhaW0gKnpyYykKPj4gICAgKi8KPj4gICBzdGF0aWMgYm9vbCBkbXpfc2hvdWxkX3JlY2xh aW0oc3RydWN0IGRtel9yZWNsYWltICp6cmMsIHVuc2lnbmVkIGludCBwX3VubWFwKQo+PiAgIHsK Pj4gLQl1bnNpZ25lZCBpbnQgbnJfcmVjbGFpbSA9IGRtel9ucl9ybmRfem9uZXMoenJjLT5tZXRh ZGF0YSk7Cj4+ICsJaW50IGk7Cj4+ICsJdW5zaWduZWQgaW50IG5yX3JlY2xhaW0gPSAwOwo+PiAr Cj4+ICsJZm9yIChpID0gMDsgaSA8IGRtel9ucl9kZXZzKHpyYy0+bWV0YWRhdGEpOyBpKyspCj4+ ICsJCW5yX3JlY2xhaW0gKz0gZG16X25yX3JuZF96b25lcyh6cmMtPm1ldGFkYXRhLCBpKTsKPj4g ICAKPj4gICAJaWYgKGRtel9ucl9jYWNoZV96b25lcyh6cmMtPm1ldGFkYXRhKSkKPj4gICAJCW5y X3JlY2xhaW0gKz0gZG16X25yX2NhY2hlX3pvbmVzKHpyYy0+bWV0YWRhdGEpOwo+PiBAQCAtNDg3 LDggKzQ5NCw4IEBAIHN0YXRpYyB2b2lkIGRtel9yZWNsYWltX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+PiAgIHsKPj4gICAJc3RydWN0IGRtel9yZWNsYWltICp6cmMgPSBjb250YWlu ZXJfb2Yod29yaywgc3RydWN0IGRtel9yZWNsYWltLCB3b3JrLndvcmspOwo+PiAgIAlzdHJ1Y3Qg ZG16X21ldGFkYXRhICp6bWQgPSB6cmMtPm1ldGFkYXRhOwo+PiAtCXVuc2lnbmVkIGludCBwX3Vu bWFwOwo+PiAtCWludCByZXQ7Cj4+ICsJdW5zaWduZWQgaW50IHBfdW5tYXAsIG5yX3VubWFwX3Ju ZCA9IDAsIG5yX3JuZCA9IDA7Cj4+ICsJaW50IHJldCwgaTsKPj4gICAKPj4gICAJaWYgKGRtel9k ZXZfaXNfZHlpbmcoem1kKSkKPj4gICAJCXJldHVybjsKPj4gQEAgLTUxMywxNCArNTIwLDE3IEBA IHN0YXRpYyB2b2lkIGRtel9yZWNsYWltX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ PiAgIAkJenJjLT5rY190aHJvdHRsZS50aHJvdHRsZSA9IG1pbig3NVUsIDEwMFUgLSBwX3VubWFw IC8gMik7Cj4+ICAgCX0KPj4gICAKPj4gKwlmb3IgKGkgPSAwOyBpIDwgZG16X25yX2RldnMoem1k KTsgaSsrKSB7Cj4+ICsJCW5yX3VubWFwX3JuZCArPSBkbXpfbnJfdW5tYXBfcm5kX3pvbmVzKHpt ZCwgaSk7Cj4+ICsJCW5yX3JuZCArPSBkbXpfbnJfcm5kX3pvbmVzKHptZCwgaSk7Cj4+ICsJfQo+ PiAgIAlETURFQlVHKCIoJXMpOiBSZWNsYWltICgldSk6ICVzLCAldSUlIGZyZWUgem9uZXMgKCV1 LyV1IGNhY2hlICV1LyV1IHJhbmRvbSkiLAo+PiAgIAkJZG16X21ldGFkYXRhX2xhYmVsKHptZCks Cj4+ICAgCQl6cmMtPmtjX3Rocm90dGxlLnRocm90dGxlLAo+PiAgIAkJKGRtel90YXJnZXRfaWRs ZSh6cmMpID8gIklkbGUiIDogIkJ1c3kiKSwKPj4gICAJCXBfdW5tYXAsIGRtel9ucl91bm1hcF9j YWNoZV96b25lcyh6bWQpLAo+PiAgIAkJZG16X25yX2NhY2hlX3pvbmVzKHptZCksCj4+IC0JCWRt el9ucl91bm1hcF9ybmRfem9uZXMoem1kKSwKPj4gLQkJZG16X25yX3JuZF96b25lcyh6bWQpKTsK Pj4gKwkJbnJfdW5tYXBfcm5kLCBucl9ybmQpOwo+PiAgIAo+PiAgIAlyZXQgPSBkbXpfZG9fcmVj bGFpbSh6cmMpOwo+PiAgIAlpZiAocmV0ICYmIHJldCAhPSAtRUlOVFIpIHsKCkluIHRoZSBsaWdo dCBvZiB0aGlzIEkgZ3Vlc3MgdGhlcmUgaXMgYSBiZW5lZml0IGZyb20gaGF2aW5nIHRoZSBjb3Vu dGVycwppbiB0aGUgbWV0YWRhdGE7IHRoYXQgaW5kZWVkIHdvdWxkIHNhdmUgdXMgdG8gaGF2aW5n IHRvIGV4cG9ydCB0aGUgCm51bWJlciBvZiBkZXZpY2VzLgpJJ2xsIGdpdmUgaXQgYSBnbyB3aXRo IHRoZSBuZXh0IHJvdW5kLgoKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tem9uZWQtdGFy Z2V0LmMgYi9kcml2ZXJzL21kL2RtLXpvbmVkLXRhcmdldC5jCj4+IGluZGV4IGJjYTlhNjExYjhk ZC4uZjM0ZmNjM2Y3Y2M2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL21kL2RtLXpvbmVkLXRhcmdl dC5jCj4+ICsrKyBiL2RyaXZlcnMvbWQvZG0tem9uZWQtdGFyZ2V0LmMKPj4gQEAgLTEzLDggKzEz LDYgQEAKPj4gICAKPj4gICAjZGVmaW5lIERNWl9NSU5fQklPUwkJODE5Mgo+PiAgIAo+PiAtI2Rl ZmluZSBETVpfTUFYX0RFVlMJCTIKPj4gLQo+PiAgIC8qCj4+ICAgICogWm9uZSBCSU8gY29udGV4 dC4KPj4gICAgKi8KPj4gQEAgLTQwLDkgKzM4LDEwIEBAIHN0cnVjdCBkbV9jaHVua193b3JrIHsK Pj4gICAgKiBUYXJnZXQgZGVzY3JpcHRvci4KPj4gICAgKi8KPj4gICBzdHJ1Y3QgZG16X3Rhcmdl dCB7Cj4+IC0Jc3RydWN0IGRtX2RldgkJKmRkZXZbRE1aX01BWF9ERVZTXTsKPj4gKwlzdHJ1Y3Qg ZG1fZGV2CQkqKmRkZXY7Cj4+ICsJdW5zaWduZWQgaW50CQlucl9kZGV2czsKPj4gICAKPj4gLQl1 bnNpZ25lZCBsb25nCQlmbGFnczsKPj4gKwl1bnNpZ25lZCBpbnQJCWZsYWdzOwo+PiAgIAo+PiAg IAkvKiBab25lZCBibG9jayBkZXZpY2UgaW5mb3JtYXRpb24gKi8KPj4gICAJc3RydWN0IGRtel9k ZXYJCSpkZXY7Cj4+IEBAIC03NjQsNyArNzYzLDcgQEAgc3RhdGljIHZvaWQgZG16X3B1dF96b25l ZF9kZXZpY2Uoc3RydWN0IGRtX3RhcmdldCAqdGkpCj4+ICAgCXN0cnVjdCBkbXpfdGFyZ2V0ICpk bXogPSB0aS0+cHJpdmF0ZTsKPj4gICAJaW50IGk7Cj4+ICAgCj4+IC0JZm9yIChpID0gMDsgaSA8 IERNWl9NQVhfREVWUzsgaSsrKSB7Cj4+ICsJZm9yIChpID0gMDsgaSA8IGRtei0+bnJfZGRldnM7 IGkrKykgewo+PiAgIAkJaWYgKGRtei0+ZGRldltpXSkgewo+PiAgIAkJCWRtX3B1dF9kZXZpY2Uo dGksIGRtei0+ZGRldltpXSk7Cj4+ICAgCQkJZG16LT5kZGV2W2ldID0gTlVMTDsKPj4gQEAgLTc3 NywyMSArNzc2LDM1IEBAIHN0YXRpYyBpbnQgZG16X2ZpeHVwX2RldmljZXMoc3RydWN0IGRtX3Rh cmdldCAqdGkpCj4+ICAgCXN0cnVjdCBkbXpfdGFyZ2V0ICpkbXogPSB0aS0+cHJpdmF0ZTsKPj4g ICAJc3RydWN0IGRtel9kZXYgKnJlZ19kZXYsICp6b25lZF9kZXY7Cj4+ICAgCXN0cnVjdCByZXF1 ZXN0X3F1ZXVlICpxOwo+PiArCXNlY3Rvcl90IHpvbmVfbnJfc2VjdG9ycyA9IDA7Cj4+ICsJaW50 IGk7Cj4+ICAgCj4+ICAgCS8qCj4+IC0JICogV2hlbiB3ZSBoYXZlIHR3byBkZXZpY2VzLCB0aGUg Zmlyc3Qgb25lIG11c3QgYmUgYSByZWd1bGFyIGJsb2NrCj4+IC0JICogZGV2aWNlIGFuZCB0aGUg c2Vjb25kIGEgem9uZWQgYmxvY2sgZGV2aWNlLgo+PiArCSAqIFdoZW4gd2UgaGF2ZSBtb3JlIHRo YW4gb24gZGV2aWNlcywgdGhlIGZpcnN0IG9uZSBtdXN0IGJlIGEKPj4gKwkgKiByZWd1bGFyIGJs b2NrIGRldmljZSBhbmQgdGhlIG90aGVycyB6b25lZCBibG9jayBkZXZpY2VzLgo+PiAgIAkgKi8K Pj4gLQlpZiAoZG16LT5kZGV2WzBdICYmIGRtei0+ZGRldlsxXSkgewo+PiArCWlmIChkbXotPm5y X2RkZXZzID4gMSkgewo+PiAgIAkJcmVnX2RldiA9ICZkbXotPmRldlswXTsKPj4gICAJCWlmICgh KHJlZ19kZXYtPmZsYWdzICYgRE1aX0JERVZfUkVHVUxBUikpIHsKPj4gICAJCQl0aS0+ZXJyb3Ig PSAiUHJpbWFyeSBkaXNrIGlzIG5vdCBhIHJlZ3VsYXIgZGV2aWNlIjsKPj4gICAJCQlyZXR1cm4g LUVJTlZBTDsKPj4gICAJCX0KPj4gLQkJem9uZWRfZGV2ID0gJmRtei0+ZGV2WzFdOwo+PiAtCQlp ZiAoem9uZWRfZGV2LT5mbGFncyAmIERNWl9CREVWX1JFR1VMQVIpIHsKPj4gLQkJCXRpLT5lcnJv ciA9ICJTZWNvbmRhcnkgZGlzayBpcyBub3QgYSB6b25lZCBkZXZpY2UiOwo+PiAtCQkJcmV0dXJu IC1FSU5WQUw7Cj4+ICsJCWZvciAoaSA9IDE7IGkgPCBkbXotPm5yX2RkZXZzOyBpKyspIHsKPj4g KwkJCXpvbmVkX2RldiA9ICZkbXotPmRldltpXTsKPj4gKwkJCWlmICh6b25lZF9kZXYtPmZsYWdz ICYgRE1aX0JERVZfUkVHVUxBUikgewo+PiArCQkJCXRpLT5lcnJvciA9ICJTZWNvbmRhcnkgZGlz ayBpcyBub3QgYSB6b25lZCBkZXZpY2UiOwo+PiArCQkJCXJldHVybiAtRUlOVkFMOwo+PiArCQkJ fQo+PiArCQkJcSA9IGJkZXZfZ2V0X3F1ZXVlKHpvbmVkX2Rldi0+YmRldik7Cj4gCj4gTWF5IGJl IGFkZCBhIGNvbW1lbnQgaGVyZSB0aGF0IHdlIG11c3QgY2hlY2sgdGhhdCBhbGwgem9uZWQgZGV2 aWNlcyBoYXZlIHRoZQo+IHNhbWUgem9uZSBzaXplID8KPiAKCkkgdGhvdWdodCBpdCB3YXMgc2Vs Zi1leHBsYW5hdG9yeTsgYnV0IG1heWJlIG5vdC4KV2lsbCBiZSBhZGRpbmcgaXQuCgpDaGVlcnMs CgpIYW5uZXMKLS0gCkRyLiBIYW5uZXMgUmVpbmVja2UgICAgICAgICAgICBUZWFtbGVhZCBTdG9y YWdlICYgTmV0d29ya2luZwpoYXJlQHN1c2UuZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKzQ5IDkxMSA3NDA1MyA2ODgKU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR21iSCwgTWF4ZmVs ZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnCkhSQiAzNjgwOSAoQUcgTsO8cm5iZXJnKSwgR2VzY2jD pGZ0c2bDvGhyZXI6IEZlbGl4IEltZW5kw7ZyZmZlcgoKCi0tCmRtLWRldmVsIG1haWxpbmcgbGlz dApkbS1kZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0 aW5mby9kbS1kZXZlbA==