From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH v3 07/15] argo: implement the register op Date: Mon, 14 Jan 2019 07:19:07 -0700 Message-ID: <5C3C9A5B020000780020D4A6@prv1-mh.provo.novell.com> References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> <1546846968-7372-8-git-send-email-christopher.w.clark@gmail.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 1gj359-0003JL-3b for xen-devel@lists.xenproject.org; Mon, 14 Jan 2019 14:19:15 +0000 In-Reply-To: <1546846968-7372-8-git-send-email-christopher.w.clark@gmail.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Christopher Clark Cc: Tim Deegan , Stefano Stabellini , Wei Liu , ross.philipson@gmail.com, Jason Andryuk , Daniel Smith , Andrew Cooper , Konrad Rzeszutek Wilk , Ian Jackson , Rich Persaud , James McKenzie , George Dunlap , Julien Grall , Paul Durrant , xen-devel , eric chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Pj4+IE9uIDA3LjAxLjE5IGF0IDA4OjQyLCA8Y2hyaXN0b3BoZXIudy5jbGFya0BnbWFpbC5jb20+ IHdyb3RlOgo+IC0tLSBhL3hlbi9jb21tb24vYXJnby5jCj4gKysrIGIveGVuL2NvbW1vbi9hcmdv LmMKPiBAQCAtMjMsMTYgKzIzLDQxIEBACj4gICNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KPiAgI2lu Y2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5o Pgo+ICsjaW5jbHVkZSA8eGVuL2xpYi5oPgo+ICsjaW5jbHVkZSA8eGVuL25vc3BlYy5oPgo+ICAj aW5jbHVkZSA8eGVuL3RpbWUuaD4KPiAgI2luY2x1ZGUgPHB1YmxpYy9hcmdvLmg+Cj4gIAo+ICsj ZGVmaW5lIE1BWF9SSU5HU19QRVJfRE9NQUlOICAgICAgICAgICAgMTI4VQo+ICsKPiArLyogQWxs IG1lc3NhZ2VzIG9uIHRoZSByaW5nIGFyZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiB0aGUgc2xv dCBzaXplLiAqLwo+ICsjZGVmaW5lIFJPVU5EVVBfTUVTU0FHRShhKSAoUk9VTkRVUCgoYSksIFhF Tl9BUkdPX01TR19TTE9UX1NJWkUpKQoKUG9pbnRsZXNzIG91dGVybW9zdCBwYWlyIG9mIHBhcmVu dGhlc2VzLgoKPiBAQCAtMTk4LDYgKzIyMywzMSBAQCBzdGF0aWMgREVGSU5FX1JXTE9DSyhhcmdv X2xvY2spOyAvKiBMMSAqLwo+ICAjZGVmaW5lIGFyZ29fZHByaW50ayhmb3JtYXQsIC4uLiApICgo dm9pZCkwKQo+ICAjZW5kaWYKPiAgCj4gKy8qCj4gKyAqIFRoaXMgaGFzaCBmdW5jdGlvbiBpcyB1 c2VkIHRvIGRpc3RyaWJ1dGUgcmluZ3Mgd2l0aGluIHRoZSBwZXItZG9tYWluCj4gKyAqIGhhc2gg dGFibGVzIChkLT5hcmdvLT5yaW5nX2hhc2ggYW5kIGQtPmFyZ29fc2VuZF9oYXNoKS4gVGhlIGhh c2ggdGFibGUKPiArICogd2lsbCBwcm92aWRlIGEgc3RydWN0IGlmIGEgbWF0Y2ggaXMgZm91bmQg d2l0aCBhICdhcmdvX3JpbmdfaWQnIGtleToKPiArICogaWUuIHRoZSBrZXkgaXMgYSAoZG9tYWlu IGlkLCBwb3J0LCBwYXJ0bmVyIGRvbWFpbiBpZCkgdHVwbGUuCj4gKyAqIFNpbmNlIHBvcnQgbnVt YmVyIHZhcmllcyB0aGUgbW9zdCBpbiBleHBlY3RlZCB1c2UsIGFuZCB0aGUgTGludXggZHJpdmVy Cj4gKyAqIGFsbG9jYXRlcyBhdCBib3RoIHRoZSBoaWdoIGFuZCBsb3cgZW5kcywgaW5jb3Jwb3Jh dGUgaGlnaCBhbmQgbG93IGJpdHMgdG8KPiArICogaGVscCB3aXRoIGRpc3RyaWJ1dGlvbi4KPiAr ICogQXBwbHkgYXJyYXlfaW5kZXhfbm9zcGVjIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgc2luY2Ug dGhpcyBvcGVyYXRlcwo+ICsgKiBvbiB1c2VyLXN1cHBsaWVkIGlucHV0IGFuZCB0aGUgYXJyYXkg c2l6ZSB0aGF0IGl0IGluZGV4ZXMgaW50byBpcyBrbm93bi4KPiArICovCj4gK3N0YXRpYyB1bnNp Z25lZCBpbnQKPiAraGFzaF9pbmRleChjb25zdCBzdHJ1Y3QgYXJnb19yaW5nX2lkICppZCkKPiAr ewo+ICsgICAgdW5zaWduZWQgaW50IGhhc2g7Cj4gKwo+ICsgICAgaGFzaCA9ICh1aW50MTZfdCko aWQtPnBvcnQgPj4gMTYpOwo+ICsgICAgaGFzaCBePSAodWludDE2X3QpaWQtPnBvcnQ7CgpJIG1h eSBoYXZlIGFza2VkIHRoaXMgYmVmb3JlLCBidXQgYXJlIHRoZSBjYXN0cyByZWFsbHkgbmVlZGVk CndpdGggLi4uCgo+ICsgICAgaGFzaCBePSBpZC0+ZG9tYWluX2lkOwo+ICsgICAgaGFzaCBePSBp ZC0+cGFydG5lcl9pZDsKPiArICAgIGhhc2ggJj0gKEFSR09fSFRBQkxFX1NJWkUgLSAxKTsKCi4u LiB0aGUgbWFza2luZyBkb25lIGhlcmU/Cgo+ICsgICAgcmV0dXJuIGFycmF5X2luZGV4X25vc3Bl YyhoYXNoLCBBUkdPX0hUQUJMRV9TSVpFKTsKCldpdGggdGhlIG1hc2tpbmcgYWJvdmUgLSBpcyB0 aGlzIHJlYWxseSBuZWVkZWQ/CgpBbmQgdGhlbiB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUg cXVhbGl0eSBvZiB0aGUgaGFzaCBpcwpzdWZmaWNpZW50OiBUaGVyZSB3b24ndCBiZSBtb3JlIHNl dCBiaXRzIGluIHRoZSByZXN1bHQgdGhhbgphcmUgaW4gYW55IG9mIHRoZSB0aHJlZSBpbnB1dCB2 YWx1ZXMsIHNvIGlmIHRoZXkncmUgYWxsIHNtYWxsLApoaWdoZXIgaGFzaCB0YWJsZSBlbnRyaWVz IHdvbid0IGJlIHVzZWQgYXQgYWxsLiBJIHdvdWxkCmFzc3VtZSB0aGUgZ29hbCB0byBiZSB0aGF0 IGJ5IHRoZSB0aW1lIDMyIGVudGl0aWVzIGFwcGVhciwKY2hhbmNlcyBiZSBnb29kIHRoYXQgYXQg bGVhc3QgYWJvdXQgMzAgb2YgdGhlIGhhc2ggdGFibGUKZW50cmllcyBhcmUgaW4gdXNlLgoKPiBA QCAtMjE5LDYgKzI2OSw3OCBAQCByaW5nX3VubWFwKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmlu Z19pbmZvKQo+ICAgICAgfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50Cj4gK3JpbmdfbWFwX3BhZ2Uo c3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sIHVuc2lnbmVkIGludCBpLCB2b2lkICoq b3V0X3B0cikKPiArewo+ICsgICAgaWYgKCBpID49IHJpbmdfaW5mby0+bm1mbnMgKQo+ICsgICAg ewo+ICsgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKPiArICAgICAgICAgICAgICAgImFyZ286 IHJpbmcgKHZtJXU6JXggdm0lZCkgJXAgYXR0ZW1wdGVkIHRvIG1hcCBwYWdlICAldSBvZiAldVxu IiwKCnJpbmdfaW5mby0+aWQue2RvbWFpbixwYXJ0bmVyfV9pZCBsb29rIHRvIGJlIG9mIHRoZSBz YW1lIHR5cGUgLQp3aHkgb25jZSAldSBhbmQgb25jZSAlZD8gU2FtZSBlbHNld2hlcmUuCgo+ICsg ICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5kb21haW5faWQsIHJpbmdfaW5mby0+aWQucG9y dCwKPiArICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCwgcmluZ19pbmZv LCBpLCByaW5nX2luZm8tPm5tZm5zKTsKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAg IH0KCiAgICBpID0gYXJyYXlfaW5kZXhfbm9zcGVjKGksIHJpbmdfaW5mby0+bm1mbnMpOwoKY29u c2lkZXJpbmcgdGhlIGFycmF5IGluZGV4ZXMgaGVyZT8gT2YgY291cnNlIGF0IHRoaXMgcG9pbnQg b25seQp6ZXJvIGNhbiBiZSBwYXNzZWQgaW4sIGJ1dCBJIGFzc3VtZSB0aGlzIGNoYW5nZXMgaW4g bGF0ZXIgcGF0Y2hlcwphbmQgdGhlIGluZGV4IGlzIGF0IGxlYXN0IGluZGlyZWN0bHkgZ3Vlc3Qg Y29udHJvbGxlZC4KCj4gQEAgLTM3MSw2ICs0OTMsNDE4IEBAIHBhcnRuZXJfcmluZ3NfcmVtb3Zl KHN0cnVjdCBkb21haW4gKnNyY19kKQo+ICAgICAgfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50Cj4g K2ZpbmRfcmluZ19tZm4oc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuKQoK U28geW91IGhhdmUgZmluZF9yaW5nX21mbigpLCBmaW5kX3JpbmdfbWZucygpLCBhbmQgcmluZ19m aW5kX2luZm8oKS4KQW55IGNoYW5jZSB5b3UgY291bGQgdXNlIGEgY29uc2lzdGVudCBvcmRlcmlu ZyBvZiAicmluZyIgYW5kICJmaW5kIj8KT3IgaXMgdGhlcmUgYSByZWFzb24gYmVoaW5kIHRoZSBh cHBhcmVudCBtaXNtYXRjaD8KCj4gK3sKPiArICAgIHAybV90eXBlX3QgcDJtdDsKPiArICAgIGlu dCByZXQgPSAwOwo+ICsKPiArI2lmZGVmIENPTkZJR19YODYKPiArICAgICptZm4gPSBnZXRfZ2Zu X3Vuc2hhcmUoZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpOwo+ICsjZWxzZQo+ICsgICAgKm1mbiA9IHAy bV9sb29rdXAoZCwgZ2ZuLCAmcDJtdCk7Cj4gKyNlbmRpZgo+ICsKPiArICAgIGlmICggIW1mbl92 YWxpZCgqbWZuKSApCj4gKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiArI2lmZGVmIENPTkZJR19Y ODYKPiArICAgIGVsc2UgaWYgKCBwMm1faXNfcGFnaW5nKHAybXQpIHx8IChwMm10ID09IHAybV9y YW1fbG9nZGlydHkpICkKPiArICAgICAgICByZXQgPSAtRUFHQUlOOwo+ICsjZW5kaWYKPiArICAg IGVsc2UgaWYgKCAocDJtdCAhPSBwMm1fcmFtX3J3KSB8fAo+ICsgICAgICAgICAgICAgICFnZXRf cGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZSgqbWZuKSwgZCwgUEdUX3dyaXRhYmxlX3BhZ2UpICkK PiArICAgICAgICByZXQgPSAtRUlOVkFMOwo+ICsKPiArI2lmZGVmIENPTkZJR19YODYKPiArICAg IHB1dF9nZm4oZCwgZ2ZuX3goZ2ZuKSk7Cj4gKyNlbmRpZgo+ICsKPiArICAgIHJldHVybiByZXQ7 Cj4gK30KClBsZWFzZSBjaGVjayB3aGV0aGVyIHlvdSBjb3VsZCBsZXZlcmFnZSBjaGVja19nZXRf cGFnZV9mcm9tX2dmbigpCmhlcmUuIElmIHlvdSBjYW4ndCwgcGxlYXNlIGF0IGxlYXN0IHRha2Ug aW5zcGlyYXRpb24gYXMgdG8gZS5nLiB0aGUKI2lmZGVmLXMgZnJvbSB0aGF0IGZ1bmN0aW9uLgoK PiArc3RhdGljIGludAo+ICtmaW5kX3JpbmdfbWZucyhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qg YXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywKPiArICAgICAgICAgICAgICAgdWludDMyX3QgbnBh Z2UsCj4gKyAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fcGFn ZV9kZXNjcl90KSBwZ19kZXNjcl9obmQsCj4gKyAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbikK Ck5vdGljaW5nIGl0IGhlcmUsIGJ1dCBwZXJoYXBzIHN0aWxsIGFuIGlzc3VlIGVsc2V3aGVyZSBh cyB3ZWxsOiBEaWRuJ3QKd2UgYWdyZWUgb24gcmVtb3ZpbmcgdW5uZWNlc3NhcnkgdXNlIG9mIGZp eGVkIHdpZHRoIHR5cGVzPyBPcgp3YXMgdGhhdCBpbiB0aGUgY29udGV4dCBvbiBhbiBlYXJsaWVy IHBhdGNoIG9mIHYzPwoKPiArewo+ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gKyAgICBpbnQgcmV0 ID0gMDsKPiArICAgIG1mbl90ICptZm5zOwo+ICsgICAgdWludDhfdCAqKm1mbl9tYXBwaW5nOwo+ ICsKPiArICAgIC8qCj4gKyAgICAgKiBmaXJzdCBib3VuZHMgY2hlY2sgb24gbnBhZ2UgaGVyZSBh bHNvIHNlcnZlcyBhcyBhbiBvdmVyZmxvdyBjaGVjawo+ICsgICAgICogYmVmb3JlIGxlZnQgc2hp ZnRpbmcgaXQKPiArICAgICAqLwo+ICsgICAgaWYgKCAodW5saWtlbHkobnBhZ2UgPiAoWEVOX0FS R09fTUFYX1JJTkdfU0laRSA+PiBQQUdFX1NISUZUKSkpIHx8CgpJc24ndCB0aGlzIHJlZHVuZGFu dCB3aXRoIHRoZSBjaGVjayBpbiBkb19hcmdvX3AoKT8KCj4gKyAgICAgICAgICgobnBhZ2UgPDwg UEFHRV9TSElGVCkgPCBsZW4pICkKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAg ICBpZiAoIHJpbmdfaW5mby0+bWZucyApCj4gKyAgICB7Cj4gKyAgICAgICAgLyogUmluZyBhbHJl YWR5IGV4aXN0ZWQ6IGRyb3AgdGhlIHByZXZpb3VzIG1hcHBpbmcuICovCj4gKyAgICAgICAgZ3By aW50ayhYRU5MT0dfSU5GTywKPiArICAgICAgICAgImFyZ286IHZtJXUgcmUtcmVnaXN0ZXIgZXhp c3RpbmcgcmluZyAodm0ldToleCB2bSVkKSBjbGVhcnMgbWFwcGluZ1xuIiwKCkluZGVudGF0aW9u IChhbHNvIGVsc2V3aGVyZSkuCgo+ICsgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByaW5n X2luZm8tPmlkLmRvbWFpbl9pZCwKPiArICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucG9y dCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkKTsKPiArCj4gKyAgICAgICAgcmluZ19yZW1vdmVf bWZucyhkLCByaW5nX2luZm8pOwo+ICsgICAgICAgIEFTU0VSVCghcmluZ19pbmZvLT5tZm5zKTsK PiArICAgIH0KPiArCj4gKyAgICBtZm5zID0geG1hbGxvY19hcnJheShtZm5fdCwgbnBhZ2UpOwo+ ICsgICAgaWYgKCAhbWZucyApCj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAg Zm9yICggaSA9IDA7IGkgPCBucGFnZTsgaSsrICkKPiArICAgICAgICBtZm5zW2ldID0gSU5WQUxJ RF9NRk47Cj4gKwo+ICsgICAgbWZuX21hcHBpbmcgPSB4emFsbG9jX2FycmF5KHVpbnQ4X3QgKiwg bnBhZ2UpOwo+ICsgICAgaWYgKCAhbWZuX21hcHBpbmcgKQo+ICsgICAgewo+ICsgICAgICAgIHhm cmVlKG1mbnMpOwo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgfQo+ICsKPiArICAg IHJpbmdfaW5mby0+bnBhZ2UgPSBucGFnZTsKPiArICAgIHJpbmdfaW5mby0+bWZucyA9IG1mbnM7 Cj4gKyAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nID0gbWZuX21hcHBpbmc7CgpBcyB0aGUgaW52 ZXJzZSB0byB0aGUgY2xlYW51cCBzZXF1ZW5jZSBpbiBhbiBlYXJsaWVyIHBhdGNoOiBQbGVhc2UK c2V0IC0+bnBhZ2UgbGFzdCBoZXJlIGV2ZW4gaWYgaXQgZG9lc24ndCBzdHJpY3RseSBtYXR0ZXIu Cgo+ICsgICAgQVNTRVJUKHJpbmdfaW5mby0+bnBhZ2UgPT0gbnBhZ2UpOwoKV2hhdCBpcyB0aGlz IHRyeWluZyB0byBtYWtlIHN1cmUsIHNlZWluZyB0aGUgYXNzaWdubWVudCBqdXN0IGEKZmV3IGxp bmVzIHVwPwoKPiArICAgIGlmICggcmluZ19pbmZvLT5ubWZucyA9PSByaW5nX2luZm8tPm5wYWdl ICkKPiArICAgICAgICByZXR1cm4gMDsKCkNhbiB0aGlzIGhhcHBlbiB3aXRoIHRoZSByaW5nX3Jl bW92ZV9tZm5zKCkgY2FsbCBhYm92ZT8KCj4gKyAgICBmb3IgKCBpID0gcmluZ19pbmZvLT5ubWZu czsgaSA8IHJpbmdfaW5mby0+bnBhZ2U7IGkrKyApCgpBbmQgaGVuY2UgY2FuIGkgc3RhcnQgZnJv bSBvdGhlciB0aGFuIHplcm8gaGVyZT8gQW5kIHdoeSBub3QKdXNlIHRoZSAocG9zc2libHkgY2hl YXBlciB0byBhY2Nlc3MpIGZ1bmN0aW9uIGFyZ3VtZW50ICJucGFnZSIKYXMgdGhlIGxvb3AgdXBw ZXIgYm91bmQ/IFRoZSBvdGhlciBzaW1pbGFyIGxvb3AgYSBmZXcgbGluZXMgdXAKaXMgY29kZWQg dGhhdCBzaW1wbGVyIHdheS4KCj4gK3N0YXRpYyBsb25nCj4gK3JlZ2lzdGVyX3Jpbmcoc3RydWN0 IGRvbWFpbiAqY3VycmQsCj4gKyAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QpIHJlZ19obmQsCj4gKyAgICAgICAgICAgICAgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19wYWdlX2Rlc2NyX3QpIHBnX2Rlc2NyX2huZCwKPiAr ICAgICAgICAgICAgICB1aW50MzJfdCBucGFnZSwgYm9vbCBmYWlsX2V4aXN0KQo+ICt7Cj4gKyAg ICB4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QgcmVnOwo+ICsgICAgc3RydWN0IGFyZ29fcmluZ19p ZCByaW5nX2lkOwo+ICsgICAgdm9pZCAqbWFwX3JpbmdwOwo+ICsgICAgeGVuX2FyZ29fcmluZ190 ICpyaW5ncDsKPiArICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOwo+ICsgICAg c3RydWN0IGFyZ29fc2VuZF9pbmZvICpzZW5kX2luZm8gPSBOVUxMOwo+ICsgICAgc3RydWN0IGRv bWFpbiAqZHN0X2QgPSBOVUxMOwo+ICsgICAgaW50IHJldCA9IDA7Cj4gKyAgICB1aW50MzJfdCBw cml2YXRlX3R4X3B0cjsKPiArCj4gKyAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmcmVnLCByZWdf aG5kLCAxKSApCj4gKyAgICB7Cj4gKyAgICAgICAgcmV0ID0gLUVGQVVMVDsKPiArICAgICAgICBn b3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogQSByaW5nIG11c3QgYmUg bGFyZ2UgZW5vdWdoIHRvIHRyYW5zbWl0IG1lc3NhZ2VzLCBzbyByZXF1aXJlcyBzcGFjZSBmb3I6 Cj4gKyAgICAgKiAqIDEgbWVzc2FnZSBoZWFkZXIsIHBsdXMKPiArICAgICAqICogMSBwYXlsb2Fk IHNsb3QgKHBheWxvYWQgaXMgYWx3YXlzIHJvdW5kZWQgdG8gYSBtdWx0aXBsZSBvZiAxNiBieXRl cykKPiArICAgICAqICAgZm9yIHRoZSBtZXNzYWdlIHBheWxvYWQgdG8gYmUgd3JpdHRlbiBpbnRv LCBwbHVzCj4gKyAgICAgKiAqIDEgbW9yZSBzbG90LCBzbyB0aGF0IHRoZSByaW5nIGNhbm5vdCBi ZSBmaWxsZWQgdG8gY2FwYWNpdHkgd2l0aCBhCj4gKyAgICAgKiAgIHNpbmdsZSBtZXNzYWdlIC0t IHNlZSB0aGUgbG9naWMgaW4gcmluZ2J1Zl9pbnNlcnQgLS0gYWxsb3dpbmcgZm9yIHRoaXMKPiAr ICAgICAqICAgZW5zdXJlcyB0aGF0IHRoZXJlIGNhbiBiZSBzcGFjZSByZW1haW5pbmcgd2hlbiBh IG1lc3NhZ2UgaXMgcHJlc2VudC4KPiArICAgICAqIFRoZSBhYm92ZSBkZXRlcm1pbmVzIHRoZSBt aW5pbXVtIGFjY2VwdGFibGUgcmluZyBzaXplLgo+ICsgICAgICovCj4gKyAgICBpZiAoIChyZWcu bGVuIDwgKHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikKPiArICAg ICAgICAgICAgICAgICAgICAgICsgUk9VTkRVUF9NRVNTQUdFKDEpICsgUk9VTkRVUF9NRVNTQUdF KDEpKSkgfHwKClRoZXNlIHR3byBzdW1tYW5kcyBkb24ndCBsb29rIHRvIGZ1bGZpbGwgdGhlICJj YW5ub3QgYmUgZmlsbGVkIHRvCmNhcGFjaXR5IiBjb25zdHJhaW50IHRoZSBjb21tZW50IGRlc2Ny aWJlcywgYXMgKGFpdWkpIG1lc3NhZ2VzCmNhbiBiZSBsYXJnZXIgdGhhbiAxNiBieXRlcy4gV2hh dCdzIHRoZSBkZWFsPwoKPiArICAgICAgICAgKHJlZy5sZW4gPiBYRU5fQVJHT19NQVhfUklOR19T SVpFKSB8fAo+ICsgICAgICAgICAocmVnLmxlbiAhPSBST1VORFVQX01FU1NBR0UocmVnLmxlbikp IHx8Cj4gKyAgICAgICAgIChyZWcucGFkICE9IDApICkKPiArICAgIHsKPiArICAgICAgICByZXQg PSAtRUlOVkFMOwo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsKPiArICAgIHJpbmdf aWQucGFydG5lcl9pZCA9IHJlZy5wYXJ0bmVyX2lkOwo+ICsgICAgcmluZ19pZC5wb3J0ID0gcmVn LnBvcnQ7Cj4gKyAgICByaW5nX2lkLmRvbWFpbl9pZCA9IGN1cnJkLT5kb21haW5faWQ7Cj4gKwo+ ICsgICAgcmVhZF9sb2NrKCZhcmdvX2xvY2spOwoKRnJvbSBoZXJlIHRvIC4uLgoKPiArICAgIGlm ICggIWN1cnJkLT5hcmdvICkKPiArICAgIHsKPiArICAgICAgICByZXQgPSAtRU5PREVWOwo+ICsg ICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIHJlZy5wYXJ0 bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCBv cHRfYXJnb19tYWNfZW5mb3JjaW5nICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHJldCA9 IC1FUEVSTTsKPiArICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+ICsgICAgICAgIH0KPiAr ICAgIH0KPiArICAgIGVsc2UKPiArICAgIHsKPiArICAgICAgICBkc3RfZCA9IGdldF9kb21haW5f YnlfaWQocmVnLnBhcnRuZXJfaWQpOwo+ICsgICAgICAgIGlmICggIWRzdF9kICkKPiArICAgICAg ICB7Cj4gKyAgICAgICAgICAgIGFyZ29fZHByaW50aygiIWRzdF9kLCBFU1JDSFxuIik7Cj4gKyAg ICAgICAgICAgIHJldCA9IC1FU1JDSDsKPiArICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKCAhZHN0X2QtPmFyZ28gKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2QtPmFyZ28sIEVDT05OUkVGVVNF RFxuIik7Cj4gKyAgICAgICAgICAgIHJldCA9IC1FQ09OTlJFRlVTRUQ7Cj4gKyAgICAgICAgICAg IHB1dF9kb21haW4oZHN0X2QpOwo+ICsgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4gKyAg ICAgICAgfQo+ICsKPiArICAgICAgICBzZW5kX2luZm8gPSB4emFsbG9jKHN0cnVjdCBhcmdvX3Nl bmRfaW5mbyk7Cj4gKyAgICAgICAgaWYgKCAhc2VuZF9pbmZvICkKPiArICAgICAgICB7Cj4gKyAg ICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gKyAgICAgICAgICAgIHB1dF9kb21haW4oZHN0X2Qp Owo+ICsgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4gKyAgICAgICAgfQo+ICsgICAgICAg IHNlbmRfaW5mby0+aWQgPSByaW5nX2lkOwo+ICsgICAgfQoKLi4uIGhlcmUsIHdoYXQgZXhhY3Rs eSBpcyBpdCB0aGF0IHJlcXVpcmVzIHRoZSBnbG9iYWwgcmVhZCBsb2NrCnRvIGJlIGhlbGQgLi4u Cgo+ICsgICAgd3JpdGVfbG9jaygmY3VycmQtPmFyZ28tPmxvY2spOwoKLi4uIHByaW9yIHRvIHRo aXM/IEhvbGRpbmcgbG9ja3MgYXJvdW5kIGFsbG9jYXRpb25zIGlzIG5vdApmb3JiaWRkZW4sIGJ1 dCBzaG91bGQgYmUgYXZvaWRlZCB3aGVuZXZlciBwb3NzaWJsZS4KCkFuZCB0aGVuIGZ1cnRoZXIg d2h5IGRvZXMgdGhlIGdsb2JhbCByZWFkIGxvY2sgbmVlZApjb250aW51ZWQgaG9sZGluZyB1bnRp bCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbj8KCj4gKyAgICBpZiAoIGN1cnJkLT5hcmdvLT5yaW5n X2NvdW50ID49IE1BWF9SSU5HU19QRVJfRE9NQUlOICkKPiArICAgIHsKPiArICAgICAgICByZXQg PSAtRU5PU1BDOwo+ICsgICAgICAgIGdvdG8gb3V0X3VubG9jazI7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgcmluZ19pbmZvID0gcmluZ19maW5kX2luZm8oY3VycmQsICZyaW5nX2lkKTsKPiArICAgIGlm ICggIXJpbmdfaW5mbyApCj4gKyAgICB7Cj4gKyAgICAgICAgcmluZ19pbmZvID0geHphbGxvYyhz dHJ1Y3QgYXJnb19yaW5nX2luZm8pOwo+ICsgICAgICAgIGlmICggIXJpbmdfaW5mbyApCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+ICsgICAgICAgICAgICBnb3Rv IG91dF91bmxvY2syOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgc3Bpbl9sb2NrX2luaXQo JnJpbmdfaW5mby0+bG9jayk7Cj4gKwo+ICsgICAgICAgIHJpbmdfaW5mby0+aWQgPSByaW5nX2lk Owo+ICsgICAgICAgIElOSVRfSExJU1RfSEVBRCgmcmluZ19pbmZvLT5wZW5kaW5nKTsKPiArCj4g KyAgICAgICAgaGxpc3RfYWRkX2hlYWQoJnJpbmdfaW5mby0+bm9kZSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAmY3VycmQtPmFyZ28tPnJpbmdfaGFzaFtoYXNoX2luZGV4KCZyaW5nX2luZm8t PmlkKV0pOwo+ICsKPiArICAgICAgICBncHJpbnRrKFhFTkxPR19ERUJVRywgImFyZ286IHZtJXUg cmVnaXN0ZXJpbmcgcmluZyAodm0ldToleCB2bSVkKVxuIiwKPiArICAgICAgICAgICAgICAgIGN1 cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCByaW5nX2lkLnBvcnQsCj4gKyAgICAg ICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOwo+ICsgICAgfQo+ICsgICAgZWxzZQo+ICsg ICAgewo+ICsgICAgICAgIGlmICggcmluZ19pbmZvLT5sZW4gKQo+ICsgICAgICAgIHsKClBsZWFz ZSBmb2xkIGludG8gImVsc2UgaWYgKCApIiwgcmVtb3ZpbmcgYSBsZXZlbCBvZiBpbmRlbnRhdGlv bi4KCj4gKyAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAqIElmIHRoZSBjYWxsZXIgc3Bl Y2lmaWVkIHRoYXQgdGhlIHJpbmcgbXVzdCBub3QgYWxyZWFkeSBleGlzdCwKPiArICAgICAgICAg ICAgICogZmFpbCBhdCBhdHRlbXB0IHRvIGFkZCBhIGNvbXBsZXRlZCByaW5nIHdoaWNoIGFscmVh ZHkgZXhpc3RzLgo+ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgaWYgKCBmYWlsX2V4 aXN0ICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgYXJnb19kcHJpbnRrKCJk aXNhbGxvd2VkIHJlcmVnaXN0cmF0aW9uIG9mIGV4aXN0aW5nIHJpbmdcbiIpOwo+ICsgICAgICAg ICAgICAgICAgcmV0ID0gLUVFWElTVDsKPiArICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9j azI7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGlmICggcmluZ19pbmZvLT5s ZW4gIT0gcmVnLmxlbiApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIC8qCj4g KyAgICAgICAgICAgICAgICAgKiBDaGFuZ2Ugb2YgcmluZyBzaXplIGNvdWxkIHJlc3VsdCBpbiBl bnRyaWVzIG9uIHRoZSBwZW5kaW5nCj4gKyAgICAgICAgICAgICAgICAgKiBub3RpZmljYXRpb25z IGxpc3QgdGhhdCB3aWxsIG5ldmVyIHRyaWdnZXIuCj4gKyAgICAgICAgICAgICAgICAgKiBTaW1w bGUgYmx1bnQgc29sdXRpb246IGRpc2FsbG93IHJpbmcgcmVzaXplIGZvciBub3cuCj4gKyAgICAg ICAgICAgICAgICAgKiBUT0RPOiBpbnZlc3RpZ2F0ZSBlbmFibGluZyByaW5nIHJlc2l6ZS4KPiAr ICAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJS LAo+ICsgICAgICAgICAgICAgICAgICAgICJhcmdvOiB2bSV1IGF0dGVtcHRlZCB0byBjaGFuZ2Ug cmluZyBzaXplKHZtJXU6JXggdm0lZClcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN1 cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCByaW5nX2lkLnBvcnQsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7Cj4gKyAgICAgICAgICAgICAg ICAvKgo+ICsgICAgICAgICAgICAgICAgICogQ291bGQgcmV0dXJuIEVJTlZBTCBoZXJlLCBidXQg aWYgdGhlIHJpbmcgZGlkbid0IGFscmVhZHkKPiArICAgICAgICAgICAgICAgICAqIGV4aXN0IHRo ZW4gdGhlIGFyZ3VtZW50cyB3b3VsZCBoYXZlIGJlZW4gdmFsaWQsIHNvOiBFRVhJU1QuCj4gKyAg ICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgIHJldCA9IC1FRVhJU1Q7Cj4gKyAg ICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2syOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsg ICAgICAgICAgICBncHJpbnRrKFhFTkxPR19ERUJVRywKPiArICAgICAgICAgICAgICAgICAgICAi YXJnbzogdm0ldSByZS1yZWdpc3RlcmluZyBleGlzdGluZyByaW5nICh2bSV1OiV4IHZtJWQpXG4i LAo+ICsgICAgICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWlu X2lkLCByaW5nX2lkLnBvcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgcmluZ19pZC5wYXJ0bmVy X2lkKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0ID0gZmluZF9yaW5nX21m bnMoY3VycmQsIHJpbmdfaW5mbywgbnBhZ2UsIHBnX2Rlc2NyX2huZCwgcmVnLmxlbik7Cj4gKyAg ICBpZiAoIHJldCApCj4gKyAgICB7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAo+ICsg ICAgICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIGZpbmQgcmluZyBtZm5zICh2bSV1 OiV4IHZtJWQpXG4iLAo+ICsgICAgICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZ19p ZC5kb21haW5faWQsIHJpbmdfaWQucG9ydCwKPiArICAgICAgICAgICAgICAgIHJpbmdfaWQucGFy dG5lcl9pZCk7Cj4gKwo+ICsgICAgICAgIHJpbmdfcmVtb3ZlX2luZm8oY3VycmQsIHJpbmdfaW5m byk7Cj4gKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ ICsgICAgICogVGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIG1lbW9yeSBzdXBwbGllZCBmb3IgdGhlIHJp bmcgaGFzIHRoZSB4ZW5fYXJnb19yaW5nCj4gKyAgICAgKiBzdHJ1Y3R1cmUgYXQgaXRzIGhlYWQs IHdoaWNoIGlzIHdoZXJlIHRoZSByaW5nIGluZGV4ZXMgcmVzaWRlLgo+ICsgICAgICovCj4gKyAg ICByZXQgPSByaW5nX21hcF9wYWdlKHJpbmdfaW5mbywgMCwgJm1hcF9yaW5ncCk7Cj4gKyAgICBp ZiAoIHJldCApCj4gKyAgICB7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAo+ICsgICAg ICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIG1hcCByaW5nIG1mbiAwICh2bSV1OiV4 IHZtJWQpXG4iLAo+ICsgICAgICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZ19pZC5k b21haW5faWQsIHJpbmdfaWQucG9ydCwKPiArICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5l cl9pZCk7Cj4gKwo+ICsgICAgICAgIHJpbmdfcmVtb3ZlX2luZm8oY3VycmQsIHJpbmdfaW5mbyk7 Cj4gKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKPiArICAgIH0KPiArICAgIHJpbmdwID0gbWFw X3JpbmdwOwo+ICsKPiArICAgIHByaXZhdGVfdHhfcHRyID0gcmVhZF9hdG9taWMoJnJpbmdwLT50 eF9wdHIpOwo+ICsKPiArICAgIGlmICggKHByaXZhdGVfdHhfcHRyID49IHJlZy5sZW4pIHx8Cj4g KyAgICAgICAgIChST1VORFVQX01FU1NBR0UocHJpdmF0ZV90eF9wdHIpICE9IHByaXZhdGVfdHhf cHRyKSApCj4gKyAgICB7Cj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBTaW5jZSB0aGUgcmlu ZyBpcyBhIG1lc3MsIGF0dGVtcHQgdG8gZmx1c2ggdGhlIGNvbnRlbnRzIG9mIGl0Cj4gKyAgICAg ICAgICogaGVyZSBieSBzZXR0aW5nIHRoZSB0eF9wdHIgdG8gdGhlIG5leHQgYWxpZ25lZCBtZXNz YWdlIHNsb3QgcGFzdAo+ICsgICAgICAgICAqIHRoZSBsYXRlc3QgcnhfcHRyIHdlIGhhdmUgb2Jz ZXJ2ZWQuIEhhbmRsZSByaW5nIHdyYXAgY29ycmVjdGx5Lgo+ICsgICAgICAgICAqLwo+ICsgICAg ICAgIHByaXZhdGVfdHhfcHRyID0gUk9VTkRVUF9NRVNTQUdFKHJlYWRfYXRvbWljKCZyaW5ncC0+ cnhfcHRyKSk7Cj4gKwo+ICsgICAgICAgIGlmICggcHJpdmF0ZV90eF9wdHIgPj0gcmVnLmxlbiAp Cj4gKyAgICAgICAgICAgIHByaXZhdGVfdHhfcHRyID0gMDsKPiArCj4gKyAgICAgICAgdXBkYXRl X3R4X3B0cihyaW5nX2luZm8sIHByaXZhdGVfdHhfcHRyKTsKPiArICAgIH0KPiArCj4gKyAgICBy aW5nX2luZm8tPnR4X3B0ciA9IHByaXZhdGVfdHhfcHRyOwo+ICsgICAgcmluZ19pbmZvLT5sZW4g PSByZWcubGVuOwo+ICsgICAgY3VycmQtPmFyZ28tPnJpbmdfY291bnQrKzsKPiArCj4gKyAgICBp ZiAoIHNlbmRfaW5mbyApCj4gKyAgICB7Cj4gKyAgICAgICAgc3Bpbl9sb2NrKCZkc3RfZC0+YXJn by0+c2VuZF9sb2NrKTsKPiArCj4gKyAgICAgICAgaGxpc3RfYWRkX2hlYWQoJnNlbmRfaW5mby0+ bm9kZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAmZHN0X2QtPmFyZ28tPnNlbmRfaGFzaFto YXNoX2luZGV4KCZzZW5kX2luZm8tPmlkKV0pOwo+ICsKPiArICAgICAgICBzcGluX3VubG9jaygm ZHN0X2QtPmFyZ28tPnNlbmRfbG9jayk7Cj4gKyAgICB9Cj4gKwo+ICsgb3V0X3VubG9jazI6Cj4g KyAgICBpZiAoICFyZXQgJiYgc2VuZF9pbmZvICkKPiArICAgICAgICB4ZnJlZShzZW5kX2luZm8p Owo+ICsKPiArICAgIGlmICggZHN0X2QgKQo+ICsgICAgICAgIHB1dF9kb21haW4oZHN0X2QpOwo+ ICsKPiArICAgIHdyaXRlX3VubG9jaygmY3VycmQtPmFyZ28tPmxvY2spOwoKU3VyZWx5IHlvdSBj YW4gZHJvcCB0aGUgbG9jayBiZWZvcmUgdGhlIG90aGVyIHR3byBjbGVhbnVwCmFjdGlvbnM/IFRo YXQgd291bGQgdGhlbiBhbGxvdyB5b3UgdG8gYWRkIGFub3RoZXIgbGFiZWwgdG8KYWJzb3JiIHRo ZSB0d28gc2VwYXJhdGUgcHV0X2RvbWFpbigpIGNhbGxzIG9uIGVycm9yIHBhdGhzLgoKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oCj4gKysrIGIveGVuL2luY2x1ZGUv YXNtLWFybS9ndWVzdF9hY2Nlc3MuaAo+IEBAIC0yOSw2ICsyOSw4IEBAIGludCBhY2Nlc3NfZ3Vl c3RfbWVtb3J5X2J5X2lwYShzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGlwYSwgdm9pZCAqYnVm LAo+ICAvKiBJcyB0aGUgZ3Vlc3QgaGFuZGxlIGEgTlVMTCByZWZlcmVuY2U/ICovCj4gICNkZWZp bmUgZ3Vlc3RfaGFuZGxlX2lzX251bGwoaG5kKSAgICAgICAgKChobmQpLnAgPT0gTlVMTCkKPiAg Cj4gKyNkZWZpbmUgZ3Vlc3RfaGFuZGxlX2lzX2FsaWduZWQoaG5kLCBtYXNrKSAoISgodWludHB0 cl90KShobmQpLnAgJiAobWFzaykpKQoKVGhpcyBpcyB1bnVzZWQgdGhyb3VnaG91dCB0aGUgcGF0 Y2ggYWZhaWNzLgoKPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCj4gKysrIGIveGVu L2luY2x1ZGUvcHVibGljL2FyZ28uaAo+IEBAIC0zMSw2ICszMSwyNiBAQAo+ICAKPiAgI2luY2x1 ZGUgInhlbi5oIgo+ICAKPiArI2RlZmluZSBYRU5fQVJHT19ET01JRF9BTlkgICAgICAgRE9NSURf SU5WQUxJRAo+ICsKPiArLyoKPiArICogVGhlIG1heGltdW0gc2l6ZSBvZiBhbiBBcmdvIHJpbmcg aXMgZGVmaW5lZCB0byBiZTogMTZHQgo+ICsgKiAgLS0gd2hpY2ggaXMgMHgxMDAwMDAwIGJ5dGVz Lgo+ICsgKiBBIGJ5dGUgaW5kZXggaW50byB0aGUgcmluZyBpcyBhdCBtb3N0IDI0IGJpdHMuCj4g KyAqLwo+ICsjZGVmaW5lIFhFTl9BUkdPX01BWF9SSU5HX1NJWkUgICgweDEwMDAwMDBVTEwpCj4g Kwo+ICsvKgo+ICsgKiBQYWdlIGRlc2NyaXB0b3I6IGVuY29kaW5nIGJvdGggcGFnZSBhZGRyZXNz IGFuZCBzaXplIGluIGEgNjQtYml0IHZhbHVlLgo+ICsgKiBJbnRlbmRlZCB0byBhbGxvdyBBQkkg dG8gc3VwcG9ydCB1c2Ugb2YgZGlmZmVyZW50IGdyYW51bGFyaXR5IHBhZ2VzLgo+ICsgKiBleGFt cGxlIG9mIGhvdyB0byBwb3B1bGF0ZToKPiArICogeGVuX2FyZ29fcGFnZV9kZXNjcl90IHBnX2Rl c2MgPQo+ICsgKiAgICAgIChwaHlzYWRkciAmIFBBR0VfTUFTSykgfCBYRU5fQVJHT19QQUdFX0RF U0NSX1NJWkVfNEs7Cj4gKyAqLwo+ICt0eXBlZGVmIHVpbnQ2NF90IHhlbl9hcmdvX3BhZ2VfZGVz Y3JfdDsKPiArI2RlZmluZSBYRU5fQVJHT19QQUdFX0RFU0NSX1NJWkVfTUFTSyAgIDB4MDAwMDAw MDAwMDAwMGZmZlVMTAo+ICsjZGVmaW5lIFhFTl9BUkdPX1BBR0VfREVTQ1JfU0laRV80SyAgICAg MAoKQXJlIHRoZSBfREVTQ1JfIGluZml4ZXMgaGVyZSByZWFsbHkgdXNlZnVsPwoKPiBAQCAtNTYs NCArNzYsNTYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmluZwo+ICAjZW5kaWYKPiAgfSB4 ZW5fYXJnb19yaW5nX3Q7Cj4gIAo+ICt0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19yZWdpc3Rlcl9y aW5nCj4gK3sKPiArICAgIHVpbnQzMl90IHBvcnQ7Cj4gKyAgICBkb21pZF90IHBhcnRuZXJfaWQ7 Cj4gKyAgICB1aW50MTZfdCBwYWQ7Cj4gKyAgICB1aW50MzJfdCBsZW47Cj4gK30geGVuX2FyZ29f cmVnaXN0ZXJfcmluZ190Owo+ICsKPiArLyogTWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRl ZCB0byBhIG11bHRpcGxlIG9mIHRoaXMgc2l6ZS4gKi8KPiArI2RlZmluZSBYRU5fQVJHT19NU0df U0xPVF9TSVpFIDB4MTAKPiArCj4gK3N0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVy Cj4gK3sKPiArICAgIHVpbnQzMl90IGxlbjsKPiArICAgIHhlbl9hcmdvX2FkZHJfdCBzb3VyY2U7 Cj4gKyAgICB1aW50MzJfdCBtZXNzYWdlX3R5cGU7Cj4gKyNpZiBkZWZpbmVkKF9fU1REQ19WRVJT SU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAo+ICsgICAgdWludDhfdCBkYXRh W107Cj4gKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCj4gKyAgICB1aW50OF90IGRhdGFbMF07Cj4g KyNlbmRpZgo+ICt9Owo+ICsKPiArLyoKPiArICogSHlwZXJjYWxsIG9wZXJhdGlvbnMKPiArICov Cj4gKwo+ICsvKgo+ICsgKiBYRU5fQVJHT19PUF9yZWdpc3Rlcl9yaW5nCj4gKyAqCj4gKyAqIFJl Z2lzdGVyIGEgcmluZyB1c2luZyB0aGUgaW5kaWNhdGVkIG1lbW9yeS4KPiArICogQWxzbyB1c2Vk IHRvIHJlcmVnaXN0ZXIgYW4gZXhpc3RpbmcgcmluZyAoZWcuIGFmdGVyIHJlc3VtZSBmcm9tIGhp YmVybmF0ZSkuCj4gKyAqCj4gKyAqIGFyZzE6IFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmVn aXN0ZXJfcmluZ190KQo+ICsgKiBhcmcyOiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3BhZ2Vf ZGVzY3JfdCkKPiArICogYXJnMzogdW5zaWduZWQgbG9uZyBucGFnZXMKPiArICogYXJnNDogdW5z aWduZWQgbG9uZyBmbGFncwoKVGhlICJ1bnNpZ25lZCBsb25nIi1zIGhlcmUgYXJlIG5vdCBuZWNl c3NhcmlseSBjb21wYXRpYmxlIHdpdGgKY29tcGF0IG1vZGUuIEF0IHRoZSB2ZXJ5IGxlYXN0IGZs YWdzIGFib3ZlIGJpdCAzMSB3b24ndCBiZQp1c2FibGUgYnkgY29tcGF0IG1vZGUgZ3Vlc3RzLiBI ZW5jZSBJIGFsc28gcXVlc3Rpb24gLi4uCgo+ICsgKi8KPiArI2RlZmluZSBYRU5fQVJHT19PUF9y ZWdpc3Rlcl9yaW5nICAgICAxCj4gKwo+ICsvKiBSZWdpc3RlciBvcCBmbGFncyAqLwo+ICsvKgo+ ICsgKiBGYWlsIGV4aXN0Ogo+ICsgKiBJZiBzZXQsIHJlamVjdCBhdHRlbXB0cyB0byAocmUpcmVn aXN0ZXIgYW4gZXhpc3RpbmcgZXN0YWJsaXNoZWQgcmluZy4KPiArICogSWYgY2xlYXIsIHJlcmVn aXN0cmF0aW9uIG9jY3VycyBpZiB0aGUgcmluZyBleGlzdHMsIHdpdGggdGhlIG5ldyByaW5nCj4g KyAqIHRha2luZyB0aGUgcGxhY2Ugb2YgdGhlIG9sZCwgcHJlc2VydmluZyB0eF9wdHIgaWYgaXQg cmVtYWlucyB2YWxpZC4KPiArICovCj4gKyNkZWZpbmUgWEVOX0FSR09fUkVHSVNURVJfRkxBR19G QUlMX0VYSVNUICAweDEKPiArCj4gKy8qIE1hc2sgZm9yIGFsbCBkZWZpbmVkIGZsYWdzLiB1bnNp Z25lZCBsb25nIHR5cGUgc28gb2sgZm9yIGJvdGggMzIvNjQtYml0ICovCj4gKyNkZWZpbmUgWEVO X0FSR09fUkVHSVNURVJfRkxBR19NQVNLIDB4MVVMCgouLi4gdGhlIFVMIHN1ZmZpeCBoZXJlLiBB bHNvIHRoaXMgbGFzdCBpdGVtIHNob3VsZCBub3QgYmUgZXhwb3NlZAoocGVyaGFwcyBmcmFtZWQg YnkgIiNpZmRlZiBfX1hFTl9fIikgYW5kIHdvdWxkIHBlcmhhcHMgYW55d2F5CmJldHRlciBiZSBk ZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBvdGhlcgpYRU5fQVJHT19SRUdJU1RFUl9GTEFHXyouCgpK YW4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs