From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey G Subject: Re: [RFC PATCH 06/12] hvmloader: add basic Q35 support Date: Tue, 20 Mar 2018 09:44:33 +1000 Message-ID: <20180320094433.000038ff@gmail.com> References: <0d9ca5a4e03122ec0f253e3a8c89b987071c88b8.1520867741.git.x1917x@gmail.com> <20180319153014.qffcqroenujfqrnd@MacBook-Pro-de-Roger.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ey4SM-0001w9-Kw for xen-devel@lists.xenproject.org; Mon, 19 Mar 2018 23:44:46 +0000 Received: by mail-lf0-x241.google.com with SMTP id z143-v6so21779358lff.3 for ; Mon, 19 Mar 2018 16:44:44 -0700 (PDT) In-Reply-To: <20180319153014.qffcqroenujfqrnd@MacBook-Pro-de-Roger.local> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau =?UTF-8?Q?Monn=C3=A9?= Cc: xen-devel@lists.xenproject.org, Ian Jackson , Wei Liu , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAxOSBNYXIgMjAxOCAxNTozMDoxNCArMDAwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+T24gVHVlLCBNYXIgMTMsIDIwMTggYXQgMDQ6MzM6 NTFBTSArMTAwMCwgQWxleGV5IEdlcmFzaW1lbmtvIHdyb3RlOgo+PiBUaGlzIHBhdGNoIGRvZXMg Zm9sbG93aW5nOgo+PiAKPj4gMS4gTW92ZSBQQ0ktZGV2aWNlIHNwZWNpZmljIGluaXRpYWxpemF0 aW9uIG91dCBvZiBwY2lfc2V0dXAgZnVuY3Rpb24KPj4gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY2xh c3Nfc3BlY2lmaWNfcGNpX2RldmljZV9zZXR1cCBmdW5jdGlvbiB0bwo+PiBzaW1wbGlmeSBjb2Rl Lgo+PiAKPj4gMi4gUENJLWRldmljZSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBleHRlbmRlZCB3 aXRoIExQQyBjb250cm9sbGVyCj4+IGluaXRpYWxpemF0aW9uCj4+IAo+PiAzLiBJbml0aWFsaXpl IFBJUlFBLi4ue1BJUlFELCBQSVJRSH0gcm91dGluZyBhY2NvcmRpbmdseSB0byB0aGUKPj4gZW11 bGF0ZWQgc291dGggYnJpZGdlIChlaXRoZXIgbG9jYXRlZCBvbiBQQ0lfSVNBX0RFVkZOIG9yCj4+ IFBDSV9JQ0g5X0xQQ19ERVZGTikuCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgR2VyYXNp bWVua28gPHgxOTE3eEBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgdG9vbHMvZmlybXdhcmUvaHZtbG9h ZGVyL2NvbmZpZy5oIHwgICAxICsKPj4gIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2kuYyAg ICB8IDE2Mgo+PiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLSAyIGZpbGVz IGNoYW5nZWQsIDEwNAo+PiBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKPj4gCj4+IGRp ZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmgKPj4gYi90b29scy9m aXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmggaW5kZXggNmUwMDQxM2YyZS4uNmZkZTZiN2I2MAo+ PiAxMDA2NDQgLS0tIGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCj4+ICsrKyBi L3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaAo+PiBAQCAtNTIsNiArNTIsNyBAQCBl eHRlcm4gdWludDhfdCBpb2FwaWNfdmVyc2lvbjsKPj4gIAo+PiAgI2RlZmluZSBQQ0lfSVNBX0RF VkZOICAgICAgIDB4MDggICAgLyogZGV2IDEsIGZuIDAgKi8KPj4gICNkZWZpbmUgUENJX0lTQV9J UlFfTUFTSyAgICAweDBjMjBVIC8qIElTQSBJUlFzIDUsMTAsMTEgYXJlIFBDSQo+PiBjb25uZWN0 ZWQgKi8gKyNkZWZpbmUgUENJX0lDSDlfTFBDX0RFVkZOICAweGY4ICAgIC8qIGRldiAzMSwgZm4g MCAqLwo+PiAgCj4+ICAvKiBNTUlPIGhvbGU6IEhhcmRjb2RlZCBkZWZhdWx0cywgd2hpY2ggY2Fu IGJlIGR5bmFtaWNhbGx5Cj4+IGV4cGFuZGVkLiAqLyAjZGVmaW5lIFBDSV9NRU1fRU5EICAgICAg ICAgMHhmYzAwMDAwMAo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3Bj aS5jCj4+IGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jIGluZGV4IDBiNzA4YmY1Nzgu LjAzM2JkMjA5OTIgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2ku Ywo+PiArKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvcGNpLmMKPj4gQEAgLTM1LDYgKzM1 LDcgQEAgdW5zaWduZWQgbG9uZyBwY2lfbWVtX2VuZCA9IFBDSV9NRU1fRU5EOwo+PiAgdWludDY0 X3QgcGNpX2hpX21lbV9zdGFydCA9IDAsIHBjaV9oaV9tZW1fZW5kID0gMDsKPj4gIAo+PiAgZW51 bSB2aXJ0dWFsX3ZnYSB2aXJ0dWFsX3ZnYSA9IFZHQV9ub25lOwo+PiArdWludDMyX3QgdmdhX2Rl dmZuID0gMjU2OyAgCj4KPnVpbnQ4X3Qgc2hvdWxkIGJlIGVub3VnaCB0byBzdG9yZSBhIGRldmZu LiBBbHNvIHRoaXMgc2hvdWxkIGJlIHN0YXRpYwo+bWF5YmU/CgpZZXAsIGZvcmdvdCAnc3RhdGlj Jy4gQ2hhbmdpbmcgdWludDMyX3QgdG8gdWludDhfdCBoZXJlIHdpbGwgcmVxdWlyZQp0byBjaGFu Z2UgdGhlCicgICAgaWYgKCB2Z2FfZGV2Zm4gIT0gMjU2ICknIGNvbmRpdGlvbiBhcyB3ZWxsIC0t IGl0J3MgYSBiaXQgb3V0IG9mIHRoZQpwYXRjaCBzY29wZSwgcHJvYmFibHkgYSBzZXBhcmF0ZSB0 aW55IHBhdGNoIHdvdWxkIGJlIGJldHRlci4KCj4+ICB1bnNpZ25lZCBsb25nIGlnZF9vcHJlZ2lv bl9wZ2Jhc2UgPSAwOwo+PiAgCj4+ICAvKiBDaGVjayBpZiB0aGUgc3BlY2lmaWVkIHJhbmdlIGNv bmZsaWN0cyB3aXRoIGFueSByZXNlcnZlZCBkZXZpY2UKPj4gbWVtb3J5LiAqLyBAQCAtNzYsMTQg Kzc3LDkzIEBAIHN0YXRpYyBpbnQgZmluZF9uZXh0X3JtcnIodWludDMyX3QKPj4gYmFzZSkgcmV0 dXJuIG5leHRfcm1ycjsKPj4gIH0KPj4gIAo+PiArI2RlZmluZSBTQ0lfRU5fSU9QT1JUICAoQUNQ SV9QTTFBX0VWVF9CTEtfQUREUkVTU19WMSArIDB4MzApCj4+ICsjZGVmaW5lIEdCTF9TTUlfRU4g ICAgICAoMSA8PCAwKQo+PiArI2RlZmluZSBBUE1DX0VOICAgICAgICAgKDEgPDwgNSkgIAo+Cj5B bGlnbm1lbnQuCgpXaWxsIGNvcnJlY3QuCgo+PiArCj4+ICtzdGF0aWMgdm9pZCBjbGFzc19zcGVj aWZpY19wY2lfZGV2aWNlX3NldHVwKHVpbnQxNl90IHZlbmRvcl9pZCwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgZGV2aWNlX2lkLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGJ1cywg dWludDhfdAo+PiBkZXZmbikgK3sKPj4gKyAgICB1aW50MTZfdCBjbGFzczsKPj4gKwo+PiArICAg IGNsYXNzID0gcGNpX3JlYWR3KGRldmZuLCBQQ0lfQ0xBU1NfREVWSUNFKTsKPj4gKwo+PiArICAg IHN3aXRjaCAoIGNsYXNzICkgIAo+Cj5zd2l0Y2ggKCBwY2lfcmVhZHcoZGV2Zm4sIFBDSV9DTEFT U19ERVZJQ0UpICkgPwo+Cj5JIGRvbid0IHNlZSBjbGFzcyBiZWluZyB1c2VkIGVsc2V3aGVyZS4K Cj5BbHNvIHdoeSBpcyB2ZW5kb3JfaWQvZGV2aWNlX2lkIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIg YnV0IG5vdCBjbGFzcz8KPkl0IHNlZW1zIGtpbmQgb2YgcG9pbnRsZXNzLgoKJ2NsYXNzJyBpcyBu b3QgdXNlZCBieSBwY2lfc2V0dXAoKSwgdGh1cyBtb3ZlZCB0bwpjbGFzc19zcGVjaWZpY19wY2lf ZGV2aWNlX3NldHVwKCkuCgpwY2lfcmVhZHcoZGV2Zm4sIFBDSV9DTEFTU19ERVZJQ0UpIGluc2lk ZSB0aGUgc3dpdGNoIGNvbmRpdGlvbiB0byBkcm9wCnRoZSB2YXJpYWJsZSAtLSBzdXJlLCBhZ3Jl ZS4KClBhc3NpbmcgdmVuZG9yX2lkL2RldmljZV9pZCBwYWlyIHZpYSBmdW5jdGlvbiBhcmdzIGFs bG93cyB0byBhdm9pZApyZWFkaW5nIHRoZSB2ZW5kb3JfaWQvZGV2aWNlX2lkIGZyb20gUENJIGNv bmYgdHdpY2UgLS0gYSBiaXQgbGVzcwpnYXJiYWdlIGluIHRoZSBwb2xsdXRlZCBQQ0kgc2V0dXAg ZGVidWdsb2cuIEl0J3Mgbm90IGEgYmlnIHByb2JsZW0KcmVhbGx5LCBzbyB0aGlzIGNhbiBiZSBj aGFuZ2VkIHRvIHBhc3Npbmcgb25seSBCREYgdG8KY2xhc3Nfc3BlY2lmaWNfcGNpX2RldmljZV9z ZXR1cCgpLgoKPldoeSBub3QgZmV0Y2ggdmVuZG9yL2RldmljZSBmcm9tIHRoZSBmdW5jdGlvbiBp dHNlbGYgYW5kIG1vdmUgdGhlCj4odmVuZG9yX2lkID09IDB4ZmZmZikgJiYgKGRldmljZV9pZCA9 PSAweGZmZmYpIGNoZWNrIGluc2lkZSB0aGUKPmZ1bmN0aW9uPwoKSG1tLCB0aGlzIGlzIGEgcGFy dCBvZiB0aGUgUENJIGJ1cyBlbnVtZXJhdGlvbiwgbm90IFBDSSBkZXZpY2Ugc2V0dXAuCgo+QWxz byBpbiB0aGlzIGNhc2UgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gaGF2ZSBhIG5vbi1m dW5jdGlvbmFsCj5wYXRjaCB0aGF0IGludHJvZHVjZXMgY2xhc3Nfc3BlY2lmaWNfcGNpX2Rldmlj ZV9zZXR1cCBhbmQgYSBzZWNvbmQKPnBhdGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciBJQ0g5Lgo+ Cj5IYXZpbmcgY29kZSBtb3ZlbWVudCBhbmQgbmV3IGNvZGUgaW4gdGhlIHNhbWUgcGF0Y2ggbWFr ZXMgaXQgaGFyZGVyIHRvCj52ZXJ5IHdoYXQgeW91IGFyZSBhY3R1YWxseSBtb3ZpbmcgdnMgaW50 cm9kdWNpbmcuCgpBZ3JlZSwgd2lsbCBzcGxpdCB0aGlzIGFjdGlvbnMgdG8gc2VwYXJhdGUgcGF0 Y2hlcyBmb3IgdGhlIG5leHQgdmVyc2lvbi4KCj4+ICsgICAgewo+PiArICAgIGNhc2UgMHgwMzAw OiAgCj4KPkFsbCB0aGlzIHZhbHVlcyBuZWVkIHRvIGJlIGRlZmluZXMgZG9jdW1lbnRlZCBzb21l d2hlcmUuCgpBZ3JlZS4uLiBhbHRob3VnaCBpdCB3YXMgbm90IG1lIHdobyBpbnRyb2R1Y2VkIGFs bCB0aGVzZSBoYXJkY29kZWQgUENJCmNsYXNzIHZhbHVlcy4gOikgSSdsbCBjaGFuZ2UgdGhlc2Ug bnVtYmVycyBpbnRvIG5ld2x5IGFkZGVkIHBjaV9yZWdzLmgKI2RlZmluZXMgaW4gdGhlIG5vbi1m dW5jdGlvbmFsIHBhdGNoLgoKPj4gKyAgICAgICAgLyogSWYgZW11bGF0ZWQgVkdBIGlzIGZvdW5k LCBwcmVzZXJ2ZSBpdCBhcyBwcmltYXJ5IFZHQS4gKi8KPj4gKyAgICAgICAgaWYgKCAodmVuZG9y X2lkID09IDB4MTIzNCkgJiYgKGRldmljZV9pZCA9PSAweDExMTEpICkKPj4gKyAgICAgICAgewo+ PiArICAgICAgICAgICAgdmdhX2RldmZuID0gZGV2Zm47Cj4+ICsgICAgICAgICAgICB2aXJ0dWFs X3ZnYSA9IFZHQV9zdGQ7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgZWxzZSBpZiAoICh2ZW5k b3JfaWQgPT0gMHgxMDEzKSAmJiAoZGV2aWNlX2lkID09IDB4YjgpICkKPj4gKyAgICAgICAgewo+ PiArICAgICAgICAgICAgdmdhX2RldmZuID0gZGV2Zm47Cj4+ICsgICAgICAgICAgICB2aXJ0dWFs X3ZnYSA9IFZHQV9jaXJydXM7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgZWxzZSBpZiAoIHZp cnR1YWxfdmdhID09IFZHQV9ub25lICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgdmdh X2RldmZuID0gZGV2Zm47Cj4+ICsgICAgICAgICAgICB2aXJ0dWFsX3ZnYSA9IFZHQV9wdDsKPj4g KyAgICAgICAgICAgIGlmICggdmVuZG9yX2lkID09IDB4ODA4NiApCj4+ICsgICAgICAgICAgICB7 Cj4+ICsgICAgICAgICAgICAgICAgaWdkX29wcmVnaW9uX3BnYmFzZSA9Cj4+IG1lbV9ob2xlX2Fs bG9jKElHRF9PUFJFR0lPTl9QQUdFUyk7Cj4+ICsgICAgICAgICAgICAgICAgLyoKPj4gKyAgICAg ICAgICAgICAgICAgKiBXcml0ZSB0aGUgdGhlIE9wUmVnaW9uIG9mZnNldCB0byBnaXZlIHRoZQo+ PiBvcHJlZ2lvbgo+PiArICAgICAgICAgICAgICAgICAqIGFkZHJlc3MgdG8gdGhlIGRldmljZSBt b2RlbC4gVGhlIGRldmljZSBtb2RlbAo+PiB3aWxsIHRyYXAKPj4gKyAgICAgICAgICAgICAgICAg KiBhbmQgbWFwIHRoZSBPcFJlZ2lvbiBhdCB0aGUgZ2l2ZSBhZGRyZXNzLgo+PiArICAgICAgICAg ICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAgIHBjaV93cml0ZWwodmdhX2RldmZuLCBQQ0lf SU5URUxfT1BSRUdJT04sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ2Rfb3ByZWdp b25fcGdiYXNlIDw8IFBBR0VfU0hJRlQpOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICB9 Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgY2FzZSAweDA2ODA6Cj4+ICsgICAgICAg IC8qIFBJSVg0IEFDUEkgUE0uIFNwZWNpYWwgZGV2aWNlIHdpdGggc3BlY2lhbCBQQ0kgY29uZmln Cj4+IHNwYWNlLiAqLwo+PiArICAgICAgICBBU1NFUlQoKHZlbmRvcl9pZCA9PSAweDgwODYpICYm IChkZXZpY2VfaWQgPT0gMHg3MTEzKSk7Cj4+ICsgICAgICAgIHBjaV93cml0ZXcoZGV2Zm4sIDB4 MjAsIDB4MDAwMCk7IC8qIE5vIHNtYiBidXMgSU8gZW5hYmxlICovCj4+ICsgICAgICAgIHBjaV93 cml0ZXcoZGV2Zm4sIDB4ZDIsIDB4MDAwMCk7IC8qIE5vIHNtYiBidXMgSU8gZW5hYmxlICovCj4+ ICsgICAgICAgIHBjaV93cml0ZXcoZGV2Zm4sIDB4MjIsIDB4MDAwMCk7Cj4+ICsgICAgICAgIHBj aV93cml0ZXcoZGV2Zm4sIDB4M2MsIDB4MDAwOSk7IC8qIEhhcmRjb2RlZCBJUlE5ICovCj4+ICsg ICAgICAgIHBjaV93cml0ZXcoZGV2Zm4sIDB4M2QsIDB4MDAwMSk7Cj4+ICsgICAgICAgIHBjaV93 cml0ZWwoZGV2Zm4sIDB4NDAsIEFDUElfUE0xQV9FVlRfQkxLX0FERFJFU1NfVjEgfCAxKTsKPj4g KyAgICAgICAgcGNpX3dyaXRlYihkZXZmbiwgMHg4MCwgMHgwMSk7IC8qIGVuYWJsZSBQTSBpbyBz cGFjZSAqLwo+PiArICAgICAgICBicmVhazsKPj4gKwo+PiArICAgIGNhc2UgMHgwNjAxOgo+PiAr ICAgICAgICAvKiBMUEMgYnJpZGdlICovCj4+ICsgICAgICAgIGlmICh2ZW5kb3JfaWQgPT0gMHg4 MDg2ICYmIGRldmljZV9pZCA9PSAweDI5MTgpCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAg IHBjaV93cml0ZWIoZGV2Zm4sIDB4M2MsIDB4MDkpOyAvKiBIYXJkY29kZWQgSVJROSAqLwo+PiAr ICAgICAgICAgICAgcGNpX3dyaXRlYihkZXZmbiwgMHgzZCwgMHgwMSk7Cj4+ICsgICAgICAgICAg ICBwY2lfd3JpdGVsKGRldmZuLCAweDQwLCBBQ1BJX1BNMUFfRVZUX0JMS19BRERSRVNTX1YxIHwK Pj4gMSk7Cj4+ICsgICAgICAgICAgICBwY2lfd3JpdGViKGRldmZuLCAweDQ0LCAweDgwKTsgLyog ZW5hYmxlIFBNIGlvIHNwYWNlICovCj4+ICsgICAgICAgICAgICBvdXRsKFNDSV9FTl9JT1BPUlQs IGlubChTQ0lfRU5fSU9QT1JUKSB8IEdCTF9TTUlfRU4gfAo+PiBBUE1DX0VOKTsKPj4gKyAgICAg ICAgfQo+PiArICAgICAgICBicmVhazsKPj4gKwo+PiArICAgIGNhc2UgMHgwMTAxOgo+PiArICAg ICAgICBpZiAoIHZlbmRvcl9pZCA9PSAweDgwODYgKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAg ICAgICAvKiBJbnRlbCBJQ0hzIHNpbmNlIFBJSVgzOiBlbmFibGUgSURFIGxlZ2FjeSBtb2RlLiAq Lwo+PiArICAgICAgICAgICAgcGNpX3dyaXRldyhkZXZmbiwgMHg0MCwgMHg4MDAwKTsgLyogZW5h YmxlIElERTAgKi8KPj4gKyAgICAgICAgICAgIHBjaV93cml0ZXcoZGV2Zm4sIDB4NDIsIDB4ODAw MCk7IC8qIGVuYWJsZSBJREUxICovCj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgYnJlYWs7Cj4+ ICsgICAgfQo+PiArfQo+PiArCj4+ICB2b2lkIHBjaV9zZXR1cCh2b2lkKQo+PiAgewo+PiAgICAg IHVpbnQ4X3QgaXNfNjRiYXIsIHVzaW5nXzY0YmFyLCBiYXI2NF9yZWxvY2F0ZSA9IDA7Cj4+ICAg ICAgdWludDMyX3QgZGV2Zm4sIGJhcl9yZWcsIGNtZCwgYmFyX2RhdGEsIGJhcl9kYXRhX3VwcGVy Owo+PiAgICAgIHVpbnQ2NF90IGJhc2UsIGJhcl9zeiwgYmFyX3N6X3VwcGVyLCBtbWlvX3RvdGFs ID0gMDsKPj4gLSAgICB1aW50MzJfdCB2Z2FfZGV2Zm4gPSAyNTY7Cj4+IC0gICAgdWludDE2X3Qg Y2xhc3MsIHZlbmRvcl9pZCwgZGV2aWNlX2lkOwo+PiArICAgIHVpbnQxNl90IHZlbmRvcl9pZCwg ZGV2aWNlX2lkOwo+PiAgICAgIHVuc2lnbmVkIGludCBiYXIsIHBpbiwgbGluaywgaXNhX2lycTsK Pj4gKyAgICBpbnQgaXNfcnVubmluZ19vbl9xMzUgPSAwOyAgCj4KPmJvb2wgaXNfcnVubmluZ19v bl9xMzUgPSAoZ2V0X3BjX21hY2hpbmVfdHlwZSgpID09IE1BQ0hJTkVfVFlQRV9RMzUpOwoKT0sK Cj4+ICAKPj4gICAgICAvKiBSZXNvdXJjZXMgYXNzaWduYWJsZSB0byBQQ0kgZGV2aWNlcyB2aWEg QkFScy4gKi8KPj4gICAgICBzdHJ1Y3QgcmVzb3VyY2Ugewo+PiBAQCAtMTMwLDEzICsyMTAsMjgg QEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKPj4gICAgICBpZiAoIHMgKQo+PiAgICAgICAgICBtbWlv X2hvbGVfc2l6ZSA9IHN0cnRvbGwocywgTlVMTCwgMCk7Cj4+ICAKPj4gKyAgICAvKiBjaGVjayBp ZiB3ZSBhcmUgb24gUTM1IGFuZCBzZXQgdGhlIGZsYWcgaWYgaXQgaXMgdGhlIGNhc2UgKi8KPj4g KyAgICBpc19ydW5uaW5nX29uX3EzNSA9IGdldF9wY19tYWNoaW5lX3R5cGUoKSA9PSBNQUNISU5F X1RZUEVfUTM1Owo+PiArCj4+ICAgICAgLyogUHJvZ3JhbSBQQ0ktSVNBIGJyaWRnZSB3aXRoIGFw cHJvcHJpYXRlIGxpbmsgcm91dGVzLiAqLwo+PiAgICAgIGlzYV9pcnEgPSAwOwo+PiAgICAgIGZv ciAoIGxpbmsgPSAwOyBsaW5rIDwgNDsgbGluaysrICkKPj4gICAgICB7Cj4+ICAgICAgICAgIGRv IHsgaXNhX2lycSA9IChpc2FfaXJxICsgMSkgJiAxNTsKPj4gICAgICAgICAgfSB3aGlsZSAoICEo UENJX0lTQV9JUlFfTUFTSyAmICgxVSA8PCBpc2FfaXJxKSkgKTsKPj4gLSAgICAgICAgcGNpX3dy aXRlYihQQ0lfSVNBX0RFVkZOLCAweDYwICsgbGluaywgaXNhX2lycSk7Cj4+ICsKPj4gKyAgICAg ICAgaWYgKGlzX3J1bm5pbmdfb25fcTM1KSAgCj4KPkNvZGluZyBzdHlsZS4KCk9LCgo+PiArICAg ICAgICB7Cj4+ICsgICAgICAgICAgICBwY2lfd3JpdGViKFBDSV9JQ0g5X0xQQ19ERVZGTiwgMHg2 MCArIGxpbmssIGlzYV9pcnEpOwo+PiArCj4+ICsgICAgICAgICAgICAvKiBQSVJRRS4uUElSUUgg YXJlIHVudXNlZCAqLwo+PiArICAgICAgICAgICAgcGNpX3dyaXRlYihQQ0lfSUNIOV9MUENfREVW Rk4sIDB4NjggKyBsaW5rLCAweDgwKTsgIAo+Cj5BY2NvcmRpbmcgdG8gdGhlIHNwZWMgMHg4MCBp cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyByZWdpc3RlcnMsIGRvCj55b3UgcmVhbGx5IG5l ZWQgdG8gd3JpdGUgaXQ/Cj4KPklzIG1heWJlIFFFTVUgbm90IGNvcnJlY3RseSBzZXR0aW5nIHRo ZSBkZWZhdWx0IHZhbHVlPwoKV29uJ3QgYWdyZWUgaGVyZS4gV2UncmUgaW5pdGlhbGl6aW5nIFBJ UlFbbl0gcm91dGluZyBpbiB0aGlzCmZyYWdtZW50LCBpdCdzIGJldHRlciBub3QgdG8gcmVseSBv biBhbnkgdmFsdWVzIGJ1dCBzaW1wbHkgaW5pdGlhbGl6ZQphbGwgUElSUVtuXV9ST1VUIHJlZ2lz dGVycywgdGhpcyBtYWtlcyBpdCBleHBsaWNpdC4KCkV2ZW4gaWYgaXQgaXMgdW5uZWNlc3Nhcnkg ZHVlIHRvIGRlZmF1bHRzIGl0J3MgbW9yZSBvYnZpb3VzIHRvIHNldAp0aGVzZSByZWdpc3RlcnMg dG8gb3VyIG93biB2YWx1ZXMgdGhhbiB0byBmb3JjZSBhIHJlYWRlciB0byBlaXRoZXIgbG9vawp1 cCB0aGVpciBlbXVsYXRpb24gaW4gUUVNVSBjb2RlIG9yIHJlYWQgdGhlIElDSDkgcGRmIHRvIGNv bmZpcm0KYXNzdW1wdGlvbnMuCgo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIGVsc2UKPj4gKyAg ICAgICAgewo+PiArICAgICAgICAgICAgcGNpX3dyaXRlYihQQ0lfSVNBX0RFVkZOLCAweDYwICsg bGluaywgaXNhX2lycSk7ICAKPgo+SXMgYWxsIHRoaXMgbWFnaWMgZGVzY3JpYmVkIHNvbWV3aGVy ZSB0aGF0IHlvdSBjYW4gcmVmZXJlbmNlPwoKSXQncyBzZXR0aW5nIHVwIFBDSSBpbnRlcnJ1cHQg cm91dGluZyBmb3IgUElDIG1vZGUuIEFsbCB0aGlzIApQSVJRW25dX1JPVVQgc3R1ZmYgYmFzaWNh bGx5IG5lZWRlZCBmb3IgbGVnYWN5IGNvbXBhdGliaWxpdHkgb25seSwKbm9ybWFsbHkgd2UgZGVh bCB3aXRoIEFQSUMgbW9kZSAoK01TSXMpLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==