From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: Re: [PATCH v3 for-next 2/3] x86/pt: enable binding of GSIs to a PVH Dom0 Date: Wed, 31 May 2017 15:29:52 +0100 Message-ID: <20170531142952.trlcce7v37dbdzqh@MacBook-Pro-de-Roger.local> References: <20170517151516.52421-1-roger.pau@citrix.com> <20170517151516.52421-3-roger.pau@citrix.com> <592D5EFC020000780015D8A8@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dG4mH-0008AV-0N for xen-devel@lists.xenproject.org; Wed, 31 May 2017 14:39:13 +0000 Content-Disposition: inline In-Reply-To: <592D5EFC020000780015D8A8@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Andrew Cooper , boris.ostrovsky@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXkgMzAsIDIwMTcgYXQgMDQ6MDE6MDBBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDE3LjA1LjE3IGF0IDE3OjE1LCA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdy b3RlOgo+ID4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYwo+ID4gKysrIGIveGVuL2FyY2gv eDg2L2h2bS9pcnEuYwo+ID4gQEAgLTEyNiw2ICsxMjYsNDkgQEAgdm9pZCBodm1fcGNpX2ludHhf ZGVhc3NlcnQoCj4gPiAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xv Y2spOwo+ID4gIH0KPiA+ICAKPiA+ICt2b2lkIGh2bV9nc2lfYXNzZXJ0KHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGludCBnc2kpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgaHZtX2lycSAqaHZt X2lycSA9IGh2bV9kb21haW5faXJxKGQpOwo+ID4gKwo+ID4gKyAgICBpZiAoIGdzaSA+PSBodm1f aXJxLT5ucl9nc2lzICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxF KCk7Cj4gPiArICAgICAgICByZXR1cm47Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgLyoKPiA+ ICsgICAgICogX19odm1fcGNpX2ludHhfe2RlfWFzc2VydCB1c2VzIGFuIGFycmF5IHRvIHRyYWNr IHRoZSBzdGF0dXMgb2YgZWFjaAo+ID4gKyAgICAgKiBpbnRlcnJ1cHQgbGluZSwgYW5kIFhlbiBk b2VzIHRoZSByb3V0aW5nIGFuZCBHU0kgYXNzZXJ0aW9uIGJhc2VkIG9uCj4gPiArICAgICAqIHRo YXQuIFRoaXMgcHJldmVudHMgdGhlIHNhbWUgbGluZSBmcm9tIHRyaWdnZXJpbmcgbXVsdGlwbGUg dGltZXMsIHdoaWNoCj4gPiArICAgICAqIGlzIG5vdCBhdmFpbGFibGUgaGVyZSwgYW5kIHRodXMg WGVuIG5lZWRzIHRvIHJlbHkgb24gZ3NpX2Fzc2VydF9jb3VudCBpbgo+ID4gKyAgICAgKiBvcmRl ciB0byBrbm93IGlmIHRoZSBHU0kgaXMgcGVuZGluZyBvciBub3QuCj4gPiArICAgICAqLwo+IAo+ IFRoZSAid2hpY2ggaXMgbm90IGF2YWlsYWJsZSBoZXJlIiBwYXJ0IGlzIGF0IGxlYXN0IGNvbmZ1 c2luZy4gSSdtIG5vdAo+IGV2ZW4gc3VyZSB3aGV0aGVyIHRoZSAid2hpY2giIGlzIHN1cHBvc2Vk IHRvIHJlZmVyIHRvIHRoZSBhcnJheSBvcgo+IHNvbWV0aGluZyBlbHNlLCBiZWNhdXNlIHlvdSB1 c2UgdGhlIGV4YWN0IHNhbWUgYXJyYXkgaGVyZS4KCkkgYWdyZWUsIGl0J3MgY29uZnVzaW5nIGFu ZCBiYWRseSB3b3JkZWQsIGhvdyBhYm91dDoKCl9faHZtX3BjaV9pbnR4X3tkZX1hc3NlcnQgdXNl cyBhIGJpdGZpZWxkIGluIHBjaV9pbnR4LmkgdG8gdHJhY2sgdGhlCnN0YXR1cyBvZiBlYWNoIGlu dGVycnVwdCBsaW5lLCBhbmQgWGVuIGRvZXMgdGhlIHJvdXRpbmcgYW5kIEdTSQphc3NlcnRpb24g YmFzZWQgb24gdGhhdC4gVGhlIHZhbHVlIG9mIHRoZSBwY2lfaW50eC5pIGJpdG1hcCBwcmV2ZW50 cwp0aGUgc2FtZSBsaW5lIGZyb20gdHJpZ2dlcmluZyBtdWx0aXBsZSB0aW1lcywgd2hpY2ggaXMg bm90IGF2YWlsYWJsZQpoZXJlLCBhbmQgdGh1cyBYZW4gbmVlZHMgdG8gcmVseSBvbiBnc2lfYXNz ZXJ0X2NvdW50IGluIG9yZGVyIHRvIGtub3cKaWYgdGhlIEdTSSBpcyBwZW5kaW5nIG9yIG5vdC4K Cj4gPiArdm9pZCBodm1fZ3NpX2RlYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBnc2kpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgaHZtX2lycSAqaHZtX2lycSA9IGh2bV9kb21h aW5faXJxKGQpOwo+ID4gKwo+ID4gKyAgICBpZiAoIGdzaSA+PSBodm1faXJxLT5ucl9nc2lzICkK PiA+ICsgICAgewo+ID4gKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7Cj4gPiArICAgICAg ICByZXR1cm47Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2 bV9kb21haW4uaXJxX2xvY2spOwo+ID4gKyAgICBpZiAoIGh2bV9pcnEtPmdzaV9hc3NlcnRfY291 bnRbZ3NpXSApCj4gPiArICAgICAgICBodm1faXJxLT5nc2lfYXNzZXJ0X2NvdW50W2dzaV0gPSAw Owo+ID4gKyAgICBBU1NFUlQoIWh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXSk7Cj4gCj4g SSBkb24ndCB0aGluayB0aGUgaWYoKSBhbmQgQVNTRVJUKCkgYXJlIG9mIGFueSB1c2UgaGVyZSBh bnltb3JlLgoKRml4ZWQuCgo+ID4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwo+ ID4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwo+ID4gQEAgLTE2NCw2ICsxNjQs MjAgQEAgc3RhdGljIHZvaWQgcHRfaXJxX3RpbWVfb3V0KHZvaWQgKmRhdGEpCj4gPiAgCj4gPiAg ICAgIHNwaW5fbG9jaygmaXJxX21hcC0+ZG9tLT5ldmVudF9sb2NrKTsKPiA+ICAKPiA+ICsgICAg aWYgKCBpcnFfbWFwLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9JREVOVElUWV9HU0kgKQo+ID4gKyAg ICB7Cj4gPiArICAgICAgICBzdHJ1Y3QgcGlycSAqcGlycSA9IGRwY2lfcGlycShpcnFfbWFwKTsK PiA+ICsKPiA+ICsgICAgICAgIEFTU0VSVChpc19oYXJkd2FyZV9kb21haW4oaXJxX21hcC0+ZG9t KSk7Cj4gPiArICAgICAgICAvKgo+ID4gKyAgICAgICAgICogSWRlbnRpdHkgbWFwcGVkLCBubyBu ZWVkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZ3Vlc3QgR1NJIGxpc3QgdG8gZmluZAo+ID4gKyAgICAg ICAgICogb3RoZXIgcGlycXMgc2hhcmluZyB0aGUgc2FtZSBndWVzdCBHU0kuCj4gPiArICAgICAg ICAgKi8KPiA+ICsgICAgICAgIGlycV9tYXAtPmZsYWdzIHw9IEhWTV9JUlFfRFBDSV9FT0lfTEFU Q0g7Cj4gPiArICAgICAgICBodm1fZ3NpX2RlYXNzZXJ0KGlycV9tYXAtPmRvbSwgcGlycS0+cGly cSk7Cj4gPiArICAgICAgICBnb3RvIG91dDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gICAgICBkcGNp ID0gZG9tYWluX2dldF9pcnFfZHBjaShpcnFfbWFwLT5kb20pOwo+ID4gICAgICBpZiAoIHVubGlr ZWx5KCFkcGNpKSApCj4gPiAgICAgIHsKPiA+IEBAIC0xODUsNiArMTk5LDcgQEAgc3RhdGljIHZv aWQgcHRfaXJxX3RpbWVfb3V0KHZvaWQgKmRhdGEpCj4gPiAgICAgICAgICBodm1fcGNpX2ludHhf ZGVhc3NlcnQoaXJxX21hcC0+ZG9tLCBkaWdsLT5kZXZpY2UsIGRpZ2wtPmludHgpOwo+ID4gICAg ICB9Cj4gPiAgCj4gPiArIG91dDoKPiA+ICAgICAgcHRfcGlycV9pdGVyYXRlKGlycV9tYXAtPmRv bSwgcHRfaXJxX2d1ZXN0X2VvaSwgTlVMTCk7Cj4gCj4gV2l0aCB0aGUgMToxIG1hcHBpbmcsIGRv IHlvdSByZWFsbHkgbmVlZCB0byBnbyB0aHJvdWdoCj4gcHRfcGlycV9pdGVyYXRlKCkgaGVyZT8g SS5lLiBjYW4ndCB5b3UgaW52b2tlIHB0X2lycV9ndWVzdF9lb2koKQo+IGp1c3Qgb25jZSBhbmQg YmUgZG9uZT8gT3IgcmVhbGx5IGl0IHByb2JhYmx5IGNhbiBiZSBldmVuIG1vcmUKPiBzdHJhaWdo dCwgYXMgdGhlbiB0aGVyZSBhbHNvIGlzIG5vIHBvaW50IGluIHNldHRpbmcgdGhlCj4gSFZNX0lS UV9EUENJX0VPSV9MQVRDSCBmbGFnLCBidXQgeW91IGNvdWxkIHJhdGhlciBkbwo+IGRpcmVjdGx5 IHdoYXQgcHRfaXJxX2d1ZXN0X2VvaSgpIGRvZXMgaW4gaXRzIGlmKCkgYm9keS4gT3RvaCBJIG1h eQo+IGJlIG1pc3Npbmcgc29tZXRoaW5nIGhlcmUsIGFzIEkgY2FuJ3Qgc2VlIHdoeSB0aGUgY29k ZSBpcyB1c2luZwo+IHB0X3BpcnFfaXRlcmF0ZSgpIGV2ZW4gYmVmb3JlIHlvdXIgY2hhbmdlLgoK SSBoYXZlIHRvIGFkbWl0IHRoaXMgaXMgbm90IG9idmlvdXNseSBjbGVhciB0byBtZSAob3IgSSdt IGFsc28gbWlzc2luZwpzb21ldGhpbmcpLCB0aGVyZSBhcmUgdG9vIG1hbnkgdHJhbnNsYXRpb24g bGF5ZXJzIGFuZCBpbmRpcmVjdGlvbnMgaW4KdGhpcyBjb2RlLCB0b2dldGhlciB3aXRoIGEgY29t cGxldGUgbGFjayBvZiBjb21tZW50cy4KClByZXZpb3VzIHRvIG15IGNoYW5nZSwgcHRfaXJxX3Rp bWVfb3V0IGl0ZXJhdGVzIG92ZXIgdGhlIGxpc3Qgb2YgZ3Vlc3QKZGV2aWNlcyAoZGlnbCkgYm91 bmQgdG8gYSBwaXJxLCBkZXNzZXJ0cyB0aGUgaW50ZXJydXB0IGxpbmVzIGFuZCBtYXJrcwphbGwg dGhlIHBpcnFzIGJvdW5kIHRvIHRoZSBzYW1lIGd1ZXN0IEdTSSB3aXRoIHRoZSBFT0lfTEFUQ0gg ZmxhZy4KRmluYWxseSBwdF9pcnFfdGltZV9vdXQgaXRlcmF0ZXMgb3ZlciB0aGUgbGlzdCBvZiBn dWVzdCBwaXJxcyBhbmQKY2xlYXJzIChFT0kpIGFsbCB0aGUgb25lcyBtYXJrZWQgYXMgRU9JX0xB VENILgoKSSBkb24ndCByZWFsbHkgdW5kZXJzdGFuZCB0aGUgdXNlZnVsbmVzcyBvZiB0aGUgRU9J X0xBVENIIGZsYWcsIGNhbid0CnB0X2lycV90aW1lX291dCBqdXN0IGNhbGwgcHRfaXJxX2d1ZXN0 X2VvaSBhbmQgYXZvaWQgdGhlIGl0ZXJhdGlvbj8KU29tZXRoaW5nIGxpa2U6CgpsaXN0X2Zvcl9l YWNoX2VudHJ5ICggZGlnbCwgJmlycV9tYXAtPmRpZ2xfbGlzdCwgbGlzdCApCnsKICAgIHVuc2ln bmVkIGludCBndWVzdF9nc2kgPSBodm1fcGNpX2ludHhfZ3NpKGRpZ2wtPmRldmljZSwgZGlnbC0+ aW50eCk7CiAgICBjb25zdCBzdHJ1Y3QgaHZtX2dpcnFfZHBjaV9tYXBwaW5nICpnaXJxOwoKICAg IGxpc3RfZm9yX2VhY2hfZW50cnkgKCBnaXJxLCAmZHBjaS0+Z2lycVtndWVzdF9nc2ldLCBsaXN0 ICkKICAgIHsKICAgICAgICBzdHJ1Y3QgcGlycSAqcGlycSA9IHBpcnFfaW5mbyhpcnFfbWFwLT5k b20sIGdpcnEtPm1hY2hpbmVfZ3NpKTsKCiAgICAgICAgcGlycV9kcGNpKHBpcnEpLT5tYXNrZWQg PSAwOwogICAgICAgIHBpcnFfZHBjaShwaXJxKS0+cGVuZGluZyA9IDA7CiAgICAgICAgcGlycV9n dWVzdF9lb2koZHBjaV9waXJxKHBpcnEpKTsKICAgIH0KICAgIGh2bV9wY2lfaW50eF9kZWFzc2Vy dChpcnFfbWFwLT5kb20sIGRpZ2wtPmRldmljZSwgZGlnbC0+aW50eCk7Cn0KCkkgY2FuIG9mIGNv dXJzZSBhbHNvIGRvIHNvbWV0aGluZyBzaW1pbGFyIGZvciB0aGUgaWRlbnRpdHkgbWFwcGluZwpj YXNlLgoKPiA+IEBAIC00NzIsNyArNTEwLDI3IEBAIGludCBwdF9pcnFfY3JlYXRlX2JpbmQoCj4g PiAgICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+ZmxhZ3MgPSBIVk1fSVJRX0RQQ0lfTUFQUEVE IHwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9JUlFfRFBDSV9N QUNIX1BDSSB8Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1fSVJR X0RQQ0lfR1VFU1RfUENJOwo+ID4gLSAgICAgICAgICAgICAgICBzaGFyZSA9IEJJTkRfUElSUV9f V0lMTF9TSEFSRTsKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWlu KGQpICkKPiA+ICsgICAgICAgICAgICAgICAgICAgIHNoYXJlID0gQklORF9QSVJRX19XSUxMX1NI QVJFOwo+ID4gKyAgICAgICAgICAgICAgICBlbHNlCj4gPiArICAgICAgICAgICAgICAgIHsKPiA+ ICsgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwaW47Cj4gPiArICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWMgPSBnc2lfdmlvYXBpYyhkLCBndWVz dF9nc2ksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcGluKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm ICggIXZpb2FwaWMgKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgfQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgcGlycV9kcGNpLT5mbGFncyB8PSBIVk1fSVJRX0RQQ0lfSURFTlRJ VFlfR1NJOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAqIENoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHZJTyBBUElDIHBpbiBpcyBjb25maWd1 cmVkCj4gPiArICAgICAgICAgICAgICAgICAgICAgKiBsZXZlbCBvciBlZGdlIHRyaWdnZXIsIGxl dmVsIHRyaWdnZXJlZCBpbnRlcnJ1cHRzIHdpbGwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAq IGJlIG1hcmtlZCBhcyBzaGFyZWFibGUuCj4gPiArICAgICAgICAgICAgICAgICAgICAgKi8KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNoYXJlID0gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVs ZHMudHJpZ19tb2RlOwo+IAo+IEFzIHBvaW50ZWQgb3V0IGR1cmluZyBwcmlvciByZXZpZXcgKHBl cmhhcHMgb2YgYW5vdGhlciBwYXRjaCBvZgo+IHlvdXJzKSB0aGUgdHJpZ2dlciBtb2RlIGJpdCBp cyBtZWFuaW5nbGVzcyBmb3IgbWFza2VkIFJURXMuIEF0Cj4gdGhlIHZlcnkgbGVhc3QgYW4gQVNT RVJUKCkgbmVlZHMgdG8gYmUgaGVyZSBmb3IgdGhhdCByZWFzb24sCj4gb2YgY291cnNlIHByb3Zp ZGVkIG1hc2tlZCBlbnRyaWVzIGNhbiBuZXZlciBiZSBzZWVuIGhlcmUuCgpwdF9pcnFfY3JlYXRl X2JpbmQgZm9yIEdTSXMgd2lsbCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBoYXJkd2FyZQpkb21h aW4gdW5tYXNrcyB0aGUgUlRFLCBzbyBhbiBBU1NFUlQgaXMgdGhlIHJpZ2h0IGNob2ljZSBJTUhP LgoKPiA+IEBAIC00ODksOSArNTQ3LDE1IEBAIGludCBwdF9pcnFfY3JlYXRlX2JpbmQoCj4gPiAg ICAgICAgICAgICAgICAgICAqIElSUV9HVUVTVCBpcyBub3Qgc2V0LiBBcyBzdWNoIHdlIGNhbiBy ZXNldCAnZG9tJyBkaXJlY3RseS4KPiA+ICAgICAgICAgICAgICAgICAgICovCj4gPiAgICAgICAg ICAgICAgICAgIHBpcnFfZHBjaS0+ZG9tID0gTlVMTDsKPiA+IC0gICAgICAgICAgICAgICAgbGlz dF9kZWwoJmdpcnEtPmxpc3QpOwo+ID4gLSAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZGlnbC0+ bGlzdCk7Cj4gPiAtICAgICAgICAgICAgICAgIGh2bV9pcnFfZHBjaS0+bGlua19jbnRbbGlua10t LTsKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKPiAK PiBUbyBiZSBob25lc3QgSSdkIHByZWZlciBpZiB5b3UgY2hlY2tlZCBkaWdsIGFuZC9vciBnaXJx IGFnYWluc3QgTlVMTAo+IGhlcmUsIHRvIGF2b2lkIHNvbWVvbmUgdXBkYXRpbmcgdGhlIGNvbmRp dGlvbiBhYm92ZSB3aXRob3V0Cj4gdXBkYXRpbmcgdGhpcyBvbmUgaW4gbG9jayBzdGVwLgoKSSd2 ZSBjaGFuZ2VkIHRoZSBjb25kaXRpb24gdG8gImdpcnEgJiYgZGlnbCIuCgo+ID4gQEAgLTU3Mywy NyArNjQ0LDMwIEBAIGludCBwdF9pcnFfZGVzdHJveV9iaW5kKAo+ID4gICAgICAgICAgc3RydWN0 IGh2bV9naXJxX2RwY2lfbWFwcGluZyAqZ2lycTsKPiA+ICAgICAgICAgIHN0cnVjdCBkZXZfaW50 eF9nc2lfbGluayAqZGlnbCwgKnRtcDsKPiA+ICAKPiA+IC0gICAgICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkgKCBnaXJxLCAmaHZtX2lycV9kcGNpLT5naXJxW2d1ZXN0X2dzaV0sIGxpc3QgKQo+ID4g KyAgICAgICAgaWYgKCBodm1faXJxX2RwY2kgKQo+ID4gICAgICAgICAgewo+ID4gLSAgICAgICAg ICAgIGlmICggZ2lycS0+YnVzICAgICAgICAgPT0gYnVzICYmCj4gPiAtICAgICAgICAgICAgICAg ICBnaXJxLT5kZXZpY2UgICAgICA9PSBkZXZpY2UgJiYKPiA+IC0gICAgICAgICAgICAgICAgIGdp cnEtPmludHggICAgICAgID09IGludHggJiYKPiA+IC0gICAgICAgICAgICAgICAgIGdpcnEtPm1h Y2hpbmVfZ3NpID09IG1hY2hpbmVfZ3NpICkKPiA+ICsgICAgICAgICAgICBsaXN0X2Zvcl9lYWNo X2VudHJ5ICggZ2lycSwgJmh2bV9pcnFfZHBjaS0+Z2lycVtndWVzdF9nc2ldLCBsaXN0ICkKPiA+ ICAgICAgICAgICAgICB7Cj4gPiAtICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZnaXJxLT5saXN0 KTsKPiA+IC0gICAgICAgICAgICAgICAgeGZyZWUoZ2lycSk7Cj4gPiAtICAgICAgICAgICAgICAg IGdpcnEgPSBOVUxMOwo+ID4gLSAgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAg ICAgICAgaWYgKCBnaXJxLT5idXMgICAgICAgICA9PSBidXMgJiYKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBnaXJxLT5kZXZpY2UgICAgICA9PSBkZXZpY2UgJiYKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBnaXJxLT5pbnR4ICAgICAgICA9PSBpbnR4ICYmCj4gPiArICAgICAgICAgICAgICAg ICAgICAgZ2lycS0+bWFjaGluZV9nc2kgPT0gbWFjaGluZV9nc2kgKQo+ID4gKyAgICAgICAgICAg ICAgICB7Cj4gPiArICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZ2lycS0+bGlzdCk7Cj4g PiArICAgICAgICAgICAgICAgICAgICB4ZnJlZShnaXJxKTsKPiA+ICsgICAgICAgICAgICAgICAg ICAgIGdpcnEgPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAg ICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICB9Cj4gPiAtICAgICAgICB9Cj4gPiAgCj4g PiAtICAgICAgICBpZiAoIGdpcnEgKQo+ID4gLSAgICAgICAgewo+ID4gLSAgICAgICAgICAgIHNw aW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKPiA+IC0gICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiA+IC0gICAgICAgIH0KPiA+ICsgICAgICAgICAgICBpZiAoIGdpcnEgKQo+ID4gKyAgICAg ICAgICAgIHsKPiA+ICsgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2sp Owo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICB9 Cj4gPiAgCj4gPiAtICAgICAgICBodm1faXJxX2RwY2ktPmxpbmtfY250W2xpbmtdLS07Cj4gPiAr ICAgICAgICAgICAgaHZtX2lycV9kcGNpLT5saW5rX2NudFtsaW5rXS0tOwo+ID4gKyAgICAgICAg fQo+ID4gIAo+ID4gICAgICAgICAgLyogY2xlYXIgdGhlIG1pcnEgaW5mbyAqLwo+ID4gICAgICAg ICAgaWYgKCBwaXJxX2RwY2kgJiYgKHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1fSVJRX0RQQ0lfTUFQ UEVEKSApCj4gCj4gV2hhdCB5b3UgbGVhdmUgdW50b3VjaGVkIGhlcmUgaXMgY29kZSBmcmVlaW5n IHNvbWV0aGluZyB5b3UKPiBuZXZlciBhbGxvY2F0ZSBmb3IgRG9tMC4gV2hpbGUgbGlrZWx5IHRo aXMgaXMgY29ycmVjdCAoYXMgdGhlIGxpc3Qgd2lsbAo+IGFsd2F5cyBiZSBlbXB0eSksIGl0IGlz IGNvbmZ1c2luZyBhdCB0aGUgc2FtZSB0aW1lLiBGdXJ0aGVybW9yZQo+IGlmIHlvdSBhbHNvIHNr aXAgdGhhdCBwYXJ0LCBJIHRoaW5rIHlvdSBjYW4gYXZvaWQgaGF2aW5nIHRvIHJlLWluZGVudAo+ IGFsbCB0aGUgY29kZSBmdXJ0aGVyIHVwLgoKSSBzZWUgd2hhdCB5b3UgbWVhbiwgdGhlIGh2bV9p cnFfZHBjaSBjb25kaXRpb24gY2FuIGJlIG1vdmVkIHRvIHRoZQp1cHBlciBpZiwgc2luY2Ugbm9u ZSBvZiB3aGF0J3MgaW5zaWRlIHRoaXMgY29uZGl0aW9uIGlzIHJlbGV2YW50IGZvcgp0aGUgaGFy ZHdhcmUgZG9tYWluIGNhc2UsIGFuZCB3aWxsIGF2b2lkIHRoaXMgcmUtaW5kZW50YXRpb24uCgo+ ID4gQEAgLTYzOCwxMSArNzEyLDE1IEBAIGludCBwdF9pcnFfZGVzdHJveV9iaW5kKAo+ID4gICAg ICBpZiAoIHdoYXQgJiYgaW9tbXVfdmVyYm9zZSApCj4gPiAgICAgIHsKPiA+ICAgICAgICAgIHVu c2lnbmVkIGludCBkZXZpY2UgPSBwdF9pcnFfYmluZC0+dS5wY2kuZGV2aWNlOwo+ID4gKyAgICAg ICAgY2hhciBidWZbMjRdID0gIiI7Cj4gPiAgCj4gPiAtICAgICAgICBwcmludGsoWEVOTE9HX0df SU5GTwo+ID4gLSAgICAgICAgICAgICAgICJkJWQgJXMgdW5tYXA6IG1faXJxPSV1IGRldj0lMDJ4 OiUwMnguJXUgaW50eD0ldVxuIiwKPiA+IC0gICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHdo YXQsIG1hY2hpbmVfZ3NpLCBwdF9pcnFfYmluZC0+dS5wY2kuYnVzLAo+ID4gLSAgICAgICAgICAg ICAgIFBDSV9TTE9UKGRldmljZSksIFBDSV9GVU5DKGRldmljZSksIHB0X2lycV9iaW5kLT51LnBj aS5pbnR4KTsKPiA+ICsgICAgICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCj4gPiAr ICAgICAgICAgICAgc25wcmludGYoYnVmLCBBUlJBWV9TSVpFKGJ1ZiksICIgZGV2PSUwMnguJTAy eC4ldSBpbnR4PSV1IiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICBwdF9pcnFfYmluZC0+dS5w Y2kuYnVzLCBQQ0lfU0xPVChkZXZpY2UpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFBDSV9G VU5DKGRldmljZSksIHB0X2lycV9iaW5kLT51LnBjaS5pbnR4KTsKPiAKPiBOb3cgdGhhdCB0aGlz IHN1cHBvcnRzIERvbTAsIHlvdSBhbHNvIG5lZWQgdG8gbG9nIHRoZSBzZWdtZW50LgoKSSdtIG5v dCBzdXJlIEkgZm9sbG93IHlvdSBoZXJlLCBmb3IgdGhlIERvbSBjYXNlIGFsbCB0aGUgZmllbGRz IGluCnUucGNpLiogYXJlIHVudXNlZCwgc2luY2UgWGVuIGRvZXMgYW4gaWRlbnRpdHkgbWFwcGlu ZyBvZiB0aGUgR1NJLCBidXQKaXQgZG9lc24ndCBrbm93IHRvIHdoaWNoIGRldmljZSBpdCBiZWxv bmdzLiBUaGF0J3MgZGlmZmVyZW50IGZvciB0aGUKTVNJIGNhc2UsIGJ1dCB0aGVuIHRoaXMgZmll bGRzIGFyZSBub3QgdXNlZCBhbnl3YXkuCgpUaGFua3MsIFJvZ2VyLgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==