From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suravee Suthikulpanit Subject: [PATCH V4] x86/HVM: Introduce struct hvm_pi_ops Date: Mon, 16 Jan 2017 20:09:10 -0600 Message-ID: <1484618950-785-1-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: kevin.tian@intel.com, JBeulich@suse.com, konrad.wilk@oracle.com, Jun Nakajima , andrew.cooper3@citrix.com, Suravee Suthikulpanit , sherry.hurwitz@amd.com, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgZnVuY3Rpb24gcG9pbnRlcnMgaW4gc3RydWN0IHZteF9kb21haW4gZm9yIG1h bmFnaW5nIGh2bQpwb3N0ZWQgaW50ZXJydXB0IGNhbiBiZSB1c2VkIGFsc28gYnkgU1ZNIEFWSUMu IFRoZXJlZm9yZSwgdGhpcyBwYXRjaAppbnRyb2R1Y2VzIHRoZSBzdHJ1Y3QgaHZtX3BpX29wcyBp biB0aGUgc3RydWN0IGh2bV9kb21haW4gdG8gaG9sZCB0aGVtLgoKU2lnbmVkLW9mZi1ieTogU3Vy YXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IEFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBLb25yYWQgUnplc3p1 dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJv cmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgpDYzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2Uu Y29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDYzogS2V2aW4g VGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Ci0tLQoKQ2hhbmdlcyBpbiBWNDoKICAqIFJlLXdv cmQgY29tbWVudHMgZm9yIHRoZSBzdHJ1Y3QgaHZtX3BpX29wcy4KICAqIE1vdmUgdGhlIGNvbW1l bnQgZm9yIFZNWCBwZXIgS2V2aW4ncyByZXF1ZXN0LgoKIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jICAgICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggICB8IDI5ICsrKysrKysrKysrKysrKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggICAgICB8ICA0ICstCiB4ZW4vaW5jbHVkZS9h c20teDg2L2h2bS92bXgvdm1jcy5oIHwgNTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiA0IGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92 bXgvdm14LmMKaW5kZXggN2IyYzUwYy4uM2RiNGVkOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTE5OCwx OCArMTk4LDYxIEBAIHN0YXRpYyB2b2lkIHZteF9waV9kb19yZXN1bWUoc3RydWN0IHZjcHUgKnYp CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaV9ibG9ja2luZ19saXN0X2xvY2ssIGZsYWdz KTsKIH0KIAorLyoKKyAqIFRvIGhhbmRsZSBwb3N0ZWQgaW50ZXJydXB0cyBjb3JyZWN0bHksIHdl IG5lZWQgdG8gc2V0IHRoZSBmb2xsb3dpbmcKKyAqIHN0YXRlOgorICoKKyAqICogVGhlIFBJIG5v dGlmaWNhdGlvbiB2ZWN0b3IgKE5WKQorICogKiBUaGUgUEkgbm90aWZpY2F0aW9uIGRlc3RpbmF0 aW9uIHByb2Nlc3NvciAoTkRTVCkKKyAqICogVGhlIFBJICJzdXBwcmVzcyBub3RpZmljYXRpb24i IGJpdCAoU04pCisgKiAqIFRoZSB2Y3B1IHBpICJibG9ja2VkIiBsaXN0CisgKgorICogVk1YIGlt cGxlbWVudHMgdGhlIHJ1bnN0YXRlIHRyYW5zaXRpb25zIGFzIHRoZSBmb2xsb3dpbmc6CisgKgor ICogQTogLi4uIC0+IHJ1bm5pbmcKKyAqICAtIFNOID0gMAorICogIC0gTkRTVCA9IHYtPnByb2Nl c3NvcgorICogIElmIGEgVk0gaXMgY3VycmVudGx5IHJ1bm5pbmcsIHdlIHdhbnQgdGhlIFBJIGRl bGl2ZXJlZCB0byB0aGUgZ3Vlc3QgdmNwdQorICogIG9uIHRoZSBwcm9wZXIgcGNwdS4KKyAqCisg KiBCOiBydW5uaW5nIC0+IC4uLgorICogIC0gU04gPSAxCisgKgorICogQzogLi4uIC0+IGJsb2Nr ZWQKKyAqICAtIFNOID0gMAorICogIC0gTlYgPSBwaV93YWtldXBfdmVjdG9yCisgKiAgLSBBZGQg dmNwdSB0byBibG9ja2VkIGxpc3QKKyAqICBJZiB0aGUgdm0gaXMgYmxvY2tlZCwgd2Ugd2FudCB0 aGUgUEkgZGVsaXZlcmVkIHRvIFhlbiBzbyB0aGF0IGl0IGNhbgorICogIHdha2UgaXQgdXAuCisg KgorICogRDogLi4uIC0+IHZtZW50cnkKKyAqICAtIFNOID0gMAorICogIC0gTlYgPSBwb3N0ZWRf aW50cl92ZWN0b3IKKyAqICAtIFRha2UgdmNwdSBvZmYgYmxvY2tlZCBsaXN0CisgKgorICogIElm IHRoZSBWTSBpcyBjdXJyZW50bHkgZWl0aGVyIHByZWVtcHRlZCBvciBvZmZsaW5lIChpLmUuLCBu b3QgcnVubmluZworICogIGJlY2F1c2Ugb2Ygc29tZSByZWFzb24gb3RoZXIgdGhhbiBibG9ja2lu ZyB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQpLAorICogIHRoZXJlJ3Mgbm90aGluZyBYZW4gY2Fu IGRvIC0tIHdlIHdhbnQgdGhlIGludGVycnVwdCBwZW5kaW5nIGJpdCBzZXQgaW4KKyAqICB0aGUg Z3Vlc3QsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGJvdGhlciBYZW4gd2l0aCBhbiBpbnRlcnJ1cHQg KFNOIGNsZWFyKS4KKyAqCisgKiBUaGVyZSdzIGEgYnJpZWYgd2luZG93IG9mIHRpbWUgYmV0d2Vl biB2bXhfaW50cl9hc3Npc3QoKSBhbmQgY2hlY2tpbmcKKyAqIHNvZnRpcnFzIHdoZXJlIGlmIGFu IGludGVycnVwdCBjb21lcyBpbiBpdCBtYXkgYmUgbG9zdDsgc28gd2UgbmVlZCBYZW4KKyAqIHRv IGdldCBhbiBpbnRlcnJ1cHQgYW5kIHJhaXNlIGEgc29mdGlycSBzbyB0aGF0IGl0IHdpbGwgZ28g dGhyb3VnaCB0aGUKKyAqIHZteF9pbnRyX2Fzc2lzdCgpIHBhdGggYWdhaW4gKFNOIGNsZWFyLCBO ViA9IHBvc3RlZF9pbnRlcnJ1cHQpLgorICovCisKIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IHdoZW4gcGNpZGV2c19sb2NrIGlzIGhlbGQgKi8KIHZvaWQgdm14X3BpX2hvb2tzX2Fzc2lnbihz dHJ1Y3QgZG9tYWluICpkKQogewogICAgIGlmICggIWlvbW11X2ludHBvc3QgfHwgIWhhc19odm1f Y29udGFpbmVyX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghZC0+ YXJjaC5odm1fZG9tYWluLnZteC52Y3B1X2Jsb2NrKTsKKyAgICBBU1NFUlQoIWQtPmFyY2guaHZt X2RvbWFpbi5waV9vcHMudmNwdV9ibG9jayk7CiAKLSAgICBkLT5hcmNoLmh2bV9kb21haW4udm14 LnZjcHVfYmxvY2sgPSB2bXhfdmNwdV9ibG9jazsKLSAgICBkLT5hcmNoLmh2bV9kb21haW4udm14 LnBpX3N3aXRjaF9mcm9tID0gdm14X3BpX3N3aXRjaF9mcm9tOwotICAgIGQtPmFyY2guaHZtX2Rv bWFpbi52bXgucGlfc3dpdGNoX3RvID0gdm14X3BpX3N3aXRjaF90bzsKLSAgICBkLT5hcmNoLmh2 bV9kb21haW4udm14LnBpX2RvX3Jlc3VtZSA9IHZteF9waV9kb19yZXN1bWU7CisgICAgZC0+YXJj aC5odm1fZG9tYWluLnBpX29wcy52Y3B1X2Jsb2NrID0gdm14X3ZjcHVfYmxvY2s7CisgICAgZC0+ YXJjaC5odm1fZG9tYWluLnBpX29wcy5zd2l0Y2hfZnJvbSA9IHZteF9waV9zd2l0Y2hfZnJvbTsK KyAgICBkLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnN3aXRjaF90byA9IHZteF9waV9zd2l0Y2hf dG87CisgICAgZC0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5kb19yZXN1bWUgPSB2bXhfcGlfZG9f cmVzdW1lOwogfQogCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHBjaWRldnNfbG9j ayBpcyBoZWxkICovCkBAIC0yMTgsMTIgKzI2MSwxMiBAQCB2b2lkIHZteF9waV9ob29rc19kZWFz c2lnbihzdHJ1Y3QgZG9tYWluICpkKQogICAgIGlmICggIWlvbW11X2ludHBvc3QgfHwgIWhhc19o dm1fY29udGFpbmVyX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChk LT5hcmNoLmh2bV9kb21haW4udm14LnZjcHVfYmxvY2spOworICAgIEFTU0VSVChkLT5hcmNoLmh2 bV9kb21haW4ucGlfb3BzLnZjcHVfYmxvY2spOwogCi0gICAgZC0+YXJjaC5odm1fZG9tYWluLnZt eC52Y3B1X2Jsb2NrID0gTlVMTDsKLSAgICBkLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRj aF9mcm9tID0gTlVMTDsKLSAgICBkLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF90byA9 IE5VTEw7Ci0gICAgZC0+YXJjaC5odm1fZG9tYWluLnZteC5waV9kb19yZXN1bWUgPSBOVUxMOwor ICAgIGQtPmFyY2guaHZtX2RvbWFpbi5waV9vcHMudmNwdV9ibG9jayA9IE5VTEw7CisgICAgZC0+ YXJjaC5odm1fZG9tYWluLnBpX29wcy5zd2l0Y2hfZnJvbSA9IE5VTEw7CisgICAgZC0+YXJjaC5o dm1fZG9tYWluLnBpX29wcy5zd2l0Y2hfdG8gPSBOVUxMOworICAgIGQtPmFyY2guaHZtX2RvbWFp bi5waV9vcHMuZG9fcmVzdW1lID0gTlVMTDsKIH0KIAogc3RhdGljIGludCB2bXhfZG9tYWluX2lu aXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKQEAgLTkwMSw4ICs5NDQsOCBAQCBzdGF0aWMgdm9p ZCB2bXhfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikKICAgICB2bXhfcmVzdG9yZV9o b3N0X21zcnMoKTsKICAgICB2bXhfc2F2ZV9kcih2KTsKIAotICAgIGlmICggdi0+ZG9tYWluLT5h cmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF9mcm9tICkKLSAgICAgICAgdi0+ZG9tYWluLT5h cmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF9mcm9tKHYpOworICAgIGlmICggdi0+ZG9tYWlu LT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnN3aXRjaF9mcm9tICkKKyAgICAgICAgdi0+ZG9tYWlu LT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnN3aXRjaF9mcm9tKHYpOwogfQogCiBzdGF0aWMgdm9p ZCB2bXhfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpCkBAIC05MTYsOCArOTU5LDggQEAg c3RhdGljIHZvaWQgdm14X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KQogICAgIHZteF9y ZXN0b3JlX2d1ZXN0X21zcnModik7CiAgICAgdm14X3Jlc3RvcmVfZHIodik7CiAKLSAgICBpZiAo IHYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfdG8gKQotICAgICAgICB2 LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi52bXgucGlfc3dpdGNoX3RvKHYpOworICAgIGlmICgg di0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnN3aXRjaF90byApCisgICAgICAgIHYt PmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5zd2l0Y2hfdG8odik7CiB9CiAKIApAQCAt Mzk2Myw4ICs0MDA2LDggQEAgdm9pZCB2bXhfdm1lbnRlcl9oZWxwZXIoY29uc3Qgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgc3RydWN0IGh2bV92Y3B1X2FzaWQgKnBfYXNpZDsKICAg ICBib29sX3QgbmVlZF9mbHVzaDsKIAotICAgIGlmICggY3Vyci0+ZG9tYWluLT5hcmNoLmh2bV9k b21haW4udm14LnBpX2RvX3Jlc3VtZSApCi0gICAgICAgIGN1cnItPmRvbWFpbi0+YXJjaC5odm1f ZG9tYWluLnZteC5waV9kb19yZXN1bWUoY3Vycik7CisgICAgaWYgKCBjdXJyLT5kb21haW4tPmFy Y2guaHZtX2RvbWFpbi5waV9vcHMuZG9fcmVzdW1lICkKKyAgICAgICAgY3Vyci0+ZG9tYWluLT5h cmNoLmh2bV9kb21haW4ucGlfb3BzLmRvX3Jlc3VtZShjdXJyKTsKIAogICAgIGlmICggIWNwdV9o YXNfdm14X3ZwaWQgKQogICAgICAgICBnb3RvIG91dDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgK aW5kZXggZjM0ZDc4NC4uZGUxZjkzMCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKQEAgLTcy LDYgKzcyLDMzIEBAIHN0cnVjdCBodm1faW9yZXFfc2VydmVyIHsKICAgICBib29sX3QgICAgICAg ICAgICAgICAgIGJ1ZmlvcmVxX2F0b21pYzsKIH07CiAKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBk ZWZpbmVzIGZ1bmN0aW9uIGhvb2tzIHRvIHN1cHBvcnQgaGFyZHdhcmUtYXNzaXN0ZWQKKyAqIHZp cnR1YWwgaW50ZXJydXB0IGRlbGl2ZXJ5IHRvIGd1ZXN0LiAoZS5nLiBWTVggUEkgYW5kIFNWTSBB VklDKS4KKyAqCisgKiBUaGVzZSBob29rcyBhcmUgZGVmaW5lZCBieSB0aGUgdW5kZXJseWluZyBh cmNoLXNwZWNpZmljIGNvZGUKKyAqIGFzIG5lZWRlZC4gRm9yIGV4YW1wbGU6CisgKiAgIC0gV2hl biB0aGUgZG9tYWluIGlzIGVuYWJsZWQgd2l0aCB2aXJ0dWFsIElQSSBkZWxpdmVyeQorICogICAt IFdoZW4gdGhlIGRvbWFpbiBpcyBlbmFibGVkIHdpdGggdmlydHVhbCBJL08gaW50IGRlbGl2ZXJ5 CisgKiAgICAgYW5kIGFjdHVhbGx5IGhhcyBhIHBoeXNpY2FsIGRldmljZSBhc3NpZ25lZCAuCisg Ki8KK3N0cnVjdCBodm1fcGlfb3BzIHsKKyAgICAvKiBIb29rIGludG8gY3R4X3N3aXRjaF9mcm9t LiAqLworICAgIHZvaWQgKCpzd2l0Y2hfZnJvbSkgKHN0cnVjdCB2Y3B1ICp2KTsKKworICAgIC8q IEhvb2sgaW50byBjdHhfc3dpdGNoX3RvICovCisgICAgdm9pZCAoKnN3aXRjaF90bykgKHN0cnVj dCB2Y3B1ICp2KTsKKworICAgIC8qCisgICAgICogSG9vayBpbnRvIGFyY2hfdmNwdV9ibG9jaygp LCB3aGljaCBpcyBjYWxsZWQKKyAgICAgKiAgZnJvbSB2Y3B1X2Jsb2NrKCkgYW5kIHZjcHVfZG9f cG9sbCgpLgorICAgICAqLworICAgIHZvaWQgKCp2Y3B1X2Jsb2NrKSAoc3RydWN0IHZjcHUgKik7 CisKKyAgICAvKiBIb29rIGludG8gdGhlIHZtZW50cnkgcGF0aC4gKi8KKyAgICB2b2lkICgqZG9f cmVzdW1lKSAoc3RydWN0IHZjcHUgKnYpOworfTsKKwogc3RydWN0IGh2bV9kb21haW4gewogICAg IC8qIEd1ZXN0IHBhZ2UgcmFuZ2UgdXNlZCBmb3Igbm9uLWRlZmF1bHQgaW9yZXEgc2VydmVycyAq LwogICAgIHN0cnVjdCB7CkBAIC0xNDgsNiArMTc1LDggQEAgc3RydWN0IGh2bV9kb21haW4gewog ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgfSB3cml0ZV9tYXA7CiAKKyAgICBz dHJ1Y3QgaHZtX3BpX29wcyBwaV9vcHM7CisKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB2 bXhfZG9tYWluIHZteDsKICAgICAgICAgc3RydWN0IHN2bV9kb21haW4gc3ZtOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9odm0uaAppbmRleCA3ZTc0NjJlLi5iMWU0Yzc1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L2h2bS9odm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaApAQCAt NjM4LDggKzYzOCw4IEBAIHVuc2lnbmVkIGxvbmcgaHZtX2NyNF9ndWVzdF9yZXNlcnZlZF9iaXRz KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBib29sX3QgcmVzdG9yZSk7CiAgICAgc3RydWN0IHZjcHUg KnZfID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHN0 cnVjdCBkb21haW4gKmRfID0gdl8tPmRvbWFpbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkXykgJiYgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAoY3B1X2hhc192bXggJiYgZF8tPmFyY2guaHZtX2RvbWFp bi52bXgudmNwdV9ibG9jaykgKSAgXAotICAgICAgICBkXy0+YXJjaC5odm1fZG9tYWluLnZteC52 Y3B1X2Jsb2NrKHZfKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIChkXy0+YXJjaC5odm1f ZG9tYWluLnBpX29wcy52Y3B1X2Jsb2NrKSApICAgICAgICAgIFwKKyAgICAgICAgZF8tPmFyY2gu aHZtX2RvbWFpbi5waV9vcHMudmNwdV9ibG9jayh2Xyk7ICAgICAgICAgIFwKIH0pCiAKICNlbmRp ZiAvKiBfX0FTTV9YODZfSFZNX0hWTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZteC92bWNzLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5o CmluZGV4IDk5N2Y0ZjUuLjRlYzhiMDggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL3ZteC92bWNzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaApA QCAtNzcsNjUgKzc3LDYgQEAgc3RydWN0IHZteF9kb21haW4gewogICAgIHVuc2lnbmVkIGxvbmcg YXBpY19hY2Nlc3NfbWZuOwogICAgIC8qIFZNWF9ET01BSU5fKiAqLwogICAgIHVuc2lnbmVkIGlu dCBzdGF0dXM7Ci0KLSAgICAvKgotICAgICAqIFRvIGhhbmRsZSBwb3N0ZWQgaW50ZXJydXB0cyBj b3JyZWN0bHksIHdlIG5lZWQgdG8gc2V0IHRoZSBmb2xsb3dpbmcKLSAgICAgKiBzdGF0ZToKLSAg ICAgKgotICAgICAqICogVGhlIFBJIG5vdGlmaWNhdGlvbiB2ZWN0b3IgKE5WKQotICAgICAqICog VGhlIFBJIG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbiBwcm9jZXNzb3IgKE5EU1QpCi0gICAgICog KiBUaGUgUEkgInN1cHByZXNzIG5vdGlmaWNhdGlvbiIgYml0IChTTikKLSAgICAgKiAqIFRoZSB2 Y3B1IHBpICJibG9ja2VkIiBsaXN0Ci0gICAgICoKLSAgICAgKiBJZiBhIFZNIGlzIGN1cnJlbnRs eSBydW5uaW5nLCB3ZSB3YW50IHRoZSBQSSBkZWxpdmVyZWQgdG8gdGhlIGd1ZXN0IHZjcHUKLSAg ICAgKiBvbiB0aGUgcHJvcGVyIHBjcHUgKE5EU1QgPSB2LT5wcm9jZXNzb3IsIFNOIGNsZWFyKS4K LSAgICAgKgotICAgICAqIElmIHRoZSB2bSBpcyBibG9ja2VkLCB3ZSB3YW50IHRoZSBQSSBkZWxp dmVyZWQgdG8gWGVuIHNvIHRoYXQgaXQgY2FuCi0gICAgICogd2FrZSBpdCB1cCAgKFNOIGNsZWFy LCBOViA9IHBpX3dha2V1cF92ZWN0b3IsIHZjcHUgb24gYmxvY2sgbGlzdCkuCi0gICAgICoKLSAg ICAgKiBJZiB0aGUgVk0gaXMgY3VycmVudGx5IGVpdGhlciBwcmVlbXB0ZWQgb3Igb2ZmbGluZSAo aS5lLiwgbm90IHJ1bm5pbmcKLSAgICAgKiBiZWNhdXNlIG9mIHNvbWUgcmVhc29uIG90aGVyIHRo YW4gYmxvY2tpbmcgd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0KSwKLSAgICAgKiB0aGVyZSdzIG5v dGhpbmcgWGVuIGNhbiBkbyAtLSB3ZSB3YW50IHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgc2V0 IGluCi0gICAgICogdGhlIGd1ZXN0LCBidXQgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgWGVuIHdp dGggYW4gaW50ZXJydXB0IChTTiBjbGVhcikuCi0gICAgICoKLSAgICAgKiBUaGVyZSdzIGEgYnJp ZWYgd2luZG93IG9mIHRpbWUgYmV0d2VlbiB2bXhfaW50cl9hc3Npc3QoKSBhbmQgY2hlY2tpbmcK LSAgICAgKiBzb2Z0aXJxcyB3aGVyZSBpZiBhbiBpbnRlcnJ1cHQgY29tZXMgaW4gaXQgbWF5IGJl IGxvc3Q7IHNvIHdlIG5lZWQgWGVuCi0gICAgICogdG8gZ2V0IGFuIGludGVycnVwdCBhbmQgcmFp c2UgYSBzb2Z0aXJxIHNvIHRoYXQgaXQgd2lsbCBnbyB0aHJvdWdoIHRoZQotICAgICAqIHZteF9p bnRyX2Fzc2lzdCgpIHBhdGggYWdhaW4gKFNOIGNsZWFyLCBOViA9IHBvc3RlZF9pbnRlcnJ1cHQp LgotICAgICAqCi0gICAgICogVGhlIHdheSB3ZSBpbXBsZW1lbnQgdGhpcyBub3cgaXMgYnkgbG9v a2luZyBhdCB3aGF0IG5lZWRzIHRvIGhhcHBlbiBvbgotICAgICAqIHRoZSBmb2xsb3dpbmcgcnVu c3RhdGUgdHJhbnNpdGlvbnM6Ci0gICAgICoKLSAgICAgKiBBOiBydW5uYWJsZSAtPiBydW5uaW5n Ci0gICAgICogIC0gU04gPSAwCi0gICAgICogIC0gTkRTVCA9IHYtPnByb2Nlc3NvcgotICAgICAq IEI6IHJ1bm5pbmcgLT4gcnVubmFibGUKLSAgICAgKiAgLSBTTiA9IDEKLSAgICAgKiBDOiBydW5u aW5nIC0+IGJsb2NrZWQKLSAgICAgKiAgLSBOViA9IHBpX3dha2V1cF92ZWN0b3IKLSAgICAgKiAg LSBBZGQgdmNwdSB0byBibG9ja2VkIGxpc3QKLSAgICAgKiBEOiBibG9ja2VkIC0+IHJ1bm5hYmxl Ci0gICAgICogIC0gTlYgPSBwb3N0ZWRfaW50cl92ZWN0b3IKLSAgICAgKiAgLSBUYWtlIHZjcHUg b2ZmIGJsb2NrZWQgbGlzdAotICAgICAqCi0gICAgICogRm9yIHRyYW5zaXRpb25zIEEgYW5kIEIs IHdlIGFkZCBob29rcyBpbnRvIHZteF9jdHh0X3N3aXRjaF97ZnJvbSx0b30KLSAgICAgKiBwYXRo cy4KLSAgICAgKgotICAgICAqIEZvciB0cmFuc2l0aW9uIEMsIHdlIGFkZCBhIG5ldyBhcmNoIGhv b2ssIGFyY2hfdmNwdV9ibG9jaygpLCB3aGljaCBpcwotICAgICAqIGNhbGxlZCBmcm9tIHZjcHVf YmxvY2soKSBhbmQgdmNwdV9kb19wb2xsKCkuCi0gICAgICoKLSAgICAgKiBGb3IgdHJhbnNpdGlv biBELCByYXRoZXIgdGhhbiBhZGQgYW4gZXh0cmEgYXJjaCBob29rIG9uIHZjcHVfd2FrZSwgd2UK LSAgICAgKiBhZGQgYSBob29rIG9uIHRoZSB2bWVudHJ5IHBhdGggd2hpY2ggY2hlY2tzIHRvIHNl ZSBpZiBlaXRoZXIgb2YgdGhlIHR3bwotICAgICAqIGFjdGlvbnMgbmVlZCB0byBiZSB0YWtlbi4K LSAgICAgKgotICAgICAqIFRoZXNlIGhvb2tzIG9ubHkgbmVlZCB0byBiZSBjYWxsZWQgd2hlbiB0 aGUgZG9tYWluIGluIHF1ZXN0aW9uIGFjdHVhbGx5Ci0gICAgICogaGFzIGEgcGh5c2ljYWwgZGV2 aWNlIGFzc2lnbmVkIHRvIGl0LCBzbyB3ZSBzZXQgYW5kIGNsZWFyIHRoZSBjYWxsYmFja3MKLSAg ICAgKiBhcyBhcHByb3ByaWF0ZSB3aGVuIGRldmljZSBhc3NpZ25tZW50IGNoYW5nZXMuCi0gICAg ICovCi0gICAgdm9pZCAoKnZjcHVfYmxvY2spIChzdHJ1Y3QgdmNwdSAqKTsKLSAgICB2b2lkICgq cGlfc3dpdGNoX2Zyb20pIChzdHJ1Y3QgdmNwdSAqdik7Ci0gICAgdm9pZCAoKnBpX3N3aXRjaF90 bykgKHN0cnVjdCB2Y3B1ICp2KTsKLSAgICB2b2lkICgqcGlfZG9fcmVzdW1lKSAoc3RydWN0IHZj cHUgKnYpOwogfTsKIAogc3RydWN0IHBpX2Rlc2MgewotLSAKMS45LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK