From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v30 4/5] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Thu, 31 Jan 2019 08:47:37 +0000 Message-ID: <20190131084737.8745-1-tvrtko.ursulin@linux.intel.com> References: <20190130101535.20493-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A3BE6E100 for ; Thu, 31 Jan 2019 08:47:42 +0000 (UTC) In-Reply-To: <20190130101535.20493-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 Y2tzLgoKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTEwMDg5OQpCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MTA3NjM0Cklzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJp dmVyL2lzc3Vlcy8yNjcKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5s YW5kd2VybGluQGludGVsLmNvbT4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296 aGtpbkBpbnRlbC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgpDYzogWmhpcGVuZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogVG9ueSBZZSA8 dG9ueS55ZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28u dXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4gIyB2MjEKUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFz LmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4gIyB2MjcKQWNrZWQtYnk6IFRpbW8gQWFsdG9uZW4g PHRpbW8uYWFsdG9uZW5AY2Fub25pY2FsLmNvbT4KQWNrZWQtYnk6IFRha2FzaGkgSXdhaSA8dGl3 YWlAc3VzZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg fCAzNDIgKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmggfCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg ICAgICAgIHwgICA0ICstCiBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAg fCAgNjQgKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGQzODg3 YzI3YzNiYS4uMTg3OTMwOGE1NWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50 ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUg QUxMX0wzX1NMSUNFUyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjEs NiArMzIyLDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9p ZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJ CQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7 CisKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKK30KKwogdm9pZAogaW50ZWxfY29udGV4dF9p bml0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKQEAgLTMzMyw2ICszNDMsOCBAQCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlLAogCiAJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAq LwogCWNlLT5zc2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOworCisJ aW5pdF9yZXF1ZXN0X2FjdGl2ZSgmY2UtPmFjdGl2ZV90cmFja2VyLCBpbnRlbF9jb250ZXh0X3Jl dGlyZSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCkBAIC04NTAsNiAr ODYyLDU2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZXRf c3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6 ZSA9PSAwKQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJf c3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3Nz ZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1 KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3Nz ZXUucnN2ZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9v a3VwX3VzZXIoY3R4LT5pOTE1LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJ CSAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAt RUlOVkFMOworCisJLyogT25seSB1c2UgZm9yIG11dGV4IGhlcmUgaXMgdG8gc2VyaWFsaXplIGdl dF9wYXJhbSBhbmQgc2V0X3BhcmFtLiAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKworCXVzZXJfc3NldS5z bGljZV9tYXNrID0gY2UtPnNzZXUuc2xpY2VfbWFzazsKKwl1c2VyX3NzZXUuc3Vic2xpY2VfbWFz ayA9IGNlLT5zc2V1LnN1YnNsaWNlX21hc2s7CisJdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1YnNs aWNlID0gY2UtPnNzZXUubWluX2V1c19wZXJfc3Vic2xpY2U7CisJdXNlcl9zc2V1Lm1heF9ldXNf cGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwltdXRleF91 bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoY29weV90b191c2Vy KHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9mKHVz ZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBzaXpl b2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9n ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC04NjIsMTUgKzkyNCwxNyBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCWlmICghY3R4KQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyZ3MtPnNpemUgPSAw OwogCXN3aXRjaCAoYXJncy0+cGFyYW0pIHsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5f UEVSSU9EOgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9Q QVJBTV9OT19aRVJPTUFQOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSB0ZXN0 X2JpdChVQ09OVEVYVF9OT19aRVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKIAkJYnJlYWs7CiAJ Y2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCiAJ CWlmIChjdHgtPnBwZ3R0KQogCQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsK IAkJZWxzZSBpZiAodG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKQEAgLTg3OSwxNCAr OTQzLDIwIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+ Z2d0dC52bS50b3RhbDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJS T1JfQ0FQVFVSRToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1f Y29udGV4dF9ub19lcnJvcl9jYXB0dXJlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX0JBTk5BQkxFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBp OTE1X2dlbV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX1BSSU9SSVRZOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUg PSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKIAkJYnJl YWs7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUoY3R4 LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7 CkBAIC04OTYsNiArOTY2LDI3MiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAK K3N0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAorCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVjdCBpbnRlbF9zc2V1 IHNzZXUpCit7CisJdTY0IG9mZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5nX2Jl Z2luKHJxLCA0KTsKKwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCisJ b2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpICsKKwkJIExSQ19TVEFURV9QTiAq IFBBR0VfU0laRSArCisJCSAoQ1RYX1JfUFdSX0NMS19TVEFURSArIDEpICogNDsKKworCSpjcysr ID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKKwkqY3MrKyA9IGxvd2Vy XzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqY3Mr KyA9IGdlbjhfbWFrZV9ycGNzKHJxLT5pOTE1LCAmc3NldSk7CisKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocnEsIGNzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZW44X21vZGlmeV9y cGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCSAgICAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsICpwcmV2OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCWludCByZXQ7 CisKKwlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMg bmVlZHMgdGhlIGh3IGF3YWtlLiAqLworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChp OTE1KTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2VybmVsX2Nv bnRleHQpOworCWlmIChJU19FUlIocnEpKSB7CisJCXJldCA9IFBUUl9FUlIocnEpOworCQlnb3Rv IG91dF9wdXQ7CisJfQorCisJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFj dGl2aXR5IGJ5IHRoaXMgY29udGV4dC4gKi8KKwlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3Jhdygm Y2UtPnJpbmctPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCisJCQkJICAgJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCWlmIChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHByZXYpKSB7 CisJCXJldCA9IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2UocnEsICZwcmV2LT5mZW5jZSk7 CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBvdXRfYWRkOworCX0KKworCS8qIE9yZGVyIGFsbCBm b2xsb3dpbmcgcmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICovCisJcmV0ID0gaTkxNV90aW1lbGluZV9z ZXRfYmFycmllcihjZS0+cmluZy0+dGltZWxpbmUsIHJxKTsKKwlpZiAocmV0KQorCQlnb3RvIG91 dF9hZGQ7CisKKwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKKwlp ZiAocmV0KQorCQlnb3RvIG91dF9hZGQ7CisKKwkvKgorCSAqIEd1YXJhbnRlZSBjb250ZXh0IGlt YWdlIGFuZCB0aGUgdGltZWxpbmUgcmVtYWlucyBwaW5uZWQgdW50aWwgdGhlCisJICogbW9kaWZ5 aW5nIHJlcXVlc3QgaXMgcmV0aXJlZCBieSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0eSB0cmFja2Vy LgorCSAqCisJICogQnV0IHdlIG9ubHkgbmVlZCB0byB0YWtlIG9uZSBwaW4gb24gdGhlIGFjY291 bnQgb2YgaXQuIE9yIGluIG90aGVyCisJICogd29yZHMgdHJhbnNmZXIgdGhlIHBpbm5lZCBjZSBv YmplY3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KKwkgKi8KKwlpZiAoIWk5MTVfZ2VtX2Fj dGl2ZV9pc3NldCgmY2UtPmFjdGl2ZV90cmFja2VyKSkKKwkJX19pbnRlbF9jb250ZXh0X3Bpbihj ZSk7CisJaTkxNV9nZW1fYWN0aXZlX3NldCgmY2UtPmFjdGl2ZV90cmFja2VyLCBycSk7CisKK291 dF9hZGQ6CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitvdXRfcHV0OgorCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUsIHdha2VyZWYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAor aTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1 Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2lu dGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCWludCByZXQ7CisKKwlHRU1fQlVHX09OKElOVEVM X0dFTihjdHgtPmk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CisK KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYg dW5tb2RpZmllZC4gKi8KKwlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBzaXplb2Yoc3Nl dSkpKQorCQlnb3RvIG91dDsKKworCS8qCisJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBo YXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CisJICogaXRzIGNvbnRl eHQgaW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29udGV4dC4gUHJpc3RpbmUgYW5kIGlkbGUgY29udGV4 dHMKKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQgb24gcGlubmluZy4KKwkgKi8KKwlpZiAoY2UtPnBp bl9jb3VudCkKKwkJcmV0ID0gZ2VuOF9tb2RpZnlfcnBjc19ncHUoY2UsIGVuZ2luZSwgc3NldSk7 CisKKwlpZiAoIXJldCkKKwkJY2UtPnNzZXUgPSBzc2V1OworCitvdXQ6CisJbXV0ZXhfdW5sb2Nr KCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludAordXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCisJCSAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUg KnVzZXIsCisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgKmNvbnRleHQpCit7CisJY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKmRldmljZSA9ICZSVU5USU1FX0lORk8oaTkxNSktPnNzZXU7CisK KwkvKiBObyB6ZXJvcyBpbiBhbnkgZmllbGQuICovCisJaWYgKCF1c2VyLT5zbGljZV9tYXNrIHx8 ICF1c2VyLT5zdWJzbGljZV9tYXNrIHx8CisJICAgICF1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGlj ZSB8fCAhdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJ LyogTWF4ID4gbWluLiAqLworCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA8IHVzZXIt Pm1pbl9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIENoZWNrIHZh bGlkaXR5IGFnYWluc3QgaGFyZHdhcmUuICovCisJaWYgKHVzZXItPnNsaWNlX21hc2sgJiB+ZGV2 aWNlLT5zbGljZV9tYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1c2VyLT5zdWJzbGlj ZV9tYXNrICYgfmRldmljZS0+c3Vic2xpY2VfbWFza1swXSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPiBkZXZpY2UtPm1heF9ldXNfcGVyX3N1 YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICogU29tZSBmdXR1cmUgcHJvb2Zp bmcgb24gdGhlIHR5cGVzIHNpbmNlIHRoZSB1QVBJIGlzIHdpZGVyIHRoYW4gdGhlCisJICogY3Vy cmVudCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlpZiAoV0FSTl9PTigoZmxzKHVz ZXItPnNsaWNlX21hc2spID4KKwkJICAgICBzaXplb2YoY29udGV4dC0+c2xpY2VfbWFzaykgKiBC SVRTX1BFUl9CWVRFKSB8fAorCQkgICAgKGZscyh1c2VyLT5zdWJzbGljZV9tYXNrKSA+CisJCSAg ICAgc2l6ZW9mKGNvbnRleHQtPnN1YnNsaWNlX21hc2spICogQklUU19QRVJfQllURSkgfHwKKwkJ ICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlLAorCQkJCSAgIGNv bnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAgb3ZlcmZsb3dzX3R5cGUodXNl ci0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4dC0+bWF4X2V1c19wZXJfc3Vi c2xpY2UpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb250ZXh0LT5zbGljZV9tYXNrID0gdXNl ci0+c2xpY2VfbWFzazsKKwljb250ZXh0LT5zdWJzbGljZV9tYXNrID0gdXNlci0+c3Vic2xpY2Vf bWFzazsKKwljb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1pbl9ldXNfcGVy X3N1YnNsaWNlOworCWNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWF4X2V1 c19wZXJfc3Vic2xpY2U7CisKKwkvKiBQYXJ0IHNwZWNpZmljIHJlc3RyaWN0aW9ucy4gKi8KKwlp ZiAoSVNfR0VOKGk5MTUsIDExKSkgeworCQl1bnNpZ25lZCBpbnQgaHdfcyA9IGh3ZWlnaHQ4KGRl dmljZS0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCBod19zc19wZXJfcyA9IGh3ZWlnaHQ4 KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7CisJCXVuc2lnbmVkIGludCByZXFfcyA9IGh3ZWln aHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgcmVxX3NzID0gaHdlaWdo dDgoY29udGV4dC0+c3Vic2xpY2VfbWFzayk7CisKKwkJLyoKKwkJICogT25seSBmdWxsIHN1YnNs aWNlIGVuYWJsZW1lbnQgaXMgcG9zc2libGUgaWYgbW9yZSB0aGFuIG9uZQorCQkgKiBzbGljZSBp cyB0dXJuZWQgb24uCisJCSAqLworCQlpZiAocmVxX3MgPiAxICYmIHJlcV9zcyAhPSBod19zc19w ZXJfcykKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIElmIG1vcmUgdGhhbiBmb3Vy IChTU2NvdW50IGJpdGZpZWxkIGxpbWl0KSBzdWJzbGljZXMgYXJlCisJCSAqIHJlcXVlc3RlZCB0 aGVuIHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2ZW4uCisJCSAqLworCQlpZiAocmVxX3NzID4gNCAm JiAocmVxX3NzICYgMSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBvbmx5 IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBzdWJzbGljZSBjb3VudCBpcyBiZWxvdyB0aGUKKwkJ ICogZGV2aWNlIGZ1bGwgZW5hYmxlbWVudCwgaXQgbXVzdCBiZSBhdCBtb3N0IGhhbGYgb2YgdGhl IGFsbAorCQkgKiBhdmFpbGFibGUgc3Vic2xpY2VzLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEg JiYgcmVxX3NzIDwgaHdfc3NfcGVyX3MgJiYKKwkJICAgIHJlcV9zcyA+IChod19zc19wZXJfcyAv IDIpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogQUJJIHJlc3RyaWN0aW9uIC0gVk1FIHVz ZSBjYXNlIG9ubHkuICovCisKKwkJLyogQWxsIHNsaWNlcyBvciBvbmUgc2xpY2Ugb25seS4gKi8K KwkJaWYgKHJlcV9zICE9IDEgJiYgcmVxX3MgIT0gaHdfcykKKwkJCXJldHVybiAtRUlOVkFMOwor CisJCS8qCisJCSAqIEhhbGYgc3Vic2xpY2VzIG9yIGZ1bGwgZW5hYmxlbWVudCBvbmx5IHdoZW4g b25lIHNsaWNlIGlzCisJCSAqIGVuYWJsZWQuCisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJgor CQkgICAgKHJlcV9zcyAhPSBod19zc19wZXJfcyAmJiByZXFfc3MgIT0gKGh3X3NzX3Blcl9zIC8g MikpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogTm8gRVUgY29uZmlndXJhdGlvbiBjaGFu Z2VzLiAqLworCQlpZiAoKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlICE9CisJCSAgICAgZGV2 aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgICh1c2VyLT5tYXhfZXVzX3Blcl9z dWJzbGljZSAhPQorCQkgICAgIGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpKQorCQkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2V0X3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2Vy X3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9z c2V1IHNzZXU7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3Nl dSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFJU19HRU4oaTkxNSwgMTEpKQorCQlyZXR1 cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNl cl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJCXJl dHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGk5MTUs CisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5l X2luc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5 IHJlbmRlciBlbmdpbmUgc3VwcG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdp bmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1 c2VyX3RvX2NvbnRleHRfc3NldShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3Nl dShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3Mt PnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9n ZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTgsNyArMTI5NCw5 IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJCUk5MTVfVVNFUl9QUklPUklUWShwcmlvcml0eSk7CiAJ CX0KIAkJYnJlYWs7Ci0KKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBz ZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFM OwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCA5 MTlmNmYwYTBmN2EuLjkyYWQ1MjcyZTU3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaApAQCAtMTgzLDYgKzE4MywxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7 CiAJCXU2NCBscmNfZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioKKwkJICogYWN0aXZl X3RyYWNrZXI6IEFjdGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkJ ICogb24gdGhpcyBpbnRlbF9jb250ZXh0IG9iamVjdC4KKwkJICovCisJCXN0cnVjdCBpOTE1X2dl bV9hY3RpdmUgYWN0aXZlX3RyYWNrZXI7CisKIAkJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRf b3BzICpvcHM7CiAKIAkJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0aW9uaW5nICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGQ5OWM0NjJlMmMwOS4uNWU5OGZkNzliZDlk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjQ5OCw3ICsyNDk4LDkgQEAgdTMyIGdl bjhfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaW50ZWxf c3NldSAqcmVxX3NzZXUpCiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJl dHdlZW4gb25lIGFuZCBmb3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJ U19HRU4oaTkxNSwgMTEpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYg KElTX0dFTihpOTE1LCAxMSkgJiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xpY2Vz ID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikpIHsK IAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNlOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCmluZGV4IDI5OGIyZTE5Nzc0NC4uMzk3ODEwZmEyZDMzIDEwMDY0NAotLS0g YS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCkBAIC0xNDg2LDkgKzE0ODYsNzMgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtIHsKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAv KiBpbmNsdXNpdmUgKi8KICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJ MAogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNs dXNpdmUgKi8KKwkvKgorCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUg c2hvdWxkIGJlIGEgcG9pbnRlciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3Nz ZXUuCisJICovCisjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2NCB2 YWx1ZTsKIH07CiAKKy8qKgorICogQ29udGV4dCBTU0VVIHByb2dyYW1taW5nCisgKgorICogSXQg bWF5IGJlIG5lY2Vzc2FyeSBmb3IgZWl0aGVyIGZ1bmN0aW9uYWwgb3IgcGVyZm9ybWFuY2UgcmVh c29uIHRvIGNvbmZpZ3VyZQorICogYSBjb250ZXh0IHRvIHJ1biB3aXRoIGEgcmVkdWNlZCBudW1i ZXIgb2YgU1NFVSAod2hlcmUgU1NFVSBzdGFuZHMgZm9yIFNsaWNlLworICogU3ViLXNsaWNlL0VV KS4KKyAqCisgKiBUaGlzIGlzIGRvbmUgYnkgY29uZmlndXJpbmcgU1NFVSBjb25maWd1cmF0aW9u IHVzaW5nIHRoZSBiZWxvdworICogQHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9z c2V1IGZvciBldmVyeSBzdXBwb3J0ZWQgZW5naW5lIHdoaWNoCisgKiB1c2Vyc3BhY2UgaW50ZW5k cyB0byB1c2UuCisgKgorICogTm90IGFsbCBHUFVzIG9yIGVuZ2luZXMgc3VwcG9ydCB0aGlzIGZ1 bmN0aW9uYWxpdHkgaW4gd2hpY2ggY2FzZSBhbiBlcnJvcgorICogY29kZSAtRU5PREVWIHdpbGwg YmUgcmV0dXJuZWQuCisgKgorICogQWxzbywgZmxleGliaWxpdHkgb2YgcG9zc2libGUgU1NFVSBj b25maWd1cmF0aW9uIHBlcm11dGF0aW9ucyB2YXJpZXMgYmV0d2VlbgorICogR1BVIGdlbmVyYXRp b25zIGFuZCBzb2Z0d2FyZSBpbXBvc2VkIGxpbWl0YXRpb25zLiBSZXF1ZXN0aW5nIHN1Y2ggYQor ICogY29tYmluYXRpb24gd2lsbCByZXR1cm4gYW4gZXJyb3IgY29kZSBvZiAtRUlOVkFMLgorICoK KyAqIE5PVEU6IFdoZW4gcGVyZi9PQSBpcyBhY3RpdmUgdGhlIGNvbnRleHQncyBTU0VVIGNvbmZp Z3VyYXRpb24gaXMgaWdub3JlZCBpbgorICogZmF2b3VyIG9mIGEgc2luZ2xlIGdsb2JhbCBzZXR0 aW5nLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB7CisJLyoK KwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9yIHF1ZXJpZWQu CisJICovCisJX191MTYgZW5naW5lX2NsYXNzOworCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsKKwor CS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLwor CV9fdTMyIGZsYWdzOworCisJLyoKKwkgKiBNYXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRo ZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sg dmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVfUEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBz bGljZV9tYXNrOworCisJLyoKKwkgKiBNYXNrIG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRo ZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sg dmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBz dWJzbGljZV9tYXNrOworCisJLyoKKwkgKiBNaW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0 byBlbmFibGUgcGVyIHN1YnNsaWNlIGZvciB0aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9z dWJzbGljZSBtdXN0IGJlIGluZmVyaW9yIG9yIGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vi c2xpY2UuCisJICovCisJX191MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1 c19wZXJfc3Vic2xpY2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFy ZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiByc3ZkOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9m b3JtYXQgewogCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5 MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=