From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v3] xen-hvm: stop faking I/O to access PCI config space Date: Fri, 18 May 2018 14:35:08 +0000 Message-ID: References: <1526653662-9237-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 1fJgTP-0001AY-H6 for xen-devel@lists.xenproject.org; Fri, 18 May 2018 14:35:11 +0000 In-Reply-To: <1526653662-9237-1-git-send-email-paul.durrant@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Paul Durrant , "qemu-devel@nongnu.org" , "xen-devel@lists.xenproject.org" Cc: Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Marcel Apfelbaum , Jan Beulich , Anthony Perard , Paolo Bonzini , Roger Pau Monne , Richard Henderson List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFBhdWwgRHVycmFudCBbbWFpbHRv OnBhdWwuZHVycmFudEBjaXRyaXguY29tXQo+IFNlbnQ6IDE4IE1heSAyMDE4IDE1OjI4Cj4gVG86 IHFlbXUtZGV2ZWxAbm9uZ251Lm9yZzsgeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4g Q2M6IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+OyBTdGVmYW5vIFN0YWJl bGxpbmkKPiA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47IEFudGhvbnkgUGVyYXJkIDxhbnRob255 LnBlcmFyZEBjaXRyaXguY29tPjsKPiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29t PjsgTWFyY2VsIEFwZmVsYmF1bQo+IDxtYXJjZWxAcmVkaGF0LmNvbT47IFBhb2xvIEJvbnppbmkg PHBib256aW5pQHJlZGhhdC5jb20+OyBSaWNoYXJkCj4gSGVuZGVyc29uIDxydGhAdHdpZGRsZS5u ZXQ+OyBFZHVhcmRvIEhhYmtvc3QgPGVoYWJrb3N0QHJlZGhhdC5jb20+Owo+IFJvZ2VyIFBhdSBN b25uZSA8cm9nZXIucGF1QGNpdHJpeC5jb20+OyBKYW4gQmV1bGljaAo+IDxKQmV1bGljaEBzdXNl LmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0ggdjNdIHhlbi1odm06IHN0b3AgZmFraW5nIEkvTyB0byBh Y2Nlc3MgUENJIGNvbmZpZyBzcGFjZQo+IAo+IFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY3VycmVu dCBoYWNrZXJ5IHdoZXJlIElPUkVRX1RZUEVfUENJX0NPTkZJRwo+IHJlcXVlc3RzIGFyZSBoYW5k bGVkIGJ5IGZha2luZyBQSU8gdG8gMHhjZjggYW5kIDB4Y2ZjIGFuZCByZXBsYWNlcyBpdAo+IHdp dGggZGlyZWN0IGNhbGxzIHRvIHBjaV9ob3N0X2NvbmZpZ19yZWFkL3dyaXRlX2NvbW1vbigpLgo+ IERvaW5nIHNvIG5lY2Vzc2l0YXRlcyBtYXBwaW5nIEJERnMgdG8gUENJRGV2aWNlcyBidXQgbWFp bnRhaW5pbmcgYSBzaW1wbGUKPiBRTElTVCBpbiB4ZW5fZGV2aWNlX3JlYWxpemUvdW5yZWFsaXpl KCkgd2lsbCBzdWZmaWNlLgo+IAo+IE5PVEU6IHdoaWxzdCBjb25maWcgc3BhY2UgYWNjZXNzZXMg YXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvCj4gICAgICAgUENJX0NPTkZJR19TUEFDRV9TSVpFLCB0 aGlzIHBhdGNoIHBhdmVzIHRoZSB3YXkgdG8gaW5jcmVhc2luZyB0aGUKPiAgICAgICBsaW1pdCB0 byBQQ0lFX0NPTkZJR19TUEFDRV9TSVpFIHdoZW4gWGVuIGdhaW5zIHRoZSBhYmlsaXR5IHRvCj4g ICAgICAgZW11bGF0ZSBNQ0ZHIHRhYmxlIGFjY2Vzc2VzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CgpBcG9sb2dpZXMuIER1ZSB0byBh IG1pc3NpbmcgJ2dpdCBhZGQnLCB0aGlzIHBhdGNoIGhhcyBhbiBlcnJvci4uLgoKPiAtLQo+IENj OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEFudGhv bnkgUGVyYXJkIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgo+IENjOiAiTWljaGFlbCBTLiBU c2lya2luIiA8bXN0QHJlZGhhdC5jb20+Cj4gQ2M6IE1hcmNlbCBBcGZlbGJhdW0gPG1hcmNlbEBy ZWRoYXQuY29tPgo+IENjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgo+IENj OiBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0Pgo+IENjOiBFZHVhcmRvIEhhYmtv c3QgPGVoYWJrb3N0QHJlZGhhdC5jb20+Cj4gQ2M6IFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1 QGNpdHJpeC5jb20+Cj4gQ2M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KPiAKPiB2 MzoKPiAgLSBEcm9wIGhlbHBlciBmdW5jdGlvbiBhbmQgdHJlYXQgY291bnQgPiAxIGFzIGFuIGVy cm9yCj4gIC0gQWRkIEphbiB0byBjYyBsaXN0Cj4gCj4gdjI6Cj4gIC0gSW50cm9kdWNlIGEgaGVs cGVyIGZ1bmN0aW9uIHJ3X2NvbmZpZ19yZXFfaXRlbSgpIHRvIGhhbmRsZSBjb25maWcKPiAgICBy ZWdpc3RlciBvZmZzZXQgY2FsY3VsYXRpb24KPiAgLSBIYW5kbGUgcmVxLT5jb3VudCA+IDEgbW9y ZSBsaWtlIE1NSU8gcmF0aGVyIHRoYW4gUElPCj4gIC0gQWRkIFJvZ2VyIHRvIGNjIGxpc3QgKG5v dCB0YWtpbmcgUi1iIGJlY2F1c2Ugb2Ygc2lnbmlmaWNhbnQgY2hhbmdlKQo+IC0tLQo+ICBody9p Mzg2L3hlbi90cmFjZS1ldmVudHMgfCAgIDIgKwo+ICBody9pMzg2L3hlbi94ZW4taHZtLmMgICAg fCAxMDIKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ ICAyIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9ody9pMzg2L3hlbi90cmFjZS1ldmVudHMgYi9ody9pMzg2L3hlbi90cmFj ZS1ldmVudHMKPiBpbmRleCA4ZGFiN2JjLi5mNTc2ZjFiIDEwMDY0NAo+IC0tLSBhL2h3L2kzODYv eGVuL3RyYWNlLWV2ZW50cwo+ICsrKyBiL2h3L2kzODYveGVuL3RyYWNlLWV2ZW50cwo+IEBAIC0x NSw2ICsxNSw4IEBAIGNwdV9pb3JlcV9waW8odm9pZCAqcmVxLCB1aW50MzJfdCBkaXIsIHVpbnQz Ml90IGRmLAo+IHVpbnQzMl90IGRhdGFfaXNfcHRyLCB1aW50NjQKPiAgY3B1X2lvcmVxX3Bpb19y ZWFkX3JlZyh2b2lkICpyZXEsIHVpbnQ2NF90IGRhdGEsIHVpbnQ2NF90IGFkZHIsIHVpbnQzMl90 Cj4gc2l6ZSkgIkkvTz0lcCBwaW8gcmVhZCByZWcgZGF0YT0weCUiUFJJeDY0IiBwb3J0PTB4JSJQ Ukl4NjQiIHNpemU9JWQiCj4gIGNwdV9pb3JlcV9waW9fd3JpdGVfcmVnKHZvaWQgKnJlcSwgdWlu dDY0X3QgZGF0YSwgdWludDY0X3QgYWRkciwgdWludDMyX3QKPiBzaXplKSAiSS9PPSVwIHBpbyB3 cml0ZSByZWcgZGF0YT0weCUiUFJJeDY0IiBwb3J0PTB4JSJQUkl4NjQiIHNpemU9JWQiCj4gIGNw dV9pb3JlcV9tb3ZlKHZvaWQgKnJlcSwgdWludDMyX3QgZGlyLCB1aW50MzJfdCBkZiwgdWludDMy X3QgZGF0YV9pc19wdHIsCj4gdWludDY0X3QgYWRkciwgdWludDY0X3QgZGF0YSwgdWludDMyX3Qg Y291bnQsIHVpbnQzMl90IHNpemUpICJJL089JXAgY29weQo+IGRpcj0lZCBkZj0lZCBwdHI9JWQg cG9ydD0weCUiUFJJeDY0IiBkYXRhPTB4JSJQUkl4NjQiIGNvdW50PSVkCj4gc2l6ZT0lZCIKPiAr Y3B1X2lvcmVxX2NvbmZpZ19yZWFkKHZvaWQgKnJlcSwgdWludDMyX3Qgc2JkZiwgdWludDMyX3Qg cmVnLCB1aW50MzJfdAo+IHNpemUsIHVpbnQzMl90IGRhdGEpICJJL089JXAgc2JkZj0weCV4IHJl Zz0ldSBzaXplPSV1IGRhdGE9MHgleCIKPiArY3B1X2lvcmVxX2NvbmZpZ193cml0ZSh2b2lkICpy ZXEsIHVpbnQzMl90IHNiZGYsIHVpbnQzMl90IHJlZywgdWludDMyX3QKPiBzaXplLCB1aW50MzJf dCBkYXRhKSAiSS9PPSVwIHNiZGY9MHgleCByZWc9JXUgc2l6ZT0ldSBkYXRhPTB4JXgiCj4gCj4g ICMgeGVuLW1hcGNhY2hlLmMKPiAgeGVuX21hcF9jYWNoZSh1aW50NjRfdCBwaHlzX2FkZHIpICJ3 YW50IDB4JSJQUkl4NjQKPiBkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ZW4veGVuLWh2bS5jIGIvaHcv aTM4Ni94ZW4veGVuLWh2bS5jCj4gaW5kZXggY2FhNTYzYi4uM2E2YzQyYiAxMDA2NDQKPiAtLS0g YS9ody9pMzg2L3hlbi94ZW4taHZtLmMKPiArKysgYi9ody9pMzg2L3hlbi94ZW4taHZtLmMKPiBA QCAtMTIsNiArMTIsNyBAQAo+IAo+ICAjaW5jbHVkZSAiY3B1LmgiCj4gICNpbmNsdWRlICJody9w Y2kvcGNpLmgiCj4gKyNpbmNsdWRlICJody9wY2kvcGNpX2hvc3QuaCIKPiAgI2luY2x1ZGUgImh3 L2kzODYvcGMuaCIKPiAgI2luY2x1ZGUgImh3L2kzODYvYXBpYy1tc2lkZWYuaCIKPiAgI2luY2x1 ZGUgImh3L3hlbi94ZW5fY29tbW9uLmgiCj4gQEAgLTg2LDYgKzg3LDEyIEBAIHR5cGVkZWYgc3Ry dWN0IFhlblBoeXNtYXAgewo+ICAgICAgUUxJU1RfRU5UUlkoWGVuUGh5c21hcCkgbGlzdDsKPiAg fSBYZW5QaHlzbWFwOwo+IAo+ICt0eXBlZGVmIHN0cnVjdCBYZW5QY2lEZXZpY2Ugewo+ICsgICAg UENJRGV2aWNlICpwY2lfZGV2Owo+ICsgICAgdWludDMyX3Qgc2JkZjsKPiArICAgIFFMSVNUX0VO VFJZKFhlblBjaURldmljZSkgZW50cnk7Cj4gK30gWGVuUGNpRGV2aWNlOwo+ICsKPiAgdHlwZWRl ZiBzdHJ1Y3QgWGVuSU9TdGF0ZSB7Cj4gICAgICBpb3NlcnZpZF90IGlvc2VydmlkOwo+ICAgICAg c2hhcmVkX2lvcGFnZV90ICpzaGFyZWRfcGFnZTsKPiBAQCAtMTA1LDYgKzExMiw3IEBAIHR5cGVk ZWYgc3RydWN0IFhlbklPU3RhdGUgewo+ICAgICAgc3RydWN0IHhzX2hhbmRsZSAqeGVuc3RvcmU7 Cj4gICAgICBNZW1vcnlMaXN0ZW5lciBtZW1vcnlfbGlzdGVuZXI7Cj4gICAgICBNZW1vcnlMaXN0 ZW5lciBpb19saXN0ZW5lcjsKPiArICAgIFFMSVNUX0hFQUQoLCBYZW5QY2lEZXZpY2UpIGRldl9s aXN0Owo+ICAgICAgRGV2aWNlTGlzdGVuZXIgZGV2aWNlX2xpc3RlbmVyOwo+ICAgICAgUUxJU1Rf SEVBRCgsIFhlblBoeXNtYXApIHBoeXNtYXA7Cj4gICAgICBod2FkZHIgZnJlZV9waHlzX29mZnNl dDsKPiBAQCAtNTY5LDYgKzU3NywxMiBAQCBzdGF0aWMgdm9pZCB4ZW5fZGV2aWNlX3JlYWxpemUo RGV2aWNlTGlzdGVuZXIKPiAqbGlzdGVuZXIsCj4gCj4gICAgICBpZiAob2JqZWN0X2R5bmFtaWNf Y2FzdChPQkpFQ1QoZGV2KSwgVFlQRV9QQ0lfREVWSUNFKSkgewo+ICAgICAgICAgIFBDSURldmlj ZSAqcGNpX2RldiA9IFBDSV9ERVZJQ0UoZGV2KTsKPiArICAgICAgICBYZW5QY2lEZXZpY2UgKnhl bmRldiA9IGdfbmV3KFhlblBjaURldmljZSwgMSk7Cj4gKwo+ICsgICAgICAgIHhlbmRldi0+cGNp X2RldiA9IHBjaV9kZXY7Cj4gKyAgICAgICAgeGVuZGV2LT5zYmRmID0gUENJX0JVSUxEX0JERihw Y2lfZGV2X2J1c19udW0ocGNpX2RldiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwY2lfZGV2LT5kZXZmbik7Cj4gKyAgICAgICAgUUxJU1RfSU5TRVJUX0hFQUQoJnN0 YXRlLT5kZXZfbGlzdCwgeGVuZGV2LCBlbnRyeSk7Cj4gCj4gICAgICAgICAgeGVuX21hcF9wY2lk ZXYoeGVuX2RvbWlkLCBzdGF0ZS0+aW9zZXJ2aWQsIHBjaV9kZXYpOwo+ICAgICAgfQo+IEBAIC01 ODEsOCArNTk1LDE3IEBAIHN0YXRpYyB2b2lkIHhlbl9kZXZpY2VfdW5yZWFsaXplKERldmljZUxp c3RlbmVyCj4gKmxpc3RlbmVyLAo+IAo+ICAgICAgaWYgKG9iamVjdF9keW5hbWljX2Nhc3QoT0JK RUNUKGRldiksIFRZUEVfUENJX0RFVklDRSkpIHsKPiAgICAgICAgICBQQ0lEZXZpY2UgKnBjaV9k ZXYgPSBQQ0lfREVWSUNFKGRldik7Cj4gKyAgICAgICAgWGVuUGNpRGV2aWNlICp4ZW5kZXYsICpu ZXh0Owo+IAo+ICAgICAgICAgIHhlbl91bm1hcF9wY2lkZXYoeGVuX2RvbWlkLCBzdGF0ZS0+aW9z ZXJ2aWQsIHBjaV9kZXYpOwo+ICsKPiArICAgICAgICBRTElTVF9GT1JFQUNIX1NBRkUoeGVuZGV2 LCAmc3RhdGUtPmRldl9saXN0LCBlbnRyeSwgbmV4dCkgewo+ICsgICAgICAgICAgICBpZiAoeGVu ZGV2LT5wY2lfZGV2ID09IHBjaV9kZXYpIHsKPiArICAgICAgICAgICAgICAgIFFMSVNUX1JFTU9W RSh4ZW5kZXYsIGVudHJ5KTsKPiArICAgICAgICAgICAgICAgIGdfZnJlZSh4ZW5kZXYpOwo+ICsg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gICAg ICB9Cj4gIH0KPiAKPiBAQCAtOTAzLDYgKzkyNiw2MiBAQCBzdGF0aWMgdm9pZCBjcHVfaW9yZXFf bW92ZShpb3JlcV90ICpyZXEpCj4gICAgICB9Cj4gIH0KPiAKPiArc3RhdGljIHZvaWQgY3B1X2lv cmVxX2NvbmZpZyhYZW5JT1N0YXRlICpzdGF0ZSwgaW9yZXFfdCAqcmVxKQo+ICt7Cj4gKyAgICB1 aW50MzJfdCBzYmRmID0gcmVxLT5hZGRyID4+IDMyOwo+ICsgICAgdWludDMyX3QgcmVnID0gcmVx LT5hZGRyOwo+ICsgICAgWGVuUGNpRGV2aWNlICp4ZW5kZXY7Cj4gKwo+ICsgICAgaWYgKHJlcS0+ c2l6ZSAhPSBzaXplb2YodWludDhfdCkgJiYgcmVxLT5zaXplICE9IHNpemVvZih1aW50MTZfdCkg JiYKPiArICAgICAgICByZXEtPnNpemUgIT0gc2l6ZW9mKHVpbnQzMl90KSkgewo+ICsgICAgICAg IGh3X2Vycm9yKCJQQ0kgY29uZmlnIGFjY2VzczogYmFkIHNpemUgKCV1KSIsIHJlcS0+c2l6ZSk7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHJlcS0+Y291bnQgIT0gMSkgewo+ICsgICAgICAgIGh3 X2Vycm9yKCJQQ0kgY29uZmlnIGFjY2VzczogYmFkIGNvdW50ICgldSkiLCByZXEtPmNvdW50KTsK PiArICAgIH0KPiArCj4gKyAgICBRTElTVF9GT1JFQUNIKHhlbmRldiwgJnN0YXRlLT5kZXZfbGlz dCwgZW50cnkpIHsKPiArICAgICAgICBpZiAoeGVuZGV2LT5zYmRmICE9IHNiZGYpIHsKPiArICAg ICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoIXJlcS0+ ZGF0YV9pc19wdHIpIHsKPiArICAgICAgICAgICAgaWYgKHJlcS0+ZGlyID09IElPUkVRX1JFQUQp IHsKPiArICAgICAgICAgICAgICAgIHJlcS0+ZGF0YSA9IHBjaV9ob3N0X2NvbmZpZ19yZWFkX2Nv bW1vbigKPiArICAgICAgICAgICAgICAgICAgICB4ZW5kZXYtPnBjaV9kZXYsIHJlZywgUENJX0NP TkZJR19TUEFDRV9TSVpFLAo+ICsgICAgICAgICAgICAgICAgICAgIHJlcS0+c2l6ZSk7Cj4gKyAg ICAgICAgICAgICAgICB0cmFjZV9jcHVfaW9yZXFfY29uZmlnX3JlYWQocmVxLCB4ZW5kZXYtPnNi ZGYsIHJlZywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXEtPnNpemUsIHJlcS0+ZGF0YSk7Cj4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxLT5kaXIg PT0gSU9SRVFfV1JJVEUpIHsKPiArICAgICAgICAgICAgICAgIHRyYWNlX2NwdV9pb3JlcV9jb25m aWdfd3JpdGUocmVxLCB4ZW5kZXYtPnNiZGYsIHJlZywKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVxLT5zaXplLCByZXEtPmRhdGEpOwo+ICsgICAgICAg ICAgICAgICAgcGNpX2hvc3RfY29uZmlnX3dyaXRlX2NvbW1vbigKPiArICAgICAgICAgICAgICAg ICAgICB4ZW5kZXYtPnBjaV9kZXYsIHJlZywgUENJX0NPTkZJR19TUEFDRV9TSVpFLAo+ICsgICAg ICAgICAgICAgICAgICAgIHJlcS0+ZGF0YSwgcmVxLT5zaXplKTsKPiArICAgICAgICAgICAgfQo+ ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIHVpbnQzMl90IHRtcDsKPiArCj4gKyAg ICAgICAgICAgIGlmIChyZXEtPmRpciA9PSBJT1JFUV9SRUFEKSB7Cj4gKyAgICAgICAgICAgICAg ICB0bXAgPSBwY2lfaG9zdF9jb25maWdfcmVhZF9jb21tb24oCj4gKyAgICAgICAgICAgICAgICAg ICAgeGVuZGV2LT5wY2lfZGV2LCByZWcsIFBDSV9DT05GSUdfU1BBQ0VfU0laRSwKPiArICAgICAg ICAgICAgICAgICAgICByZXEtPnNpemUpOwo+ICsgICAgICAgICAgICAgICAgdHJhY2VfY3B1X2lv cmVxX2NvbmZpZ19yZWFkKHJlcSwgeGVuZGV2LT5zYmRmLCByZWcsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLT5zaXplLCB0bXApOwo+ICsgICAgICAg ICAgICAgICAgd3JpdGVfcGh5c19yZXFfaXRlbShyZXEtPmRhdGEsIHJlcSwgMCwgJnRtcCk7Cj4g KyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxLT5kaXIgPT0gSU9SRVFfV1JJVEUpIHsKPiArICAg ICAgICAgICAgICAgIHJlYWRfcGh5c19yZXFfaXRlbShyZXEtPmRhdGEsIHJlcSwgaSwgJnRtcCk7 CgouLi5oZXJlLiAKCkknbGwgc2VuZCB2NCBzaG9ydGx5LgoKICBQYXVsCgo+ICsgICAgICAgICAg ICAgICAgdHJhY2VfY3B1X2lvcmVxX2NvbmZpZ193cml0ZShyZXEsIHhlbmRldi0+c2JkZiwgcmVn LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEtPnNp emUsIHRtcCk7Cj4gKyAgICAgICAgICAgICAgICBwY2lfaG9zdF9jb25maWdfd3JpdGVfY29tbW9u KAo+ICsgICAgICAgICAgICAgICAgICAgIHhlbmRldi0+cGNpX2RldiwgcmVnLCBQQ0lfQ09ORklH X1NQQUNFX1NJWkUsCj4gKyAgICAgICAgICAgICAgICAgICAgdG1wLCByZXEtPnNpemUpOwo+ICsg ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9p ZCByZWdzX3RvX2NwdSh2bXdhcmVfcmVnc190ICp2bXBvcnRfcmVncywgaW9yZXFfdCAqcmVxKQo+ ICB7Cj4gICAgICBYODZDUFUgKmNwdTsKPiBAQCAtOTc1LDI3ICsxMDU0LDkgQEAgc3RhdGljIHZv aWQgaGFuZGxlX2lvcmVxKFhlbklPU3RhdGUgKnN0YXRlLCBpb3JlcV90Cj4gKnJlcSkKPiAgICAg ICAgICBjYXNlIElPUkVRX1RZUEVfSU5WQUxJREFURToKPiAgICAgICAgICAgICAgeGVuX2ludmFs aWRhdGVfbWFwX2NhY2hlKCk7Cj4gICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgIGNhc2Ug SU9SRVFfVFlQRV9QQ0lfQ09ORklHOiB7Cj4gLSAgICAgICAgICAgIHVpbnQzMl90IHNiZGYgPSBy ZXEtPmFkZHIgPj4gMzI7Cj4gLSAgICAgICAgICAgIHVpbnQzMl90IHZhbDsKPiAtCj4gLSAgICAg ICAgICAgIC8qIEZha2UgYSB3cml0ZSB0byBwb3J0IDB4Q0Y4IHNvIHRoYXQKPiAtICAgICAgICAg ICAgICogdGhlIGNvbmZpZyBzcGFjZSBhY2Nlc3Mgd2lsbCB0YXJnZXQgdGhlCj4gLSAgICAgICAg ICAgICAqIGNvcnJlY3QgZGV2aWNlIG1vZGVsLgo+IC0gICAgICAgICAgICAgKi8KPiAtICAgICAg ICAgICAgdmFsID0gKDF1IDw8IDMxKSB8Cj4gLSAgICAgICAgICAgICAgICAgICgocmVxLT5hZGRy ICYgMHgwZjAwKSA8PCAxNikgfAo+IC0gICAgICAgICAgICAgICAgICAoKHNiZGYgJiAweGZmZmYp IDw8IDgpIHwKPiAtICAgICAgICAgICAgICAgICAgKHJlcS0+YWRkciAmIDB4ZmMpOwo+IC0gICAg ICAgICAgICBkb19vdXRwKDB4Y2Y4LCA0LCB2YWwpOwo+IC0KPiAtICAgICAgICAgICAgLyogTm93 IGlzc3VlIHRoZSBjb25maWcgc3BhY2UgYWNjZXNzIHZpYQo+IC0gICAgICAgICAgICAgKiBwb3J0 IDB4Q0ZDCj4gLSAgICAgICAgICAgICAqLwo+IC0gICAgICAgICAgICByZXEtPmFkZHIgPSAweGNm YyB8IChyZXEtPmFkZHIgJiAweDAzKTsKPiAtICAgICAgICAgICAgY3B1X2lvcmVxX3BpbyhyZXEp Owo+ICsgICAgICAgIGNhc2UgSU9SRVFfVFlQRV9QQ0lfQ09ORklHOgo+ICsgICAgICAgICAgICBj cHVfaW9yZXFfY29uZmlnKHN0YXRlLCByZXEpOwo+ICAgICAgICAgICAgICBicmVhazsKPiAtICAg ICAgICB9Cj4gICAgICAgICAgZGVmYXVsdDoKPiAgICAgICAgICAgICAgaHdfZXJyb3IoIkludmFs aWQgaW9yZXEgdHlwZSAweCV4XG4iLCByZXEtPnR5cGUpOwo+ICAgICAgfQo+IEBAIC0xMzY2LDYg KzE0MjcsNyBAQCB2b2lkIHhlbl9odm1faW5pdChQQ01hY2hpbmVTdGF0ZSAqcGNtcywKPiBNZW1v cnlSZWdpb24gKipyYW1fbWVtb3J5KQo+ICAgICAgbWVtb3J5X2xpc3RlbmVyX3JlZ2lzdGVyKCZz dGF0ZS0+aW9fbGlzdGVuZXIsICZhZGRyZXNzX3NwYWNlX2lvKTsKPiAKPiAgICAgIHN0YXRlLT5k ZXZpY2VfbGlzdGVuZXIgPSB4ZW5fZGV2aWNlX2xpc3RlbmVyOwo+ICsgICAgUUxJU1RfSU5JVCgm c3RhdGUtPmRldl9saXN0KTsKPiAgICAgIGRldmljZV9saXN0ZW5lcl9yZWdpc3Rlcigmc3RhdGUt PmRldmljZV9saXN0ZW5lcik7Cj4gCj4gICAgICAvKiBJbml0aWFsaXplIGJhY2tlbmQgY29yZSAm IGRyaXZlcnMgKi8KPiAtLQo+IDIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==