From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Gerasimenko Subject: [RFC PATCH 06/12] hvmloader: add basic Q35 support Date: Tue, 13 Mar 2018 04:33:51 +1000 Message-ID: <0d9ca5a4e03122ec0f253e3a8c89b987071c88b8.1520867741.git.x1917x@gmail.com> References: 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 1evSHf-0007Ba-GB for xen-devel@lists.xenproject.org; Mon, 12 Mar 2018 18:34:55 +0000 Received: by mail-pl0-x243.google.com with SMTP id w12-v6so9828818plp.4 for ; Mon, 12 Mar 2018 11:34:54 -0700 (PDT) In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Ian Jackson , Alexey Gerasimenko , Jan Beulich , Wei Liu List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBkb2VzIGZvbGxvd2luZzoKCjEuIE1vdmUgUENJLWRldmljZSBzcGVjaWZpYyBp bml0aWFsaXphdGlvbiBvdXQgb2YgcGNpX3NldHVwIGZ1bmN0aW9uCnRvIHRoZSBuZXdseSBjcmVh dGVkIGNsYXNzX3NwZWNpZmljX3BjaV9kZXZpY2Vfc2V0dXAgZnVuY3Rpb24gdG8gc2ltcGxpZnkK Y29kZS4KCjIuIFBDSS1kZXZpY2Ugc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZXh0ZW5kZWQgd2l0 aCBMUEMgY29udHJvbGxlcgppbml0aWFsaXphdGlvbgoKMy4gSW5pdGlhbGl6ZSBQSVJRQS4uLntQ SVJRRCwgUElSUUh9IHJvdXRpbmcgYWNjb3JkaW5nbHkgdG8gdGhlIGVtdWxhdGVkCnNvdXRoIGJy aWRnZSAoZWl0aGVyIGxvY2F0ZWQgb24gUENJX0lTQV9ERVZGTiBvciBQQ0lfSUNIOV9MUENfREVW Rk4pLgoKU2lnbmVkLW9mZi1ieTogQWxleGV5IEdlcmFzaW1lbmtvIDx4MTkxN3hAZ21haWwuY29t PgotLS0KIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaCB8ICAgMSArCiB0b29scy9m aXJtd2FyZS9odm1sb2FkZXIvcGNpLmMgICAgfCAxNjIgKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDU5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcu aCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9jb25maWcuaAppbmRleCA2ZTAwNDEzZjJlLi42 ZmRlNmI3YjYwIDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvY29uZmlnLmgK KysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2NvbmZpZy5oCkBAIC01Miw2ICs1Miw3IEBA IGV4dGVybiB1aW50OF90IGlvYXBpY192ZXJzaW9uOwogCiAjZGVmaW5lIFBDSV9JU0FfREVWRk4g ICAgICAgMHgwOCAgICAvKiBkZXYgMSwgZm4gMCAqLwogI2RlZmluZSBQQ0lfSVNBX0lSUV9NQVNL ICAgIDB4MGMyMFUgLyogSVNBIElSUXMgNSwxMCwxMSBhcmUgUENJIGNvbm5lY3RlZCAqLworI2Rl ZmluZSBQQ0lfSUNIOV9MUENfREVWRk4gIDB4ZjggICAgLyogZGV2IDMxLCBmbiAwICovCiAKIC8q IE1NSU8gaG9sZTogSGFyZGNvZGVkIGRlZmF1bHRzLCB3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkg ZXhwYW5kZWQuICovCiAjZGVmaW5lIFBDSV9NRU1fRU5EICAgICAgICAgMHhmYzAwMDAwMApkaWZm IC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3BjaS5jIGIvdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL3BjaS5jCmluZGV4IDBiNzA4YmY1NzguLjAzM2JkMjA5OTIgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9wY2kuYworKysgYi90b29scy9maXJtd2FyZS9odm1s b2FkZXIvcGNpLmMKQEAgLTM1LDYgKzM1LDcgQEAgdW5zaWduZWQgbG9uZyBwY2lfbWVtX2VuZCA9 IFBDSV9NRU1fRU5EOwogdWludDY0X3QgcGNpX2hpX21lbV9zdGFydCA9IDAsIHBjaV9oaV9tZW1f ZW5kID0gMDsKIAogZW51bSB2aXJ0dWFsX3ZnYSB2aXJ0dWFsX3ZnYSA9IFZHQV9ub25lOwordWlu dDMyX3QgdmdhX2RldmZuID0gMjU2OwogdW5zaWduZWQgbG9uZyBpZ2Rfb3ByZWdpb25fcGdiYXNl ID0gMDsKIAogLyogQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCByYW5nZSBjb25mbGljdHMgd2l0aCBh bnkgcmVzZXJ2ZWQgZGV2aWNlIG1lbW9yeS4gKi8KQEAgLTc2LDE0ICs3Nyw5MyBAQCBzdGF0aWMg aW50IGZpbmRfbmV4dF9ybXJyKHVpbnQzMl90IGJhc2UpCiAgICAgcmV0dXJuIG5leHRfcm1ycjsK IH0KIAorI2RlZmluZSBTQ0lfRU5fSU9QT1JUICAoQUNQSV9QTTFBX0VWVF9CTEtfQUREUkVTU19W MSArIDB4MzApCisjZGVmaW5lIEdCTF9TTUlfRU4gICAgICAoMSA8PCAwKQorI2RlZmluZSBBUE1D X0VOICAgICAgICAgKDEgPDwgNSkKKworc3RhdGljIHZvaWQgY2xhc3Nfc3BlY2lmaWNfcGNpX2Rl dmljZV9zZXR1cCh1aW50MTZfdCB2ZW5kb3JfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGRldmljZV9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4X3QgZGV2Zm4pCit7 CisgICAgdWludDE2X3QgY2xhc3M7CisKKyAgICBjbGFzcyA9IHBjaV9yZWFkdyhkZXZmbiwgUENJ X0NMQVNTX0RFVklDRSk7CisKKyAgICBzd2l0Y2ggKCBjbGFzcyApCisgICAgeworICAgIGNhc2Ug MHgwMzAwOgorICAgICAgICAvKiBJZiBlbXVsYXRlZCBWR0EgaXMgZm91bmQsIHByZXNlcnZlIGl0 IGFzIHByaW1hcnkgVkdBLiAqLworICAgICAgICBpZiAoICh2ZW5kb3JfaWQgPT0gMHgxMjM0KSAm JiAoZGV2aWNlX2lkID09IDB4MTExMSkgKQorICAgICAgICB7CisgICAgICAgICAgICB2Z2FfZGV2 Zm4gPSBkZXZmbjsKKyAgICAgICAgICAgIHZpcnR1YWxfdmdhID0gVkdBX3N0ZDsKKyAgICAgICAg fQorICAgICAgICBlbHNlIGlmICggKHZlbmRvcl9pZCA9PSAweDEwMTMpICYmIChkZXZpY2VfaWQg PT0gMHhiOCkgKQorICAgICAgICB7CisgICAgICAgICAgICB2Z2FfZGV2Zm4gPSBkZXZmbjsKKyAg ICAgICAgICAgIHZpcnR1YWxfdmdhID0gVkdBX2NpcnJ1czsKKyAgICAgICAgfQorICAgICAgICBl bHNlIGlmICggdmlydHVhbF92Z2EgPT0gVkdBX25vbmUgKQorICAgICAgICB7CisgICAgICAgICAg ICB2Z2FfZGV2Zm4gPSBkZXZmbjsKKyAgICAgICAgICAgIHZpcnR1YWxfdmdhID0gVkdBX3B0Owor ICAgICAgICAgICAgaWYgKCB2ZW5kb3JfaWQgPT0gMHg4MDg2ICkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICBpZ2Rfb3ByZWdpb25fcGdiYXNlID0gbWVtX2hvbGVfYWxsb2MoSUdEX09Q UkVHSU9OX1BBR0VTKTsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFdy aXRlIHRoZSB0aGUgT3BSZWdpb24gb2Zmc2V0IHRvIGdpdmUgdGhlIG9wcmVnaW9uCisgICAgICAg ICAgICAgICAgICogYWRkcmVzcyB0byB0aGUgZGV2aWNlIG1vZGVsLiBUaGUgZGV2aWNlIG1vZGVs IHdpbGwgdHJhcAorICAgICAgICAgICAgICAgICAqIGFuZCBtYXAgdGhlIE9wUmVnaW9uIGF0IHRo ZSBnaXZlIGFkZHJlc3MuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcGNp X3dyaXRlbCh2Z2FfZGV2Zm4sIFBDSV9JTlRFTF9PUFJFR0lPTiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlnZF9vcHJlZ2lvbl9wZ2Jhc2UgPDwgUEFHRV9TSElGVCk7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MDY4MDoKKyAgICAg ICAgLyogUElJWDQgQUNQSSBQTS4gU3BlY2lhbCBkZXZpY2Ugd2l0aCBzcGVjaWFsIFBDSSBjb25m aWcgc3BhY2UuICovCisgICAgICAgIEFTU0VSVCgodmVuZG9yX2lkID09IDB4ODA4NikgJiYgKGRl dmljZV9pZCA9PSAweDcxMTMpKTsKKyAgICAgICAgcGNpX3dyaXRldyhkZXZmbiwgMHgyMCwgMHgw MDAwKTsgLyogTm8gc21iIGJ1cyBJTyBlbmFibGUgKi8KKyAgICAgICAgcGNpX3dyaXRldyhkZXZm biwgMHhkMiwgMHgwMDAwKTsgLyogTm8gc21iIGJ1cyBJTyBlbmFibGUgKi8KKyAgICAgICAgcGNp X3dyaXRldyhkZXZmbiwgMHgyMiwgMHgwMDAwKTsKKyAgICAgICAgcGNpX3dyaXRldyhkZXZmbiwg MHgzYywgMHgwMDA5KTsgLyogSGFyZGNvZGVkIElSUTkgKi8KKyAgICAgICAgcGNpX3dyaXRldyhk ZXZmbiwgMHgzZCwgMHgwMDAxKTsKKyAgICAgICAgcGNpX3dyaXRlbChkZXZmbiwgMHg0MCwgQUNQ SV9QTTFBX0VWVF9CTEtfQUREUkVTU19WMSB8IDEpOworICAgICAgICBwY2lfd3JpdGViKGRldmZu LCAweDgwLCAweDAxKTsgLyogZW5hYmxlIFBNIGlvIHNwYWNlICovCisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSAweDA2MDE6CisgICAgICAgIC8qIExQQyBicmlkZ2UgKi8KKyAgICAgICAgaWYg KHZlbmRvcl9pZCA9PSAweDgwODYgJiYgZGV2aWNlX2lkID09IDB4MjkxOCkKKyAgICAgICAgewor ICAgICAgICAgICAgcGNpX3dyaXRlYihkZXZmbiwgMHgzYywgMHgwOSk7IC8qIEhhcmRjb2RlZCBJ UlE5ICovCisgICAgICAgICAgICBwY2lfd3JpdGViKGRldmZuLCAweDNkLCAweDAxKTsKKyAgICAg ICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIDB4NDAsIEFDUElfUE0xQV9FVlRfQkxLX0FERFJFU1Nf VjEgfCAxKTsKKyAgICAgICAgICAgIHBjaV93cml0ZWIoZGV2Zm4sIDB4NDQsIDB4ODApOyAvKiBl bmFibGUgUE0gaW8gc3BhY2UgKi8KKyAgICAgICAgICAgIG91dGwoU0NJX0VOX0lPUE9SVCwgaW5s KFNDSV9FTl9JT1BPUlQpIHwgR0JMX1NNSV9FTiB8IEFQTUNfRU4pOworICAgICAgICB9CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSAweDAxMDE6CisgICAgICAgIGlmICggdmVuZG9yX2lkID09 IDB4ODA4NiApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEludGVsIElDSHMgc2luY2UgUElJ WDM6IGVuYWJsZSBJREUgbGVnYWN5IG1vZGUuICovCisgICAgICAgICAgICBwY2lfd3JpdGV3KGRl dmZuLCAweDQwLCAweDgwMDApOyAvKiBlbmFibGUgSURFMCAqLworICAgICAgICAgICAgcGNpX3dy aXRldyhkZXZmbiwgMHg0MiwgMHg4MDAwKTsgLyogZW5hYmxlIElERTEgKi8KKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgcGNpX3NldHVwKHZvaWQpCiB7CiAgICAg dWludDhfdCBpc182NGJhciwgdXNpbmdfNjRiYXIsIGJhcjY0X3JlbG9jYXRlID0gMDsKICAgICB1 aW50MzJfdCBkZXZmbiwgYmFyX3JlZywgY21kLCBiYXJfZGF0YSwgYmFyX2RhdGFfdXBwZXI7CiAg ICAgdWludDY0X3QgYmFzZSwgYmFyX3N6LCBiYXJfc3pfdXBwZXIsIG1taW9fdG90YWwgPSAwOwot ICAgIHVpbnQzMl90IHZnYV9kZXZmbiA9IDI1NjsKLSAgICB1aW50MTZfdCBjbGFzcywgdmVuZG9y X2lkLCBkZXZpY2VfaWQ7CisgICAgdWludDE2X3QgdmVuZG9yX2lkLCBkZXZpY2VfaWQ7CiAgICAg dW5zaWduZWQgaW50IGJhciwgcGluLCBsaW5rLCBpc2FfaXJxOworICAgIGludCBpc19ydW5uaW5n X29uX3EzNSA9IDA7CiAKICAgICAvKiBSZXNvdXJjZXMgYXNzaWduYWJsZSB0byBQQ0kgZGV2aWNl cyB2aWEgQkFScy4gKi8KICAgICBzdHJ1Y3QgcmVzb3VyY2UgewpAQCAtMTMwLDEzICsyMTAsMjgg QEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKICAgICBpZiAoIHMgKQogICAgICAgICBtbWlvX2hvbGVf c2l6ZSA9IHN0cnRvbGwocywgTlVMTCwgMCk7CiAKKyAgICAvKiBjaGVjayBpZiB3ZSBhcmUgb24g UTM1IGFuZCBzZXQgdGhlIGZsYWcgaWYgaXQgaXMgdGhlIGNhc2UgKi8KKyAgICBpc19ydW5uaW5n X29uX3EzNSA9IGdldF9wY19tYWNoaW5lX3R5cGUoKSA9PSBNQUNISU5FX1RZUEVfUTM1OworCiAg ICAgLyogUHJvZ3JhbSBQQ0ktSVNBIGJyaWRnZSB3aXRoIGFwcHJvcHJpYXRlIGxpbmsgcm91dGVz LiAqLwogICAgIGlzYV9pcnEgPSAwOwogICAgIGZvciAoIGxpbmsgPSAwOyBsaW5rIDwgNDsgbGlu aysrICkKICAgICB7CiAgICAgICAgIGRvIHsgaXNhX2lycSA9IChpc2FfaXJxICsgMSkgJiAxNTsK ICAgICAgICAgfSB3aGlsZSAoICEoUENJX0lTQV9JUlFfTUFTSyAmICgxVSA8PCBpc2FfaXJxKSkg KTsKLSAgICAgICAgcGNpX3dyaXRlYihQQ0lfSVNBX0RFVkZOLCAweDYwICsgbGluaywgaXNhX2ly cSk7CisKKyAgICAgICAgaWYgKGlzX3J1bm5pbmdfb25fcTM1KQorICAgICAgICB7CisgICAgICAg ICAgICBwY2lfd3JpdGViKFBDSV9JQ0g5X0xQQ19ERVZGTiwgMHg2MCArIGxpbmssIGlzYV9pcnEp OworCisgICAgICAgICAgICAvKiBQSVJRRS4uUElSUUggYXJlIHVudXNlZCAqLworICAgICAgICAg ICAgcGNpX3dyaXRlYihQQ0lfSUNIOV9MUENfREVWRk4sIDB4NjggKyBsaW5rLCAweDgwKTsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHBjaV93cml0ZWIo UENJX0lTQV9ERVZGTiwgMHg2MCArIGxpbmssIGlzYV9pcnEpOworICAgICAgICB9CisKICAgICAg ICAgcHJpbnRmKCJQQ0ktSVNBIGxpbmsgJXUgcm91dGVkIHRvIElSUSV1XG4iLCBsaW5rLCBpc2Ff aXJxKTsKICAgICB9CiAKQEAgLTE0Nyw2NiArMjQyLDEzIEBAIHZvaWQgcGNpX3NldHVwKHZvaWQp CiAgICAgLyogU2NhbiB0aGUgUENJIGJ1cyBhbmQgbWFwIHJlc291cmNlcy4gKi8KICAgICBmb3Ig KCBkZXZmbiA9IDA7IGRldmZuIDwgMjU2OyBkZXZmbisrICkKICAgICB7Ci0gICAgICAgIGNsYXNz ICAgICA9IHBjaV9yZWFkdyhkZXZmbiwgUENJX0NMQVNTX0RFVklDRSk7CiAgICAgICAgIHZlbmRv cl9pZCA9IHBjaV9yZWFkdyhkZXZmbiwgUENJX1ZFTkRPUl9JRCk7CiAgICAgICAgIGRldmljZV9p ZCA9IHBjaV9yZWFkdyhkZXZmbiwgUENJX0RFVklDRV9JRCk7CiAgICAgICAgIGlmICggKHZlbmRv cl9pZCA9PSAweGZmZmYpICYmIChkZXZpY2VfaWQgPT0gMHhmZmZmKSApCiAgICAgICAgICAgICBj b250aW51ZTsKIAotICAgICAgICBBU1NFUlQoKGRldmZuICE9IFBDSV9JU0FfREVWRk4pIHx8Ci0g ICAgICAgICAgICAgICAoKHZlbmRvcl9pZCA9PSAweDgwODYpICYmIChkZXZpY2VfaWQgPT0gMHg3 MDAwKSkpOwotCi0gICAgICAgIHN3aXRjaCAoIGNsYXNzICkKLSAgICAgICAgewotICAgICAgICBj YXNlIDB4MDMwMDoKLSAgICAgICAgICAgIC8qIElmIGVtdWxhdGVkIFZHQSBpcyBmb3VuZCwgcHJl c2VydmUgaXQgYXMgcHJpbWFyeSBWR0EuICovCi0gICAgICAgICAgICBpZiAoICh2ZW5kb3JfaWQg PT0gMHgxMjM0KSAmJiAoZGV2aWNlX2lkID09IDB4MTExMSkgKQotICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgIHZnYV9kZXZmbiA9IGRldmZuOwotICAgICAgICAgICAgICAgIHZpcnR1YWxf dmdhID0gVkdBX3N0ZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCAodmVu ZG9yX2lkID09IDB4MTAxMykgJiYgKGRldmljZV9pZCA9PSAweGI4KSApCi0gICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgICAgdmdhX2RldmZuID0gZGV2Zm47Ci0gICAgICAgICAgICAgICAgdmly dHVhbF92Z2EgPSBWR0FfY2lycnVzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp ZiAoIHZpcnR1YWxfdmdhID09IFZHQV9ub25lICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICB2Z2FfZGV2Zm4gPSBkZXZmbjsKLSAgICAgICAgICAgICAgICB2aXJ0dWFsX3ZnYSA9IFZH QV9wdDsKLSAgICAgICAgICAgICAgICBpZiAoIHZlbmRvcl9pZCA9PSAweDgwODYgKQotICAgICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWdkX29wcmVnaW9uX3BnYmFzZSA9IG1l bV9ob2xlX2FsbG9jKElHRF9PUFJFR0lPTl9QQUdFUyk7Ci0gICAgICAgICAgICAgICAgICAgIC8q Ci0gICAgICAgICAgICAgICAgICAgICAqIFdyaXRlIHRoZSB0aGUgT3BSZWdpb24gb2Zmc2V0IHRv IGdpdmUgdGhlIG9wcmVnaW9uCi0gICAgICAgICAgICAgICAgICAgICAqIGFkZHJlc3MgdG8gdGhl IGRldmljZSBtb2RlbC4gVGhlIGRldmljZSBtb2RlbCB3aWxsIHRyYXAgCi0gICAgICAgICAgICAg ICAgICAgICAqIGFuZCBtYXAgdGhlIE9wUmVnaW9uIGF0IHRoZSBnaXZlIGFkZHJlc3MuCi0gICAg ICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBwY2lfd3JpdGVsKHZnYV9k ZXZmbiwgUENJX0lOVEVMX09QUkVHSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlnZF9vcHJlZ2lvbl9wZ2Jhc2UgPDwgUEFHRV9TSElGVCk7Ci0gICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMHgwNjgwOgot ICAgICAgICAgICAgLyogUElJWDQgQUNQSSBQTS4gU3BlY2lhbCBkZXZpY2Ugd2l0aCBzcGVjaWFs IFBDSSBjb25maWcgc3BhY2UuICovCi0gICAgICAgICAgICBBU1NFUlQoKHZlbmRvcl9pZCA9PSAw eDgwODYpICYmIChkZXZpY2VfaWQgPT0gMHg3MTEzKSk7Ci0gICAgICAgICAgICBwY2lfd3JpdGV3 KGRldmZuLCAweDIwLCAweDAwMDApOyAvKiBObyBzbWIgYnVzIElPIGVuYWJsZSAqLwotICAgICAg ICAgICAgcGNpX3dyaXRldyhkZXZmbiwgMHhkMiwgMHgwMDAwKTsgLyogTm8gc21iIGJ1cyBJTyBl bmFibGUgKi8KLSAgICAgICAgICAgIHBjaV93cml0ZXcoZGV2Zm4sIDB4MjIsIDB4MDAwMCk7Ci0g ICAgICAgICAgICBwY2lfd3JpdGV3KGRldmZuLCAweDNjLCAweDAwMDkpOyAvKiBIYXJkY29kZWQg SVJROSAqLwotICAgICAgICAgICAgcGNpX3dyaXRldyhkZXZmbiwgMHgzZCwgMHgwMDAxKTsKLSAg ICAgICAgICAgIHBjaV93cml0ZWwoZGV2Zm4sIDB4NDAsIEFDUElfUE0xQV9FVlRfQkxLX0FERFJF U1NfVjEgfCAxKTsKLSAgICAgICAgICAgIHBjaV93cml0ZWIoZGV2Zm4sIDB4ODAsIDB4MDEpOyAv KiBlbmFibGUgUE0gaW8gc3BhY2UgKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl IDB4MDEwMToKLSAgICAgICAgICAgIGlmICggdmVuZG9yX2lkID09IDB4ODA4NiApCi0gICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgICAgLyogSW50ZWwgSUNIcyBzaW5jZSBQSUlYMzogZW5hYmxl IElERSBsZWdhY3kgbW9kZS4gKi8KLSAgICAgICAgICAgICAgICBwY2lfd3JpdGV3KGRldmZuLCAw eDQwLCAweDgwMDApOyAvKiBlbmFibGUgSURFMCAqLwotICAgICAgICAgICAgICAgIHBjaV93cml0 ZXcoZGV2Zm4sIDB4NDIsIDB4ODAwMCk7IC8qIGVuYWJsZSBJREUxICovCi0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBjbGFzc19zcGVjaWZpY19w Y2lfZGV2aWNlX3NldHVwKHZlbmRvcl9pZCwgZGV2aWNlX2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAgLyogdmlydF9idXMgc3VwcG9ydCBUQkQgKi8sIGRldmZu KTsKIAogICAgICAgICAvKiBNYXAgdGhlIEkvTyBtZW1vcnkgYW5kIHBvcnQgcmVzb3VyY2VzLiAq LwogICAgICAgICBmb3IgKCBiYXIgPSAwOyBiYXIgPCA3OyBiYXIrKyApCkBAIC0yODMsNyArMzI1 LDkgQEAgdm9pZCBwY2lfc2V0dXAodm9pZCkKICAgICAgICAgewogICAgICAgICAgICAgLyogVGhp cyBpcyB0aGUgYmFyYmVyJ3MgcG9sZSBtYXBwaW5nIHVzZWQgYnkgWGVuLiAqLwogICAgICAgICAg ICAgbGluayA9ICgocGluIC0gMSkgKyAoZGV2Zm4gPj4gMykpICYgMzsKLSAgICAgICAgICAgIGlz YV9pcnEgPSBwY2lfcmVhZGIoUENJX0lTQV9ERVZGTiwgMHg2MCArIGxpbmspOworICAgICAgICAg ICAgaXNhX2lycSA9IHBjaV9yZWFkYihpc19ydW5uaW5nX29uX3EzNSA/CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBDSV9JQ0g5X0xQQ19ERVZGTiA6IFBDSV9JU0FfREVWRk4sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjAgKyBsaW5rKTsKICAgICAgICAgICAg IHBjaV93cml0ZWIoZGV2Zm4sIFBDSV9JTlRFUlJVUFRfTElORSwgaXNhX2lycSk7CiAgICAgICAg ICAgICBwcmludGYoInBjaSBkZXYgJTAyeDoleCBJTlQlYy0+SVJRJXVcbiIsCiAgICAgICAgICAg ICAgICAgICAgZGV2Zm4+PjMsIGRldmZuJjcsICdBJytwaW4tMSwgaXNhX2lycSk7Ci0tIAoyLjEx LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs