From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH v4 07/34] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables Date: Wed, 23 Mar 2016 02:19:51 -0600 Message-ID: <56F25FB702000078000DF844@prv-mh.provo.novell.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> <1458064616-23101-8-git-send-email-konrad.wilk@oracle.com> <56EC0B9702000078000DE5A6@prv-mh.provo.novell.com> <20160322201844.GA31231@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aie1L-0006S0-2X for xen-devel@lists.xenproject.org; Wed, 23 Mar 2016 08:20:03 +0000 In-Reply-To: <20160322201844.GA31231@char.us.oracle.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Keir Fraser , ross.lagerwall@citrix.com, andrew.cooper3@citrix.com, mpohlack@amazon.de, Julien Grall , Stefano Stabellini , sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org Pj4+IE9uIDIyLjAzLjE2IGF0IDIxOjE4LCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4gd3JvdGU6 Cj4gSXQgd291bGQgYmUgZ29vZCB0byBvbmx5IGhhdmUgX19pbml0IHJlbGF0ZWQgZXhjZXB0aW9u cyBvbiB0aGUgX19pbml0dGV4dAo+IChhbmQgYWxzbyBkaXRjaCB0aGUgX19pbml0IGV4Y2VwdGlv biB0YWJsZXMgb25jZSB0aGUgYm9vdCBpcyBjb21wbGV0ZWQpCj4gYnV0IEkgYW0gbm90IGV4YWN0 bHkgc3VyZSBob3cgdG8gYXV0b21hdGljYWxseSBtYWtlIHRoZSBtYWNyb3MgcmVzb2x2ZQo+IHdo YXQgc2VjdGlvbnMgaXQgc2hvdWxkIGdvIGluLiBUaGF0IGlzIGEgZnVydGhlciBUT0RPIHRob3Vn aC4KCkknbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgdGhpcyBjYW4ndCBiZSByZWFzb25hYmx5IGFk ZHJlc3NlZCB3aXRob3V0CnRoZSBjb21waWxlcidzIGhlbHAsIGJ5IGV4dGVuZGluZyB0aGUgc2Vj dGlvbiBhdHRyaWJ1dGUgdG8gYWxzbyBhbGxvdwpmb3IgdGVtcGxhdGVzIHJhdGhlciB0aGFuIG9u bHkgZml4ZWQgbmFtZXMuCgo+PiA+IEBAIC0xMDgsMTMgKzEyNywxNyBAQCBjb25zdCBjaGFyICpz eW1ib2xzX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsCj4+ID4gIHsKPj4gPiAgICAgIHVuc2ln bmVkIGxvbmcgaSwgbG93LCBoaWdoLCBtaWQ7Cj4+ID4gICAgICB1bnNpZ25lZCBsb25nIHN5bWJv bF9lbmQgPSAwOwo+PiA+ICsgICAgc3ltYm9sc19sb29rdXBfdCBzeW1ib2xfbG9va3VwID0gTlVM TDsKPj4gCj4+IFBvaW50bGVzcyBpbml0aWFsaXplci4KPiAKPiBJIGJlbGlldmUgd2UgbmVlZCBp dC4gVGhhdCBpcyB0aGUgY29udGVudHMgb24gdGhlIHN0YWNrIGNhbiBiZSBnYXJiYWdlCj4gYW5k IHRoZSBfX2lzX2FjdGl2ZV9rZXJuZWxfdGV4dCB3b24ndCB1cGRhdGUgc3ltYm9sX2xvb2t1cCB1 bmxlc3MKPiBpdCBmaW5kcyBhIG1hdGNoLiBBaCwgYW5kIGFsc28gdGhlIGNvbXBpbGVyIGlzIHVu aGFwcHk6Cj4gCj4gc3ltYm9scy5jOiBJbiBmdW5jdGlvbiDigJhzeW1ib2xzX2xvb2t1cOKAmToK PiBzeW1ib2xzLmM6MTM2Ojg6IGVycm9yOiDigJhzeW1ib2xfbG9va3Vw4oCZIG1heSBiZSB1c2Vk IHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyAKPiBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRp YWxpemVkXQo+ICAgICAgaWYgKHN5bWJvbF9sb29rdXApCj4gICAgICAgICBeCj4gY2MxOiBhbGwg d2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKClRoYXQncyB1bmZvcnR1bmF0ZSwgc2lu Y2UgLi4uCgo+PiA+ICAgICAgbmFtZWJ1ZltLU1lNX05BTUVfTEVOXSA9IDA7Cj4+ID4gICAgICBu YW1lYnVmWzBdID0gMDsKPj4gPiAgCj4+ID4gLSAgICBpZiAoIWlzX2FjdGl2ZV9rZXJuZWxfdGV4 dChhZGRyKSkKPj4gPiArICAgIGlmICghX19pc19hY3RpdmVfa2VybmVsX3RleHQoYWRkciwgJnN5 bWJvbF9sb29rdXApKQo+PiA+ICAgICAgICAgIHJldHVybiBOVUxMOwoKLi4uIHRoaXMgcmV0dXJu IGVuc3VyZXMgdGhhdCAuLi4KCj4+ID4gKyAgICBpZiAoc3ltYm9sX2xvb2t1cCkKPj4gPiArICAg ICAgICByZXR1cm4gKHN5bWJvbF9sb29rdXApKGFkZHIsIHN5bWJvbHNpemUsIG9mZnNldCwgbmFt ZWJ1Zik7CgouLi4gdGhpcyB3b24ndCBiZSByZWFjaGVkIHdpdGggc3ltYm9sX2xvb2t1cCB1bmlu aXRpYWxpemVkLgoKPj4gTm90ZSB0aGF0IHRoZXJlIGFyZSBmZXcgY29kaW5nIHN0eWxlIGlzc3Vl cyBoZXJlIChtaXNzaW5nIGJsYW5rcywKPj4gc3VwZXJmbHVvdXMgcGFyZW50aGVzZXMpLgo+IAo+ IFRoYXQgZmlsZSB1c2VzIGEgZGlmZmVyZW50IFN0eWxlR3VpZGUuIFRoZSBMaW51eCBvbmUuIFdo aWNoIHJlbWluZHMgbWUKPiB0aGF0IF9faXNfYWN0aXZlX2tlcm5lbF90ZXh0IG5lZWRzIHRvIGFk aGVyZSB0byBkaWZmZXJlbnQgU3R5bGVHdWlkZS4KCkxpbnV4IHN0eWxlIHdvdWxkIG5vdCBiZSB1 c2luZyBzcGFjZXMgZm9yIGluZGVudGF0aW9uLiBUaGUgZmlsZSBpcwpyZWFsbHkgYSBiYWQgbWl4 dHVyZSBvZiBzdHlsZXMsIGJ1dCB5ZXMsIHlvdSdyZSByaWdodCB0aGF0IHlvdSBkb24ndAp2aW9s YXRlIHRoYXQgcHJlLWV4aXN0aW5nIG1peHR1cmUuCgo+PiA+IC0tLSAvZGV2L251bGwKPj4gPiAr KysgYi94ZW4vaW5jbHVkZS94ZW4vYnVnX2V4X3N5bWJvbHMuaAo+PiA+IEBAIC0wLDAgKzEsNzQg QEAKPj4gPiArLyoKPj4gPiArICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ID4gKyAqCj4+ID4gKyAqLwo+PiA+ ICsKPj4gPiArI2lmbmRlZiBfX0JVR19FWF9TWU1CT0xfTElTVF9fCj4+ID4gKyNkZWZpbmUgX19C VUdfRVhfU1lNQk9MX0xJU1RfXwo+PiA+ICsKPj4gPiArI2luY2x1ZGUgPHhlbi9jb25maWcuaD4K Pj4gPiArI2luY2x1ZGUgPHhlbi9saXN0Lmg+Cj4+ID4gKyNpbmNsdWRlIDx4ZW4vc3ltYm9scy5o Pgo+PiA+ICsKPj4gPiArI2lmZGVmIENPTkZJR19YODYKPj4gPiArI2luY2x1ZGUgPGFzbS91YWNj ZXNzLmg+Cj4+ID4gKyNlbmRpZgo+PiAKPj4gV2h5Pwo+IAo+IE90aGVyd2lzZSB0aGUgY29tcGls YXRpb24gd2lsbCBmYWlsIG9uIEFSTSBhcyB0aGV5IGRvIG5vdCBoYXZlIGV4Y2VwdGlvbnMKPiAo YW5kIG5vIGFzbS91YWNjZXNzLmggZmlsZSkKCldlbGwsIHRoZSBxdWVzdGlvbiB3YXMgZm9yIHRo ZSAjaW5jbHVkZSwgbm90IHRoZSAjaWZkZWYuCgo+IC0tLSBhL3hlbi9jb21tb24vc3ltYm9scy5j Cj4gKysrIGIveGVuL2NvbW1vbi9zeW1ib2xzLmMKPiBAQCAtMTcsNiArMTcsNyBAQAo+ICAjaW5j bHVkZSA8eGVuL2xpYi5oPgo+ICAjaW5jbHVkZSA8eGVuL3N0cmluZy5oPgo+ICAjaW5jbHVkZSA8 eGVuL3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24uaD4KPiAgI2lu Y2x1ZGUgPHB1YmxpYy9wbGF0Zm9ybS5oPgo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5o Pgo+ICAKPiBAQCAtOTcsOCArOTgsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zeW1ib2xf b2Zmc2V0KHVuc2lnbmVkIGxvbmcgcG9zKQo+ICAKPiAgYm9vbF90IGlzX2FjdGl2ZV9rZXJuZWxf dGV4dCh1bnNpZ25lZCBsb25nIGFkZHIpCj4gIHsKPiAtICAgIHJldHVybiAoaXNfa2VybmVsX3Rl eHQoYWRkcikgfHwKPiAtICAgICAgICAgICAgKHN5c3RlbV9zdGF0ZSA8IFNZU19TVEFURV9hY3Rp dmUgJiYgaXNfa2VybmVsX2luaXR0ZXh0KGFkZHIpKSk7Cj4gKyAgICByZXR1cm4gISFzZWFyY2hf dmlydHVhbF9yZWdpb25zKGFkZHIpOwoKc2VhcmNoX3ZpcnR1YWxfcmVnaW9ucygpIGRvZXNuJ3Qg c291bmQgbGlrZSBpdCB3b3VsZCBiZSBsb29raW5nIGZvcgp0ZXh0IGFkZHJlc3NlcyBvbmx5LgoK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCj4gQEAg LTAsMCArMSwxNTEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPHhlbi9jb25maWcuaD4KCk5vIG5ldyBleHBsaWNpdCBpbmNsdXNpb24gb2Yg eGVuL2NvbmZpZy5oIHBsZWFzZS4gV2UncmUgYWN0dWFsbHkgaW4KdGhlIHByb2Nlc3Mgb2YgZ2V0 dGluZyByaWQgb2Ygc3VjaCBlbHNld2hlcmUuCgo+ICsjaW5jbHVkZSA8eGVuL2luaXQuaD4KPiAr I2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPHhlbi9yY3VwZGF0ZS5oPgo+ICsj aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdmlydHVhbF9yZWdpb24u aD4KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gY29tcGlsZWQgPSB7CgpJIHRo aW5rICJjb21waWxlZCIgaXMgYSBiYWQgbmFtZSwgYXMgcGF0Y2ggbW9kdWxlcyBhcmUgZXF1YWxs eQpjb21waWxlZCAtICJjb3JlIiBvciAiYnVpbHRpbiIgcGVyaGFwcz8KCj4gK3N0cnVjdCB2aXJ0 dWFsX3JlZ2lvbiogc2VhcmNoX3ZpcnR1YWxfcmVnaW9ucyh1bnNpZ25lZCBsb25nIGFkZHIpCgpN aXNwbGFjZWQgKi4gQW5kIHByb2JhYmx5IHNob3VsZCByZXR1cm4gYSBwb2ludGVyIHRvIGNvbnN0 LgoKPiArewo+ICsgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uICpyZWdpb247Cj4gKwo+ICsgICAg bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoIHJlZ2lvbiwgJnZpcnR1YWxfcmVnaW9uX2xpc3QsIGxp c3QgKQoKV2hlcmUncyB0aGUgcmN1X3JlYWRfbG9jaygpIHVzZSBvZiB3aGljaCB0aGUgY29tbWVu dCBwcmVjZWRpbmcKdGhlICNkZWZpbmUgb2YgdGhpcyBtYW5kYXRlcz8KCj4gK3N0YXRpYyB2b2lk IF9fdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnIpCgpB cyBJIHRoaW5rIEkgaGF2ZSBzYWlkIGJlZm9yZSAtIG5vIGRvdWJsZSB1bmRlcnNjb3JlIHByZWZp eGVzIG9uCm5ldyBpZGVudGlmaWVycyBwbGVhc2UuCgo+ICt7Cj4gKyAgICB1bnNpZ25lZCBsb25n IGZsYWdzOwo+ICsKPiArICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ2aXJ0dWFsX3JlZ2lvbl9sb2Nr LCBmbGFncyk7Cj4gKyAgICBsaXN0X2RlbF9yY3UoJnItPmxpc3QpOwo+ICsgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmdmlydHVhbF9yZWdpb25fbG9jaywgZmxhZ3MpOwo+ICsgICAgLyoKPiAr ICAgICAqIFdlIGRvIG5vdCBuZWVkIHRvIGludm9rZSBjYWxsX3JjdS4KPiArICAgICAqCj4gKyAg ICAgKiBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IG9uIHRoZSBkZWxldGlvbiB3ZSBoYXZl IG1hZGUgc3VyZQo+ICsgICAgICogdG8gdXNlIHNwaW5sb2NrcyAodG8gZ3VhcmQgYWdhaW5zdCBz b21lYm9keSBlbHNlIGNhbGxpbmcKPiArICAgICAqIHVucmVnaXN0ZXJfdmlydHVhbF9yZWdpb24p IGFuZCBsaXN0X2RlbGV0aW9uIHNwaWNlZCB3aXRoIGFuIG1lbW9yeQo+ICsgICAgICogYmFycmll ciAtIHdoaWNoIHdpbGwgZmx1c2ggb3V0IHRoZSBjYWNoZSBsaW5lcyBpbiBvdGhlciBDUFVzLgoK SSBkb24ndCB0aGluayBiYXJyaWVycyBkbyBhbnkga2luZCBvZiBjYWNoZSBmbHVzaGluZyBvbiBy ZW1vdGUgQ1BVcwoobm90IGV2ZW4gb24gdGhlIGxvY2FsIG9uZSkuCgo+ICt2b2lkIF9faW5pdCBz ZXR1cF92aXJ0dWFsX3JlZ2lvbnModm9pZCkKPiArewo+ICsgICAgc3NpemVfdCBzejsKPiArICAg IHVuc2lnbmVkIGludCBpOwo+ICsgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKmNv bnN0IHN0b3BfZnJhbWVzW10gPSB7CgpUaGlzIChub3cgc2l0dGluZyBpbiBhbiBfX2luaXQgZnVu Y3Rpb24pIHNob3VsZCB0aGVuIGJlY29tZSBfX2luaXRjb25zdHJlbC4KCj4gKyAgICAgICAgX19z dGFydF9idWdfZnJhbWVzLAoKVGhpcyBlbGVtZW50IG1ha2VzIHRoZSBhcnJheSBuYW1lIGJvZ3Vz LgoKPiArICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18wLAo+ICsgICAgICAgIF9fc3RvcF9idWdf ZnJhbWVzXzEsCj4gKyAgICAgICAgX19zdG9wX2J1Z19mcmFtZXNfMiwKPiArI2lmZGVmIENPTkZJ R19YODYKPiArICAgICAgICBfX3N0b3BfYnVnX2ZyYW1lc18zLAo+ICsjZW5kaWYKPiArICAgICAg ICBOVUxMCj4gKyAgICB9Owo+ICsKPiArICAgIC8qIE4uQi4gaWR4ICE9IGkgKi8KClN0YWxlIGNv bW1lbnQ/Cgo+ICsgICAgZm9yICggaSA9IDE7IHN0b3BfZnJhbWVzW2ldOyBpKysgKQo+ICsgICAg ewo+ICsgICAgICAgIGNvbnN0IHN0cnVjdCBidWdfZnJhbWUgKnM7Cj4gKwo+ICsgICAgICAgIHMg PSBzdG9wX2ZyYW1lc1tpLTFdOwo+ICsgICAgICAgIHN6ID0gc3RvcF9mcmFtZXNbaV0gLSBzOwo+ ICsKPiArICAgICAgICBjb21waWxlZC5mcmFtZVtpLTFdLm5fYnVncyA9IHN6Owo+ICsgICAgICAg IGNvbXBpbGVkLmZyYW1lW2ktMV0uYnVncyA9IHM7Cj4gKwo+ICsgICAgICAgIGNvbXBpbGVkX2lu aXQuZnJhbWVbaS0xXS5uX2J1Z3MgPSBzejsKPiArICAgICAgICBjb21waWxlZF9pbml0LmZyYW1l W2ktMV0uYnVncyA9IHM7Cj4gKyAgICB9CgpNYW55IHRpbWVzICJbaSAtIDFdIiBwbGVhc2UuCgo+ ICsgICAgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oJmNvbXBpbGVkX2luaXQpOwo+ICsgICAgcmVn aXN0ZXJfdmlydHVhbF9yZWdpb24oJmNvbXBpbGVkKTsKCklzIHRoZXJlIGEgcGFydGljdWxhciBy ZWFzb24gbm90IHRvIGRvIHRoZSBtYWluIHJlZ2lvbiBmaXJzdD8gUHJvYmFibHkKaXQncyBiZW5p Z24sIGJ1dCBpZiB0aGVyZSBpcyBhIHJlYXNvbiwgSSB0aGluayBhIGNvbW1lbnQgd291bGQgYmUK d2FycmFudGVkLgoKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vc3ltYm9scy5oCj4gKysrIGIveGVu L2luY2x1ZGUveGVuL3N5bWJvbHMuaAo+IEBAIC01LDYgKzUsMTUgQEAKPiAgCj4gICNkZWZpbmUg S1NZTV9OQU1FX0xFTiAxMjcKPiAgCj4gKy8qCj4gKyAqIFR5cGVkZWYgZm9yIHRoZSBjYWxsYmFj ayBmdW5jdGlvbnMgdGhhdCBzeW1ib2xzX2xvb2t1cAo+ICsgKiBjYW4gY2FsbCBpZiB2aXJ0dWFs X3JlZ2lvbl9saXN0IGhhcyBhbiBjYWxsYmFjayBmb3IgaXQuCj4gKyAqLwo+ICt0eXBlZGVmIGNv bnN0IGNoYXIgKihzeW1ib2xzX2xvb2t1cF90KSh1bnNpZ25lZCBsb25nIGFkZHIsCgpTdHJheSBw YXJlbnRoZXNlcy4KCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi92aXJ0 dWFsX3JlZ2lvbi5oCj4gQEAgLTAsMCArMSw1NiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K PiArICoKPiArICovCj4gKwo+ICsjaWZuZGVmIF9fQlVHX0VYX1NZTUJPTF9MSVNUX18KPiArI2Rl ZmluZSBfX0JVR19FWF9TWU1CT0xfTElTVF9fCgpObyBsb25nZXIgaW4gbGluZSB3aXRoIHRoZSBo ZWFkZXIgbmFtZSwgYW5kIG1pc3NpbmcgYSBYRU5fIHBvcnRpb24uCgo+ICtzdHJ1Y3QgdmlydHVh bF9yZWdpb24KPiArewo+ICsgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICsgICAgdW5zaWdu ZWQgbG9uZyBzdGFydDsgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBzdGFydC4gKi8KPiArICAg IHVuc2lnbmVkIGxvbmcgZW5kOyAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgc3RhcnQuICov Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIElmIHRoaXMgaXMgTlVMTCB0aGUgZGVmYXVsdCBsb29r dXAgbWVjaGFuaXNtIGlzIHVzZWQuCj4gKyAgICAgKi8KCkhlcmUgb3IgZWxzZXdoZXJlIEknbSBz dXJlIEkndmUgbWFkZSB0aGUgY29tbWVudCBiZWZvcmU6IFRoaXMgaXMKYSBzaW5nbGUgbGluZSBj b21tZW50LgoKPiArICAgIHN5bWJvbHNfbG9va3VwX3QgKnN5bWJvbHNfbG9va3VwOwo+ICsKPiAr ICAgIHN0cnVjdCB7Cj4gKyAgICAgICAgY29uc3Qgc3RydWN0IGJ1Z19mcmFtZSAqYnVnczsgLyog VGhlIHBvaW50ZXIgdG8gYXJyYXkgb2YgYnVnIAo+IGZyYW1lcy4gKi8KPiArICAgICAgICBzc2l6 ZV90IG5fYnVnczsgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRoZW0uICovCj4gKyAgICB9IGZy YW1lW0JVR0ZSQU1FX05SXTsKPiArCj4gKyNpZmRlZiBDT05GSUdfWDg2Cj4gKyAgICBzdHJ1Y3Qg ZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleDsKPiArICAgIHN0cnVjdCBleGNlcHRpb25fdGFibGVf ZW50cnkgKmV4X2VuZDsKPiArI2VuZGlmCgpXb3VsZCB0aGVyZSBiZSBhbnkgaGFybSBvbWl0dGlu ZyB0aGUgI2lmZGVmIGFuZCBsZWF2aW5nIHRoZQpwb2ludGVycyBiZSBOVUxMIG9uIEFSTT8KCj4g K2V4dGVybiBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gKnNlYXJjaF92aXJ0dWFsX3JlZ2lvbnModW5z aWduZWQgbG9uZyBhZGRyKTsKPiArZXh0ZXJuIHZvaWQgc2V0dXBfdmlydHVhbF9yZWdpb25zKHZv aWQpOwo+ICtleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX2luaXRfdmlydHVhbF9yZWdpb24odm9pZCk7 Cj4gK2V4dGVybiBpbnQgcmVnaXN0ZXJfdmlydHVhbF9yZWdpb24oc3RydWN0IHZpcnR1YWxfcmVn aW9uICpyKTsKPiArZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl92aXJ0dWFsX3JlZ2lvbihzdHJ1Y3Qg dmlydHVhbF9yZWdpb24gKnIpOwoKV2hpbGUgYSBtYXR0ZXIgb2YgdGFzdGUsIEkgcGVyc29uYWxs eSB3b3VsZCBwcmVmZXIgaWYgImV4dGVybiIgd2FzCm9taXR0ZWQgb24gZnVuY3Rpb24gZGVjbGFy YXRpb25zLgoKSmFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=