From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v9 09/11] vpci/msi: add MSI handlers Date: Wed, 14 Mar 2018 14:04:06 +0000 Message-ID: <20180314140408.40947-10-roger.pau@citrix.com> References: <20180314140408.40947-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew74Q-0002JM-0s for xen-devel@lists.xenproject.org; Wed, 14 Mar 2018 14:07:58 +0000 In-Reply-To: <20180314140408.40947-1-roger.pau@citrix.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: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWRkIGhhbmRsZXJzIGZvciB0aGUgTVNJIGNvbnRyb2wsIGFkZHJlc3MsIGRhdGEgYW5kIG1hc2sg ZmllbGRzIGluCm9yZGVyIHRvIGRldGVjdCBhY2Nlc3NlcyB0byB0aGVtIGFuZCBzZXR1cCB0aGUg aW50ZXJydXB0cyBhcyByZXF1ZXN0ZWQKYnkgdGhlIGd1ZXN0LgoKTm90ZSB0aGF0IHRoZSBwZW5k aW5nIHJlZ2lzdGVyIGlzIG5vdCB0cmFwcGVkLCBhbmQgdGhlIGd1ZXN0IGNhbgpmcmVlbHkgcmVh ZC93cml0ZSB0byBpdC4KClNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBh dUBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVu bGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5j b20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNj OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVl Z2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBQ YXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2 ODoKIC0gQWRkIGEgRklYTUUgYWJvdXQgdGhlIGxhY2sgb2YgdGVzdGluZyBhbmQgYSBjb21tZW50 IHJlZ2FyZGluZyB0aGUKICAgbGFjayBvZiBjbGVhbmluZyBkb25lIGluIHRoZSBpbml0X21zaSBl cnJvciBwYXRoLgogLSBGcmVlIG1zaSBzdHJ1Y3Qgd2hlbiBjbGVhbmluZyB1cCBpZiBhbiBpbml0 IGZ1bmN0aW9uIGZhaWxlZC4KIC0gUmVtb3ZlIHRoZSAnZXJyb3InIGxhYmVsIG9mIGluaXRfbXNp LCB0aGUgY2FsbGVyIHdpbGwgYWxyZWFkeQogICBwZXJmb3JtIHRoZSBjbGVhbmluZy4KCkNoYW5n ZXMgc2luY2Ugdjc6CiAtIERvbid0IHN0b3JlIHBjaSBzZWdtZW50L2J1cyBvbiBsb2NhbCB2YXJp YWJsZXMuCiAtIEFkZCBhbiBlcnJvciBsYWJlbCB0byBpbml0X21zaS4KIC0gRG9uJ3QgdHJhcCBh Y2Nlc3NlcyB0byB0aGUgUEJBLgogLSBGaXggbXNpX3BlbmRpbmdfYml0c19yZWcgbWFjcm8gc28g aXQgbWF0Y2hlcyBjb2Rpbmcgc3R5bGUuCiAtIE1vdmUgdGhlIHBvc2l0aW9uIG9mIHZlY3RvcnMg aW4gdGhlIHZwY2lfbXNpIHN0cnVjdC4KIC0gQWRkIGEgY29tbWVudCB0byBjbGFyaWZ5IHRoZSBl eHBlY3RlZCBzdGF0ZSBvZiB2ZWN0b3JzIGFmdGVyCiAgIHB0X2lycV9jcmVhdGVfYmluZCBhbmQg dXNlIFhFTl9ET01DVExfVk1TSV9YODZfVU5NQVNLRUQuCgpDaGFuZ2VzIHNpbmNlIHY2OgogLSBV c2UgZG9tYWluX3NwaW5fbG9ja19pcnFfZGVzYyBpbnN0ZWFkIG9mIG9wZW4gY29kaW5nIGl0Lgog LSBSZWR1Y2UgdGhlIHNpemUgb2YgcHJpbnRlZCBkZWJ1ZyBtZXNzYWdlcy4KIC0gQ29uc3RpZnkg ZG9tYWluIGluIHZwY2lfZHVtcF9tc2kuCiAtIExvY2sgZG9tbGlzdF9yZWFkX2xvY2sgYmVmb3Jl IGl0ZXJhdGluZyBvdmVyIHRoZSBsaXN0IG9mIGRvbWFpbnMuCiAtIE1ha2UgbWF4X3ZlY3RvcnMg YW5kIHZlY3RvcnMgdWludDhfdC4KIC0gRHJvcCB0aGUgdnBjaV8gcHJlZml4IGZyb20gdGhlIHN0 YXRpYyBmdW5jdGlvbnMgaW4gbXNpLmMuCiAtIFR1cm4gdGhlIGJvb2xlYW5zIGluIHZwY2lfbXNp IGludG8gYml0ZmllbGRzLgogLSBBcHBseSB0aGUgbWFzayBiaXRzIHRvIGFsbCB2ZWN0b3JzIHdo ZW4gZW5hYmxpbmcgbXNpLgogLSBSZW1vdmUgdGhlIHBvcyBmaWVsZC4KIC0gUmVtb3ZlIHRoZSB1 c2FnZSBvZiBfX21zaV9zZXRfe2VuYWJsZS9kaXNhYmxlfS4KIC0gVXBkYXRlIHRoZSBiaW5kaW5n cyB3aGVuIHRoZSBtZXNzYWdlIG9yIGRhdGEgZmllbGRzIGFyZSB1cGRhdGVkLgogLSBNYWtlIHZw Y2lfbXNpX2FyY2hfZGlzYWJsZSByZXR1cm4gdm9pZCwgaXQgd2Fzbid0IHJldHVybmluZyBhbnkK ICAgZXJyb3IuCiAtIFByZXZlbnQgdGhlIGd1ZXN0IGZyb20gd3JpdGluZyB0byB0aGUgcGVuZGlu ZyBiaXRzIGZpZWxkLCBpdCdzIHJlYWQKICAgb25seSBhcyBkZWZpbmVkIGluIHRoZSBzcGVjLgog LSBBZGQgdGhlIG11c3RfY2hlY2sgYXR0cmlidXRlIHRvIHZwY2lfbXNpX2FyY2hfZW5hYmxlLgoK Q2hhbmdlcyBzaW5jZSB2NToKIC0gVXBkYXRlIHRvIG5ldyBsb2NrIHVzYWdlLgogLSBDaGFuZ2Ug aGFuZGxlcnMgdG8gbWF0Y2ggdGhlIG5ldyB0eXBlLgogLSBzL21zaV9mbGFncy9tc2lfZ2ZsYWdz LywgcmVtb3ZlIHRoZSBsb2NhbCB2YXJpYWJsZXMgYW5kIHVzZSB0aGUgbmV3CiAgIERPTUNUTF9W TVNJXyogZGVmaW5lcy4KIC0gQ2hhbmdlIHRoZSBNU0kgYXJjaCBmdW5jdGlvbiB0byB0YWtlIGEg dnBjaV9tc2kgaW5zdGVhZCBvZiBhCiAgIHZwY2lfYXJjaF9tc2kgYXMgcGFyYW1ldGVyLgogLSBG aXggdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBndWVzdCB2ZWN0b3IgZm9yIE1TSSBpbmplY3Rpb24g dG8gdGFrZQogICBpbnRvIGFjY291bnQgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgY2FuIGJlIG1v ZGlmaWVkLgogLSBVc2UgSU5WQUxJRF9QSVJRIGV2ZXJ5d2hlcmUuCiAtIFNpbXBsaWZ5IGV4aXQg cGF0aCBvZiB2cGNpX21zaV9kaXNhYmxlLgogLSBSZW1vdmUgdGhlIGNvbmRpdGlvbmFsIHdoZW4g c2V0dGluZyBhZGRyZXNzNjQgYW5kIG1hc2tpbmcgZmllbGRzLgogLSBBZGQgYSBwcm9jZXNzX3Bl bmRpbmdfc29mdGlycXMgdG8gdGhlIE1TSSBkdW1wIGxvb3AuCiAtIFBsYWNlIHRoZSBwcm90b3R5 cGVzIGZvciB0aGUgTVNJIGFyY2gtc3BlY2lmaWMgZnVuY3Rpb25zIGluCiAgIHhlbi92cGNpLmgu CiAtIEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgdGhlIElOVkFMSURfUElSUSBkZWZpbml0aW9uLgoK Q2hhbmdlcyBzaW5jZSB2NDoKIC0gRml4IGNvbW1pdCBtZXNzYWdlLgogLSBDaGFuZ2UgdGhlIEFT U0VSVHMgaW4gdnBjaV9tc2lfYXJjaF9tYXNrIGludG8gaWZzLgogLSBJbnRyb2R1Y2UgSU5WQUxJ RF9QSVJRLgogLSBEZXN0cm95IHRoZSBwYXJ0aWFsbHkgY3JlYXRlZCBiaW5kaW5ncyBpbiBjYXNl IG9mIGZhaWx1cmUgaW4KICAgdnBjaV9tc2lfYXJjaF9lbmFibGUuCiAtIEp1c3QgdGFrZSB0aGUg cGNpZGV2cyBsb2NrIG9uY2UgaW4gdnBjaV9tc2lfYXJjaF9kaXNhYmxlLgogLSBQcmludCBhbiBl cnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgZmFpbHVyZSBvZiBwdF9pcnFfZGVzdHJveV9iaW5kLgog LSBNYWtlIHZwY2lfbXNpX2FyY2hfaW5pdCByZXR1cm4gdm9pZC4KIC0gQ29uc3RpZnkgdGhlIGFy Y2ggcGFyYW1ldGVyIG9mIHZwY2lfbXNpX2FyY2hfcHJpbnQuCiAtIFVzZSBmaXhlZCBpbnN0ZWFk IG9mIGNwdSBmb3IgbXNpIHJlZGlyZWN0aW9uLgogLSBTZXBhcmF0ZSB0aGUgaGVhZGVyIGluY2x1 ZGVzIGluIHZwY2kvbXNpLmMgYmV0d2VlbiB4ZW4gYW5kIGFzbS4KIC0gU3RvcmUgdGhlIG51bWJl ciBvZiBjb25maWd1cmVkIHZlY3RvcnMgZXZlbiBpZiBNU0kgaXMgbm90IGVuYWJsZWQKICAgYW5k IGFsd2F5cyByZXR1cm4gaXQgaW4gdnBjaV9tc2lfY29udHJvbF9yZWFkLgogLSBGaXgvYWRkIGNv bW1lbnRzIGluIHZwY2lfbXNpX2NvbnRyb2xfd3JpdGUgdG8gY2xhcmlmeSBpbnRlbmRlZAogICBi ZWhhdmlvci4KIC0gU2ltcGxpZnkgdXNhZ2Ugb2YgbWFza3MgaW4gdnBjaV9tc2lfYWRkcmVzc197 dXBwZXJffXdyaXRlLgogLSBBZGQgY29tbWVudCB0byB2cGNpX21zaV9tYXNrX3tyZWFkL3dyaXRl fS4KIC0gRG9uJ3QgdXNlIE1BU0tfRVhUUiBpbiB2cGNpX21zaV9tYXNrX3dyaXRlLgogLSBzL21z aV9vZmZzZXQvcG9zLyBpbiB2cGNpX2luaXRfbXNpLgogLSBNb3ZlIGNvbnRyb2wgdmFyaWFibGUg c2V0dXAgY2xvc2VyIHRvIGl0J3MgdXNhZ2UuCiAtIFVzZSBkJWQgaW4gdnBjaV9kdW1wX21zaS4K IC0gRml4IHByaW50aW5nIG9mIGJpdGZpZWxkIG1hc2sgaW4gdnBjaV9kdW1wX21zaS4KIC0gRml4 IGRlZmluaXRpb24gb2YgTVNJX0FERFJfUkVESVJFQ1RJT05fTUFTSy4KIC0gU2h1ZmZsZSB0aGUg bGF5b3V0IG9mIHZwY2lfbXNpIHRvIG1pbmltaXplIGdhcHMuCiAtIFJlbW92ZSB0aGUgZXJyb3Ig bGFiZWwgaW4gdnBjaV9pbml0X21zaS4KCkNoYW5nZXMgc2luY2UgdjM6CiAtIFByb3BhZ2F0ZSBj aGFuZ2VzIGZyb20gcHJldmlvdXMgdmVyc2lvbnM6IGRyb3AgeGVuXyBwcmVmaXgsIGRyb3AKICAg cmV0dXJuIHZhbHVlIGZyb20gaGFuZGxlcnMsIHVzZSB0aGUgbmV3IHZwY2lfdmFsIGZpZWxkcy4K IC0gVXNlIE1BU0tfRVhUUi4KIC0gUmVtb3ZlIHRoZSB1c2FnZSBvZiBHRU5NQVNLLgogLSBBZGQg R0ZMQUdTX1NISUZUX0RFU1RfSUQgYW5kIHVzZSBpdCBpbiBtc2lfZmxhZ3MuCiAtIEFkZCAiYXJj aCIgdG8gdGhlIE1TSSBhcmNoIHNwZWNpZmljIGZ1bmN0aW9ucy4KIC0gTW92ZSB0aGUgZHVtcGlu ZyBvZiB2UENJIE1TSSBpbmZvcm1hdGlvbiB0byBkdW1wX21zaSAoa2V5ICdNJykuCiAtIFJlbW92 ZSB0aGUgZ3Vlc3RfdmVjdG9ycyBmaWVsZC4KIC0gQWxsb3cgdGhlIGd1ZXN0IHRvIGNoYW5nZSB0 aGUgbnVtYmVyIG9mIGFjdGl2ZSB2ZWN0b3JzIHdpdGhvdXQKICAgaGF2aW5nIHRvIGRpc2FibGUg YW5kIGVuYWJsZSBNU0kuCiAtIENoZWNrIHRoZSBudW1iZXIgb2YgYWN0aXZlIHZlY3RvcnMgd2hl biBwYXJzaW5nIHRoZSBkaXNhYmxlCiAgIG1hc2suCiAtIFJlbW92ZSB0aGUgZGVidWcgbWVzc2Fn ZXMgZnJvbSB2cGNpX2luaXRfbXNpLgogLSBNb3ZlIHRoZSBhcmNoLXNwZWNpZmljIHBhcnQgb2Yg dGhlIGR1bXAgaGFuZGxlciB0byB4ODYvaHZtL3Ztc2kuYy4KIC0gVXNlIHRyeWxvY2sgaW4gdGhl IGR1bXAgaGFuZGxlciB0byBnZXQgdGhlIHZwY2kgbG9jay4KCkNoYW5nZXMgc2luY2UgdjI6CiAt IEFkZCBhbiBhcmNoLXNwZWNpZmljIGFic3RyYWN0aW9uIGxheWVyLiBOb3RlIHRoYXQgdGhpcyBp cyBvbmx5IGltcGxlbWVudGVkCiAgIGZvciB4ODYgY3VycmVudGx5LgogLSBBZGQgYSB3cmFwcGVy IHRvIGRldGVjdCBNU0kgZW5hYmxpbmcgZm9yIHZQQ0kuCi0tLQpOQjogSSd2ZSBvbmx5IGJlZW4g YWJsZSB0byB0ZXN0IHRoaXMgd2l0aCBkZXZpY2VzIHVzaW5nIGEgc2luZ2xlIE1TSQppbnRlcnJ1 cHQgYW5kIG5vIG1hc2sgcmVnaXN0ZXIuIEkgd2lsbCB0cnkgdG8gZmluZCBoYXJkd2FyZSB0aGF0 CnN1cHBvcnRzIHRoZSBtYXNrIHJlZ2lzdGVyIGFuZCBtb3JlIHRoYW4gb25lIHZlY3RvciwgYnV0 IEkgY2Fubm90IG1ha2UKYW55IHByb21pc2VzLgoKSWYgdGhlcmUgYXJlIGRvdWJ0cyBhYm91dCB0 aGUgdW50ZXN0ZWQgcGFydHMgd2UgY291bGQgYWx3YXlzIGZvcmNlIFhlbgp0byByZXBvcnQgbm8g cGVyLXZlY3RvciBtYXNraW5nIHN1cHBvcnQgYW5kIG9ubHkgMSBhdmFpbGFibGUgdmVjdG9yLApi dXQgSSB3b3VsZCByYXRoZXIgYXZvaWQgZG9pbmcgaXQuCi0tLQogeGVuL2FyY2gveDg2L2h2bS92 bXNpLmMgICAgICB8IDE0MiArKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbXNpLmMg ICAgICAgICAgIHwgICAzICsKIHhlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUgICAgfCAgIDIgKy0K IHhlbi9kcml2ZXJzL3ZwY2kvbXNpLmMgICAgICAgfCAzMjYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2RyaXZlcnMvdnBjaS92cGNpLmMgICAgICB8ICAg NCArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oIHwgICA1ICsKIHhlbi9pbmNsdWRlL2Fz bS14ODYvbXNpLmggICAgfCAgIDMgKwogeGVuL2luY2x1ZGUveGVuL2lycS5oICAgICAgICB8ICAg MSArCiB4ZW4vaW5jbHVkZS94ZW4vdnBjaS5oICAgICAgIHwgIDM2ICsrKysrCiA5IGZpbGVzIGNo YW5nZWQsIDUyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2RyaXZlcnMvdnBjaS9tc2kuYwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dm1zaS5jIGIveGVuL2FyY2gveDg2L2h2bS92bXNpLmMKaW5kZXggNzEyNmRlNzg0MS4uYmU1OWM1 NmQ0MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXNpLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS92bXNpLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4K ICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4ZW4vaXJxLmg+CisjaW5jbHVkZSA8 eGVuL3ZwY2kuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lvcmVxLmg+CiAjaW5jbHVkZSA8YXNt L2h2bS9pby5oPgogI2luY2x1ZGUgPGFzbS9odm0vdnBpYy5oPgpAQCAtNjIxLDMgKzYyMiwxNDQg QEAgdm9pZCBtc2l4X3dyaXRlX2NvbXBsZXRpb24oc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCBt c2l4dGJsX3dyaXRlKHYsIGN0cmxfYWRkcmVzcywgNCwgMCkgIT0gWDg2RU1VTF9PS0FZICkKICAg ICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJNU0ktWCB3cml0ZSBjb21wbGV0aW9uIGZh aWx1cmVcbiIpOwogfQorCitzdGF0aWMgdW5zaWduZWQgaW50IG1zaV9nZmxhZ3ModWludDE2X3Qg ZGF0YSwgdWludDY0X3QgYWRkciwgYm9vbCBtYXNrZWQpCit7CisgICAgLyoKKyAgICAgKiBXZSBu ZWVkIHRvIHVzZSB0aGUgRE9NQ1RMIGNvbnN0YW50cyBoZXJlIGJlY2F1c2UgdGhlIG91dHB1dCBv ZiB0aGlzCisgICAgICogZnVuY3Rpb24gaXMgdXNlZCBhcyBpbnB1dCB0byBwdF9pcnFfY3JlYXRl X2JpbmQsIHdoaWNoIGFsc28gdGFrZXMgdGhlCisgICAgICogaW5wdXQgZnJvbSB0aGUgRE9NQ1RM IGl0c2VsZi4KKyAgICAgKi8KKyAgICByZXR1cm4gTUFTS19JTlNSKE1BU0tfRVhUUihhZGRyLCBN U0lfQUREUl9ERVNUX0lEX01BU0spLAorICAgICAgICAgICAgICAgICAgICAgWEVOX0RPTUNUTF9W TVNJX1g4Nl9ERVNUX0lEX01BU0spIHwKKyAgICAgICAgICAgTUFTS19JTlNSKE1BU0tfRVhUUihh ZGRyLCBNU0lfQUREUl9SRURJUkVDVElPTl9NQVNLKSwKKyAgICAgICAgICAgICAgICAgICAgIFhF Tl9ET01DVExfVk1TSV9YODZfUkhfTUFTSykgfAorICAgICAgICAgICBNQVNLX0lOU1IoTUFTS19F WFRSKGFkZHIsIE1TSV9BRERSX0RFU1RNT0RFX01BU0spLAorICAgICAgICAgICAgICAgICAgICAg WEVOX0RPTUNUTF9WTVNJX1g4Nl9ETV9NQVNLKSB8CisgICAgICAgICAgIE1BU0tfSU5TUihNQVNL X0VYVFIoZGF0YSwgTVNJX0RBVEFfREVMSVZFUllfTU9ERV9NQVNLKSwKKyAgICAgICAgICAgICAg ICAgICAgIFhFTl9ET01DVExfVk1TSV9YODZfREVMSVZfTUFTSykgfAorICAgICAgICAgICBNQVNL X0lOU1IoTUFTS19FWFRSKGRhdGEsIE1TSV9EQVRBX1RSSUdHRVJfTUFTSyksCisgICAgICAgICAg ICAgICAgICAgICBYRU5fRE9NQ1RMX1ZNU0lfWDg2X1RSSUdfTUFTSykgfAorICAgICAgICAgICAv KiBOQjogYnkgZGVmYXVsdCBNU0kgdmVjdG9ycyBhcmUgYm91bmQgbWFza2VkLiAqLworICAgICAg ICAgICAobWFza2VkID8gMCA6IFhFTl9ET01DVExfVk1TSV9YODZfVU5NQVNLRUQpOworfQorCit2 b2lkIHZwY2lfbXNpX2FyY2hfbWFzayhzdHJ1Y3QgdnBjaV9tc2kgKm1zaSwgY29uc3Qgc3RydWN0 IHBjaV9kZXYgKnBkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW50 cnksIGJvb2wgbWFzaykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHN0cnVjdCBp cnFfZGVzYyAqZGVzYyA9IGRvbWFpbl9zcGluX2xvY2tfaXJxX2Rlc2MocGRldi0+ZG9tYWluLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNp LT5hcmNoLnBpcnEgKyBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmbGFncyk7CisKKyAgICBpZiAoICFkZXNjICkKKyAgICAgICAg cmV0dXJuOworICAgIGd1ZXN0X21hc2tfbXNpX2lycShkZXNjLCBtYXNrKTsKKyAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXNjLT5sb2NrLCBmbGFncyk7Cit9CisKK2ludCB2cGNpX21zaV9h cmNoX2VuYWJsZShzdHJ1Y3QgdnBjaV9tc2kgKm1zaSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBk ZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvcnMpCit7Cisg ICAgc3RydWN0IG1zaV9pbmZvIG1zaV9pbmZvID0geworICAgICAgICAuc2VnID0gcGRldi0+c2Vn LAorICAgICAgICAuYnVzID0gcGRldi0+YnVzLAorICAgICAgICAuZGV2Zm4gPSBwZGV2LT5kZXZm biwKKyAgICAgICAgLmVudHJ5X25yID0gdmVjdG9ycywKKyAgICB9OworICAgIHVuc2lnbmVkIGlu dCBpOworICAgIGludCByYzsKKworICAgIEFTU0VSVChtc2ktPmFyY2gucGlycSA9PSBJTlZBTElE X1BJUlEpOworCisgICAgLyogR2V0IGEgUElSUS4gKi8KKyAgICByYyA9IGFsbG9jYXRlX2FuZF9t YXBfbXNpX3BpcnEocGRldi0+ZG9tYWluLCAtMSwgJm1zaS0+YXJjaC5waXJxLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUElSUV9UWVBFX01VTFRJX01TSSwgJm1zaV9p bmZvKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIs ICIlMDR4OiUwMng6JTAyeC4ldTogZmFpbGVkIHRvIG1hcCBQSVJROiAlZFxuIiwKKyAgICAgICAg ICAgICAgICAgcGRldi0+c2VnLCBwZGV2LT5idXMsIFBDSV9TTE9UKHBkZXYtPmRldmZuKSwKKyAg ICAgICAgICAgICAgICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pLCByYyk7CisgICAgICAgIHJldHVy biByYzsKKyAgICB9CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHZlY3RvcnM7IGkrKyApCisgICAg eworICAgICAgICB1aW50OF90IHZlY3RvciA9IE1BU0tfRVhUUihtc2ktPmRhdGEsIE1TSV9EQVRB X1ZFQ1RPUl9NQVNLKTsKKyAgICAgICAgdWludDhfdCB2ZWN0b3JfbWFzayA9IDB4ZmYgPj4gKDgg LSBmbHMobXNpLT52ZWN0b3JzKSArIDEpOworICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9iaW5k X3B0X2lycSBiaW5kID0geworICAgICAgICAgICAgLm1hY2hpbmVfaXJxID0gbXNpLT5hcmNoLnBp cnEgKyBpLAorICAgICAgICAgICAgLmlycV90eXBlID0gUFRfSVJRX1RZUEVfTVNJLAorICAgICAg ICAgICAgLnUubXNpLmd2ZWMgPSAodmVjdG9yICYgfnZlY3Rvcl9tYXNrKSB8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICgodmVjdG9yICsgaSkgJiB2ZWN0b3JfbWFzayksCisgICAgICAgICAg ICAudS5tc2kuZ2ZsYWdzID0gbXNpX2dmbGFncyhtc2ktPmRhdGEsIG1zaS0+YWRkcmVzcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtc2ktPm1hc2sgPj4gaSkgJiAx KSwKKyAgICAgICAgfTsKKworICAgICAgICBwY2lkZXZzX2xvY2soKTsKKyAgICAgICAgcmMgPSBw dF9pcnFfY3JlYXRlX2JpbmQocGRldi0+ZG9tYWluLCAmYmluZCk7CisgICAgICAgIGlmICggcmMg KQorICAgICAgICB7CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAg ICAgICAgICAgICAgIiUwNHg6JTAyeDolMDJ4LiV1OiBmYWlsZWQgdG8gYmluZCBQSVJRICV1OiAl ZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHBkZXYtPnNlZywgcGRldi0+YnVzLCBQQ0lfU0xP VChwZGV2LT5kZXZmbiksCisgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhwZGV2LT5kZXZm biksIG1zaS0+YXJjaC5waXJxICsgaSwgcmMpOworICAgICAgICAgICAgd2hpbGUgKCBiaW5kLm1h Y2hpbmVfaXJxLS0gKQorICAgICAgICAgICAgICAgIHB0X2lycV9kZXN0cm95X2JpbmQocGRldi0+ ZG9tYWluLCAmYmluZCk7CisgICAgICAgICAgICBzcGluX2xvY2soJnBkZXYtPmRvbWFpbi0+ZXZl bnRfbG9jayk7CisgICAgICAgICAgICB1bm1hcF9kb21haW5fcGlycShwZGV2LT5kb21haW4sIG1z aS0+YXJjaC5waXJxKTsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwZGV2LT5kb21haW4tPmV2 ZW50X2xvY2spOworICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKKyAgICAgICAgICAgIG1z aS0+YXJjaC5waXJxID0gSU5WQUxJRF9QSVJROworICAgICAgICAgICAgcmV0dXJuIHJjOworICAg ICAgICB9CisgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CisKK3ZvaWQgdnBjaV9tc2lfYXJjaF9kaXNhYmxlKHN0cnVjdCB2cGNpX21zaSAqbXNpLCBj b25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAg IEFTU0VSVChtc2ktPmFyY2gucGlycSAhPSBJTlZBTElEX1BJUlEpOworCisgICAgcGNpZGV2c19s b2NrKCk7CisgICAgZm9yICggaSA9IDA7IGkgPCBtc2ktPnZlY3RvcnM7IGkrKyApCisgICAgewor ICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9iaW5kX3B0X2lycSBiaW5kID0geworICAgICAgICAg ICAgLm1hY2hpbmVfaXJxID0gbXNpLT5hcmNoLnBpcnEgKyBpLAorICAgICAgICAgICAgLmlycV90 eXBlID0gUFRfSVJRX1RZUEVfTVNJLAorICAgICAgICB9OworICAgICAgICBpbnQgcmM7CisKKyAg ICAgICAgcmMgPSBwdF9pcnFfZGVzdHJveV9iaW5kKHBkZXYtPmRvbWFpbiwgJmJpbmQpOworICAg ICAgICBBU1NFUlQoIXJjKTsKKyAgICB9CisKKyAgICBzcGluX2xvY2soJnBkZXYtPmRvbWFpbi0+ ZXZlbnRfbG9jayk7CisgICAgdW5tYXBfZG9tYWluX3BpcnEocGRldi0+ZG9tYWluLCBtc2ktPmFy Y2gucGlycSk7CisgICAgc3Bpbl91bmxvY2soJnBkZXYtPmRvbWFpbi0+ZXZlbnRfbG9jayk7Cisg ICAgcGNpZGV2c191bmxvY2soKTsKKworICAgIG1zaS0+YXJjaC5waXJxID0gSU5WQUxJRF9QSVJR OworfQorCit2b2lkIHZwY2lfbXNpX2FyY2hfaW5pdChzdHJ1Y3QgdnBjaV9tc2kgKm1zaSkKK3sK KyAgICBtc2ktPmFyY2gucGlycSA9IElOVkFMSURfUElSUTsKK30KKwordm9pZCB2cGNpX21zaV9h cmNoX3ByaW50KGNvbnN0IHN0cnVjdCB2cGNpX21zaSAqbXNpKQoreworICAgIHByaW50aygidmVj PSUjMDJ4JTdzJTZzJTNzYXNzZXJ0JTVzJTdzIGRlc3RfaWQ9JWx1IHBpcnE6ICVkXG4iLAorICAg ICAgICAgICBNQVNLX0VYVFIobXNpLT5kYXRhLCBNU0lfREFUQV9WRUNUT1JfTUFTSyksCisgICAg ICAgICAgIG1zaS0+ZGF0YSAmIE1TSV9EQVRBX0RFTElWRVJZX0xPV1BSSSA/ICJsb3dlc3QiIDog ImZpeGVkIiwKKyAgICAgICAgICAgbXNpLT5kYXRhICYgTVNJX0RBVEFfVFJJR0dFUl9MRVZFTCA/ ICJsZXZlbCIgOiAiZWRnZSIsCisgICAgICAgICAgIG1zaS0+ZGF0YSAmIE1TSV9EQVRBX0xFVkVM X0FTU0VSVCA/ICIiIDogImRlIiwKKyAgICAgICAgICAgbXNpLT5hZGRyZXNzICYgTVNJX0FERFJf REVTVE1PREVfTE9HSUMgPyAibG9nIiA6ICJwaHlzIiwKKyAgICAgICAgICAgbXNpLT5hZGRyZXNz ICYgTVNJX0FERFJfUkVESVJFQ1RJT05fTE9XUFJJID8gImxvd2VzdCIgOiAiZml4ZWQiLAorICAg ICAgICAgICBNQVNLX0VYVFIobXNpLT5hZGRyZXNzLCBNU0lfQUREUl9ERVNUX0lEX01BU0spLAor ICAgICAgICAgICBtc2ktPmFyY2gucGlycSk7Cit9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bXNpLmMgYi94ZW4vYXJjaC94ODYvbXNpLmMKaW5kZXggOGM4OWYwNzJhOC4uNTU2Nzk5MGZiZCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21zaS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwpA QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9waHlzZGV2Lmg+CiAjaW5jbHVkZSA8 eGVuL2lvbW11Lmg+CiAjaW5jbHVkZSA8eHNtL3hzbS5oPgorI2luY2x1ZGUgPHhlbi92cGNpLmg+ CiAKIHN0YXRpYyBzOCBfX3JlYWRfbW9zdGx5IHVzZV9tc2kgPSAtMTsKIGJvb2xlYW5fcGFyYW0o Im1zaSIsIHVzZV9tc2kpOwpAQCAtMTUyNyw2ICsxNTI4LDggQEAgc3RhdGljIHZvaWQgZHVtcF9t c2kodW5zaWduZWQgY2hhciBrZXkpCiAgICAgICAgICAgICAgICBhdHRyLmd1ZXN0X21hc2tlZCA/ ICdHJyA6ICcgJywKICAgICAgICAgICAgICAgIG1hc2spOwogICAgIH0KKworICAgIHZwY2lfZHVt cF9tc2koKTsKIH0KIAogc3RhdGljIGludCBfX2luaXQgbXNpX3NldHVwX2tleWhhbmRsZXIodm9p ZCkKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy92 cGNpL01ha2VmaWxlCmluZGV4IDI0MTQ2NzIxMmYuLjYyY2VjOWU4MmIgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUKKysrIGIveGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZQpA QCAtMSArMSBAQAotb2JqLXkgKz0gdnBjaS5vIGhlYWRlci5vCitvYmoteSArPSB2cGNpLm8gaGVh ZGVyLm8gbXNpLm8KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvbXNpLmMgYi94ZW4vZHJp dmVycy92cGNpL21zaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZi ODVkMDllMDgKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vZHJpdmVycy92cGNpL21zaS5jCkBAIC0w LDAgKzEsMzI2IEBACisvKgorICogSGFuZGxlcnMgZm9yIGFjY2Vzc2VzIHRvIHRoZSBNU0kgY2Fw YWJpbGl0eSBzdHJ1Y3R1cmUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENpdHJpeCBTeXN0 ZW1zIFImRAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAy LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisK KyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgorI2luY2x1 ZGUgPHhlbi92cGNpLmg+CisKKyNpbmNsdWRlIDxhc20vbXNpLmg+CisKK3N0YXRpYyB1aW50MzJf dCBjb250cm9sX3JlYWQoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCBy ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit7CisgICAgY29u c3Qgc3RydWN0IHZwY2lfbXNpICptc2kgPSBkYXRhOworCisgICAgcmV0dXJuIE1BU0tfSU5TUihm bHMobXNpLT5tYXhfdmVjdG9ycykgLSAxLCBQQ0lfTVNJX0ZMQUdTX1FNQVNLKSB8CisgICAgICAg ICAgIE1BU0tfSU5TUihmbHMobXNpLT52ZWN0b3JzKSAtIDEsIFBDSV9NU0lfRkxBR1NfUVNJWkUp IHwKKyAgICAgICAgICAgKG1zaS0+ZW5hYmxlZCA/IFBDSV9NU0lfRkxBR1NfRU5BQkxFIDogMCkg fAorICAgICAgICAgICAobXNpLT5tYXNraW5nID8gUENJX01TSV9GTEFHU19NQVNLQklUIDogMCkg fAorICAgICAgICAgICAobXNpLT5hZGRyZXNzNjQgPyBQQ0lfTVNJX0ZMQUdTXzY0QklUIDogMCk7 Cit9CisKK3N0YXRpYyB2b2lkIGNvbnRyb2xfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBk ZXYsIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IHZhbCwgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgdnBjaV9tc2kgKm1zaSA9IGRhdGE7Cisg ICAgdW5zaWduZWQgaW50IHZlY3RvcnMgPSBtaW5fdCh1aW50OF90LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMXUgPDwgTUFTS19FWFRSKHZhbCwgUENJX01TSV9GTEFHU19RU0la RSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ktPm1heF92ZWN0b3JzKTsK KyAgICBib29sIG5ld19lbmFibGVkID0gdmFsICYgUENJX01TSV9GTEFHU19FTkFCTEU7CisKKyAg ICAvKgorICAgICAqIE5vIGNoYW5nZSBpZiB0aGUgZW5hYmxlIGZpZWxkIGFuZCB0aGUgbnVtYmVy IG9mIHZlY3RvcnMgaXMKKyAgICAgKiB0aGUgc2FtZSBvciB0aGUgZGV2aWNlIGlzIG5vdCBlbmFi bGVkLCBpbiB3aGljaCBjYXNlIHRoZQorICAgICAqIHZlY3RvcnMgZmllbGQgY2FuIGJlIHVwZGF0 ZWQgZGlyZWN0bHkuCisgICAgICovCisgICAgaWYgKCBuZXdfZW5hYmxlZCA9PSBtc2ktPmVuYWJs ZWQgJiYKKyAgICAgICAgICh2ZWN0b3JzID09IG1zaS0+dmVjdG9ycyB8fCAhbXNpLT5lbmFibGVk KSApCisgICAgeworICAgICAgICBtc2ktPnZlY3RvcnMgPSB2ZWN0b3JzOworICAgICAgICByZXR1 cm47CisgICAgfQorCisgICAgaWYgKCBuZXdfZW5hYmxlZCApCisgICAgeworICAgICAgICAvKgor ICAgICAgICAgKiBJZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkgZW5hYmxlZCBpdCBtZWFucyB0aGUg bnVtYmVyIG9mCisgICAgICAgICAqIGVuYWJsZWQgbWVzc2FnZXMgaGFzIGNoYW5nZWQuIERpc2Fi bGUgYW5kIHJlLWVuYWJsZSB0aGUKKyAgICAgICAgICogZGV2aWNlIGluIG9yZGVyIHRvIGFwcGx5 IHRoZSBjaGFuZ2UuCisgICAgICAgICAqLworICAgICAgICBpZiAoIG1zaS0+ZW5hYmxlZCApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHZwY2lfbXNpX2FyY2hfZGlzYWJsZShtc2ksIHBkZXYpOwor ICAgICAgICAgICAgbXNpLT5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBp ZiAoIHZwY2lfbXNpX2FyY2hfZW5hYmxlKG1zaSwgcGRldiwgdmVjdG9ycykgKQorICAgICAgICAg ICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHZwY2lfbXNpX2FyY2hfZGlzYWJs ZShtc2ksIHBkZXYpOworCisgICAgbXNpLT52ZWN0b3JzID0gdmVjdG9yczsKKyAgICBtc2ktPmVu YWJsZWQgPSBuZXdfZW5hYmxlZDsKKworICAgIHBjaV9jb25mX3dyaXRlMTYocGRldi0+c2VnLCBw ZGV2LT5idXMsIFBDSV9TTE9UKHBkZXYtPmRldmZuKSwKKyAgICAgICAgICAgICAgICAgICAgIFBD SV9GVU5DKHBkZXYtPmRldmZuKSwgcmVnLAorICAgICAgICAgICAgICAgICAgICAgY29udHJvbF9y ZWFkKHBkZXYsIHJlZywgZGF0YSkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfbXNpKGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgdnBjaV9tc2kgKm1zaSkKK3sKKyAgICBpZiAo ICFtc2ktPmVuYWJsZWQgKQorICAgICAgICByZXR1cm47CisKKyAgICB2cGNpX21zaV9hcmNoX2Rp c2FibGUobXNpLCBwZGV2KTsKKyAgICBpZiAoIHZwY2lfbXNpX2FyY2hfZW5hYmxlKG1zaSwgcGRl diwgbXNpLT52ZWN0b3JzKSApCisgICAgICAgIG1zaS0+ZW5hYmxlZCA9IGZhbHNlOworfQorCisv KiBIYW5kbGVycyBmb3IgdGhlIGFkZHJlc3MgZmllbGQgKDMyYml0IG9yIGxvdyBwYXJ0IG9mIGEg NjRiaXQgYWRkcmVzcykuICovCitzdGF0aWMgdWludDMyX3QgYWRkcmVzc19yZWFkKGNvbnN0IHN0 cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpkYXRhKQoreworICAgIGNvbnN0IHN0cnVjdCB2cGNpX21zaSAqbXNp ID0gZGF0YTsKKworICAgIHJldHVybiBtc2ktPmFkZHJlc3M7Cit9CisKK3N0YXRpYyB2b2lkIGFk ZHJlc3Nfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcs CisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCwgdm9pZCAqZGF0YSkKK3sK KyAgICBzdHJ1Y3QgdnBjaV9tc2kgKm1zaSA9IGRhdGE7CisKKyAgICAvKiBDbGVhciBsb3cgcGFy dC4gKi8KKyAgICBtc2ktPmFkZHJlc3MgJj0gfjB4ZmZmZmZmZmZ1bGw7CisgICAgbXNpLT5hZGRy ZXNzIHw9IHZhbDsKKworICAgIHVwZGF0ZV9tc2kocGRldiwgbXNpKTsKK30KKworLyogSGFuZGxl cnMgZm9yIHRoZSBoaWdoIHBhcnQgb2YgYSA2NGJpdCBhZGRyZXNzIGZpZWxkLiAqLworc3RhdGlj IHVpbnQzMl90IGFkZHJlc3NfaGlfcmVhZChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5z aWduZWQgaW50IHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0 YSkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgdnBjaV9tc2kgKm1zaSA9IGRhdGE7CisKKyAgICByZXR1 cm4gbXNpLT5hZGRyZXNzID4+IDMyOworfQorCitzdGF0aWMgdm9pZCBhZGRyZXNzX2hpX3dyaXRl KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwsIHZvaWQgKmRhdGEpCit7CisgICAgc3Ry dWN0IHZwY2lfbXNpICptc2kgPSBkYXRhOworCisgICAgLyogQ2xlYXIgYW5kIHVwZGF0ZSBoaWdo IHBhcnQuICovCisgICAgbXNpLT5hZGRyZXNzICY9IDB4ZmZmZmZmZmY7CisgICAgbXNpLT5hZGRy ZXNzIHw9ICh1aW50NjRfdCl2YWwgPDwgMzI7CisKKyAgICB1cGRhdGVfbXNpKHBkZXYsIG1zaSk7 Cit9CisKKy8qIEhhbmRsZXJzIGZvciB0aGUgZGF0YSBmaWVsZC4gKi8KK3N0YXRpYyB1aW50MzJf dCBkYXRhX3JlYWQoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcs CisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit7CisgICAgY29uc3Qgc3Ry dWN0IHZwY2lfbXNpICptc2kgPSBkYXRhOworCisgICAgcmV0dXJuIG1zaS0+ZGF0YTsKK30KKwor c3RhdGljIHZvaWQgZGF0YV93cml0ZShjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWdu ZWQgaW50IHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsLCB2b2lkICpk YXRhKQoreworICAgIHN0cnVjdCB2cGNpX21zaSAqbXNpID0gZGF0YTsKKworICAgIG1zaS0+ZGF0 YSA9IHZhbDsKKworICAgIHVwZGF0ZV9tc2kocGRldiwgbXNpKTsKK30KKworLyogSGFuZGxlcnMg Zm9yIHRoZSBNU0kgbWFzayBiaXRzLiAqLworc3RhdGljIHVpbnQzMl90IG1hc2tfcmVhZChjb25z dCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJlZywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqZGF0YSkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgdnBjaV9tc2kgKm1z aSA9IGRhdGE7CisKKyAgICByZXR1cm4gbXNpLT5tYXNrOworfQorCitzdGF0aWMgdm9pZCBtYXNr X3dyaXRlKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAorICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwsIHZvaWQgKmRhdGEpCit7CisgICAgc3Ry dWN0IHZwY2lfbXNpICptc2kgPSBkYXRhOworICAgIHVpbnQzMl90IGRtYXNrID0gbXNpLT5tYXNr IF4gdmFsOworCisgICAgaWYgKCAhZG1hc2sgKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo IG1zaS0+ZW5hYmxlZCApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgICAg ICBmb3IgKCBpID0gZmZzKGRtYXNrKSAtIDE7IGRtYXNrICYmIGkgPCBtc2ktPnZlY3RvcnM7Cisg ICAgICAgICAgICAgIGkgPSBmZnMoZG1hc2spIC0gMSApCisgICAgICAgIHsKKyAgICAgICAgICAg IHZwY2lfbXNpX2FyY2hfbWFzayhtc2ksIHBkZXYsIGksICh2YWwgPj4gaSkgJiAxKTsKKyAgICAg ICAgICAgIF9fY2xlYXJfYml0KGksICZkbWFzayk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt c2ktPm1hc2sgPSB2YWw7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9tc2koc3RydWN0IHBjaV9kZXYg KnBkZXYpCit7CisgICAgdWludDhfdCBzbG90ID0gUENJX1NMT1QocGRldi0+ZGV2Zm4pLCBmdW5j ID0gUENJX0ZVTkMocGRldi0+ZGV2Zm4pOworICAgIHVuc2lnbmVkIGludCBwb3MgPSBwY2lfZmlu ZF9jYXBfb2Zmc2V0KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DQVBfSURfTVNJKTsKKyAgICB1 aW50MTZfdCBjb250cm9sOworICAgIGludCByZXQ7CisKKyAgICBpZiAoICFwb3MgKQorICAgICAg ICByZXR1cm4gMDsKKworICAgIHBkZXYtPnZwY2ktPm1zaSA9IHh6YWxsb2Moc3RydWN0IHZwY2lf bXNpKTsKKyAgICBpZiAoICFwZGV2LT52cGNpLT5tc2kgKQorICAgICAgICByZXR1cm4gLUVOT01F TTsKKworICAgIHJldCA9IHZwY2lfYWRkX3JlZ2lzdGVyKHBkZXYtPnZwY2ksIGNvbnRyb2xfcmVh ZCwgY29udHJvbF93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2lfY29udHJv bF9yZWcocG9zKSwgMiwgcGRldi0+dnBjaS0+bXNpKTsKKyAgICBpZiAoIHJldCApCisgICAgICAg IC8qCisgICAgICAgICAqIE5COiB0aGVyZSdzIG5vIG5lZWQgdG8gZnJlZSB0aGUgbXNpIHN0cnVj dCBvciByZW1vdmUgdGhlIHJlZ2lzdGVyCisgICAgICAgICAqIGhhbmRsZXJzIGZvcm0gdGhlIGNv bmZpZyBzcGFjZSwgdGhlIGNhbGxlciB3aWxsIHRha2UgY2FyZSBvZiB0aGUKKyAgICAgICAgICog Y2xlYW51cC4KKyAgICAgICAgICovCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAvKiBHZXQg dGhlIG1heGltdW0gbnVtYmVyIG9mIHZlY3RvcnMgdGhlIGRldmljZSBzdXBwb3J0cy4gKi8KKyAg ICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBm dW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNpX2NvbnRyb2xfcmVnKHBvcykp OworCisgICAgLyoKKyAgICAgKiBGSVhNRTogSSd2ZSBvbmx5IGJlZW4gYWJsZSB0byB0ZXN0IHRo aXMgY29kZSB3aXRoIGRldmljZXMgdXNpbmcgYSBzaW5nbGUKKyAgICAgKiBNU0kgaW50ZXJydXB0 IGFuZCBubyBtYXNrIHJlZ2lzdGVyLgorICAgICAqLworICAgIHBkZXYtPnZwY2ktPm1zaS0+bWF4 X3ZlY3RvcnMgPSBtdWx0aV9tc2lfY2FwYWJsZShjb250cm9sKTsKKyAgICBBU1NFUlQocGRldi0+ dnBjaS0+bXNpLT5tYXhfdmVjdG9ycyA8PSAzMik7CisKKyAgICAvKiBUaGUgbXVsdGlwbGUgbWVz c2FnZSBlbmFibGUgaXMgMCBhZnRlciByZXNldCAoMSBtZXNzYWdlIGVuYWJsZWQpLiAqLworICAg IHBkZXYtPnZwY2ktPm1zaS0+dmVjdG9ycyA9IDE7CisKKyAgICAvKiBObyBQSVJRIGJvdW5kIHll dC4gKi8KKyAgICB2cGNpX21zaV9hcmNoX2luaXQocGRldi0+dnBjaS0+bXNpKTsKKworICAgIHBk ZXYtPnZwY2ktPm1zaS0+YWRkcmVzczY0ID0gaXNfNjRiaXRfYWRkcmVzcyhjb250cm9sKTsKKyAg ICBwZGV2LT52cGNpLT5tc2ktPm1hc2tpbmcgPSBpc19tYXNrX2JpdF9zdXBwb3J0KGNvbnRyb2wp OworCisgICAgcmV0ID0gdnBjaV9hZGRfcmVnaXN0ZXIocGRldi0+dnBjaSwgYWRkcmVzc19yZWFk LCBhZGRyZXNzX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaV9sb3dlcl9h ZGRyZXNzX3JlZyhwb3MpLCA0LCBwZGV2LT52cGNpLT5tc2kpOworICAgIGlmICggcmV0ICkKKyAg ICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldCA9IHZwY2lfYWRkX3JlZ2lzdGVyKHBkZXYtPnZw Y2ksIGRhdGFfcmVhZCwgZGF0YV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt c2lfZGF0YV9yZWcocG9zLCBwZGV2LT52cGNpLT5tc2ktPmFkZHJlc3M2NCksIDIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGRldi0+dnBjaS0+bXNpKTsKKyAgICBpZiAoIHJldCApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpZiAoIHBkZXYtPnZwY2ktPm1zaS0+YWRkcmVzczY0 ICkKKyAgICB7CisgICAgICAgIHJldCA9IHZwY2lfYWRkX3JlZ2lzdGVyKHBkZXYtPnZwY2ksIGFk ZHJlc3NfaGlfcmVhZCwgYWRkcmVzc19oaV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbXNpX3VwcGVyX2FkZHJlc3NfcmVnKHBvcyksIDQsIHBkZXYtPnZwY2ktPm1zaSk7 CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisg ICAgaWYgKCBwZGV2LT52cGNpLT5tc2ktPm1hc2tpbmcgKQorICAgIHsKKyAgICAgICAgcmV0ID0g dnBjaV9hZGRfcmVnaXN0ZXIocGRldi0+dnBjaSwgbWFza19yZWFkLCBtYXNrX3dyaXRlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2lfbWFza19iaXRzX3JlZyhwb3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkZXYtPnZwY2kt Pm1zaS0+YWRkcmVzczY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgcGRl di0+dnBjaS0+bXNpKTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgcmV0dXJuIHJl dDsKKyAgICAgICAgLyoKKyAgICAgICAgICogRklYTUU6IGRvIG5vdCBhZGQgYW55IGhhbmRsZXIg Zm9yIHRoZSBwZW5kaW5nIGJpdHMgZm9yIHRoZSBoYXJkd2FyZQorICAgICAgICAgKiBkb21haW4s IHdoaWNoIG1lYW5zIGRpcmVjdCBhY2Nlc3MuIFRoaXMgd2lsbCBiZSByZXZpc2l0ZWQgd2hlbgor ICAgICAgICAgKiBhZGRpbmcgdW5wcml2aWxlZ2VkIGRvbWFpbiBzdXBwb3J0LgorICAgICAgICAg Ki8KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KK1JFR0lTVEVSX1ZQQ0lfSU5JVChpbml0X21z aSk7CisKK3ZvaWQgdnBjaV9kdW1wX21zaSh2b2lkKQoreworICAgIGNvbnN0IHN0cnVjdCBkb21h aW4gKmQ7CisKKyAgICByY3VfcmVhZF9sb2NrKCZkb21saXN0X3JlYWRfbG9jayk7CisgICAgZm9y X2VhY2hfZG9tYWluICggZCApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldiAq cGRldjsKKworICAgICAgICBpZiAoICFoYXNfdnBjaShkKSApCisgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICBwcmludGsoInZQQ0kgTVNJIGQlZFxuIiwgZC0+ZG9tYWluX2lkKTsKKwor ICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcGRldiwgJmQtPmFyY2gucGRldl9saXN0LCBk b21haW5fbGlzdCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2cGNpX21z aSAqbXNpID0gcGRldi0+dnBjaS0+bXNpOworCisgICAgICAgICAgICBpZiAoICFzcGluX3RyeWxv Y2soJnBkZXYtPnZwY2ktPmxvY2spICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBw cmludGsoIlVuYWJsZSB0byBnZXQgdlBDSSBsb2NrLCBza2lwcGluZ1xuIik7CisgICAgICAgICAg ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggbXNpICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwcmludGsoIiUwNHg6JTAyeDolMDJ4LiV1 XG4iLCBwZGV2LT5zZWcsIHBkZXYtPmJ1cywKKyAgICAgICAgICAgICAgICAgICAgICAgUENJX1NM T1QocGRldi0+ZGV2Zm4pLCBQQ0lfRlVOQyhwZGV2LT5kZXZmbikpOworCisgICAgICAgICAgICAg ICAgcHJpbnRrKCIgIGVuYWJsZWQ6ICVkIDY0LWJpdDogJWQiLAorICAgICAgICAgICAgICAgICAg ICAgICBtc2ktPmVuYWJsZWQsIG1zaS0+YWRkcmVzczY0KTsKKyAgICAgICAgICAgICAgICBpZiAo IG1zaS0+bWFza2luZyApCisgICAgICAgICAgICAgICAgICAgIHByaW50aygiIG1hc2s9JTA4eCIs IG1zaS0+bWFzayk7CisgICAgICAgICAgICAgICAgcHJpbnRrKCIgdmVjdG9ycyBtYXg6ICV1IGVu YWJsZWQ6ICV1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBtc2ktPm1heF92ZWN0b3JzLCBt c2ktPnZlY3RvcnMpOworCisgICAgICAgICAgICAgICAgdnBjaV9tc2lfYXJjaF9wcmludChtc2kp OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzcGluX3VubG9jaygmcGRldi0+dnBjaS0+ bG9jayk7CisgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKKyAgICAgICAg fQorICAgIH0KKyAgICByY3VfcmVhZF91bmxvY2soJmRvbWxpc3RfcmVhZF9sb2NrKTsKK30KKwor LyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJT RCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJz LW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL3Zw Y2kuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCmluZGV4IGU1YjQ5YjlkODIuLjg4Yjc5MDZh NTAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCisrKyBiL3hlbi9kcml2ZXJz L3ZwY2kvdnBjaS5jCkBAIC00Nyw2ICs0NywxMCBAQCB2b2lkIHZwY2lfcmVtb3ZlX2RldmljZShz dHJ1Y3QgcGNpX2RldiAqcGRldikKICAgICAgICAgeGZyZWUocik7CiAgICAgfQogICAgIHNwaW5f dW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsKKyNpZmRlZiBfX1hFTl9fCisgICAgLyogTkI6IGZp ZWxkcyBiZWxvdyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIHVzZXItc3BhY2UgdGVzdCBoYXJuZXNz LiAqLworICAgIHhmcmVlKHBkZXYtPnZwY2ktPm1zaSk7CisjZW5kaWYKICAgICB4ZnJlZShwZGV2 LT52cGNpKTsKICAgICBwZGV2LT52cGNpID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lvLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oCmluZGV4 IDE2NDY1Y2ViMzAuLjBmZWRiMzQ3M2MgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2lvLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaApAQCAtMTI3LDYgKzEy NywxMSBAQCB2b2lkIGh2bV9kcGNpX2VvaShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg Z3Vlc3RfaXJxLAogdm9pZCBtc2l4X3dyaXRlX2NvbXBsZXRpb24oc3RydWN0IHZjcHUgKik7CiB2 b2lkIG1zaXh0YmxfaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIAorLyogQXJjaC1zcGVjaWZpYyBN U0kgZGF0YSBmb3IgdlBDSS4gKi8KK3N0cnVjdCB2cGNpX2FyY2hfbXNpIHsKKyAgICBpbnQgcGly cTsKK307CisKIGVudW0gc3RkdmdhX2NhY2hlX3N0YXRlIHsKICAgICBTVERWR0FfQ0FDSEVfVU5J TklUSUFMSVpFRCwKICAgICBTVERWR0FfQ0FDSEVfRU5BQkxFRCwKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNpLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21zaS5oCmluZGV4IDM3 ZDM3YjgyMGUuLjEwMzg3ZGNlMmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNp LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc2kuaApAQCAtNDgsNiArNDgsNyBAQAogI2Rl ZmluZSBNU0lfQUREUl9SRURJUkVDVElPTl9TSElGVCAgMwogI2RlZmluZSBNU0lfQUREUl9SRURJ UkVDVElPTl9DUFUgICAgKDAgPDwgTVNJX0FERFJfUkVESVJFQ1RJT05fU0hJRlQpCiAjZGVmaW5l IE1TSV9BRERSX1JFRElSRUNUSU9OX0xPV1BSSSAoMSA8PCBNU0lfQUREUl9SRURJUkVDVElPTl9T SElGVCkKKyNkZWZpbmUgTVNJX0FERFJfUkVESVJFQ1RJT05fTUFTSyAgICgxIDw8IE1TSV9BRERS X1JFRElSRUNUSU9OX1NISUZUKQogCiAjZGVmaW5lIE1TSV9BRERSX0RFU1RfSURfU0hJRlQJCTEy CiAjZGVmaW5lCSBNU0lfQUREUl9ERVNUX0lEX01BU0sJCTB4MDBmZjAwMApAQCAtMTUyLDYgKzE1 Myw4IEBAIGludCBtc2lfZnJlZV9pcnEoc3RydWN0IG1zaV9kZXNjICplbnRyeSk7CiAJKCAoaXM2 NGJpdCA9PSAxKSA/IGJhc2UrUENJX01TSV9EQVRBXzY0IDogYmFzZStQQ0lfTVNJX0RBVEFfMzIg KQogI2RlZmluZSBtc2lfbWFza19iaXRzX3JlZyhiYXNlLCBpczY0Yml0KSBcCiAJKCAoaXM2NGJp dCA9PSAxKSA/IGJhc2UrUENJX01TSV9NQVNLX0JJVCA6IGJhc2UrUENJX01TSV9NQVNLX0JJVC00 KQorI2RlZmluZSBtc2lfcGVuZGluZ19iaXRzX3JlZyhiYXNlLCBpczY0Yml0KSBcCisJKChiYXNl KSArIFBDSV9NU0lfTUFTS19CSVQgKyAoKGlzNjRiaXQpID8gNCA6IDApKQogI2RlZmluZSBtc2lf ZGlzYWJsZShjb250cm9sKQkJY29udHJvbCAmPSB+UENJX01TSV9GTEFHU19FTkFCTEUKICNkZWZp bmUgbXVsdGlfbXNpX2NhcGFibGUoY29udHJvbCkgXAogCSgxIDw8ICgoY29udHJvbCAmIFBDSV9N U0lfRkxBR1NfUU1BU0spID4+IDEpKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lycS5o IGIveGVuL2luY2x1ZGUveGVuL2lycS5oCmluZGV4IDBhYTgxN2UyNjYuLjU4NmI3ODM5M2EgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pcnEuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaXJx LmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBzdHJ1Y3QgcGlycSB7CiAgICAgc3RydWN0IGFyY2hfcGly cSBhcmNoOwogfTsKIAorI2RlZmluZSBJTlZBTElEX1BJUlEgKC0xKQogI2RlZmluZSBwaXJxX2lu Zm8oZCwgcCkgKChzdHJ1Y3QgcGlycSAqKXJhZGl4X3RyZWVfbG9va3VwKCYoZCktPnBpcnFfdHJl ZSwgcCkpCiAKIC8qIFVzZSB0aGlzIGluc3RlYWQgb2YgcGlycV9pbmZvKCkgaWYgdGhlIHN0cnVj dHVyZSBtYXkgbmVlZCBhbGxvY2F0aW5nLiAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVu L3ZwY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi92cGNpLmgKaW5kZXggODQzMWIyYjM4Zi4uYzY5NTk4 Nzg1YyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3ZwY2kuaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4vdnBjaS5oCkBAIC04Niw2ICs4NiwyOCBAQCBzdHJ1Y3QgdnBjaSB7CiAgICAgICAgIGJv b2wgcm9tX2VuYWJsZWQgICAgICA6IDE7CiAgICAgICAgIC8qIEZJWE1FOiBjdXJyZW50bHkgdGhl cmUncyBubyBzdXBwb3J0IGZvciBTUi1JT1YuICovCiAgICAgfSBoZWFkZXI7CisKKyAgICAvKiBN U0kgZGF0YS4gKi8KKyAgICBzdHJ1Y3QgdnBjaV9tc2kgeworICAgICAgICAvKiBBZGRyZXNzLiAq LworICAgICAgICB1aW50NjRfdCBhZGRyZXNzOworICAgICAgICAvKiBNYXNrIGJpdGZpZWxkLiAq LworICAgICAgICB1aW50MzJfdCBtYXNrOworICAgICAgICAvKiBEYXRhLiAqLworICAgICAgICB1 aW50MTZfdCBkYXRhOworICAgICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiB2ZWN0b3JzIHN1cHBv cnRlZCBieSB0aGUgZGV2aWNlLiAqLworICAgICAgICB1aW50OF90IG1heF92ZWN0b3JzIDogNTsK KyAgICAgICAgLyogRW5hYmxlZD8gKi8KKyAgICAgICAgYm9vbCBlbmFibGVkICAgICAgICA6IDE7 CisgICAgICAgIC8qIFN1cHBvcnRzIHBlci12ZWN0b3IgbWFza2luZz8gKi8KKyAgICAgICAgYm9v bCBtYXNraW5nICAgICAgICA6IDE7CisgICAgICAgIC8qIDY0LWJpdCBhZGRyZXNzIGNhcGFibGU/ ICovCisgICAgICAgIGJvb2wgYWRkcmVzczY0ICAgICAgOiAxOworICAgICAgICAvKiBOdW1iZXIg b2YgdmVjdG9ycyBjb25maWd1cmVkLiAqLworICAgICAgICB1aW50OF90IHZlY3RvcnMgICAgIDog NTsKKyAgICAgICAgLyogQXJjaC1zcGVjaWZpYyBkYXRhLiAqLworICAgICAgICBzdHJ1Y3QgdnBj aV9hcmNoX21zaSBhcmNoOworICAgIH0gKm1zaTsKICNlbmRpZgogfTsKIApAQCAtOTcsNiArMTE5 LDIwIEBAIHN0cnVjdCB2cGNpX3ZjcHUgewogICAgIGJvb2wgcm9tIDogMTsKIH07CiAKKyNpZmRl ZiBfX1hFTl9fCit2b2lkIHZwY2lfZHVtcF9tc2kodm9pZCk7CisKKy8qIEFyY2gtc3BlY2lmaWMg dlBDSSBNU0kgaGVscGVycy4gKi8KK3ZvaWQgdnBjaV9tc2lfYXJjaF9tYXNrKHN0cnVjdCB2cGNp X21zaSAqbXNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBlbnRyeSwgYm9vbCBtYXNrKTsKK2ludCBfX211c3RfY2hlY2sg dnBjaV9tc2lfYXJjaF9lbmFibGUoc3RydWN0IHZwY2lfbXNpICptc2ksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9ycyk7 Cit2b2lkIHZwY2lfbXNpX2FyY2hfZGlzYWJsZShzdHJ1Y3QgdnBjaV9tc2kgKm1zaSwgY29uc3Qg c3RydWN0IHBjaV9kZXYgKnBkZXYpOwordm9pZCB2cGNpX21zaV9hcmNoX2luaXQoc3RydWN0IHZw Y2lfbXNpICptc2kpOwordm9pZCB2cGNpX21zaV9hcmNoX3ByaW50KGNvbnN0IHN0cnVjdCB2cGNp X21zaSAqbXNpKTsKKyNlbmRpZiAvKiBfX1hFTl9fICovCisKICNlbHNlIC8qICFDT05GSUdfSEFT X1ZQQ0kgKi8KIHN0cnVjdCB2cGNpX3ZjcHUgewogfTsKLS0gCjIuMTYuMgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=