From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: Re: [PATCH v3 04/15] argo: init, destroy and soft-reset, with enable command line opt Date: Thu, 10 Jan 2019 22:03:59 -0800 Message-ID: References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> <1546846968-7372-5-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 1ghpvT-0002XM-Nu for xen-devel@lists.xenproject.org; Fri, 11 Jan 2019 06:04:15 +0000 Received: by mail-lf1-x144.google.com with SMTP id l10so9962850lfh.9 for ; Thu, 10 Jan 2019 22:04:13 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= Cc: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Julien Grall , Tim Deegan , Daniel Smith , Rich Persaud , Paul Durrant , Jan Beulich , xen-devel , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBKYW4gMTAsIDIwMTkgYXQgMjoxOSBBTSBSb2dlciBQYXUgTW9ubsOpIDxyb3lnZXJA ZnJlZWJzZC5vcmc+IHdyb3RlOgo+Cj4gIE9uIE1vbiwgSmFuIDcsIDIwMTkgYXQgODo0NCBBTSBD aHJpc3RvcGhlciBDbGFyawo+IDxjaHJpc3RvcGhlci53LmNsYXJrQGdtYWlsLmNvbT4gd3JvdGU6 Cj4gPgo+ID4gSW5pdGlhbGlzZXMgYmFzaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJmb3JtcyB0 ZWFyZG93biBvZiBhcmdvIHN0YXRlCj4gPiBmb3IgZG9tYWluIHNodXRkb3duLgoKPiA+IGRpZmYg LS1naXQgYS94ZW4vY29tbW9uL2FyZ28uYyBiL3hlbi9jb21tb24vYXJnby5jCj4gPiBpbmRleCA2 Zjc4MmY3Li44NjE5NWQzIDEwMDY0NAo+ID4gLS0tIGEveGVuL2NvbW1vbi9hcmdvLmMKPiA+ICsr KyBiL3hlbi9jb21tb24vYXJnby5jCj4gPiBAQCAtMTcsNyArMTcsMTc3IEBACj4gPiAgICovCj4g Pgo+ID4gICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KPiA+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+ Cj4gPiArI2luY2x1ZGUgPHhlbi9kb21haW4uaD4KPiA+ICsjaW5jbHVkZSA8eGVuL2FyZ28uaD4K PiA+ICsjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn ZS5oPgo+ID4gICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+Cj4gPiArI2luY2x1ZGUgPHhl bi90aW1lLmg+Cj4gPiArI2luY2x1ZGUgPHB1YmxpYy9hcmdvLmg+Cj4KPiBXZSB1c3VhbGx5IHRy eSB0byBzb3J0IGhlYWRlciBpbmNsdWRlcyBhbHBoYWJldGljYWxseSwgYW5kIEkgd291bGQgYWRk Cj4gYSBuZXdsaW5lIGJldHdlZW4gdGhlIHhlbi8qIGFuZCB0aGUgcHVibGljLyogaGVhZGVyIGlu Y2x1ZGVzLgoKYWNrLCB0aGFua3MsIGRvbmUuCgo+Cj4gPiArCj4gPiArREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoeGVuX2FyZ29fYWRkcl90KTsKPiA+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fYXJnb19yaW5nX3QpOwo+ID4gKwo+ID4gKy8qIFhlbiBjb21tYW5kIGxpbmUgb3B0aW9uIHRv IGVuYWJsZSBhcmdvICovCj4gPiArc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSBvcHRfYXJnb19l bmFibGVkOwo+ID4gK2Jvb2xlYW5fcGFyYW0oImFyZ28iLCBvcHRfYXJnb19lbmFibGVkKTsKPgo+ IEkgd291bGQgZHJvcCB0aGUgb3B0XyogcHJlZml4LCBuZXcgb3B0aW9ucyBhZGRlZCByZWNlbnRs eSBkb24ndAo+IGluY2x1ZGUgdGhlIHByZWZpeCBhbHJlYWR5LgoKYWZ0ZXIgdGhlIGxhdGVyIGlu LXRocmVhZCBkaXNjdXNzaW9uIHcvIHlvdXJzZWxmIGFuZCBKYW4sIEkndmUKcmV0YWluZWQgdGhp cyBwcmVmaXgKCj4gPiArLyogRGF0YSBhYm91dCBhIGRvbWFpbidzIG93biByaW5nIHRoYXQgaXQg aGFzIHJlZ2lzdGVyZWQgKi8KPiA+ICtzdHJ1Y3QgYXJnb19yaW5nX2luZm8KPiA+ICt7Cj4gPiAr ICAgIC8qIG5leHQgbm9kZSBpbiB0aGUgaGFzaCwgcHJvdGVjdGVkIGJ5IEwyICovCj4gPiArICAg IHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4gPiArICAgIC8qIHRoaXMgcmluZydzIGlkLCBwcm90 ZWN0ZWQgYnkgTDIgKi8KPiA+ICsgICAgc3RydWN0IGFyZ29fcmluZ19pZCBpZDsKPiA+ICsgICAg LyogTDMgKi8KPiA+ICsgICAgc3BpbmxvY2tfdCBsb2NrOwo+ID4gKyAgICAvKiBsZW5ndGggb2Yg dGhlIHJpbmcsIHByb3RlY3RlZCBieSBMMyAqLwo+ID4gKyAgICB1aW50MzJfdCBsZW47Cj4gPiAr ICAgIC8qIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgcmluZywgcHJvdGVjdGVkIGJ5IEwzICovCj4g PiArICAgIHVpbnQzMl90IG5wYWdlOwo+Cj4gQ2FuIHlvdSBpbmZlciBudW1iZXIgb2YgcGFnZXMg Zm9ybSB0aGUgbGVuZ3RoIG9mIHRoZSByaW5nLCBvciB0aGUKPiBvdGhlciB3YXkgYXJvdW5kPwo+ Cj4gSSdtIG5vdCBzdXJlIHdoeSBib3RoIG5lZWQgdG8gYmUgc3RvcmVkIGhlcmUuCgpZZXMsIHlv dSdyZSByaWdodC4gSSd2ZSByZW1vdmVkIHRoZSBucGFnZSBzdHJ1Y3QgbWVtYmVyIGFuZCBjYWxj dWxhdGVkCnRoZSB2YWx1ZSB3aGVyZSBuZWVkZWQgZnJvbSB0aGUgbGVuLgoKPiA+ICsgICAgLyog bnVtYmVyIG9mIHBhZ2VzIHRyYW5zbGF0ZWQgaW50byBtZm5zLCBwcm90ZWN0ZWQgYnkgTDMgKi8K PiA+ICsgICAgdWludDMyX3Qgbm1mbnM7Cj4gPiArICAgIC8qIGNhY2hlZCB0eCBwb2ludGVyIGxv Y2F0aW9uLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDMyX3QgdHhfcHRyOwo+Cj4g QWxsIHRoaXMgZmllbGRzIGFyZSBub3QgcGFydCBvZiBhbnkgcHVibGljIHN0cnVjdHVyZSwgc28g SSB3b25kZXIgaWYKPiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gc2ltcGx5IHVzZSB1bnNpZ25lZCBp bnQgZm9yIHRob3NlLCBvciBzaXplX3QuCgphY2ssIGRvbmUuCgo+ID4gKyAgICAvKiBtYXBwZWQg cmluZyBwYWdlcyBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDhfdCAqKm1mbl9tYXBw aW5nOwo+Cj4gV2h5ICd1aW50OF90IConLCB3b3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8ganVzdCB1 c2UgJ3ZvaWQgKicgaWYgaXQncyBhIG1hcHBpbmc/CgpZZXMuIEhhdmUgc3dpdGNoZWQgaXQgdG8g YmUgdm9pZCouCgo+ID4gKy8qIEEgc3BhY2UtYXZhaWxhYmxlIG5vdGlmaWNhdGlvbiB0aGF0IGlz IGF3YWl0aW5nIHN1ZmZpY2llbnQgc3BhY2UgKi8KPiA+ICtzdHJ1Y3QgcGVuZGluZ19lbnQKPiA+ ICt7Cj4gPiArICAgIC8qIExpc3Qgbm9kZSB3aXRoaW4gYXJnb19yaW5nX2luZm8ncyBwZW5kaW5n IGxpc3QgKi8KPiA+ICsgICAgc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKPiA+ICsgICAgLyoKPiA+ ICsgICAgICogTGlzdCBub2RlIHdpdGhpbiBhcmdvX2RvbWFpbidzIHdpbGRjYXJkX3BlbmRfbGlz dC4gT25seSB1c2VkIGlmIHRoZQo+ID4gKyAgICAgKiByaW5nIGlzIG9uZSB3aXRoIGEgd2lsZGNh cmQgcGFydG5lciAoaWUuIHRoYXQgYW55IGRvbWFpbiBtYXkgc2VuZCB0bykKPiA+ICsgICAgICog dG8gZW5hYmxlIGNhbmNlbGxpbmcgc2lnbmFscyBvbiB3aWxkY2FyZCByaW5ncyBvbiBkb21haW4g ZGVzdHJveS4KPiA+ICsgICAgICovCj4gPiArICAgIHN0cnVjdCBobGlzdF9ub2RlIHdpbGRjYXJk X25vZGU7Cj4gPiArICAgIC8qCj4gPiArICAgICAqIFBvaW50ZXIgdG8gdGhlIHJpbmdfaW5mbyB0 aGF0IHRoaXMgZW50IHBlcnRhaW5zIHRvLiBVc2VkIHRvIGVuc3VyZSB0aGF0Cj4gPiArICAgICAq IHJpbmdfaW5mby0+bnBlbmRpbmcgaXMgZGVjcmVtZW50ZWQgd2hlbiBlbnRzIGZvciB3aWxkY2Fy ZCByaW5ncyBhcmUKPiA+ICsgICAgICogY2FuY2VsbGVkIGZvciBkb21haW4gZGVzdHJveS4KPiA+ ICsgICAgICogQ2F1dGlvbjogTXVzdCBob2xkIHRoZSBjb3JyZWN0IGxvY2tzIGJlZm9yZSBhY2Nl c3NpbmcgcmluZ19pbmZvIHZpYSB0aGlzLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgc3RydWN0IGFy Z29fcmluZ19pbmZvICpyaW5nX2luZm87Cj4gPiArICAgIC8qIGRvbWFpbiB0byBiZSBub3RpZmll ZCB3aGVuIHNwYWNlIGlzIGF2YWlsYWJsZSAqLwo+ID4gKyAgICBkb21pZF90IGRvbWFpbl9pZDsK PiA+ICsgICAgdWludDE2X3QgcGFkOwo+Cj4gTm8gbmVlZCBmb3IgdGhlIHBhZCBpbiBpbnRlcm5h bCBzdHJ1Y3R1cmVzLgoKYWNrIC0gcmVtb3ZlZCBwYWQuCgo+ID4gKy8qCj4gPiArICogVGhlIHZh bHVlIG9mIHRoZSBhcmdvIGVsZW1lbnQgaW4gYSBzdHJ1Y3QgZG9tYWluIGlzCj4gPiArICogcHJv dGVjdGVkIGJ5IHRoZSBnbG9iYWwgbG9jayBhcmdvX2xvY2s6IEwxCj4gPiArICovCj4gPiArI2Rl ZmluZSBBUkdPX0hUQUJMRV9TSVpFIDMyCj4gPiArc3RydWN0IGFyZ29fZG9tYWluCj4gPiArewo+ ID4gKyAgICAvKiBMMiAqLwo+ID4gKyAgICByd2xvY2tfdCBsb2NrOwo+ID4gKyAgICAvKgo+ID4g KyAgICAgKiBIYXNoIHRhYmxlIG9mIGFyZ29fcmluZ19pbmZvIGFib3V0IHJpbmdzIHRoaXMgZG9t YWluIGhhcyByZWdpc3RlcmVkLgo+ID4gKyAgICAgKiBQcm90ZWN0ZWQgYnkgTDIuCj4gPiArICAg ICAqLwo+ID4gKyAgICBzdHJ1Y3QgaGxpc3RfaGVhZCByaW5nX2hhc2hbQVJHT19IVEFCTEVfU0la RV07Cj4gPiArICAgIC8qIENvdW50ZXIgb2YgcmluZ3MgcmVnaXN0ZXJlZCBieSB0aGlzIGRvbWFp bi4gUHJvdGVjdGVkIGJ5IEwyLiAqLwo+ID4gKyAgICB1aW50MzJfdCByaW5nX2NvdW50Owo+ID4g Kwo+ID4gKyAgICAvKiBMc2VuZCAqLwo+ID4gKyAgICBzcGlubG9ja190IHNlbmRfbG9jazsKPiA+ ICsgICAgLyoKPiA+ICsgICAgICogSGFzaCB0YWJsZSBvZiBhcmdvX3NlbmRfaW5mbyBhYm91dCBy aW5ncyBvdGhlciBkb21haW5zIGhhdmUgcmVnaXN0ZXJlZAo+ID4gKyAgICAgKiBmb3IgdGhpcyBk b21haW4gdG8gc2VuZCB0by4gU2luZ2xlIHBhcnRuZXIsIG5vbi13aWxkY2FyZCByaW5ncy4KPiA+ ICsgICAgICogUHJvdGVjdGVkIGJ5IExzZW5kLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgc3RydWN0 IGhsaXN0X2hlYWQgc2VuZF9oYXNoW0FSR09fSFRBQkxFX1NJWkVdOwo+ID4gKwo+ID4gKyAgICAv KiBMd2lsZGNhcmQgKi8KPiA+ICsgICAgc3BpbmxvY2tfdCB3aWxkY2FyZF9sb2NrOwo+ID4gKyAg ICAvKgo+ID4gKyAgICAgKiBMaXN0IG9mIHBlbmRpbmcgc3BhY2UtYXZhaWxhYmxlIHNpZ25hbHMg Zm9yIHRoaXMgZG9tYWluIGFib3V0IHdpbGRjYXJkCj4gPiArICAgICAqIHJpbmdzIHJlZ2lzdGVy ZWQgYnkgb3RoZXIgZG9tYWlucy4gUHJvdGVjdGVkIGJ5IEx3aWxkY2FyZC4KPiA+ICsgICAgICov Cj4gPiArICAgIHN0cnVjdCBobGlzdF9oZWFkIHdpbGRjYXJkX3BlbmRfbGlzdDsKPiA+ICt9Owo+ ID4gKwo+ID4gKy8qCj4gPiArICogTG9ja2luZyBpcyBvcmdhbml6ZWQgYXMgZm9sbG93czoKPiA+ ICsgKgo+ID4gKyAqIFRlcm1pbm9sb2d5OiBSKDxsb2NrPikgbWVhbnMgdGFraW5nIGEgcmVhZCBs b2NrIG9uIHRoZSBzcGVjaWZpZWQgbG9jazsKPiA+ICsgKiAgICAgICAgICAgICAgVyg8bG9jaz4p IG1lYW5zIHRha2luZyBhIHdyaXRlIGxvY2sgb24gaXQuCj4gPiArICoKPiA+ICsgKiBMMSA6IFRo ZSBnbG9iYWwgbG9jazogYXJnb19sb2NrCj4gPiArICogUHJvdGVjdHMgdGhlIGFyZ28gZWxlbWVu dHMgb2YgYWxsIHN0cnVjdCBkb21haW4gKmQgaW4gdGhlIHN5c3RlbS4KPiA+ICsgKiBJdCBkb2Vz IG5vdCBwcm90ZWN0IGFueSBvZiB0aGUgZWxlbWVudHMgb2YgZC0+YXJnbywgb25seSB0aGVpcgo+ ID4gKyAqIGFkZHJlc3Nlcy4KPiA+ICsgKgo+ID4gKyAqIEJ5IGV4dGVuc2lvbiBzaW5jZSB0aGUg ZGVzdHJ1Y3Rpb24gb2YgYSBkb21haW4gd2l0aCBhIG5vbi1OVUxMCj4gPiArICogZC0+YXJnbyB3 aWxsIG5lZWQgdG8gZnJlZSB0aGUgZC0+YXJnbyBwb2ludGVyLCBob2xkaW5nIFcoTDEpCj4gPiAr ICogZ3VhcmFudGVlcyB0aGF0IG5vIGRvbWFpbnMgcG9pbnRlcnMgdGhhdCBhcmdvIGlzIGludGVy ZXN0ZWQgaW4KPiA+ICsgKiBiZWNvbWUgaW52YWxpZCB3aGlsc3QgdGhpcyBsb2NrIGlzIGhlbGQu Cj4gPiArICovCj4gPiArCj4gPiArc3RhdGljIERFRklORV9SV0xPQ0soYXJnb19sb2NrKTsgLyog TDEgKi8KPgo+IFlvdSBhbHNvIGFkZCBhbiBhcmdvX2xvY2sgdG8gZWFjaCBkb21haW4gc3RydWN0 IHdoaWNoIGRvZXNuJ3Qgc2VlbSB0bwo+IGJlIG1lbnRpb25lZCBoZXJlIGF0IGFsbC4KCllvdSdy ZSByaWdodCEgVGhhbmtzIC0gdGhhdCdzIGEgbmljZSBmaW5kLiBUaGF0IGxvY2sgaXMgbm90IHVz ZWQgYXQgYWxsLgpJJ2QgbWlzc2VkIGl0IHNpbmNlIGl0J3MganVzdCBub3QgcmVmZXJlbmNlZCBh bnl3aGVyZSBpbiB0aGUgYXJnby5jIGZpbGUuCkkndmUgcmVtb3ZlZCBpdC4KCj4gU2hvdWxkbid0 IHRoYXQgbG9jayBiZSB0aGUgb25lIHRoYXQgcHJvdGVjdHMgZC0+YXJnbz8gKGluc3RlYWQgb2Yg dGhpcyBnbG9iYWwgbG9jaz8pCgpBY2NvcmRpbmcgdGhlIGRlc2lnbiB0aGF0IGlzIGluIHBsYWNl IGF0IHRoZSBtb21lbnQsIG5vLCBidXQKSSBuZWVkIHRvIHN0dWR5IHRoYXQgb3B0aW9uIGEgYml0 IGJlZm9yZSBJIGNhbiBjb21tZW50IGZ1cnRoZXIgb24Kd2hldGhlciBpdCB3b3VsZCBtYWtlIHNl bnNlIHRvIGFkZCBpdCBpbiBvcmRlciB0byBkbyBzby4KSSBpbWFnaW5lIG5vdCB0aG91Z2ggYmVj YXVzZSB3ZSdyZSBub3QgbG9va2luZyB0byBhZGQgYW55IG1vcmUgbG9ja3MuCgo+ID4gKy8qCj4g PiArICogTDIgOiBUaGUgcGVyLWRvbWFpbiByaW5nIGhhc2ggbG9jazogZC0+YXJnby0+bG9jawo+ ID4gKyAqIEhvbGRpbmcgYSByZWFkIGxvY2sgb24gTDIgcHJvdGVjdHMgdGhlIHJpbmcgaGFzaCB0 YWJsZSBhbmQKPiA+ICsgKiB0aGUgZWxlbWVudHMgaW4gdGhlIGhhc2hfdGFibGUgZC0+YXJnby0+ cmluZ19oYXNoLCBhbmQKPiA+ICsgKiB0aGUgbm9kZSBhbmQgaWQgZmllbGRzIGluIHN0cnVjdCBh cmdvX3JpbmdfaW5mbyBpbiB0aGUKPiA+ICsgKiBoYXNoIHRhYmxlLgo+ID4gKyAqIEhvbGRpbmcg YSB3cml0ZSBsb2NrIG9uIEwyIHByb3RlY3RzIGFsbCBvZiB0aGUgZWxlbWVudHMgb2YKPiA+ICsg KiBzdHJ1Y3QgYXJnb19yaW5nX2luZm8uCj4gPiArICoKPiA+ICsgKiBUbyB0YWtlIEwyIHlvdSBt dXN0IGFscmVhZHkgaGF2ZSBSKEwxKS4gVyhMMSkgaW1wbGllcyBXKEwyKSBhbmQgTDMuCj4gPiAr ICoKPiA+ICsgKiBMMyA6IFRoZSByaW5naW5mbyBsb2NrOiBhcmdvX3JpbmdfaW5mbyAqcmluZ2lu Zm87IHJpbmdpbmZvLT5sb2NrCj4gPiArICogUHJvdGVjdHMgYWxsIHRoZSBmaWVsZHMgd2l0aGlu IHRoZSBhcmdvX3JpbmdfaW5mbywgYXNpZGUgZnJvbSB0aGUgb25lcyB0aGF0Cj4gPiArICogTDIg YWxyZWFkeSBwcm90ZWN0czogbm9kZSwgaWQsIGxvY2suCj4gPiArICoKPiA+ICsgKiBUbyBhcXVp cmUgTDMgeW91IG11c3QgYWxyZWFkeSBoYXZlIFIoTDIpLiBXKEwyKSBpbXBsaWVzIEwzLgo+ID4g KyAqCj4gPiArICogTHNlbmQgOiBUaGUgcGVyLWRvbWFpbiBzaW5nbGUtc2VuZGVyIHBhcnRuZXIg cmluZ3MgbG9jazogZC0+YXJnby0+c2VuZF9sb2NrCj4gPiArICogUHJvdGVjdHMgdGhlIHBlci1k b21haW4gc2VuZCBoYXNoIHRhYmxlIDogZC0+YXJnby0+c2VuZF9oYXNoCj4gPiArICogYW5kIHRo ZSBlbGVtZW50cyBpbiB0aGUgaGFzaCB0YWJsZSwgYW5kIHRoZSBub2RlIGFuZCBpZCBmaWVsZHMK PiA+ICsgKiBpbiBzdHJ1Y3QgYXJnb19zZW5kX2luZm8gaW4gdGhlIGhhc2ggdGFibGUuCj4gPiAr ICoKPiA+ICsgKiBUbyB0YWtlIExzZW5kLCB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMSkuIFco TDEpIGltcGxpZXMgTHNlbmQuCj4gPiArICogRG8gbm90IGF0dGVtcHQgdG8gYWNxdWlyZSBhIEwy IG9uIGFueSBkb21haW4gYWZ0ZXIgdGFraW5nIGFuZCB3aGlsZQo+ID4gKyAqIGhvbGRpbmcgYSBM c2VuZCBsb2NrIC0tIGFjcXVpcmUgdGhlIEwyIChpZiBvbmUgaXMgbmVlZGVkKSBiZWZvcmVoYW5k Lgo+ID4gKyAqCj4gPiArICogTHdpbGRjYXJkIDogVGhlIHBlci1kb21haW4gd2lsZGNhcmQgcGVu ZGluZyBsaXN0IGxvY2s6IGQtPmFyZ28tPndpbGRjYXJkX2xvY2sKPiA+ICsgKiBQcm90ZWN0cyB0 aGUgcGVyLWRvbWFpbiBsaXN0IG9mIG91dHN0YW5kaW5nIHNpZ25hbHMgZm9yIHNwYWNlIGF2YWls YWJpbGl0eQo+ID4gKyAqIG9uIHdpbGRjYXJkIHJpbmdzLgo+ID4gKyAqCj4gPiArICogVG8gdGFr ZSBMd2lsZGNhcmQsIHlvdSBtdXN0IGFscmVhZHkgaGF2ZSBSKEwxKS4gVyhMMSkgaW1wbGllcyBM d2lsZGNhcmQuCj4gPiArICogTm8gb3RoZXIgbG9ja3MgYXJlIGFjcXVpcmVkIGFmdGVyIG9idGFp bmluZyBMd2lsZGNhcmQuCj4gPiArICovCj4KPiBJTU8gSSB0aGluayB0aGUgbG9ja2luZyBpcyBv dmVybHkgY29tcGxpY2F0ZWQsIGFuZCB0aGVyZSdzIG5vCj4gcmVhc29uaW5nIHdoeSBzbyBtYW55 IGxvY2tzIGFyZSBuZWVkZWQuIFdvdWxkbid0IGl0IGJlIGVub3VnaCB0byBzdGFydAo+IHdpdGgg YSBzaW5nbGUgbG9jayB0aGF0IHByb3RlY3RzIHRoZSB3aG9sZSBkLT5hcmdvIGV4aXN0ZW5jZSBh bmQKPiBjb250ZW50cz8KPgo+IEkgd291bGQgc3RhcnQgd2l0aCBhIHZlcnkgc2ltcGxlIChhcyBz aW1wbGUgYXMgcG9zc2libGUpIGxvY2tpbmcKPiBzdHJ1Y3R1cmUgYW5kIGdvIGltcHJvdmluZyBm cm9tIHRoZXJlIGlmIHRoZXJlIGFyZSBwZXJmb3JtYW5jZQo+IGJvdHRsZW5lY2tzLgoKSXQgZGVm aW5pdGVseSBkb2Vzbid0IGhlbHAgd2hlbiB0aGVyZSdzIGFuIGV4dHJhIGxvY2sgbHlpbmcgYXJv dW5kCmp1c3QgdG8gYmUgY29uZnVzaW5nLiBTb3JyeS4KClRoZSBsb2NraW5nIGRpc2NpcGxpbmUg aW4gdGhpcyBjb2RlIGlzIGNoYWxsZW5naW5nIGFuZCB5b3UgYXJlIHJpZ2h0IHRoYXQKdGhlcmUg aGFzbid0IGEgZXhwbGFuYXRpb24gZ2l2ZW4gYXMgdG8gX3doeV8gdGhlcmUgYXJlIHRoZSBsb2Nr cyB0aGF0IHRoZXJlCmFyZS4gSSB3aWxsIGZpeCB0aGF0LiBJIGNhbiBhbHNvIHJldmlldyB0aGUg cGxhY2VtZW50IG9mIHRoZSBBU1NFUlRzIHRoYXQKY2hlY2sgKGFuZCBkb2N1bWVudCkgdGhlIGxv Y2tzIHdpdGhpbiB0aGUgY29kZSwgaWYgdGhhdCBoZWxwcy4KClRoZSBjdXJyZW50IGxvY2tpbmcg Y29tbWVudHMgZGVzY3JpYmUgdGhlIGhvdywgYnV0IHRoZSB3aHkgaGFzbid0IGJlZW4KY292ZXJl ZCBzbyBmYXIgYW5kIGl0IGlzIG5lZWRlZC4gVGhlIHVucmVhc29uYWJseS1zaG9ydCB2ZXJzaW9u IGlzOiB0aGlzCmNvZGUgaXMgKmhvdCogd2hlbiB0aGUgY29tbXVuaWNhdGlvbiBwYXRocyBhcmUg aW4gdXNlIC0tIGl0IG9wZXJhdGVzIHRoZQpkYXRhIHBhdGggLS0gYW5kIHRoZXJlIG5lZWRzIHRv IGJlIGlzb2xhdGlvbiBmb3IgcGF0aHMgdXNpbmcgcmluZ3MgZnJvbSB0aGUKcG90ZW50aWFsbHkg bWFsaWNpb3VzIG9yIGRpc3J1cHRpdmUgYWN0aXZpdGllcyBvZiBvdGhlciBkb21haW5zLCBvciBl dmVuCm90aGVyIHZjcHVzIG9mIHRoZSBzYW1lIGRvbWFpbiBvcGVyYXRpbmcgb3RoZXIgcmluZ3Mu CgpJIGFtIGNvbmZpZGVudCB0aGF0IHRoZSBsb2NraW5nICh0aGF0IGFjdHVhbGx5IGdldHMgb3Bl cmF0ZWQpIGlzIGNvcnJlY3QgYW5kCmp1c3RpZmllZCB0aG91Z2gsIGFuZCBJIGhvcGUgdGhhdCBh ZGRpbmcgc29tZSBuZXcgY2xlYXIgZG9jdW1lbnRhdGlvbiBmb3IgaXQKY2FuIGFkZHJlc3MgdGhp cy4KCj4gPiAgLyogQ2hhbmdlIHRoaXMgdG8gI2RlZmluZSBBUkdPX0RFQlVHIGhlcmUgdG8gZW5h YmxlIG1vcmUgZGVidWcgbWVzc2FnZXMgKi8KPiA+ICAjdW5kZWYgQVJHT19ERUJVRwo+ID4gQEAg LTI4LDEwICsxOTgsMjk5IEBACj4gPiAgI2RlZmluZSBhcmdvX2RwcmludGsoZm9ybWF0LCAuLi4g KSAoKHZvaWQpMCkKPiA+ICAjZW5kaWYKPiA+Cj4gPiArc3RhdGljIHZvaWQKPiA+ICtyaW5nX3Vu bWFwKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQo+ID4gK3sKPiA+ICsgICAgdW5z aWduZWQgaW50IGk7Cj4gPiArCj4gPiArICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmcg KQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IHJp bmdfaW5mby0+bm1mbnM7IGkrKyApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlmICggIXJpbmdf aW5mby0+bWZuX21hcHBpbmdbaV0gKQo+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKyAg ICAgICAgaWYgKCByaW5nX2luZm8tPm1mbnMgKQo+ID4gKyAgICAgICAgICAgIGFyZ29fZHByaW50 ayhYRU5MT0dfRVJSICJhcmdvOiB1bm1hcHBpbmcgcGFnZSAlIlBSSV9tZm4iIGZyb20gJXBcbiIs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KHJpbmdfaW5mby0+bWZuc1tpXSks Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0p Owo+ID4gKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+bWZuX21h cHBpbmdbaV0pOwo+ID4gKyAgICAgICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSA9IE5VTEw7 Cj4gPiArICAgIH0KPgo+IEFzIG5vdGVkIGluIGFub3RoZXIgcGF0Y2gsIEkgd291bGQgY29uc2lk ZXIgbWFwcGluZyB0aGlzIGluIGNvbnRpZ3VvdXMKPiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgdXNp bmcgdm1hcCwgYnV0IEknbSBub3QgZ29pbmcgdG8gaW5zaXN0LgoKVGhhbmtzIC0gSSB3aWxsIGxv b2sgYXQgd2hhdCBpcyBpbnZvbHZlZCB0byBkbyBpdCwgYnV0IEkgbWF5IHdlbGwgaGF2ZQp0byBs ZWF2ZSBpdCBhcy1pcyBmb3Igbm93LgoKPgo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZAo+ ID4gK3dpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZG9taWRfdCBkb21haW5faWQsIHN0cnVj dCBwZW5kaW5nX2VudCAqZW50KQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IGdl dF9kb21haW5fYnlfaWQoZG9tYWluX2lkKTsKPgo+IE5ld2xpbmUuCgphY2sKCj4KPiA+ICsgICAg aWYgKCAhZCApCj4gPiArICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgIGlmICggZC0+YXJn byApCj4KPiBEb24ndCB5b3UgbmVlZCB0byBwaWNrIGQtPmFyZ29fbG9jayBoZXJlIHRvIHByZXZl bnQgZC0+YXJnbyBmcm9tIGJlaW5nCj4gcmVtb3ZlZCB1bmRlciB5b3VyIGZlZXQ/CgpObywgYmVj YXVzZSB3aWxkY2FyZF9wZW5kaW5nX2xpc3RfcmVtb3ZlIGlzIGNhbGxlZCBmcm9tOgoKKiBwZW5k aW5nX2ZpbmQgYW5kIHBlbmRpbmdfY2FuY2VsOgogIHdpdGggYm90aCBSKEwyKSBhbmQgTDMgaGVs ZCAob2YgYSBkaWZmZXJlbnQgZG9tYWluLCBidXQKICB0aGF0J3Mgb2spLCB3aGljaCBtZWFucyBS KEwxKSBpcyBoZWxkLAogIHNvIGQtPmFyZ28gaXMgc2FmZSBpbiB3aWxkY2FyZF9wZW5kaW5nX2xp c3RfcmVtb3ZlLgoKKiBwZW5kaW5nX3JlbW92ZV9hbGw6CiAgd2hpY2ggaXMgb25seSBjYWxsZWQg ZnJvbSByaW5nX3JlbW92ZV9pbmZvLAogIHdoaWNoIGhhcyBBU1NFUlRTIHRoYXQgZWl0aGVyIFIo TDEpIG9yIFIoTDIpIGlzIGhlbGQsCiAgYW5kIFIoTDIpIG1lYW5zIFIoTDEpIG11c3QgYWxyZWFk eSBiZSBoZWxkIChmb2xsb3dpbmcgcHJvdG9jb2wpLgogIHNvIGQtPmFyZ28gaXMgc2FmZSBpbiB3 aWxkY2FyZF9wZW5kaW5nX2xpc3RfcmVtb3ZlLgoKPgo+ID4gKyAgICB7Cj4gPiArICAgICAgICBz cGluX2xvY2soJmQtPmFyZ28tPndpbGRjYXJkX2xvY2spOwo+ID4gKyAgICAgICAgaGxpc3RfZGVs KCZlbnQtPndpbGRjYXJkX25vZGUpOwo+ID4gKyAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyZ28t PndpbGRjYXJkX2xvY2spOwo+ID4gKyAgICB9Cj4gPiArICAgIHB1dF9kb21haW4oZCk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcGVuZGluZ19yZW1vdmVfYWxsKHN0cnVjdCBh cmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGhsaXN0X25v ZGUgKm5vZGUsICpuZXh0Owo+ID4gKyAgICBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudDsKPiA+ICsK PiA+ICsgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZyaW5n X2luZm8tPnBlbmRpbmcsIG5vZGUpCj4KPiBBcyBhIHNpZGUgbm90ZSwgaXQgbWlnaHQgYmUgaW50 ZXJlc3RpbmcgdG8gaW50cm9kdWNlIGEgaGVscGVyIGxpa2UKPiBobGlzdF9maXJzdF9lbnRyeV9v cl9udWxsLCB0aGF0IHdvdWxkIHJlbW92ZSB0aGUgbmVlZCB0byBoYXZlIGFuIGV4dHJhCj4gKm5l eHQgZWxlbWVudCwgYW5kIHdvdWxkIGJlIHRoZSBtb3JlIG5hdHVyYWwgd2F5IHRvIGRyYWluIGEg aGxpc3QKPiAoc2VlaW5nIHRoYXQgeW91IGhhdmUgdGhlIHNhbWUgcGF0dGVybiBpbgo+IHdpbGRj YXJkX3JpbmdzX3BlbmRpbmdfcmVtb3ZlKS4KPgo+ID4gKyAgICB7Cj4gPiArICAgICAgICBpZiAo IHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCA9PSBYRU5fQVJHT19ET01JRF9BTlkgKQo+ID4gKyAg ICAgICAgICAgIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZW50LT5kb21haW5faWQsIGVu dCk7Cj4gPiArICAgICAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7Cj4gPiArICAgICAgICB4ZnJl ZShlbnQpOwo+ID4gKyAgICB9Cj4gPiArICAgIHJpbmdfaW5mby0+bnBlbmRpbmcgPSAwOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZAo+ID4gK3dpbGRjYXJkX3JpbmdzX3BlbmRpbmdfcmVt b3ZlKHN0cnVjdCBkb21haW4gKmQpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAq bm9kZSwgKm5leHQ7Cj4gPiArICAgIHN0cnVjdCBwZW5kaW5nX2VudCAqZW50Owo+ID4gKwo+ID4g KyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZhcmdvX2xvY2spKTsKPiA+ICsKPiA+ICsg ICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZkLT5hcmdvLT53 aWxkY2FyZF9wZW5kX2xpc3QsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZSkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgaGxpc3RfZGVsKCZlbnQtPm5vZGUpOwo+ID4gKyAg ICAgICAgZW50LT5yaW5nX2luZm8tPm5wZW5kaW5nLS07Cj4gPiArICAgICAgICBobGlzdF9kZWwo JmVudC0+d2lsZGNhcmRfbm9kZSk7Cj4gPiArICAgICAgICB4ZnJlZShlbnQpOwo+ID4gKyAgICB9 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcmluZ19yZW1vdmVfbWZucyhjb25z dCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKPiA+ ICt7Cj4gPiArICAgIHVuc2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICBBU1NFUlQocndfaXNf d3JpdGVfbG9ja2VkKCZkLT5hcmdvLT5sb2NrKSB8fAo+ID4gKyAgICAgICAgICAgcndfaXNfd3Jp dGVfbG9ja2VkKCZhcmdvX2xvY2spKTsKPgo+IEkgdGhpbmsgdGhlIGFib3ZlIHJlcXVpcmVzIGEg Y29tbWVudCBvZiB3aHkgdHdvIGRpZmZlcmVudCBsb2NrcyBhcmUKPiB1c2VkIHRvIHByb3RlY3Qg dGhlIHJpbmcgbWZucywgYW5kIHdoeSBqdXN0IGhhdmluZyBvbmUgb2YgdGhlbSBsb2NrZWQKPiBp cyBlbm91Z2guCgphY2ssIEkgbmVlZCB0byBhZGQgZnVydGhlciBsb2NraW5nIGRvY3MuCgo+Cj4g PiArCj4gPiArICAgIGlmICggIXJpbmdfaW5mby0+bWZucyApCj4gPiArICAgICAgICByZXR1cm47 Cj4gPiArCj4gPiArICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmcgKQo+ID4gKyAgICB7 Cj4gPiArICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKPiA+ICsgICAgICAgIHJldHVybjsK PiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICByaW5nX3VubWFwKHJpbmdfaW5mbyk7Cj4gPiArCj4g PiArICAgIGZvciAoIGkgPSAwOyBpIDwgcmluZ19pbmZvLT5ubWZuczsgaSsrICkKPiA+ICsgICAg ICAgIGlmICggIW1mbl9lcShyaW5nX2luZm8tPm1mbnNbaV0sIElOVkFMSURfTUZOKSApCj4gPiAr ICAgICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3BhZ2UocmluZ19pbmZvLT5tZm5z W2ldKSk7Cj4gPiArCj4gPiArICAgIHhmcmVlKHJpbmdfaW5mby0+bWZucyk7Cj4gPiArICAgIHJp bmdfaW5mby0+bWZucyA9IE5VTEw7Cj4KPiBYZW4gaGFzIGEgaGFuZGx5IG1hY3JvIGZvciB0aGlz LCBYRlJFRS4gVGhhdCB3b3VsZCBmcmVlIHRoZSBtZW1vcnkgYW5kCj4gYXNzaWduIHRoZSBwb2lu dGVyIHRvIE5VTEwuCgp0aGFua3MsIHRoYXQncyBncmVhdCAtIGRvbmUKCj4KPiA+ICsgICAgcmlu Z19pbmZvLT5ucGFnZSA9IDA7Cj4gPiArICAgIHhmcmVlKHJpbmdfaW5mby0+bWZuX21hcHBpbmcp Owo+ID4gKyAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nID0gTlVMTDsKPiA+ICsgICAgcmluZ19p bmZvLT5ubWZucyA9IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcmluZ19y ZW1vdmVfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdf aW5mbykKPgo+IEkgdGhpbmsgdGhlIGRvbWFpbiBwYXJhbWV0ZXIgY2FuIGJlIGNvbnN0aWZ5ZWQg aGVyZSwgc2luY2UgaXQncyBvbmx5Cj4gdXNlZCBieSByaW5nX3JlbW92ZV9tZm5zbmQgdGhhdCBm dW5jdGlvbiBhbHJlYWR5IGV4cGVjdHMgYSBjb25zdAo+IGRvbWFpbiBzdHJ1Y3QuCgphY2ssIHll cywgdGhhbmtzLgoKPiA+ICsKPiA+ICBsb25nCj4gPiAgZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQg Y21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCj4gPiAgICAgICAgICAgICBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzIsIHVuc2lnbmVkIGxvbmcgYXJnMywKPiA+ ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnNCkKPiA+ICB7Cj4gPiAtICAgIHJldHVybiAt RU5PU1lTOwo+ID4gKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsK PiA+ICsgICAgbG9uZyByYyA9IC1FRkFVTFQ7Cj4gPiArCj4gPiArICAgIGFyZ29fZHByaW50aygi LT5kb19hcmdvX29wKCV1LCVwLCVwLCVkLCVkKVxuIiwgY21kLAo+ID4gKyAgICAgICAgICAgICAg ICAgKHZvaWQgKilhcmcxLnAsICh2b2lkICopYXJnMi5wLCAoaW50KSBhcmczLCAoaW50KSBhcmc0 KTsKPiA+ICsKPiA+ICsgICAgaWYgKCB1bmxpa2VseSghb3B0X2FyZ29fZW5hYmxlZCkgKQo+ID4g KyAgICB7Cj4gPiArICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+ID4gKyAgICAgICAgcmV0dXJu IHJjOwo+Cj4gV2h5IG5vdCBqdXN0ICdyZXR1cm4gLUVPUE5PVFNVUFA7Jz8KCmdvb2QgcG9pbnQg LSB3aWxsIGRvCgo+ID4gKwo+ID4gK2ludAo+ID4gK2FyZ29faW5pdChzdHJ1Y3QgZG9tYWluICpk KQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGFyZ29fZG9tYWluICphcmdvOwo+ID4gKwo+ID4gKyAg ICBpZiAoICFvcHRfYXJnb19lbmFibGVkICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgYXJnb19k cHJpbnRrKCJhcmdvIGRpc2FibGVkLCBkb21pZDogJWRcbiIsIGQtPmRvbWFpbl9pZCk7Cj4gPiAr ICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBhcmdvX2RwcmludGso ImluaXQ6IGRvbWlkOiAlZFxuIiwgZC0+ZG9tYWluX2lkKTsKPiA+ICsKPiA+ICsgICAgYXJnbyA9 IHhtYWxsb2Moc3RydWN0IGFyZ29fZG9tYWluKTsKPiA+ICsgICAgaWYgKCAhYXJnbyApCj4gPiAr ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsgICAgd3JpdGVfbG9jaygmYXJnb19s b2NrKTsKPiA+ICsKPiA+ICsgICAgYXJnb19kb21haW5faW5pdChhcmdvKTsKPiA+ICsKPiA+ICsg ICAgZC0+YXJnbyA9IGFyZ287Cj4KPiBXaGVyZSdzIHRoZSBkLT5hcmdvX2xvY2sgaW5pdGlhbGl6 YXRpb24/CgpJdCB3YXMgYWRkZWQgdG8gZG9tYWluLmMgaW4gdGhpcyBwYXRjaCwgYnV0IHRoZXJl IGlzIG5vdyBubyBuZWVkLCB0aGF0IGxvY2sKaXMgZ29uZS4gVGhhbmtzIGZvciB0aGUgY2F0Y2gu Cgo+Cj4gPiArCj4gPiArICAgIHdyaXRlX3VubG9jaygmYXJnb19sb2NrKTsKPiA+ICsKPiA+ICsg ICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQKPiA+ICthcmdvX2Rlc3Ryb3koc3Ry dWN0IGRvbWFpbiAqZCkKPiA+ICt7Cj4gPiArICAgIEJVR19PTighZC0+aXNfZHlpbmcpOwo+ID4g Kwo+ID4gKyAgICB3cml0ZV9sb2NrKCZhcmdvX2xvY2spOwo+ID4gKwo+ID4gKyAgICBhcmdvX2Rw cmludGsoImRlc3Ryb3k6IGRvbWlkICVkIGQtPmFyZ289JXBcbiIsIGQtPmRvbWFpbl9pZCwgZC0+ YXJnbyk7Cj4gPiArCj4gPiArICAgIGlmICggZC0+YXJnbyApCj4gPiArICAgIHsKPiA+ICsgICAg ICAgIGRvbWFpbl9yaW5nc19yZW1vdmVfYWxsKGQpOwo+ID4gKyAgICAgICAgcGFydG5lcl9yaW5n c19yZW1vdmUoZCk7Cj4gPiArICAgICAgICB3aWxkY2FyZF9yaW5nc19wZW5kaW5nX3JlbW92ZShk KTsKPiA+ICsgICAgICAgIHhmcmVlKGQtPmFyZ28pOwo+ID4gKyAgICAgICAgZC0+YXJnbyA9IE5V TEw7Cj4gPiArICAgIH0KPiA+ICsgICAgd3JpdGVfdW5sb2NrKCZhcmdvX2xvY2spOwo+ID4gK30K PiA+ICsKPiA+ICt2b2lkCj4gPiArYXJnb19zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCj4g PiArewo+ID4gKyAgICB3cml0ZV9sb2NrKCZhcmdvX2xvY2spOwo+ID4gKwo+ID4gKyAgICBhcmdv X2RwcmludGsoInNvZnQgcmVzZXQgZD0lZCBkLT5hcmdvPSVwXG4iLCBkLT5kb21haW5faWQsIGQt PmFyZ28pOwo+ID4gKwo+ID4gKyAgICBpZiAoIGQtPmFyZ28gKQo+ID4gKyAgICB7Cj4gPiArICAg ICAgICBkb21haW5fcmluZ3NfcmVtb3ZlX2FsbChkKTsKPiA+ICsgICAgICAgIHBhcnRuZXJfcmlu Z3NfcmVtb3ZlKGQpOwo+ID4gKyAgICAgICAgd2lsZGNhcmRfcmluZ3NfcGVuZGluZ19yZW1vdmUo ZCk7Cj4gPiArCj4gPiArICAgICAgICBpZiAoICFvcHRfYXJnb19lbmFibGVkICkKPiA+ICsgICAg ICAgIHsKPiA+ICsgICAgICAgICAgICB4ZnJlZShkLT5hcmdvKTsKPiA+ICsgICAgICAgICAgICBk LT5hcmdvID0gTlVMTDsKPgo+IENhbiBvcHRfYXJnb19lbmFibGVkIGNoYW5nZSBkdXJpbmcgcnVu dGltZT8KCk5vdCBhdCB0aGUgbW9tZW50LCBuby4gSXQgc2hvdWxkIGJlIG1hZGUgY2hhbmdlYWJs ZQpsYXRlciwgYnV0IGtlZXBpbmcgaXQgZml4ZWQgYXNzaXN0cyB3aXRoIGRlcmlza2luZyB0aGlz IGZvcgpyZWxlYXNlIGNvbnNpZGVyYXRpb24uCgo+Cj4gPiArICAgICAgICB9Cj4gPiArICAgICAg ICBlbHNlCj4gPiArICAgICAgICAgICAgYXJnb19kb21haW5faW5pdChkLT5hcmdvKTsKPiA+ICsg ICAgfQo+ID4gKwo+ID4gKyAgICB3cml0ZV91bmxvY2soJmFyZ29fbG9jayk7Cj4gPiAgfQo+ID4g ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCj4g PiBpbmRleCBjNjIzZGFlLi45NTk2ODQwIDEwMDY0NAo+ID4gLS0tIGEveGVuL2NvbW1vbi9kb21h aW4uYwo+ID4gKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwo+ID4gQEAgLTMyLDYgKzMyLDcgQEAK PiA+ICAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+Cj4gPiAgI2luY2x1ZGUgPHhlbi94ZW5v cHJvZi5oPgo+ID4gICNpbmNsdWRlIDx4ZW4vaXJxLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9hcmdv Lmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS9kZWJ1Z2dlci5oPgo+ID4gICNpbmNsdWRlIDxhc20vcDJt Lmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KPiA+IEBAIC0yNzcsNiArMjc4LDEw IEBAIHN0YXRpYyB2b2lkIF9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQo+ID4KPiA+ ICAgICAgeGZyZWUoZC0+cGJ1Zik7Cj4gPgo+ID4gKyNpZmRlZiBDT05GSUdfQVJHTwo+ID4gKyAg ICBhcmdvX2Rlc3Ryb3koZCk7Cj4gPiArI2VuZGlmCj4KPiBJbnN0ZWFkIG9mIGFkZGluZyBzdWNo IGlmZGVmcyB5b3UgY291bGQgcHJvdmlkZSBkdW1teSBhcmdvX2Rlc3Ryb3kKPiBpbmxpbmUgZnVu Y3Rpb25zIGluIGFyZ28uaCB3aGVuIENPTkZJR19BUkdPIGlzIG5vdCBzZXQuCgphY2ssIGhhdmUg ZG9uZSB0aGlzLgoKVGhhbmtzLAoKQ2hyaXN0b3BoZXIKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=