From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Thu, 24 Jan 2019 11:42:02 +0000 Message-ID: <20190124114203.18952-6-tvrtko.ursulin@linux.intel.com> References: <20190124114203.18952-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1984B899E6 for ; Thu, 24 Jan 2019 11:42:08 +0000 (UTC) In-Reply-To: <20190124114203.18952-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldlIHdhbnQg dG8gYWxsb3cgdXNlcnNwYWNlIHRvIHJlY29uZmlndXJlIHRoZSBzdWJzbGljZSBjb25maWd1cmF0 aW9uIG9uIGEKcGVyIGNvbnRleHQgYmFzaXMuCgpUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgZnVu Y3Rpb25hbCByZXF1aXJlbWVudCBvZiBzaHV0dGluZyBkb3duIG5vbi1WTUUKZW5hYmxlZCBzdWIt c2xpY2VzIG9uIEdlbjExIHBhcnRzLgoKVG8gZG8gc28sIHdlIGV4cG9zZSBhIGNvbnRleHQgcGFy YW1ldGVyIHRvIGFsbG93IGFkanVzdG1lbnQgb2YgdGhlIFJQQ1MKcmVnaXN0ZXIgc3RvcmVkIHdp dGhpbiB0aGUgY29udGV4dCBpbWFnZSAoYW5kIGN1cnJlbnRseSBub3QgYWNjZXNzaWJsZSB2aWEK TFJJKS4KCklmIHRoZSBjb250ZXh0IGlzIGFkanVzdGVkIGJlZm9yZSBmaXJzdCB1c2Ugb3Igd2hp bHN0IGlkbGUsIHRoZSBhZGp1c3RtZW50CmlzIGZvciAiZnJlZSI7IG90aGVyd2lzZSBpZiB0aGUg Y29udGV4dCBpcyBhY3RpdmUgd2UgcXVldWUgYSByZXF1ZXN0IHRvIGRvCnNvICh1c2luZyB0aGUg a2VybmVsIGNvbnRleHQpLCBmb2xsb3dpbmcgYWxsIG90aGVyIGFjdGl2aXR5IGJ5IHRoYXQKY29u dGV4dCwgd2hpY2ggaXMgYWxzbyBtYXJrZWQgYXMgYmFycmllciBmb3IgYWxsIGZvbGxvd2luZyBz dWJtaXNzaW9uCmFnYWluc3QgdGhlIHNhbWUgY29udGV4dC4KClNpbmNlIHRoZSBvdmVyaGVhZCBv ZiBkZXZpY2UgcmUtY29uZmlndXJhdGlvbiBkdXJpbmcgY29udGV4dCBzd2l0Y2hpbmcgY2FuCmJl IHNpZ25pZmljYW50LCBlc3BlY2lhbGx5IGluIG11bHRpLWNvbnRleHQgd29ya2xvYWRzLCB3ZSBs aW1pdCB0aGlzIG5ldwp1QVBJIHRvIG9ubHkgc3VwcG9ydCB0aGUgR2VuMTEgVk1FIHVzZSBjYXNl LiBJbiB0aGlzIHVzZSBjYXNlIGVpdGhlciB0aGUKZGV2aWNlIGlzIGZ1bGx5IGVuYWJsZWQsIGFu ZCBleGFjdGx5IG9uZSBzbGljZSBhbmQgaGFsZiBvZiB0aGUgc3Vic2xpY2VzCmFyZSBlbmFibGVk LgoKRXhhbXBsZSB1c2FnZToKCglzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSBzc2V1ID0geyB9OwoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsK CQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKCQkuY3R4X2lkID0gZ2VtX2NvbnRl eHRfY3JlYXRlKGZkKSwKCQkuc2l6ZSA9IHNpemVvZihzc2V1KSwKCQkudmFsdWUgPSB0b191c2Vy X3BvaW50ZXIoJnNzZXUpCgl9OwoKCS8qIFF1ZXJ5IGRldmljZSBkZWZhdWx0cy4gKi8KCWdlbV9j b250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CgoJLyogU2V0IFZNRSBjb25maWd1cmF0aW9uIG9u IGEgMXg2eDggcGFydC4gKi8KCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsKCXNzZXUuc3Vic2xpY2Vf bWFzayA9IDB4ZTA7CglnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpOwoKdjI6IEZpeCBv ZmZzZXQgb2YgQ1RYX1JfUFdSX0NMS19TVEFURSBpbiBpbnRlbF9scl9jb250ZXh0X3NldF9zc2V1 KCkKICAgIChMaW9uZWwpCgp2MzogQWRkIGFiaWxpdHkgdG8gcHJvZ3JhbSB0aGlzIHBlciBlbmdp bmUgKENocmlzKQoKdjQ6IE1vdmUgbW9zdCBnZXRfc3NldSgpIGludG8gaTkxNV9nZW1fY29udGV4 dC5jIChMaW9uZWwpCgp2NTogVmFsaWRhdGUgc3NldSBjb25maWd1cmF0aW9uIGFnYWluc3QgdGhl IGRldmljZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVsKQoKdjY6IENoYW5nZSBjb250ZXh0IHBvd2Vy Z2F0aW5nIHNldHRpbmdzIHRocm91Z2ggTUlfU0RNIG9uIGtlcm5lbCBjb250ZXh0CiAgICAoQ2hy aXMpCgp2NzogU3luY2hyb25pemUgdGhlIHJlcXVlc3RzIGZvbGxvd2luZyBhIHBvd2VyZ2F0aW5n IHNldHRpbmcgY2hhbmdlIHVzaW5nCiAgICBhIGdsb2JhbCBkZXBlbmRlbmN5IChDaHJpcykKICAg IEl0ZXJhdGUgdGltZWxpbmVzIHRocm91Z2ggZGV2X3ByaXYuZ3QuYWN0aXZlX3JpbmdzIChUdnJ0 a28pCiAgICBEaXNhYmxlIFJQQ1MgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciBub24gY2FwYWJs ZSB1c2VycwogICAgKExpb25lbC9UdnJ0a28pCgp2ODogcy91bmlvbiBpbnRlbF9zc2V1L3N0cnVj dCBpbnRlbF9zc2V1LyAoTGlvbmVsKQogICAgcy9kZXZfcHJpdi9pOTE1LyAoVHZydGtvKQogICAg Q2hhbmdlIHVhcGkgY2xhc3MvaW5zdGFuY2UgZmllbGRzIHRvIHUxNiAoVHZydGtvKQogICAgQnVt cCBtYXNrIGZpZWxkcyB0byA2NGJpdHMgKExpb25lbCkKICAgIERvbid0IHJldHVybiBFUEVSTSB3 aGVuIGR5bmFtaWMgc3NldSBpcyBkaXNhYmxlZCAoVHZydGtvKQoKdjk6IEltcG9ydCBjb250ZXh0 IGltYWdlIGludG8ga2VybmVsIGNvbnRleHQncyBwcGd0dCBvbmx5IHdoZW4KICAgIHJlY29uZmln dXJpbmcgcG93ZXJnYXRlZCBzbGljZS9zdWJzbGljZXMgKENocmlzKQogICAgVXNlIGFsaWFzaW5n IHBwZ3R0IHdoZW4gbmVlZGVkIChNaWNoZWwpCgpUdnJ0a28gVXJzdWxpbjoKCnYxMDoKICogVXBk YXRlIGZvciB1cHN0cmVhbSBjaGFuZ2VzLgogKiBSZXF1ZXN0IHN1Ym1pdCBuZWVkcyBhIFJQTSBy ZWZlcmVuY2UuCiAqIFJlamVjdCBvbiAhRlVMTF9QUEdUVCBmb3Igc2ltcGxpY2l0eS4KICogUHVs bCBvdXQgZ2V0L3NldCBwYXJhbSB0byBoZWxwZXJzIGZvciByZWFkYWJpbGl0eSBhbmQgbGVzcyBp bmRlbnQuCiAqIFVzZSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlIGluIGFkZF9nbG9iYWxf YmFycmllciB0byBza2lwIHdhaXRzCiAgIG9uIHRoZSBzYW1lIHRpbWVsaW5lIGFuZCBhdm9pZCBH RU1fQlVHX09OLgogKiBObyBuZWVkIHRvIGV4cGxpY2l0bHkgYXNzaWduIGEgTlVMTCBwb2ludGVy IHRvIGVuZ2luZSBpbiBsZWdhY3kgbW9kZS4KICogTm8gbmVlZCB0byBtb3ZlIGdlbjhfbWFrZV9y cGNzIHVwLgogKiBGYWN0b3JlZCBvdXQgZ2xvYmFsIGJhcnJpZXIgYXMgcHJlcCBwYXRjaC4KICog QWxsb3cgdG8gb25seSBDQVBfU1lTX0FETUlOIGlmICFHZW4xMS4KCnYxMToKICogUmVtb3ZlIGVu Z2luZSB2ZnVuYyBpbiBmYXZvdXIgb2YgbG9jYWwgaGVscGVyLiAoQ2hyaXMgV2lsc29uKQogKiBT dG9wIHJldGlyaW5nIHJlcXVlc3RzIGJlZm9yZSB1cGRhdGVzIHNpbmNlIGl0IGlzIG5vdCBuZWVk ZWQKICAgKENocmlzIFdpbHNvbikKICogSW1wbGVtZW50IGRpcmVjdCBDUFUgdXBkYXRlIHBhdGgg Zm9yIGlkbGUgY29udGV4dHMuIChDaHJpcyBXaWxzb24pCiAqIExlZnQgc2lkZSBkZXBlbmRlbmN5 IG5lZWRzIG9ubHkgYmUgb24gdGhlIHNhbWUgY29udGV4dCB0aW1lbGluZS4KICAgKENocmlzIFdp bHNvbikKICogSXQgaXMgc3VmZmljaWVudCB0byBvcmRlciB0aGUgdGltZWxpbmUuIChDaHJpcyBX aWxzb24pCiAqIFJlamVjdCAhUkNTIGNvbmZpZ3VyYXRpb24gYXR0ZW1wdHMgd2l0aCAtRU5PREVW IGZvciBub3cuCgp2MTI6CiAqIFJlYmFzZSBmb3IgbWFrZV9ycGNzLgoKdjEzOgogKiBDZW50cmFs aXplIFNTRVUgbm9ybWFsaXphdGlvbiB0byBtYWtlX3JwY3MuCiAqIFR5cGUgd2lkdGggY2hlY2tp bmcgKHVBUEkgPC0+IGltcGxlbWVudGF0aW9uKS4KICogR2VuMTEgcmVzdHJpY3Rpb25zIHVBUEkg Y2hlY2tzLgogKiBHZW4xMSBzdWJzbGljZSBjb3VudCBkaWZmZXJlbmNlcyBoYW5kbGluZy4KIENo cmlzIFdpbHNvbjoKICogYXJncy0+c2l6ZSBoYW5kbGluZyBmaXhlcy4KICogVXBkYXRlIGNvbnRl eHQgaW1hZ2UgZnJvbSBHR1RULgogKiBQb3N0cG9uZSBjb250ZXh0IGltYWdlIHVwZGF0ZSB0byBw aW5uaW5nLgogKiBVc2UgaTkxNV9nZW1fYWN0aXZlX3JhdyBpbnN0ZWFkIG9mIGxhc3RfcmVxdWVz dF9vbl9lbmdpbmUuCgp2MTQ6CiAqIEFkZCBhY3Rpdml0eSB0cmFja2VyIG9uIGludGVsX2NvbnRl eHQgdG8gZml4IHRoZSBsaWZldGltZSBpc3N1ZXMKICAgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlLiAo Q2hyaXMgV2lsc29uKQoKdjE1OgogKiBGaXggY29udGV4dCBwaW4gbGVhayBpZiBubyBzcGFjZSBp biByaW5nIGJ5IHNpbXBsaWZ5aW5nIHRoZQogICBjb250ZXh0IHBpbm5pbmcgc2VxdWVuY2UuCgp2 MTY6CiAqIFJlYmFzZSBmb3IgY29udGV4dCBnZXQvc2V0IHBhcmFtIGxvY2tpbmcgY2hhbmdlcy4K ICogSnVzdCAtRU5PREVWIG9uICFHZW4xMS4gKEpvb25hcykKCnYxNzoKICogRml4IG9uZSBHZW4x MSBzdWJzbGljZSBlbmFibGVtZW50IHJ1bGUuCiAqIEhhbmRsZSBlcnJvciBmcm9tIGk5MTVfc3df ZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwLiAoQ2hyaXMgV2lsc29uKQoKdjE4OgogKiBVcGRhdGUg Y29tbWl0IG1lc3NhZ2UuIChKb29uYXMpCiAqIFJlc3RyaWN0IHVBUEkgdG8gVk1FIHVzZSBjYXNl LiAoSm9vbmFzKQoKdjE5OgogKiBSZWJhc2UuCgp2MjA6CiAqIFJlYmFzZSBmb3IgY2UtPmFjdGl2 ZV90cmFja2VyLgoKdjIxOgogKiBSZWJhc2UgZm9yIElTX0dFTiBjaGFuZ2VzLgoKdjIyOgogKiBS ZXNlcnZlIHVBUEkgZm9yIGZsYWdzIHN0cmFpZ2h0IGF3YXkuIChDaHJpcyBXaWxzb24pCgp2MjM6 CiAqIFJlYmFzZSBmb3IgUlVOVElNRV9JTkZPLgoKdjI0OgogKiBBZGRlZCBzb21lIGhlYWRsaW5l IGRvY3MgZm9yIHRoZSB1YXBpIHVzYWdlLiAoSm9vbmFzL0NocmlzKQoKdjI1OgogKiBSZW5hbWVk IGNsYXNzL2luc3RhbmNlIHRvIGVuZ2luZV9jbGFzcy9lbmdpbmVfaW5zdGFuY2UgdG8gYXZvaWQg Y2xhc2gKICAgd2l0aCBDKysga2V5d29yZC4gKFRvbnkgWWUpCgp2MjY6CiAqIFJlYmFzZWQgZm9y IHJ1bnRpbWUgcG0gYXBpIGNoYW5nZXMuCgp2Mjc6CiAqIFJlYmFzZWQgZm9yIGludGVsX2NvbnRl eHRfaW5pdC4KICogV3JhcCBjb21taXQgbXNnIHRvIDc1LgoKQnVnemlsbGE6IGh0dHBzOi8vYnVn cy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDg5OQpCdWd6aWxsYTogaHR0cHM6 Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjM0Cklzc3VlOiBodHRw czovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vlcy8yNjcKU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6 IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KQ2M6IERt aXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+CkNjOiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogWmhpcGVuZyBHb25nIDx6aGlw ZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5A bGludXguaW50ZWwuY29tPgpDYzogVG9ueSBZZSA8dG9ueS55ZUBpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2Vk LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gIyB2MjEKUmV2aWV3 ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAzNDIgKysrKysr KysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmggfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICA0 ICstCiBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNjQgKysrKysK IDQgZmlsZXMgY2hhbmdlZCwgNDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGM0ZWJhZTY2ZWVjMS4uOTJl YmJjZGUzZGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC04 OSw2ICs4OSw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9k cnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5o IgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wzX1NMSUNF UyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjEsNiArMzIyLDE1IEBA IHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9jb250 ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9CisJCWNvbnRh aW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7CisKKwlpbnRlbF9j b250ZXh0X3VucGluKGNlKTsKK30KKwogdm9pZAogaW50ZWxfY29udGV4dF9pbml0KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwKIAkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKQEAg LTMzMCw2ICszNDAsOCBAQCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRleHQg KmNlLAogCiAJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwogCWNlLT5zc2V1 ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOworCisJaW5pdF9yZXF1ZXN0 X2FjdGl2ZSgmY2UtPmFjdGl2ZV90cmFja2VyLCBpbnRlbF9jb250ZXh0X3JldGlyZSk7CiB9CiAK IHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCkBAIC04NDcsNiArODU5LDU2IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZXRfc3NldShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1 IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA9PSAwKQorCQln b3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191 c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVy biAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4 LT5pOTE1LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1 LmVuZ2luZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJ LyogT25seSB1c2UgZm9yIG11dGV4IGhlcmUgaXMgdG8gc2VyaWFsaXplIGdldF9wYXJhbSBhbmQg c2V0X3BhcmFtLiAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY2UgPSB0 b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKworCXVzZXJfc3NldS5zbGljZV9tYXNrID0g Y2UtPnNzZXUuc2xpY2VfbWFzazsKKwl1c2VyX3NzZXUuc3Vic2xpY2VfbWFzayA9IGNlLT5zc2V1 LnN1YnNsaWNlX21hc2s7CisJdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNz ZXUubWluX2V1c19wZXJfc3Vic2xpY2U7CisJdXNlcl9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNl ID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwltdXRleF91bmxvY2soJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2Vy X3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9mKHVzZXJfc3NldSkpKQor CQlyZXR1cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1 KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiB7CkBAIC04NTksMTUgKzkyMSwxNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlm ICghY3R4KQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyZ3MtPnNpemUgPSAwOwogCXN3aXRjaCAo YXJncy0+cGFyYW0pIHsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgogCQly ZXQgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19aRVJP TUFQOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChVQ09OVEVY VF9OT19aRVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCiAJCWlmIChjdHgtPnBw Z3R0KQogCQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKIAkJZWxzZSBpZiAo dG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKQEAgLTg3NiwxNCArOTQwLDIwIEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52bS50b3Rh bDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQVFVSRToK KwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9ub19l cnJvcl9jYXB0dXJlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JB Tk5BQkxFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250 ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFN X1BSSU9SSVRZOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVk LnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKIAkJYnJlYWs7CisJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJ YnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CkBAIC04OTMsNiAr OTYzLDI3MiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQg Z2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJCSBzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJ dTY0IG9mZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsK KwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCisJb2Zmc2V0ID0gY2Ut PnN0YXRlLT5ub2RlLnN0YXJ0ICsKKwkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFICsKKwkJKENU WF9SX1BXUl9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lN TV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJKmNzKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJ KmNzKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysgPSBnZW44X21ha2VfcnBjcyhy cS0+aTkxNSwgJnNzZXUpOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAorCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJ ICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcHJldjsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTighY2Ut PnBpbl9jb3VudCk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKworCS8qIFN1Ym1pdHRpbmcgcmVxdWVzdHMgZXRjIG5lZWRzIHRoZSBodyBhd2FrZS4g Ki8KKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlycSA9IGk5MTVf cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKwlpZiAoSVNfRVJS KHJxKSkgeworCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBvdXRfcHV0OworCX0KKworCS8q IFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSBieSB0aGlzIGNvbnRl eHQuICovCisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmNlLT5yaW5nLT50aW1lbGluZS0+ bGFzdF9yZXF1ZXN0LAorCQkJCSAgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocHJl diAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkgeworCQlyZXQgPSBpOTE1X3N3X2Zl bmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKKwkJCQkJCSAgICAgICAmcHJldi0+ c3VibWl0LAorCQkJCQkJICAgICAgIEk5MTVfRkVOQ0VfR0ZQKTsKKwkJaWYgKHJldCA8IDApCisJ CQlnb3RvIG91dF9hZGQ7CisJfQorCisJcmV0ID0gZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHJxLCBj ZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRkOworCisJLyogT3JkZXIgYWxsIGZv bGxvd2luZyByZXF1ZXN0cyB0byBiZSBhZnRlci4gKi8KKwlpOTE1X3RpbWVsaW5lX3NldF9iYXJy aWVyKGNlLT5yaW5nLT50aW1lbGluZSwgcnEpOworCisJLyoKKwkgKiBHdWFyYW50ZWUgY29udGV4 dCBpbWFnZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFpbnMgcGlubmVkIHVudGlsIHRoZQorCSAqIG1v ZGlmeWluZyByZXF1ZXN0IGlzIHJldGlyZWQgYnkgc2V0dGluZyB0aGUgY2UgYWN0aXZpdHkgdHJh Y2tlci4KKwkgKgorCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gdGFrZSBvbmUgcGluIG9uIHRoZSBh Y2NvdW50IG9mIGl0LiBPciBpbiBvdGhlcgorCSAqIHdvcmRzIHRyYW5zZmVyIHRoZSBwaW5uZWQg Y2Ugb2JqZWN0IHRvIHRyYWNrZWQgYWN0aXZlIHJlcXVlc3QuCisJICovCisJaWYgKCFpOTE1X2dl bV9hY3RpdmVfaXNzZXQoJmNlLT5hY3RpdmVfdHJhY2tlcikpCisJCV9faW50ZWxfY29udGV4dF9w aW4oY2UpOworCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJmNlLT5hY3RpdmVfdHJhY2tlciwgcnEpOwor CitvdXRfYWRkOgorCWk5MTVfcmVxdWVzdF9hZGQocnEpOworb3V0X3B1dDoKKwlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAg c3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0 b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTihJ TlRFTF9HRU4oY3R4LT5pOTE1KSA8IDgpOworCUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1Mp OworCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBOb3RoaW5nIHRvIGRv IGlmIHVubW9kaWZpZWQuICovCisJaWYgKCFtZW1jbXAoJmNlLT5zc2V1LCAmc3NldSwgc2l6ZW9m KHNzZXUpKSkKKwkJZ290byBvdXQ7CisKKwkvKgorCSAqIElmIGNvbnRleHQgaXMgbm90IGlkbGUg d2UgaGF2ZSB0byBzdWJtaXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlmeQorCSAqIGl0cyBj b250ZXh0IGltYWdlIHZpYSB0aGUga2VybmVsIGNvbnRleHQuIFByaXN0aW5lIGFuZCBpZGxlIGNv bnRleHRzCisJICogd2lsbCBiZSBjb25maWd1cmVkIG9uIHBpbm5pbmcuCisJICovCisJaWYgKGNl LT5waW5fY291bnQpCisJCXJldCA9IGdlbjhfbW9kaWZ5X3JwY3NfZ3B1KGNlLCBlbmdpbmUsIHNz ZXUpOworCisJaWYgKCFyZXQpCisJCWNlLT5zc2V1ID0gc3NldTsKKworb3V0OgorCW11dGV4X3Vu bG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQKK3VzZXJfdG9fY29udGV4dF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAorCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9z c2V1ICp1c2VyLAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1ICpjb250ZXh0KQoreworCWNvbnN0 IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpkZXZpY2UgPSAmUlVOVElNRV9JTkZPKGk5MTUpLT5zc2V1 OworCisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAqLworCWlmICghdXNlci0+c2xpY2VfbWFz ayB8fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAgICAhdXNlci0+bWluX2V1c19wZXJfc3Vi c2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPCB1 c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBDaGVj ayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLworCWlmICh1c2VyLT5zbGljZV9tYXNrICYg fmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAodXNlci0+c3Vi c2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pCisJCXJldHVybiAtRUlOVkFM OworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlID4gZGV2aWNlLT5tYXhfZXVzX3Bl cl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIFNvbWUgZnV0dXJlIHBy b29maW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQSSBpcyB3aWRlciB0aGFuIHRoZQorCSAq IGN1cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisJICovCisJaWYgKFdBUk5fT04oKGZs cyh1c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQtPnNsaWNlX21hc2sp ICogQklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHModXNlci0+c3Vic2xpY2VfbWFzaykgPgor CQkgICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9tYXNrKSAqIEJJVFNfUEVSX0JZVEUpIHx8 CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkg ICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgIG92ZXJmbG93c190eXBl KHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJCSAgIGNvbnRleHQtPm1heF9ldXNfcGVy X3N1YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJY29udGV4dC0+c2xpY2VfbWFzayA9 IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFzayA9IHVzZXItPnN1YnNs aWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5taW5fZXVz X3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1h eF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBzcGVjaWZpYyByZXN0cmljdGlvbnMuICov CisJaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwkJdW5zaWduZWQgaW50IGh3X3MgPSBod2VpZ2h0 OChkZXZpY2UtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgaHdfc3NfcGVyX3MgPSBod2Vp Z2h0OChkZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBpbnQgcmVxX3MgPSBo d2VpZ2h0OChjb250ZXh0LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zcyA9IGh3 ZWlnaHQ4KGNvbnRleHQtPnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAqIE9ubHkgZnVsbCBz dWJzbGljZSBlbmFibGVtZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBvbmUKKwkJICogc2xp Y2UgaXMgdHVybmVkIG9uLgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiByZXFfc3MgIT0gaHdf c3NfcGVyX3MpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBtb3JlIHRoYW4g Zm91ciAoU1Njb3VudCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQorCQkgKiByZXF1ZXN0 ZWQgdGhlbiB0aGUgbnVtYmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJaWYgKHJlcV9zcyA+ IDQgJiYgKHJlcV9zcyAmIDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYg b25seSBvbmUgc2xpY2UgaXMgZW5hYmxlZCBhbmQgc3Vic2xpY2UgY291bnQgaXMgYmVsb3cgdGhl CisJCSAqIGRldmljZSBmdWxsIGVuYWJsZW1lbnQsIGl0IG11c3QgYmUgYXQgbW9zdCBoYWxmIG9m IHRoZSBhbGwKKwkJICogYXZhaWxhYmxlIHN1YnNsaWNlcy4KKwkJICovCisJCWlmIChyZXFfcyA9 PSAxICYmIHJlcV9zcyA8IGh3X3NzX3Blcl9zICYmCisJCSAgICByZXFfc3MgPiAoaHdfc3NfcGVy X3MgLyAyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIEFCSSByZXN0cmljdGlvbiAtIFZN RSB1c2UgY2FzZSBvbmx5LiAqLworCisJCS8qIEFsbCBzbGljZXMgb3Igb25lIHNsaWNlIG9ubHku ICovCisJCWlmIChyZXFfcyAhPSAxICYmIHJlcV9zICE9IGh3X3MpCisJCQlyZXR1cm4gLUVJTlZB TDsKKworCQkvKgorCQkgKiBIYWxmIHN1YnNsaWNlcyBvciBmdWxsIGVuYWJsZW1lbnQgb25seSB3 aGVuIG9uZSBzbGljZSBpcworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEg JiYKKwkJICAgIChyZXFfc3MgIT0gaHdfc3NfcGVyX3MgJiYgcmVxX3NzICE9IChod19zc19wZXJf cyAvIDIpKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIE5vIEVVIGNvbmZpZ3VyYXRpb24g Y2hhbmdlcy4gKi8KKwkJaWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAg IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICAodXNlci0+bWF4X2V1c19w ZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkKKwkJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9z c2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBjdHgtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUg dXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaW50 ZWxfc3NldSBzc2V1OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2Vy X3NzZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghSVNfR0VOKGk5MTUsIDExKSkKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0 dXJuIC1FRkFVTFQ7CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihp OTE1LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1LmVu Z2luZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyog T25seSByZW5kZXIgZW5naW5lIHN1cHBvcnRzIFJQQ1MgY29uZmlndXJhdGlvbi4gKi8KKwlpZiAo ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0 ID0gdXNlcl90b19jb250ZXh0X3NzZXUoaTkxNSwgJnVzZXJfc3NldSwgJnNzZXUpOworCWlmIChy ZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJl X3NzZXUoY3R4LCBlbmdpbmUsIHNzZXUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlh cmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5 MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQogewpAQCAtOTU1LDcgKzEy OTEsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkp OwogCQl9CiAJCWJyZWFrOwotCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0 ID0gc2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJ TlZBTDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5k ZXggMDAxMGU1YzMyNjU1Li5jYWEwNzFhNGI4Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKQEAgLTE3MSw2ICsxNzEsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgewogCQl1NjQgbHJjX2Rlc2M7CiAJCWludCBwaW5fY291bnQ7CiAKKwkJLyoqCisJCSAqIGFj dGl2ZV90cmFja2VyOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFjdGl2aXR5 CisJCSAqIG9uIHRoaXMgaW50ZWxfY29udGV4dCBvYmplY3QuCisJCSAqLworCQlzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlIGFjdGl2ZV90cmFja2VyOworCiAJCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250 ZXh0X29wcyAqb3BzOwogCiAJCS8qKiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRpdGlvbmlu ZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCAzMzNjOTkxZWRlNDcuLjExMjVlZTlm NjIwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTIzOTIsNyArMjM5Miw5IEBAIHUz MiBnZW44X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGlu dGVsX3NzZXUgKnJlcV9zc2V1KQogCSAqIHN1YnNsaWNlcyBhcmUgZW5hYmxlZCwgb3IgYSBjb3Vu dCBiZXR3ZWVuIG9uZSBhbmQgZm91ciBvbiB0aGUgZmlyc3QKIAkgKiBzbGljZS4KIAkgKi8KLQlp ZiAoSVNfR0VOKGk5MTUsIDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgewor CWlmIChJU19HRU4oaTkxNSwgMTEpICYmCisJICAgIHNsaWNlcyA9PSAxICYmCisJICAgIHN1YnNs aWNlcyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIp KSB7CiAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBmYWxz ZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAppbmRleCAyOThiMmUxOTc3NDQuLjM5NzgxMGZhMmQzMyAxMDA2NDQK LS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaApAQCAtMTQ4Niw5ICsxNDg2LDczIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSB7CiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCTEw MjMgLyogaW5jbHVzaXZlICovCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJ VFkJCTAKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMgLyog aW5jbHVzaXZlICovCisJLyoKKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZh bHVlIHNob3VsZCBiZSBhIHBvaW50ZXIgdG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bV9zc2V1LgorCSAqLworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJX191 NjQgdmFsdWU7CiB9OwogCisvKioKKyAqIENvbnRleHQgU1NFVSBwcm9ncmFtbWluZworICoKKyAq IEl0IG1heSBiZSBuZWNlc3NhcnkgZm9yIGVpdGhlciBmdW5jdGlvbmFsIG9yIHBlcmZvcm1hbmNl IHJlYXNvbiB0byBjb25maWd1cmUKKyAqIGEgY29udGV4dCB0byBydW4gd2l0aCBhIHJlZHVjZWQg bnVtYmVyIG9mIFNTRVUgKHdoZXJlIFNTRVUgc3RhbmRzIGZvciBTbGljZS8KKyAqIFN1Yi1zbGlj ZS9FVSkuCisgKgorICogVGhpcyBpcyBkb25lIGJ5IGNvbmZpZ3VyaW5nIFNTRVUgY29uZmlndXJh dGlvbiB1c2luZyB0aGUgYmVsb3cKKyAqIEBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW1fc3NldSBmb3IgZXZlcnkgc3VwcG9ydGVkIGVuZ2luZSB3aGljaAorICogdXNlcnNwYWNlIGlu dGVuZHMgdG8gdXNlLgorICoKKyAqIE5vdCBhbGwgR1BVcyBvciBlbmdpbmVzIHN1cHBvcnQgdGhp cyBmdW5jdGlvbmFsaXR5IGluIHdoaWNoIGNhc2UgYW4gZXJyb3IKKyAqIGNvZGUgLUVOT0RFViB3 aWxsIGJlIHJldHVybmVkLgorICoKKyAqIEFsc28sIGZsZXhpYmlsaXR5IG9mIHBvc3NpYmxlIFNT RVUgY29uZmlndXJhdGlvbiBwZXJtdXRhdGlvbnMgdmFyaWVzIGJldHdlZW4KKyAqIEdQVSBnZW5l cmF0aW9ucyBhbmQgc29mdHdhcmUgaW1wb3NlZCBsaW1pdGF0aW9ucy4gUmVxdWVzdGluZyBzdWNo IGEKKyAqIGNvbWJpbmF0aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yIGNvZGUgb2YgLUVJTlZBTC4K KyAqCisgKiBOT1RFOiBXaGVuIHBlcmYvT0EgaXMgYWN0aXZlIHRoZSBjb250ZXh0J3MgU1NFVSBj b25maWd1cmF0aW9uIGlzIGlnbm9yZWQgaW4KKyAqIGZhdm91ciBvZiBhIHNpbmdsZSBnbG9iYWwg c2V0dGluZy4KKyAqLworc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgewor CS8qCisJICogRW5naW5lIGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmlndXJlZCBvciBxdWVy aWVkLgorCSAqLworCV9fdTE2IGVuZ2luZV9jbGFzczsKKwlfX3UxNiBlbmdpbmVfaW5zdGFuY2U7 CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkg Ki8KKwlfX3UzMiBmbGFnczsKKworCS8qCisJICogTWFzayBvZiBzbGljZXMgdG8gZW5hYmxlIGZv ciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhIHN1YnNldAorCSAqIG9mIHRoZSBiaXRt YXNrIHZhbHVlIHJldHVybmVkIGZvciBJOTE1X1BBUkFNX1NMSUNFX01BU0suCisJICovCisJX191 NjQgc2xpY2VfbWFzazsKKworCS8qCisJICogTWFzayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZv ciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhCisJICogc3Vic2V0IG9mIHRoZSBiaXRt YXNrIHZhbHVlIHJldHVybiBieSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0suCisJICovCisJX191 NjQgc3Vic2xpY2VfbWFzazsKKworCS8qCisJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBF VXMgdG8gZW5hYmxlIHBlciBzdWJzbGljZSBmb3IgdGhlCisJICogY29udGV4dC4gbWluX2V1c19w ZXJfc3Vic2xpY2UgbXVzdCBiZSBpbmZlcmlvciBvciBlcXVhbCB0bworCSAqIG1heF9ldXNfcGVy X3N1YnNsaWNlLgorCSAqLworCV9fdTE2IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCV9fdTE2IG1h eF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyoKKwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBj bGVhcmVkIHRvIHplcm8uCisJICovCisJX191MzIgcnN2ZDsKK307CisKIGVudW0gZHJtX2k5MTVf b2FfZm9ybWF0IHsKIAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8K IAlJOTE1X09BX0ZPUk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAqLwotLSAKMi4xOS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK