From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: Re: [PATCH v2 26/30] xen/x86: add PCIe emulation Date: Thu, 6 Oct 2016 17:53:01 +0200 Message-ID: <20161006155301.avnopenjq27afqvi@mac> References: <1474991845-27962-1-git-send-email-roger.pau@citrix.com> <1474991845-27962-27-git-send-email-roger.pau@citrix.com> <722c678773334f13b868e126af552ed6@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bsB9W-0000sQ-PJ for xen-devel@lists.xenproject.org; Thu, 06 Oct 2016 16:04:10 +0000 Content-Disposition: inline In-Reply-To: <722c678773334f13b868e126af552ed6@AMSPEX02CL03.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant Cc: "xen-devel@lists.xenproject.org" , "boris.ostrovsky@oracle.com" , Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMDMsIDIwMTYgYXQgMTE6NDY6MjVBTSArMDEwMCwgUGF1bCBEdXJyYW50IHdy b3RlOgo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IFJvZ2VyIFBhdSBN b25uZSBbbWFpbHRvOnJvZ2VyLnBhdUBjaXRyaXguY29tXQo+ID4gU2VudDogMjcgU2VwdGVtYmVy IDIwMTYgMTY6NTcKPiA+IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiA+IENj OiBrb25yYWQud2lsa0BvcmFjbGUuY29tOyBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbTsgUm9n ZXIgUGF1IE1vbm5lCj4gPiA8cm9nZXIucGF1QGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQgPFBh dWwuRHVycmFudEBjaXRyaXguY29tPjsgSmFuCj4gPiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT47IEFuZHJldyBDb29wZXIKPiA+IDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPgo+ID4gU3Vi amVjdDogW1BBVENIIHYyIDI2LzMwXSB4ZW4veDg2OiBhZGQgUENJZSBlbXVsYXRpb24KPiA+IAo+ ID4gQWRkIGEgbmV3IE1NSU8gaGFuZGxlciB0aGF0IHRyYXBzIGFjY2Vzc2VzIHRvIFBDSWUgcmVn aW9ucywgYXMgZGlzY292ZXJlZAo+ID4gYnkKPiA+IFhlbiBmcm9tIHRoZSBNQ0ZHIEFDUEkgdGFi bGUuIFRoZSBoYW5kbGVyIHVzZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQo+ID4gdXNlZAo+ID4g Zm9yIGFjY2Vzc2VzIHRvIHRoZSBJTyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4KPiA+IAo+ID4g U2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Cj4g PiAtLS0KPiA+IENjOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgo+ID4g Q2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiA+IENjOiBBbmRyZXcgQ29vcGVy IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ID4gLS0tCj4gPiAgeGVuL2FyY2gveDg2L2h2 bS9pby5jIHwgMTc3Cj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNzEgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYyBiL3hl bi9hcmNoL3g4Ni9odm0vaW8uYwo+ID4gaW5kZXggNzc5YmFiYi4uMDg4ZTNlYyAxMDA2NDQKPiA+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwo+ID4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9p by5jCj4gPiBAQCAtNDYsNiArNDYsOCBAQAo+ID4gICNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4KPiA+ ICAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgo+ID4gCj4gPiArI2luY2x1ZGUgIi4uL3g4 Nl82NC9tbWNvbmZpZy5oIgo+ID4gKwo+ID4gIC8qIFNldCBwZXJtaXNzaXZlIG1vZGUgZm9yIEhW TSBEb20wIFBDSSBwYXNzLXRocm91Z2ggYnkgZGVmYXVsdCAqLwo+ID4gIHN0YXRpYyBib29sX3Qg b3B0X2RvbTBwZXJtaXNzaXZlID0gMTsKPiA+ICBib29sZWFuX3BhcmFtKCJkb20wcGVybWlzc2l2 ZSIsIG9wdF9kb20wcGVybWlzc2l2ZSk7Cj4gPiBAQCAtMzYzLDcgKzM2NSw3IEBAIHN0YXRpYyBp bnQgaHZtX3B0X3BjaV9jb25maWdfYWNjZXNzX2NoZWNrKHN0cnVjdAo+ID4gaHZtX3B0X2Rldmlj ZSAqZCwKPiA+ICB9Cj4gPiAKPiA+ICBzdGF0aWMgaW50IGh2bV9wdF9wY2lfcmVhZF9jb25maWco c3RydWN0IGh2bV9wdF9kZXZpY2UgKmQsIHVpbnQzMl90IGFkZHIsCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpkYXRhLCBpbnQgbGVuKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZGF0YSwgaW50IGxlbiwgYm9v bCBwY2llKQo+ID4gIHsKPiA+ICAgICAgdWludDMyX3QgdmFsID0gMDsKPiA+ICAgICAgc3RydWN0 IGh2bV9wdF9yZWdfZ3JvdXAgKnJlZ19ncnBfZW50cnkgPSBOVUxMOwo+ID4gQEAgLTM3Nyw3ICsz NzksNyBAQCBzdGF0aWMgaW50IGh2bV9wdF9wY2lfcmVhZF9jb25maWcoc3RydWN0Cj4gPiBodm1f cHRfZGV2aWNlICpkLCB1aW50MzJfdCBhZGRyLAo+ID4gICAgICB1bnNpZ25lZCBpbnQgZnVuYyA9 IFBDSV9GVU5DKGQtPnBkZXYtPmRldmZuKTsKPiA+IAo+ID4gICAgICAvKiBTYW5pdHkgY2hlY2tz LiAqLwo+ID4gLSAgICBpZiAoIGh2bV9wdF9wY2lfY29uZmlnX2FjY2Vzc19jaGVjayhkLCBhZGRy LCBsZW4pICkKPiA+ICsgICAgaWYgKCAhcGNpZSAmJiBodm1fcHRfcGNpX2NvbmZpZ19hY2Nlc3Nf Y2hlY2soZCwgYWRkciwgbGVuKSApCj4gPiAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRM RUFCTEU7Cj4gPiAKPiA+ICAgICAgLyogRmluZCByZWdpc3RlciBncm91cCBlbnRyeS4gKi8KPiA+ IEBAIC00NjgsNyArNDcwLDcgQEAgc3RhdGljIGludCBodm1fcHRfcGNpX3JlYWRfY29uZmlnKHN0 cnVjdAo+ID4gaHZtX3B0X2RldmljZSAqZCwgdWludDMyX3QgYWRkciwKPiA+ICB9Cj4gPiAKPiA+ ICBzdGF0aWMgaW50IGh2bV9wdF9wY2lfd3JpdGVfY29uZmlnKHN0cnVjdCBodm1fcHRfZGV2aWNl ICpkLCB1aW50MzJfdCBhZGRyLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IHZhbCwgaW50IGxlbikKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCB2YWwsIGludCBsZW4sIGJvb2wgcGNpZSkKPiA+ICB7Cj4gPiAg ICAgIGludCBpbmRleCA9IDA7Cj4gPiAgICAgIHN0cnVjdCBodm1fcHRfcmVnX2dyb3VwICpyZWdf Z3JwX2VudHJ5ID0gTlVMTDsKPiA+IEBAIC00ODUsNyArNDg3LDcgQEAgc3RhdGljIGludCBodm1f cHRfcGNpX3dyaXRlX2NvbmZpZyhzdHJ1Y3QKPiA+IGh2bV9wdF9kZXZpY2UgKmQsIHVpbnQzMl90 IGFkZHIsCj4gPiAgICAgIHVuc2lnbmVkIGludCBmdW5jID0gUENJX0ZVTkMoZC0+cGRldi0+ZGV2 Zm4pOwo+ID4gCj4gPiAgICAgIC8qIFNhbml0eSBjaGVja3MuICovCj4gPiAtICAgIGlmICggaHZt X3B0X3BjaV9jb25maWdfYWNjZXNzX2NoZWNrKGQsIGFkZHIsIGxlbikgKQo+ID4gKyAgICBpZiAo ICFwY2llICYmIGh2bV9wdF9wY2lfY29uZmlnX2FjY2Vzc19jaGVjayhkLCBhZGRyLCBsZW4pICkK PiA+ICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPiA+IAo+ID4gICAgICAv KiBGaW5kIHJlZ2lzdGVyIGdyb3VwIGVudHJ5LiAqLwo+ID4gQEAgLTY3Nyw3ICs2NzksNyBAQCBz dGF0aWMgaW50IGh3X2RwY2lfcG9ydGlvX3JlYWQoY29uc3Qgc3RydWN0Cj4gPiBodm1faW9faGFu ZGxlciAqaGFuZGxlciwKPiA+ICAgICAgaWYgKCBkZXYgIT0gTlVMTCApCj4gPiAgICAgIHsKPiA+ ICAgICAgICAgIHJlZyA9IChjdXJyZC0+YXJjaC5wY2lfY2Y4ICYgMHhmYykgfCAoYWRkciAmIDB4 Myk7Cj4gPiAtICAgICAgICByYyA9IGh2bV9wdF9wY2lfcmVhZF9jb25maWcoZGV2LCByZWcsICZk YXRhMzIsIHNpemUpOwo+ID4gKyAgICAgICAgcmMgPSBodm1fcHRfcGNpX3JlYWRfY29uZmlnKGRl diwgcmVnLCAmZGF0YTMyLCBzaXplLCBmYWxzZSk7Cj4gPiAgICAgICAgICBpZiAoIHJjID09IFg4 NkVNVUxfT0tBWSApCj4gPiAgICAgICAgICB7Cj4gPiAgICAgICAgICAgICAgcmVhZF91bmxvY2so JmN1cnJkLT5hcmNoLmh2bV9kb21haW4ucHRfbG9jayk7Cj4gPiBAQCAtNzIyLDcgKzcyNCw3IEBA IHN0YXRpYyBpbnQgaHdfZHBjaV9wb3J0aW9fd3JpdGUoY29uc3Qgc3RydWN0Cj4gPiBodm1faW9f aGFuZGxlciAqaGFuZGxlciwKPiA+ICAgICAgaWYgKCBkZXYgIT0gTlVMTCApCj4gPiAgICAgIHsK PiA+ICAgICAgICAgIHJlZyA9IChjdXJyZC0+YXJjaC5wY2lfY2Y4ICYgMHhmYykgfCAoYWRkciAm IDB4Myk7Cj4gPiAtICAgICAgICByYyA9IGh2bV9wdF9wY2lfd3JpdGVfY29uZmlnKGRldiwgcmVn LCBkYXRhMzIsIHNpemUpOwo+ID4gKyAgICAgICAgcmMgPSBodm1fcHRfcGNpX3dyaXRlX2NvbmZp ZyhkZXYsIHJlZywgZGF0YTMyLCBzaXplLCBmYWxzZSk7Cj4gPiAgICAgICAgICBpZiAoIHJjID09 IFg4NkVNVUxfT0tBWSApCj4gPiAgICAgICAgICB7Cj4gPiAgICAgICAgICAgICAgcmVhZF91bmxv Y2soJmN1cnJkLT5hcmNoLmh2bV9kb21haW4ucHRfbG9jayk7Cj4gPiBAQCAtMTAwMiw2ICsxMDA0 LDE2NiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9pb19vcHMKPiA+IGh3X2RwY2lfcG9ydGlv X29wcyA9IHsKPiA+ICAgICAgLndyaXRlID0gaHdfZHBjaV9wb3J0aW9fd3JpdGUKPiA+ICB9Owo+ ID4gCj4gPiArc3RhdGljIHN0cnVjdCBhY3BpX21jZmdfYWxsb2NhdGlvbiAqcGNpZV9maW5kX21t Y2ZnKHVuc2lnbmVkIGxvbmcgYWRkcikKPiA+ICt7Cj4gPiArICAgIGludCBpOwo+ID4gKwo+ID4g KyAgICBmb3IgKCBpID0gMDsgaSA8IHBjaV9tbWNmZ19jb25maWdfbnVtOyBpKysgKQo+ID4gKyAg ICB7Cj4gPiArICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7Cj4gPiArCj4gPiArICAg ICAgICBzdGFydCA9IHBjaV9tbWNmZ19jb25maWdbaV0uYWRkcmVzczsKPiA+ICsgICAgICAgIGVu ZCA9IHBjaV9tbWNmZ19jb25maWdbaV0uYWRkcmVzcyArCj4gPiArICAgICAgICAgICAgICAoKHBj aV9tbWNmZ19jb25maWdbaV0uZW5kX2J1c19udW1iZXIgKyAxKSA8PCAyMCk7Cj4gPiArICAgICAg ICBpZiAoIGFkZHIgPj0gc3RhcnQgJiYgYWRkciA8IGVuZCApCj4gPiArICAgICAgICAgICAgcmV0 dXJuICZwY2lfbW1jZmdfY29uZmlnW2ldOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldHVy biBOVUxMOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IGh2bV9wdF9kZXZpY2UgKmh3 X3BjaWVfZ2V0X2RldmljZSh1bnNpZ25lZCBpbnQgc2VnLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidXMsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IHNsb3QsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGZ1bmMpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgaHZtX3B0X2Rldmlj ZSAqZGV2Owo+ID4gKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwo+ID4g Kwo+ID4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KCBkZXYsICZkLT5hcmNoLmh2bV9kb21haW4u cHRfZGV2aWNlcywgZW50cmllcyApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlmICggZGV2LT5w ZGV2LT5zZWcgIT0gc2VnIHx8IGRldi0+cGRldi0+YnVzICE9IGJ1cyB8fAo+ID4gKyAgICAgICAg ICAgICBkZXYtPnBkZXYtPmRldmZuICE9IFBDSV9ERVZGTihzbG90LCBmdW5jKSApCj4gPiArICAg ICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICByZXR1cm4gZGV2Owo+ID4gKyAg ICB9Cj4gPiArCj4gPiArICAgIHJldHVybiBOVUxMOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBwY2llX2RlY29kZV9hZGRyKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgaW50ICpi dXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnNsb3Qs IHVuc2lnbmVkIGludCAqZnVuYywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCAqcmVnKQo+ID4gK3sKPiA+ICsKPiA+ICsgICAgKmJ1cyA9IChhZGRyID4+IDIw KSAmIDB4ZmY7Cj4gPiArICAgICpzbG90ID0gKGFkZHIgPj4gMTUpICYgMHgxZjsKPiA+ICsgICAg KmZ1bmMgPSAoYWRkciA+PiAxMikgJiAweDc7Cj4gPiArICAgICpyZWcgPSBhZGRyICYgMHhmZmY7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgcGNpZV9yYW5nZShzdHJ1Y3QgdmNwdSAqdiwg dW5zaWduZWQgbG9uZyBhZGRyKQo+ID4gK3sKPiA+ICsKPiA+ICsgICAgcmV0dXJuIHBjaWVfZmlu ZF9tbWNmZyhhZGRyKSAhPSBOVUxMID8gMSA6IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBp bnQgcGNpZV9yZWFkKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyAqcHZhbCkK PiA+ICt7Cj4gPiArICAgIHN0cnVjdCBhY3BpX21jZmdfYWxsb2NhdGlvbiAqbW1jZmcgPSBwY2ll X2ZpbmRfbW1jZmcoYWRkcik7Cj4gPiArICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47 Cj4gPiArICAgIHVuc2lnbmVkIGludCBzZWcsIGJ1cywgc2xvdCwgZnVuYywgcmVnOwo+ID4gKyAg ICBzdHJ1Y3QgaHZtX3B0X2RldmljZSAqZGV2Owo+ID4gKyAgICB1aW50MzJfdCB2YWw7Cj4gPiAr ICAgIGludCByYzsKPiA+ICsKPiA+ICsgICAgQVNTRVJUKG1tY2ZnICE9IE5VTEwpOwo+ID4gKwo+ ID4gKyAgICBpZiAoIGxlbiA+IDQgfHwgbGVuID09IDMgKQo+ID4gKyAgICAgICAgcmV0dXJuIFg4 NkVNVUxfVU5IQU5ETEVBQkxFOwo+ID4gKwo+ID4gKyAgICBhZGRyIC09IG1tY2ZnLT5hZGRyZXNz Owo+ID4gKyAgICBzZWcgPSBtbWNmZy0+cGNpX3NlZ21lbnQ7Cj4gPiArICAgIHBjaWVfZGVjb2Rl X2FkZHIoYWRkciwgJmJ1cywgJnNsb3QsICZmdW5jLCAmcmVnKTsKPiA+ICsKPiA+ICsgICAgcmVh ZF9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ucHRfbG9jayk7Cj4gPiArICAgIGRldiA9IGh3X3Bj aWVfZ2V0X2RldmljZShzZWcsIGJ1cywgc2xvdCwgZnVuYyk7Cj4gPiArICAgIGlmICggZGV2ICE9 IE5VTEwgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICByYyA9IGh2bV9wdF9wY2lfcmVhZF9jb25m aWcoZGV2LCByZWcsICZ2YWwsIGxlbiwgdHJ1ZSk7Cj4gPiArICAgICAgICBpZiAoIHJjID09IFg4 NkVNVUxfT0tBWSApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAgICAgcmVhZF91bmxvY2so JmQtPmFyY2guaHZtX2RvbWFpbi5wdF9sb2NrKTsKPiA+ICsgICAgICAgICAgICBnb3RvIG91dDsK PiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4gKyAgICByZWFkX3VubG9jaygmZC0+YXJjaC5o dm1fZG9tYWluLnB0X2xvY2spOwo+ID4gKwo+ID4gKyAgICAvKiBQYXNzLXRocm91Z2ggKi8KPiA+ ICsgICAgc3dpdGNoICggbGVuICkKPiA+ICsgICAgewo+ID4gKyAgICBjYXNlIDE6Cj4gPiArICAg ICAgICB2YWwgPSBwY2lfY29uZl9yZWFkOChzZWcsIGJ1cywgc2xvdCwgZnVuYywgcmVnKTsKPiA+ ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIDI6Cj4gPiArICAgICAgICB2YWwgPSBwY2lf Y29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIHJlZyk7Cj4gPiArICAgICAgICBicmVh azsKPiA+ICsgICAgY2FzZSA0Ogo+ID4gKyAgICAgICAgdmFsID0gcGNpX2NvbmZfcmVhZDMyKHNl ZywgYnVzLCBzbG90LCBmdW5jLCByZWcpOwo+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIH0K PiA+ICsKPiA+ICsgb3V0Ogo+ID4gKyAgICAqcHZhbCA9IHZhbDsKPiA+ICsgICAgcmV0dXJuIFg4 NkVNVUxfT0tBWTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwY2llX3dyaXRlKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gPiArICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKQo+ID4gK3sKPiA+ICsgICAgc3Ry dWN0IGFjcGlfbWNmZ19hbGxvY2F0aW9uICptbWNmZyA9IHBjaWVfZmluZF9tbWNmZyhhZGRyKTsK PiA+ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKPiA+ICsgICAgdW5zaWduZWQg aW50IHNlZywgYnVzLCBzbG90LCBmdW5jLCByZWc7Cj4gPiArICAgIHN0cnVjdCBodm1fcHRfZGV2 aWNlICpkZXY7Cj4gPiArICAgIGludCByYzsKPiA+ICsKPiA+ICsgICAgQVNTRVJUKG1tY2ZnICE9 IE5VTEwpOwo+ID4gKwo+ID4gKyAgICBpZiAoIGxlbiA+IDQgfHwgbGVuID09IDMgKQo+ID4gKyAg ICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwo+ID4gKwo+ID4gKyAgICBhZGRyIC09 IG1tY2ZnLT5hZGRyZXNzOwo+ID4gKyAgICBzZWcgPSBtbWNmZy0+cGNpX3NlZ21lbnQ7Cj4gPiAr ICAgIHBjaWVfZGVjb2RlX2FkZHIoYWRkciwgJmJ1cywgJnNsb3QsICZmdW5jLCAmcmVnKTsKPiA+ ICsKPiA+ICsgICAgcmVhZF9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ucHRfbG9jayk7Cj4gPiAr ICAgIGRldiA9IGh3X3BjaWVfZ2V0X2RldmljZShzZWcsIGJ1cywgc2xvdCwgZnVuYyk7Cj4gPiAr ICAgIGlmICggZGV2ICE9IE5VTEwgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICByYyA9IGh2bV9w dF9wY2lfd3JpdGVfY29uZmlnKGRldiwgcmVnLCB2YWwsIGxlbiwgdHJ1ZSk7Cj4gPiArICAgICAg ICBpZiAoIHJjID09IFg4NkVNVUxfT0tBWSApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAg ICAgcmVhZF91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5wdF9sb2NrKTsKPiA+ICsgICAgICAg ICAgICByZXR1cm4gcmM7Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0KPiA+ICsgICAgcmVhZF91 bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5wdF9sb2NrKTsKPiA+ICsKPiA+ICsgICAgLyogUGFz cy10aHJvdWdoICovCj4gPiArICAgIHN3aXRjaCAoIGxlbiApCj4gPiArICAgIHsKPiA+ICsgICAg Y2FzZSAxOgo+ID4gKyAgICAgICAgcGNpX2NvbmZfd3JpdGU4KHNlZywgYnVzLCBzbG90LCBmdW5j LCByZWcsIHZhbCk7Cj4gPiArICAgICAgICBicmVhazsKPiA+ICsgICAgY2FzZSAyOgo+ID4gKyAg ICAgICAgcGNpX2NvbmZfd3JpdGUxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgcmVnLCB2YWwpOwo+ ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIGNhc2UgNDoKPiA+ICsgICAgICAgIHBjaV9jb25m X3dyaXRlMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIHJlZywgdmFsKTsKPiA+ICsgICAgICAgIGJy ZWFrOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldHVybiBYODZFTVVMX09LQVk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21taW9fb3BzIHBjaWVfbW1pb19v cHMgPSB7Cj4gPiArICAgIC5jaGVjayA9IHBjaWVfcmFuZ2UsCj4gPiArICAgIC5yZWFkID0gcGNp ZV9yZWFkLAo+ID4gKyAgICAud3JpdGUgPSBwY2llX3dyaXRlCj4gPiArfTsKPiA+ICsKPiA+ICB2 b2lkIHJlZ2lzdGVyX2RwY2lfcG9ydGlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCkKPiA+ICB7 Cj4gPiAgICAgIHN0cnVjdCBodm1faW9faGFuZGxlciAqaGFuZGxlciA9IGh2bV9uZXh0X2lvX2hh bmRsZXIoZCk7Cj4gPiBAQCAtMTAxMSw3ICsxMTczLDEwIEBAIHZvaWQgcmVnaXN0ZXJfZHBjaV9w b3J0aW9faGFuZGxlcihzdHJ1Y3QgZG9tYWluCj4gPiAqZCkKPiA+IAo+ID4gICAgICBoYW5kbGVy LT50eXBlID0gSU9SRVFfVFlQRV9QSU87Cj4gPiAgICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWlu KGQpICkKPiA+ICsgICAgewo+ID4gICAgICAgICAgaGFuZGxlci0+b3BzID0gJmh3X2RwY2lfcG9y dGlvX29wczsKPiA+ICsgICAgICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmcGNpZV9tbWlv X29wcyk7Cj4gCj4gVGhpcyBpcyBhIHNvbWV3aGF0IGNvdW50ZXJpbnR1aXRpdmUgcGxhY2UgdG8g YmUgcmVnaXN0ZXJpbmcgYW4gTU1JTyBoYW5kbGVyPyBXb3VsZCB0aGlzIG5vdCBiZSBiZXR0ZXIg ZG9uZSBkaXJlY3RseSBieSB0aGUgY2FsbGVyPwoKUmlnaHQsIEkndmUgbW92ZWQgdGhlIGhhbmRs ZXJzIHRvIGFyY2gveDg2L3BjaS5jLCBhbmQgZGlyZWN0bHkgcmVnaXN0ZXJlZCB0aGUgCmhhbmRs ZXIgaW4gaHZtX2RvbWFpbl9pbml0aWFsaXNlLiBUQkgsIEkgdGhpbmsgd2Ugc2hvdWxkIHRhbGsg YSBsaXR0bGUgYml0IAphYm91dCBob3cgdGhpcyBjb2RlIHNob3VsZCBiZSBzdHJ1Y3R1cmVkLiBT aG91bGQgaXQgZ28gaW50byBzb21lIGNvbW1vbiAKc3ViZGlyZWN0b3J5PyBTaG91bGQgaXQgYmUg c3ByaW5rbGVkIGFyb3VuZCBsaWtlIGl0J3MgZG9uZSBpbiB0aGlzIHNlcmllcz8KClJvZ2VyLgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==