From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v31 4/5] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Thu, 31 Jan 2019 10:47:51 +0000 Message-ID: <20190131104751.14636-1-tvrtko.ursulin@linux.intel.com> References: <20190131084737.8745-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 92C0A6EC97 for ; Thu, 31 Jan 2019 10:47:53 +0000 (UTC) In-Reply-To: <20190131084737.8745-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 eHRfaW5pdC4KICogV3JhcCBjb21taXQgbXNnIHRvIDc1LgoKdjI4OgogKENocmlzIFdpbHNvbikK ICogVXNlIGk5MTVfZ2VtX2dndHQuCiAqIFVzZSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNl IHRvIHNob3cgYSBiZXR0ZXIgZXhhbXBsZS4KCnYyOToKICogaTkxNV90aW1lbGluZV9zZXRfYmFy cmllciBjYW4gbm93IGZhaWwuIChDaHJpcyBXaWxzb24pCgp2MzA6CiAqIENhcHR1cmUgc29tZSBh Y2tzLgoKdjMxOgogKiBEcm9wIHRoZSBXQVJOX09OIGZyb20gdXNlIGNvbnRyb2xsYWJsZSBwYXRo cy4gKENocmlzIFdpbHNvbikKICogVXNlIG92ZXJmbG93c190eXBlIGZvciBhbGwgY2hlY2tzLgoK QnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEw MDg5OQpCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTA3NjM0Cklzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lz c3Vlcy8yNjcKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+ClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2Vy bGluQGludGVsLmNvbT4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBp bnRlbC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpD YzogWmhpcGVuZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRp bmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogVG9ueSBZZSA8dG9ueS55 ZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4gIyB2MjEKUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRp bmVuQGxpbnV4LmludGVsLmNvbT4gIyB2MjcKQWNrZWQtYnk6IFRpbW8gQWFsdG9uZW4gPHRpbW8u YWFsdG9uZW5AY2Fub25pY2FsLmNvbT4KQWNrZWQtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3Vz ZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAzNDAg KysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmggfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg IHwgICA0ICstCiBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNjQg KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGQzODg3YzI3YzNi YS4uMmQzZTFjZTljYzc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j CkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJj X3JlZy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wz X1NMSUNFUyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjEsNiArMzIy LDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRl bF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9CisJ CWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7CisKKwlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKK30KKwogdm9pZAogaW50ZWxfY29udGV4dF9pbml0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKQEAgLTMzMyw2ICszNDMsOCBAQCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAogCiAJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwogCWNl LT5zc2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOworCisJaW5pdF9y ZXF1ZXN0X2FjdGl2ZSgmY2UtPmFjdGl2ZV90cmFja2VyLCBpbnRlbF9jb250ZXh0X3JldGlyZSk7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCkBAIC04NTAsNiArODYyLDU2 IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZXRfc3NldShz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA9PSAw KQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkp CisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2 NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJ CXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2 ZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz ZXIoY3R4LT5pOTE1LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNl cl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFM OworCisJLyogT25seSB1c2UgZm9yIG11dGV4IGhlcmUgaXMgdG8gc2VyaWFsaXplIGdldF9wYXJh bSBhbmQgc2V0X3BhcmFtLiAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ Y2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKworCXVzZXJfc3NldS5zbGljZV9t YXNrID0gY2UtPnNzZXUuc2xpY2VfbWFzazsKKwl1c2VyX3NzZXUuc3Vic2xpY2VfbWFzayA9IGNl LT5zc2V1LnN1YnNsaWNlX21hc2s7CisJdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0g Y2UtPnNzZXUubWluX2V1c19wZXJfc3Vic2xpY2U7CisJdXNlcl9zc2V1Lm1heF9ldXNfcGVyX3N1 YnNsaWNlID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwltdXRleF91bmxvY2so JmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoY29weV90b191c2VyKHU2NF90 b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9mKHVzZXJfc3Nl dSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBzaXplb2YodXNl cl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC04NjIsMTUgKzkyNCwxNyBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCWlmICghY3R4KQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyZ3MtPnNpemUgPSAwOwogCXN3 aXRjaCAoYXJncy0+cGFyYW0pIHsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9E OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9O T19aRVJPTUFQOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChV Q09OVEVYVF9OT19aRVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKIAkJYnJlYWs7CiAJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCiAJCWlmIChj dHgtPnBwZ3R0KQogCQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKIAkJZWxz ZSBpZiAodG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKQEAgLTg3OSwxNCArOTQzLDIw IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52 bS50b3RhbDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQ VFVSRToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4 dF9ub19lcnJvcl9jYXB0dXJlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX0JBTk5BQkxFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dl bV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX1BSSU9SSVRZOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBjdHgt PnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKIAkJYnJlYWs7CisJ Y2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUoY3R4LCBhcmdz KTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CkBAIC04 OTYsNiArOTY2LDI3MCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRp YyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJ CSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUp Cit7CisJdTY0IG9mZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJx LCA0KTsKKwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCisJb2Zmc2V0 ID0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpICsKKwkJIExSQ19TVEFURV9QTiAqIFBBR0Vf U0laRSArCisJCSAoQ1RYX1JfUFdSX0NMS19TVEFURSArIDEpICogNDsKKworCSpjcysrID0gTUlf U1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKKwkqY3MrKyA9IGxvd2VyXzMyX2Jp dHMob2Zmc2V0KTsKKwkqY3MrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IGdl bjhfbWFrZV9ycGNzKHJxLT5pOTE1LCAmc3NldSk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEs IGNzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZW44X21vZGlmeV9ycGNzX2dw dShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsICpwcmV2OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCWludCByZXQ7CisKKwlH RU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMgbmVlZHMg dGhlIGh3IGF3YWtlLiAqLworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK KworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2VybmVsX2NvbnRleHQp OworCWlmIChJU19FUlIocnEpKSB7CisJCXJldCA9IFBUUl9FUlIocnEpOworCQlnb3RvIG91dF9w dXQ7CisJfQorCisJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5 IGJ5IHRoaXMgY29udGV4dC4gKi8KKwlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmY2UtPnJp bmctPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCisJCQkJICAgJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCWlmIChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHByZXYpKSB7CisJCXJl dCA9IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2UocnEsICZwcmV2LT5mZW5jZSk7CisJCWlm IChyZXQgPCAwKQorCQkJZ290byBvdXRfYWRkOworCX0KKworCS8qIE9yZGVyIGFsbCBmb2xsb3dp bmcgcmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICovCisJcmV0ID0gaTkxNV90aW1lbGluZV9zZXRfYmFy cmllcihjZS0+cmluZy0+dGltZWxpbmUsIHJxKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9hZGQ7 CisKKwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKKwlpZiAocmV0 KQorCQlnb3RvIG91dF9hZGQ7CisKKwkvKgorCSAqIEd1YXJhbnRlZSBjb250ZXh0IGltYWdlIGFu ZCB0aGUgdGltZWxpbmUgcmVtYWlucyBwaW5uZWQgdW50aWwgdGhlCisJICogbW9kaWZ5aW5nIHJl cXVlc3QgaXMgcmV0aXJlZCBieSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0eSB0cmFja2VyLgorCSAq CisJICogQnV0IHdlIG9ubHkgbmVlZCB0byB0YWtlIG9uZSBwaW4gb24gdGhlIGFjY291bnQgb2Yg aXQuIE9yIGluIG90aGVyCisJICogd29yZHMgdHJhbnNmZXIgdGhlIHBpbm5lZCBjZSBvYmplY3Qg dG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KKwkgKi8KKwlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9p c3NldCgmY2UtPmFjdGl2ZV90cmFja2VyKSkKKwkJX19pbnRlbF9jb250ZXh0X3BpbihjZSk7CisJ aTkxNV9nZW1fYWN0aXZlX3NldCgmY2UtPmFjdGl2ZV90cmFja2VyLCBycSk7CisKK291dF9hZGQ6 CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitvdXRfcHV0OgorCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraTkxNV9n ZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs CisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50 ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2Nv bnRleHQoY3R4LCBlbmdpbmUpOworCWludCByZXQ7CisKKwlHRU1fQlVHX09OKElOVEVMX0dFTihj dHgtPmk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CisKKwlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdW5tb2Rp ZmllZC4gKi8KKwlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBzaXplb2Yoc3NldSkpKQor CQlnb3RvIG91dDsKKworCS8qCisJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRv IHN1Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CisJICogaXRzIGNvbnRleHQgaW1h Z2UgdmlhIHRoZSBrZXJuZWwgY29udGV4dC4gUHJpc3RpbmUgYW5kIGlkbGUgY29udGV4dHMKKwkg KiB3aWxsIGJlIGNvbmZpZ3VyZWQgb24gcGlubmluZy4KKwkgKi8KKwlpZiAoY2UtPnBpbl9jb3Vu dCkKKwkJcmV0ID0gZ2VuOF9tb2RpZnlfcnBjc19ncHUoY2UsIGVuZ2luZSwgc3NldSk7CisKKwlp ZiAoIXJldCkKKwkJY2UtPnNzZXUgPSBzc2V1OworCitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dAordXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJ CSAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgKnVzZXIs CisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgKmNvbnRleHQpCit7CisJY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKmRldmljZSA9ICZSVU5USU1FX0lORk8oaTkxNSktPnNzZXU7CisKKwkvKiBO byB6ZXJvcyBpbiBhbnkgZmllbGQuICovCisJaWYgKCF1c2VyLT5zbGljZV9tYXNrIHx8ICF1c2Vy LT5zdWJzbGljZV9tYXNrIHx8CisJICAgICF1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSB8fCAh dXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogTWF4 ID4gbWluLiAqLworCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA8IHVzZXItPm1pbl9l dXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICogU29tZSBmdXR1 cmUgcHJvb2Zpbmcgb24gdGhlIHR5cGVzIHNpbmNlIHRoZSB1QVBJIGlzIHdpZGVyIHRoYW4gdGhl CisJICogY3VycmVudCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlpZiAob3ZlcmZs b3dzX3R5cGUodXNlci0+c2xpY2VfbWFzaywgY29udGV4dC0+c2xpY2VfbWFzaykgfHwKKwkgICAg b3ZlcmZsb3dzX3R5cGUodXNlci0+c3Vic2xpY2VfbWFzaywgY29udGV4dC0+c3Vic2xpY2VfbWFz aykgfHwKKwkgICAgb3ZlcmZsb3dzX3R5cGUodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UsCisJ CQkgICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkgICAgb3ZlcmZsb3dzX3R5 cGUodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCisJCQkgICBjb250ZXh0LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ2hlY2sgdmFsaWRpdHkgYWdh aW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNlci0+c2xpY2VfbWFzayAmIH5kZXZpY2UtPnNsaWNl X21hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPnN1YnNsaWNlX21hc2sgJiB+ ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1c2Vy LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJ CXJldHVybiAtRUlOVkFMOworCisJY29udGV4dC0+c2xpY2VfbWFzayA9IHVzZXItPnNsaWNlX21h c2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFzayA9IHVzZXItPnN1YnNsaWNlX21hc2s7CisJY29u dGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsK Kwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlOworCisJLyogUGFydCBzcGVjaWZpYyByZXN0cmljdGlvbnMuICovCisJaWYgKElTX0dFTihp OTE1LCAxMSkpIHsKKwkJdW5zaWduZWQgaW50IGh3X3MgPSBod2VpZ2h0OChkZXZpY2UtPnNsaWNl X21hc2spOworCQl1bnNpZ25lZCBpbnQgaHdfc3NfcGVyX3MgPSBod2VpZ2h0OChkZXZpY2UtPnN1 YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBpbnQgcmVxX3MgPSBod2VpZ2h0OChjb250ZXh0 LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zcyA9IGh3ZWlnaHQ4KGNvbnRleHQt PnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAqIE9ubHkgZnVsbCBzdWJzbGljZSBlbmFibGVt ZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBvbmUKKwkJICogc2xpY2UgaXMgdHVybmVkIG9u LgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiByZXFfc3MgIT0gaHdfc3NfcGVyX3MpCisJCQly ZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBtb3JlIHRoYW4gZm91ciAoU1Njb3VudCBi aXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQorCQkgKiByZXF1ZXN0ZWQgdGhlbiB0aGUgbnVt YmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJaWYgKHJlcV9zcyA+IDQgJiYgKHJlcV9zcyAm IDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgb25seSBvbmUgc2xpY2Ug aXMgZW5hYmxlZCBhbmQgc3Vic2xpY2UgY291bnQgaXMgYmVsb3cgdGhlCisJCSAqIGRldmljZSBm dWxsIGVuYWJsZW1lbnQsIGl0IG11c3QgYmUgYXQgbW9zdCBoYWxmIG9mIHRoZSBhbGwKKwkJICog YXZhaWxhYmxlIHN1YnNsaWNlcy4KKwkJICovCisJCWlmIChyZXFfcyA9PSAxICYmIHJlcV9zcyA8 IGh3X3NzX3Blcl9zICYmCisJCSAgICByZXFfc3MgPiAoaHdfc3NfcGVyX3MgLyAyKSkKKwkJCXJl dHVybiAtRUlOVkFMOworCisJCS8qIEFCSSByZXN0cmljdGlvbiAtIFZNRSB1c2UgY2FzZSBvbmx5 LiAqLworCisJCS8qIEFsbCBzbGljZXMgb3Igb25lIHNsaWNlIG9ubHkuICovCisJCWlmIChyZXFf cyAhPSAxICYmIHJlcV9zICE9IGh3X3MpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkg KiBIYWxmIHN1YnNsaWNlcyBvciBmdWxsIGVuYWJsZW1lbnQgb25seSB3aGVuIG9uZSBzbGljZSBp cworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEgJiYKKwkJICAgIChyZXFf c3MgIT0gaHdfc3NfcGVyX3MgJiYgcmVxX3NzICE9IChod19zc19wZXJfcyAvIDIpKSkKKwkJCXJl dHVybiAtRUlOVkFMOworCisJCS8qIE5vIEVVIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gKi8KKwkJ aWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAgIGRldmljZS0+bWF4X2V1 c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgIT0K KwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkKKwkJCXJldHVybiAtRUlOVkFM OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9zc2V1KHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgdXNlcl9zc2V1OworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1Owor CWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmICghSVNfR0VOKGk5MTUsIDExKSkKKwkJcmV0dXJuIC1FTk9ERVY7 CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJfcHRyKGFyZ3Mt PnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisK KwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVz ZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7 CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogT25seSByZW5kZXIgZW5n aW5lIHN1cHBvcnRzIFJQQ1MgY29uZmlndXJhdGlvbi4gKi8KKwlpZiAoZW5naW5lLT5jbGFzcyAh PSBSRU5ERVJfQ0xBU1MpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0ID0gdXNlcl90b19jb250 ZXh0X3NzZXUoaTkxNSwgJnVzZXJfc3NldSwgJnNzZXUpOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoY3R4LCBlbmdp bmUsIHNzZXUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhcmdzLT5zaXplID0gc2l6 ZW9mKHVzZXJfc3NldSk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5MTVfZ2VtX2NvbnRleHRf c2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkg ICAgc3RydWN0IGRybV9maWxlICpmaWxlKQogewpAQCAtOTU4LDcgKzEyOTIsOSBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCQkJCQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkpOwogCQl9CiAJCWJyZWFr OwotCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gc2V0X3NzZXUoY3R4 LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggOTE5ZjZmMGEwZjdh Li45MmFkNTI3MmU1N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgK QEAgLTE4Myw2ICsxODMsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewogCQl1NjQgbHJj X2Rlc2M7CiAJCWludCBwaW5fY291bnQ7CiAKKwkJLyoqCisJCSAqIGFjdGl2ZV90cmFja2VyOiBB Y3RpdmUgdHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFjdGl2aXR5CisJCSAqIG9uIHRoaXMg aW50ZWxfY29udGV4dCBvYmplY3QuCisJCSAqLworCQlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlIGFj dGl2ZV90cmFja2VyOworCiAJCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqb3BzOwog CiAJCS8qKiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRpdGlvbmluZyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwppbmRleCBkOTljNDYyZTJjMDkuLjVlOThmZDc5YmQ5ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKQEAgLTI0OTgsNyArMjQ5OCw5IEBAIHUzMiBnZW44X21ha2VfcnBj cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3NzZXUgKnJlcV9z c2V1KQogCSAqIHN1YnNsaWNlcyBhcmUgZW5hYmxlZCwgb3IgYSBjb3VudCBiZXR3ZWVuIG9uZSBh bmQgZm91ciBvbiB0aGUgZmlyc3QKIAkgKiBzbGljZS4KIAkgKi8KLQlpZiAoSVNfR0VOKGk5MTUs IDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgeworCWlmIChJU19HRU4oaTkx NSwgMTEpICYmCisJICAgIHNsaWNlcyA9PSAxICYmCisJICAgIHN1YnNsaWNlcyA+IG1pbl90KHU4 LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIpKSB7CiAJCUdFTV9CVUdf T04oc3Vic2xpY2VzICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0u aAppbmRleCAyOThiMmUxOTc3NDQuLjM5NzgxMGZhMmQzMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAt MTQ4Niw5ICsxNDg2LDczIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAj ZGVmaW5lICAgSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCTEwMjMgLyogaW5jbHVzaXZl ICovCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkJCTAKICNkZWZpbmUg ICBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMgLyogaW5jbHVzaXZlICovCisJ LyoKKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZhbHVlIHNob3VsZCBiZSBh IHBvaW50ZXIgdG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1LgorCSAqLwor I2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJX191NjQgdmFsdWU7CiB9Owog CisvKioKKyAqIENvbnRleHQgU1NFVSBwcm9ncmFtbWluZworICoKKyAqIEl0IG1heSBiZSBuZWNl c3NhcnkgZm9yIGVpdGhlciBmdW5jdGlvbmFsIG9yIHBlcmZvcm1hbmNlIHJlYXNvbiB0byBjb25m aWd1cmUKKyAqIGEgY29udGV4dCB0byBydW4gd2l0aCBhIHJlZHVjZWQgbnVtYmVyIG9mIFNTRVUg KHdoZXJlIFNTRVUgc3RhbmRzIGZvciBTbGljZS8KKyAqIFN1Yi1zbGljZS9FVSkuCisgKgorICog VGhpcyBpcyBkb25lIGJ5IGNvbmZpZ3VyaW5nIFNTRVUgY29uZmlndXJhdGlvbiB1c2luZyB0aGUg YmVsb3cKKyAqIEBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBmb3IgZXZl cnkgc3VwcG9ydGVkIGVuZ2luZSB3aGljaAorICogdXNlcnNwYWNlIGludGVuZHMgdG8gdXNlLgor ICoKKyAqIE5vdCBhbGwgR1BVcyBvciBlbmdpbmVzIHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5 IGluIHdoaWNoIGNhc2UgYW4gZXJyb3IKKyAqIGNvZGUgLUVOT0RFViB3aWxsIGJlIHJldHVybmVk LgorICoKKyAqIEFsc28sIGZsZXhpYmlsaXR5IG9mIHBvc3NpYmxlIFNTRVUgY29uZmlndXJhdGlv biBwZXJtdXRhdGlvbnMgdmFyaWVzIGJldHdlZW4KKyAqIEdQVSBnZW5lcmF0aW9ucyBhbmQgc29m dHdhcmUgaW1wb3NlZCBsaW1pdGF0aW9ucy4gUmVxdWVzdGluZyBzdWNoIGEKKyAqIGNvbWJpbmF0 aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yIGNvZGUgb2YgLUVJTlZBTC4KKyAqCisgKiBOT1RFOiBX aGVuIHBlcmYvT0EgaXMgYWN0aXZlIHRoZSBjb250ZXh0J3MgU1NFVSBjb25maWd1cmF0aW9uIGlz IGlnbm9yZWQgaW4KKyAqIGZhdm91ciBvZiBhIHNpbmdsZSBnbG9iYWwgc2V0dGluZy4KKyAqLwor c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgeworCS8qCisJICogRW5naW5l IGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmlndXJlZCBvciBxdWVyaWVkLgorCSAqLworCV9f dTE2IGVuZ2luZV9jbGFzczsKKwlfX3UxNiBlbmdpbmVfaW5zdGFuY2U7CisKKwkvKgorCSAqIFVu dXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiBmbGFn czsKKworCS8qCisJICogTWFzayBvZiBzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4g VmFsaWQgdmFsdWVzIGFyZSBhIHN1YnNldAorCSAqIG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVy bmVkIGZvciBJOTE1X1BBUkFNX1NMSUNFX01BU0suCisJICovCisJX191NjQgc2xpY2VfbWFzazsK KworCS8qCisJICogTWFzayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4g VmFsaWQgdmFsdWVzIGFyZSBhCisJICogc3Vic2V0IG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVy biBieSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0suCisJICovCisJX191NjQgc3Vic2xpY2VfbWFz azsKKworCS8qCisJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBFVXMgdG8gZW5hYmxlIHBl ciBzdWJzbGljZSBmb3IgdGhlCisJICogY29udGV4dC4gbWluX2V1c19wZXJfc3Vic2xpY2UgbXVz dCBiZSBpbmZlcmlvciBvciBlcXVhbCB0bworCSAqIG1heF9ldXNfcGVyX3N1YnNsaWNlLgorCSAq LworCV9fdTE2IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCV9fdTE2IG1heF9ldXNfcGVyX3N1YnNs aWNlOworCisJLyoKKwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8u CisJICovCisJX191MzIgcnN2ZDsKK307CisKIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0IHsKIAlJ OTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KIAlJOTE1X09BX0ZPUk1B VF9BMjksCSAgICAvKiBIU1cgb25seSAqLwotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK