From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey G Subject: Re: [Qemu-devel] [PATCH] xen-hvm: stop faking I/O to access PCI config space Date: Thu, 3 May 2018 22:41:28 +1000 Message-ID: <20180503224128.00005cf7@gmail.com> References: <1525346320-24553-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 us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fEDYN-0002jd-Mi for xen-devel@lists.xenproject.org; Thu, 03 May 2018 12:41:43 +0000 Received: by mail-lf0-x244.google.com with SMTP id o123-v6so25729104lfe.8 for ; Thu, 03 May 2018 05:41:41 -0700 (PDT) In-Reply-To: <1525346320-24553-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Paul Durrant Cc: Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Anthony Perard , Paolo Bonzini , Marcel Apfelbaum , xen-devel@lists.xenproject.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAzIE1heSAyMDE4IDEyOjE4OjQwICswMTAwClBhdWwgRHVycmFudCA8cGF1bC5kdXJy YW50QGNpdHJpeC5jb20+IHdyb3RlOgoKPlRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY3VycmVudCBo YWNrZXJ5IHdoZXJlIElPUkVRX1RZUEVfUENJX0NPTkZJRwo+cmVxeWVzdHMgYXJlIGhhbmRsZWQg YnkgZmFraW5nIFBJTyB0byAweGNmOCBhbmQgMHhjZmMgYW5kIHJlcGxhY2VzIGl0Cj53aXRoIGRp cmVjdCBjYWxscyB0byBwY2lfaG9zdF9jb25maWdfcmVhZC93cml0ZV9jb21tb24oKS4KPkRvaW5n IHNvIG5lY2Vzc2l0YXRlcyBtYXBwaW5nIEJERnMgdG8gUENJRGV2aWNlcyBidXQgbWFpbnRhaW5p bmcgYQo+c2ltcGxlIFFMSVNUIGluIHhlbl9kZXZpY2VfcmVhbGl6ZS91bnJlYWxpemUoKSB3aWxs IHN1ZmZpY2UuCj4KPk5PVEU6IHdoaWxzdCBjb25maWcgc3BhY2UgYWNjZXNzZXMgYXJlIGN1cnJl bnRseSBsaW1pdGVkIHRvCj4gICAgICBQQ0lfQ09ORklHX1NQQUNFX1NJWkUsIHRoaXMgcGF0Y2gg cGF2ZXMgdGhlIHdheSB0byBpbmNyZWFzaW5nIHRoZQo+ICAgICAgbGltaXQgdG8gUENJRV9DT05G SUdfU1BBQ0VfU0laRSB3aGVuIFhlbiBnYWlucyB0aGUgYWJpbGl0eSB0bwo+ICAgICAgZW11bGF0 ZSBNQ0ZHIHRhYmxlIGFjY2Vzc2VzLgo+Cj5TaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBh dWwuZHVycmFudEBjaXRyaXguY29tPgoKTWlub3IgcHJvYmxlbSBoZXJlIGlzIGEgcG9zc2libGUg aW5jb21wYXRpYmlsaXR5IHdpdGggUENJLVBDSSBicmlkZ2VzCndoaWNoIHdlJ2xsIG5lZWQgdG8g dXNlIGV2ZW50dWFsbHkgZm9yIFEzNSBQVCAtLSBJSVJDIGNoYW5naW5nIHNlY29uZGFyeQpidXMg bnVtYmVycyBkbyBub3QgY2F1c2UgdW5yZWFsaXplL3JlYWxpemUgcGFpciB0byBiZSBjYWxsZWQg Zm9yCmFmZmVjdGVkIFBDSSBkZXZpY2VzLiBUaGlzIG1lYW5zIHRoYXQgZGV2X2xpc3QgbWF5IGNv bnRhaW4gc3RhbGUgQkRGCmluZm9ybWF0aW9uIGlmIGFueSByZWxhdGVkIGJ1cyBudW1iZXIgY2hh bmdlLgoKQW55d2F5LCBQQ0ktUENJIGJyaWRnZXMgYW5kIHRoZWlyIHNlY29uZGFyeSBidXMgbnVt YmVycyBtdXN0IGJlIGhhbmRsZWQKc3BlY2lmaWNhbGx5LCBzbyBpdCBjYW4gYmUgaWdub3JlZCBm b3Igbm93LgoKSSdsbCB0cnkgdG8gcmV1c2UgdGhpcyBwYXRjaCBmb3IgbXkgWGVuIHBhdGNoIGZv ciBzdXBwb3J0aW5nIE1NQ09ORklHCmlvcmVxIGZvcndhcmRpbmcgdG8gbXVsdGlwbGUgaW9yZXEg c2VydmVycy4KCj4tLQo+Q2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVs Lm9yZz4KPkNjOiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KPkNj OiAiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+Cj5DYzogTWFyY2VsIEFwZmVs YmF1bSA8bWFyY2VsQHJlZGhhdC5jb20+Cj5DYzogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVk aGF0LmNvbT4KPkNjOiBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0Pgo+Q2M6IEVk dWFyZG8gSGFia29zdCA8ZWhhYmtvc3RAcmVkaGF0LmNvbT4KPi0tLQo+IGh3L2kzODYveGVuL3Ry YWNlLWV2ZW50cyB8ICAgMiArCj4gaHcvaTM4Ni94ZW4veGVuLWh2bS5jICAgIHwgMTAxCj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0gMiBmaWxlcyBjaGFu Z2VkLCA4Mwo+IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+Cj5kaWZmIC0tZ2l0IGEv aHcvaTM4Ni94ZW4vdHJhY2UtZXZlbnRzIGIvaHcvaTM4Ni94ZW4vdHJhY2UtZXZlbnRzCj5pbmRl eCA4ZGFiN2JjLi5mNTc2ZjFiIDEwMDY0NAo+LS0tIGEvaHcvaTM4Ni94ZW4vdHJhY2UtZXZlbnRz Cj4rKysgYi9ody9pMzg2L3hlbi90cmFjZS1ldmVudHMKPkBAIC0xNSw2ICsxNSw4IEBAIGNwdV9p b3JlcV9waW8odm9pZCAqcmVxLCB1aW50MzJfdCBkaXIsIHVpbnQzMl90IGRmLAo+dWludDMyX3Qg ZGF0YV9pc19wdHIsIHVpbnQ2NAo+IGNwdV9pb3JlcV9waW9fcmVhZF9yZWcodm9pZCAqcmVxLCB1 aW50NjRfdCBkYXRhLCB1aW50NjRfdCBhZGRyLAo+IHVpbnQzMl90IHNpemUpICJJL089JXAgcGlv IHJlYWQgcmVnIGRhdGE9MHglIlBSSXg2NCIgcG9ydD0weCUiUFJJeDY0Igo+IHNpemU9JWQiIGNw dV9pb3JlcV9waW9fd3JpdGVfcmVnKHZvaWQgKnJlcSwgdWludDY0X3QgZGF0YSwgdWludDY0X3QK PiBhZGRyLCB1aW50MzJfdCBzaXplKSAiSS9PPSVwIHBpbyB3cml0ZSByZWcgZGF0YT0weCUiUFJJ eDY0Igo+IHBvcnQ9MHglIlBSSXg2NCIgc2l6ZT0lZCIgY3B1X2lvcmVxX21vdmUodm9pZCAqcmVx LCB1aW50MzJfdCBkaXIsCj4gdWludDMyX3QgZGYsIHVpbnQzMl90IGRhdGFfaXNfcHRyLCB1aW50 NjRfdCBhZGRyLCB1aW50NjRfdCBkYXRhLAo+IHVpbnQzMl90IGNvdW50LCB1aW50MzJfdCBzaXpl KSAiSS9PPSVwIGNvcHkgZGlyPSVkIGRmPSVkIHB0cj0lZAo+IHBvcnQ9MHglIlBSSXg2NCIgZGF0 YT0weCUiUFJJeDY0IiBjb3VudD0lZCBzaXplPSVkIgo+K2NwdV9pb3JlcV9jb25maWdfcmVhZCh2 b2lkICpyZXEsIHVpbnQzMl90IHNiZGYsIHVpbnQzMl90IHJlZywKPnVpbnQzMl90IHNpemUsIHVp bnQzMl90IGRhdGEpICJJL089JXAgc2JkZj0weCV4IHJlZz0ldSBzaXplPSV1Cj5kYXRhPTB4JXgi ICtjcHVfaW9yZXFfY29uZmlnX3dyaXRlKHZvaWQgKnJlcSwgdWludDMyX3Qgc2JkZiwgdWludDMy X3QKPnJlZywgdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgZGF0YSkgIkkvTz0lcCBzYmRmPTB4JXgg cmVnPSV1IHNpemU9JXUKPmRhdGE9MHgleCIKPiAKPiAjIHhlbi1tYXBjYWNoZS5jCj4geGVuX21h cF9jYWNoZSh1aW50NjRfdCBwaHlzX2FkZHIpICJ3YW50IDB4JSJQUkl4NjQKPmRpZmYgLS1naXQg YS9ody9pMzg2L3hlbi94ZW4taHZtLmMgYi9ody9pMzg2L3hlbi94ZW4taHZtLmMKPmluZGV4IGNh YTU2M2IuLmMxMzlkMjkgMTAwNjQ0Cj4tLS0gYS9ody9pMzg2L3hlbi94ZW4taHZtLmMKPisrKyBi L2h3L2kzODYveGVuL3hlbi1odm0uYwo+QEAgLTEyLDYgKzEyLDcgQEAKPiAKPiAjaW5jbHVkZSAi Y3B1LmgiCj4gI2luY2x1ZGUgImh3L3BjaS9wY2kuaCIKPisjaW5jbHVkZSAiaHcvcGNpL3BjaV9o b3N0LmgiCj4gI2luY2x1ZGUgImh3L2kzODYvcGMuaCIKPiAjaW5jbHVkZSAiaHcvaTM4Ni9hcGlj LW1zaWRlZi5oIgo+ICNpbmNsdWRlICJody94ZW4veGVuX2NvbW1vbi5oIgo+QEAgLTg2LDYgKzg3 LDEyIEBAIHR5cGVkZWYgc3RydWN0IFhlblBoeXNtYXAgewo+ICAgICBRTElTVF9FTlRSWShYZW5Q aHlzbWFwKSBsaXN0Owo+IH0gWGVuUGh5c21hcDsKPiAKPit0eXBlZGVmIHN0cnVjdCBYZW5QY2lE ZXZpY2Ugewo+KyAgICBQQ0lEZXZpY2UgKnBjaV9kZXY7Cj4rICAgIHVpbnQzMl90IHNiZGY7Cj4r ICAgIFFMSVNUX0VOVFJZKFhlblBjaURldmljZSkgZW50cnk7Cj4rfSBYZW5QY2lEZXZpY2U7Cj4r Cj4gdHlwZWRlZiBzdHJ1Y3QgWGVuSU9TdGF0ZSB7Cj4gICAgIGlvc2VydmlkX3QgaW9zZXJ2aWQ7 Cj4gICAgIHNoYXJlZF9pb3BhZ2VfdCAqc2hhcmVkX3BhZ2U7Cj5AQCAtMTA1LDYgKzExMiw3IEBA IHR5cGVkZWYgc3RydWN0IFhlbklPU3RhdGUgewo+ICAgICBzdHJ1Y3QgeHNfaGFuZGxlICp4ZW5z dG9yZTsKPiAgICAgTWVtb3J5TGlzdGVuZXIgbWVtb3J5X2xpc3RlbmVyOwo+ICAgICBNZW1vcnlM aXN0ZW5lciBpb19saXN0ZW5lcjsKPisgICAgUUxJU1RfSEVBRCgsIFhlblBjaURldmljZSkgZGV2 X2xpc3Q7Cj4gICAgIERldmljZUxpc3RlbmVyIGRldmljZV9saXN0ZW5lcjsKPiAgICAgUUxJU1Rf SEVBRCgsIFhlblBoeXNtYXApIHBoeXNtYXA7Cj4gICAgIGh3YWRkciBmcmVlX3BoeXNfb2Zmc2V0 Owo+QEAgLTU2OSw2ICs1NzcsMTIgQEAgc3RhdGljIHZvaWQgeGVuX2RldmljZV9yZWFsaXplKERl dmljZUxpc3RlbmVyCj4qbGlzdGVuZXIsCj4gCj4gICAgIGlmIChvYmplY3RfZHluYW1pY19jYXN0 KE9CSkVDVChkZXYpLCBUWVBFX1BDSV9ERVZJQ0UpKSB7Cj4gICAgICAgICBQQ0lEZXZpY2UgKnBj aV9kZXYgPSBQQ0lfREVWSUNFKGRldik7Cj4rICAgICAgICBYZW5QY2lEZXZpY2UgKnhlbmRldiA9 IGdfbmV3KFhlblBjaURldmljZSwgMSk7Cj4rCj4rICAgICAgICB4ZW5kZXYtPnBjaV9kZXYgPSBw Y2lfZGV2Owo+KyAgICAgICAgeGVuZGV2LT5zYmRmID0gUENJX0JVSUxEX0JERihwY2lfZGV2X2J1 c19udW0ocGNpX2RldiksCj4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBj aV9kZXYtPmRldmZuKTsKPisgICAgICAgIFFMSVNUX0lOU0VSVF9IRUFEKCZzdGF0ZS0+ZGV2X2xp c3QsIHhlbmRldiwgZW50cnkpOwo+IAo+ICAgICAgICAgeGVuX21hcF9wY2lkZXYoeGVuX2RvbWlk LCBzdGF0ZS0+aW9zZXJ2aWQsIHBjaV9kZXYpOwo+ICAgICB9Cj5AQCAtNTgxLDggKzU5NSwxNyBA QCBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX3VucmVhbGl6ZShEZXZpY2VMaXN0ZW5lcgo+Kmxpc3Rl bmVyLAo+IAo+ICAgICBpZiAob2JqZWN0X2R5bmFtaWNfY2FzdChPQkpFQ1QoZGV2KSwgVFlQRV9Q Q0lfREVWSUNFKSkgewo+ICAgICAgICAgUENJRGV2aWNlICpwY2lfZGV2ID0gUENJX0RFVklDRShk ZXYpOwo+KyAgICAgICAgWGVuUGNpRGV2aWNlICp4ZW5kZXYsICpuZXh0Owo+IAo+ICAgICAgICAg eGVuX3VubWFwX3BjaWRldih4ZW5fZG9taWQsIHN0YXRlLT5pb3NlcnZpZCwgcGNpX2Rldik7Cj4r Cj4rICAgICAgICBRTElTVF9GT1JFQUNIX1NBRkUoeGVuZGV2LCAmc3RhdGUtPmRldl9saXN0LCBl bnRyeSwgbmV4dCkgewo+KyAgICAgICAgICAgIGlmICh4ZW5kZXYtPnBjaV9kZXYgPT0gcGNpX2Rl dikgewo+KyAgICAgICAgICAgICAgICBRTElTVF9SRU1PVkUoeGVuZGV2LCBlbnRyeSk7Cj4rICAg ICAgICAgICAgICAgIGdfZnJlZSh4ZW5kZXYpOwo+KyAgICAgICAgICAgICAgICBicmVhazsKPisg ICAgICAgICAgICB9Cj4rICAgICAgICB9Cj4gICAgIH0KPiB9Cj4gCj5AQCAtOTAzLDYgKzkyNiw2 MSBAQCBzdGF0aWMgdm9pZCBjcHVfaW9yZXFfbW92ZShpb3JlcV90ICpyZXEpCj4gICAgIH0KPiB9 Cj4gCj4rc3RhdGljIHZvaWQgY3B1X2lvcmVxX2NvbmZpZyhYZW5JT1N0YXRlICpzdGF0ZSwgaW9y ZXFfdCAqcmVxKQo+K3sKPisgICAgdWludDMyX3Qgc2JkZiA9IHJlcS0+YWRkciA+PiAzMjsKPisg ICAgdWludDMyX3QgcmVnID0gcmVxLT5hZGRyOwo+KyAgICBYZW5QY2lEZXZpY2UgKnhlbmRldjsK PisKPisgICAgaWYgKHJlcS0+c2l6ZSA+IHNpemVvZih1aW50MzJfdCkpIHsKPisgICAgICAgIGh3 X2Vycm9yKCJQQ0kgY29uZmlnIGFjY2VzczogYmFkIHNpemUgKCV1KSIsIHJlcS0+c2l6ZSk7Cj4r ICAgIH0KPisKPisgICAgUUxJU1RfRk9SRUFDSCh4ZW5kZXYsICZzdGF0ZS0+ZGV2X2xpc3QsIGVu dHJ5KSB7Cj4rICAgICAgICB1bnNpZ25lZCBpbnQgaTsKPisKPisgICAgICAgIGlmICh4ZW5kZXYt PnNiZGYgIT0gc2JkZikgewo+KyAgICAgICAgICAgIGNvbnRpbnVlOwo+KyAgICAgICAgfQo+Kwo+ KyAgICAgICAgaWYgKHJlcS0+ZGlyID09IElPUkVRX1JFQUQpIHsKPisgICAgICAgICAgICBpZiAo IXJlcS0+ZGF0YV9pc19wdHIpIHsKPisgICAgICAgICAgICAgICAgcmVxLT5kYXRhID0gcGNpX2hv c3RfY29uZmlnX3JlYWRfY29tbW9uKAo+KyAgICAgICAgICAgICAgICAgICAgeGVuZGV2LT5wY2lf ZGV2LCByZWcsIFBDSV9DT05GSUdfU1BBQ0VfU0laRSwKPisgICAgICAgICAgICAgICAgICAgIHJl cS0+c2l6ZSk7Cj4rICAgICAgICAgICAgICAgIHRyYWNlX2NwdV9pb3JlcV9jb25maWdfcmVhZChy ZXEsIHNiZGYsIHJlZywgcmVxLT5zaXplLAo+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVxLT5kYXRhKTsKPisgICAgICAgICAgICB9IGVsc2Ugewo+KyAgICAg ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxLT5jb3VudDsgaSsrKSB7Cj4rICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCB0bXA7Cj4rCj4rICAgICAgICAgICAgICAgICAgICB0bXAgPSBw Y2lfaG9zdF9jb25maWdfcmVhZF9jb21tb24oCj4rICAgICAgICAgICAgICAgICAgICAgICAgeGVu ZGV2LT5wY2lfZGV2LCByZWcsIFBDSV9DT05GSUdfU1BBQ0VfU0laRSwKPisgICAgICAgICAgICAg ICAgICAgICAgICByZXEtPnNpemUpOwo+KyAgICAgICAgICAgICAgICAgICAgd3JpdGVfcGh5c19y ZXFfaXRlbShyZXEtPmRhdGEsIHJlcSwgaSwgJnRtcCk7Cj4rICAgICAgICAgICAgICAgIH0KPisg ICAgICAgICAgICB9Cj4rICAgICAgICB9IGVsc2UgaWYgKHJlcS0+ZGlyID09IElPUkVRX1dSSVRF KSB7Cj4rICAgICAgICAgICAgaWYgKCFyZXEtPmRhdGFfaXNfcHRyKSB7Cj4rICAgICAgICAgICAg ICAgIHRyYWNlX2NwdV9pb3JlcV9jb25maWdfd3JpdGUocmVxLCBzYmRmLCByZWcsCj5yZXEtPnNp emUsCj4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLT5k YXRhKTsKPisgICAgICAgICAgICAgICAgcGNpX2hvc3RfY29uZmlnX3dyaXRlX2NvbW1vbigKPisg ICAgICAgICAgICAgICAgICAgIHhlbmRldi0+cGNpX2RldiwgcmVnLCBQQ0lfQ09ORklHX1NQQUNF X1NJWkUsCj5yZXEtPmRhdGEsCj4rICAgICAgICAgICAgICAgICAgICByZXEtPnNpemUpOwo+KyAg ICAgICAgICAgIH0gZWxzZSB7Cj4rICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXEt PmNvdW50OyBpKyspIHsKPisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRtcCA9IDA7Cj4r Cj4rICAgICAgICAgICAgICAgICAgICByZWFkX3BoeXNfcmVxX2l0ZW0ocmVxLT5kYXRhLCByZXEs IGksICZ0bXApOwo+KyAgICAgICAgICAgICAgICAgICAgcGNpX2hvc3RfY29uZmlnX3dyaXRlX2Nv bW1vbigKPisgICAgICAgICAgICAgICAgICAgICAgICB4ZW5kZXYtPnBjaV9kZXYsIHJlZywgUENJ X0NPTkZJR19TUEFDRV9TSVpFLAo+dG1wLAo+KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcS0+ c2l6ZSk7Cj4rICAgICAgICAgICAgICAgIH0KPisgICAgICAgICAgICB9Cj4rICAgICAgICB9Cj4r ICAgIH0KPit9Cj4rCj4gc3RhdGljIHZvaWQgcmVnc190b19jcHUodm13YXJlX3JlZ3NfdCAqdm1w b3J0X3JlZ3MsIGlvcmVxX3QgKnJlcSkKPiB7Cj4gICAgIFg4NkNQVSAqY3B1Owo+QEAgLTk3NSwy NyArMTA1Myw5IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9pb3JlcShYZW5JT1N0YXRlICpzdGF0ZSwK PmlvcmVxX3QgKnJlcSkKPiAgICAgICAgIGNhc2UgSU9SRVFfVFlQRV9JTlZBTElEQVRFOgo+ICAg ICAgICAgICAgIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZSgpOwo+ICAgICAgICAgICAgIGJyZWFr Owo+LSAgICAgICAgY2FzZSBJT1JFUV9UWVBFX1BDSV9DT05GSUc6IHsKPi0gICAgICAgICAgICB1 aW50MzJfdCBzYmRmID0gcmVxLT5hZGRyID4+IDMyOwo+LSAgICAgICAgICAgIHVpbnQzMl90IHZh bDsKPi0KPi0gICAgICAgICAgICAvKiBGYWtlIGEgd3JpdGUgdG8gcG9ydCAweENGOCBzbyB0aGF0 Cj4tICAgICAgICAgICAgICogdGhlIGNvbmZpZyBzcGFjZSBhY2Nlc3Mgd2lsbCB0YXJnZXQgdGhl Cj4tICAgICAgICAgICAgICogY29ycmVjdCBkZXZpY2UgbW9kZWwuCj4tICAgICAgICAgICAgICov Cj4tICAgICAgICAgICAgdmFsID0gKDF1IDw8IDMxKSB8Cj4tICAgICAgICAgICAgICAgICAgKChy ZXEtPmFkZHIgJiAweDBmMDApIDw8IDE2KSB8Cj4tICAgICAgICAgICAgICAgICAgKChzYmRmICYg MHhmZmZmKSA8PCA4KSB8Cj4tICAgICAgICAgICAgICAgICAgKHJlcS0+YWRkciAmIDB4ZmMpOwo+ LSAgICAgICAgICAgIGRvX291dHAoMHhjZjgsIDQsIHZhbCk7Cj4tCj4tICAgICAgICAgICAgLyog Tm93IGlzc3VlIHRoZSBjb25maWcgc3BhY2UgYWNjZXNzIHZpYQo+LSAgICAgICAgICAgICAqIHBv cnQgMHhDRkMKPi0gICAgICAgICAgICAgKi8KPi0gICAgICAgICAgICByZXEtPmFkZHIgPSAweGNm YyB8IChyZXEtPmFkZHIgJiAweDAzKTsKPi0gICAgICAgICAgICBjcHVfaW9yZXFfcGlvKHJlcSk7 Cj4rICAgICAgICBjYXNlIElPUkVRX1RZUEVfUENJX0NPTkZJRzoKPisgICAgICAgICAgICBjcHVf aW9yZXFfY29uZmlnKHN0YXRlLCByZXEpOwo+ICAgICAgICAgICAgIGJyZWFrOwo+LSAgICAgICAg fQo+ICAgICAgICAgZGVmYXVsdDoKPiAgICAgICAgICAgICBod19lcnJvcigiSW52YWxpZCBpb3Jl cSB0eXBlIDB4JXhcbiIsIHJlcS0+dHlwZSk7Cj4gICAgIH0KPkBAIC0xMzY2LDYgKzE0MjYsNyBA QCB2b2lkIHhlbl9odm1faW5pdChQQ01hY2hpbmVTdGF0ZSAqcGNtcywKPk1lbW9yeVJlZ2lvbiAq KnJhbV9tZW1vcnkpCj4gICAgIG1lbW9yeV9saXN0ZW5lcl9yZWdpc3Rlcigmc3RhdGUtPmlvX2xp c3RlbmVyLCAmYWRkcmVzc19zcGFjZV9pbyk7Cj4gCj4gICAgIHN0YXRlLT5kZXZpY2VfbGlzdGVu ZXIgPSB4ZW5fZGV2aWNlX2xpc3RlbmVyOwo+KyAgICBRTElTVF9JTklUKCZzdGF0ZS0+ZGV2X2xp c3QpOwo+ICAgICBkZXZpY2VfbGlzdGVuZXJfcmVnaXN0ZXIoJnN0YXRlLT5kZXZpY2VfbGlzdGVu ZXIpOwo+IAo+ICAgICAvKiBJbml0aWFsaXplIGJhY2tlbmQgY29yZSAmIGRyaXZlcnMgKi8KCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs