From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v7 07/15] argo: implement the register op Date: Wed, 30 Jan 2019 20:28:12 -0800 Message-ID: <1548908900-1128-8-git-send-email-christopher.w.clark@gmail.com> References: <1548908900-1128-1-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 1gp3yF-0007f2-Mp for xen-devel@lists.xenproject.org; Thu, 31 Jan 2019 04:28:59 +0000 Received: by mail-it1-x134.google.com with SMTP id c9so1982904itj.1 for ; Wed, 30 Jan 2019 20:28:56 -0800 (PST) In-Reply-To: <1548908900-1128-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhlIHJlZ2lzdGVyIG9wIGlzIHVzZWQgYnkgYSBkb21haW4gdG8gcmVnaXN0ZXIgYSByZWdpb24g b2YgbWVtb3J5IGZvcgpyZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBlaXRoZXIgYSBzcGVjaWZpZWQg b3RoZXIgZG9tYWluLCBvciwgaWYgc3BlY2lmeWluZyBhCndpbGRjYXJkLCBhbnkgZG9tYWluLgoK VGhpcyBvcGVyYXRpb24gY3JlYXRlcyBhIG1hcHBpbmcgd2l0aGluIFhlbidzIHByaXZhdGUgYWRk cmVzcyBzcGFjZSB0aGF0CndpbGwgcmVtYWluIHJlc2lkZW50IGZvciB0aGUgbGlmZXRpbWUgb2Yg dGhlIHJpbmcuIEluIHN1YnNlcXVlbnQgY29tbWl0cywKdGhlIGh5cGVydmlzb3Igd2lsbCB1c2Ug dGhpcyBtYXBwaW5nIHRvIGNvcHkgZGF0YSBmcm9tIGEgc2VuZGluZyBkb21haW4gaW50bwp0aGlz IHJlZ2lzdGVyZWQgcmluZywgbWFraW5nIGl0IGFjY2Vzc2libGUgdG8gdGhlIGRvbWFpbiB0aGF0 IHJlZ2lzdGVyZWQgdGhlCnJpbmcgdG8gcmVjZWl2ZSBkYXRhLgoKV2lsZGNhcmQgYW55LXNlbmRl ciByaW5ncyBhcmUgZGVmYXVsdCBkaXNhYmxlZCBhbmQgcmVnaXN0cmF0aW9uIHdpbGwgYmUKcmVm dXNlZCB3aXRoIEVQRVJNIHVubGVzcyB0aGV5IGhhdmUgYmVlbiBzcGVjaWZpY2FsbHkgZW5hYmxl ZCB3aXRoIHRoZQpuZXcgbWFjLXBlcm1pc3NpdmUgZmxhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBh cmdvIGJvb3Qgb3B0aW9uIGhlcmUuIFRoZQpyZWFzb24gd2h5IHRoZSBkZWZhdWx0IGZvciB3aWxk Y2FyZCByaW5ncyBpcyAnZGVueScgaXMgdGhhdCB0aGVyZSBpcwpjdXJyZW50bHkgbm8gbWVhbnMg dG8gcHJvdGVjdCB0aGUgcmluZyBmcm9tIERvUyBieSBhIG5vaXN5IGRvbWFpbgpzcGFtbWluZyB0 aGUgcmluZywgYWZmZWN0aW5nIG90aGVyIGRvbWFpbnMgYWJpbGl0eSB0byBzZW5kIHRvIGl0LiBU aGlzCndpbGwgYmUgYWRkcmVzc2VkIHdpdGggWFNNIHBvbGljeSBjb250cm9scyBpbiBzdWJzZXF1 ZW50IHdvcmsuCgpTaW5jZSBkZW55aW5nIGFjY2VzcyB0byBhbnktc2VuZGVyIHJpbmdzIGlzIGEg c2lnbmlmaWNhbnQgZnVuY3Rpb25hbApjb25zdHJhaW50LCB0aGUgbmV3IG9wdGlvbiAibWFjLXBl cm1pc3NpdmUiIGZvciB0aGUgYXJnbyBib290cGFyYW0KZW5hYmxlcyBvdmVycmlkaW5nIHRoaXMu IGVnOiAiYXJnbz0xLG1hYy1wZXJtaXNzaXZlPTEiCgpUaGUgcDJtIHR5cGUgb2YgdGhlIG1lbW9y eSBzdXBwbGllZCBieSB0aGUgZ3Vlc3QgZm9yIHRoZSByaW5nIG11c3QgYmUKcDJtX3JhbV9ydyBh bmQgdGhlIG1lbW9yeSB3aWxsIGJlIHBpbm5lZCBhcyBQR1Rfd3JpdGFibGVfcGFnZSB3aGlsZSB0 aGUgcmluZwppcyByZWdpc3RlcmVkLgoKVGhpcyBoeXBlcmNhbGwgb3AgYW5kIGl0cyBpbnRlcmZh Y2UgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgNEstc2l6ZWQgcGFnZXMuCgpTaWduZWQtb2ZmLWJ5 OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3BoZXIuY2xhcms2QGJhZXN5c3RlbXMuY29tPgpU ZXN0ZWQtYnk6IENocmlzIFBhdHRlcnNvbiA8cGF0dGVyc29uY0BhaW5mb3NlYy5jb20+Ci0tLQp2 NiAjMDkgSmFuOiBhZGQgY29tcGF0IEFCSQp2NiAjMDcgSmFuOiBhZGQgYXJnb19tZXNzYWdlX2hl YWRlciB0byB4bGF0LmxzdCBhbmQgaW52b2tlIHRoZSBDSEVDSwp2NiAjMDcgSmFuOiB4bGF0Lmxz dDogbW92ZSBhcmdvIHN0cnVjdCBlbnRyaWVzIHRvIGFscGhhYmV0aWNhbCBwb3NpdGlvbgp2NSAj MDcgUm9nZXI6IGFkZCBCVUlMRF9CVUdfT04gZm9yIE1BWF9SSU5HX1NJWkUsIFBBR0VfU0laRQp2 NSAjMDcgUm9nZXI6IGdwcmludGsoWEVOTE9HX0VSUiwuLiBmb3IgZGVuaWVkIGV4aXN0aW5nIHJp bmcKdjU6IGFkZCBjb21wYXQgdmFsaWRhdGlvbiBtYWNyb3MgdG8gcHJpbWFyeSBzb3VyY2UgZmls ZTogY29tbW9uL2FyZ28uYwp2NSA6IGNvbnZlcnQgaHlwZXJjYWxsIGFyZyBzdHJ1Y3RzIHRvIHN0 cnVjdCBmb3JtIGZvciBjb21wYXQgY2hlY2tpbmcKdjU6IGRyb3BwZWQgZXh0ZXJuYWwgZmlsZSBm b3IgY29tcGF0IG1hY3JvczogY29tbW9uL2NvbXBhdC9hcmdvLmMKdjQgdjMjMDcgSmFuOiBzaHJp bmsgY3JpdGljYWwgc2VjdGlvbnMgaW4gcmVnaXN0ZXJfcmluZwp2NCB2MyMwNyBKYW46IHJldmlz ZSByZWdpc3RlciBmbGFnIE1BU0sgaW4gaGVhZGVyLCBub3RlIDMyLWJpdG5lc3Mgb2YgYXJncwp2 NCBmZWVkYmFjazogdXNlIHN0YW5kYXJkIGRhdGEgc3RydWN0dXJlcyBwZXIgY29tbW9uIGNvZGUs IG5vdCBsb29wIG1hY3Jvcwp2NCBBbmRyZXc6IHVzZSB0aGUgc2luZ2xlIGFyZ28gY29tbWFuZCBs aW5lIG9wdGlvbiBsaXN0CnY0ICMwNyBKYW46IHJld3JpdGUgZmluZF9yaW5nX21mbiB0byB1c2Ug Y2hlY2tfZ2V0X3BhZ2VfZnJvbV9nZm4KdjQgIzA3IFJvZ2VyOiBhZGQgRklYTUUgdG8gcmluZ19t YXBfcGFnZSBmb3Igdm1hcCBjb250aWd1b3VzIHJpbmcgbWFwcGluZwp2MyAjMDcgSmFuOiBjb21t ZW50OiBtaW5pbXVtIHJpbmcgc2l6ZSBpcyBiYXNlZCBvbiBtaW5pbXVtLXNpemVkIG1lc3NhZ2UK djMgIzA0IEFuZHJldzogcmVmZXJlbmNlIENPTkZJR19BUkdPIGluIHRoZSBjb21tYW5kIGxpbmUg ZG9jdW1lbnRhdGlvbgp2MyAjMDcgSmFuOiByZWdpc3Rlcl9yaW5nOiBmb2xkIGVsc2UsIGlmIGlu dG8gZWxzZS1pZiB0byBkcm9wIGluZGVudAp2MyAjMDcgSmFuOiByZW1vdmUgbm8gbG9uZ2VyIHVz ZWQgZ3Vlc3RfaGFuZGxlX2lzX2FsaWduZWQgbWFjcm9zCnYzICMwNyBKYW46IHJlbW92ZSBkZWFk IGNvZGUgZnJvbSBmaW5kX3JpbmdfbWZucwp2MyAjMDcgSmFuOiBmaXggZm9ybWF0IHN0cmluZyBp bmRlbnRpb24gaW4gcHJpbnRrcwp2MyAjMDcgSmFuOiByZW1vdmUgcmVkdW5kYW50IGJvdW5kcyBj aGVjayBvbiBucGFnZSBpbiBmaW5kX3JpbmdfbWZucwp2MyAjMDggc2VsZi9Sb2dlcjogaW1wcm92 ZSBkcHJpbnRrIG91dHB1dCBpbiBmaW5kX3JpbmdfaW5mbyBsaWtlIGZpbmRfc2VuZF9pbmZvCnYz ICMwNyBKYW46IHJlbmFtZSByaW5nX2ZpbmRfaW5mbyB0byBmaW5kX3JpbmdfaW5mbwp2MyAjMDcg SmFuOiB1c2UgYXJyYXlfaW5kZXhfbm9zcGVjIGluIHJpbmdfbWFwX3BhZ2UKdjMgIzA3IEphbjog Zml4IG51bWVyaWMgZW50cmllcyBpbiBwcmludGsgZm9ybWF0IHN0cmluZ3MKdjMgIzcgSmFuOiBk cm9wIHVubmVlZGVkIHBhcmVudGhlc2VzIGZyb20gUk9VTkRVUF9NRVNTQUdFIGRlZm4KdjMgIzEw IFJvZ2VyOiBtb3ZlIGZpbmQgZnVuY3Rpb25zIHRvIHRvcCBvZiBmaWxlIGFuZCBkcm9wIHByb3Rv dHlwZXMKdjMgIzAzIG1lbGQgY29tcGF0IGNoZWNrIGZvciBoeXBlcmNhbGwgYXJnIHJlZ2lzdGVy IHN0cnVjdAp2MyAjMDQgUm9nZXIvSmFuOiBtYWtlIGxvY2sgbmFtZXMgY2xlYXJlciBhbmQgYXNz ZXJ0IHRoZWlyIHN0YXRlCnYzICMwNCBKYW46IHBvcnQgLT4gYXBvcnQgd2l0aCB0eXBlOyBkaXN0 aW5ndWlzaCBhcmdvIHBvcnQgZnJvbSBldnRjaG4KdjMgZmVlZGJhY2sgIzA3IEVyaWM6IGZpeCBo ZWFkZXIgbWF4IHJpbmcgc2l6ZSBjb21tZW50IHVuaXRzCnYzIGZlZWRiYWNrICMwNCBSb2dlcjog bWZuX21hcHBpbmc6IHZvaWQqIGluc3RlYWQgb2YgdWludDhfdCoKdjMgdXNlICV1IGZvciBwcmlu dGluZyB1bnNpZ25lZCBpbnRzIGluIGZpbmRfcmluZ19tZm5zCnYzIGZlZWRiYWNrICMwNCBKYW46 IHVpbnQzMl90IC0+IHVuc2lnbmVkIGludCBmb3IgbnBhZ2UgaW4gcmVnaXN0ZXJfcmluZwp2MyBm ZWVkYmFjayAjMDQgUm9nZXI6IGRyb3AgbnBhZ2VzIHN0cnVjdCBtZW1iZXIsIGNhbGN1bGF0ZSBm cm9tIGxlbgp2MyA6IHJlZ2lzdGVyX3Jpbmc6IHVpbnQzMl90IC0+IHVuc2lnbmVkIGludCBmb3Ig cHJpdmF0ZV90eF9wdHIKdjMgZmVlZGJhY2sgUm9nZXIvSmFuOiBBU1NFUlQgY3VycmQgaXMgY3Vy cmVudC0+ZG9tYWluIG9yIHVzZSAnZCcgdmFyaWFibGUgbmFtZQp2MyBmZWVkYmFjayAjMDcgUm9n ZXI6IHVzZSBvcHRfYXJnb19tYWNfcGVybWlzc2l2ZSA6IGEgYm9vbGVhbiBvcHQKdjMgZmVlZGJh Y2sgIzA0IFJvZ2VyOiByZW9yZGVyICNpbmNsdWRlcyB0byBhbHBoYWJldGljYWwgb3JkZXIKdjMg ZmVlZGJhY2sgIzA3IFJvZ2VyOiBkcm9wIGNvbW1lbnQgcmU6IEludGVsIEVQVC9BTUQgTlBUIGZv ciB3cml0ZS1vbmx5IG1hcHBpbmcKdjMgZmVlZGJhY2sgIzA3IFJvZ2VyOiBkcm9wIHB0ciBhcml0 aG1ldGljIGluIHVwZGF0ZV90eF9wdHIsIHVzZSByaW5nIHN0cnVjdCBjYXN0CnYzIGZlZWRiYWNr ICMwNyBSb2dlcjogZHJvcCBuZXdsaW5lIGluIHJpbmdfbWFwX3BhZ2UKdjMgZmVlZGJhY2sgIzA3 IFJvZ2VyOiBkcm9wIHVubmVlZGVkIG51bGwgY2hlY2sgYmVmb3JlIHhmcmVlCnYzIGZlZWRiYWNr ICMwNyBSb2dlcjogdXNlIHJldHVybiBhbmQgZHJvcCBvdXQgbGFiZWwgaW4gcmVnaXN0ZXJfcmlu Zwp2MyBTdGVmYW5vOiBhZGQgNEsgcGFnZSBjb25zdHJhaW50IHRvIGhlYWRlciBmaWxlIGNvbW1l bnQgJiBjb21taXQgbXNnCnYzIEp1bGllbi9TdGVmYW5vOiA0SyBncmFudWxhcml0eSBvazogdXNl IDY0LWJpdCBnZm5zIGluIHJlZ2lzdGVyIGludGVyZmFjZQp2MiBzZWxmOiBkaXNhbGxvdyByaW5n IHJlc2l6ZSB2aWEgcmVyZWdpc3Rlcgp2MiBmZWVkYmFjayBKYW46IGRyb3AgY29va2llLCBpbXBs ZW1lbnQgdGVhcmRvd24KdjIgZmVlZGJhY2sgSmFuOiBkcm9wIG1lc3NhZ2UgZnJvbSBhcmdvX21l c3NhZ2Vfb3AKdjIgc2VsZjogbW92ZSBoYXNoX2luZGV4IGZ1bmN0aW9uIGJlbG93IGxvY2tpbmcg Y29tbWVudAp2MiBzZWxmOiBPVkVSSEFVTAp2MiBzZWxmL0phbjogcmVtb3ZlIHVzZSBvZiBtYWdp YyB2ZXJpZmljYXRpb24gZmllbGQgYW5kIHRpZHkgdXAKdjIgc2VsZjogbWVyZ2UgbWF4IGFuZCBt aW4gcmluZyBzaXplIGNoZWNrIGNsYXVzZXMKdjIgZmVlZGJhY2sgdjEjMTMgUm9nZXI6IHVzZSBP Uy1zdXBwbGllZCByb3VuZHVwOyBkcm9wIGZyb20gcHVibGljIGhlYWRlcgp2MiBmZWVkYmFjayAj OSwgSmFuOiB1c2UgdGhlIGFyZ28tbWFjIGJvb3RwYXJhbSBhdCBwb2ludCBvZiBpbnRyb2R1Y3Rp b24KdjIgZmVlZGJhY2sgIzksIEphbjogcmVuYW1lIGJvb3Qgb3B0IHZhcmlhYmxlIHRvIGNvbXBs eSB3aXRoIGNvbnZlbnRpb24KdjIgZmVlZGJhY2sgIzksIEphbjogcmVuYW1lIHRoZSBhcmdvX21h YyBib290cGFyYW0gdG8gYXJnby1tYWMKdjIgZmVlZGJhY2sgIzkgSmFuOiBkb2N1bWVudCBhcmdv IGJvb3Qgb3B0IGluIHhlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KdjEsMiBmZWVkYmFjayBKYW4v Um9nZXIvUGF1bDogZHJvcCBlcnJubyByZXR1cm5pbmcgZ3Vlc3QgYWNjZXNzIGZ1bmN0aW9ucwp2 MSBmZWVkYmFjayBSb2dlciwgSmFuOiBkcm9wIGFyZ28gcHJlZml4IG9uIHN0YXRpYyBmdW5jdGlv bnMKdjEgZmVlZGJhY2sgUm9nZXI6IHMvcGZuL2dmbi8gYW5kIHJldGlyZSBhbHdheXMtNjQtYml0 IHR5cGUKdjIuIGZlZWRiYWNrIEphbjogZG9jdW1lbnQgdGhlIGFyZ28tbWFjIGJvb3Qgb3B0CnYy LiBmZWVkYmFjayBKYW46IHNpbXBsaWZ5IHJlLXJlZ2lzdGVyLCBkcm9wIG1hcHBpbmdzCnYxICMx MyBmZWVkYmFjayBKYW46IHJldmlzZSB1c2Ugb2YgZ3Vlc3RfaGFuZGxlX29rYXkgdnMgX19jb3B5 IG9wcwp2MSAjMTMgZmVlZGJhY2ssIEphbjogcmVnaXN0ZXIgb3AgOiBzL0VDT05OUkVGVVNFRC9F U1JDSC8KdjEgIzUgKCMxMykgZmVlZGJhY2sgUGF1bDogcmVnaXN0ZXIgb3A6IHVzZSBjdXJyZCBp biBkb19tZXNzYWdlX29wCnYxICMxMyBmZWVkYmFjaywgUGF1bDogcmVnaXN0ZXIgb3A6IHVzZSBt Zm5fZXEgY29tcGFyYXRvcgp2MSAjNSAoIzEzKSBmZWVkYmFjayBQYXVsOiByZWdpc3RlciBvcDog dXNlIGN1cnJkIGluIGFyZ29fcmVnaXN0ZXJfcmluZwp2MSAjMTMgZmVlZGJhY2sgUGF1bDogcmVn aXN0ZXIgb3A6IHdoaXRlc3BhY2UsIHVuc2lnbmVkLCBib3VuZHMgY2hlY2sKdjEgIzEzIGZlZWRi YWNrIFBhdWw6IHVzZSBvZiBoZXggaW4gbGltaXQgY29uc3RhbnQgZGVmaW5pdGlvbgp2MSAjMTMg ZmVlZGJhY2sgUGF1bCwgcmVnaXN0ZXIgb3A6IHNldCBubWZucyBvbiBsb29wIHRlcm1pbmF0aW9u CnYxICMxMyBmZWVkYmFjayBQYXVsOiByZWdpc3RlciBvcDogZG8vd2hpbGUgLT4gZ290b3MsIHJl aW5kZW50CnYxIGFyZ29fcmluZ19tYXBfcGFnZTogZHJvcCB1aW50MzJfdCBmb3IgdW5zaWduZWQg aW50CnYxLiAjMTMgZmVlZGJhY2sgSnVsaWVuOiB1c2UgcGFnZSBkZXNjcmlwdG9ycyBpbnN0ZWFk IG9mIGdwZm5zLgogICAtIGFkZHMgQUJJIHN1cHBvcnQgZm9yIHBhZ2VzIHdpdGggZGlmZmVyZW50 IGdyYW51bGFyaXR5Lgp2MSBmZWVkYmFjayAjMTMsIFBhdWw6IGFkanVzdCBsb2cgbGV2ZWwgb2Yg bWVzc2FnZQp2MSBmZWVkYmFjayAjMTMsIFBhdWw6IHVzZSBncHJpbnRrIGZvciBndWVzdC10cmln Z2VyZWQgd2FybmluZwp2MSBmZWVkYmFjayAjMTMsIFBhdWw6IGdwcmludGsgYW5kIFhFTkxPR19E RUJVRyBmb3IgcmluZyByZWdpc3RyYXRpb24KdjEgZmVlZGJhY2sgIzEzLCBQYXVsOiB1c2UgZ3By aW50ayBmb3IgZXJycyBpbiBhcmdvX3JpbmdfbWFwX3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBQYXVs OiB1c2UgRU5PTUVNIGlmIGdsb2JhbCBtYXBwaW5nIGZhaWxzCnYxIGZlZWRiYWNrIFBhdWw6IG92 ZXJmbG93IGNoZWNrIGJlZm9yZSBzaGlmdAp2MTogYWRkIGRlZmluZSBmb3IgY29weV9maWVsZF90 b19ndWVzdF9lcnJubwp2MTogZml4IGdwcmludGsgdXNlIGZvciBBUk0gYXMgaXRzIGRlZm4gZGlz bGlrZXMgc3BsaXQgZm9ybWF0IHN0cmluZ3MKdjE6IHVzZSBjb3B5X2ZpZWxkX3RvX2d1ZXN0X2Vy cm5vCnYxIGZlZWRiYWNrICMxMywgSmFuOiBhcmdvX2hhc2hfZm46IG5vIGlubGluZSwgcmVuYW1l LCBjaGFuZ2UgdHlwZQp2MSBmZWVkYmFjayAjMTMsIFBhdWwsIEphbjogRUZBVUxUIC0+IEVOT01F TSBpbiBhcmdvX3JpbmdfbWFwX3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHJlbmFtZSBwYWdl IHZhciBpbiBhcmdvX3JpbmdfbWFwX3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHN3aXRjaCB1 aW50OF90KiB0byB2b2lkKiBhbmQgZHJvcCBjYXN0CnYxIGZlZWRiYWNrICMxMywgSmFuOiBzd2l0 Y2ggbWVtb3J5IGJhcnJpZXIgdG8gc21wX3dtYgp2MSBmZWVkYmFjayAjMTMsIEphbjogbWFrZSAn cmluZycgY29tbWVudCBjb21wbHkgd2l0aCBzaW5nbGUtbGluZSBzdHlsZQp2MSBmZWVkYmFjayAj MTMsIEphbjogdXNlIHh6YWxsb2NfYXJyYXksIGRyb3AgbG9vcCBOVUxMIGluaXQKdjEgZmVlZGJh Y2sgIzEzLCBKYW46IGluaXQgYm9vbCB3aXRoIGZhbHNlIHJhdGhlciB0aGFuIDAKdjEgZmVlZGJh Y2sgIzEzIEphbjogdXNlIF9fY29weTsgZGVmaW5lIGFuZCB1c2UgX19jb3B5X2ZpZWxkX3RvX2d1 ZXN0X2Vycm5vCnYxIGZlZWRiYWNrICMxMywgSmFuOiB1c2UgeHphbGxvYywgZHJvcCBpbmRpdmlk dWFsIGluaXQgemVyb2VzCnYxIGZlZWRiYWNrICMxMywgSmFuOiBwcmVmaXggcHVibGljIG5hbWVz cGFjZSB3aXRoIHhlbgp2MSBmZWVkYmFjayAjMTMsIEphbjogYmxhbmsgbGluZSBhZnRlciBvcCBj YXNlIGluIGRvX2FyZ29fbWVzc2FnZV9vcAp2MSBzZWxmOiByZWZsb3cgY29tbWVudCBpbiBhcmdv X3JpbmdfbWFwX3BhZ2UgdG8gd2l0aGluIDgwIGNoYXIgbGVuCnYxIGZlZWRiYWNrICMxMywgUm9n ZXI6IHVzZSB0cnVlIG5vdCAxIGluIGFzc2lnbiB0byB1cGRhdGVfdHhfcHRyIGJvb2wKdjEgZmVl ZGJhY2sgIzIxLCBKYW46IGZvbGQgaW4gdGhlIGFycmF5X2luZGV4X25vc3BlYyBoYXNoIGZ1bmN0 aW9uIGd1YXJkcwp2MSBmZWVkYmFjayAjMTgsIEphbjogZm9sZCB0aGUgbWF4IHJpbmcgY291bnQg bGltaXQgaW50byB0aGUgc2VyaWVzCnYxIHNlbGY6IHVzZSB1bnNpZ25lZCBsb25nIHR5cGUgZm9y IFhFTl9BUkdPX1JFR0lTVEVSX0ZMQUdfTUFTSwp2MTogZmVlZGJhY2sgIzE1IEphbjogaGFuZGxl IHVwcGVyLWhhbHZlcyBvZiBoeXBlcmNhbGwgYXJncwp2MS4gZmVlZGJhY2sgIzEzIEphbjogYWRk IGNvbW1lbnQgcmU6IHBhZ2UgYWxpZ25tZW50CnYxLiBzZWxmOiBjb25maXJtIHJpbmcgbWFnaWMg cHJlc2VuY2UgaW4gc3VwcGxpZWQgcGFnZSBhcnJheQp2MS4gZmVlZGJhY2sgIzEzIEphbjogYWRk IGNvbW1lbnQgcmU6IG1pbmltdW0gcmluZyBzaXplCnYxLiBmZWVkYmFjayAjMTMgUm9nZXI6IHVz ZSBBU1NFUlRfVU5SRUFDSEFCTEUKdjEuIGZlZWRiYWNrIFJvZ2VyOiBhZGQgY29tbWVudCB0byBo YXNoIGZ1bmN0aW9uCgogZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jIHwgICA5ICst CiB4ZW4vY29tbW9uL2FyZ28uYyAgICAgICAgICAgICAgICAgfCA1MjcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggICAgICAg ICB8ICA3MCArKysrKwogeGVuL2luY2x1ZGUveGxhdC5sc3QgICAgICAgICAgICAgIHwgICAyICsK IDQgZmlsZXMgY2hhbmdlZCwgNjA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jIGIvZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUucGFuZG9jCmluZGV4IDYwNWM1NDQuLmM4ZDFjZWQgMTAwNjQ0Ci0tLSBh L2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYworKysgYi9kb2NzL21pc2MveGVuLWNv bW1hbmQtbGluZS5wYW5kb2MKQEAgLTE4Myw3ICsxODMsNyBAQCBpbiBjb21iaW5hdGlvbiB3aXRo IGNwdWlkbGUuICBUaGlzIG9wdGlvbiBpcyBvbmx5IGV4cGVjdGVkIHRvIGJlIHVzZWZ1bCBmb3IK IGRldmVsb3BlcnMgd2lzaGluZyBYZW4gdG8gZmFsbCBiYWNrIHRvIG9sZGVyIHRpbWluZyBtZXRo b2RzIG9uIG5ld2VyIGhhcmR3YXJlLgogCiAjIyMgYXJnbwotICAgID0gTGlzdCBvZiBbIDxib29s PiBdCisgICAgPSBMaXN0IG9mIFsgPGJvb2w+LCBtYWMtcGVybWlzc2l2ZT08Ym9vbD4gXQogCiBD b250cm9scyBmb3IgdGhlIEFyZ28gaHlwZXJ2aXNvci1tZWRpYXRlZCBpbnRlcmRvbWFpbiBjb21t dW5pY2F0aW9uIHNlcnZpY2UuCiAKQEAgLTE5NSw2ICsxOTUsMTMgQEAgcG9pbnQgb2YgYXV0aG9y aXR5LiAgR3Vlc3RzIG1heSByZWdpc3RlciBtZW1vcnkgcmluZ3MgdG8gcmVjaWV2ZSBtZXNzYWdl cywKIHF1ZXJ5IHRoZSBzdGF0dXMgb2Ygb3RoZXIgZG9tYWlucywgYW5kIHNlbmQgbWVzc2FnZXMg YnkgaHlwZXJjYWxsLCBhbGwgc3ViamVjdAogdG8gYXBwcm9wcmlhdGUgYXVkaXRpbmcgYnkgWGVu LiAgQXJnbyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgogCisqICAgVGhlIGBtYWMtcGVybWlzc2l2 ZWAgYm9vbGVhbiBjb250cm9scyB3aGV0aGVyIHdpbGRjYXJkIHJlY2VpdmUgcmluZ3MgbWF5IGJl CisgICAgcmVnaXN0ZXJlZCAoYG1hYy1wZXJtaXNzaXZlPTFgKSBvciBtYXkgbm90IGJlIHJlZ2lz dGVyZWQKKyAgICAoYG1hYy1wZXJtaXNzaXZlPTBgKS4KKworICAgIFRoaXMgb3B0aW9uIGlzIGRp c2FibGVkIGJ5IGRlZmF1bHQsIHRvIHByb3RlY3QgZG9tYWlucyBmcm9tIGEgRG9TIGJ5IGEKKyAg ICBidWdneSBvciBtYWxpY2lvdXMgb3RoZXIgZG9tYWluIHNwYW1taW5nIHRoZSByaW5nLgorCiAj IyMgYXNpZCAoeDg2KQogPiBgPSA8Ym9vbGVhbj5gCiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v YXJnby5jIGIveGVuL2NvbW1vbi9hcmdvLmMKaW5kZXggOWYyZDJlNS4uNTQyNTZhZSAxMDA2NDQK LS0tIGEveGVuL2NvbW1vbi9hcmdvLmMKKysrIGIveGVuL2NvbW1vbi9hcmdvLmMKQEAgLTIyLDYg KzIyLDcgQEAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KICNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4K ICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2lu Y2x1ZGUgPHhlbi9ub3NwZWMuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4 ZW4vdGltZS5oPgpAQCAtMzEsMTMgKzMyLDMyIEBACiAjaWZkZWYgQ09ORklHX0NPTVBBVAogI2lu Y2x1ZGUgPGNvbXBhdC9hcmdvLmg+CiBDSEVDS19hcmdvX2FkZHI7CisjdW5kZWYgQ0hFQ0tfYXJn b19hZGRyCisjZGVmaW5lIENIRUNLX2FyZ29fYWRkciBzdHJ1Y3QgeGVuX2FyZ29fYWRkcgorQ0hF Q0tfYXJnb19yZWdpc3Rlcl9yaW5nOwogQ0hFQ0tfYXJnb19yaW5nOworQ0hFQ0tfYXJnb19yaW5n X21lc3NhZ2VfaGVhZGVyOwogI2VuZGlmCiAKKyNkZWZpbmUgTUFYX1JJTkdTX1BFUl9ET01BSU4g ICAgICAgICAgICAxMjhVCisKKy8qIEFsbCBtZXNzYWdlcyBvbiB0aGUgcmluZyBhcmUgcGFkZGVk IHRvIGEgbXVsdGlwbGUgb2YgdGhlIHNsb3Qgc2l6ZS4gKi8KKyNkZWZpbmUgUk9VTkRVUF9NRVNT QUdFKGEpIFJPVU5EVVAoKGEpLCBYRU5fQVJHT19NU0dfU0xPVF9TSVpFKQorCisvKiBOdW1iZXIg b2YgUEFHRXMgbmVlZGVkIHRvIGhvbGQgYSByaW5nIG9mIGEgZ2l2ZW4gc2l6ZSBpbiBieXRlcyAq LworI2RlZmluZSBOUEFHRVNfUklORyhyaW5nX2xlbikgXAorICAgIChST1VORFVQKChST1VORFVQ X01FU1NBR0UocmluZ19sZW4pICsgc2l6ZW9mKHhlbl9hcmdvX3JpbmdfdCkpLCBQQUdFX1NJWkUp IFwKKyAgICAgPj4gUEFHRV9TSElGVCkKKwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2Fy Z29fYWRkcl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JlZ2lzdGVyX3Jp bmdfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX3QpOworI2lmZGVm IENPTkZJR19DT01QQVQKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGNvbXBhdF9wZm5fdCk7Cisj ZW5kaWYKIAogc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSBvcHRfYXJnbzsKK3N0YXRpYyBib29s IF9fcmVhZF9tb3N0bHkgb3B0X2FyZ29fbWFjX3Blcm1pc3NpdmU7CiAKIHN0YXRpYyBpbnQgX19p bml0IHBhcnNlX2FyZ28oY29uc3QgY2hhciAqcykKIHsKQEAgLTUxLDYgKzcxLDggQEAgc3RhdGlj IGludCBfX2luaXQgcGFyc2VfYXJnbyhjb25zdCBjaGFyICpzKQogCiAgICAgICAgIGlmICggKHZh bCA9IHBhcnNlX2Jvb2wocywgc3MpKSA+PSAwICkKICAgICAgICAgICAgIG9wdF9hcmdvID0gdmFs OworICAgICAgICBlbHNlIGlmICggKHZhbCA9IHBhcnNlX2Jvb2xlYW4oIm1hYy1wZXJtaXNzaXZl Iiwgcywgc3MpKSA+PSAwICkKKyAgICAgICAgICAgIG9wdF9hcmdvX21hY19wZXJtaXNzaXZlID0g dmFsOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAKQEAgLTM2Niw2 ICszODgsNzQgQEAgcmluZ191bm1hcChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJn b19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICB9CiB9CiAKK3N0YXRpYyBpbnQKK3JpbmdfbWFw X3BhZ2UoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5n X2luZm8sCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpLCB2b2lkICoqb3V0X3B0cikKK3sK KyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8pKTsKKworICAgIC8qCisgICAgICog RklYTUU6IEludmVzdGlnYXRlIHVzaW5nIHZtYXAgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbnRpZ3Vv dXMgdmlydHVhbAorICAgICAqIGFkZHJlc3Mgc3BhY2UgbWFwcGluZyBvZiB0aGUgcmluZyBpbnN0 ZWFkIG9mIHVzaW5nIHRoZSBhcnJheSBvZiBzaW5nbGUKKyAgICAgKiBwYWdlIG1hcHBpbmdzLgor ICAgICAqIEFmZmVjdHMgbG9naWMgaW4gbWVtY3B5X3RvX2d1ZXN0X3JpbmcsIHRoZSBtZm5fbWFw cGluZyBhcnJheSBkYXRhCisgICAgICogc3RydWN0dXJlLCBhbmQgcGxhY2VzIHdoZXJlIHJpbmcg bWFwcGluZ3MgYXJlIGFkZGVkIG9yIHJlbW92ZWQuCisgICAgICovCisKKyAgICBpZiAoIGkgPj0g cmluZ19pbmZvLT5ubWZucyApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisg ICAgICAgICAgICAgICAiYXJnbzogcmluZyAodm0ldToleCB2bSV1KSAlcCBhdHRlbXB0ZWQgdG8g bWFwIHBhZ2UgJXUgb2YgJXVcbiIsCisgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5kb21h aW5faWQsIHJpbmdfaW5mby0+aWQuYXBvcnQsCisgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5p ZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sIGksIHJpbmdfaW5mby0+bm1mbnMpOworICAgICAgICBy ZXR1cm4gLUVOT01FTTsKKyAgICB9CisgICAgaSA9IGFycmF5X2luZGV4X25vc3BlYyhpLCByaW5n X2luZm8tPm5tZm5zKTsKKworICAgIGlmICggIXJpbmdfaW5mby0+bWZucyB8fCAhcmluZ19pbmZv LT5tZm5fbWFwcGluZykKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAg ICAgICByaW5nX2luZm8tPmxlbiA9IDA7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0K KworICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0gKQorICAgIHsKKyAgICAgICAg cmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSA9IG1hcF9kb21haW5fcGFnZV9nbG9iYWwocmluZ19p bmZvLT5tZm5zW2ldKTsKKyAgICAgICAgaWYgKCAhcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgImFyZ286IHJpbmcg KHZtJXU6JXggdm0ldSkgJXAgYXR0ZW1wdGVkIHRvIG1hcCAiCisgICAgICAgICAgICAgICAgICAg ICJwYWdlICV1IG9mICV1XG4iLAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmRv bWFpbl9pZCwgcmluZ19pbmZvLT5pZC5hcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgcmluZ19p bmZvLT5pZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sIGksIHJpbmdfaW5mby0+bm1mbnMpOworICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIH0KKyAgICAgICAgYXJnb19kcHJpbnRr KCJtYXBwaW5nIHBhZ2UgJSJQUklfbWZuIiB0byAlcFxuIiwKKyAgICAgICAgICAgICAgICAgICAg IG1mbl94KHJpbmdfaW5mby0+bWZuc1tpXSksIHJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0pOwor ICAgIH0KKworICAgIGlmICggb3V0X3B0ciApCisgICAgICAgICpvdXRfcHRyID0gcmluZ19pbmZv LT5tZm5fbWFwcGluZ1tpXTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAordXBk YXRlX3R4X3B0cihjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8g KnJpbmdfaW5mbywKKyAgICAgICAgICAgICAgdWludDMyX3QgdHhfcHRyKQoreworICAgIHhlbl9h cmdvX3JpbmdfdCAqcmluZ3A7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8p KTsKKyAgICBBU1NFUlQocmluZ19pbmZvLT5tZm5fbWFwcGluZ1swXSk7CisKKyAgICByaW5nX2lu Zm8tPnR4X3B0ciA9IHR4X3B0cjsKKyAgICByaW5ncCA9IHJpbmdfaW5mby0+bWZuX21hcHBpbmdb MF07CisKKyAgICB3cml0ZV9hdG9taWMoJnJpbmdwLT50eF9wdHIsIHR4X3B0cik7CisgICAgc21w X3dtYigpOworfQorCiBzdGF0aWMgdm9pZAogd2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShk b21pZF90IGRvbWFpbl9pZCwgc3RydWN0IHBlbmRpbmdfZW50ICplbnQpCiB7CkBAIC01MzAsMTEg KzYyMCw0MDAgQEAgcGFydG5lcl9yaW5nc19yZW1vdmUoc3RydWN0IGRvbWFpbiAqc3JjX2QpCiAg ICAgfQogfQogCitzdGF0aWMgaW50CitmaW5kX3JpbmdfbWZuKHN0cnVjdCBkb21haW4gKmQsIGdm bl90IGdmbiwgbWZuX3QgKm1mbikKK3sKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworICAg IHAybV90eXBlX3QgcDJtdDsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gY2hlY2tfZ2V0X3Bh Z2VfZnJvbV9nZm4oZCwgZ2ZuLCBmYWxzZSwgJnAybXQsICZwYWdlKTsKKyAgICBpZiAoIHVubGlr ZWx5KHJldCkgKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgKm1mbiA9IHBhZ2VfdG9fbWZu KHBhZ2UpOworICAgIGlmICggIW1mbl92YWxpZCgqbWZuKSApCisgICAgICAgIHJldCA9IC1FSU5W QUw7CisjaWZkZWYgQ09ORklHX1g4NgorICAgIGVsc2UgaWYgKCBwMm10ID09IHAybV9yYW1fbG9n ZGlydHkgKQorICAgICAgICByZXQgPSAtRUFHQUlOOworI2VuZGlmCisgICAgZWxzZSBpZiAoIChw Mm10ICE9IHAybV9yYW1fcncpIHx8CisgICAgICAgICAgICAgICFnZXRfcGFnZV9hbmRfdHlwZShw YWdlLCBkLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAgICAgICByZXQgPSAtRUlOVkFMOworCisg ICAgcHV0X3BhZ2UocGFnZSk7CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Citj b3B5X2dmbl9mcm9tX2hhbmRsZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGdmbl9obmQs IGJvb2wgY29tcGF0LAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGksIGdmbl90 ICpvdXRfZ2ZuKQoreworICAgIGludCByZXQ7CisKKyNpZmRlZiBDT05GSUdfQ09NUEFUCisgICAg aWYgKCBjb21wYXQgKQorICAgIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb21w YXRfcGZuX3QpIGNfZ2ZuX2huZCA9CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChnZm5f aG5kLCBjb21wYXRfcGZuX3QpOworICAgICAgICBjb21wYXRfcGZuX3QgY19nZm47CisKKyAgICAg ICAgcmV0ID0gX19jb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0KCZjX2dmbiwgY19nZm5faG5kLCBpLCAx KSA/IC1FRkFVTFQgOiAwOworICAgICAgICAqb3V0X2dmbiA9IF9nZm4oY19nZm4pOworICAgIH0K KyAgICBlbHNlCisgICAgeworI2VuZGlmCisgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o eGVuX3Bmbl90KSB4X2dmbl9obmQgPQorICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoZ2Zu X2huZCwgeGVuX3Bmbl90KTsKKyAgICAgICAgeGVuX3Bmbl90IHhfZ2ZuOworCisgICAgICAgIHJl dCA9IF9fY29weV9mcm9tX2d1ZXN0X29mZnNldCgmeF9nZm4sIHhfZ2ZuX2huZCwgaSwgMSkgPyAt RUZBVUxUIDogMDsKKyAgICAgICAgKm91dF9nZm4gPSBfZ2ZuKHhfZ2ZuKTsKKyNpZmRlZiBDT05G SUdfQ09NUEFUCisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dAorZmluZF9yaW5nX21mbnMoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm8sCisgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnBhZ2UsCisg ICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGdmbl9obmQsCisgICAg ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbGVuLCBib29sIGNvbXBhdCkKK3sKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBtZm5fdCAqbWZuczsKKyAgICB2 b2lkICoqbWZuX21hcHBpbmc7CisKKyAgICBBU1NFUlQoTE9DS0lOR19Xcml0ZV9yaW5nc19MMihk KSk7CisKKyAgICBpZiAoIHJpbmdfaW5mby0+bWZucyApCisgICAgeworICAgICAgICAvKiBSaW5n IGFscmVhZHkgZXhpc3RlZDogZHJvcCB0aGUgcHJldmlvdXMgbWFwcGluZy4gKi8KKyAgICAgICAg Z3ByaW50ayhYRU5MT0dfSU5GTywgImFyZ286IHZtJXUgcmUtcmVnaXN0ZXIgZXhpc3Rpbmcgcmlu ZyAiCisgICAgICAgICAgICAgICAgIih2bSV1OiV4IHZtJXUpIGNsZWFycyBtYXBwaW5nXG4iLAor ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmluZ19pbmZvLT5pZC5kb21haW5faWQsCisg ICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5hcG9ydCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVy X2lkKTsKKworICAgICAgICByaW5nX3JlbW92ZV9tZm5zKGQsIHJpbmdfaW5mbyk7CisgICAgICAg IEFTU0VSVCghcmluZ19pbmZvLT5tZm5zKTsKKyAgICB9CisKKyAgICBtZm5zID0geG1hbGxvY19h cnJheShtZm5fdCwgbnBhZ2UpOworICAgIGlmICggIW1mbnMgKQorICAgICAgICByZXR1cm4gLUVO T01FTTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnBhZ2U7IGkrKyApCisgICAgICAgIG1mbnNb aV0gPSBJTlZBTElEX01GTjsKKworICAgIG1mbl9tYXBwaW5nID0geHphbGxvY19hcnJheSh2b2lk ICosIG5wYWdlKTsKKyAgICBpZiAoICFtZm5fbWFwcGluZyApCisgICAgeworICAgICAgICB4ZnJl ZShtZm5zKTsKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgfQorCisgICAgcmluZ19pbmZv LT5tZm5zID0gbWZuczsKKyAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nID0gbWZuX21hcHBpbmc7 CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5wYWdlOyBpKysgKQorICAgIHsKKyAgICAgICAgbWZu X3QgbWZuOworICAgICAgICBnZm5fdCBnZm47CisKKyAgICAgICAgcmV0ID0gY29weV9nZm5fZnJv bV9oYW5kbGUoZ2ZuX2huZCwgY29tcGF0LCBpLCAmZ2ZuKTsKKyAgICAgICAgaWYgKCByZXQgKQor ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmV0ID0gZmluZF9yaW5nX21mbihkLCBnZm4s ICZtZm4pOworICAgICAgICBpZiAoIHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmlu dGsoWEVOTE9HX0VSUiwgImFyZ286IHZtJXU6IGludmFsaWQgZ2ZuICUiUFJJX2dmbiIgIgorICAg ICAgICAgICAgICAgICAgICAicjoodm0ldToleCB2bSV1KSAlcCAldS8ldVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnZm5feChnZm4pLAorICAgICAgICAgICAgICAgICAg ICByaW5nX2luZm8tPmlkLmRvbWFpbl9pZCwgcmluZ19pbmZvLT5pZC5hcG9ydCwKKyAgICAgICAg ICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sIGksIG5wYWdl KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmluZ19pbmZvLT5t Zm5zW2ldID0gbWZuOworCisgICAgICAgIGFyZ29fZHByaW50aygiJXU6ICUiUFJJX2dmbiIgLT4g JSJQUklfbWZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGksIGdmbl94KGdmbiksIG1mbl94 KHJpbmdfaW5mby0+bWZuc1tpXSkpOworICAgIH0KKworICAgIHJpbmdfaW5mby0+bm1mbnMgPSBp OworCisgICAgaWYgKCByZXQgKQorICAgICAgICByaW5nX3JlbW92ZV9tZm5zKGQsIHJpbmdfaW5m byk7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJpbmdfaW5mby0+bm1mbnMgPT0g TlBBR0VTX1JJTkcobGVuKSk7CisKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfREVCVUcsICJhcmdv OiB2bSV1IHJpbmcgKHZtJXU6JXggdm0ldSkgJXAgIgorICAgICAgICAgICAgICAgICJtZm5fbWFw cGluZyAlcCBsZW4gJXUgbm1mbnMgJXVcbiIsCisgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lk LCByaW5nX2luZm8tPmlkLmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlk LmFwb3J0LCByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQsIHJpbmdfaW5mbywKKyAgICAgICAgICAg ICAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nLCByaW5nX2luZm8tPmxlbiwgcmluZ19pbmZvLT5u bWZucyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGxvbmcKK3JlZ2lz dGVyX3Jpbmcoc3RydWN0IGRvbWFpbiAqY3VycmQsCisgICAgICAgICAgICAgIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX2FyZ29fcmVnaXN0ZXJfcmluZ190KSByZWdfaG5kLAorICAgICAgICAg ICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGdmbl9obmQsCisgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBucGFnZSwgdW5zaWduZWQgaW50IGZsYWdzLCBib29sIGNvbXBhdCkKK3sK KyAgICB4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QgcmVnOworICAgIHN0cnVjdCBhcmdvX3Jpbmdf aWQgcmluZ19pZDsKKyAgICB2b2lkICptYXBfcmluZ3A7CisgICAgeGVuX2FyZ29fcmluZ190ICpy aW5ncDsKKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywgKm5ld19yaW5nX2lu Zm8gPSBOVUxMOworICAgIHN0cnVjdCBhcmdvX3NlbmRfaW5mbyAqc2VuZF9pbmZvID0gTlVMTDsK KyAgICBzdHJ1Y3QgZG9tYWluICpkc3RfZCA9IE5VTEw7CisgICAgaW50IHJldCA9IDA7CisgICAg dW5zaWduZWQgaW50IHByaXZhdGVfdHhfcHRyOworCisgICAgQVNTRVJUKGN1cnJkID09IGN1cnJl bnQtPmRvbWFpbik7CisKKyAgICAvKiBmbGFnczogcmVzZXJ2ZSBjdXJyZW50bHktdW5kZWZpbmVk IGJpdHMsIHJlcXVpcmUgemVyby4gICovCisgICAgaWYgKCB1bmxpa2VseShmbGFncyAmIH5YRU5f QVJHT19SRUdJU1RFUl9GTEFHX01BU0spICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAg ICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmcmVnLCByZWdfaG5kLCAxKSApCisgICAgICAgIHJldHVy biAtRUZBVUxUOworCisgICAgLyoKKyAgICAgKiBBIHJpbmcgbXVzdCBiZSBsYXJnZSBlbm91Z2gg dG8gdHJhbnNtaXQgbWVzc2FnZXMsIHNvIHJlcXVpcmVzIHNwYWNlIGZvcjoKKyAgICAgKiAqIDEg bWVzc2FnZSBoZWFkZXIsIHBsdXMKKyAgICAgKiAqIDEgcGF5bG9hZCBzbG90IChwYXlsb2FkIGlz IGFsd2F5cyByb3VuZGVkIHRvIGEgbXVsdGlwbGUgb2YgMTYgYnl0ZXMpCisgICAgICogICBmb3Ig dGhlIG1lc3NhZ2UgcGF5bG9hZCB0byBiZSB3cml0dGVuIGludG8sIHBsdXMKKyAgICAgKiAqIDEg bW9yZSBzbG90LCBzbyB0aGF0IHRoZSByaW5nIGNhbm5vdCBiZSBmaWxsZWQgdG8gY2FwYWNpdHkg d2l0aCBhCisgICAgICogICBzaW5nbGUgbWluaW11bS1zaXplIG1lc3NhZ2UgLS0gc2VlIHRoZSBs b2dpYyBpbiByaW5nYnVmX2luc2VydCAtLQorICAgICAqICAgYWxsb3dpbmcgZm9yIHRoaXMgZW5z dXJlcyB0aGF0IHRoZXJlIGNhbiBiZSBzcGFjZSByZW1haW5pbmcgd2hlbiBhCisgICAgICogICBt ZXNzYWdlIGlzIHByZXNlbnQuCisgICAgICogVGhlIGFib3ZlIGRldGVybWluZXMgdGhlIG1pbmlt dW0gYWNjZXB0YWJsZSByaW5nIHNpemUuCisgICAgICovCisgICAgaWYgKCAocmVnLmxlbiA8IChz aXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIpCisgICAgICAgICAgICAg ICAgICAgICAgKyBST1VORFVQX01FU1NBR0UoMSkgKyBST1VORFVQX01FU1NBR0UoMSkpKSB8fAor ICAgICAgICAgKHJlZy5sZW4gPiBYRU5fQVJHT19NQVhfUklOR19TSVpFKSB8fAorICAgICAgICAg KHJlZy5sZW4gIT0gUk9VTkRVUF9NRVNTQUdFKHJlZy5sZW4pKSB8fAorICAgICAgICAgKE5QQUdF U19SSU5HKHJlZy5sZW4pICE9IG5wYWdlKSB8fAorICAgICAgICAgKHJlZy5wYWQgIT0gMCkgKQor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJpbmdfaWQucGFydG5lcl9pZCA9IHJlZy5w YXJ0bmVyX2lkOworICAgIHJpbmdfaWQuYXBvcnQgPSByZWcuYXBvcnQ7CisgICAgcmluZ19pZC5k b21haW5faWQgPSBjdXJyZC0+ZG9tYWluX2lkOworCisgICAgaWYgKCByZWcucGFydG5lcl9pZCA9 PSBYRU5fQVJHT19ET01JRF9BTlkgKQorICAgIHsKKyAgICAgICAgaWYgKCAhb3B0X2FyZ29fbWFj X3Blcm1pc3NpdmUgKQorICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKKyAgICB9CisgICAgZWxz ZQorICAgIHsKKyAgICAgICAgZHN0X2QgPSBnZXRfZG9tYWluX2J5X2lkKHJlZy5wYXJ0bmVyX2lk KTsKKyAgICAgICAgaWYgKCAhZHN0X2QgKQorICAgICAgICB7CisgICAgICAgICAgICBhcmdvX2Rw cmludGsoIiFkc3RfZCwgRVNSQ0hcbiIpOworICAgICAgICAgICAgcmV0dXJuIC1FU1JDSDsKKyAg ICAgICAgfQorCisgICAgICAgIHNlbmRfaW5mbyA9IHh6YWxsb2Moc3RydWN0IGFyZ29fc2VuZF9p bmZvKTsKKyAgICAgICAgaWYgKCAhc2VuZF9pbmZvICkKKyAgICAgICAgeworICAgICAgICAgICAg cmV0ID0gLUVOT01FTTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAg IHNlbmRfaW5mby0+aWQgPSByaW5nX2lkOworICAgIH0KKworICAgIC8qCisgICAgICogQ29tbW9u IGNhc2UgaXMgdGhhdCB0aGUgcmluZyBkb2Vzbid0IGFscmVhZHkgZXhpc3QsIHNvIGRvIHRoZSBh bGxvYyBoZXJlCisgICAgICogYmVmb3JlIHBpY2tpbmcgdXAgYW55IGxvY2tzLgorICAgICAqLwor ICAgIG5ld19yaW5nX2luZm8gPSB4emFsbG9jKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyk7CisgICAg aWYgKCAhbmV3X3JpbmdfaW5mbyApCisgICAgeworICAgICAgICByZXQgPSAtRU5PTUVNOworICAg ICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByZWFkX2xvY2soJkwxX2dsb2JhbF9hcmdvX3J3 bG9jayk7CisKKyAgICBpZiAoICFjdXJyZC0+YXJnbyApCisgICAgeworICAgICAgICByZXQgPSAt RU5PREVWOworICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgfQorCisgICAgaWYgKCBkc3Rf ZCAmJiAhZHN0X2QtPmFyZ28gKQorICAgIHsKKyAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2Qt PmFyZ28sIEVDT05OUkVGVVNFRFxuIik7CisgICAgICAgIHJldCA9IC1FQ09OTlJFRlVTRUQ7Cisg ICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICB9CisKKyAgICB3cml0ZV9sb2NrKCZjdXJyZC0+ YXJnby0+cmluZ3NfTDJfcndsb2NrKTsKKworICAgIGlmICggY3VycmQtPmFyZ28tPnJpbmdfY291 bnQgPj0gTUFYX1JJTkdTX1BFUl9ET01BSU4gKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVOT1NQ QzsKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisKKyAgICByaW5nX2luZm8gPSBm aW5kX3JpbmdfaW5mbyhjdXJyZCwgJnJpbmdfaWQpOworICAgIGlmICggIXJpbmdfaW5mbyApCisg ICAgeworICAgICAgICByaW5nX2luZm8gPSBuZXdfcmluZ19pbmZvOworICAgICAgICBuZXdfcmlu Z19pbmZvID0gTlVMTDsKKworICAgICAgICBzcGluX2xvY2tfaW5pdCgmcmluZ19pbmZvLT5MM19s b2NrKTsKKworICAgICAgICByaW5nX2luZm8tPmlkID0gcmluZ19pZDsKKyAgICAgICAgSU5JVF9M SVNUX0hFQUQoJnJpbmdfaW5mby0+cGVuZGluZyk7CisKKyAgICAgICAgbGlzdF9hZGQoJnJpbmdf aW5mby0+bm9kZSwKKyAgICAgICAgICAgICAgICAgJmN1cnJkLT5hcmdvLT5yaW5nX2hhc2hbaGFz aF9pbmRleCgmcmluZ19pbmZvLT5pZCldKTsKKworICAgICAgICBncHJpbnRrKFhFTkxPR19ERUJV RywgImFyZ286IHZtJXUgcmVnaXN0ZXJpbmcgcmluZyAodm0ldToleCB2bSV1KVxuIiwKKyAgICAg ICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmluZ19pZC5h cG9ydCwKKyAgICAgICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOworICAgIH0KKyAgICBl bHNlIGlmICggcmluZ19pbmZvLT5sZW4gKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICog SWYgdGhlIGNhbGxlciBzcGVjaWZpZWQgdGhhdCB0aGUgcmluZyBtdXN0IG5vdCBhbHJlYWR5IGV4 aXN0LAorICAgICAgICAgKiBmYWlsIGF0IGF0dGVtcHQgdG8gYWRkIGEgY29tcGxldGVkIHJpbmcg d2hpY2ggYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGZsYWdzICYg WEVOX0FSR09fUkVHSVNURVJfRkxBR19GQUlMX0VYSVNUICkKKyAgICAgICAgeworICAgICAgICAg ICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiYXJnbzogdm0ldSBkaXNhbGxvd2VkIHJlcmVnaXN0cmF0 aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgImV4aXN0aW5nIHJpbmcgKHZtJXU6JXggdm0l dSlcbiIsCisgICAgICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9t YWluX2lkLCByaW5nX2lkLmFwb3J0LAorICAgICAgICAgICAgICAgICAgICByaW5nX2lkLnBhcnRu ZXJfaWQpOworICAgICAgICAgICAgcmV0ID0gLUVFWElTVDsKKyAgICAgICAgICAgIGdvdG8gb3V0 X3VubG9jazI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJpbmdfaW5mby0+bGVuICE9IHJl Zy5sZW4gKQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ2hhbmdl IG9mIHJpbmcgc2l6ZSBjb3VsZCByZXN1bHQgaW4gZW50cmllcyBvbiB0aGUgcGVuZGluZworICAg ICAgICAgICAgICogbm90aWZpY2F0aW9ucyBsaXN0IHRoYXQgd2lsbCBuZXZlciB0cmlnZ2VyLgor ICAgICAgICAgICAgICogU2ltcGxlIGJsdW50IHNvbHV0aW9uOiBkaXNhbGxvdyByaW5nIHJlc2l6 ZSBmb3Igbm93LgorICAgICAgICAgICAgICogVE9ETzogaW52ZXN0aWdhdGUgZW5hYmxpbmcgcmlu ZyByZXNpemUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VS UiwgImFyZ286IHZtJXUgYXR0ZW1wdGVkIHRvIGNoYW5nZSByaW5nIHNpemUgIgorICAgICAgICAg ICAgICAgICAgICAiKHZtJXU6JXggdm0ldSlcbiIsCisgICAgICAgICAgICAgICAgICAgIGN1cnJk LT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCByaW5nX2lkLmFwb3J0LAorICAgICAgICAg ICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOworICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgICAqIENvdWxkIHJldHVybiBFSU5WQUwgaGVyZSwgYnV0IGlmIHRoZSByaW5nIGRpZG4ndCBh bHJlYWR5CisgICAgICAgICAgICAgKiBleGlzdCB0aGVuIHRoZSBhcmd1bWVudHMgd291bGQgaGF2 ZSBiZWVuIHZhbGlkLCBzbzogRUVYSVNULgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBy ZXQgPSAtRUVYSVNUOworICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICAgICAgfQor CisgICAgICAgIGdwcmludGsoWEVOTE9HX0RFQlVHLAorICAgICAgICAgICAgICAgICJhcmdvOiB2 bSV1IHJlLXJlZ2lzdGVyaW5nIGV4aXN0aW5nIHJpbmcgKHZtJXU6JXggdm0ldSlcbiIsCisgICAg ICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZ19pZC5kb21haW5faWQsIHJpbmdfaWQu YXBvcnQsCisgICAgICAgICAgICAgICAgcmluZ19pZC5wYXJ0bmVyX2lkKTsKKyAgICB9CisKKyAg ICByZXQgPSBmaW5kX3JpbmdfbWZucyhjdXJyZCwgcmluZ19pbmZvLCBucGFnZSwgZ2ZuX2huZCwg cmVnLmxlbiwgY29tcGF0KTsKKyAgICBpZiAoIHJldCApCisgICAgeworICAgICAgICBncHJpbnRr KFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIGZpbmQg cmluZyBtZm5zICh2bSV1OiV4IHZtJXUpXG4iLAorICAgICAgICAgICAgICAgIGN1cnJkLT5kb21h aW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCByaW5nX2lkLmFwb3J0LAorICAgICAgICAgICAgICAg IHJpbmdfaWQucGFydG5lcl9pZCk7CisKKyAgICAgICAgcmluZ19yZW1vdmVfaW5mbyhjdXJyZCwg cmluZ19pbmZvKTsKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisKKyAgICAvKgor ICAgICAqIFRoZSBmaXJzdCBwYWdlIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgZm9yIHRoZSByaW5n IGhhcyB0aGUgeGVuX2FyZ29fcmluZworICAgICAqIHN0cnVjdHVyZSBhdCBpdHMgaGVhZCwgd2hp Y2ggaXMgd2hlcmUgdGhlIHJpbmcgaW5kZXhlcyByZXNpZGUuCisgICAgICovCisgICAgcmV0ID0g cmluZ19tYXBfcGFnZShjdXJyZCwgcmluZ19pbmZvLCAwLCAmbWFwX3JpbmdwKTsKKyAgICBpZiAo IHJldCApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAg ICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIG1hcCByaW5nIG1mbiAwICh2bSV1OiV4IHZtJXUpXG4i LAorICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCBy aW5nX2lkLmFwb3J0LAorICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7CisKKyAg ICAgICAgcmluZ19yZW1vdmVfaW5mbyhjdXJyZCwgcmluZ19pbmZvKTsKKyAgICAgICAgZ290byBv dXRfdW5sb2NrMjsKKyAgICB9CisgICAgcmluZ3AgPSBtYXBfcmluZ3A7CisKKyAgICBwcml2YXRl X3R4X3B0ciA9IHJlYWRfYXRvbWljKCZyaW5ncC0+dHhfcHRyKTsKKworICAgIGlmICggKHByaXZh dGVfdHhfcHRyID49IHJlZy5sZW4pIHx8CisgICAgICAgICAoUk9VTkRVUF9NRVNTQUdFKHByaXZh dGVfdHhfcHRyKSAhPSBwcml2YXRlX3R4X3B0cikgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAg ICAgICogU2luY2UgdGhlIHJpbmcgaXMgYSBtZXNzLCBhdHRlbXB0IHRvIGZsdXNoIHRoZSBjb250 ZW50cyBvZiBpdAorICAgICAgICAgKiBoZXJlIGJ5IHNldHRpbmcgdGhlIHR4X3B0ciB0byB0aGUg bmV4dCBhbGlnbmVkIG1lc3NhZ2Ugc2xvdCBwYXN0CisgICAgICAgICAqIHRoZSBsYXRlc3Qgcnhf cHRyIHdlIGhhdmUgb2JzZXJ2ZWQuIEhhbmRsZSByaW5nIHdyYXAgY29ycmVjdGx5LgorICAgICAg ICAgKi8KKyAgICAgICAgcHJpdmF0ZV90eF9wdHIgPSBST1VORFVQX01FU1NBR0UocmVhZF9hdG9t aWMoJnJpbmdwLT5yeF9wdHIpKTsKKworICAgICAgICBpZiAoIHByaXZhdGVfdHhfcHRyID49IHJl Zy5sZW4gKQorICAgICAgICAgICAgcHJpdmF0ZV90eF9wdHIgPSAwOworCisgICAgICAgIHVwZGF0 ZV90eF9wdHIoY3VycmQsIHJpbmdfaW5mbywgcHJpdmF0ZV90eF9wdHIpOworICAgIH0KKworICAg IHJpbmdfaW5mby0+dHhfcHRyID0gcHJpdmF0ZV90eF9wdHI7CisgICAgcmluZ19pbmZvLT5sZW4g PSByZWcubGVuOworICAgIGN1cnJkLT5hcmdvLT5yaW5nX2NvdW50Kys7CisKKyAgICBpZiAoIHNl bmRfaW5mbyApCisgICAgeworICAgICAgICBzcGluX2xvY2soJmRzdF9kLT5hcmdvLT5zZW5kX0wy X2xvY2spOworCisgICAgICAgIGxpc3RfYWRkKCZzZW5kX2luZm8tPm5vZGUsCisgICAgICAgICAg ICAgICAgICZkc3RfZC0+YXJnby0+c2VuZF9oYXNoW2hhc2hfaW5kZXgoJnNlbmRfaW5mby0+aWQp XSk7CisKKyAgICAgICAgc3Bpbl91bmxvY2soJmRzdF9kLT5hcmdvLT5zZW5kX0wyX2xvY2spOwor ICAgIH0KKworIG91dF91bmxvY2syOgorICAgIHdyaXRlX3VubG9jaygmY3VycmQtPmFyZ28tPnJp bmdzX0wyX3J3bG9jayk7CisKKyBvdXRfdW5sb2NrOgorICAgIHJlYWRfdW5sb2NrKCZMMV9nbG9i YWxfYXJnb19yd2xvY2spOworCisgb3V0OgorICAgIGlmICggZHN0X2QgKQorICAgICAgICBwdXRf ZG9tYWluKGRzdF9kKTsKKworICAgIGlmICggcmV0ICkKKyAgICAgICAgeGZyZWUoc2VuZF9pbmZv KTsKKworICAgIHhmcmVlKG5ld19yaW5nX2luZm8pOworCisgICAgcmV0dXJuIHJldDsKK30KKwog bG9uZwogZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHZvaWQpIGFyZzEsCiAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJn MiwgdW5zaWduZWQgbG9uZyBhcmczLAogICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZzQpCiB7 CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CiAgICAgbG9uZyBy YyA9IC1FRkFVTFQ7CiAKICAgICBhcmdvX2RwcmludGsoIi0+ZG9fYXJnb19vcCgldSwlcCwlcCwl bHUsMHglbHgpXG4iLCBjbWQsCkBAIC01NDUsNiArMTAyNCwzMSBAQCBkb19hcmdvX29wKHVuc2ln bmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMSwKIAogICAgIHN3 aXRjaCAoY21kKQogICAgIHsKKyAgICBjYXNlIFhFTl9BUkdPX09QX3JlZ2lzdGVyX3Jpbmc6Cisg ICAgeworICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3JlZ2lzdGVyX3Jp bmdfdCkgcmVnX2huZCA9CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCB4ZW5f YXJnb19yZWdpc3Rlcl9yaW5nX3QpOworICAgICAgICAvKiBhcmcyOiBnZm5faG5kLCBhcmczOiBu cGFnZSwgYXJnNDogZmxhZ3MgKi8KKworICAgICAgICBCVUlMRF9CVUdfT04oIUlTX0FMSUdORUQo WEVOX0FSR09fTUFYX1JJTkdfU0laRSwgUEFHRV9TSVpFKSk7CisKKyAgICAgICAgaWYgKCB1bmxp a2VseShhcmczID4gKFhFTl9BUkdPX01BWF9SSU5HX1NJWkUgPj4gUEFHRV9TSElGVCkpICkKKyAg ICAgICAgeworICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogQ2hlY2sgYWNjZXNzIHRvIHRoZSB3aG9s ZSBhcnJheSBoZXJlIHNvIHdlIGNhbiB1c2UgdGhlIGZhc3RlciBfX2NvcHkKKyAgICAgICAgICog b3BlcmF0aW9ucyB0byByZWFkIGVhY2ggZWxlbWVudCBsYXRlci4KKyAgICAgICAgICovCisgICAg ICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9va2F5KGd1ZXN0X2hhbmRsZV9jYXN0KGFy ZzIsIHhlbl9wZm5fdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFyZzMpKSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IHJlZ2lzdGVyX3Jp bmcoY3VycmQsIHJlZ19obmQsIGFyZzIsIGFyZzMsIGFyZzQsIGZhbHNlKTsKKyAgICAgICAgYnJl YWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKICAg ICAgICAgYnJlYWs7CkBAIC01NjEsNiArMTA2NSw3IEBAIGNvbXBhdF9hcmdvX29wKHVuc2lnbmVk IGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMSwKICAgICAgICAgICAg ICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMiwgdW5zaWduZWQgbG9uZyBhcmcz LAogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmc0KQogeworICAgIHN0cnVjdCBkb21h aW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOwogICAgIGxvbmcgcmMgPSAtRUZBVUxUOwogCiAg ICAgYXJnb19kcHJpbnRrKCItPmNvbXBhdF9hcmdvX29wKCV1LCVwLCVwLCVsdSwweCVseClcbiIs IGNtZCwKQEAgLTU3MSw2ICsxMDc2LDI3IEBAIGNvbXBhdF9hcmdvX29wKHVuc2lnbmVkIGludCBj bWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMSwKIAogICAgIHN3aXRjaCAoY21k KQogICAgIHsKKyAgICBjYXNlIFhFTl9BUkdPX09QX3JlZ2lzdGVyX3Jpbmc6CisgICAgeworICAg ICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3JlZ2lzdGVyX3JpbmdfdCkgcmVn X2huZCA9CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCB4ZW5fYXJnb19yZWdp c3Rlcl9yaW5nX3QpOworICAgICAgICAvKiBhcmcyOiBnZm5faG5kLCBhcmczOiBucGFnZSwgYXJn NDogZmxhZ3MgKi8KKworICAgICAgICBpZiAoIHVubGlrZWx5KGFyZzMgPiAoWEVOX0FSR09fTUFY X1JJTkdfU0laRSA+PiBQQUdFX1NISUZUKSkgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9 IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgg dW5saWtlbHkoCisgICAgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkoZ3Vlc3RfaGFuZGxlX2Nh c3QoYXJnMiwgY29tcGF0X3Bmbl90KSwgYXJnMykpICkKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIHJjID0gcmVnaXN0ZXJfcmluZyhjdXJyZCwgcmVnX2huZCwgYXJnMiwgYXJnMywgYXJn NCwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworCiAgICAgZGVmYXVsdDoKICAgICAg ICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CkBAIC01NzksNyArMTEwNSw2IEBA IGNvbXBhdF9hcmdvX29wKHVuc2lnbmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o dm9pZCkgYXJnMSwKICAgICBhcmdvX2RwcmludGsoIjwtY29tcGF0X2FyZ29fb3AoJXUpPSVsZFxu IiwgY21kLCByYyk7CiAKICAgICByZXR1cm4gcmM7Ci0KIH0KICNlbmRpZgogCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaApp bmRleCA1MzBiYjgyLi42NjdhOGJhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJn by5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKQEAgLTMzLDYgKzMzLDEzIEBACiAK ICNkZWZpbmUgWEVOX0FSR09fRE9NSURfQU5ZICAgICAgIERPTUlEX0lOVkFMSUQKIAorLyoKKyAq IFRoZSBtYXhpbXVtIHNpemUgb2YgYW4gQXJnbyByaW5nIGlzIGRlZmluZWQgdG8gYmU6IDE2TUIK KyAqICAtLSB3aGljaCBpcyAweDEwMDAwMDAgYnl0ZXMuCisgKiBBIGJ5dGUgaW5kZXggaW50byB0 aGUgcmluZyBpcyBhdCBtb3N0IDI0IGJpdHMuCisgKi8KKyNkZWZpbmUgWEVOX0FSR09fTUFYX1JJ TkdfU0laRSAgKDB4MTAwMDAwMFVMTCkKKwogLyogRml4ZWQtd2lkdGggdHlwZSBmb3IgImFyZ28g cG9ydCIgbnVtYmVyLiBOb3RoaW5nIHRvIGRvIHdpdGggZXZ0Y2hucy4gKi8KIHR5cGVkZWYgdWlu dDMyX3QgeGVuX2FyZ29fcG9ydF90OwogCkBAIC02MSw0ICs2OCw2NyBAQCB0eXBlZGVmIHN0cnVj dCB4ZW5fYXJnb19yaW5nCiAjZW5kaWYKIH0geGVuX2FyZ29fcmluZ190OwogCit0eXBlZGVmIHN0 cnVjdCB4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nCit7CisgICAgeGVuX2FyZ29fcG9ydF90IGFwb3J0 OworICAgIGRvbWlkX3QgcGFydG5lcl9pZDsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgdWludDMy X3QgbGVuOworfSB4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3Q7CisKKy8qIE1lc3NhZ2VzIG9uIHRo ZSByaW5nIGFyZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiB0aGlzIHNpemUuICovCisjZGVmaW5l IFhFTl9BUkdPX01TR19TTE9UX1NJWkUgMHgxMAorCitzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNz YWdlX2hlYWRlcgoreworICAgIHVpbnQzMl90IGxlbjsKKyAgICBzdHJ1Y3QgeGVuX2FyZ29fYWRk ciBzb3VyY2U7CisgICAgdWludDMyX3QgbWVzc2FnZV90eXBlOworI2lmIGRlZmluZWQoX19TVERD X1ZFUlNJT05fXykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCisgICAgdWludDhfdCBk YXRhW107CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIHVpbnQ4X3QgZGF0YVswXTsKKyNl bmRpZgorfTsKKworLyoKKyAqIEh5cGVyY2FsbCBvcGVyYXRpb25zCisgKi8KKworLyoKKyAqIFhF Tl9BUkdPX09QX3JlZ2lzdGVyX3JpbmcKKyAqCisgKiBSZWdpc3RlciBhIHJpbmcgdXNpbmcgdGhl IGd1ZXN0LXN1cHBsaWVkIG1lbW9yeSBwYWdlcy4KKyAqIEFsc28gdXNlZCB0byByZXJlZ2lzdGVy IGFuIGV4aXN0aW5nIHJpbmcgKGVnLiBhZnRlciByZXN1bWUgZnJvbSBoaWJlcm5hdGUpLgorICoK KyAqIFRoZSBmaXJzdCBhcmd1bWVudCBzdHJ1Y3QgaW5kaWNhdGVzIHRoZSBwb3J0IG51bWJlciBm b3IgdGhlIHJpbmcgdG8gcmVnaXN0ZXIKKyAqIGFuZCB0aGUgcGFydG5lciBkb21haW4sIGlmIGFu eSwgdGhhdCBpcyB0byBiZSBhbGxvd2VkIHRvIHNlbmQgdG8gdGhlIHJpbmcuCisgKiBBIHdpbGRj YXJkIChYRU5fQVJHT19ET01JRF9BTlkpIG1heSBiZSBzdXBwbGllZCBpbnN0ZWFkIG9mIGEgcGFy dG5lciBkb21pZCwKKyAqIGFuZCBpZiB0aGUgaHlwZXJ2aXNvciBoYXMgd2lsZGNhcmQgc2VuZGVy IHJpbmdzIGVuYWJsZWQsIHRoaXMgd2lsbCBhbGxvdworICogYW55IGRvbWFpbiAoWFNNIG5vdHdp dGhzdGFuZGluZykgdG8gc2VuZCB0byB0aGUgcmluZy4KKyAqCisgKiBUaGUgc2Vjb25kIGFyZ3Vt ZW50IGlzIGFuIGFycmF5IG9mIGd1ZXN0IGZyYW1lIG51bWJlcnMgYW5kIHRoZSB0aGlyZCBhcmd1 bWVudAorICogaW5kaWNhdGVzIHRoZSBzaXplIG9mIHRoZSBhcnJheS4gVGhpcyBvcGVyYXRpb24g b25seSBzdXBwb3J0cyA0Sy1zaXplZCBwYWdlcy4KKyAqCisgKiBhcmcxOiBYRU5fR1VFU1RfSEFO RExFKHhlbl9hcmdvX3JlZ2lzdGVyX3JpbmdfdCkKKyAqIGFyZzI6IFhFTl9HVUVTVF9IQU5ETEUo eGVuX3Bmbl90KQorICogYXJnMzogdW5zaWduZWQgbG9uZyBucGFnZXMKKyAqIGFyZzQ6IHVuc2ln bmVkIGxvbmcgZmxhZ3MgKDMyLWJpdCB2YWx1ZSkKKyAqLworI2RlZmluZSBYRU5fQVJHT19PUF9y ZWdpc3Rlcl9yaW5nICAgICAxCisKKy8qIFJlZ2lzdGVyIG9wIGZsYWdzICovCisvKgorICogRmFp bCBleGlzdDoKKyAqIElmIHNldCwgcmVqZWN0IGF0dGVtcHRzIHRvIChyZSlyZWdpc3RlciBhbiBl eGlzdGluZyBlc3RhYmxpc2hlZCByaW5nLgorICogSWYgY2xlYXIsIHJlcmVnaXN0cmF0aW9uIG9j Y3VycyBpZiB0aGUgcmluZyBleGlzdHMsIHdpdGggdGhlIG5ldyByaW5nCisgKiB0YWtpbmcgdGhl IHBsYWNlIG9mIHRoZSBvbGQsIHByZXNlcnZpbmcgdHhfcHRyIGlmIGl0IHJlbWFpbnMgdmFsaWQu CisgKi8KKyNkZWZpbmUgWEVOX0FSR09fUkVHSVNURVJfRkxBR19GQUlMX0VYSVNUICAweDEKKwor I2lmZGVmIF9fWEVOX18KKy8qIE1hc2sgZm9yIGFsbCBkZWZpbmVkIGZsYWdzLiAqLworI2RlZmlu ZSBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX01BU0sgWEVOX0FSR09fUkVHSVNURVJfRkxBR19GQUlM X0VYSVNUCisjZW5kaWYKKwogI2VuZGlmCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94bGF0Lmxz dCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CmluZGV4IDE2NjAxZDkuLjM0OWZiYWQgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0CisrKyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC0z MSw3ICszMSw5IEBACiAhCW1jX3BoeXNjcHVpbmZvCQkJYXJjaC14ODYveGVuLW1jYS5oCiA/CXBh Z2Vfb2ZmbGluZV9hY3Rpb24JCWFyY2gteDg2L3hlbi1tY2EuaAogPwlhcmdvX2FkZHIJCQlhcmdv LmgKKz8JYXJnb19yZWdpc3Rlcl9yaW5nCQlhcmdvLmgKID8JYXJnb19yaW5nCQkJYXJnby5oCis/ CWFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcglhcmdvLmgKID8JZXZ0Y2huX2FsbG9jX3VuYm91bmQJ CWV2ZW50X2NoYW5uZWwuaAogPwlldnRjaG5fYmluZF9pbnRlcmRvbWFpbgkJZXZlbnRfY2hhbm5l bC5oCiA/CWV2dGNobl9iaW5kX2lwaQkJCWV2ZW50X2NoYW5uZWwuaAotLSAKMi43LjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs