From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v5 03/14] x86emul: abstract out XCRn accesses Date: Mon, 19 Mar 2018 13:56:04 +0000 Message-ID: <10ae17d6c48a4797bfc1c4946fc9ba84@AMSPEX02CL03.citrite.net> References: <5AAA7BAF02000078001B2242@prv-mh.provo.novell.com> <5AAA7D6902000078001B225C@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1exvGn-0004Kq-OE for xen-devel@lists.xenproject.org; Mon, 19 Mar 2018 13:56:13 +0000 In-Reply-To: <5AAA7D6902000078001B225C@prv-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Jan Beulich' , xen-devel Cc: Andrew Cooper , George Dunlap List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEphbiBCZXVsaWNoIFttYWlsdG86 SkJldWxpY2hAc3VzZS5jb21dCj4gU2VudDogMTUgTWFyY2ggMjAxOCAxMzowNAo+IFRvOiB4ZW4t ZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4KPiBDYzogQW5kcmV3IENvb3Bl ciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVsLkR1cnJh bnRAY2l0cml4LmNvbT47IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT4K PiBTdWJqZWN0OiBbUEFUQ0ggdjUgMDMvMTRdIHg4NmVtdWw6IGFic3RyYWN0IG91dCBYQ1JuIGFj Y2Vzc2VzCj4gCj4gVXNlIGhvb2tzLCBqdXN0IGxpa2UgZG9uZSBmb3Igb3RoZXIgc3BlY2lhbCBw dXJwb3NlIHJlZ2lzdGVycy4KPiAKPiBUaGlzIGluY2x1ZGVzIG1vdmluZyBYQ1IwIGNoZWNrcyBm cm9tIGh2bWVtdWxfZ2V0X2ZwdSgpIHRvIHRoZSBlbXVsYXRvcgo+IGl0c2VsZiBhcyB3ZWxsIGFz IGFkZGluZyBzdXBwb3J0IGZvciBYR0VUQlYgZW11bGF0aW9uLgo+IAo+IEZvciBub3cgZnV6emVy IHJlYWRzIHdpbGwgb2J0YWluIHRoZSByZWFsIHZhbHVlcyAobWludXMgdGhlIGZ1enppbmcgb2YK PiB0aGUgaG9vayBwb2ludGVyIGl0c2VsZikuCj4gCj4gU2lnbmVkLW9mZi1ieTogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPgoKaHZtL2VtdWxhdGUgcGFydHMuLi4KClJldmlld2VkLWJ5 OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgoKPiAtLS0KPiB2NTogTW92 ZSBpbmRleCB2YWxpZGF0aW9uIGludG8gaG9vayBmdW5jdGlvbnMuIEludHJvZHVjZQo+ICAgICB4 ODZlbXVsX3tyZWFkLHdyaXRlfV94Y3IoKS4KPiB2NDogSGF2ZSBodm1lbXVsX3JlYWRfeGNyKCkg cmFpc2UgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgcmV0dXJuaW5nCj4gICAgIFg4NkVNVUxfVU5I QU5ETEVBQkxFIGZvciBpbnZhbGlkIGluZGV4ZXMuIEludHJvZHVjZSB4Z2V0YnYoKSBhbmQgYWRk Cj4gICAgIHZvbGF0aWxlIHRvIHRoZSBhc20oKSBtb3ZlZCB0aGVyZS4gU3BsaXQgb3V0IF9YU1RB VEVfKiBtb3ZlbWVudC4KPiB2MjogUmUtYmFzZS4KPiAKPiAtLS0gYS90b29scy9mdXp6L3g4Nl9p bnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwo+ICsrKyBiL3Rvb2xzL2Z1enoveDg2X2lu c3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCj4gQEAgLTQ1OSw2ICs0NTksOCBAQCBzdGF0 aWMgaW50IGZ1enpfd3JpdGVfY3IoCj4gICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwo+ICB9Cj4g Cj4gKyNkZWZpbmUgZnV6el9yZWFkX3hjciBlbXVsX3Rlc3RfcmVhZF94Y3IKPiArCj4gIGVudW0g ewo+ICAgICAgTVNSSV9JQTMyX1NZU0VOVEVSX0NTLAo+ICAgICAgTVNSSV9JQTMyX1NZU0VOVEVS X0VTUCwKPiBAQCAtNTc3LDYgKzU3OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxh dGVfb3BzIGFsbF8KPiAgICAgIFNFVCh3cml0ZV9pbyksCj4gICAgICBTRVQocmVhZF9jciksCj4g ICAgICBTRVQod3JpdGVfY3IpLAo+ICsgICAgU0VUKHJlYWRfeGNyKSwKPiAgICAgIFNFVChyZWFk X21zciksCj4gICAgICBTRVQod3JpdGVfbXNyKSwKPiAgICAgIFNFVCh3YmludmQpLAo+IEBAIC02 ODUsNiArNjg4LDcgQEAgZW51bSB7Cj4gICAgICBIT09LX3dyaXRlX2NyLAo+ICAgICAgSE9PS19y ZWFkX2RyLAo+ICAgICAgSE9PS193cml0ZV9kciwKPiArICAgIEhPT0tfcmVhZF94Y3IsCj4gICAg ICBIT09LX3JlYWRfbXNyLAo+ICAgICAgSE9PS193cml0ZV9tc3IsCj4gICAgICBIT09LX3diaW52 ZCwKPiBAQCAtNzI5LDYgKzczMyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfaG9va3Moc3RydWN0 IHg4Nl9lbXUKPiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9pbyk7Cj4gICAgICBNQVlC RV9ESVNBQkxFX0hPT0socmVhZF9jcik7Cj4gICAgICBNQVlCRV9ESVNBQkxFX0hPT0sod3JpdGVf Y3IpOwo+ICsgICAgTUFZQkVfRElTQUJMRV9IT09LKHJlYWRfeGNyKTsKPiAgICAgIE1BWUJFX0RJ U0FCTEVfSE9PSyhyZWFkX21zcik7Cj4gICAgICBNQVlCRV9ESVNBQkxFX0hPT0sod3JpdGVfbXNy KTsKPiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3YmludmQpOwo+IC0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCj4gKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKPiBAQCAtMzcxLDYgKzM3MSw3IEBAIHN0YXRp YyBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGVtdWxvcHMgPQo+ICAgICAgLnJlYWRfc2VnbWVudCA9 IHJlYWRfc2VnbWVudCwKPiAgICAgIC5jcHVpZCAgICAgID0gZW11bF90ZXN0X2NwdWlkLAo+ICAg ICAgLnJlYWRfY3IgICAgPSBlbXVsX3Rlc3RfcmVhZF9jciwKPiArICAgIC5yZWFkX3hjciAgID0g ZW11bF90ZXN0X3JlYWRfeGNyLAo+ICAgICAgLnJlYWRfbXNyICAgPSByZWFkX21zciwKPiAgICAg IC5nZXRfZnB1ICAgID0gZW11bF90ZXN0X2dldF9mcHUsCj4gICAgICAucHV0X2ZwdSAgICA9IGVt dWxfdGVzdF9wdXRfZnB1LAo+IC0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODYtZW11 bGF0ZS5jCj4gKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKPiBA QCAtMTYzLDYgKzE2MywzNSBAQCBpbnQgZW11bF90ZXN0X3JlYWRfY3IoCj4gICAgICByZXR1cm4g WDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4gIH0KPiAKPiAraW50IGVtdWxfdGVzdF9yZWFkX3hjcigK PiArICAgIHVuc2lnbmVkIGludCByZWcsCj4gKyAgICB1aW50NjRfdCAqdmFsLAo+ICsgICAgc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCj4gK3sKPiArICAgIHVpbnQzMl90IGxvLCBoaTsK PiArCj4gKyAgICBBU1NFUlQoY3B1X2hhc194c2F2ZSk7Cj4gKwo+ICsgICAgc3dpdGNoICggcmVn ICkKPiArICAgIHsKPiArICAgIGNhc2UgMDoKPiArICAgICAgICBicmVhazsKPiArCj4gKyAgICBj YXNlIDE6Cj4gKyAgICAgICAgaWYgKCBjcHVfaGFzX3hnZXRidjEgKQo+ICsgICAgICAgICAgICBi cmVhazsKPiArICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KPiArICAgIGRlZmF1bHQ6Cj4gKyAg ICAgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKDEzIC8qICNHUCAqLywgMCwgY3R4dCk7Cj4gKyAg ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ICsgICAgfQo+ICsKPiArICAgIGFzbSAo ICJ4Z2V0YnYiIDogIj1hIiAobG8pLCAiPWQiIChoaSkgOiAiYyIgKHJlZykgKTsKPiArICAgICp2 YWwgPSBsbyB8ICgodWludDY0X3QpaGkgPDwgMzIpOwo+ICsKPiArICAgIHJldHVybiBYODZFTVVM X09LQVk7Cj4gK30KPiArCj4gIGludCBlbXVsX3Rlc3RfZ2V0X2ZwdSgKPiAgICAgIHZvaWQgKCpl eGNlcHRpb25fY2FsbGJhY2spKHZvaWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCj4gICAg ICB2b2lkICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLAo+IC0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci94ODYtZW11bGF0ZS5oCj4gKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4 Ni1lbXVsYXRlLmgKPiBAQCAtMTg2LDYgKzE4NiwxNiBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90 IHhnZXRidih1aW50MzJfdCB4Cj4gICAgICAocmVzLmIgJiAoMVUgPDwgNSkpICE9IDA7IFwKPiAg fSkKPiAKPiArI2RlZmluZSBjcHVfaGFzX3hnZXRidjEgKHsgXAo+ICsgICAgc3RydWN0IGNwdWlk X2xlYWYgcmVzOyBcCj4gKyAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywgTlVMTCk7IFwK PiArICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpICkgXAo+ICsgICAgICAgIHJlcy5hID0g MDsgXAo+ICsgICAgZWxzZSBcCj4gKyAgICAgICAgZW11bF90ZXN0X2NwdWlkKDB4ZCwgMSwgJnJl cywgTlVMTCk7IFwKPiArICAgIChyZXMuYSAmICgxVSA8PCAyKSkgIT0gMDsgXAo+ICt9KQo+ICsK PiAgI2RlZmluZSBjcHVfaGFzX2JtaTEgKHsgXAo+ICAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVz OyBcCj4gICAgICBlbXVsX3Rlc3RfY3B1aWQoNywgMCwgJnJlcywgTlVMTCk7IFwKPiBAQCAtMjQ3 LDYgKzI1NywxMSBAQCBpbnQgZW11bF90ZXN0X3JlYWRfY3IoCj4gICAgICB1bnNpZ25lZCBsb25n ICp2YWwsCj4gICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7Cj4gCj4gK2ludCBl bXVsX3Rlc3RfcmVhZF94Y3IoCj4gKyAgICB1bnNpZ25lZCBpbnQgcmVnLAo+ICsgICAgdWludDY0 X3QgKnZhbCwKPiArICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsKPiArCj4gIGlu dCBlbXVsX3Rlc3RfZ2V0X2ZwdSgKPiAgICAgIHZvaWQgKCpleGNlcHRpb25fY2FsbGJhY2spKHZv aWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCj4gICAgICB2b2lkICpleGNlcHRpb25fY2Fs bGJhY2tfYXJnLAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBAQCAtMTgyNiw2ICsxODI2LDI5IEBAIHN0YXRpYyBp bnQgaHZtZW11bF93cml0ZV9jcigKPiAgICAgIHJldHVybiByYzsKPiAgfQo+IAo+ICtzdGF0aWMg aW50IGh2bWVtdWxfcmVhZF94Y3IoCj4gKyAgICB1bnNpZ25lZCBpbnQgcmVnLAo+ICsgICAgdWlu dDY0X3QgKnZhbCwKPiArICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQo+ICt7Cj4g KyAgICBpbnQgcmMgPSB4ODZlbXVsX3JlYWRfeGNyKHJlZywgdmFsLCBjdHh0KTsKPiArCj4gKyAg ICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSApCj4gKyAgICAgICAgSFZNVFJBQ0VfTE9OR18yRChY Q1JfUkVBRCwgcmVnLCBUUkNfUEFSX0xPTkcoKnZhbCkpOwo+ICsKPiArICAgIHJldHVybiByYzsK PiArfQo+ICsKPiArc3RhdGljIGludCBodm1lbXVsX3dyaXRlX3hjcigKPiArICAgIHVuc2lnbmVk IGludCByZWcsCj4gKyAgICB1aW50NjRfdCB2YWwsCj4gKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKPiArewo+ICsgICAgSFZNVFJBQ0VfTE9OR18yRChYQ1JfV1JJVEUsIHJlZywg VFJDX1BBUl9MT05HKHZhbCkpOwo+ICsKPiArICAgIHJldHVybiB4ODZlbXVsX3dyaXRlX3hjcihy ZWcsIHZhbCwgY3R4dCk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaHZtZW11bF9yZWFkX21zcigK PiAgICAgIHVuc2lnbmVkIGludCByZWcsCj4gICAgICB1aW50NjRfdCAqdmFsLAo+IEBAIC0xODc0 LDIyICsxODk3LDYgQEAgc3RhdGljIGludCBodm1lbXVsX2dldF9mcHUoCj4gIHsKPiAgICAgIHN0 cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKPiAKPiAtICAgIHN3aXRjaCAoIHR5cGUgKQo+IC0g ICAgewo+IC0gICAgY2FzZSBYODZFTVVMX0ZQVV9mcHU6Cj4gLSAgICBjYXNlIFg4NkVNVUxfRlBV X3dhaXQ6Cj4gLSAgICBjYXNlIFg4NkVNVUxfRlBVX21teDoKPiAtICAgIGNhc2UgWDg2RU1VTF9G UFVfeG1tOgo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBYODZFTVVMX0ZQVV95bW06Cj4g LSAgICAgICAgaWYgKCAhKGN1cnItPmFyY2gueGNyMCAmIFg4Nl9YQ1IwX1NTRSkgfHwKPiAtICAg ICAgICAgICAgICEoY3Vyci0+YXJjaC54Y3IwICYgWDg2X1hDUjBfWU1NKSApCj4gLSAgICAgICAg ICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPiAtICAgICAgICBicmVhazsKPiAtICAg IGRlZmF1bHQ6Cj4gLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwo+IC0gICAg fQo+IC0KPiAgICAgIGlmICggIWN1cnItPmZwdV9kaXJ0aWVkICkKPiAgICAgICAgICBodm1fZnVu Y3MuZnB1X2RpcnR5X2ludGVyY2VwdCgpOwo+ICAgICAgZWxzZSBpZiAoIHR5cGUgPT0gWDg2RU1V TF9GUFVfZnB1ICkKPiBAQCAtMjA3Myw2ICsyMDgwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4 ODZfZW11bGF0ZV9vcHMgaHZtXwo+ICAgICAgLndyaXRlX2lvICAgICAgPSBodm1lbXVsX3dyaXRl X2lvLAo+ICAgICAgLnJlYWRfY3IgICAgICAgPSBodm1lbXVsX3JlYWRfY3IsCj4gICAgICAud3Jp dGVfY3IgICAgICA9IGh2bWVtdWxfd3JpdGVfY3IsCj4gKyAgICAucmVhZF94Y3IgICAgICA9IGh2 bWVtdWxfcmVhZF94Y3IsCj4gKyAgICAud3JpdGVfeGNyICAgICA9IGh2bWVtdWxfd3JpdGVfeGNy LAo+ICAgICAgLnJlYWRfbXNyICAgICAgPSBodm1lbXVsX3JlYWRfbXNyLAo+ICAgICAgLndyaXRl X21zciAgICAgPSBodm1lbXVsX3dyaXRlX21zciwKPiAgICAgIC53YmludmQgICAgICAgID0gaHZt ZW11bF93YmludmQsCj4gQEAgLTIwOTgsNiArMjEwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg eDg2X2VtdWxhdGVfb3BzIGh2bV8KPiAgICAgIC53cml0ZV9pbyAgICAgID0gaHZtZW11bF93cml0 ZV9pb19kaXNjYXJkLAo+ICAgICAgLnJlYWRfY3IgICAgICAgPSBodm1lbXVsX3JlYWRfY3IsCj4g ICAgICAud3JpdGVfY3IgICAgICA9IGh2bWVtdWxfd3JpdGVfY3IsCj4gKyAgICAucmVhZF94Y3Ig ICAgICA9IGh2bWVtdWxfcmVhZF94Y3IsCj4gKyAgICAud3JpdGVfeGNyICAgICA9IGh2bWVtdWxf d3JpdGVfeGNyLAo+ICAgICAgLnJlYWRfbXNyICAgICAgPSBodm1lbXVsX3JlYWRfbXNyLAo+ICAg ICAgLndyaXRlX21zciAgICAgPSBodm1lbXVsX3dyaXRlX21zcl9kaXNjYXJkLAo+ICAgICAgLndi aW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZF9kaXNjYXJkLAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9wdi9lbXVsLXByaXYtb3AuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3Au Ywo+IEBAIC0xMzE3LDYgKzEzMTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRl X29wcyBwcml2Cj4gICAgICAud3JpdGVfY3IgICAgICAgICAgICA9IHdyaXRlX2NyLAo+ICAgICAg LnJlYWRfZHIgICAgICAgICAgICAgPSByZWFkX2RyLAo+ICAgICAgLndyaXRlX2RyICAgICAgICAg ICAgPSB3cml0ZV9kciwKPiArICAgIC53cml0ZV94Y3IgICAgICAgICAgID0geDg2ZW11bF93cml0 ZV94Y3IsCj4gICAgICAucmVhZF9tc3IgICAgICAgICAgICA9IHJlYWRfbXNyLAo+ICAgICAgLndy aXRlX21zciAgICAgICAgICAgPSB3cml0ZV9tc3IsCj4gICAgICAuY3B1aWQgICAgICAgICAgICAg ICA9IHB2X2VtdWxfY3B1aWQsCj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+ IEBAIC0xMTE0LDEwICsxMTE0LDMwIEBAIHN0YXRpYyBpbnQgX2dldF9mcHUoCj4gICAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKPiAgICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgKm9wcykKPiAgewo+ICsgICAgdWludDY0X3QgeGNyMDsKPiAgICAgIGludCByYzsKPiAK PiAgICAgIGZhaWxfaWYoIW9wcy0+Z2V0X2ZwdSk7Cj4gICAgICBBU1NFUlQodHlwZSAhPSBYODZF TVVMX0ZQVV9ub25lKTsKPiArCj4gKyAgICBpZiAoIHR5cGUgPCBYODZFTVVMX0ZQVV95bW0gfHwg IW9wcy0+cmVhZF94Y3IgfHwKPiArICAgICAgICAgb3BzLT5yZWFkX3hjcigwLCAmeGNyMCwgY3R4 dCkgIT0gWDg2RU1VTF9PS0FZICkKPiArICAgIHsKPiArICAgICAgICBBU1NFUlQoIWN0eHQtPmV2 ZW50X3BlbmRpbmcpOwo+ICsgICAgICAgIHhjcjAgPSAwOwo+ICsgICAgfQo+ICsKPiArICAgIHN3 aXRjaCAoIHR5cGUgKQo+ICsgICAgewo+ICsgICAgY2FzZSBYODZFTVVMX0ZQVV95bW06Cj4gKyAg ICAgICAgaWYgKCAhKHhjcjAgJiBYODZfWENSMF9TU0UpIHx8ICEoeGNyMCAmIFg4Nl9YQ1IwX1lN TSkgKQo+ICsgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4gKyAgICAg ICAgYnJlYWs7Cj4gKwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICBicmVhazsKPiArICAgIH0K PiArCj4gICAgICByYyA9IG9wcy0+Z2V0X2ZwdShmcHVfaGFuZGxlX2V4Y2VwdGlvbiwgZmljLCB0 eXBlLCBjdHh0KTsKPiAKPiAgICAgIGlmICggcmMgPT0gWDg2RU1VTF9PS0FZICkKPiBAQCAtNTAw NiwxOCArNTAyNiwzMSBAQCB4ODZfZW11bGF0ZSgKPiAgICAgICAgICAgICAgICAgIF9yZWdzLmVm bGFncyB8PSBYODZfRUZMQUdTX0FDOwo+ICAgICAgICAgICAgICBicmVhazsKPiAKPiAtI2lmZGVm IF9fWEVOX18KPiArICAgICAgICBjYXNlIDB4ZDA6IC8qIHhnZXRidiAqLwo+ICsgICAgICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnBmeCwgRVhDX1VEKTsKPiArICAgICAgICAgICAg aWYgKCAhb3BzLT5yZWFkX2NyIHx8ICFvcHMtPnJlYWRfeGNyIHx8Cj4gKyAgICAgICAgICAgICAg ICAgb3BzLT5yZWFkX2NyKDQsICZjcjQsIGN0eHQpICE9IFg4NkVNVUxfT0tBWSApCj4gKyAgICAg ICAgICAgICAgICBjcjQgPSAwOwo+ICsgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYo IShjcjQgJiBYODZfQ1I0X09TWFNBVkUpLCBFWENfVUQpOwo+ICsgICAgICAgICAgICByYyA9IG9w cy0+cmVhZF94Y3IoX3JlZ3MuZWN4LCAmbXNyX3ZhbCwgY3R4dCk7Cj4gKyAgICAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZICkKPiArICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKPiAr ICAgICAgICAgICAgX3JlZ3MucihheCkgPSAodWludDMyX3QpbXNyX3ZhbDsKPiArICAgICAgICAg ICAgX3JlZ3MucihkeCkgPSBtc3JfdmFsID4+IDMyOwo+ICsgICAgICAgICAgICBicmVhazsKPiAr Cj4gICAgICAgICAgY2FzZSAweGQxOiAvKiB4c2V0YnYgKi8KPiAgICAgICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVYQ19VRCk7Cj4gLSAgICAgICAgICAgIGlmICggIW9w cy0+cmVhZF9jciB8fCBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZ ICkKPiArICAgICAgICAgICAgaWYgKCAhb3BzLT5yZWFkX2NyIHx8ICFvcHMtPndyaXRlX3hjciB8 fAo+ICsgICAgICAgICAgICAgICAgIG9wcy0+cmVhZF9jcig0LCAmY3I0LCBjdHh0KSAhPSBYODZF TVVMX09LQVkgKQo+ICAgICAgICAgICAgICAgICAgY3I0ID0gMDsKPiAgICAgICAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NSNF9PU1hTQVZFKSwgRVhDX1VEKTsKPiAt ICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3JpbmcwKCkgfHwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV94c2V0YnYoX3JlZ3MuZWN4LAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVncy5l YXggfCAoX3JlZ3MucmR4IDw8IDMyKSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFWENfR1AsIDApOwo+ICsgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIW1v ZGVfcmluZzAoKSwgRVhDX0dQLCAwKTsKPiArICAgICAgICAgICAgcmMgPSBvcHMtPndyaXRlX3hj cihfcmVncy5lY3gsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlZ3MuZWF4 IHwgKCh1aW50NjRfdClfcmVncy5lZHggPDwgMzIpLCBjdHh0KTsKPiArICAgICAgICAgICAgaWYg KCByYyAhPSBYODZFTVVMX09LQVkgKQo+ICsgICAgICAgICAgICAgICAgZ290byBkb25lOwo+ICAg ICAgICAgICAgICBicmVhazsKPiAtI2VuZGlmCj4gCj4gICAgICAgICAgY2FzZSAweGQ0OiAvKiB2 bWZ1bmMgKi8KPiAgICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVY Q19VRCk7Cj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiAr KysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+IEBAIC0zOTgsNiAr Mzk4LDI0IEBAIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKPiAgICAgICAgICBzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCk7Cj4gCj4gICAgICAvKgo+ICsgICAgICogcmVhZF94Y3I6IFJlYWQg ZnJvbSBleHRlbmRlZCBjb250cm9sIHJlZ2lzdGVyLgo+ICsgICAgICogIEByZWc6ICAgW0lOIF0g UmVnaXN0ZXIgdG8gcmVhZC4KPiArICAgICAqLwo+ICsgICAgaW50ICgqcmVhZF94Y3IpKAo+ICsg ICAgICAgIHVuc2lnbmVkIGludCByZWcsCj4gKyAgICAgICAgdWludDY0X3QgKnZhbCwKPiArICAg ICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7Cj4gKwo+ICsgICAgLyoKPiArICAg ICAqIHdyaXRlX3hjcjogV3JpdGUgdG8gZXh0ZW5kZWQgY29udHJvbCByZWdpc3Rlci4KPiArICAg ICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHdyaXRlLgo+ICsgICAgICovCj4gKyAgICBp bnQgKCp3cml0ZV94Y3IpKAo+ICsgICAgICAgIHVuc2lnbmVkIGludCByZWcsCj4gKyAgICAgICAg dWludDY0X3QgdmFsLAo+ICsgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsK PiArCj4gKyAgICAvKgo+ICAgICAgICogcmVhZF9tc3I6IFJlYWQgZnJvbSBtb2RlbC1zcGVjaWZp YyByZWdpc3Rlci4KPiAgICAgICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHJlYWQuCj4g ICAgICAgKi8KPiBAQCAtNjgzLDYgKzcwMSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2Vt dWxhdGVfZnJlZV9zdGF0Cj4gIHZvaWQgeDg2X2VtdWxhdGVfZnJlZV9zdGF0ZShzdHJ1Y3QgeDg2 X2VtdWxhdGVfc3RhdGUgKnN0YXRlKTsKPiAgI2VuZGlmCj4gCj4gK2ludCB4ODZlbXVsX3JlYWRf eGNyKHVuc2lnbmVkIGludCByZWcsIHVpbnQ2NF90ICp2YWwsCj4gKyAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsKPiAraW50IHg4NmVtdWxfd3JpdGVf eGNyKHVuc2lnbmVkIGludCByZWcsIHVpbnQ2NF90IHZhbCwKPiArICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsKPiArCj4gICNlbmRpZgo+IAo+ICBz dGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlLmMKPiBA QCAtNDIsMyArNDIsNTAgQEAKPiAgfSkKPiAKPiAgI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMiCj4gKwo+ICtpbnQgeDg2ZW11bF9yZWFkX3hjcih1bnNpZ25lZCBpbnQgcmVnLCB1 aW50NjRfdCAqdmFsLAo+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKPiArewo+ICsgICAgc3dpdGNoICggcmVnICkKPiArICAgIHsKPiArICAgIGNh c2UgMDoKPiArICAgICAgICAqdmFsID0gY3VycmVudC0+YXJjaC54Y3IwOwo+ICsgICAgICAgIHJl dHVybiBYODZFTVVMX09LQVk7Cj4gKwo+ICsgICAgY2FzZSAxOgo+ICsgICAgICAgIGlmICggY3B1 X2hhc194Z2V0YnYxICYmIGN1cnJlbnQtPmRvbWFpbi0+YXJjaC5jcHVpZC0+eHN0YXRlLnhnZXRi djEKPiApCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAq Lwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICB4ODZfZW11bF9od19leGNlcHRpb24oVFJBUF9n cF9mYXVsdCwgMCwgY3R4dCk7Cj4gKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ ICsgICAgfQo+ICsKPiArICAgICp2YWwgPSB4Z2V0YnYocmVnKTsKPiArCj4gKyAgICByZXR1cm4g WDg2RU1VTF9PS0FZOwo+ICt9Cj4gKwo+ICtpbnQgeDg2ZW11bF93cml0ZV94Y3IodW5zaWduZWQg aW50IHJlZywgdWludDY0X3QgdmFsLAo+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHg4 Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCj4gK3sKPiArICAgIHN3aXRjaCAoIHJlZyApCj4gKyAgICB7 Cj4gKyAgICBjYXNlIDA6Cj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgY2FzZSAxOgo+ICsg ICAgICAgIGlmICggY3B1X2hhc194Z2V0YnYxICYmIGN1cnJlbnQtPmRvbWFpbi0+YXJjaC5jcHVp ZC0+eHN0YXRlLnhnZXRidjEKPiApCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIC8q IGZhbGwgdGhyb3VnaCAqLwo+ICsgICAgZGVmYXVsdDoKPiArICAgIGdwX2ZhdWx0Ogo+ICsgICAg ICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKPiArICAg ICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCB1 bmxpa2VseShoYW5kbGVfeHNldGJ2KHJlZywgdmFsKSAhPSAwKSApCj4gKyAgICAgICAgZ290byBn cF9mYXVsdDsKPiArCj4gKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwo+ICt9Cj4gLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vdHJhY2UuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL3RyYWNlLmgKPiBAQCAtMzMsNiArMzMsOCBAQAo+ICAjZGVmaW5lIERPX1RSQ19IVk1fQ1Jf V1JJVEU2NCAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCj4gICNkZWZpbmUgRE9fVFJDX0hWTV9EUl9S RUFEICAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKPiAgI2RlZmluZSBET19UUkNfSFZNX0RSX1dS SVRFICAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwo+ICsjZGVmaW5lIERPX1RSQ19IVk1fWENSX1JF QUQ2NCAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCj4gKyNkZWZpbmUgRE9fVFJDX0hWTV9YQ1JfV1JJ VEU2NCBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKPiAgI2RlZmluZSBET19UUkNfSFZNX01TUl9SRUFE ICAgIERFRkFVTFRfSFZNX1JFR0FDQ0VTUwo+ICAjZGVmaW5lIERPX1RSQ19IVk1fTVNSX1dSSVRF ICAgREVGQVVMVF9IVk1fUkVHQUNDRVNTCj4gICNkZWZpbmUgRE9fVFJDX0hWTV9SRFRTQyAgICAg ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0 ZS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94c3RhdGUuaAo+IEBAIC0xMDksNiArMTA5 LDE3IEBAIGludCB4c3RhdGVfYWxsb2Nfc2F2ZV9hcmVhKHN0cnVjdCB2Y3B1ICoKPiAgdm9pZCB4 c3RhdGVfaW5pdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwo+ICB1bnNpZ25lZCBpbnQgeHN0YXRl X2N0eHRfc2l6ZSh1NjQgeGNyMCk7Cj4gCj4gK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgeGdldGJ2 KHVuc2lnbmVkIGludCBpbmRleCkKPiArewo+ICsgICAgdWludDMyX3QgbG8sIGhpOwo+ICsKPiAr ICAgIEFTU0VSVChpbmRleCk7IC8qIGdldF94Y3IwKCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4g Ki8KPiArICAgIGFzbSB2b2xhdGlsZSAoICIuYnl0ZSAweDBmLDB4MDEsMHhkMCIgLyogeGdldGJ2 ICovCj4gKyAgICAgICAgICAgICAgICAgICA6ICI9YSIgKGxvKSwgIj1kIiAoaGkpIDogImMiIChp bmRleCkgKTsKPiArCj4gKyAgICByZXR1cm4gbG8gfCAoKHVpbnQ2NF90KWhpIDw8IDMyKTsKPiAr fQo+ICsKPiAgc3RhdGljIGlubGluZSBib29sIHhzdGF0ZV9hbGwoY29uc3Qgc3RydWN0IHZjcHUg KnYpCj4gIHsKPiAgICAgIC8qCj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3RyYWNlLmgKPiAr KysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvdHJhY2UuaAo+IEBAIC0yMzUsNiArMjM1LDggQEAKPiAg I2RlZmluZSBUUkNfSFZNX1RSQVAgICAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjMp Cj4gICNkZWZpbmUgVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw eDI0KQo+ICAjZGVmaW5lIFRSQ19IVk1fVkxBUElDICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVS ICsgMHgyNSkKPiArI2RlZmluZSBUUkNfSFZNX1hDUl9SRUFENjQgICAgICAoVFJDX0hWTV9IQU5E TEVSICsgVFJDXzY0X0ZMQUcgKwo+IDB4MjYpCj4gKyNkZWZpbmUgVFJDX0hWTV9YQ1JfV1JJVEU2 NCAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHCj4gKyAweDI3KQo+IAo+ICAjZGVm aW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRFICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikKPiAg I2RlZmluZSBUUkNfSFZNX0lPTUVNX1dSSVRFICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMTcp Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==