From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v5 24/28] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Date: Fri, 21 Aug 2015 21:36:37 +0100 Message-ID: <55D78BD5.9080300@citrix.com> References: <1440176021-18910-1-git-send-email-roger.pau@citrix.com> <1440176021-18910-25-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 1ZSt3K-00075Y-Qr for xen-devel@lists.xenproject.org; Fri, 21 Aug 2015 20:36:43 +0000 In-Reply-To: <1440176021-18910-25-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: Stefano Stabellini , Ian Campbell , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMjEvMDgvMTUgMTc6NTMsIFJvZ2VyIFBhdSBNb25uZSB3cm90ZToKPiBBbGxvdyB0aGUgdXNh Z2Ugb2YgdGhlIFZDUFVPUF9pbml0aWFsaXNlLCBWQ1BVT1BfdXAsIFZDUFVPUF9kb3duIGFuZAo+ IFZDUFVPUF9pc191cCBoeXBlcmNhbGxzIGZyb20gSFZNIGd1ZXN0cy4KPgo+IFRoaXMgcGF0Y2gg aW50cm9kdWNlcyBhIG5ldyBzdHJ1Y3R1cmUgKHZjcHVfaHZtX2NvbnRleHQpIHRoYXQgc2hvdWxk IGJlIHVzZWQKPiBpbiBjb25qdWN0aW9uIHdpdGggdGhlIFZDUFVPUF9pbml0aWFsaXNlIGh5cGVy Y2FsbCBpbiBvcmRlciB0byBpbml0aWFsaXplCj4gdkNQVXMgZm9yIEhWTSBndWVzdHMuCj4KPiBT aWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KPiBD YzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IENjOiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IENjOiBJYW4gQ2FtcGJlbGwgPGlhbi5jYW1wYmVs bEBjaXRyaXguY29tPgo+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGlu aUBjaXRyaXguY29tPgo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjQ6Cj4gIC0gRG9uJ3QgYXNzdW1l IG1vZGUgaXMgNjRCLCBhZGQgYW4gZXhwbGljaXQgY2hlY2suCj4gIC0gRG9uJ3Qgc2V0IFRGX2tl cm5lbF9tb2RlLCBpdCBpcyBvbmx5IG5lZWRlZCBmb3IgUFYgZ3Vlc3RzLgo+ICAtIERvbid0IHNl dCBDUjBfRVQgdW5jb25kaXRpb25hbGx5Lgo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vZG9tYWluLmMg ICAgICAgICAgICAgfCAgMjQgKysrKysrCj4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAg ICAgICB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9h cmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICB8ICAgOCArKwo+ICB4ZW4vY29tbW9uL2RvbWFp bi5jICAgICAgICAgICAgICAgfCAgMTYgKy0tLQo+ICB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2 bV92Y3B1LmggfCAxNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg eGVuL2luY2x1ZGUveGVuL2RvbWFpbi5oICAgICAgICAgIHwgICAyICsKPiAgNiBmaWxlcyBjaGFu Z2VkLCAzNjcgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV92Y3B1LmgKPgo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vZG9tYWluLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMKPiBpbmRleCBiMmJm YzdkLi5iMjAwMzVkIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9kb21haW4uYwo+ICsrKyBi L3hlbi9hcmNoL2FybS9kb21haW4uYwo+IEBAIC03NTIsNiArNzUyLDMwIEBAIGludCBhcmNoX3Nl dF9pbmZvX2d1ZXN0KAo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK2ludCBhcmNoX2luaXRp YWxpemVfdmNwdShzdHJ1Y3QgdmNwdSAqdiwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBh cmcpCj4gK3sKPiArICAgIHN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgKmN0eHQ7Cj4gKyAgICBz dHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwo+ICsgICAgaW50IHJjOwo+ICsKPiAr ICAgIGlmICggKGN0eHQgPSBhbGxvY192Y3B1X2d1ZXN0X2NvbnRleHQoKSkgPT0gTlVMTCApCj4g KyAgICAgICAgcmV0dXJuIC1FTk9NRU07CgpJIGhhdmUgcG9zdGVkIG15ICJyZW1vdmUgYWxsb2Nf dmNwdV9ndWVzdF9jb250ZXh0KCkiIHBhdGNoIHRvIHRoZSBsaXN0CmZvciByZWZlcmVuY2UgYXMg aXQgaW50ZXJhY3RzIHdpdGggdGhpcyBwYXRjaC4gIEkgZG9uJ3QgbWluZCByZWJhc2luZwppdCwg YnV0IGl0IG1pZ2h0IGFsc28gaW5mbHVlbmNlIHRoaXMgcGF0Y2guCgo+ICsKPiArICAgIGlmICgg Y29weV9mcm9tX2d1ZXN0KGN0eHQsIGFyZywgMSkgKQo+ICsgICAgewo+ICsgICAgICAgIGZyZWVf dmNwdV9ndWVzdF9jb250ZXh0KGN0eHQpOwo+ICsgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICsg ICAgfQo+ICsKPiArICAgIGRvbWFpbl9sb2NrKGQpOwo+ICsgICAgcmMgPSB2LT5pc19pbml0aWFs aXNlZCA/IC1FRVhJU1QgOiBhcmNoX3NldF9pbmZvX2d1ZXN0KHYsIGN0eHQpOwo+ICsgICAgZG9t YWluX3VubG9jayhkKTsKPiArCj4gKyAgICBmcmVlX3ZjcHVfZ3Vlc3RfY29udGV4dChjdHh0KTsK PiArCj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gIGludCBhcmNoX3ZjcHVfcmVzZXQoc3Ry dWN0IHZjcHUgKnYpCj4gIHsKPiAgICAgIHZjcHVfZW5kX3NodXRkb3duX2RlZmVycmFsKHYpOwo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWlu LmMKPiBpbmRleCA4ZmU5NWY3Li4yM2ZmMTRjIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9k b21haW4uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IEBAIC0zNyw2ICszNyw3IEBA Cj4gICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5o Pgo+ICAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgo+ICsjaW5jbHVkZSA8cHVibGljL2h2bS9o dm1fdmNwdS5oPgo+ICAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KPiAgI2luY2x1ZGUgPGFzbS9tYzE0 NjgxOHJ0Yy5oPgo+ICAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgo+IEBAIC0xMTQwLDYgKzExNDEs MTY5IEBAIGludCBhcmNoX3NldF9pbmZvX2d1ZXN0KAo+ICAjdW5kZWYgYwo+ICB9Cj4gIAo+ICsv KiBDYWxsZWQgYnkgVkNQVU9QX2luaXRpYWxpc2UgZm9yIEhWTSBndWVzdHMuICovCj4gK3N0YXRp YyBpbnQgYXJjaF9zZXRfaW5mb19odm1fZ3Vlc3Qoc3RydWN0IHZjcHUgKnYsIHZjcHVfaHZtX2Nv bnRleHRfdCAqY3R4KQo+ICt7Cj4gKyAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciBzZWc7Cj4g Kwo+ICsjZGVmaW5lIGdldF9jb250ZXh0X3NlZyhjdHgsIHNlZywgZikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgKGN0eCktPm1vZGUgPT0gVkNQVV9IVk1f TU9ERV8xNkIgPyAoY3R4KS0+Y3B1X3JlZ3MueDg2XzE2LnNlZyMjXyMjZiA6ICAgXAo+ICsgICAg KGN0eCktPm1vZGUgPT0gVkNQVV9IVk1fTU9ERV8zMkIgPyAoY3R4KS0+Y3B1X3JlZ3MueDg2XzMy LnNlZyMjXyMjZiA6ICAgXAo+ICsgICAgKGN0eCktPm1vZGUgPT0gVkNQVV9IVk1fTU9ERV82NEIg PyAoY3R4KS0+Y3B1X3JlZ3MueDg2XzY0LnNlZyMjXyMjZiA6ICAgXAo+ICsgICAgKHsgcGFuaWMo IkludmFsaWQgdkNQVSBtb2RlICV1IHJlcXVlc3RlZFxuIiwgKGN0eCktPm1vZGUpOyAwOyB9KQoK cGFuaWMoKSBpcyBmYXIgdG9vIHNldmVyZS4gIGRvbWFpbl9jcmFzaCgpIHdvdWxkIGJlIGJldHRl ci4gd2l0aCBhbgplYXJseSBleGl0LgoKPiArCj4gKyNkZWZpbmUgZ2V0X2NvbnRleHRfZ3ByKGN0 eCwgZ3ByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAoY3R4KS0+bW9kZSA9PSBWQ1BVX0hWTV9NT0RFXzE2QiA/IChjdHgpLT5jcHVfcmVncy54ODZf MTYuZ3ByICAgIDogICAgICBcCj4gKyAgICAoY3R4KS0+bW9kZSA9PSBWQ1BVX0hWTV9NT0RFXzMy QiA/IChjdHgpLT5jcHVfcmVncy54ODZfMzIuZSMjZ3ByIDogICAgICBcCj4gKyAgICAoY3R4KS0+ bW9kZSA9PSBWQ1BVX0hWTV9NT0RFXzY0QiA/IChjdHgpLT5jcHVfcmVncy54ODZfNjQuciMjZ3By IDogICAgICBcCj4gKyAgICAoeyBwYW5pYygiSW52YWxpZCB2Q1BVIG1vZGUgJXUgcmVxdWVzdGVk XG4iLCAoY3R4KS0+bW9kZSk7IDA7IH0pCj4gKwo+ICsjZGVmaW5lIGdldF9jb250ZXh0X2ZpZWxk KGN0eCwgZmllbGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg ICAgKGN0eCktPm1vZGUgPT0gVkNQVV9IVk1fTU9ERV8xNkIgPyAoY3R4KS0+Y3B1X3JlZ3MueDg2 XzE2LmZpZWxkIDogICAgICAgXAo+ICsgICAgKGN0eCktPm1vZGUgPT0gVkNQVV9IVk1fTU9ERV8z MkIgPyAoY3R4KS0+Y3B1X3JlZ3MueDg2XzMyLmZpZWxkIDogICAgICAgXAo+ICsgICAgKGN0eCkt Pm1vZGUgPT0gVkNQVV9IVk1fTU9ERV82NEIgPyAoY3R4KS0+Y3B1X3JlZ3MueDg2XzY0LmZpZWxk IDogICAgICAgXAo+ICsgICAgKHsgcGFuaWMoIkludmFsaWQgdkNQVSBtb2RlICV1IHJlcXVlc3Rl ZFxuIiwgKGN0eCktPm1vZGUpOyAwOyB9KQo+ICsKPiArICAgIGlmICggY3R4LT5tb2RlICE9IFZD UFVfSFZNX01PREVfMTZCICYmIGN0eC0+bW9kZSAhPSBWQ1BVX0hWTV9NT0RFXzMyQiAmJgo+ICsg ICAgICAgICBjdHgtPm1vZGUgIT0gVkNQVV9IVk1fTU9ERV82NEIgKQo+ICsgICAgICAgIHJldHVy biAtRUlOVkFMOwoKRm9yIHJlYWRhYmlsaXR5IChhbmQgc3R5bGUpLCBJIHdvdWxkIHN1Z2dlc3Qg Zm9ybWF0dGluZyB0aGlzIGFzCgogICAgaWYgKCAhKChjdHgtPm1vZGUgPT0gVkNQVV9IVk1fTU9E RV8xNkIpIHx8CiAgICAgICAgICAgKGN0eC0+bW9kZSA9PSBWQ1BVX0hWTV9NT0RFXzMyQikgfHwK ICAgICAgICAgICAoY3R4LT5tb2RlID09IFZDUFVfSFZNX01PREVfNjRCKSkgKQogICAgICAgIHJl dHVybiAtRUlOVkFMOwoKPiArCj4gKyAgICBtZW1zZXQoJnNlZywgMCwgc2l6ZW9mKHNlZykpOwo+ ICsKPiArICAgIGlmICggIXBhZ2luZ19tb2RlX2hhcCh2LT5kb21haW4pICkKPiArICAgICAgICB2 LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX251bGwoKTsKPiArCj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yYXggPSBnZXRfY29udGV4dF9ncHIoY3R4LCBheCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yY3ggPSBnZXRfY29udGV4dF9ncHIoY3R4LCBjeCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yZHggPSBnZXRfY29udGV4dF9ncHIoY3R4LCBkeCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yYnggPSBnZXRfY29udGV4dF9ncHIoY3R4LCBieCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yc3AgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBzcCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yYnAgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBicCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yc2kgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBzaSk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yZGkgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBkaSk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yaXAgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBpcCk7Cj4gKyAgICB2LT5hcmNo LnVzZXJfcmVncy5yZmxhZ3MgPSBnZXRfY29udGV4dF9ncHIoY3R4LCBmbGFncyk7CgpBbGwgdGhl c2UgaGlkZGVuIGNvbmRpdGlvbmFscyBjYXVzZSB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgYSAy SwpmdW5jdGlvbiwgYSBsYXJnZSBxdWFudGl0eSBvZiB3aGljaCBhcmUgY29uZGl0aW9uYWwganVt cHMuCgpJIGRpZCBzb21lIGV4cGVyaW1lbnRhdGlvbiwgYXZhaWxhYmxlIGZyb20KZ2l0Oi8veGVu Yml0cy54ZW4ub3JnL3Blb3BsZS9hbmRyZXdjb29wL3hlbi5naXQgd2lwLWRtbGl0ZS12NS1yZWZh Y3RvcgoKQmxvYXQtby1tZXRlciBpbmRpY2F0ZXM6CgphZGQvcmVtb3ZlOiAwLzAgZ3Jvdy9zaHJp bms6IDAvMSB1cC9kb3duOiAwLy01NTkgKC01NTkpCmZ1bmN0aW9uICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKYXJjaF9zZXRfaW5mb19odm1f Z3Vlc3QgICAgICAgICAgICAgICAgICAgICAyMjA5ICAgIDE2NTAgICAgLTU1OQoKQW5kIGxvb2tp bmcgYXQgdGhlIGRpc2Fzc2VtYmx5LCB0aG9zZSAtNTU5IGFyZSBtb3N0bHkgY21wL2pYWApjb25z dHJ1Y3RzLCBhbmQgdGhlIGRlYWQgcGFuaWMoKSBjYWxscy4KClRoZSBjb2RlIGlzIG5vdyBsb25n ZXIsIGJ1dCBJIGRvbid0IHRoaW5rIGl0IGRldHJhY3RzIGZyb20gdGhlCnJlYWRhYmlsaXR5LCBh bmQgaXQgd2lsbCBjZXJ0YWlubHkgYmUgZmFzdGVyIHRvIGV4ZWN1dGUuCgpXaGF0IGRvIHlvdSB0 aGluaz8gIElmIG90aGVycyBhZ3JlZSwgeW91IGFyZSB3ZWxjb21lIHRvIGZvbGQgdGhlIHBhdGNo CmludG8geW91ciBzZXJpZXMuCgo+ICsKPiArICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3Jb MF0gPSBnZXRfY29udGV4dF9maWVsZChjdHgsIGNyMCk7Cj4gKyAgICBodm1fdXBkYXRlX2d1ZXN0 X2NyKHYsIDApOwo+ICsgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XSA9IGdldF9jb250 ZXh0X2ZpZWxkKGN0eCwgY3I0KTsKPiArICAgIGh2bV91cGRhdGVfZ3Vlc3RfY3IodiwgNCk7Cj4g Kwo+ICsgICAgc3dpdGNoICggY3R4LT5tb2RlICkKPiArICAgIHsKPiArICAgIGNhc2UgVkNQVV9I Vk1fTU9ERV8zMkI6Cj4gKyAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVyID0gY3R4 LT5jcHVfcmVncy54ODZfMzIuZWZlcjsKPiArICAgICAgICBodm1fdXBkYXRlX2d1ZXN0X2VmZXIo dik7Cj4gKyAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSA9IGN0eC0+Y3B1X3Jl Z3MueDg2XzMyLmNyMzsKPiArICAgICAgICBodm1fdXBkYXRlX2d1ZXN0X2NyKHYsIDMpOwo+ICsg ICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGNhc2UgVkNQVV9IVk1fTU9ERV82NEI6Cj4gKyAgICAg ICAgdi0+YXJjaC51c2VyX3JlZ3MucjggPSBjdHgtPmNwdV9yZWdzLng4Nl82NC5yODsKPiArICAg ICAgICB2LT5hcmNoLnVzZXJfcmVncy5yOSA9IGN0eC0+Y3B1X3JlZ3MueDg2XzY0LnI5Owo+ICsg ICAgICAgIHYtPmFyY2gudXNlcl9yZWdzLnIxMCA9IGN0eC0+Y3B1X3JlZ3MueDg2XzY0LnIxMDsK PiArICAgICAgICB2LT5hcmNoLnVzZXJfcmVncy5yMTEgPSBjdHgtPmNwdV9yZWdzLng4Nl82NC5y MTE7Cj4gKyAgICAgICAgdi0+YXJjaC51c2VyX3JlZ3MucjEyID0gY3R4LT5jcHVfcmVncy54ODZf NjQucjEyOwo+ICsgICAgICAgIHYtPmFyY2gudXNlcl9yZWdzLnIxMyA9IGN0eC0+Y3B1X3JlZ3Mu eDg2XzY0LnIxMzsKPiArICAgICAgICB2LT5hcmNoLnVzZXJfcmVncy5yMTQgPSBjdHgtPmNwdV9y ZWdzLng4Nl82NC5yMTQ7Cj4gKyAgICAgICAgdi0+YXJjaC51c2VyX3JlZ3MucjE1ID0gY3R4LT5j cHVfcmVncy54ODZfNjQucjE1Owo+ICsgICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfZWZl ciA9IGN0eC0+Y3B1X3JlZ3MueDg2XzY0LmVmZXI7Cj4gKyAgICAgICAgaHZtX3VwZGF0ZV9ndWVz dF9lZmVyKHYpOwo+ICsgICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbM10gPSBjdHgt PmNwdV9yZWdzLng4Nl82NC5jcjM7Cj4gKyAgICAgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2LCAz KTsKPiArICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIGh2bV9wYWdpbmdf ZW5hYmxlZCh2KSAmJiAhcGFnaW5nX21vZGVfaGFwKHYtPmRvbWFpbikgKQo+ICsgICAgewo+ICsg ICAgICAgIC8qIFNoYWRvdy1tb2RlIENSMyBjaGFuZ2UuIENoZWNrIFBEQlIgYW5kIHVwZGF0ZSBy ZWZjb3VudHMuICovCj4gKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdl X2Zyb21fZ2ZuKHYtPmRvbWFpbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg di0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSA+PiBQQUdFX1NISUZULAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBQMk1fQUxMT0MpOwo+ICsgICAgICAgIGlmICgg IXBhZ2UgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwg IkludmFsaWQgQ1IzXG4iKTsKClBsZWFzZSBwcmludCB0aGUgYmFkIGNyMywgcmF0aGVyIHRoYW4g anVzdCBzdGF0aW5nIHRoYXQgc29tZSB1bmtub3duCnZhbHVlIGlzIGludmFsaWQuCgo+ICsgICAg ICAgICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0g cGFnZXRhYmxlX2Zyb21fcGFnZShwYWdlKTsKPiArICAgIH0KPiArCj4gKyAgICBzZWcuYmFzZSAg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBjcywgYmFzZSk7Cj4gKyAgICBzZWcubGltaXQg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBjcywgbGltaXQpOwo+ICsgICAgc2VnLmF0dHIu Ynl0ZXMgID0gZ2V0X2NvbnRleHRfc2VnKGN0eCwgY3MsIGFyKTsKPiArICAgIGh2bV9zZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2NzLCAmc2VnKTsKPiArCj4gKyAgICBzZWcuYmFzZSAg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBkcywgYmFzZSk7Cj4gKyAgICBzZWcubGltaXQg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBkcywgbGltaXQpOwo+ICsgICAgc2VnLmF0dHIu Ynl0ZXMgID0gZ2V0X2NvbnRleHRfc2VnKGN0eCwgZHMsIGFyKTsKPiArICAgIGh2bV9zZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2RzLCAmc2VnKTsKPiArCj4gKyAgICBzZWcuYmFzZSAg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBzcywgYmFzZSk7Cj4gKyAgICBzZWcubGltaXQg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCBzcywgbGltaXQpOwo+ICsgICAgc2VnLmF0dHIu Ynl0ZXMgID0gZ2V0X2NvbnRleHRfc2VnKGN0eCwgc3MsIGFyKTsKPiArICAgIGh2bV9zZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3NzLCAmc2VnKTsKPiArCj4gKyAgICBzZWcuYmFzZSAg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCB0ciwgYmFzZSk7Cj4gKyAgICBzZWcubGltaXQg ICAgICAgPSBnZXRfY29udGV4dF9zZWcoY3R4LCB0ciwgbGltaXQpOwo+ICsgICAgc2VnLmF0dHIu Ynl0ZXMgID0gZ2V0X2NvbnRleHRfc2VnKGN0eCwgdHIsIGFyKTsKPiArICAgIGh2bV9zZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3RyLCAmc2VnKTsKPiArCj4gKyAgICAvKiBTeW5jIEFQ J3MgVFNDIHdpdGggQlNQJ3MuICovCj4gKyAgICB2LT5hcmNoLmh2bV92Y3B1LmNhY2hlX3RzY19v ZmZzZXQgPQo+ICsgICAgICAgIHYtPmRvbWFpbi0+dmNwdVswXS0+YXJjaC5odm1fdmNwdS5jYWNo ZV90c2Nfb2Zmc2V0Owo+ICsgICAgaHZtX2Z1bmNzLnNldF90c2Nfb2Zmc2V0KHYsIHYtPmFyY2gu aHZtX3ZjcHUuY2FjaGVfdHNjX29mZnNldCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5zeW5jX3RzYyk7Cj4gKwo+ICsgICAgdi0+YXJj aC5odm1fdmNwdS5tc3JfdHNjX2FkanVzdCA9IDA7Cj4gKwo+ICsgICAgcGFnaW5nX3VwZGF0ZV9w YWdpbmdfbW9kZXModik7Cj4gKwo+ICsgICAgdi0+aXNfaW5pdGlhbGlzZWQgPSAxOwo+ICsgICAg c2V0X2JpdChfVlBGX2Rvd24sICZ2LT5wYXVzZV9mbGFncyk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7 Cj4gKyN1bmRlZiBnZXRfY29udGV4dF9maWVsZAo+ICsjdW5kZWYgZ2V0X2NvbnRleHRfZ3ByCj4g KyN1bmRlZiBnZXRfY29udGV4dF9zZWcKPiArfQo+ICsKPiAraW50IGFyY2hfaW5pdGlhbGl6ZV92 Y3B1KHN0cnVjdCB2Y3B1ICp2LCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPiAr ewo+ICsgICAgc3RydWN0IHZjcHVfZ3Vlc3RfY29udGV4dCAqY3R4dDsKPiArICAgIHN0cnVjdCB2 Y3B1X2h2bV9jb250ZXh0IGh2bV9jdHg7CgpUaGVzZSB0d28gc2hvdWxkIHJlZHVjZSBzY29wZSBp bnRvIHRoZWlyIHJlc3BlY3RpdmUgaWYoKSBjb25kaXRpb25zLCB0bwphdm9pZCBhY2NpZGVudGFs IGNyb3NzLXVzZS4KCj4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwoK VGhpcyBzaG91bGQgY29tZSBmcm9tIHYtPmRvbWFpbiwgbm90IGN1cnJlbnQuCgpBcyBQViBndWVz dHMgcmVhZCBvdXQgb2YgdGhlIGFjdGl2ZSBwYWdldGFibGVzLCB0aGUgUFYgcGF0aCBzaG91bGQK YXNzZXJ0IHRoYXQgZCA9PSBjdXJyZW50LT5kb21haW4sIGJ1dCB0aGVyZSBpcyBubyBzdWNoIHJl cXVpcmVtZW50Cih3aGljaCBJIGNhbiBzcG90KSBvbiB0aGUgSFZNIHNpZGUuCgo+ICsgICAgaW50 IHJjOwo+ICsKPiArICAgIGlmICggaXNfaHZtX3ZjcHUodikgKQo+ICsgICAgewo+ICsgICAgICAg IGlmICggY29weV9mcm9tX2d1ZXN0KCZodm1fY3R4LCBhcmcsIDEpICkKPiArICAgICAgICAgICAg cmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsgICAgICAgIGRvbWFpbl9sb2NrKGQpOwo+ICsgICAgICAg IHJjID0gdi0+aXNfaW5pdGlhbGlzZWQgPyAtRUVYSVNUIDogYXJjaF9zZXRfaW5mb19odm1fZ3Vl c3QodiwgJmh2bV9jdHgpOwo+ICsgICAgICAgIGRvbWFpbl91bmxvY2soZCk7Cj4gKyAgICB9IGVs c2UgewoKU3R5bGUuCgo+ICsgICAgICAgIGlmICggKGN0eHQgPSBhbGxvY192Y3B1X2d1ZXN0X2Nv bnRleHQoKSkgPT0gTlVMTCApCj4gKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiAr ICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdChjdHh0LCBhcmcsIDEpICkKPiArICAgICAgICB7 Cj4gKyAgICAgICAgICAgIGZyZWVfdmNwdV9ndWVzdF9jb250ZXh0KGN0eHQpOwo+ICsgICAgICAg ICAgICByZXR1cm4gLUVGQVVMVDsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGRvbWFpbl9s b2NrKGQpOwo+ICsgICAgICAgIHJjID0gdi0+aXNfaW5pdGlhbGlzZWQgPyAtRUVYSVNUIDogYXJj aF9zZXRfaW5mb19ndWVzdCh2LCBjdHh0KTsKPiArICAgICAgICBkb21haW5fdW5sb2NrKGQpOwo+ ICsKPiArICAgICAgICBmcmVlX3ZjcHVfZ3Vlc3RfY29udGV4dChjdHh0KTsKPiArICAgIH0KPiAr Cj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gIGludCBhcmNoX3ZjcHVfcmVzZXQoc3RydWN0 IHZjcHUgKnYpCj4gIHsKPiAgICAgIGlmICggaXNfcHZfdmNwdSh2KSApCj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gaW5kZXgg MTY0MGI1OC4uODg1NmM3MiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IEBAIC00OTgwLDYgKzQ5ODAsMTAgQEAgc3Rh dGljIGxvbmcgaHZtX3ZjcHVfb3AoCj4gICAgICBjYXNlIFZDUFVPUF9zdG9wX3NpbmdsZXNob3Rf dGltZXI6Cj4gICAgICBjYXNlIFZDUFVPUF9yZWdpc3Rlcl92Y3B1X2luZm86Cj4gICAgICBjYXNl IFZDUFVPUF9yZWdpc3Rlcl92Y3B1X3RpbWVfbWVtb3J5X2FyZWE6Cj4gKyAgICBjYXNlIFZDUFVP UF9pbml0aWFsaXNlOgo+ICsgICAgY2FzZSBWQ1BVT1BfdXA6Cj4gKyAgICBjYXNlIFZDUFVPUF9k b3duOgo+ICsgICAgY2FzZSBWQ1BVT1BfaXNfdXA6Cj4gICAgICAgICAgcmMgPSBkb192Y3B1X29w KGNtZCwgdmNwdWlkLCBhcmcpOwo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgZGVmYXVsdDoKPiBA QCAtNTAzOCw2ICs1MDQyLDEwIEBAIHN0YXRpYyBsb25nIGh2bV92Y3B1X29wX2NvbXBhdDMyKAo+ ICAgICAgY2FzZSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyOgo+ICAgICAgY2FzZSBWQ1BV T1BfcmVnaXN0ZXJfdmNwdV9pbmZvOgo+ICAgICAgY2FzZSBWQ1BVT1BfcmVnaXN0ZXJfdmNwdV90 aW1lX21lbW9yeV9hcmVhOgo+ICsgICAgY2FzZSBWQ1BVT1BfaW5pdGlhbGlzZToKPiArICAgIGNh c2UgVkNQVU9QX3VwOgo+ICsgICAgY2FzZSBWQ1BVT1BfZG93bjoKPiArICAgIGNhc2UgVkNQVU9Q X2lzX3VwOgo+ICAgICAgICAgIHJjID0gY29tcGF0X3ZjcHVfb3AoY21kLCB2Y3B1aWQsIGFyZyk7 Cj4gICAgICAgICAgYnJlYWs7Cj4gICAgICBkZWZhdWx0Ogo+IGRpZmYgLS1naXQgYS94ZW4vY29t bW9uL2RvbWFpbi5jIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IGluZGV4IDFiOWZjZmMuLmY5N2U3 ZjQgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9kb21haW4uYwo+ICsrKyBiL3hlbi9jb21tb24v ZG9tYWluLmMKPiBAQCAtMTE3Myw3ICsxMTczLDYgQEAgbG9uZyBkb192Y3B1X29wKGludCBjbWQs IHVuc2lnbmVkIGludCB2Y3B1aWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+ ICB7Cj4gICAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwo+ICAgICAgc3Ry dWN0IHZjcHUgKnY7Cj4gLSAgICBzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICpjdHh0Owo+ICAg ICAgbG9uZyByYyA9IDA7Cj4gIAo+ICAgICAgaWYgKCB2Y3B1aWQgPj0gZC0+bWF4X3ZjcHVzIHx8 ICh2ID0gZC0+dmNwdVt2Y3B1aWRdKSA9PSBOVUxMICkKPiBAQCAtMTE4NSwyMCArMTE4NCw3IEBA IGxvbmcgZG9fdmNwdV9vcChpbnQgY21kLCB1bnNpZ25lZCBpbnQgdmNwdWlkLCBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKHZvaWQpIGFyZykKPiAgICAgICAgICBpZiAoIHYtPnZjcHVfaW5mbyA9PSAm ZHVtbXlfdmNwdV9pbmZvICkKPiAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0g ICAgICAgIGlmICggKGN0eHQgPSBhbGxvY192Y3B1X2d1ZXN0X2NvbnRleHQoKSkgPT0gTlVMTCAp Cj4gLSAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+IC0KPiAtICAgICAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdChjdHh0LCBhcmcsIDEpICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGZy ZWVfdmNwdV9ndWVzdF9jb250ZXh0KGN0eHQpOwo+IC0gICAgICAgICAgICByZXR1cm4gLUVGQVVM VDsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAgICAgIGRvbWFpbl9sb2NrKGQpOwo+IC0gICAgICAg IHJjID0gdi0+aXNfaW5pdGlhbGlzZWQgPyAtRUVYSVNUIDogYXJjaF9zZXRfaW5mb19ndWVzdCh2 LCBjdHh0KTsKPiAtICAgICAgICBkb21haW5fdW5sb2NrKGQpOwo+IC0KPiAtICAgICAgICBmcmVl X3ZjcHVfZ3Vlc3RfY29udGV4dChjdHh0KTsKPiArICAgICAgICByYyA9IGFyY2hfaW5pdGlhbGl6 ZV92Y3B1KHYsIGFyZyk7Cj4gIAo+ICAgICAgICAgIGlmICggcmMgPT0gLUVSRVNUQVJUICkKPiAg ICAgICAgICAgICAgcmMgPSBoeXBlcmNhbGxfY3JlYXRlX2NvbnRpbnVhdGlvbihfX0hZUEVSVklT T1JfdmNwdV9vcCwgIml1aCIsCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v aHZtX3ZjcHUuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX3ZjcHUuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZGI4NmVkZAo+IC0tLSAvZGV2L251bGwKPiAr KysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV92Y3B1LmgKClBsZWFzZSBhbHNvIHBhdGNo IHRoZSBwdWJsaWMvdmNwdS5oIGRvY3VtZW50YXRpb24gY29uY2VybmluZyBAZXh0cmFfYXJnLgoK fkFuZHJldwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK