From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2] xen-hvm: stop faking I/O to access PCI config space Date: Fri, 18 May 2018 14:00:06 +0100 Message-ID: <1526648406-1746-1-git-send-email-paul.durrant@citrix.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.89) (envelope-from ) id 1fJezV-0007Jz-Kf for xen-devel@lists.xenproject.org; Fri, 18 May 2018 13:00:13 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum , Paul Durrant , Anthony Perard , Paolo Bonzini , Roger Pau Monne , Richard Henderson List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjdXJyZW50IGhhY2tlcnkgd2hlcmUgSU9SRVFfVFlQRV9Q Q0lfQ09ORklHCnJlcXVlc3RzIGFyZSBoYW5kbGVkIGJ5IGZha2luZyBQSU8gdG8gMHhjZjggYW5k IDB4Y2ZjIGFuZCByZXBsYWNlcyBpdAp3aXRoIGRpcmVjdCBjYWxscyB0byBwY2lfaG9zdF9jb25m aWdfcmVhZC93cml0ZV9jb21tb24oKS4KRG9pbmcgc28gbmVjZXNzaXRhdGVzIG1hcHBpbmcgQkRG cyB0byBQQ0lEZXZpY2VzIGJ1dCBtYWludGFpbmluZyBhIHNpbXBsZQpRTElTVCBpbiB4ZW5fZGV2 aWNlX3JlYWxpemUvdW5yZWFsaXplKCkgd2lsbCBzdWZmaWNlLgoKTk9URTogd2hpbHN0IGNvbmZp ZyBzcGFjZSBhY2Nlc3NlcyBhcmUgY3VycmVudGx5IGxpbWl0ZWQgdG8KICAgICAgUENJX0NPTkZJ R19TUEFDRV9TSVpFLCB0aGlzIHBhdGNoIHBhdmVzIHRoZSB3YXkgdG8gaW5jcmVhc2luZyB0aGUK ICAgICAgbGltaXQgdG8gUENJRV9DT05GSUdfU1BBQ0VfU0laRSB3aGVuIFhlbiBnYWlucyB0aGUg YWJpbGl0eSB0bwogICAgICBlbXVsYXRlIE1DRkcgdGFibGUgYWNjZXNzZXMuCgpTaWduZWQtb2Zm LWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLQpDYzogU3RlZmFu byBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogQW50aG9ueSBQZXJhcmQg PGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkNjOiAiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0 QHJlZGhhdC5jb20+CkNjOiBNYXJjZWwgQXBmZWxiYXVtIDxtYXJjZWxAcmVkaGF0LmNvbT4KQ2M6 IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkNjOiBSaWNoYXJkIEhlbmRlcnNv biA8cnRoQHR3aWRkbGUubmV0PgpDYzogRWR1YXJkbyBIYWJrb3N0IDxlaGFia29zdEByZWRoYXQu Y29tPgpDYzogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KCnYyOgogLSBJ bnRyb2R1Y2UgYSBoZWxwZXIgZnVuY3Rpb24gcndfY29uZmlnX3JlcV9pdGVtKCkgdG8gaGFuZGxl IGNvbmZpZwogICByZWdpc3RlciBvZmZzZXQgY2FsY3VsYXRpb24KIC0gSGFuZGxlIHJlcS0+Y291 bnQgPiAxIG1vcmUgbGlrZSBNTUlPIHJhdGhlciB0aGFuIFBJTwogLSBBZGRlZCBSb2dlciB0byBj YyBsaXN0IChub3QgdGFraW5nIFItYiBiZWNhdXNlIG9mIHNpZ25pZmljYW50IGNoYW5nZSkKLS0t CiBody9pMzg2L3hlbi90cmFjZS1ldmVudHMgfCAgIDIgKwogaHcvaTM4Ni94ZW4veGVuLWh2bS5j ICAgIHwgMTIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t CiAyIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9ody9pMzg2L3hlbi90cmFjZS1ldmVudHMgYi9ody9pMzg2L3hlbi90cmFjZS1l dmVudHMKaW5kZXggOGRhYjdiYy4uZjU3NmYxYiAxMDA2NDQKLS0tIGEvaHcvaTM4Ni94ZW4vdHJh Y2UtZXZlbnRzCisrKyBiL2h3L2kzODYveGVuL3RyYWNlLWV2ZW50cwpAQCAtMTUsNiArMTUsOCBA QCBjcHVfaW9yZXFfcGlvKHZvaWQgKnJlcSwgdWludDMyX3QgZGlyLCB1aW50MzJfdCBkZiwgdWlu dDMyX3QgZGF0YV9pc19wdHIsIHVpbnQ2NAogY3B1X2lvcmVxX3Bpb19yZWFkX3JlZyh2b2lkICpy ZXEsIHVpbnQ2NF90IGRhdGEsIHVpbnQ2NF90IGFkZHIsIHVpbnQzMl90IHNpemUpICJJL089JXAg cGlvIHJlYWQgcmVnIGRhdGE9MHglIlBSSXg2NCIgcG9ydD0weCUiUFJJeDY0IiBzaXplPSVkIgog Y3B1X2lvcmVxX3Bpb193cml0ZV9yZWcodm9pZCAqcmVxLCB1aW50NjRfdCBkYXRhLCB1aW50NjRf dCBhZGRyLCB1aW50MzJfdCBzaXplKSAiSS9PPSVwIHBpbyB3cml0ZSByZWcgZGF0YT0weCUiUFJJ eDY0IiBwb3J0PTB4JSJQUkl4NjQiIHNpemU9JWQiCiBjcHVfaW9yZXFfbW92ZSh2b2lkICpyZXEs IHVpbnQzMl90IGRpciwgdWludDMyX3QgZGYsIHVpbnQzMl90IGRhdGFfaXNfcHRyLCB1aW50NjRf dCBhZGRyLCB1aW50NjRfdCBkYXRhLCB1aW50MzJfdCBjb3VudCwgdWludDMyX3Qgc2l6ZSkgIkkv Tz0lcCBjb3B5IGRpcj0lZCBkZj0lZCBwdHI9JWQgcG9ydD0weCUiUFJJeDY0IiBkYXRhPTB4JSJQ Ukl4NjQiIGNvdW50PSVkIHNpemU9JWQiCitjcHVfaW9yZXFfY29uZmlnX3JlYWQodm9pZCAqcmVx LCB1aW50MzJfdCBzYmRmLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHNpemUsIHVpbnQzMl90IGRh dGEpICJJL089JXAgc2JkZj0weCV4IHJlZz0ldSBzaXplPSV1IGRhdGE9MHgleCIKK2NwdV9pb3Jl cV9jb25maWdfd3JpdGUodm9pZCAqcmVxLCB1aW50MzJfdCBzYmRmLCB1aW50MzJfdCByZWcsIHVp bnQzMl90IHNpemUsIHVpbnQzMl90IGRhdGEpICJJL089JXAgc2JkZj0weCV4IHJlZz0ldSBzaXpl PSV1IGRhdGE9MHgleCIKIAogIyB4ZW4tbWFwY2FjaGUuYwogeGVuX21hcF9jYWNoZSh1aW50NjRf dCBwaHlzX2FkZHIpICJ3YW50IDB4JSJQUkl4NjQKZGlmZiAtLWdpdCBhL2h3L2kzODYveGVuL3hl bi1odm0uYyBiL2h3L2kzODYveGVuL3hlbi1odm0uYwppbmRleCBjYWE1NjNiLi5kNzliMWQ2IDEw MDY0NAotLS0gYS9ody9pMzg2L3hlbi94ZW4taHZtLmMKKysrIGIvaHcvaTM4Ni94ZW4veGVuLWh2 bS5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNsdWRlICJjcHUuaCIKICNpbmNsdWRlICJody9w Y2kvcGNpLmgiCisjaW5jbHVkZSAiaHcvcGNpL3BjaV9ob3N0LmgiCiAjaW5jbHVkZSAiaHcvaTM4 Ni9wYy5oIgogI2luY2x1ZGUgImh3L2kzODYvYXBpYy1tc2lkZWYuaCIKICNpbmNsdWRlICJody94 ZW4veGVuX2NvbW1vbi5oIgpAQCAtODYsNiArODcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgWGVuUGh5 c21hcCB7CiAgICAgUUxJU1RfRU5UUlkoWGVuUGh5c21hcCkgbGlzdDsKIH0gWGVuUGh5c21hcDsK IAordHlwZWRlZiBzdHJ1Y3QgWGVuUGNpRGV2aWNlIHsKKyAgICBQQ0lEZXZpY2UgKnBjaV9kZXY7 CisgICAgdWludDMyX3Qgc2JkZjsKKyAgICBRTElTVF9FTlRSWShYZW5QY2lEZXZpY2UpIGVudHJ5 OworfSBYZW5QY2lEZXZpY2U7CisKIHR5cGVkZWYgc3RydWN0IFhlbklPU3RhdGUgewogICAgIGlv c2VydmlkX3QgaW9zZXJ2aWQ7CiAgICAgc2hhcmVkX2lvcGFnZV90ICpzaGFyZWRfcGFnZTsKQEAg LTEwNSw2ICsxMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBYZW5JT1N0YXRlIHsKICAgICBzdHJ1Y3Qg eHNfaGFuZGxlICp4ZW5zdG9yZTsKICAgICBNZW1vcnlMaXN0ZW5lciBtZW1vcnlfbGlzdGVuZXI7 CiAgICAgTWVtb3J5TGlzdGVuZXIgaW9fbGlzdGVuZXI7CisgICAgUUxJU1RfSEVBRCgsIFhlblBj aURldmljZSkgZGV2X2xpc3Q7CiAgICAgRGV2aWNlTGlzdGVuZXIgZGV2aWNlX2xpc3RlbmVyOwog ICAgIFFMSVNUX0hFQUQoLCBYZW5QaHlzbWFwKSBwaHlzbWFwOwogICAgIGh3YWRkciBmcmVlX3Bo eXNfb2Zmc2V0OwpAQCAtNTY5LDYgKzU3NywxMiBAQCBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX3Jl YWxpemUoRGV2aWNlTGlzdGVuZXIgKmxpc3RlbmVyLAogCiAgICAgaWYgKG9iamVjdF9keW5hbWlj X2Nhc3QoT0JKRUNUKGRldiksIFRZUEVfUENJX0RFVklDRSkpIHsKICAgICAgICAgUENJRGV2aWNl ICpwY2lfZGV2ID0gUENJX0RFVklDRShkZXYpOworICAgICAgICBYZW5QY2lEZXZpY2UgKnhlbmRl diA9IGdfbmV3KFhlblBjaURldmljZSwgMSk7CisKKyAgICAgICAgeGVuZGV2LT5wY2lfZGV2ID0g cGNpX2RldjsKKyAgICAgICAgeGVuZGV2LT5zYmRmID0gUENJX0JVSUxEX0JERihwY2lfZGV2X2J1 c19udW0ocGNpX2RldiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNp X2Rldi0+ZGV2Zm4pOworICAgICAgICBRTElTVF9JTlNFUlRfSEVBRCgmc3RhdGUtPmRldl9saXN0 LCB4ZW5kZXYsIGVudHJ5KTsKIAogICAgICAgICB4ZW5fbWFwX3BjaWRldih4ZW5fZG9taWQsIHN0 YXRlLT5pb3NlcnZpZCwgcGNpX2Rldik7CiAgICAgfQpAQCAtNTgxLDggKzU5NSwxNyBAQCBzdGF0 aWMgdm9pZCB4ZW5fZGV2aWNlX3VucmVhbGl6ZShEZXZpY2VMaXN0ZW5lciAqbGlzdGVuZXIsCiAK ICAgICBpZiAob2JqZWN0X2R5bmFtaWNfY2FzdChPQkpFQ1QoZGV2KSwgVFlQRV9QQ0lfREVWSUNF KSkgewogICAgICAgICBQQ0lEZXZpY2UgKnBjaV9kZXYgPSBQQ0lfREVWSUNFKGRldik7CisgICAg ICAgIFhlblBjaURldmljZSAqeGVuZGV2LCAqbmV4dDsKIAogICAgICAgICB4ZW5fdW5tYXBfcGNp ZGV2KHhlbl9kb21pZCwgc3RhdGUtPmlvc2VydmlkLCBwY2lfZGV2KTsKKworICAgICAgICBRTElT VF9GT1JFQUNIX1NBRkUoeGVuZGV2LCAmc3RhdGUtPmRldl9saXN0LCBlbnRyeSwgbmV4dCkgewor ICAgICAgICAgICAgaWYgKHhlbmRldi0+cGNpX2RldiA9PSBwY2lfZGV2KSB7CisgICAgICAgICAg ICAgICAgUUxJU1RfUkVNT1ZFKHhlbmRldiwgZW50cnkpOworICAgICAgICAgICAgICAgIGdfZnJl ZSh4ZW5kZXYpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg ICB9CiAgICAgfQogfQogCkBAIC05MDMsNiArOTI2LDgwIEBAIHN0YXRpYyB2b2lkIGNwdV9pb3Jl cV9tb3ZlKGlvcmVxX3QgKnJlcSkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHJ3X2NvbmZpZ19y ZXFfaXRlbShYZW5QY2lEZXZpY2UgKnhlbmRldiwgaW9yZXFfdCAqcmVxLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGksIHVpbnQzMl90ICp2YWwpCit7CisgICAgaW50 MzJfdCByZWcgPSByZXEtPmFkZHI7CisgICAgdWludDMyX3Qgb2Zmc2V0ID0gcmVxLT5zaXplICog aTsKKworICAgIHJlZyArPSAocmVxLT5kZiA/IC0xIDogMSkgKiBvZmZzZXQ7CisgICAgaWYgKHJl ZyA8IDAgfHwgcmVnID4gUENJX0NPTkZJR19TUEFDRV9TSVpFKSB7CisgICAgICAgIGlmIChyZXEt PmRpciA9PSBJT1JFUV9SRUFEKSB7CisgICAgICAgICAgICAqdmFsID0gfjB1OworICAgICAgICB9 CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocmVxLT5kaXIgPT0gSU9SRVFfUkVB RCkgeworICAgICAgICAqdmFsID0gcGNpX2hvc3RfY29uZmlnX3JlYWRfY29tbW9uKHhlbmRldi0+ cGNpX2RldiwgcmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBDSV9DT05GSUdfU1BBQ0VfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXEtPnNpemUpOworICAgICAgICB0cmFjZV9jcHVfaW9yZXFfY29uZmlnX3Jl YWQocmVxLCB4ZW5kZXYtPnNiZGYsIHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlcS0+c2l6ZSwgKnZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHJhY2VfY3B1 X2lvcmVxX2NvbmZpZ193cml0ZShyZXEsIHhlbmRldi0+c2JkZiwgcmVnLCByZXEtPnNpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhbCk7CisgICAgICAgIHBjaV9o b3N0X2NvbmZpZ193cml0ZV9jb21tb24oeGVuZGV2LT5wY2lfZGV2LCByZWcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0NPTkZJR19TUEFDRV9TSVpFLCAqdmFsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS0+c2l6ZSk7CisgICAgfQor fQorCitzdGF0aWMgdm9pZCBjcHVfaW9yZXFfY29uZmlnKFhlbklPU3RhdGUgKnN0YXRlLCBpb3Jl cV90ICpyZXEpCit7CisgICAgdWludDMyX3Qgc2JkZiA9IHJlcS0+YWRkciA+PiAzMjsKKyAgICBY ZW5QY2lEZXZpY2UgKnhlbmRldjsKKworICAgIGlmIChyZXEtPnNpemUgPiBzaXplb2YodWludDMy X3QpKSB7CisgICAgICAgIGh3X2Vycm9yKCJQQ0kgY29uZmlnIGFjY2VzczogYmFkIHNpemUgKCV1 KSIsIHJlcS0+c2l6ZSk7CisgICAgfQorCisgICAgUUxJU1RfRk9SRUFDSCh4ZW5kZXYsICZzdGF0 ZS0+ZGV2X2xpc3QsIGVudHJ5KSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICB1 aW50MzJfdCB0bXA7CisKKyAgICAgICAgaWYgKHhlbmRldi0+c2JkZiAhPSBzYmRmKSB7CisgICAg ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVxLT5kYXRhX2lz X3B0cikgeworICAgICAgICAgICAgaWYgKHJlcS0+ZGlyID09IElPUkVRX1JFQUQpIHsKKyAgICAg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxLT5jb3VudDsgaSsrKSB7CisgICAgICAgICAg ICAgICAgICAgIHJ3X2NvbmZpZ19yZXFfaXRlbSh4ZW5kZXYsIHJlcSwgaSwgJnRtcCk7CisgICAg ICAgICAgICAgICAgICAgIHJlcS0+ZGF0YSA9IHRtcDsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9IGVsc2UgaWYgKHJlcS0+ZGlyID09IElPUkVRX1dSSVRFKSB7CisgICAgICAgICAg ICAgICAgZm9yIChpID0gMDsgaSA8IHJlcS0+Y291bnQ7IGkrKykgeworICAgICAgICAgICAgICAg ICAgICB0bXAgPSByZXEtPmRhdGE7CisgICAgICAgICAgICAgICAgICAgIHJ3X2NvbmZpZ19yZXFf aXRlbSh4ZW5kZXYsIHJlcSwgaSwgJnRtcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJlcS0+ZGlyID09IElPUkVR X1JFQUQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxLT5jb3VudDsgaSsr KSB7CisgICAgICAgICAgICAgICAgICAgIHJ3X2NvbmZpZ19yZXFfaXRlbSh4ZW5kZXYsIHJlcSwg aSwgJnRtcCk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlX3BoeXNfcmVxX2l0ZW0ocmVxLT5k YXRhLCByZXEsIGksICZ0bXApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz ZSBpZiAocmVxLT5kaXIgPT0gSU9SRVFfV1JJVEUpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgcmVxLT5jb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHJlYWRfcGh5 c19yZXFfaXRlbShyZXEtPmRhdGEsIHJlcSwgaSwgJnRtcCk7CisgICAgICAgICAgICAgICAgICAg IHJ3X2NvbmZpZ19yZXFfaXRlbSh4ZW5kZXYsIHJlcSwgaSwgJnRtcCk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBy ZWdzX3RvX2NwdSh2bXdhcmVfcmVnc190ICp2bXBvcnRfcmVncywgaW9yZXFfdCAqcmVxKQogewog ICAgIFg4NkNQVSAqY3B1OwpAQCAtOTc1LDI3ICsxMDcyLDkgQEAgc3RhdGljIHZvaWQgaGFuZGxl X2lvcmVxKFhlbklPU3RhdGUgKnN0YXRlLCBpb3JlcV90ICpyZXEpCiAgICAgICAgIGNhc2UgSU9S RVFfVFlQRV9JTlZBTElEQVRFOgogICAgICAgICAgICAgeGVuX2ludmFsaWRhdGVfbWFwX2NhY2hl KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJT1JFUV9UWVBFX1BDSV9DT05G SUc6IHsKLSAgICAgICAgICAgIHVpbnQzMl90IHNiZGYgPSByZXEtPmFkZHIgPj4gMzI7Ci0gICAg ICAgICAgICB1aW50MzJfdCB2YWw7Ci0KLSAgICAgICAgICAgIC8qIEZha2UgYSB3cml0ZSB0byBw b3J0IDB4Q0Y4IHNvIHRoYXQKLSAgICAgICAgICAgICAqIHRoZSBjb25maWcgc3BhY2UgYWNjZXNz IHdpbGwgdGFyZ2V0IHRoZQotICAgICAgICAgICAgICogY29ycmVjdCBkZXZpY2UgbW9kZWwuCi0g ICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHZhbCA9ICgxdSA8PCAzMSkgfAotICAgICAgICAg ICAgICAgICAgKChyZXEtPmFkZHIgJiAweDBmMDApIDw8IDE2KSB8Ci0gICAgICAgICAgICAgICAg ICAoKHNiZGYgJiAweGZmZmYpIDw8IDgpIHwKLSAgICAgICAgICAgICAgICAgIChyZXEtPmFkZHIg JiAweGZjKTsKLSAgICAgICAgICAgIGRvX291dHAoMHhjZjgsIDQsIHZhbCk7Ci0KLSAgICAgICAg ICAgIC8qIE5vdyBpc3N1ZSB0aGUgY29uZmlnIHNwYWNlIGFjY2VzcyB2aWEKLSAgICAgICAgICAg ICAqIHBvcnQgMHhDRkMKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmVxLT5hZGRyID0g MHhjZmMgfCAocmVxLT5hZGRyICYgMHgwMyk7Ci0gICAgICAgICAgICBjcHVfaW9yZXFfcGlvKHJl cSk7CisgICAgICAgIGNhc2UgSU9SRVFfVFlQRV9QQ0lfQ09ORklHOgorICAgICAgICAgICAgY3B1 X2lvcmVxX2NvbmZpZyhzdGF0ZSwgcmVxKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9 CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBod19lcnJvcigiSW52YWxpZCBpb3JlcSB0 eXBlIDB4JXhcbiIsIHJlcS0+dHlwZSk7CiAgICAgfQpAQCAtMTM2Niw2ICsxNDQ1LDcgQEAgdm9p ZCB4ZW5faHZtX2luaXQoUENNYWNoaW5lU3RhdGUgKnBjbXMsIE1lbW9yeVJlZ2lvbiAqKnJhbV9t ZW1vcnkpCiAgICAgbWVtb3J5X2xpc3RlbmVyX3JlZ2lzdGVyKCZzdGF0ZS0+aW9fbGlzdGVuZXIs ICZhZGRyZXNzX3NwYWNlX2lvKTsKIAogICAgIHN0YXRlLT5kZXZpY2VfbGlzdGVuZXIgPSB4ZW5f ZGV2aWNlX2xpc3RlbmVyOworICAgIFFMSVNUX0lOSVQoJnN0YXRlLT5kZXZfbGlzdCk7CiAgICAg ZGV2aWNlX2xpc3RlbmVyX3JlZ2lzdGVyKCZzdGF0ZS0+ZGV2aWNlX2xpc3RlbmVyKTsKIAogICAg IC8qIEluaXRpYWxpemUgYmFja2VuZCBjb3JlICYgZHJpdmVycyAqLwotLSAKMi4xLjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs