From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kurz Subject: Re: [PATCH RFC v2 07/12] dataplane: allow virtio-1 devices Date: Tue, 25 Nov 2014 18:55:56 +0100 Message-ID: <20141125185556.44e23979@bahia.local> References: <1416921863-16523-1-git-send-email-cornelia.huck@de.ibm.com> <1416921863-16523-8-git-send-email-cornelia.huck@de.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: thuth@linux.vnet.ibm.com, mst@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org To: Cornelia Huck Return-path: In-Reply-To: <1416921863-16523-8-git-send-email-cornelia.huck@de.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org List-Id: kvm.vger.kernel.org T24gVHVlLCAyNSBOb3YgMjAxNCAxNDoyNDoxOCArMDEwMApDb3JuZWxpYSBIdWNrIDxjb3JuZWxp YS5odWNrQGRlLmlibS5jb20+IHdyb3RlOgoKPiBIYW5kbGUgZW5kaWFubmVzcyBjb252ZXJzaW9u IGZvciB2aXJ0aW8tMSB2aXJ0cXVldWVzIGNvcnJlY3RseS4KPiAKPiBOb3RlIHRoYXQgZGF0YXBs YW5lIG5vdyBuZWVkcyB0byBiZSBidWlsdCBwZXItdGFyZ2V0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6 IENvcm5lbGlhIEh1Y2sgPGNvcm5lbGlhLmh1Y2tAZGUuaWJtLmNvbT4KPiAtLS0KCldlIHN0aWxs IGhhdmUgdGhlIHNhbWUgZXJyb3IgYXMgaW4geW91ciBwcmV2aW91cyBwb3N0Li4uCgpJbiBmaWxl IGluY2x1ZGVkIGZyb20gaW5jbHVkZS9ody92aXJ0aW8vZGF0YXBsYW5lL3ZyaW5nLmg6MjM6MCwK ICAgICAgICAgICAgICAgICBmcm9tIGluY2x1ZGUvaHcvdmlydGlvL3ZpcnRpby1zY3NpLmg6MjEs CiAgICAgICAgICAgICAgICAgZnJvbSBody92aXJ0aW8vdmlydGlvLXBjaS5jOjI0OgppbmNsdWRl L2h3L3ZpcnRpby92aXJ0aW8tYWNjZXNzLmg6IEluIGZ1bmN0aW9uIOKAmHZpcnRpb19hY2Nlc3Nf aXNfYmlnX2VuZGlhbuKAmToKaW5jbHVkZS9ody92aXJ0aW8vdmlydGlvLWFjY2Vzcy5oOjI4OjE1 OiBlcnJvcjogYXR0ZW1wdCB0byB1c2UgcG9pc29uZWQgIlRBUkdFVF9XT1JEU19CSUdFTkRJQU4i CiAjZWxpZiBkZWZpbmVkKFRBUkdFVF9XT1JEU19CSUdFTkRJQU4pCgpFaXRoZXIgYnVpbGQgdmly dGlvLXBjaSBwZXItdGFyZ2V0IG9yIHByb2JhYmx5IGJldHRlciBtb3ZlIHRoZSB0YXJnZXQgdGFp bnRlZAphY2Nlc3NvcnMgdG8gYW5vdGhlciBmaWxlLgoKPiAgaHcvYmxvY2svZGF0YXBsYW5lL3Zp cnRpby1ibGsuYyAgICAgfCAgICAzICstCj4gIGh3L3Njc2kvdmlydGlvLXNjc2ktZGF0YXBsYW5l LmMgICAgIHwgICAgMiArLQo+ICBody92aXJ0aW8vTWFrZWZpbGUub2JqcyAgICAgICAgICAgICB8 ICAgIDIgKy0KPiAgaHcvdmlydGlvL2RhdGFwbGFuZS9NYWtlZmlsZS5vYmpzICAgfCAgICAyICst Cj4gIGh3L3ZpcnRpby9kYXRhcGxhbmUvdnJpbmcuYyAgICAgICAgIHwgICA4NSArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2h3L3ZpcnRpby9kYXRhcGxhbmUv dnJpbmcuaCB8ICAgNjQgKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgNiBmaWxlcyBjaGFu Z2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2h3L2Jsb2NrL2RhdGFwbGFuZS92aXJ0aW8tYmxrLmMgYi9ody9ibG9jay9kYXRhcGxhbmUvdmly dGlvLWJsay5jCj4gaW5kZXggMTIyMmEzNy4uYzI1ODc4YyAxMDA2NDQKPiAtLS0gYS9ody9ibG9j ay9kYXRhcGxhbmUvdmlydGlvLWJsay5jCj4gKysrIGIvaHcvYmxvY2svZGF0YXBsYW5lL3ZpcnRp by1ibGsuYwo+IEBAIC0xNiw2ICsxNiw3IEBACj4gICNpbmNsdWRlICJxZW11L2lvdi5oIgo+ICAj aW5jbHVkZSAicWVtdS90aHJlYWQuaCIKPiAgI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0Lmgi Cj4gKyNpbmNsdWRlICJody92aXJ0aW8vdmlydGlvLWFjY2Vzcy5oIgo+ICAjaW5jbHVkZSAiaHcv dmlydGlvL2RhdGFwbGFuZS92cmluZy5oIgo+ICAjaW5jbHVkZSAic3lzZW11L2Jsb2NrLWJhY2tl bmQuaCIKPiAgI2luY2x1ZGUgImh3L3ZpcnRpby92aXJ0aW8tYmxrLmgiCj4gQEAgLTc1LDcgKzc2 LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfcmVxdWVzdF92cmluZyhWaXJ0SU9CbG9ja1JlcSAq cmVxLCB1bnNpZ25lZCBjaGFyIHN0YXR1cykKPiAgICAgIFZpcnRJT0Jsb2NrRGF0YVBsYW5lICpz ID0gcmVxLT5kZXYtPmRhdGFwbGFuZTsKPiAgICAgIHN0Yl9wKCZyZXEtPmluLT5zdGF0dXMsIHN0 YXR1cyk7Cj4gCj4gLSAgICB2cmluZ19wdXNoKCZyZXEtPmRldi0+ZGF0YXBsYW5lLT52cmluZywg JnJlcS0+ZWxlbSwKPiArICAgIHZyaW5nX3B1c2gocy0+dmRldiwgJnJlcS0+ZGV2LT5kYXRhcGxh bmUtPnZyaW5nLCAmcmVxLT5lbGVtLAo+ICAgICAgICAgICAgICAgICByZXEtPnFpb3Yuc2l6ZSAr IHNpemVvZigqcmVxLT5pbikpOwo+IAo+ICAgICAgLyogU3VwcHJlc3Mgbm90aWZpY2F0aW9uIHRv IGd1ZXN0IGJ5IEJIIGFuZCBpdHMgc2NoZWR1bGVkCj4gZGlmZiAtLWdpdCBhL2h3L3Njc2kvdmly dGlvLXNjc2ktZGF0YXBsYW5lLmMgYi9ody9zY3NpL3ZpcnRpby1zY3NpLWRhdGFwbGFuZS5jCj4g aW5kZXggMDNhMWU4Yy4uNDE4ZDczYiAxMDA2NDQKPiAtLS0gYS9ody9zY3NpL3ZpcnRpby1zY3Np LWRhdGFwbGFuZS5jCj4gKysrIGIvaHcvc2NzaS92aXJ0aW8tc2NzaS1kYXRhcGxhbmUuYwo+IEBA IC05NCw3ICs5NCw3IEBAIHZvaWQgdmlydGlvX3Njc2lfdnJpbmdfcHVzaF9ub3RpZnkoVmlydElP U0NTSVJlcSAqcmVxKQo+ICB7Cj4gICAgICBWaXJ0SU9EZXZpY2UgKnZkZXYgPSBWSVJUSU9fREVW SUNFKHJlcS0+dnJpbmctPnBhcmVudCk7Cj4gCj4gLSAgICB2cmluZ19wdXNoKCZyZXEtPnZyaW5n LT52cmluZywgJnJlcS0+ZWxlbSwKPiArICAgIHZyaW5nX3B1c2godmRldiwgJnJlcS0+dnJpbmct PnZyaW5nLCAmcmVxLT5lbGVtLAo+ICAgICAgICAgICAgICAgICByZXEtPnFzZ2wuc2l6ZSArIHJl cS0+cmVzcF9pb3Yuc2l6ZSk7Cj4gCj4gICAgICBpZiAodnJpbmdfc2hvdWxkX25vdGlmeSh2ZGV2 LCAmcmVxLT52cmluZy0+dnJpbmcpKSB7Cj4gZGlmZiAtLWdpdCBhL2h3L3ZpcnRpby9NYWtlZmls ZS5vYmpzIGIvaHcvdmlydGlvL01ha2VmaWxlLm9ianMKPiBpbmRleCBkMjFjMzk3Li4xOWIyMjRh IDEwMDY0NAo+IC0tLSBhL2h3L3ZpcnRpby9NYWtlZmlsZS5vYmpzCj4gKysrIGIvaHcvdmlydGlv L01ha2VmaWxlLm9ianMKPiBAQCAtMiw3ICsyLDcgQEAgY29tbW9uLW9iai15ICs9IHZpcnRpby1y bmcubwo+ICBjb21tb24tb2JqLSQoQ09ORklHX1ZJUlRJT19QQ0kpICs9IHZpcnRpby1wY2kubwo+ ICBjb21tb24tb2JqLXkgKz0gdmlydGlvLWJ1cy5vCj4gIGNvbW1vbi1vYmoteSArPSB2aXJ0aW8t bW1pby5vCj4gLWNvbW1vbi1vYmotJChDT05GSUdfVklSVElPKSArPSBkYXRhcGxhbmUvCj4gK29i ai0kKENPTkZJR19WSVJUSU8pICs9IGRhdGFwbGFuZS8KPiAKPiAgb2JqLXkgKz0gdmlydGlvLm8g dmlydGlvLWJhbGxvb24ubyAKPiAgb2JqLSQoQ09ORklHX0xJTlVYKSArPSB2aG9zdC5vIHZob3N0 LWJhY2tlbmQubyB2aG9zdC11c2VyLm8KPiBkaWZmIC0tZ2l0IGEvaHcvdmlydGlvL2RhdGFwbGFu ZS9NYWtlZmlsZS5vYmpzIGIvaHcvdmlydGlvL2RhdGFwbGFuZS9NYWtlZmlsZS5vYmpzCj4gaW5k ZXggOWE4Y2ZjMC4uNzUzYTljYSAxMDA2NDQKPiAtLS0gYS9ody92aXJ0aW8vZGF0YXBsYW5lL01h a2VmaWxlLm9ianMKPiArKysgYi9ody92aXJ0aW8vZGF0YXBsYW5lL01ha2VmaWxlLm9ianMKPiBA QCAtMSArMSBAQAo+IC1jb21tb24tb2JqLXkgKz0gdnJpbmcubwo+ICtvYmoteSArPSB2cmluZy5v Cj4gZGlmZiAtLWdpdCBhL2h3L3ZpcnRpby9kYXRhcGxhbmUvdnJpbmcuYyBiL2h3L3ZpcnRpby9k YXRhcGxhbmUvdnJpbmcuYwo+IGluZGV4IGEwNTE3NzUuLjY5ODA5ZmYgMTAwNjQ0Cj4gLS0tIGEv aHcvdmlydGlvL2RhdGFwbGFuZS92cmluZy5jCj4gKysrIGIvaHcvdmlydGlvL2RhdGFwbGFuZS92 cmluZy5jCj4gQEAgLTE4LDYgKzE4LDcgQEAKPiAgI2luY2x1ZGUgImh3L2h3LmgiCj4gICNpbmNs dWRlICJleGVjL21lbW9yeS5oIgo+ICAjaW5jbHVkZSAiZXhlYy9hZGRyZXNzLXNwYWNlcy5oIgo+ ICsjaW5jbHVkZSAiaHcvdmlydGlvL3ZpcnRpby1hY2Nlc3MuaCIKPiAgI2luY2x1ZGUgImh3L3Zp cnRpby9kYXRhcGxhbmUvdnJpbmcuaCIKPiAgI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0Lmgi Cj4gCj4gQEAgLTgzLDcgKzg0LDcgQEAgYm9vbCB2cmluZ19zZXR1cChWcmluZyAqdnJpbmcsIFZp cnRJT0RldmljZSAqdmRldiwgaW50IG4pCj4gICAgICB2cmluZ19pbml0KCZ2cmluZy0+dnIsIHZp cnRpb19xdWV1ZV9nZXRfbnVtKHZkZXYsIG4pLCB2cmluZ19wdHIsIDQwOTYpOwo+IAo+ICAgICAg dnJpbmctPmxhc3RfYXZhaWxfaWR4ID0gdmlydGlvX3F1ZXVlX2dldF9sYXN0X2F2YWlsX2lkeCh2 ZGV2LCBuKTsKPiAtICAgIHZyaW5nLT5sYXN0X3VzZWRfaWR4ID0gdnJpbmctPnZyLnVzZWQtPmlk eDsKPiArICAgIHZyaW5nLT5sYXN0X3VzZWRfaWR4ID0gdnJpbmdfZ2V0X3VzZWRfaWR4KHZkZXYs IHZyaW5nKTsKPiAgICAgIHZyaW5nLT5zaWduYWxsZWRfdXNlZCA9IDA7Cj4gICAgICB2cmluZy0+ c2lnbmFsbGVkX3VzZWRfdmFsaWQgPSBmYWxzZTsKPiAKPiBAQCAtMTA0LDcgKzEwNSw3IEBAIHZv aWQgdnJpbmdfdGVhcmRvd24oVnJpbmcgKnZyaW5nLCBWaXJ0SU9EZXZpY2UgKnZkZXYsIGludCBu KQo+ICB2b2lkIHZyaW5nX2Rpc2FibGVfbm90aWZpY2F0aW9uKFZpcnRJT0RldmljZSAqdmRldiwg VnJpbmcgKnZyaW5nKQo+ICB7Cj4gICAgICBpZiAoISh2ZGV2LT5ndWVzdF9mZWF0dXJlc1swXSAm ICgxIDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRfSURYKSkpIHsKPiAtICAgICAgICB2cmluZy0+dnIu dXNlZC0+ZmxhZ3MgfD0gVlJJTkdfVVNFRF9GX05PX05PVElGWTsKPiArICAgICAgICB2cmluZ19z ZXRfdXNlZF9mbGFncyh2ZGV2LCB2cmluZywgVlJJTkdfVVNFRF9GX05PX05PVElGWSk7Cj4gICAg ICB9Cj4gIH0KPiAKPiBAQCAtMTE3LDEwICsxMTgsMTAgQEAgYm9vbCB2cmluZ19lbmFibGVfbm90 aWZpY2F0aW9uKFZpcnRJT0RldmljZSAqdmRldiwgVnJpbmcgKnZyaW5nKQo+ICAgICAgaWYgKHZk ZXYtPmd1ZXN0X2ZlYXR1cmVzWzBdICYgKDEgPDwgVklSVElPX1JJTkdfRl9FVkVOVF9JRFgpKSB7 Cj4gICAgICAgICAgdnJpbmdfYXZhaWxfZXZlbnQoJnZyaW5nLT52cikgPSB2cmluZy0+dnIuYXZh aWwtPmlkeDsKPiAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgdnJpbmctPnZyLnVzZWQtPmZsYWdz ICY9IH5WUklOR19VU0VEX0ZfTk9fTk9USUZZOwo+ICsgICAgICAgIHZyaW5nX2NsZWFyX3VzZWRf ZmxhZ3ModmRldiwgdnJpbmcsIFZSSU5HX1VTRURfRl9OT19OT1RJRlkpOwo+ICAgICAgfQo+ICAg ICAgc21wX21iKCk7IC8qIGVuc3VyZSB1cGRhdGUgaXMgc2VlbiBiZWZvcmUgcmVhZGluZyBhdmFp bF9pZHggKi8KPiAtICAgIHJldHVybiAhdnJpbmdfbW9yZV9hdmFpbCh2cmluZyk7Cj4gKyAgICBy ZXR1cm4gIXZyaW5nX21vcmVfYXZhaWwodmRldiwgdnJpbmcpOwo+ICB9Cj4gCj4gIC8qIFRoaXMg aXMgc3RvbGVuIGZyb20gbGludXgvZHJpdmVycy92aG9zdC92aG9zdC5jOnZob3N0X25vdGlmeSgp ICovCj4gQEAgLTEzNCwxMiArMTM1LDEzIEBAIGJvb2wgdnJpbmdfc2hvdWxkX25vdGlmeShWaXJ0 SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZykKPiAgICAgIHNtcF9tYigpOwo+IAo+ICAgICAg aWYgKCh2ZGV2LT5ndWVzdF9mZWF0dXJlc1swXSAmIFZJUlRJT19GX05PVElGWV9PTl9FTVBUWSkg JiYKPiAtICAgICAgICB1bmxpa2VseSh2cmluZy0+dnIuYXZhaWwtPmlkeCA9PSB2cmluZy0+bGFz dF9hdmFpbF9pZHgpKSB7Cj4gKyAgICAgICAgdW5saWtlbHkoIXZyaW5nX21vcmVfYXZhaWwodmRl diwgdnJpbmcpKSkgewo+ICAgICAgICAgIHJldHVybiB0cnVlOwo+ICAgICAgfQo+IAo+ICAgICAg aWYgKCEodmRldi0+Z3Vlc3RfZmVhdHVyZXNbMF0gJiBWSVJUSU9fUklOR19GX0VWRU5UX0lEWCkp IHsKPiAtICAgICAgICByZXR1cm4gISh2cmluZy0+dnIuYXZhaWwtPmZsYWdzICYgVlJJTkdfQVZB SUxfRl9OT19JTlRFUlJVUFQpOwo+ICsgICAgICAgIHJldHVybiAhKHZyaW5nX2dldF9hdmFpbF9m bGFncyh2ZGV2LCB2cmluZykgJgo+ICsgICAgICAgICAgICAgICAgIFZSSU5HX0FWQUlMX0ZfTk9f SU5URVJSVVBUKTsKPiAgICAgIH0KPiAgICAgIG9sZCA9IHZyaW5nLT5zaWduYWxsZWRfdXNlZDsK PiAgICAgIHYgPSB2cmluZy0+c2lnbmFsbGVkX3VzZWRfdmFsaWQ7Cj4gQEAgLTE1NCwxNSArMTU2 LDE4IEBAIGJvb2wgdnJpbmdfc2hvdWxkX25vdGlmeShWaXJ0SU9EZXZpY2UgKnZkZXYsIFZyaW5n ICp2cmluZykKPiAgfQo+IAo+IAo+IC1zdGF0aWMgaW50IGdldF9kZXNjKFZyaW5nICp2cmluZywg VmlydFF1ZXVlRWxlbWVudCAqZWxlbSwKPiArc3RhdGljIGludCBnZXRfZGVzYyhWaXJ0SU9EZXZp Y2UgKnZkZXYsIFZyaW5nICp2cmluZywgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSwKPiAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdnJpbmdfZGVzYyAqZGVzYykKPiAgewo+ICAgICAgdW5zaWdu ZWQgKm51bTsKPiAgICAgIHN0cnVjdCBpb3ZlYyAqaW92Owo+ICAgICAgaHdhZGRyICphZGRyOwo+ ICAgICAgTWVtb3J5UmVnaW9uICptcjsKPiArICAgIGludCBpc193cml0ZSA9IHZpcnRpb190c3dh cDE2KHZkZXYsIGRlc2MtPmZsYWdzKSAmIFZSSU5HX0RFU0NfRl9XUklURTsKPiArICAgIHVpbnQz Ml90IGxlbiA9IHZpcnRpb190c3dhcDMyKHZkZXYsIGRlc2MtPmxlbik7Cj4gKyAgICB1aW50NjRf dCBkZXNjX2FkZHIgPSB2aXJ0aW9fdHN3YXA2NCh2ZGV2LCBkZXNjLT5hZGRyKTsKPiAKPiAtICAg IGlmIChkZXNjLT5mbGFncyAmIFZSSU5HX0RFU0NfRl9XUklURSkgewo+ICsgICAgaWYgKGlzX3dy aXRlKSB7Cj4gICAgICAgICAgbnVtID0gJmVsZW0tPmluX251bTsKPiAgICAgICAgICBpb3YgPSAm ZWxlbS0+aW5fc2dbKm51bV07Cj4gICAgICAgICAgYWRkciA9ICZlbGVtLT5pbl9hZGRyWypudW1d Owo+IEBAIC0xODYsNDQgKzE5MSw0NSBAQCBzdGF0aWMgaW50IGdldF9kZXNjKFZyaW5nICp2cmlu ZywgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSwKPiAgICAgIH0KPiAKPiAgICAgIC8qIFRPRE8gaGFu ZGxlIG5vbi1jb250aWd1b3VzIG1lbW9yeSBhY3Jvc3MgcmVnaW9uIGJvdW5kYXJpZXMgKi8KPiAt ICAgIGlvdi0+aW92X2Jhc2UgPSB2cmluZ19tYXAoJm1yLCBkZXNjLT5hZGRyLCBkZXNjLT5sZW4s Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MtPmZsYWdzICYgVlJJTkdfREVT Q19GX1dSSVRFKTsKPiArICAgIGlvdi0+aW92X2Jhc2UgPSB2cmluZ19tYXAoJm1yLCBkZXNjX2Fk ZHIsIGxlbiwgaXNfd3JpdGUpOwo+ICAgICAgaWYgKCFpb3YtPmlvdl9iYXNlKSB7Cj4gICAgICAg ICAgZXJyb3JfcmVwb3J0KCJGYWlsZWQgdG8gbWFwIGRlc2NyaXB0b3IgYWRkciAlIyIgUFJJeDY0 ICIgbGVuICV1IiwKPiAtICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWRlc2MtPmFkZHIs IGRlc2MtPmxlbik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClkZXNjX2FkZHIs IGxlbik7Cj4gICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4gICAgICB9Cj4gCj4gICAgICAvKiBU aGUgTWVtb3J5UmVnaW9uIGlzIGxvb2tlZCB1cCBhZ2FpbiBhbmQgdW5yZWYnZWQgbGF0ZXIsIGxl YXZlIHRoZQo+ICAgICAgICogcmVmIGluIHBsYWNlLiAgKi8KPiAtICAgIGlvdi0+aW92X2xlbiA9 IGRlc2MtPmxlbjsKPiAtICAgICphZGRyID0gZGVzYy0+YWRkcjsKPiArICAgIGlvdi0+aW92X2xl biA9IGxlbjsKPiArICAgICphZGRyID0gZGVzY19hZGRyOwo+ICAgICAgKm51bSArPSAxOwo+ICAg ICAgcmV0dXJuIDA7Cj4gIH0KPiAKPiAgLyogVGhpcyBpcyBzdG9sZW4gZnJvbSBsaW51eC9kcml2 ZXJzL3Zob3N0L3Zob3N0LmMuICovCj4gLXN0YXRpYyBpbnQgZ2V0X2luZGlyZWN0KFZyaW5nICp2 cmluZywgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHZyaW5nX2Rlc2MgKmluZGlyZWN0KQo+ICtzdGF0aWMgaW50IGdldF9pbmRpcmVjdChW aXJ0SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSwgc3RydWN0IHZyaW5nX2Rlc2MgKmluZGlyZWN0KQo+ ICB7Cj4gICAgICBzdHJ1Y3QgdnJpbmdfZGVzYyBkZXNjOwo+ICAgICAgdW5zaWduZWQgaW50IGkg PSAwLCBjb3VudCwgZm91bmQgPSAwOwo+ICAgICAgaW50IHJldDsKPiArICAgIHVpbnQzMl90IGxl biA9IHZpcnRpb190c3dhcDMyKHZkZXYsIGluZGlyZWN0LT5sZW4pOwo+ICsgICAgdWludDY0X3Qg YWRkciA9IHZpcnRpb190c3dhcDY0KHZkZXYsIGluZGlyZWN0LT5hZGRyKTsKPiAKPiAgICAgIC8q IFNhbml0eSBjaGVjayAqLwo+IC0gICAgaWYgKHVubGlrZWx5KGluZGlyZWN0LT5sZW4gJSBzaXpl b2YoZGVzYykpKSB7Cj4gKyAgICBpZiAodW5saWtlbHkobGVuICUgc2l6ZW9mKGRlc2MpKSkgewo+ ICAgICAgICAgIGVycm9yX3JlcG9ydCgiSW52YWxpZCBsZW5ndGggaW4gaW5kaXJlY3QgZGVzY3Jp cHRvcjogIgo+ICAgICAgICAgICAgICAgICAgICAgICAibGVuICUjeCBub3QgbXVsdGlwbGUgb2Yg JSN6eCIsCj4gLSAgICAgICAgICAgICAgICAgICAgIGluZGlyZWN0LT5sZW4sIHNpemVvZihkZXNj KSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGxlbiwgc2l6ZW9mKGRlc2MpKTsKPiAgICAgICAg ICB2cmluZy0+YnJva2VuID0gdHJ1ZTsKPiAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiAgICAg IH0KPiAKPiAtICAgIGNvdW50ID0gaW5kaXJlY3QtPmxlbiAvIHNpemVvZihkZXNjKTsKPiArICAg IGNvdW50ID0gbGVuIC8gc2l6ZW9mKGRlc2MpOwo+ICAgICAgLyogQnVmZmVycyBhcmUgY2hhaW5l ZCB2aWEgYSAxNiBiaXQgbmV4dCBmaWVsZCwgc28KPiAgICAgICAqIHdlIGNhbiBoYXZlIGF0IG1v c3QgMl4xNiBvZiB0aGVzZS4gKi8KPiAgICAgIGlmICh1bmxpa2VseShjb3VudCA+IFVTSFJUX01B WCArIDEpKSB7Cj4gLSAgICAgICAgZXJyb3JfcmVwb3J0KCJJbmRpcmVjdCBidWZmZXIgbGVuZ3Ro IHRvbyBiaWc6ICVkIiwgaW5kaXJlY3QtPmxlbik7Cj4gKyAgICAgICAgZXJyb3JfcmVwb3J0KCJJ bmRpcmVjdCBidWZmZXIgbGVuZ3RoIHRvbyBiaWc6ICVkIiwgbGVuKTsKPiAgICAgICAgICB2cmlu Zy0+YnJva2VuID0gdHJ1ZTsKPiAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiAgICAgIH0KPiBA QCAtMjM0LDEyICsyNDAsMTIgQEAgc3RhdGljIGludCBnZXRfaW5kaXJlY3QoVnJpbmcgKnZyaW5n LCBWaXJ0UXVldWVFbGVtZW50ICplbGVtLAo+IAo+ICAgICAgICAgIC8qIFRyYW5zbGF0ZSBpbmRp cmVjdCBkZXNjcmlwdG9yICovCj4gICAgICAgICAgZGVzY19wdHIgPSB2cmluZ19tYXAoJm1yLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGlyZWN0LT5hZGRyICsgZm91bmQgKiBz aXplb2YoZGVzYyksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciArIGZvdW5k ICogc2l6ZW9mKGRlc2MpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihk ZXNjKSwgZmFsc2UpOwo+ICAgICAgICAgIGlmICghZGVzY19wdHIpIHsKPiAgICAgICAgICAgICAg ZXJyb3JfcmVwb3J0KCJGYWlsZWQgdG8gbWFwIGluZGlyZWN0IGRlc2NyaXB0b3IgIgo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgImFkZHIgJSMiIFBSSXg2NCAiIGxlbiAlenUiLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWluZGlyZWN0LT5hZGRyICsgZm91bmQgKiBz aXplb2YoZGVzYyksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpYWRkciAr IGZvdW5kICogc2l6ZW9mKGRlc2MpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGRlc2MpKTsKPiAgICAgICAgICAgICAgdnJpbmctPmJyb2tlbiA9IHRydWU7Cj4gICAgICAgICAg ICAgIHJldHVybiAtRUZBVUxUOwo+IEBAIC0yNTcsMTkgKzI2MywyMCBAQCBzdGF0aWMgaW50IGdl dF9pbmRpcmVjdChWcmluZyAqdnJpbmcsIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW0sCj4gICAgICAg ICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgICBpZiAodW5s aWtlbHkoZGVzYy5mbGFncyAmIFZSSU5HX0RFU0NfRl9JTkRJUkVDVCkpIHsKPiArICAgICAgICBp ZiAodW5saWtlbHkodmlydGlvX3Rzd2FwMTYodmRldiwgZGVzYy5mbGFncykKPiArICAgICAgICAg ICAgICAgICAgICAgJiBWUklOR19ERVNDX0ZfSU5ESVJFQ1QpKSB7Cj4gICAgICAgICAgICAgIGVy cm9yX3JlcG9ydCgiTmVzdGVkIGluZGlyZWN0IGRlc2NyaXB0b3IiKTsKPiAgICAgICAgICAgICAg dnJpbmctPmJyb2tlbiA9IHRydWU7Cj4gICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAg ICAgICAgIH0KPiAKPiAtICAgICAgICByZXQgPSBnZXRfZGVzYyh2cmluZywgZWxlbSwgJmRlc2Mp Owo+ICsgICAgICAgIHJldCA9IGdldF9kZXNjKHZkZXYsIHZyaW5nLCBlbGVtLCAmZGVzYyk7Cj4g ICAgICAgICAgaWYgKHJldCA8IDApIHsKPiAgICAgICAgICAgICAgdnJpbmctPmJyb2tlbiB8PSAo cmV0ID09IC1FRkFVTFQpOwo+ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAgIH0K PiAtICAgICAgICBpID0gZGVzYy5uZXh0Owo+IC0gICAgfSB3aGlsZSAoZGVzYy5mbGFncyAmIFZS SU5HX0RFU0NfRl9ORVhUKTsKPiArICAgICAgICBpID0gdmlydGlvX3Rzd2FwMTYodmRldiwgZGVz Yy5uZXh0KTsKPiArICAgIH0gd2hpbGUgKHZpcnRpb190c3dhcDE2KHZkZXYsIGRlc2MuZmxhZ3Mp ICYgVlJJTkdfREVTQ19GX05FWFQpOwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiAKPiBAQCAtMzIw LDcgKzMyNyw3IEBAIGludCB2cmluZ19wb3AoVmlydElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJp bmcsCj4gCj4gICAgICAvKiBDaGVjayBpdCBpc24ndCBkb2luZyB2ZXJ5IHN0cmFuZ2UgdGhpbmdz IHdpdGggZGVzY3JpcHRvciBudW1iZXJzLiAqLwo+ICAgICAgbGFzdF9hdmFpbF9pZHggPSB2cmlu Zy0+bGFzdF9hdmFpbF9pZHg7Cj4gLSAgICBhdmFpbF9pZHggPSB2cmluZy0+dnIuYXZhaWwtPmlk eDsKPiArICAgIGF2YWlsX2lkeCA9IHZyaW5nX2dldF9hdmFpbF9pZHgodmRldiwgdnJpbmcpOwo+ ICAgICAgYmFycmllcigpOyAvKiBsb2FkIGluZGljZXMgbm93IGFuZCBub3QgYWdhaW4gbGF0ZXIg Ki8KPiAKPiAgICAgIGlmICh1bmxpa2VseSgodWludDE2X3QpKGF2YWlsX2lkeCAtIGxhc3RfYXZh aWxfaWR4KSA+IG51bSkpIHsKPiBAQCAtMzQxLDcgKzM0OCw3IEBAIGludCB2cmluZ19wb3AoVmly dElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJpbmcsCj4gCj4gICAgICAvKiBHcmFiIHRoZSBuZXh0 IGRlc2NyaXB0b3IgbnVtYmVyIHRoZXkncmUgYWR2ZXJ0aXNpbmcsIGFuZCBpbmNyZW1lbnQKPiAg ICAgICAqIHRoZSBpbmRleCB3ZSd2ZSBzZWVuLiAqLwo+IC0gICAgaGVhZCA9IHZyaW5nLT52ci5h dmFpbC0+cmluZ1tsYXN0X2F2YWlsX2lkeCAlIG51bV07Cj4gKyAgICBoZWFkID0gdnJpbmdfZ2V0 X2F2YWlsX3JpbmcodmRldiwgdnJpbmcsIGxhc3RfYXZhaWxfaWR4ICUgbnVtKTsKPiAKPiAgICAg IGVsZW0tPmluZGV4ID0gaGVhZDsKPiAKPiBAQCAtMzcwLDIxICszNzcsMjEgQEAgaW50IHZyaW5n X3BvcChWaXJ0SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywKPiAgICAgICAgICAvKiBFbnN1 cmUgZGVzY3JpcHRvciBpcyBsb2FkZWQgYmVmb3JlIGFjY2Vzc2luZyBmaWVsZHMgKi8KPiAgICAg ICAgICBiYXJyaWVyKCk7Cj4gCj4gLSAgICAgICAgaWYgKGRlc2MuZmxhZ3MgJiBWUklOR19ERVND X0ZfSU5ESVJFQ1QpIHsKPiAtICAgICAgICAgICAgcmV0ID0gZ2V0X2luZGlyZWN0KHZyaW5nLCBl bGVtLCAmZGVzYyk7Cj4gKyAgICAgICAgaWYgKHZpcnRpb190c3dhcDE2KHZkZXYsIGRlc2MuZmxh Z3MpICYgVlJJTkdfREVTQ19GX0lORElSRUNUKSB7Cj4gKyAgICAgICAgICAgIHJldCA9IGdldF9p bmRpcmVjdCh2ZGV2LCB2cmluZywgZWxlbSwgJmRlc2MpOwo+ICAgICAgICAgICAgICBpZiAocmV0 IDwgMCkgewo+ICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgfQo+IAo+IC0gICAgICAgIHJldCA9IGdl dF9kZXNjKHZyaW5nLCBlbGVtLCAmZGVzYyk7Cj4gKyAgICAgICAgcmV0ID0gZ2V0X2Rlc2ModmRl diwgdnJpbmcsIGVsZW0sICZkZXNjKTsKPiAgICAgICAgICBpZiAocmV0IDwgMCkgewo+ICAgICAg ICAgICAgICBnb3RvIG91dDsKPiAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgaSA9IGRlc2MubmV4 dDsKPiAtICAgIH0gd2hpbGUgKGRlc2MuZmxhZ3MgJiBWUklOR19ERVNDX0ZfTkVYVCk7Cj4gKyAg ICAgICAgaSA9IHZpcnRpb190c3dhcDE2KHZkZXYsIGRlc2MubmV4dCk7Cj4gKyAgICB9IHdoaWxl ICh2aXJ0aW9fdHN3YXAxNih2ZGV2LCBkZXNjLmZsYWdzKSAmIFZSSU5HX0RFU0NfRl9ORVhUKTsK PiAKPiAgICAgIC8qIE9uIHN1Y2Nlc3MsIGluY3JlbWVudCBhdmFpbCBpbmRleC4gKi8KPiAgICAg IHZyaW5nLT5sYXN0X2F2YWlsX2lkeCsrOwo+IEBAIC00MDcsOSArNDE0LDkgQEAgb3V0Ogo+ICAg Kgo+ICAgKiBTdG9sZW4gZnJvbSBsaW51eC9kcml2ZXJzL3Zob3N0L3Zob3N0LmMuCj4gICAqLwo+ IC12b2lkIHZyaW5nX3B1c2goVnJpbmcgKnZyaW5nLCBWaXJ0UXVldWVFbGVtZW50ICplbGVtLCBp bnQgbGVuKQo+ICt2b2lkIHZyaW5nX3B1c2goVmlydElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJp bmcsIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW0sCj4gKyAgICAgICAgICAgICAgICBpbnQgbGVuKQo+ ICB7Cj4gLSAgICBzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtICp1c2VkOwo+ICAgICAgdW5zaWduZWQg aW50IGhlYWQgPSBlbGVtLT5pbmRleDsKPiAgICAgIHVpbnQxNl90IG5ldzsKPiAKPiBAQCAtNDIy LDE0ICs0MjksMTYgQEAgdm9pZCB2cmluZ19wdXNoKFZyaW5nICp2cmluZywgVmlydFF1ZXVlRWxl bWVudCAqZWxlbSwgaW50IGxlbikKPiAKPiAgICAgIC8qIFRoZSB2aXJ0cXVldWUgY29udGFpbnMg YSByaW5nIG9mIHVzZWQgYnVmZmVycy4gIEdldCBhIHBvaW50ZXIgdG8gdGhlCj4gICAgICAgKiBu ZXh0IGVudHJ5IGluIHRoYXQgdXNlZCByaW5nLiAqLwo+IC0gICAgdXNlZCA9ICZ2cmluZy0+dnIu dXNlZC0+cmluZ1t2cmluZy0+bGFzdF91c2VkX2lkeCAlIHZyaW5nLT52ci5udW1dOwo+IC0gICAg dXNlZC0+aWQgPSBoZWFkOwo+IC0gICAgdXNlZC0+bGVuID0gbGVuOwo+ICsgICAgdnJpbmdfc2V0 X3VzZWRfcmluZ19pZCh2ZGV2LCB2cmluZywgdnJpbmctPmxhc3RfdXNlZF9pZHggJSB2cmluZy0+ dnIubnVtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkKTsKPiArICAgIHZyaW5n X3NldF91c2VkX3JpbmdfbGVuKHZkZXYsIHZyaW5nLCB2cmluZy0+bGFzdF91c2VkX2lkeCAlIHZy aW5nLT52ci5udW0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwo+IAo+ICAg ICAgLyogTWFrZSBzdXJlIGJ1ZmZlciBpcyB3cml0dGVuIGJlZm9yZSB3ZSB1cGRhdGUgaW5kZXgu ICovCj4gICAgICBzbXBfd21iKCk7Cj4gCj4gLSAgICBuZXcgPSB2cmluZy0+dnIudXNlZC0+aWR4 ID0gKyt2cmluZy0+bGFzdF91c2VkX2lkeDsKPiArICAgIG5ldyA9ICsrdnJpbmctPmxhc3RfdXNl ZF9pZHg7Cj4gKyAgICB2cmluZ19zZXRfdXNlZF9pZHgodmRldiwgdnJpbmcsIG5ldyk7Cj4gICAg ICBpZiAodW5saWtlbHkoKGludDE2X3QpKG5ldyAtIHZyaW5nLT5zaWduYWxsZWRfdXNlZCkgPCAo dWludDE2X3QpMSkpIHsKPiAgICAgICAgICB2cmluZy0+c2lnbmFsbGVkX3VzZWRfdmFsaWQgPSBm YWxzZTsKPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody92aXJ0aW8vZGF0YXBsYW5l L3ZyaW5nLmggYi9pbmNsdWRlL2h3L3ZpcnRpby9kYXRhcGxhbmUvdnJpbmcuaAo+IGluZGV4IGQz ZTA4NmEuLmZkZTE1ZjMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9ody92aXJ0aW8vZGF0YXBsYW5l L3ZyaW5nLmgKPiArKysgYi9pbmNsdWRlL2h3L3ZpcnRpby9kYXRhcGxhbmUvdnJpbmcuaAo+IEBA IC0yMCw2ICsyMCw3IEBACj4gICNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgo+ICAjaW5jbHVkZSAi aHcvdmlydGlvL3ZpcnRpb19yaW5nLmgiCj4gICNpbmNsdWRlICJody92aXJ0aW8vdmlydGlvLmgi Cj4gKyNpbmNsdWRlICJody92aXJ0aW8vdmlydGlvLWFjY2Vzcy5oIgo+IAo+ICB0eXBlZGVmIHN0 cnVjdCB7Cj4gICAgICBNZW1vcnlSZWdpb24gKm1yOyAgICAgICAgICAgICAgIC8qIG1lbW9yeSBy ZWdpb24gY29udGFpbmluZyB0aGUgdnJpbmcgKi8KPiBAQCAtMzEsMTUgKzMyLDcxIEBAIHR5cGVk ZWYgc3RydWN0IHsKPiAgICAgIGJvb2wgYnJva2VuOyAgICAgICAgICAgICAgICAgICAgLyogd2Fz IHRoZXJlIGEgZmF0YWwgZXJyb3I/ICovCj4gIH0gVnJpbmc7Cj4gCj4gK3N0YXRpYyBpbmxpbmUg dWludDE2X3QgdnJpbmdfZ2V0X3VzZWRfaWR4KFZpcnRJT0RldmljZSAqdmRldiwgVnJpbmcgKnZy aW5nKQo+ICt7Cj4gKyAgICByZXR1cm4gdmlydGlvX3Rzd2FwMTYodmRldiwgdnJpbmctPnZyLnVz ZWQtPmlkeCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2cmluZ19zZXRfdXNlZF9p ZHgoVmlydElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJpbmcsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgaWR4KQo+ICt7Cj4gKyAgICB2cmluZy0+dnIu dXNlZC0+aWR4ID0gdmlydGlvX3Rzd2FwMTYodmRldiwgaWR4KTsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSB1aW50MTZfdCB2cmluZ19nZXRfYXZhaWxfaWR4KFZpcnRJT0RldmljZSAqdmRldiwg VnJpbmcgKnZyaW5nKQo+ICt7Cj4gKyAgICByZXR1cm4gdmlydGlvX3Rzd2FwMTYodmRldiwgdnJp bmctPnZyLmF2YWlsLT5pZHgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90IHZy aW5nX2dldF9hdmFpbF9yaW5nKFZpcnRJT0RldmljZSAqdmRldiwgVnJpbmcgKnZyaW5nLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpKQo+ICt7Cj4g KyAgICByZXR1cm4gdmlydGlvX3Rzd2FwMTYodmRldiwgdnJpbmctPnZyLmF2YWlsLT5yaW5nW2ld KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHZyaW5nX3NldF91c2VkX3JpbmdfaWQo VmlydElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJpbmcsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBpLCB1aW50MzJfdCBpZCkKPiArewo+ICsgICAgdnJp bmctPnZyLnVzZWQtPnJpbmdbaV0uaWQgPSB2aXJ0aW9fdHN3YXAzMih2ZGV2LCBpZCk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2cmluZ19zZXRfdXNlZF9yaW5nX2xlbihWaXJ0SU9E ZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGksIHVpbnQzMl90IGxlbikKPiArewo+ICsgICAgdnJpbmctPnZy LnVzZWQtPnJpbmdbaV0ubGVuID0gdmlydGlvX3Rzd2FwMzIodmRldiwgbGVuKTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSB1aW50MTZfdCB2cmluZ19nZXRfdXNlZF9mbGFncyhWaXJ0SU9EZXZp Y2UgKnZkZXYsIFZyaW5nICp2cmluZykKPiArewo+ICsgICAgcmV0dXJuIHZpcnRpb190c3dhcDE2 KHZkZXYsIHZyaW5nLT52ci51c2VkLT5mbGFncyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUg dWludDE2X3QgdnJpbmdfZ2V0X2F2YWlsX2ZsYWdzKFZpcnRJT0RldmljZSAqdmRldiwgVnJpbmcg KnZyaW5nKQo+ICt7Cj4gKyAgICByZXR1cm4gdmlydGlvX3Rzd2FwMTYodmRldiwgdnJpbmctPnZy LmF2YWlsLT5mbGFncyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2cmluZ19zZXRf dXNlZF9mbGFncyhWaXJ0SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGZsYWdzKQo+ICt7Cj4gKyAg ICB2cmluZy0+dnIudXNlZC0+ZmxhZ3MgfD0gdmlydGlvX3Rzd2FwMTYodmRldiwgZmxhZ3MpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdnJpbmdfY2xlYXJfdXNlZF9mbGFncyhWaXJ0 SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDE2X3QgZmxhZ3MpCj4gK3sKPiArICAgIHZyaW5nLT52ci51 c2VkLT5mbGFncyAmPSB2aXJ0aW9fdHN3YXAxNih2ZGV2LCB+ZmxhZ3MpOwo+ICt9Cj4gKwo+ICBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB2cmluZ19nZXRfbnVtKFZyaW5nICp2cmluZykKPiAg ewo+ICAgICAgcmV0dXJuIHZyaW5nLT52ci5udW07Cj4gIH0KPiAKPiAgLyogQXJlIHRoZXJlIG1v cmUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlPyAqLwo+IC1zdGF0aWMgaW5saW5lIGJvb2wgdnJpbmdf bW9yZV9hdmFpbChWcmluZyAqdnJpbmcpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCB2cmluZ19tb3Jl X2F2YWlsKFZpcnRJT0RldmljZSAqdmRldiwgVnJpbmcgKnZyaW5nKQo+ICB7Cj4gLSAgICByZXR1 cm4gdnJpbmctPnZyLmF2YWlsLT5pZHggIT0gdnJpbmctPmxhc3RfYXZhaWxfaWR4Owo+ICsgICAg cmV0dXJuIHZyaW5nX2dldF9hdmFpbF9pZHgodmRldiwgdnJpbmcpICE9IHZyaW5nLT5sYXN0X2F2 YWlsX2lkeDsKPiAgfQo+IAo+ICAvKiBGYWlsIGZ1dHVyZSB2cmluZ19wb3AoKSBhbmQgdnJpbmdf cHVzaCgpIGNhbGxzIHVudGlsIHJlc2V0ICovCj4gQEAgLTU0LDYgKzExMSw3IEBAIHZvaWQgdnJp bmdfZGlzYWJsZV9ub3RpZmljYXRpb24oVmlydElPRGV2aWNlICp2ZGV2LCBWcmluZyAqdnJpbmcp Owo+ICBib29sIHZyaW5nX2VuYWJsZV9ub3RpZmljYXRpb24oVmlydElPRGV2aWNlICp2ZGV2LCBW cmluZyAqdnJpbmcpOwo+ICBib29sIHZyaW5nX3Nob3VsZF9ub3RpZnkoVmlydElPRGV2aWNlICp2 ZGV2LCBWcmluZyAqdnJpbmcpOwo+ICBpbnQgdnJpbmdfcG9wKFZpcnRJT0RldmljZSAqdmRldiwg VnJpbmcgKnZyaW5nLCBWaXJ0UXVldWVFbGVtZW50ICplbGVtKTsKPiAtdm9pZCB2cmluZ19wdXNo KFZyaW5nICp2cmluZywgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSwgaW50IGxlbik7Cj4gK3ZvaWQg dnJpbmdfcHVzaChWaXJ0SU9EZXZpY2UgKnZkZXYsIFZyaW5nICp2cmluZywgVmlydFF1ZXVlRWxl bWVudCAqZWxlbSwKPiArICAgICAgICAgICAgICAgIGludCBsZW4pOwo+IAo+ICAjZW5kaWYgLyog VlJJTkdfSCAqLwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4 LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFu L2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u