From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [v2 16/16] xen/arm: traps: Merge do_trap_instr_abort_guest and do_trap_data_abort_guest Date: Tue, 12 Dec 2017 12:11:15 -0800 (PST) Message-ID: References: <20171212190212.5535-1-julien.grall@linaro.org> <20171212190212.5535-17-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171212190212.5535-17-julien.grall@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: sstabellini@kernel.org, andre.przywara@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAxMiBEZWMgMjAxNywgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IFRoZSB0d28gaGVscGVy cyBkb190cmFwX2luc3RyX2Fib3J0X2d1ZXN0IGFuZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3QK PiBhcmUgdXNlZCB0cmFwIHN0YWdlLTIgYWJvcnQuIFdoaWxlIHRoZSBmb3JtZXIgaXMgb25seSBo YW5kbGluZyBwcmVmZXRjaAo+IGFib3J0IGFuZCB0aGUgbGF0dGVyIGRhdGEgYWJvcnQsIHRoZXkg YXJlIHZlcnkgc2ltaWxhcmx5IGFuZCBkb2VzIG5vdAo+IHdhcnJhbnQgdG8gaGF2ZSBzZXBhcmF0 ZSBoZWxwZXJzLgo+IAo+IEZvciBpbnN0YW5jZSwgbWVyZ2luZyB0aGUgYm90aCB3aWxsIG1ha2Ug ZWFzaWVyIHRvIG1haW50YWluIHN0YWdlLTIgYWJvcnQKPiBoYW5kbGluZy4gU28gY29uc29saWRh dGUgdGhlIHR3byBoZWxwZXJzIGluIGEgbmV3IGhlbHBlcgo+IGRvX3RyYXBfc3RhZ2UyX2Fib3J0 Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGxpbmFyby5v cmc+CgpSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPgoKCj4gLS0tCj4gICAgIENoYW5nZXMgaW4gdjIKPiAgICAgICAgIC0gRml4IHRoZSB3YXkg dG8gY29tcHV0ZSBucGZlYy53cml0ZV9hY2Nlc3MKPiAtLS0KPiAgeGVuL2FyY2gvYXJtL3RyYXBz LmMgfCAxMzMgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJh cHMuYwo+IGluZGV4IDA4MjM5NmMyNmQuLjAxM2MxNjAwZWMgMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gvYXJtL3RyYXBzLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+IEBAIC0xODYxLDc5 ICsxODYxLDYgQEAgc3RhdGljIGlubGluZSBib29sIGhwZmFyX2lzX3ZhbGlkKGJvb2wgczFwdHcs IHVpbnQ4X3QgZnNjKQo+ICAgICAgcmV0dXJuIHMxcHR3IHx8IChmc2MgPT0gRlNDX0ZMVF9UUkFO UyAmJiAhY2hlY2tfd29ya2Fyb3VuZF84MzQyMjAoKSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IGRvX3RyYXBfaW5zdHJfYWJvcnRfZ3Vlc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gaHNyIGhz cikKPiAtewo+IC0gICAgaW50IHJjOwo+IC0gICAgcmVnaXN0ZXJfdCBndmE7Cj4gLSAgICB1aW50 OF90IGZzYyA9IGhzci5pYWJ0Lmlmc2MgJiB+RlNDX0xMX01BU0s7Cj4gLSAgICBwYWRkcl90IGdw YTsKPiAtICAgIG1mbl90IG1mbjsKPiAtCj4gLSAgICBndmEgPSBnZXRfaGZhcihmYWxzZSAvKiBp c19kYXRhICovKTsKPiAtCj4gLSAgICAvKgo+IC0gICAgICogSWYgdGhpcyBiaXQgaGFzIGJlZW4g c2V0LCBpdCBtZWFucyB0aGF0IHRoaXMgaW5zdHJ1Y3Rpb24gYWJvcnQgaXMgY2F1c2VkCj4gLSAg ICAgKiBieSBhIGd1ZXN0IGV4dGVybmFsIGFib3J0LiBXZSBjYW4gaGFuZGxlIHRoaXMgaW5zdHJ1 Y3Rpb24gYWJvcnQgYXMgZ3Vlc3QKPiAtICAgICAqIFNFcnJvci4KPiAtICAgICAqLwo+IC0gICAg aWYgKCBoc3IuaWFidC5lYXQgKQo+IC0gICAgICAgIHJldHVybiBfX2RvX3RyYXBfc2Vycm9yKHJl Z3MsIHRydWUpOwo+IC0KPiAtCj4gLSAgICBpZiAoIGhwZmFyX2lzX3ZhbGlkKGhzci5pYWJ0LnMx cHR3LCBmc2MpICkKPiAtICAgICAgICBncGEgPSBnZXRfZmF1bHRpbmdfaXBhKGd2YSk7Cj4gLSAg ICBlbHNlCj4gLSAgICB7Cj4gLSAgICAgICAgLyoKPiAtICAgICAgICAgKiBGbHVzaCB0aGUgVExC IHRvIG1ha2Ugc3VyZSB0aGUgRFRMQiBpcyBjbGVhciBiZWZvcmUKPiAtICAgICAgICAgKiBkb2lu ZyBHVkEtPklQQSB0cmFuc2xhdGlvbi4gSWYgd2UgZ290IGhlcmUgYmVjYXVzZSBvZgo+IC0gICAg ICAgICAqIGFuIGVudHJ5IG9ubHkgcHJlc2VudCBpbiB0aGUgSVRMQiwgdGhpcyB0cmFuc2xhdGlv biBtYXkKPiAtICAgICAgICAgKiBzdGlsbCBiZSBpbmFjY3VyYXRlLgo+IC0gICAgICAgICAqLwo+ IC0gICAgICAgIGZsdXNoX3RsYl9sb2NhbCgpOwo+IC0KPiAtICAgICAgICAvKgo+IC0gICAgICAg ICAqIFdlIG1heSBub3QgYmUgYWJsZSB0byB0cmFuc2xhdGUgYmVjYXVzZSBzb21lb25lIGlzCj4g LSAgICAgICAgICogcGxheWluZyB3aXRoIHRoZSBTdGFnZS0yIHBhZ2UgdGFibGUgb2YgdGhlIGRv bWFpbi4KPiAtICAgICAgICAgKiBSZXR1cm4gdG8gdGhlIGd1ZXN0Lgo+IC0gICAgICAgICAqLwo+ IC0gICAgICAgIHJjID0gZ3ZhX3RvX2lwYShndmEsICZncGEsIEdWMk1fUkVBRCk7Cj4gLSAgICAg ICAgaWYgKCByYyA9PSAtRUZBVUxUICkKPiAtICAgICAgICAgICAgcmV0dXJuOyAvKiBUcnkgYWdh aW4gKi8KPiAtICAgIH0KPiAtCj4gLSAgICBzd2l0Y2ggKCBmc2MgKQo+IC0gICAgewo+IC0gICAg Y2FzZSBGU0NfRkxUX1BFUk06Cj4gLSAgICB7Cj4gLSAgICAgICAgY29uc3Qgc3RydWN0IG5wZmVj IG5wZmVjID0gewo+IC0gICAgICAgICAgICAuaW5zbl9mZXRjaCA9IDEsCj4gLSAgICAgICAgICAg IC5nbGFfdmFsaWQgPSAxLAo+IC0gICAgICAgICAgICAua2luZCA9IGhzci5pYWJ0LnMxcHR3ID8g bnBmZWNfa2luZF9pbl9ncHQgOiBucGZlY19raW5kX3dpdGhfZ2xhCj4gLSAgICAgICAgfTsKPiAt Cj4gLSAgICAgICAgcDJtX21lbV9hY2Nlc3NfY2hlY2soZ3BhLCBndmEsIG5wZmVjKTsKPiAtICAg ICAgICAvKgo+IC0gICAgICAgICAqIFRoZSBvbmx5IHdheSB0byBnZXQgaGVyZSByaWdodCBub3cg aXMgYmVjYXVzZSBvZiBtZW1fYWNjZXNzLAo+IC0gICAgICAgICAqIHRodXMgcmVpbmplY3Rpbmcg dGhlIGV4Y2VwdGlvbiB0byB0aGUgZ3Vlc3QgaXMgbmV2ZXIgcmVxdWlyZWQuCj4gLSAgICAgICAg ICovCj4gLSAgICAgICAgcmV0dXJuOwo+IC0gICAgfQo+IC0gICAgY2FzZSBGU0NfRkxUX1RSQU5T Ogo+IC0gICAgICAgIC8qCj4gLSAgICAgICAgICogVGhlIFBUIHdhbGsgbWF5IGhhdmUgZmFpbGVk IGJlY2F1c2Ugc29tZW9uZSB3YXMgcGxheWluZwo+IC0gICAgICAgICAqIHdpdGggdGhlIFN0YWdl LTIgcGFnZSB0YWJsZS4gV2FsayB0aGUgU3RhZ2UtMiBQVCB0byBjaGVjawo+IC0gICAgICAgICAq IGlmIHRoZSBlbnRyeSBleGlzdHMuIElmIGl0J3MgdGhlIGNhc2UsIHJldHVybiB0byB0aGUgZ3Vl c3QKPiAtICAgICAgICAgKi8KPiAtICAgICAgICBtZm4gPSBnZm5fdG9fbWZuKGN1cnJlbnQtPmRv bWFpbiwgX2dmbihwYWRkcl90b19wZm4oZ3BhKSkpOwo+IC0gICAgICAgIGlmICggIW1mbl9lcSht Zm4sIElOVkFMSURfTUZOKSApCj4gLSAgICAgICAgICAgIHJldHVybjsKPiAtICAgIH0KPiAtCj4g LSAgICBpbmplY3RfaWFidF9leGNlcHRpb24ocmVncywgZ3ZhLCBoc3IubGVuKTsKPiAtfQo+IC0K PiAgc3RhdGljIGJvb2wgdHJ5X2hhbmRsZV9tbWlvKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gaHNyIGhzciwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgZ3BhKQo+IEBAIC0xOTQ1LDYgKzE4 NzIsOCBAQCBzdGF0aWMgYm9vbCB0cnlfaGFuZGxlX21taW8oc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MsCj4gICAgICB9Owo+ICAgICAgaW50IHJjOwo+ICAKPiArICAgIEFTU0VSVChoc3IuZWMg PT0gSFNSX0VDX0RBVEFfQUJPUlRfTE9XRVJfRUwpOwo+ICsKPiAgICAgIC8qIHN0YWdlLTEgcGFn ZSB0YWJsZSBzaG91bGQgbmV2ZXIgbGl2ZSBpbiBhbiBlbXVsYXRlZCBNTUlPIHJlZ2lvbiAqLwo+ ICAgICAgaWYgKCBkYWJ0LnMxcHR3ICkKPiAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gQEAgLTIw MDAsMjkgKzE5MjksNDMgQEAgc3RhdGljIGJvb2wgdHJ5X21hcF9tbWlvKGdmbl90IGdmbikKPiAg ICAgIHJldHVybiAhbWFwX3JlZ2lvbnNfcDJtdChkLCBnZm4sIDEsIG1mbiwgcDJtX21taW9fZGly ZWN0X2MpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1bmlvbiBoc3IgaHNyKQo+ICtzdGF0aWMgdm9pZCBkb190cmFwX3N0 YWdlMl9hYm9ydF9ndWVzdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gaHNyIGhzcikKPiAgewo+ IC0gICAgY29uc3Qgc3RydWN0IGhzcl9kYWJ0IGRhYnQgPSBoc3IuZGFidDsKPiArICAgIC8qCj4g KyAgICAgKiBUaGUgZW5jb2Rpbmcgb2YgaHNyX2lhYnQgaXMgYSBzdWJzZXQgb2YgaHNyX2RhYnQu IFNvIHVzZQo+ICsgICAgICogaHNyX2RhYnQgdG8gcmVwcmVzZW50IGFuIGFib3J0IGZhdWx0Lgo+ ICsgICAgICovCj4gKyAgICBjb25zdCBzdHJ1Y3QgaHNyX3hhYnQgeGFidCA9IGhzci54YWJ0Owo+ ICAgICAgaW50IHJjOwo+ICAgICAgdmFkZHJfdCBndmE7Cj4gICAgICBwYWRkcl90IGdwYTsKPiAt ICAgIHVpbnQ4X3QgZnNjID0gaHNyLmRhYnQuZGZzYyAmIH5GU0NfTExfTUFTSzsKPiArICAgIHVp bnQ4X3QgZnNjID0geGFidC5mc2MgJiB+RlNDX0xMX01BU0s7Cj4gICAgICBtZm5fdCBtZm47Cj4g KyAgICBib29sIGlzX2RhdGEgPSAoaHNyLmVjID09IEhTUl9FQ19EQVRBX0FCT1JUX0xPV0VSX0VM KTsKPiAgCj4gICAgICAvKgo+IC0gICAgICogSWYgdGhpcyBiaXQgaGFzIGJlZW4gc2V0LCBpdCBt ZWFucyB0aGF0IHRoaXMgZGF0YSBhYm9ydCBpcyBjYXVzZWQKPiAtICAgICAqIGJ5IGEgZ3Vlc3Qg ZXh0ZXJuYWwgYWJvcnQuIFdlIHRyZWF0IHRoaXMgZGF0YSBhYm9ydCBhcyBndWVzdCBTRXJyb3Iu Cj4gKyAgICAgKiBJZiB0aGlzIGJpdCBoYXMgYmVlbiBzZXQsIGl0IG1lYW5zIHRoYXQgdGhpcyBz dGFnZS0yIGFib3J0IGlzIGNhdXNlZAo+ICsgICAgICogYnkgYSBndWVzdCBleHRlcm5hbCBhYm9y dC4gV2UgdHJlYXQgdGhpcyBzdGFnZS0yIGFib3J0IGFzIGd1ZXN0IFNFcnJvci4KPiAgICAgICAq Lwo+IC0gICAgaWYgKCBkYWJ0LmVhdCApCj4gKyAgICBpZiAoIHhhYnQuZWF0ICkKPiAgICAgICAg ICByZXR1cm4gX19kb190cmFwX3NlcnJvcihyZWdzLCB0cnVlKTsKPiAgCj4gLSAgICBndmEgPSBn ZXRfaGZhcih0cnVlIC8qIGlzX2RhdGEgKi8pOwo+ICsgICAgZ3ZhID0gZ2V0X2hmYXIoaXNfZGF0 YSk7Cj4gIAo+IC0gICAgaWYgKCBocGZhcl9pc192YWxpZChkYWJ0LnMxcHR3LCBmc2MpICkKPiAr ICAgIGlmICggaHBmYXJfaXNfdmFsaWQoeGFidC5zMXB0dywgZnNjKSApCj4gICAgICAgICAgZ3Bh ID0gZ2V0X2ZhdWx0aW5nX2lwYShndmEpOwo+ICAgICAgZWxzZQo+ICAgICAgewo+ICsgICAgICAg IC8qCj4gKyAgICAgICAgICogRmx1c2ggdGhlIFRMQiB0byBtYWtlIHN1cmUgdGhlIERUTEIgaXMg Y2xlYXIgYmVmb3JlCj4gKyAgICAgICAgICogZG9pbmcgR1ZBLT5JUEEgdHJhbnNsYXRpb24uIElm IHdlIGdvdCBoZXJlIGJlY2F1c2Ugb2YKPiArICAgICAgICAgKiBhbiBlbnRyeSBvbmx5IHByZXNl bnQgaW4gdGhlIElUTEIsIHRoaXMgdHJhbnNsYXRpb24gbWF5Cj4gKyAgICAgICAgICogc3RpbGwg YmUgaW5hY2N1cmF0ZS4KPiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoICFpc19kYXRhICkK PiArICAgICAgICAgICAgZmx1c2hfdGxiX2xvY2FsKCk7Cj4gKwo+ICAgICAgICAgIHJjID0gZ3Zh X3RvX2lwYShndmEsICZncGEsIEdWMk1fUkVBRCk7Cj4gICAgICAgICAgLyoKPiAgICAgICAgICAg KiBXZSBtYXkgbm90IGJlIGFibGUgdG8gdHJhbnNsYXRlIGJlY2F1c2Ugc29tZW9uZSBpcwo+IEBA IC0yMDM4LDEwICsxOTgxLDExIEBAIHN0YXRpYyB2b2lkIGRvX3RyYXBfZGF0YV9hYm9ydF9ndWVz dChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPiAgICAgIGNhc2UgRlNDX0ZMVF9QRVJNOgo+ ICAgICAgewo+ICAgICAgICAgIGNvbnN0IHN0cnVjdCBucGZlYyBucGZlYyA9IHsKPiAtICAgICAg ICAgICAgLnJlYWRfYWNjZXNzID0gIWRhYnQud3JpdGUsCj4gLSAgICAgICAgICAgIC53cml0ZV9h Y2Nlc3MgPSBkYWJ0LndyaXRlLAo+ICsgICAgICAgICAgICAuaW5zbl9mZXRjaCA9ICFpc19kYXRh LAo+ICsgICAgICAgICAgICAucmVhZF9hY2Nlc3MgPSBpc19kYXRhICYmICFoc3IuZGFidC53cml0 ZSwKPiArICAgICAgICAgICAgLndyaXRlX2FjY2VzcyA9IGlzX2RhdGEgJiYgaHNyLmRhYnQud3Jp dGUsCj4gICAgICAgICAgICAgIC5nbGFfdmFsaWQgPSAxLAo+IC0gICAgICAgICAgICAua2luZCA9 IGRhYnQuczFwdHcgPyBucGZlY19raW5kX2luX2dwdCA6IG5wZmVjX2tpbmRfd2l0aF9nbGEKPiAr ICAgICAgICAgICAgLmtpbmQgPSB4YWJ0LnMxcHR3ID8gbnBmZWNfa2luZF9pbl9ncHQgOiBucGZl Y19raW5kX3dpdGhfZ2xhCj4gICAgICAgICAgfTsKPiAgCj4gICAgICAgICAgcDJtX21lbV9hY2Nl c3NfY2hlY2soZ3BhLCBndmEsIG5wZmVjKTsKPiBAQCAtMjA1NSw4ICsxOTk5LDEwIEBAIHN0YXRp YyB2b2lkIGRvX3RyYXBfZGF0YV9hYm9ydF9ndWVzdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cywKPiAgICAgICAgICAvKgo+ICAgICAgICAgICAqIEF0dGVtcHQgZmlyc3QgdG8gZW11bGF0ZSB0 aGUgTU1JTyBhcyB0aGUgZGF0YSBhYm9ydCB3aWxsCj4gICAgICAgICAgICogbGlrZWx5IGhhcHBl biBpbiBhbiBlbXVsYXRlZCByZWdpb24uCj4gKyAgICAgICAgICoKPiArICAgICAgICAgKiBOb3Rl IHRoYXQgZW11bGF0ZWQgcmVnaW9uIGNhbm5vdCBiZSBleGVjdXRlZAo+ICAgICAgICAgICAqLwo+ IC0gICAgICAgIGlmICggdHJ5X2hhbmRsZV9tbWlvKHJlZ3MsIGhzciwgZ3BhKSApCj4gKyAgICAg ICAgaWYgKCBpc19kYXRhICYmIHRyeV9oYW5kbGVfbW1pbyhyZWdzLCBoc3IsIGdwYSkgKQo+ICAg ICAgICAgIHsKPiAgICAgICAgICAgICAgYWR2YW5jZV9wYyhyZWdzLCBoc3IpOwo+ICAgICAgICAg ICAgICByZXR1cm47Cj4gQEAgLTIwNzEsMTggKzIwMTcsMjEgQEAgc3RhdGljIHZvaWQgZG9fdHJh cF9kYXRhX2Fib3J0X2d1ZXN0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAo+ICAgICAgICAg IGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCj4gICAgICAgICAgICAgIHJldHVybjsK PiAgCj4gLSAgICAgICAgaWYgKCB0cnlfbWFwX21taW8oZ2FkZHJfdG9fZ2ZuKGdwYSkpICkKPiAr ICAgICAgICBpZiAoIGlzX2RhdGEgJiYgdHJ5X21hcF9tbWlvKGdhZGRyX3RvX2dmbihncGEpKSAp Cj4gICAgICAgICAgICAgIHJldHVybjsKPiAgCj4gICAgICAgICAgYnJlYWs7Cj4gICAgICBkZWZh dWx0Ogo+IC0gICAgICAgIGdwcmludGsoWEVOTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCBERlND OiBIU1I9JSN4IERGU0M9JSN4XG4iLAo+IC0gICAgICAgICAgICAgICAgaHNyLmJpdHMsIGRhYnQu ZGZzYyk7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklORywgIlVuc3VwcG9ydGVkIEZT QzogSFNSPSUjeCBERlNDPSUjeFxuIiwKPiArICAgICAgICAgICAgICAgIGhzci5iaXRzLCB4YWJ0 LmZzYyk7Cj4gICAgICB9Cj4gIAo+ICAgICAgZ2RwcmludGsoWEVOTE9HX0RFQlVHLCAiSFNSPTB4 JXggcGM9JSMiUFJJcmVnaXN0ZXIiIGd2YT0lIyJQUkl2YWRkcgo+ICAgICAgICAgICAgICAgIiBn cGE9JSMiUFJJcGFkZHIiXG4iLCBoc3IuYml0cywgcmVncy0+cGMsIGd2YSwgZ3BhKTsKPiAtICAg IGluamVjdF9kYWJ0X2V4Y2VwdGlvbihyZWdzLCBndmEsIGhzci5sZW4pOwo+ICsgICAgaWYgKCBp c19kYXRhICkKPiArICAgICAgICBpbmplY3RfZGFidF9leGNlcHRpb24ocmVncywgZ3ZhLCBoc3Iu bGVuKTsKPiArICAgIGVsc2UKPiArICAgICAgICBpbmplY3RfaWFidF9leGNlcHRpb24ocmVncywg Z3ZhLCBoc3IubGVuKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZW50ZXJfaHlwZXJ2aXNvcl9o ZWFkKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+IEBAIC0yMjE1LDExICsyMTY0LDExIEBA IHZvaWQgZG9fdHJhcF9ndWVzdF9zeW5jKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICAK PiAgICAgIGNhc2UgSFNSX0VDX0lOU1RSX0FCT1JUX0xPV0VSX0VMOgo+ICAgICAgICAgIHBlcmZj X2luY3IodHJhcF9pYWJ0KTsKPiAtICAgICAgICBkb190cmFwX2luc3RyX2Fib3J0X2d1ZXN0KHJl Z3MsIGhzcik7Cj4gKyAgICAgICAgZG9fdHJhcF9zdGFnZTJfYWJvcnRfZ3Vlc3QocmVncywgaHNy KTsKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgSFNSX0VDX0RBVEFfQUJPUlRfTE9XRVJf RUw6Cj4gICAgICAgICAgcGVyZmNfaW5jcih0cmFwX2RhYnQpOwo+IC0gICAgICAgIGRvX3RyYXBf ZGF0YV9hYm9ydF9ndWVzdChyZWdzLCBoc3IpOwo+ICsgICAgICAgIGRvX3RyYXBfc3RhZ2UyX2Fi b3J0X2d1ZXN0KHJlZ3MsIGhzcik7Cj4gICAgICAgICAgYnJlYWs7Cj4gIAo+ICAgICAgZGVmYXVs dDoKPiAtLSAKPiAyLjExLjAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=