From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v4] xen/pvh: use a custom IO bitmap for PVH hardware domains Date: Thu, 30 Apr 2015 16:53:04 +0100 Message-ID: <55424FE0.7030409@citrix.com> References: <1430390528-7868-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Ynqm6-00041i-3z for xen-devel@lists.xenproject.org; Thu, 30 Apr 2015 15:53:18 +0000 In-Reply-To: <1430390528-7868-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Roger Pau Monne , xen-devel@lists.xenproject.org Cc: Kevin Tian , Suravee Suthikulpanit , Eddie Dong , Jan Beulich , Aravind Gopalakrishnan , Jun Nakajima , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gMzAvMDQvMTUgMTE6NDIsIFJvZ2VyIFBhdSBNb25uZSB3cm90ZToKPiBTaW5jZSBhIFBWSCBo YXJkd2FyZSBkb21haW4gaGFzIGFjY2VzcyB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgY3JlYXRl IGEKPiBjdXN0b20gbW9yZSBwZXJtaXNzaXZlIElPIGJpdG1hcC4gVGhlIHBlcm1pc3Npb25zIHNl dCBvbiB0aGUgYml0bWFwIGFyZQo+IHBvcHVsYXRlZCBiYXNlZCBvbiB0aGUgY29udGVudHMgb2Yg dGhlIGlvcG9ydHMgcmFuZ2VzZXQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOp IDxyb2dlci5wYXVAY2l0cml4LmNvbT4KPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2Uu Y29tPgo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKUmV2 aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgo+IENj OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IENjOiBTdXJh dmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgo+IENjOiBB cmF2aW5kIEdvcGFsYWtyaXNobmFuIDxBcmF2aW5kLkdvcGFsYWtyaXNobmFuQGFtZC5jb20+Cj4g Q2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KPiBDYzogRWRkaWUgRG9u ZyA8ZWRkaWUuZG9uZ0BpbnRlbC5jb20+Cj4gQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50 ZWwuY29tPgo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjM6Cj4gICAtIEFkZCB0aGUgUlRDIElPIHBv cnRzIHRvIHRoZSBsaXN0IG9mIGJsb2NrZWQgcG9ydHMuCj4gICAtIFJlbW92ZSBhZG1pbl9pb19v a2F5IHNpbmNlIGl0J3MganVzdCBhIHdyYXBwZXIgYXJvdW5kCj4gICAgIGlvcG9ydHNfYWNjZXNz X3Blcm1pdHRlZC4KPgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gICAtIEFkZCAweGNmOC0weGNmYiB0 byB0aGUgcmFuZ2Ugb2YgYmxvY2tlZCAodHJhcHBlZCkgSU8gcG9ydHMuCj4gICAtIFVzZSByYW5n ZXNldF9yZXBvcnRfcmFuZ2VzIGluIG9yZGVyIHRvIGl0ZXJhdGUgb3ZlciB0aGUgcmFuZ2Ugb2Yg bm90Cj4gICAgIHRyYXBwZWQgSU8gcG9ydHMuCj4gICAtIEFsbG9jYXRlIHRoZSBEb20wIFBWSCBJ TyBiaXRtYXAgd2l0aCBfeG1hbGxvY19hcnJheSwgd2hpY2ggYWxsb3dzIHNldHRpbmcKPiAgICAg dGhlIGFsaWdubWVudCB0byBQQUdFX1NJWkUuCj4gICAtIFRlc3RlZCB3aXRoIExpbnV4IFBWL1BW SCB1c2luZyAzLjE4IGFuZCBGcmVlQlNEIFBWSCBIRUFELgo+Cj4gQ2hhbmdlcyBzaW5jZSB2MToK PiAgIC0gRHluYW1pY2FsbHkgYWxsb2NhdGUgUFZIIERvbTAgSU8gYml0bWFwIGlmIG5lZWRlZC4K PiAgIC0gRHJvcCBjYXN0IGZyb20gY29uc3RydWN0X3ZtY3Mgd2hlbiB3cml0aW5nIHRoZSBJTyBi aXRtYXAuCj4gICAtIENyZWF0ZSBhIG5ldyBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIGJpdG1h cCBiZWZvcmUgbGF1bmNoaW5nIERvbTAuIFRoaXMKPiAgICAgaXMgbmVlZGVkIGJlY2F1c2UgbnMx NjU1MF9lbmRib290IGlzIGNhbGxlZCBhZnRlciBjb25zdHJ1Y3RfZG9tMC4KPiAtLS0KPiAgIHhl bi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyAgICAgIHwgMjkgKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KPiAgIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgIHwgMjEgKysrKysr KysrKysrKysrKysrKystCj4gICB4ZW4vYXJjaC94ODYvaHZtL3N2bS92bWNiLmMgICAgICB8ICAz ICsrLQo+ICAgeGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jICAgICAgfCAgNSArKystLQo+ICAg eGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgfCAgMiArKwo+ICAgeGVuL2FyY2gveDg2 L3RyYXBzLmMgICAgICAgICAgICAgfCAyNyArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg IHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIHwgIDIgKysKPiAgIHhlbi9pbmNsdWRl L2FzbS14ODYvc2V0dXAuaCAgICAgIHwgIDEgKwo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNl cnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv ZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKPiBpbmRleCAzNzhl NjUwLi41ZjI3MDc0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwo+IEBAIC0xNTQ2LDggKzE1NDYsMTAg QEAgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMCgKPiAgICAgICAvKiBBQ1BJIFBNIFRpbWVyLiAq Lwo+ICAgICAgIGlmICggcG10bXJfaW9wb3J0ICkKPiAgICAgICAgICAgcmMgfD0gaW9wb3J0c19k ZW55X2FjY2VzcyhkLCBwbXRtcl9pb3BvcnQsIHBtdG1yX2lvcG9ydCArIDMpOwo+IC0gICAgLyog UENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgKE5CLiAweGNmOCBoYXMgc3BlY2lhbCB0cmVhdG1lbnQp LiAqLwo+IC0gICAgcmMgfD0gaW9wb3J0c19kZW55X2FjY2VzcyhkLCAweGNmYywgMHhjZmYpOwo+ ICsgICAgLyogUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgKi8KPiArICAgIHJjIHw9IGlvcG9ydHNf ZGVueV9hY2Nlc3MoZCwgMHhjZjgsIDB4Y2ZmKTsKPiArICAgIC8qIFJUQyAqLwo+ICsgICAgcmMg fD0gaW9wb3J0c19kZW55X2FjY2VzcyhkLCAweDcwLCAweDcxKTsKPiAgICAgICAvKiBDb21tYW5k LWxpbmUgSS9PIHJhbmdlcy4gKi8KPiAgICAgICBwcm9jZXNzX2RvbTBfaW9wb3J0c19kaXNhYmxl KGQpOwo+ICAgCj4gQEAgLTE2MzUsNiArMTYzNywyOSBAQCBvdXQ6Cj4gICAgICAgcmV0dXJuIHJj Owo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQgX19pbml0IGlvX2JpdG1hcF9jYih1bnNpZ25lZCBs b25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdm9pZCAqY3R4KQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZG9t YWluICpkID0gY3R4Owo+ICsgICAgdW5zaWduZWQgbG9uZyBpOwo+ICsKPiArICAgIGZvciAoIGkg PSBzOyBpIDw9IGU7IGkrKyApCj4gKyAgICAgICAgX19jbGVhcl9iaXQoaSwgZC0+YXJjaC5odm1f ZG9tYWluLmlvX2JpdG1hcCk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQg X19pbml0IHNldHVwX2lvX2JpdG1hcChzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gKyAgICBpbnQg cmM7Cj4gKwo+ICsgICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiArICAgIHsKPiArICAgICAg ICByYyA9IHJhbmdlc2V0X3JlcG9ydF9yYW5nZXMoZC0+YXJjaC5pb3BvcnRfY2FwcywgMCwgMHgx MDAwMCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fYml0bWFwX2Ni LCBkKTsKPiArICAgICAgICBCVUdfT04ocmMpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICAgLyoKPiAg ICAqIExvY2FsIHZhcmlhYmxlczoKPiAgICAqIG1vZGU6IEMKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBpbmRleCBiZmRlMzgw Li5jODQyYWUwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiArKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gQEAgLTc4LDkgKzc4LDEwIEBAIGludGVnZXJfcGFyYW0o Imh2bV9kZWJ1ZyIsIG9wdF9odm1fZGVidWdfbGV2ZWwpOwo+ICAgCj4gICBzdHJ1Y3QgaHZtX2Z1 bmN0aW9uX3RhYmxlIGh2bV9mdW5jcyBfX3JlYWRfbW9zdGx5Owo+ICAgCj4gKyNkZWZpbmUgSFZN X0lPQklUTUFQX1NJWkUgICAoMypQQUdFX1NJWkUvQllURVNfUEVSX0xPTkcpCj4gICAvKiBJL08g cGVybWlzc2lvbiBiaXRtYXAgaXMgZ2xvYmFsbHkgc2hhcmVkIGJ5IGFsbCBIVk0gZ3Vlc3RzLiAq Lwo+ICAgdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIuYnNzLnBh Z2VfYWxpZ25lZCIpKSkKPiAtICAgIGh2bV9pb19iaXRtYXBbMypQQUdFX1NJWkUvQllURVNfUEVS X0xPTkddOwo+ICsgICAgaHZtX2lvX2JpdG1hcFtIVk1fSU9CSVRNQVBfU0laRV07Cj4gICAKPiAg IC8qIFhlbiBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIGVuYWJsZSBIQVAgKi8KPiAgIHN0YXRpYyBi b29sX3QgX19pbml0ZGF0YSBvcHRfaGFwX2VuYWJsZWQgPSAxOwo+IEBAIC0xNDg0LDYgKzE0ODUs MjIgQEAgaW50IGh2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAg ICAgICBnb3RvIGZhaWwxOwo+ICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pb19oYW5kbGVyLT5u dW1fc2xvdCA9IDA7Cj4gICAKPiArICAgIC8qIFNldCB0aGUgZGVmYXVsdCBJTyBCaXRtYXAgKi8K PiArICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKPiArICAgIHsKPiArICAgICAgICBk LT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFwID0gX3htYWxsb2NfYXJyYXkoQllURVNfUEVSX0xP TkcsIFBBR0VfU0laRSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSFZNX0lPQklUTUFQX1NJWkUpOwo+ICsgICAgICAgIGlmICggZC0+YXJj aC5odm1fZG9tYWluLmlvX2JpdG1hcCA9PSBOVUxMICkKPiArICAgICAgICB7Cj4gKyAgICAgICAg ICAgIHJjID0gLUVOT01FTTsKPiArICAgICAgICAgICAgZ290byBmYWlsMTsKPiArICAgICAgICB9 Cj4gKyAgICAgICAgbWVtc2V0KGQtPmFyY2guaHZtX2RvbWFpbi5pb19iaXRtYXAsIH4wLAo+ICsg ICAgICAgICAgICAgICBIVk1fSU9CSVRNQVBfU0laRSAqIEJZVEVTX1BFUl9MT05HKTsKPiArICAg IH0KPiArICAgIGVsc2UKPiArICAgICAgICBkLT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFwID0g aHZtX2lvX2JpdG1hcDsKPiArCj4gICAgICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAgICAg ICB7Cj4gICAgICAgICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDAsIDB4MTAwMDMsIGhh bmRsZV9wdmhfaW8pOwo+IEBAIC0xNTE5LDYgKzE1MzYsOCBAQCBpbnQgaHZtX2RvbWFpbl9pbml0 aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgc3RkdmdhX2RlaW5pdChkKTsKPiAgICAg ICB2aW9hcGljX2RlaW5pdChkKTsKPiAgICBmYWlsMToKPiArICAgIGlmICggaXNfaGFyZHdhcmVf ZG9tYWluKGQpICkKPiArICAgICAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFw KTsKPiAgICAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4uaW9faGFuZGxlcik7Cj4gICAgICAg eGZyZWUoZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtcyk7Cj4gICAgZmFpbDA6Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3ZtY2IuYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3Zt Y2IuYwo+IGluZGV4IDIxMjkyYmIuLjIyN2ExODcgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9zdm0vdm1jYi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vdm1jYi5jCj4gQEAg LTExOCw3ICsxMTgsOCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF92bWNiKHN0cnVjdCB2Y3B1ICp2 KQo+ICAgICAgICAgICBzdm1fZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2LCBNU1JfQU1ENjRf TFdQX0NCQUREUik7Cj4gICAKPiAgICAgICB2bWNiLT5fbXNycG1fYmFzZV9wYSA9ICh1NjQpdmly dF90b19tYWRkcihhcmNoX3N2bS0+bXNycG0pOwo+IC0gICAgdm1jYi0+X2lvcG1fYmFzZV9wYSAg PSAodTY0KXZpcnRfdG9fbWFkZHIoaHZtX2lvX2JpdG1hcCk7Cj4gKyAgICB2bWNiLT5faW9wbV9i YXNlX3BhICA9Cj4gKyAgICAgICAgKHU2NCl2aXJ0X3RvX21hZGRyKHYtPmRvbWFpbi0+YXJjaC5o dm1fZG9tYWluLmlvX2JpdG1hcCk7Cj4gICAKPiAgICAgICAvKiBWaXJ0dWFsaXNlIEVGTEFHUy5J RiBhbmQgTEFQSUMgVFBSIChDUjgpLiAqLwo+ICAgICAgIHZtY2ItPl92aW50ci5maWVsZHMuaW50 cl9tYXNraW5nID0gMTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5j IGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCj4gaW5kZXggNjMwMDdhOS4uYmQzN2YwZSAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiArKysgYi94ZW4vYXJj aC94ODYvaHZtL3ZteC92bWNzLmMKPiBAQCAtOTg2LDggKzk4Niw5IEBAIHN0YXRpYyBpbnQgY29u c3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCj4gICAgICAgfQo+ICAgCj4gICAgICAgLyogSS9P IGFjY2VzcyBiaXRtYXAuICovCj4gLSAgICBfX3Ztd3JpdGUoSU9fQklUTUFQX0EsIHZpcnRfdG9f bWFkZHIoKGNoYXIgKilodm1faW9fYml0bWFwICsgMCkpOwo+IC0gICAgX192bXdyaXRlKElPX0JJ VE1BUF9CLCB2aXJ0X3RvX21hZGRyKChjaGFyICopaHZtX2lvX2JpdG1hcCArIFBBR0VfU0laRSkp Owo+ICsgICAgX192bXdyaXRlKElPX0JJVE1BUF9BLCB2aXJ0X3RvX21hZGRyKGQtPmFyY2guaHZt X2RvbWFpbi5pb19iaXRtYXApKTsKPiArICAgIF9fdm13cml0ZShJT19CSVRNQVBfQiwgdmlydF90 b19tYWRkcihkLT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFwICsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUgLyBCWVRFU19QRVJfTE9ORykpOwo+ ICAgCj4gICAgICAgaWYgKCBjcHVfaGFzX3ZteF92aXJ0dWFsX2ludHJfZGVsaXZlcnkgKQo+ICAg ICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYv c2V0dXAuYwo+IGluZGV4IDJiOTc4N2EuLjMzOTM0M2YgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L3NldHVwLmMKPiArKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwo+IEBAIC0xNDQ2LDYgKzE0 NDYsOCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1i aV9wKQo+ICAgCj4gICAgICAgZG1pX2VuZF9ib290KCk7Cj4gICAKPiArICAgIHNldHVwX2lvX2Jp dG1hcChkb20wKTsKPiArCj4gICAgICAgc3lzdGVtX3N0YXRlID0gU1lTX1NUQVRFX2FjdGl2ZTsK PiAgIAo+ICAgICAgIGRvbWFpbl91bnBhdXNlX2J5X3N5c3RlbWNvbnRyb2xsZXIoZG9tMCk7Cj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMK PiBpbmRleCAyMmNkZmM0Li44ZDJiYmIyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni90cmFw cy5jCj4gKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKPiBAQCAtMTc1MywyNSArMTc1Myw2IEBA IHN0YXRpYyBpbnQgZ3Vlc3RfaW9fb2theSgKPiAgICAgICByZXR1cm4gMDsKPiAgIH0KPiAgIAo+ IC0vKiBIYXMgdGhlIGFkbWluaXN0cmF0b3IgZ3JhbnRlZCBzdWZmaWNpZW50IHBlcm1pc3Npb24g Zm9yIHRoaXMgSS9PIGFjY2Vzcz8gKi8KPiAtc3RhdGljIGludCBhZG1pbl9pb19va2F5KAo+IC0g ICAgdW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGludCBieXRlcywKPiAtICAgIHN0cnVjdCB2 Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAtewo+IC0gICAgLyoKPiAtICAg ICAqIFBvcnQgMHhjZjggKENPTkZJR19BRERSRVNTKSBpcyBvbmx5IHZpc2libGUgZm9yIERXT1JE IGFjY2Vzc2VzLgo+IC0gICAgICogV2UgbmV2ZXIgcGVybWl0IGRpcmVjdCBhY2Nlc3MgdG8gdGhh dCByZWdpc3Rlci4KPiAtICAgICAqLwo+IC0gICAgaWYgKCAocG9ydCA9PSAweGNmOCkgJiYgKGJ5 dGVzID09IDQpICkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtCj4gLSAgICAvKiBXZSBhbHNvIG5l dmVyIHBlcm1pdCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBSVEMvQ01PUyByZWdpc3RlcnMuICovCj4g LSAgICBpZiAoICgocG9ydCAmIH4xKSA9PSBSVENfUE9SVCgwKSkgKQo+IC0gICAgICAgIHJldHVy biAwOwo+IC0KPiAtICAgIHJldHVybiBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQodi0+ZG9tYWlu LCBwb3J0LCBwb3J0ICsgYnl0ZXMgLSAxKTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBpbnQgcGNpX2Nm Z19vayhzdHJ1Y3QgZG9tYWluICpkLCBpbnQgd3JpdGUsIGludCBzaXplKQo+ICAgewo+ICAgICAg IHVpbnQzMl90IG1hY2hpbmVfYmRmOwo+IEBAIC0xODEzLDcgKzE3OTQsNyBAQCB1aW50MzJfdCBn dWVzdF9pb19yZWFkKAo+ICAgICAgIHVpbnQzMl90IGRhdGEgPSAwOwo+ICAgICAgIHVuc2lnbmVk IGludCBzaGlmdCA9IDA7Cj4gICAKPiAtICAgIGlmICggYWRtaW5faW9fb2theShwb3J0LCBieXRl cywgdiwgcmVncykgKQo+ICsgICAgaWYgKCBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQodi0+ZG9t YWluLCBwb3J0LCBwb3J0ICsgYnl0ZXMgLSAxKSApCj4gICAgICAgewo+ICAgICAgICAgICBzd2l0 Y2ggKCBieXRlcyApCj4gICAgICAgICAgIHsKPiBAQCAtMTg3Nyw3ICsxODU4LDcgQEAgdm9pZCBn dWVzdF9pb193cml0ZSgKPiAgICAgICB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5 dGVzLCB1aW50MzJfdCBkYXRhLAo+ICAgICAgIHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncykKPiAgIHsKPiAtICAgIGlmICggYWRtaW5faW9fb2theShwb3J0LCBieXRl cywgdiwgcmVncykgKQo+ICsgICAgaWYgKCBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQodi0+ZG9t YWluLCBwb3J0LCBwb3J0ICsgYnl0ZXMgLSAxKSApCj4gICAgICAgewo+ICAgICAgICAgICBzd2l0 Y2ggKCBieXRlcyApIHsKPiAgICAgICAgICAgY2FzZSAxOgo+IEBAIC0yMjI4LDcgKzIyMDksNyBA QCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmlsZWdlZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncykKPiAgICAgICBleGVjX2luOgo+ICAgICAgICAgICBpZiAoICFndWVzdF9pb19va2F5KHBv cnQsIG9wX2J5dGVzLCB2LCByZWdzKSApCj4gICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gLSAg ICAgICAgaWYgKCBhZG1pbl9pb19va2F5KHBvcnQsIG9wX2J5dGVzLCB2LCByZWdzKSApCj4gKyAg ICAgICAgaWYgKCBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQodi0+ZG9tYWluLCBwb3J0LCBwb3J0 ICsgb3BfYnl0ZXMgLSAxKSApCj4gICAgICAgICAgIHsKPiAgICAgICAgICAgICAgIG1hcmtfcmVn c19kaXJ0eShyZWdzKTsKPiAgICAgICAgICAgICAgIGlvX2VtdWwocmVncyk7Cj4gQEAgLTIyNTgs NyArMjIzOSw3IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9wcml2aWxlZ2VkX29wKHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzKQo+ICAgICAgIGV4ZWNfb3V0Ogo+ICAgICAgICAgICBpZiAoICFndWVz dF9pb19va2F5KHBvcnQsIG9wX2J5dGVzLCB2LCByZWdzKSApCj4gICAgICAgICAgICAgICBnb3Rv IGZhaWw7Cj4gLSAgICAgICAgaWYgKCBhZG1pbl9pb19va2F5KHBvcnQsIG9wX2J5dGVzLCB2LCBy ZWdzKSApCj4gKyAgICAgICAgaWYgKCBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQodi0+ZG9tYWlu LCBwb3J0LCBwb3J0ICsgb3BfYnl0ZXMgLSAxKSApCj4gICAgICAgICAgIHsKPiAgICAgICAgICAg ICAgIG1hcmtfcmVnc19kaXJ0eShyZWdzKTsKPiAgICAgICAgICAgICAgIGlvX2VtdWwocmVncyk7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKPiBpbmRleCAwNzAyYmY1Li5kMDAyOTU0IDEwMDY0 NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKPiBAQCAtMTQzLDYgKzE0Myw4IEBAIHN0cnVjdCBo dm1fZG9tYWluIHsKPiAgICAgICAgKi8KPiAgICAgICB1aW50NjRfdCBzeW5jX3RzYzsKPiAgIAo+ ICsgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICppb19iaXRtYXA7Cj4gKwo+ICAgICAgIHVuaW9u IHsKPiAgICAgICAgICAgc3RydWN0IHZteF9kb21haW4gdm14Owo+ICAgICAgICAgICBzdHJ1Y3Qg c3ZtX2RvbWFpbiBzdm07Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvc2V0dXAu aCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2V0dXAuaAo+IGluZGV4IDA4YmMyM2EuLjM4MWQ5Zjgg MTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9zZXR1cC5oCj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9zZXR1cC5oCj4gQEAgLTMyLDYgKzMyLDcgQEAgaW50IGNvbnN0cnVjdF9k b20wKAo+ICAgICAgIG1vZHVsZV90ICppbml0cmQsCj4gICAgICAgdm9pZCAqKCpib290c3RyYXBf bWFwKShjb25zdCBtb2R1bGVfdCAqKSwKPiAgICAgICBjaGFyICpjbWRsaW5lKTsKPiArdm9pZCBz ZXR1cF9pb19iaXRtYXAoc3RydWN0IGRvbWFpbiAqZCk7Cj4gICAKPiAgIHVuc2lnbmVkIGxvbmcg aW5pdGlhbF9pbWFnZXNfbnJwYWdlcyhub2RlaWRfdCBub2RlKTsKPiAgIHZvaWQgZGlzY2FyZF9p bml0aWFsX2ltYWdlcyh2b2lkKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=