From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v7 for-next 09/12] vpci/bars: add handlers to map the BARs Date: Wed, 18 Oct 2017 12:40:31 +0100 Message-ID: <20171018114034.36587-10-roger.pau@citrix.com> References: <20171018114034.36587-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e4mid-0004BE-Vh for xen-devel@lists.xenproject.org; Wed, 18 Oct 2017 11:41:04 +0000 In-Reply-To: <20171018114034.36587-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , konrad.wilk@oracle.com, George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , boris.ostrovsky@oracle.com, Roger Pau Monne List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGEgc2V0IG9mIGhhbmRsZXJzIHRoYXQgdHJhcCBhY2Nlc3NlcyB0byB0aGUgUENJ IEJBUnMgYW5kIHRoZQpjb21tYW5kIHJlZ2lzdGVyLCBpbiBvcmRlciB0byBzbm9vcCBCQVIgc2l6 aW5nIGFuZCBCQVIgcmVsb2NhdGlvbi4KClRoZSBjb21tYW5kIGhhbmRsZXIgaXMgdXNlZCB0byBk ZXRlY3QgY2hhbmdlcyB0byBiaXQgMiAocmVzcG9uc2UgdG8KbWVtb3J5IHNwYWNlIGFjY2Vzc2Vz KSwgYW5kIG1hcHMvdW5tYXBzIHRoZSBCQVJzIG9mIHRoZSBkZXZpY2UgaW50bwp0aGUgZ3Vlc3Qg cDJtLiBBIHJhbmdlc2V0IGlzIHVzZWQgaW4gb3JkZXIgdG8gZmlndXJlIG91dCB3aGljaCBtZW1v cnkKdG8gbWFwL3VubWFwLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBrZWVwIHRyYWNrIG9mIHRo ZSBwb3NzaWJsZQpvdmVybGFwcyB3aXRoIG90aGVyIEJBUnMsIGFuZCB3aWxsIGFsc28gc2ltcGxp ZnkgTVNJLVggc3VwcG9ydCwgd2hlcmUKY2VydGFpbiByZWdpb25zIG9mIGEgQkFSIG1pZ2h0IGJl IHVzZWQgZm9yIHRoZSBNU0ktWCB0YWJsZSBvciBQQkEuCgpUaGUgQkFSIHJlZ2lzdGVyIGhhbmRs ZXJzIGFyZSB1c2VkIHRvIGRldGVjdCBhdHRlbXB0cyBieSB0aGUgZ3Vlc3QgdG8Kc2l6ZSBvciBy ZWxvY2F0ZSB0aGUgQkFScy4KCk5vdGUgdGhhdCB0aGUgbG9uZyBydW5uaW5nIEJBUiBtYXBwaW5n IGFuZCB1bm1hcHBpbmcgb3BlcmF0aW9ucyBhcmUKZGVmZXJyZWQgdG8gYmUgcGVyZm9ybWVkIGJ5 IGh2bV9pb19wZW5kaW5nLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHNhZmVseQpwcmVlbXB0ZWQuCgpT aWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KLS0t CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogR2Vvcmdl IER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlh bi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNj OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVl Z2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpD aGFuZ2VzIHNpbmNlIHY2OgogLSBzL3ZwY2lfY2hlY2tfcGVuZGluZy92cGNpX3Byb2Nlc3NfcGVu ZGluZy8uCiAtIEltcHJvdmUgZXJyb3IgaGFuZGxpbmcgaW4gdnBjaV9wcm9jZXNzX3BlbmRpbmcu CiAtIEFkZCBhIGNvbW1lbnQgdGhhdCBleHBsYWlucyBob3cgdnBjaV9jaGVja19iYXJfb3Zlcmxh cCB3b3Jrcy4KIC0gQWRkIGVycm9yIG1lc3NhZ2VzIHRvIHZwY2lfbW9kaWZ5X2JhcnMgYW5kIHZw Y2lfbW9kaWZ5X3JvbS4KIC0gSW50cm9kdWNlIHZwY2lfaHdfcmVhZDE2LzMyLCBpbiBvcmRlciB0 byBwYXNzdGhyb3VnaCByZWFkcyB0bwogICB0aGUgdW5kZXJseWluZyBody4KIC0gUHJpbnQgQkFS IG51bWJlciBvbiBlcnJvciBpbiB2cGNpX2Jhcl93cml0ZS4KIC0gUGxhY2UgdGhlIENPTkZJR19I QVNfUENJIGd1YXJkcyBpbnNpZGUgdGhlIHZwY2kuaCBoZWFkZXIgYW5kCiAgIHByb3ZpZGUgYW4g ZW1wdHkgdnBjaV92Y3B1IHN0cnVjdHVyZSBmb3IgdGhlICFDT05GSUdfSEFTX1BDSSBjYXNlLgog LSBEZWZpbmUgQ09ORklHX0hBU19QQ0kgaW4gdGhlIHRlc3QgaGFybmVzcyBlbXVsLmggaGVhZGVy IGJlZm9yZQogICBpbmNsdWRpbmcgdnBjaS5oCiAtIEFkZCBBUk0gVE9ET3MgYW5kIGFuIEFSTS1z cGVjaWZpYyBib2RnZSB0byB2cGNpX21hcF9yYW5nZSBkdWUgdG8KICAgdGhlIGxhY2sgb2YgcHJl ZW1wdGlvbiBpbiB7dW59bWFwX21taW9fcmVnaW9ucy4KIC0gTWFrZSB2cGNpX21heWJlX2RlZmVy X21hcCB2b2lkLgogLSBTZXQgcm9tX2VuYWJsZWQgaW4gdnBjaV9pbml0X2JhcnMuCiAtIERlZmVy IGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgbWVtb3J5IGRlY29kaW5nIChvciB0aGUgUk9NIGVuYWJs ZQogICBiaXQpIHVudGlsIHRoZSBtZW1vcnkgaGFzIGJlZW4gbWFwcGVkL3VubWFwcGVkLgogLSBS ZW1vdmUgdnBjaV8gcHJlZml4IGZyb20gc3RhdGljIGZ1bmN0aW9ucy4KIC0gVXNlIHRoZSBzYW1l IGNvZGUgaW4gb3JkZXIgdG8gbWFwIHRoZSBnZW5lcmFsIEJBUnMgYW5kIHRoZSBST00KICAgQkFS cy4KIC0gUmVtb3ZlIHRoZSBzZWcvYnVzIGxvY2FsIHZhcmlhYmxlcyBhbmQgdXNlIHBkZXYtPntz ZWcsYnVzfSBpbnN0ZWFkLgogLSBDb252ZXJ0IHRoZSBib29scyBpbiB0aGUgQkFSIHJlbGF0ZWQg c3RydWN0cyBpbnRvIGJvb2wgYml0ZmllbGRzLgogLSBBZGQgdGhlIG11c3RfY2hlY2sgYXR0cmli dXRlIHRvIHZwY2lfcHJvY2Vzc19wZW5kaW5nLgogLSBPcGVuIGNvZGUgY2hlY2tfYmFyX292ZXJs YXAgaW5zaWRlIG1vZGlmeV9iYXJzLCB3aGljaCB3YXMgaXQncyBvbmx5CiAgIHVzZXIuCgpDaGFu Z2VzIHNpbmNlIHY1OgogLSBTd2l0Y2ggdG8gdGhlIG5ldyBoYW5kbGVyIHR5cGUuCiAtIFVzZSBw Y2lfc2JkZl90IHRvIHNpemUgdGhlIEJBUnMuCiAtIFVzZSBhIHNpbmdsZSByZXR1cm4gZm9yIHZw Y2lfbW9kaWZ5X2Jhci4KIC0gRG8gbm90IHJldHVybiBhbiBlcnJvciBjb2RlIGZyb20gdnBjaV9t b2RpZnlfYmFycywganVzdCBsb2cgdGhlCiAgIGZhaWx1cmUuCiAtIFJlbW92ZSB0aGUgJ3Npemlu ZycgcGFyYW1ldGVyLiBJbnN0ZWFkIGp1c3QgbGV0IHRoZSBndWVzdCB3cml0ZQogICBkaXJlY3Rs eSB0byB0aGUgQkFSLCBhbmQgcmVhZCB0aGUgdmFsdWUgYmFjay4gVGhpcyBzaW1wbGlmaWVzIHRo ZQogICBCQVIgcmVnaXN0ZXIgaGFuZGxlcnMsIHNwZWNpYWxseSB0aGUgcmVhZCBvbmUuCiAtIEln bm9yZSBST00gQkFSIHdyaXRlcyB3aXRoIG1lbW9yeSBkZWNvZGluZyBlbmFibGVkIGFuZCBST00g ZW5hYmxlZC4KIC0gRG8gbm90IHByb3BhZ2F0ZSBmYWlsdXJlcyB0byBzZXR1cCB0aGUgUk9NIEJB UiBpbiB2cGNpX2luaXRfYmFycy4KIC0gQWRkIHByZWVtcHRpb24gc3VwcG9ydCB0byB0aGUgQkFS IG1hcHBpbmcvdW5tYXBwaW5nIG9wZXJhdGlvbnMuCgpDaGFuZ2VzIHNpbmNlIHY0OgogLSBFeHBh bmQgY29tbWl0IG1lc3NhZ2UgdG8gbWVudGlvbiB0aGUgcmVhc29uIGJlaGluZCB0aGUgdXNhZ2Ug b2YKICAgcmFuZ2VzZXRzLgogLSBGaXggY29tbWVudCByZWxhdGVkIHRvIHRoZSBpbmNsdXNpdmVu ZXNzIG9mIHJhbmdlc2V0cy4KIC0gRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gdGhlIGNhbGN1bGF0 aW9uIG9mIHRoZSBlbmQgb2YgbWVtb3J5CiAgIHJlZ2lvbnMuCiAtIFN0b3JlIHRoZSBzdGF0ZSBv ZiB0aGUgQkFSIChtYXBwZWQvdW5tYXBwZWQpIGluIHRoZSB2cGNpX2JhcgogICBlbmFibGVkIGZp ZWxkLCBwcmV2aW91c2x5IHdhcyBvbmx5IHVzZWQgYnkgUk9Ncy4KIC0gRml4IGRvdWJsZSBuZWdh dGlvbiBvZiByZXR1cm4gY29kZS4KIC0gTW9kaWZ5IHZwY2lfY21kX3dyaXRlIHNvIGl0IGhhcyBh IHNpbmdsZSBjYWxsIHRvIHBjaV9jb25mX3dyaXRlMTYuCiAtIFByaW50IGEgd2FybmluZyB3aGVu IHRyeWluZyB0byB3cml0ZSB0byB0aGUgQkFSIHdpdGggbWVtb3J5CiAgIGRlY29kaW5nIGVuYWJs ZWQgKGFuZCBpZ25vcmUgdGhlIHdyaXRlKS4KIC0gUmVtb3ZlIGhlYWRlcl90eXBlIGxvY2FsIHZh cmlhYmxlLCBpdCdzIHVzZWQgb25seSBvbmNlLgogLSBNb3ZlIHRoZSByZWFkIG9mIHRoZSBjb21t YW5kIHJlZ2lzdGVyLgogLSBSZXN0b3JlIHByZXZpb3VzIGNvbW1hbmQgcmVnaXN0ZXIgdmFsdWUg aW4gdGhlIGV4aXQgcGF0aHMuCiAtIE9ubHkgc2V0IGFkZHJlc3MgdG8gSU5WQUxJRF9QQUREUiBp ZiB0aGUgaW5pdGlhbCBCQVIgdmFsdWUgbWF0Y2hlcwogICAgfjAgJiBQQ0lfQkFTRV9BRERSRVNT X01FTV9NQVNLLgogLSBEb24ndCBkaXNhYmxlIHRoZSBlbmFibGVkIGJpdCBpbiB0aGUgZXhwYW5z aW9uIFJPTSByZWdpc3RlciwgbWVtb3J5CiAgIGRlY29kaW5nIGlzIGFscmVhZHkgZGlzYWJsZWQg YW5kIHRha2VzIHByZWNlZGVuY2UuCiAtIERvbid0IHVzZSBJTlZBTElEX1BBRERSLCBqdXN0IHNl dCB0aGUgaW5pdGlhbCBCQVIgYWRkcmVzcyB0byB0aGUKICAgdmFsdWUgZm91bmQgaW4gdGhlIGhh cmR3YXJlLgogLSBJbnRyb2R1Y2Ugcm9tX2VuYWJsZWQgdG8gc3RvcmUgdGhlIHN0YXR1cyBvZiB0 aGUKICAgUENJX1JPTV9BRERSRVNTX0VOQUJMRSBiaXQuCiAtIFJlb3JkZXIgZmllbGRzIG9mIHRo ZSBzdHJ1Y3R1cmUgdG8gcHJldmVudCBob2xlcy4KCkNoYW5nZXMgc2luY2UgdjM6CiAtIFByb3Bh Z2F0ZSBwcmV2aW91cyBjaGFuZ2VzOiBkcm9wIHhlbl8gcHJlZml4IGFuZCB1c2UgdTgvdTE2L3Uz MgogICBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyBoYWxmX3dvcmQvd29yZC9kb3VibGVfd29yZC4K IC0gQ29uc3RpZnkgc29tZSBvZiB0aGUgcGFyYW1lcnRlcnMuCiAtIHMvVlBDSV9CQVJfTUVNL1ZQ Q0lfQkFSX01FTTMyLy4KIC0gU2ltcGxpZnkgdGhlIG51bWJlciBvZiBmaWVsZHMgc3RvcmVkIGZv ciBlYWNoIEJBUiwgYSBzaW5nbGUgYWRkcmVzcwogICBmaWVsZCBpcyBzdG9yZWQgYW5kIGNvbnRh aW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBCQVIgYm90aCBvbiBYZW4gYW5kCiAgIGluIHRoZSBndWVz dC4KIC0gQWxsb3cgdGhlIGd1ZXN0IHRvIG1vdmUgdGhlIEJBUnMgYXJvdW5kIGluIHRoZSBwaHlz aWNhbCBtZW1vcnkgbWFwLgogLSBBZGQgc3VwcG9ydCBmb3IgZXhwYW5zaW9uIFJPTSBCQVJzLgog LSBEbyBub3QgY2FjaGUgdGhlIHZhbHVlIG9mIHRoZSBjb21tYW5kIHJlZ2lzdGVyLgogLSBSZW1v dmUgYSBsYWJlbCB1c2VkIGluIHZwY2lfY21kX3dyaXRlLgogLSBGaXggdGhlIGNhbGN1bGF0aW9u IG9mIHRoZSBzaXppbmcgbWFzayBpbiB2cGNpX2Jhcl93cml0ZS4KIC0gQ2hlY2sgdGhlIG1lbW9y eSBkZWNvZGUgYml0IGluIG9yZGVyIHRvIGRlY2lkZSBpZiBhIEJBUiBpcwogICBwb3NpdGlvbmVk IG9yIG5vdC4KIC0gRGlzYWJsZSBtZW1vcnkgZGVjb2RpbmcgYmVmb3JlIHNpemluZyB0aGUgQkFS cyBpbiBYZW4uCiAtIFdoZW4gbWFwcGluZy91bm1hcHBpbmcgQkFScyBjaGVjayBpZiB0aGVyZSdz IG92ZXJsYXAgYmV0d2VlbiBCQVJzLAogICBpbiBvcmRlciB0byBhdm9pZCB1bm1hcHBpbmcgbWVt b3J5IHJlcXVpcmVkIGJ5IGFub3RoZXIgQkFSLgogLSBJbnRyb2R1Y2UgYSBtYWNybyB0byBjaGVj ayB3aGV0aGVyIGEgQkFSIGlzIG1hcHBhYmxlIG9yIG5vdC4KIC0gQWRkIGEgY29tbWVudCByZWdh cmRpbmcgdGhlIGxhY2sgb2Ygc3VwcG9ydCBmb3IgU1ItSU9WLgogLSBSZW1vdmUgdGhlIHVzYWdl IG9mIHRoZSBHRU5NQVNLIG1hY3JvLgoKQ2hhbmdlcyBzaW5jZSB2MjoKIC0gRGV0ZWN0IHVuc2V0 IEJBUnMgYW5kIGFsbG93IHRoZSBoYXJkd2FyZSBkb21haW4gdG8gcG9zaXRpb24gdGhlbS4KLS0t CiB0b29scy90ZXN0cy92cGNpL2VtdWwuaCAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vaW9y ZXEuYyAgfCAgIDQgKwogeGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZSB8ICAgMiArLQogeGVuL2Ry aXZlcnMvdnBjaS9oZWFkZXIuYyB8IDUxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB4ZW4vZHJpdmVycy92cGNpL3ZwY2kuYyAgIHwgIDE1ICsrCiB4ZW4v aW5jbHVkZS94ZW4vc2NoZWQuaCAgIHwgICA2ICsKIHhlbi9pbmNsdWRlL3hlbi92cGNpLmggICAg fCAgNTYgKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNjAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vZHJpdmVycy92cGNpL2hlYWRlci5jCgpkaWZm IC0tZ2l0IGEvdG9vbHMvdGVzdHMvdnBjaS9lbXVsLmggYi90b29scy90ZXN0cy92cGNpL2VtdWwu aAppbmRleCBlYmQ2NzY3MjNkLi5mY2E5Y2IwYmJmIDEwMDY0NAotLS0gYS90b29scy90ZXN0cy92 cGNpL2VtdWwuaAorKysgYi90b29scy90ZXN0cy92cGNpL2VtdWwuaApAQCAtODAsNiArODAsNyBA QCB0eXBlZGVmIHVuaW9uIHsKICAgICB9OwogfSBwY2lfc2JkZl90OwogCisjZGVmaW5lIENPTkZJ R19IQVNfUENJCiAjaW5jbHVkZSAidnBjaS5oIgogCiAjZGVmaW5lIF9faHdkb21faW5pdApkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jCmluZGV4IGVjOWIzMWZmYzQuLjkxNmE1Njk0NzAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vaW9yZXEuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKQEAgLTI2LDYgKzI2 LDcgQEAKICNpbmNsdWRlIDx4ZW4vZG9tYWluLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CiAj aW5jbHVkZSA8eGVuL3BhZ2luZy5oPgorI2luY2x1ZGUgPHhlbi92cGNpLmg+CiAKICNpbmNsdWRl IDxhc20vaHZtL2h2bS5oPgogI2luY2x1ZGUgPGFzbS9odm0vaW9yZXEuaD4KQEAgLTQ4LDYgKzQ5 LDkgQEAgYm9vbCBodm1faW9fcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdikKICAgICBzdHJ1Y3QgZG9t YWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogCisg ICAgaWYgKCBoYXNfdnBjaShkKSAmJiB2cGNpX3Byb2Nlc3NfcGVuZGluZyh2KSApCisgICAgICAg IHJldHVybiB0cnVlOworCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvdnBjaS9NYWtlZmlsZSBiL3hlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUKaW5kZXggODQw YTkwNjQ3MC4uMjQxNDY3MjEyZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9NYWtlZmls ZQorKysgYi94ZW4vZHJpdmVycy92cGNpL01ha2VmaWxlCkBAIC0xICsxIEBACi1vYmoteSArPSB2 cGNpLm8KK29iai15ICs9IHZwY2kubyBoZWFkZXIubwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv dnBjaS9oZWFkZXIuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTAzZWZmZmM3MQotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMKQEAgLTAsMCArMSw1MTggQEAKKy8qCisgKiBHZW5lcmlj IGZ1bmN0aW9uYWxpdHkgZm9yIGhhbmRsaW5nIGFjY2Vzc2VzIHRvIHRoZSBQQ0kgaGVhZGVyIGZy b20gdGhlCisgKiBjb25maWd1cmF0aW9uIHNwYWNlLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAx NyBDaXRyaXggU3lzdGVtcyBSJkQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UsIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL3ZwY2ku aD4KKyNpbmNsdWRlIDx4ZW4vcDJtLWNvbW1vbi5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+ CisKKyNpbmNsdWRlIDxhc20vZXZlbnQuaD4KKworI2RlZmluZSBNQVBQQUJMRV9CQVIoeCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoeCkt PnR5cGUgPT0gVlBDSV9CQVJfTUVNMzIgfHwgKHgpLT50eXBlID09IFZQQ0lfQkFSX01FTTY0X0xP IHx8ICAgXAorICAgICAoeCktPnR5cGUgPT0gVlBDSV9CQVJfUk9NKQorCitzdHJ1Y3QgbWFwX2Rh dGEgeworICAgIHN0cnVjdCBkb21haW4gKmQ7CisgICAgYm9vbCBtYXA7Cit9OworCitzdGF0aWMg aW50IG1hcF9yYW5nZSh1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSwgdm9pZCAqZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmMpCit7CisgICAgY29uc3Qg c3RydWN0IG1hcF9kYXRhICptYXAgPSBkYXRhOworICAgIGludCByYzsKKworICAgIGZvciAoIDsg OyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUgPSBlIC0gcyArIDE7CisKKyAg ICAgICAgLyoKKyAgICAgICAgICogQVJNIFRPRE9zOgorICAgICAgICAgKiAtIE9uIEFSTSB3aGV0 aGVyIHRoZSBtZW1vcnkgaXMgcHJlZmV0Y2hhYmxlIG9yIG5vdCBzaG91bGQgYmUgcGFzc2VkCisg ICAgICAgICAqICAgdG8gbWFwX21taW9fcmVnaW9ucyBpbiBvcmRlciB0byBkZWNpZGUgd2hpY2gg bWVtb3J5IGF0dHJpYnV0ZXMKKyAgICAgICAgICogICBzaG91bGQgYmUgdXNlZC4KKyAgICAgICAg ICoKKyAgICAgICAgICogLSB7dW59bWFwX21taW9fcmVnaW9ucyBkb2Vzbid0IHN1cHBvcnQgcHJl ZW1wdGlvbiwgaGVuY2UgdGhlIGJvZGdlCisgICAgICAgICAqICAgYmVsb3cgaW4gb3JkZXIgdG8g bGltaXQgdGhlIGFtb3VudCBvZiBtYXBwaW5ncyB0byA2NCBwYWdlcyBmb3IKKyAgICAgICAgICog ICBlYWNoIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgICAqLworCisjaWZkZWYgQ09ORklHX0FSTQor ICAgICAgICBzaXplID0gbWluKDY0dWwsIHNpemUpOworI2VuZGlmCisKKyAgICAgICAgcmMgPSAo bWFwLT5tYXAgPyBtYXBfbW1pb19yZWdpb25zIDogdW5tYXBfbW1pb19yZWdpb25zKQorICAgICAg ICAgICAgIChtYXAtPmQsIF9nZm4ocyksIHNpemUsIF9tZm4ocykpOworICAgICAgICBpZiAoIHJj ID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgICAqYyArPSBzaXplOworI2lmZGVmIENPTkZJ R19BUk0KKyAgICAgICAgICAgIHJjID0gLUVSRVNUQVJUOworI2VuZGlmCisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHJjIDwgMCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HCisgICAgICAgICAgICAgICAgICAgIkZhaWxl ZCB0byBpZGVudGl0eSAlc21hcCBbJSIgUFJJX2dmbiAiLCAlIiBQUklfZ2ZuICIpIGZvciBkJWQ6 ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIG1hcCA/ICIiIDogInVuIiwgcywgZSwgbWFwLT5k LT5kb21haW5faWQsIHJjKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg IEFTU0VSVChyYyA8IHNpemUpOworICAgICAgICAqYyArPSByYzsKKyAgICAgICAgcyArPSByYzsK KyAgICAgICAgaWYgKCBnZW5lcmFsX3ByZWVtcHRfY2hlY2soKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGlmICggIWlzX2lkbGVfdmNwdShjdXJyZW50KSApCisgICAgICAgICAgICAgICAgcmV0 dXJuIC1FUkVTVEFSVDsKKworICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIG1v ZGlmeV9kZWNvZGluZyhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCBtYXAsIGJvb2wg cm9tKQoreworICAgIHN0cnVjdCB2cGNpX2hlYWRlciAqaGVhZGVyID0gJnBkZXYtPnZwY2ktPmhl YWRlcjsKKyAgICB1aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2LT5kZXZmbiksIGZ1bmMgPSBQ Q0lfRlVOQyhwZGV2LT5kZXZmbik7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaGVhZGVyLT5iYXJzKTsgaSsrICkKKyAgICB7CisgICAgICAg IGlmICggcm9tICYmIGhlYWRlci0+YmFyc1tpXS50eXBlID09IFZQQ0lfQkFSX1JPTSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCByb21fcG9zID0gKGkgPT0gNikgPyBQQ0lf Uk9NX0FERFJFU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiBQQ0lfUk9NX0FERFJFU1MxOworICAgICAgICAgICAgdWludDMyX3QgdmFsID0gcGNpX2NvbmZf cmVhZDMyKHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbV9wb3MpOworCisgICAgICAgICAgICBoZWFk ZXItPmJhcnNbaV0uZW5hYmxlZCA9IGhlYWRlci0+YmFyc1tpXS5yb21fZW5hYmxlZCA9IG1hcDsK KworICAgICAgICAgICAgdmFsICY9IH5QQ0lfUk9NX0FERFJFU1NfRU5BQkxFOworICAgICAgICAg ICAgdmFsIHw9IG1hcCA/IFBDSV9ST01fQUREUkVTU19FTkFCTEUgOiAwOworICAgICAgICAgICAg cGNpX2NvbmZfd3JpdGUzMihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVuYywgcm9tX3Bv cywgdmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICggIXJv bSAmJiAoaGVhZGVyLT5iYXJzW2ldLnR5cGUgIT0gVlBDSV9CQVJfUk9NIHx8CisgICAgICAgICAg ICAgICAgICAgICAgaGVhZGVyLT5iYXJzW2ldLnJvbV9lbmFibGVkKSApCisgICAgICAgICAgICBo ZWFkZXItPmJhcnNbaV0uZW5hYmxlZCA9IG1hcDsKKyAgICB9CisKKyAgICBpZiAoICFyb20gKQor ICAgIHsKKyAgICAgICAgdWludDE2X3QgY21kID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNlZywg cGRldi0+YnVzLCBzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnVuYywgUENJX0NPTU1BTkQpOworCisgICAgICAgIGNtZCAmPSB+UENJX0NPTU1BTkRfTUVNT1JZ OworICAgICAgICBjbWQgfD0gbWFwID8gUENJX0NPTU1BTkRfTUVNT1JZIDogMDsKKyAgICAgICAg cGNpX2NvbmZfd3JpdGUxNihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVuYywgUENJX0NP TU1BTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY21kKTsKKyAgICB9Cit9CisKK2Jvb2wg dnBjaV9wcm9jZXNzX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYpCit7CisgICAgd2hpbGUgKCB2LT52 cGNpLm1lbSApCisgICAgeworICAgICAgICBzdHJ1Y3QgbWFwX2RhdGEgZGF0YSA9IHsKKyAgICAg ICAgICAgIC5kID0gdi0+ZG9tYWluLAorICAgICAgICAgICAgLm1hcCA9IHYtPnZwY2kubWFwLAor ICAgICAgICB9OworCisgICAgICAgIHN3aXRjaCAoIHJhbmdlc2V0X2NvbnN1bWVfcmFuZ2VzKHYt PnZwY2kubWVtLCBtYXBfcmFuZ2UsICZkYXRhKSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAt RVJFU1RBUlQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSAwOgorICAg ICAgICAgICAgaWYgKCB2LT52cGNpLm1hcCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgc3Bpbl9sb2NrKCZ2LT52cGNpLnBkZXYtPnZwY2ktPmxvY2spOworICAgICAgICAgICAgICAg IG1vZGlmeV9kZWNvZGluZyh2LT52cGNpLnBkZXYsIHYtPnZwY2kubWFwLCB2LT52cGNpLnJvbSk7 CisgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnYtPnZwY2kucGRldi0+dnBjaS0+bG9jayk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaC4gKi8KKyAgICAgICAg Y2FzZSAtRU5PTUVNOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIE90aGVyIGVycm9y cyBhcmUgaWdub3JlZCwgaG9wcGluZyB0aGF0IGF0IGxlYXN0IHNvbWUgcmVnaW9ucworICAgICAg ICAgICAgICogd2lsbCBiZSBtYXBwZWQgYW5kIHRoYXQgd291bGQgYmUgZW5vdWdoIGZvciB0aGUg ZGV2aWNlIHRvCisgICAgICAgICAgICAgKiBmdW5jdGlvbi4gTm90ZSB0aGF0IGluIHRoZSB1bm1h cCBjYXNlIHRoZSBtZW1vcnkgZGVjb2Rpbmcgb3IKKyAgICAgICAgICAgICAqIFJPTSBlbmFibGUg Yml0IGhhdmUgYWxyZWFkeSBiZWVuIHRvZ2dsZWQgb2ZmIGJlZm9yZSBhdHRlbXB0aW5nCisgICAg ICAgICAgICAgKiB0byBwZXJmb3JtIHRoZSBwMm0gdW5tYXAuCisgICAgICAgICAgICAgKi8KKyAg ICAgICAgICAgIHJhbmdlc2V0X2Rlc3Ryb3kodi0+dnBjaS5tZW0pOworICAgICAgICAgICAgdi0+ dnBjaS5tZW0gPSBOVUxMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIG1heWJlX2RlZmVyX21hcChzdHJ1 Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKm1lbSwgYm9vbCBtYXAsIGJvb2wgcm9tKQor eworICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKKworICAgIGlmICggaXNfaWRsZV92 Y3B1KGN1cnIpICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBtYXBfZGF0YSBkYXRhID0geyAuZCA9 IGQsIC5tYXAgPSB0cnVlIH07CisKKyAgICAgICAgLyoKKyAgICAgICAgICogT25seSB1c2VkIGZv ciBkb21haW4gY29uc3RydWN0aW9uIGluIG9yZGVyIHRvIG1hcCB0aGUgQkFScworICAgICAgICAg KiBvZiBkZXZpY2VzIHdpdGggbWVtb3J5IGRlY29kaW5nIGVuYWJsZWQuCisgICAgICAgICAqLwor ICAgICAgICBBU1NFUlQobWFwICYmICFyb20pOworICAgICAgICByYW5nZXNldF9jb25zdW1lX3Jh bmdlcyhtZW0sIG1hcF9yYW5nZSwgJmRhdGEpOworICAgICAgICBtb2RpZnlfZGVjb2RpbmcocGRl diwgdHJ1ZSwgZmFsc2UpOworICAgICAgICByYW5nZXNldF9kZXN0cm95KG1lbSk7CisgICAgfQor ICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIE5COiB3aGVuIGRlZmVycmlu ZyB0aGUge3VufW1hcCB0aGUgc3RhdGUgb2YgdGhlIGRldmljZSBzaG91bGQgbm90IGJlCisgICAg ICAgICAqIHRydXN0ZWQuIEZvciBleGFtcGxlIHRoZSBlbmFibGUgYml0IGlzIHRvZ2dsZWQgYWZ0 ZXIgdGhlIGRldmljZSBpcworICAgICAgICAgKiBtYXBwZWQuIFRoaXMgY2FuIGxlYWQgdG8gcGFy YWxsZWwgbWFwcGluZyBvcGVyYXRpb25zIGJlaW5nIHN0YXJ0ZWQKKyAgICAgICAgICogZm9yIHRo ZSBzYW1lIGRldmljZSBpZiB0aGUgZG9tYWluIGlzIG5vdCB3ZWxsLWJlaGF2ZWQuCisgICAgICAg ICAqCisgICAgICAgICAqIEluIGFueSBjYXNlLCB0aGUgd29yc2UgdGhhdCBjYW4gaGFwcGVuIGFy ZSBlcnJvcnMgZnJvbSB0aGUge3VufW1hcAorICAgICAgICAgKiBvcGVyYXRpb25zLCB3aGljaCB3 aWxsIGxlYWQgdG8gdGhlIGRldmljZXMgbm90IHdvcmtpbmcgcHJvcGVybHkuCisgICAgICAgICAq LworICAgICAgICBBU1NFUlQoY3Vyci0+ZG9tYWluID09IGQpOworICAgICAgICBjdXJyLT52cGNp LnBkZXYgPSBwZGV2OworICAgICAgICBjdXJyLT52cGNpLm1lbSA9IG1lbTsKKyAgICAgICAgY3Vy ci0+dnBjaS5tYXAgPSBtYXA7CisgICAgICAgIGN1cnItPnZwY2kucm9tID0gcm9tOworICAgIH0K K30KKworc3RhdGljIHZvaWQgbW9kaWZ5X2JhcnMoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYs IGJvb2wgbWFwLCBib29sIHJvbSkKK3sKKyAgICBzdHJ1Y3QgdnBjaV9oZWFkZXIgKmhlYWRlciA9 ICZwZGV2LT52cGNpLT5oZWFkZXI7CisgICAgc3RydWN0IHJhbmdlc2V0ICptZW0gPSByYW5nZXNl dF9uZXcoTlVMTCwgTlVMTCwgMCk7CisgICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnRtcDsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoICFtYXAgKQorICAgICAg ICBtb2RpZnlfZGVjb2RpbmcocGRldiwgZmFsc2UsIHJvbSk7CisKKyAgICBpZiAoICFtZW0gKQor ICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIENyZWF0ZSBhIHJhbmdlc2V0IHRoYXQg cmVwcmVzZW50cyB0aGUgY3VycmVudCBkZXZpY2UgQkFScyBtZW1vcnkgcmVnaW9uCisgICAgICog YW5kIGNvbXBhcmUgaXQgYWdhaW5zdCBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmUgQkFSIG1lbW9y eSByZWdpb25zLiBJZgorICAgICAqIGFuIG92ZXJsYXAgaXMgZm91bmQsIHN1YnRyYWN0IGl0IGZy b20gdGhlIHJlZ2lvbiB0byBiZQorICAgICAqIG1hcHBlZC91bm1hcHBlZC4KKyAgICAgKgorICAg ICAqIE5COiB0aGUgcmFuZ2VzZXQgdXNlcyBpbmNsdXNpdmUgZnJhbWUgbnVtYmVycy4KKyAgICAg Ki8KKworICAgIC8qCisgICAgICogRmlyc3QgZmlsbCB0aGUgcmFuZ2VzZXQgd2l0aCBhbGwgdGhl IEJBUnMgb2YgdGhpcyBkZXZpY2Ugb3Igd2l0aCB0aGUgUk9NCisgICAgICogQkFSIG9ubHksIGRl cGVuZGluZyBvbiB3aGV0aGVyIHRoZSBndWVzdCBpcyB0b2dnbGluZyB0aGUgbWVtb3J5IGRlY29k ZQorICAgICAqIGJpdCBvZiB0aGUgY29tbWFuZCByZWdpc3Rlciwgb3IgdGhlIGVuYWJsZSBiaXQg b2YgdGhlIFJPTSBCQVIgcmVnaXN0ZXIuCisgICAgICovCisgICAgZm9yICggaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGhlYWRlci0+YmFycyk7IGkrKyApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1 Y3QgdnBjaV9iYXIgKmJhciA9ICZoZWFkZXItPmJhcnNbaV07CisKKyAgICAgICAgaWYgKCAhTUFQ UEFCTEVfQkFSKGJhcikgfHwKKyAgICAgICAgICAgICByb20gPyBiYXItPnR5cGUgIT0gVlBDSV9C QVJfUk9NCisgICAgICAgICAgICAgICAgIDogKGJhci0+dHlwZSA9PSBWUENJX0JBUl9ST00gJiYg IWJhci0+cm9tX2VuYWJsZWQpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJj ID0gcmFuZ2VzZXRfYWRkX3JhbmdlKG1lbSwgUEZOX0RPV04oYmFyLT5hZGRyKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEZOX0RPV04oYmFyLT5hZGRyICsgYmFyLT5zaXplIC0g MSkpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKFhF TkxPR19HX1dBUk5JTkcKKyAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFkZCBbJSIgUFJJ X2dmbiAiLCAlIiBQUklfZ2ZuICIpOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICBQRk5fRE9X TihiYXItPmFkZHIpLCBQRk5fRE9XTihiYXItPmFkZHIgKyBiYXItPnNpemUgLSAxKSwKKyAgICAg ICAgICAgICAgICAgICByYyk7CisgICAgICAgICAgICByYW5nZXNldF9kZXN0cm95KG1lbSk7Cisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIENo ZWNrIGZvciBvdmVybGFwcyB3aXRoIG90aGVyIEJBUnMuIE5vdGUgdGhhdCBvbmx5IEJBUnMgdGhh dCBhcmUKKyAgICAgKiBjdXJyZW50bHkgbWFwcGVkIChlbmFibGVkKSBhcmUgY2hlY2tlZCBmb3Ig b3ZlcmxhcHMuCisgICAgICovCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsICZwZGV2LT5k b21haW4tPmFyY2gucGRldl9saXN0LCBkb21haW5fbGlzdCkKKyAgICAgICAgZm9yICggaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHRtcC0+dnBjaS0+aGVhZGVyLmJhcnMpOyBpKysgKQorICAgICAgICB7 CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdnBjaV9iYXIgKmJhciA9ICZ0bXAtPnZwY2ktPmhl YWRlci5iYXJzW2ldOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCA9IFBGTl9ET1dO KGJhci0+YWRkcik7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZCA9IFBGTl9ET1dOKGJh ci0+YWRkciArIGJhci0+c2l6ZSAtIDEpOworCisgICAgICAgICAgICBpZiAoICFiYXItPmVuYWJs ZWQgfHwgIU1BUFBBQkxFX0JBUihiYXIpIHx8CisgICAgICAgICAgICAgICAgICFyYW5nZXNldF9v dmVybGFwc19yYW5nZShtZW0sIHN0YXJ0LCBlbmQpICkKKyAgICAgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICAgICAgcmMgPSByYW5nZXNldF9yZW1vdmVfcmFuZ2UobWVtLCBzdGFydCwg ZW5kKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HCisgICAgICAgICAgICAgICAgICAgICAgICJGYWls ZWQgdG8gcmVtb3ZlIFslIiBQUklfZ2ZuICIsICUiIFBSSV9nZm4gIik6ICVkXG4iLAorICAgICAg ICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCByYyk7CisgICAgICAgICAgICAgICAgcmFuZ2Vz ZXRfZGVzdHJveShtZW0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorCisgICAgbWF5YmVfZGVmZXJfbWFwKHBkZXYtPmRvbWFpbiwgcGRldiwgbWVt LCBtYXAsIHJvbSk7Cit9CisKK3N0YXRpYyB2b2lkIGNtZF93cml0ZShjb25zdCBzdHJ1Y3QgcGNp X2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJlZywKKyAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBjbWQsIHZvaWQgKmRhdGEpCit7CisgICAgdWludDhfdCBzZWcgPSBwZGV2LT5zZWcsIGJ1 cyA9IHBkZXYtPmJ1czsKKyAgICB1aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2LT5kZXZmbiks IGZ1bmMgPSBQQ0lfRlVOQyhwZGV2LT5kZXZmbik7CisgICAgdWludDE2X3QgY3VycmVudF9jbWQg PSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIHJlZyk7CisKKyAgICAvKgor ICAgICAqIExldCBEb20wIHBsYXkgd2l0aCBhbGwgdGhlIGJpdHMgZGlyZWN0bHkgZXhjZXB0IGZv ciB0aGUgbWVtb3J5CisgICAgICogZGVjb2Rpbmcgb25lLgorICAgICAqLworICAgIGlmICggKGNt ZCBeIGN1cnJlbnRfY21kKSAmIFBDSV9DT01NQU5EX01FTU9SWSApCisgICAgICAgIG1vZGlmeV9i YXJzKHBkZXYsIGNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSwgZmFsc2UpOworICAgIGVsc2UKKyAg ICAgICAgcGNpX2NvbmZfd3JpdGUxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgcmVnLCBjbWQpOwor fQorCitzdGF0aWMgdm9pZCBiYXJfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVu c2lnbmVkIGludCByZWcsCisgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsLCB2b2lk ICpkYXRhKQoreworICAgIHN0cnVjdCB2cGNpX2JhciAqYmFyID0gZGF0YTsKKyAgICB1aW50OF90 IHNlZyA9IHBkZXYtPnNlZywgYnVzID0gcGRldi0+YnVzOworICAgIHVpbnQ4X3Qgc2xvdCA9IFBD SV9TTE9UKHBkZXYtPmRldmZuKSwgZnVuYyA9IFBDSV9GVU5DKHBkZXYtPmRldmZuKTsKKyAgICBi b29sIGhpID0gZmFsc2U7CisKKyAgICBpZiAoIHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xv dCwgZnVuYywgUENJX0NPTU1BTkQpICYKKyAgICAgICAgIFBDSV9DT01NQU5EX01FTU9SWSApCisg ICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICIl MDR4OiUwMng6JTAyeC4ldTogaWdub3JlZCBCQVIgJWx1IHdyaXRlIHdpdGggbWVtb3J5IGRlY29k aW5nIGVuYWJsZWRcbiIsCisgICAgICAgICAgICAgICAgc2VnLCBidXMsIHNsb3QsIGZ1bmMsIChw ZGV2LT52cGNpLT5oZWFkZXIuYmFycyAtIGJhcikgLyA0KTsKKyAgICAgICAgcmV0dXJuOworICAg IH0KKworICAgIGlmICggYmFyLT50eXBlID09IFZQQ0lfQkFSX01FTTY0X0hJICkKKyAgICB7Cisg ICAgICAgIEFTU0VSVChyZWcgPiBQQ0lfQkFTRV9BRERSRVNTXzApOworICAgICAgICBiYXItLTsK KyAgICAgICAgaGkgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHZhbCAmPSBQQ0lf QkFTRV9BRERSRVNTX01FTV9NQVNLOworCisgICAgLyoKKyAgICAgKiBVcGRhdGUgdGhlIGNhY2hl ZCBhZGRyZXNzLCBzbyB0aGF0IHdoZW4gbWVtb3J5IGRlY29kaW5nIGlzIGVuYWJsZWQKKyAgICAg KiBYZW4gY2FuIG1hcCB0aGUgQkFSIGludG8gdGhlIGd1ZXN0IHAybS4KKyAgICAgKi8KKyAgICBi YXItPmFkZHIgJj0gfigweGZmZmZmZmZmdWxsIDw8IChoaSA/IDMyIDogMCkpOworICAgIGJhci0+ YWRkciB8PSAodWludDY0X3QpdmFsIDw8IChoaSA/IDMyIDogMCk7CisKKyAgICAvKiBNYWtlIHN1 cmUgWGVuIHdyaXRlcyBiYWNrIHRoZSBzYW1lIHZhbHVlIGZvciB0aGUgQkFSIFJPIGJpdHMuICov CisgICAgaWYgKCAhaGkgKQorICAgIHsKKyAgICAgICAgdmFsIHw9IGJhci0+dHlwZSA9PSBWUENJ X0JBUl9NRU0zMiA/IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfMzIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVf NjQ7CisgICAgICAgIHZhbCB8PSBiYXItPnByZWZldGNoYWJsZSA/IFBDSV9CQVNFX0FERFJFU1Nf TUVNX1BSRUZFVENIIDogMDsKKyAgICB9CisKKyAgICBwY2lfY29uZl93cml0ZTMyKHBkZXYtPnNl ZywgcGRldi0+YnVzLCBQQ0lfU0xPVChwZGV2LT5kZXZmbiksCisgICAgICAgICAgICAgICAgICAg ICBQQ0lfRlVOQyhwZGV2LT5kZXZmbiksIHJlZywgdmFsKTsKK30KKworc3RhdGljIHZvaWQgcm9t X3dyaXRlKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAorICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCwgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1 Y3QgdnBjaV9iYXIgKnJvbSA9IGRhdGE7CisgICAgdWludDhfdCBzZWcgPSBwZGV2LT5zZWcsIGJ1 cyA9IHBkZXYtPmJ1czsKKyAgICB1aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2LT5kZXZmbiks IGZ1bmMgPSBQQ0lfRlVOQyhwZGV2LT5kZXZmbik7CisgICAgdWludDE2X3QgY21kID0gcGNpX2Nv bmZfcmVhZDE2KHNlZywgYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ09NTUFORCk7CisgICAgYm9vbCBu ZXdfZW5hYmxlZCA9IHZhbCAmIFBDSV9ST01fQUREUkVTU19FTkFCTEU7CisKKyAgICBpZiAoIChj bWQgJiBQQ0lfQ09NTUFORF9NRU1PUlkpICYmIHJvbS0+cm9tX2VuYWJsZWQgJiYgbmV3X2VuYWJs ZWQgKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklORywKKyAgICAgICAgICAg ICAgICAiJTA0eDolMDJ4OiUwMnguJXU6IGlnbm9yZWQgUk9NIEJBUiB3cml0ZSB3aXRoIG1lbW9y eSBkZWNvZGluZyBlbmFibGVkXG4iLAorICAgICAgICAgICAgICAgIHNlZywgYnVzLCBzbG90LCBm dW5jKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICggIXJvbS0+cm9tX2VuYWJs ZWQgKQorICAgICAgICByb20tPmFkZHIgPSB2YWwgJiBQQ0lfUk9NX0FERFJFU1NfTUFTSzsKKwor ICAgIC8qIENoZWNrIGlmIFJPTSBCQVIgc2hvdWxkIGJlIG1hcHBlZC91bm1hcHBlZC4gKi8KKyAg ICBpZiAoIChjbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlkpICYmIHJvbS0+cm9tX2VuYWJsZWQgIT0g bmV3X2VuYWJsZWQgKQorICAgICAgICBtb2RpZnlfYmFycyhwZGV2LCBuZXdfZW5hYmxlZCwgdHJ1 ZSk7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcm9tLT5yb21fZW5hYmxlZCA9IG5ld19lbmFi bGVkOworICAgICAgICBwY2lfY29uZl93cml0ZTMyKHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90 LCBmdW5jLCByZWcsIHZhbCk7CisgICAgfQorCisgICAgaWYgKCAhbmV3X2VuYWJsZWQgKQorICAg ICAgICByb20tPmFkZHIgPSB2YWwgJiBQQ0lfUk9NX0FERFJFU1NfTUFTSzsKK30KKworc3RhdGlj IGludCBpbml0X2JhcnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7CisgICAgdWludDhfdCBzbG90 ID0gUENJX1NMT1QocGRldi0+ZGV2Zm4pLCBmdW5jID0gUENJX0ZVTkMocGRldi0+ZGV2Zm4pOwor ICAgIHVpbnQxNl90IGNtZDsKKyAgICB1aW50NjRfdCBhZGRyLCBzaXplOworICAgIHVuc2lnbmVk IGludCBpLCBudW1fYmFycywgcm9tX3JlZzsKKyAgICBzdHJ1Y3QgdnBjaV9oZWFkZXIgKmhlYWRl ciA9ICZwZGV2LT52cGNpLT5oZWFkZXI7CisgICAgc3RydWN0IHZwY2lfYmFyICpiYXJzID0gaGVh ZGVyLT5iYXJzOworICAgIHBjaV9zYmRmX3Qgc2JkZiA9IHsKKyAgICAgICAgLnNlZyA9IHBkZXYt PnNlZywKKyAgICAgICAgLmJ1cyA9IHBkZXYtPmJ1cywKKyAgICAgICAgLmRldiA9IHNsb3QsCisg ICAgICAgIC5mdW5jID0gZnVuYywKKyAgICB9OworICAgIGludCByYzsKKworICAgIHN3aXRjaCAo IHBjaV9jb25mX3JlYWQ4KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLCBQQ0lfSEVB REVSX1RZUEUpCisgICAgICAgICAgICAgJiAweDdmICkKKyAgICB7CisgICAgY2FzZSBQQ0lfSEVB REVSX1RZUEVfTk9STUFMOgorICAgICAgICBudW1fYmFycyA9IDY7CisgICAgICAgIHJvbV9yZWcg PSBQQ0lfUk9NX0FERFJFU1M7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENJX0hFQURFUl9U WVBFX0JSSURHRToKKyAgICAgICAgbnVtX2JhcnMgPSAyOworICAgICAgICByb21fcmVnID0gUENJ X1JPTV9BRERSRVNTMTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0 dXJuIC1FT1BOT1RTVVBQOworICAgIH0KKworICAgIC8qIFNldHVwIGEgaGFuZGxlciBmb3IgdGhl IGNvbW1hbmQgcmVnaXN0ZXIuICovCisgICAgcmMgPSB2cGNpX2FkZF9yZWdpc3RlcihwZGV2LT52 cGNpLCB2cGNpX2h3X3JlYWQxNiwgY21kX3dyaXRlLCBQQ0lfQ09NTUFORCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIDIsIGhlYWRlcik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVy biByYzsKKworICAgIC8qIERpc2FibGUgbWVtb3J5IGRlY29kaW5nIGJlZm9yZSBzaXppbmcuICov CisgICAgY21kID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBm dW5jLCBQQ0lfQ09NTUFORCk7CisgICAgaWYgKCBjbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlkgKQor ICAgICAgICBwY2lfY29uZl93cml0ZTE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5j LCBQQ0lfQ09NTUFORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgJiB+UENJX0NPTU1B TkRfTUVNT1JZKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnVtX2JhcnM7IGkrKyApCisgICAg eworICAgICAgICB1aW50OF90IHJlZyA9IFBDSV9CQVNFX0FERFJFU1NfMCArIGkgKiA0OworICAg ICAgICB1aW50MzJfdCB2YWw7CisKKyAgICAgICAgaWYgKCBpICYmIGJhcnNbaSAtIDFdLnR5cGUg PT0gVlBDSV9CQVJfTUVNNjRfTE8gKQorICAgICAgICB7CisgICAgICAgICAgICBiYXJzW2ldLnR5 cGUgPSBWUENJX0JBUl9NRU02NF9ISTsKKyAgICAgICAgICAgIHJjID0gdnBjaV9hZGRfcmVnaXN0 ZXIocGRldi0+dnBjaSwgdnBjaV9od19yZWFkMzIsIGJhcl93cml0ZSwgcmVnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAmYmFyc1tpXSk7CisgICAgICAgICAgICBpZiAo IHJjICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwY2lfY29uZl93cml0ZTE2KHBk ZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUENJX0NPTU1BTkQsIGNtZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwor ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg ICAgIHZhbCA9IHBjaV9jb25mX3JlYWQzMihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVu YywgcmVnKTsKKyAgICAgICAgaWYgKCAodmFsICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0g UENJX0JBU0VfQUREUkVTU19TUEFDRV9JTyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGJhcnNb aV0udHlwZSA9IFZQQ0lfQkFSX0lPOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K KyAgICAgICAgaWYgKCAodmFsICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV9NQVNLKSA9PQor ICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQgKQorICAgICAgICAgICAg YmFyc1tpXS50eXBlID0gVlBDSV9CQVJfTUVNNjRfTE87CisgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIGJhcnNbaV0udHlwZSA9IFZQQ0lfQkFSX01FTTMyOworCisgICAgICAgIHJjID0gcGNpX3Np emVfbWVtX2JhcihzYmRmLCByZWcsICZhZGRyLCAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpID09IG51bV9iYXJzIC0gMSkgPyBQQ0lfQkFSX0xBU1QgOiAwKTsKKyAgICAg ICAgaWYgKCByYyA8IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBwY2lfY29uZl93cml0ZTE2 KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLCBQQ0lfQ09NTUFORCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY21kKTsKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAg ICAgfQorCisgICAgICAgIGlmICggc2l6ZSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAg YmFyc1tpXS50eXBlID0gVlBDSV9CQVJfRU1QVFk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorCisgICAgICAgIGJhcnNbaV0uYWRkciA9IGFkZHI7CisgICAgICAgIGJhcnNbaV0u c2l6ZSA9IHNpemU7CisgICAgICAgIGJhcnNbaV0ucHJlZmV0Y2hhYmxlID0gdmFsICYgUENJX0JB U0VfQUREUkVTU19NRU1fUFJFRkVUQ0g7CisKKyAgICAgICAgcmMgPSB2cGNpX2FkZF9yZWdpc3Rl cihwZGV2LT52cGNpLCB2cGNpX2h3X3JlYWQzMiwgYmFyX3dyaXRlLCByZWcsIDQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmJhcnNbaV0pOworICAgICAgICBpZiAoIHJjICkKKyAg ICAgICAgeworICAgICAgICAgICAgcGNpX2NvbmZfd3JpdGUxNihwZGV2LT5zZWcsIHBkZXYtPmJ1 cywgc2xvdCwgZnVuYywgUENJX0NPTU1BTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNtZCk7CisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv KiBDaGVjayBleHBhbnNpb24gUk9NLiAqLworICAgIHJjID0gcGNpX3NpemVfbWVtX2JhcihzYmRm LCByb21fcmVnLCAmYWRkciwgJnNpemUsIFBDSV9CQVJfUk9NKTsKKyAgICBpZiAoIHJjID4gMCAm JiBzaXplICkKKyAgICB7CisgICAgICAgIHN0cnVjdCB2cGNpX2JhciAqcm9tID0gJmhlYWRlci0+ YmFyc1tudW1fYmFyc107CisKKyAgICAgICAgcm9tLT50eXBlID0gVlBDSV9CQVJfUk9NOworICAg ICAgICByb20tPnNpemUgPSBzaXplOworICAgICAgICByb20tPmFkZHIgPSBhZGRyOworICAgICAg ICByb20tPnJvbV9lbmFibGVkID0gcGNpX2NvbmZfcmVhZDMyKHBkZXYtPnNlZywgcGRldi0+YnVz LCBzbG90LCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJvbV9yZWcpICYgUENJX1JPTV9BRERSRVNTX0VOQUJMRTsKKworICAgICAgICByYyA9IHZwY2lf YWRkX3JlZ2lzdGVyKHBkZXYtPnZwY2ksIHZwY2lfaHdfcmVhZDMyLCByb21fd3JpdGUsIHJvbV9y ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgcm9tKTsKKyAgICAgICAgaWYg KCByYyApCisgICAgICAgICAgICByb20tPnR5cGUgPSBWUENJX0JBUl9FTVBUWTsKKyAgICB9CisK KyAgICBpZiAoIGNtZCAmIFBDSV9DT01NQU5EX01FTU9SWSApCisgICAgICAgIG1vZGlmeV9iYXJz KHBkZXYsIHRydWUsIGZhbHNlKTsKKworICAgIHJldHVybiAwOworfQorUkVHSVNURVJfVlBDSV9J TklUKGluaXRfYmFycyk7CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg KiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRo OiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEv eGVuL2RyaXZlcnMvdnBjaS92cGNpLmMgYi94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYwppbmRleCA3 ODg4MjVmNWZkLi45OTQwYTYwNjAzIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy92cGNpL3ZwY2ku YworKysgYi94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYwpAQCAtMTAyLDYgKzEwMiwyMSBAQCBzdGF0 aWMgdm9pZCB2cGNpX2lnbm9yZWRfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVu c2lnbmVkIGludCByZWcsCiB7CiB9CiAKK3VpbnQzMl90IHZwY2lfaHdfcmVhZDE2KGNvbnN0IHN0 cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAorICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNl ZywgcGRldi0+YnVzLCBQQ0lfU0xPVChwZGV2LT5kZXZmbiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBQQ0lfRlVOQyhwZGV2LT5kZXZmbiksIHJlZyk7Cit9CisKK3VpbnQzMl90IHZwY2lf aHdfcmVhZDMyKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAor ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gcGNpX2Nv bmZfcmVhZDMyKHBkZXYtPnNlZywgcGRldi0+YnVzLCBQQ0lfU0xPVChwZGV2LT5kZXZmbiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhwZGV2LT5kZXZmbiksIHJlZyk7Cit9 CisKKwogaW50IHZwY2lfYWRkX3JlZ2lzdGVyKHN0cnVjdCB2cGNpICp2cGNpLCB2cGNpX3JlYWRf dCAqcmVhZF9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgIHZwY2lfd3JpdGVfdCAqd3Jp dGVfaGFuZGxlciwgdW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9zY2hlZC5oIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggMDAyYmEyOWQ2ZC4uNGZl MGJhZjFkNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL3NjaGVkLmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlIDx4ZW4vc21wLmg+ CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CiAjaW5jbHVkZSA8YXNtL2F0b21pYy5oPgorI2luY2x1 ZGUgPHhlbi92cGNpLmg+CiAjaW5jbHVkZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDxwdWJsaWMv eGVuLmg+CiAjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5oPgpAQCAtMjY0LDYgKzI2NSwxMSBAQCBz dHJ1Y3QgdmNwdQogCiAgICAgc3RydWN0IGV2dGNobl9maWZvX3ZjcHUgKmV2dGNobl9maWZvOwog CisjaWZkZWYgQ09ORklHX0hBU19QQ0kKKyAgICAvKiB2UENJIHBlci12Q1BVIGFyZWEsIHVzZWQg dG8gc3RvcmUgZGF0YSBmb3IgbG9uZyBydW5uaW5nIG9wZXJhdGlvbnMuICovCisgICAgc3RydWN0 IHZwY2lfdmNwdSB2cGNpOworI2VuZGlmCisKICAgICBzdHJ1Y3QgYXJjaF92Y3B1IGFyY2g7CiB9 OwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdnBjaS5oIGIveGVuL2luY2x1ZGUveGVu L3ZwY2kuaAppbmRleCA5ZjI4NjRmYjBjLi4xMDY5Y2JiOGJmIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS94ZW4vdnBjaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi92cGNpLmgKQEAgLTEsNiArMSw4 IEBACiAjaWZuZGVmIF9YRU5fVlBDSV9IXwogI2RlZmluZSBfWEVOX1ZQQ0lfSF8KIAorI2lmZGVm IENPTkZJR19IQVNfUENJCisKICNpbmNsdWRlIDx4ZW4vcGNpLmg+CiAjaW5jbHVkZSA8eGVuL3R5 cGVzLmg+CiAjaW5jbHVkZSA8eGVuL2xpc3QuaD4KQEAgLTM0LDEyICszNiw2NiBAQCB1aW50MzJf dCB2cGNpX3JlYWQocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBp bnQgc2l6ZSk7CiB2b2lkIHZwY2lfd3JpdGUocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQg cmVnLCB1bnNpZ25lZCBpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhKTsK IAorLyogUGFzc3Rocm91Z2ggaGFuZGxlcnMuICovCit1aW50MzJfdCB2cGNpX2h3X3JlYWQxNihj b25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJlZywKKyAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwordWludDMyX3QgdnBjaV9od19yZWFkMzIoY29uc3Qg c3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpkYXRhKTsKKworLyoKKyAqIENoZWNrIGZvciBwZW5kaW5nIHZQQ0kgb3Bl cmF0aW9ucyBvbiB0aGlzIHZjcHUuIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmNwdQorICogc2hvdWxk IG5vdCBydW4uCisgKi8KK2Jvb2wgX19tdXN0X2NoZWNrIHZwY2lfcHJvY2Vzc19wZW5kaW5nKHN0 cnVjdCB2Y3B1ICp2KTsKKwogc3RydWN0IHZwY2kgewogICAgIC8qIExpc3Qgb2YgdlBDSSBoYW5k bGVycyBmb3IgYSBkZXZpY2UuICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBoYW5kbGVyczsKICAg ICBzcGlubG9ja190IGxvY2s7CisKKyNpZmRlZiBfX1hFTl9fCisgICAgLyogSGlkZSB0aGUgcmVz dCBvZiB0aGUgdnBjaSBzdHJ1Y3QgZnJvbSB0aGUgdXNlci1zcGFjZSB0ZXN0IGhhcm5lc3MuICov CisgICAgc3RydWN0IHZwY2lfaGVhZGVyIHsKKyAgICAgICAgLyogSW5mb3JtYXRpb24gYWJvdXQg dGhlIFBDSSBCQVJzIG9mIHRoaXMgZGV2aWNlLiAqLworICAgICAgICBzdHJ1Y3QgdnBjaV9iYXIg eworICAgICAgICAgICAgdWludDY0X3QgYWRkcjsKKyAgICAgICAgICAgIHVpbnQ2NF90IHNpemU7 CisgICAgICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgICAgICBWUENJX0JBUl9FTVBUWSwKKyAg ICAgICAgICAgICAgICBWUENJX0JBUl9JTywKKyAgICAgICAgICAgICAgICBWUENJX0JBUl9NRU0z MiwKKyAgICAgICAgICAgICAgICBWUENJX0JBUl9NRU02NF9MTywKKyAgICAgICAgICAgICAgICBW UENJX0JBUl9NRU02NF9ISSwKKyAgICAgICAgICAgICAgICBWUENJX0JBUl9ST00sCisgICAgICAg ICAgICB9IHR5cGU7CisgICAgICAgICAgICBib29sIHByZWZldGNoYWJsZSA6IDE7CisgICAgICAg ICAgICAvKiBTdG9yZSB3aGV0aGVyIHRoZSBCQVIgaXMgbWFwcGVkIGludG8gZ3Vlc3QgcDJtLiAq LworICAgICAgICAgICAgYm9vbCBlbmFibGVkICAgICAgOiAxOworICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAqIFN0b3JlIHdoZXRoZXIgdGhlIFJPTSBlbmFibGUgYml0IGlzIHNldCAoZG9l c24ndCBpbXBseSBST00gQkFSCisgICAgICAgICAgICAgKiBpcyBtYXBwZWQgaW50byBndWVzdCBw Mm0pLiBPbmx5IHVzZWQgZm9yIHR5cGUgVlBDSV9CQVJfUk9NLgorICAgICAgICAgICAgICovCisg ICAgICAgICAgICBib29sIHJvbV9lbmFibGVkICA6IDE7CisgICAgICAgIH0gYmFyc1s3XTsgLyog QXQgbW9zdCA2IEJBUlMgKyAxIGV4cGFuc2lvbiBST00gQkFSLiAqLworICAgICAgICAvKiBGSVhN RTogY3VycmVudGx5IHRoZXJlJ3Mgbm8gc3VwcG9ydCBmb3IgU1ItSU9WLiAqLworICAgIH0gaGVh ZGVyOworI2VuZGlmCiB9OwogCisjaWZkZWYgX19YRU5fXworc3RydWN0IHZwY2lfdmNwdSB7Cisg ICAgc3RydWN0IHJhbmdlc2V0ICptZW07CisgICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXY7 CisgICAgYm9vbCBtYXAgOiAxOworICAgIGJvb2wgcm9tIDogMTsKK307CisjZW5kaWYKKworI2Vs c2UgLyogIUNPTkZJR19IQVNfUENJICovCitzdHJ1Y3QgdnBjaV92cGN1IHsKK307CisjZW5kaWYK KwogI2VuZGlmCiAKIC8qCi0tIAoyLjEzLjUgKEFwcGxlIEdpdC05NCkKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK