From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [CI 4/5] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 5 Feb 2019 09:50:31 +0000 Message-ID: <20190205095032.22673-4-tvrtko.ursulin@linux.intel.com> References: <20190205095032.22673-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C60E6E6BB for ; Tue, 5 Feb 2019 09:50:27 +0000 (UTC) In-Reply-To: <20190205095032.22673-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 bi5jby51az4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxp bnV4LmludGVsLmNvbT4KQWNrZWQtYnk6IFRpbW8gQWFsdG9uZW4gPHRpbW8uYWFsdG9uZW5AY2Fu b25pY2FsLmNvbT4KQWNrZWQtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KQWNrZWQt Ynk6IFN0w6lwaGFuZSBNYXJjaGVzaW4gPG1hcmNoZXVAY2hyb21pdW0ub3JnPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM0MCArKysrKysrKysrKysrKysr KysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDQgKy0KIGluY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA2NCArKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZDM4ODdjMjdjM2JhLi4yZDNlMWNlOWNjNzYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTg5LDYgKzg5LDcg QEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2lu Y2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5jbHVk ZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIKIAogI2RlZmluZSBBTExfTDNfU0xJQ0VTKGRldikgKDEg PDwgTlVNX0wzX1NMSUNFUyhkZXYpKSAtIDEKQEAgLTMyMSw2ICszMjIsMTUgQEAgc3RhdGljIHUz MiBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAJcmV0dXJuIGRlc2M7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVsX2NvbnRleHRfcmV0aXJl KHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKKwkJCQkgc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0KKwkJY29udGFpbmVyX29mKGFj dGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZV90cmFja2VyKTsKKworCWludGVsX2NvbnRleHRfdW5w aW4oY2UpOworfQorCiB2b2lkCiBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAogCQkgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LApAQCAtMzMzLDYgKzM0 Myw4IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAKIAkv KiBVc2UgdGhlIHdob2xlIGRldmljZSBieSBkZWZhdWx0ICovCiAJY2UtPnNzZXUgPSBpbnRlbF9k ZXZpY2VfZGVmYXVsdF9zc2V1KGN0eC0+aTkxNSk7CisKKwlpbml0X3JlcXVlc3RfYWN0aXZlKCZj ZS0+YWN0aXZlX3RyYWNrZXIsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKIH0KIAogc3RhdGljIHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKQEAgLTg1MCw2ICs4NjIsNTYgQEAgaW50IGk5MTVfZ2Vt X2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFy Z3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgdXNlcl9zc2V1 OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2U7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5zaXplID09IDApCisJCWdvdG8gb3V0Owor CWVsc2UgaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJfcHRyKGFy Z3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7 CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsCisJ CQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2lu c3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHVz ZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFuZCBzZXRfcGFyYW0u ICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljZSA9IHRvX2ludGVsX2Nv bnRleHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5z bGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2Vf bWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVz X3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3Nl dS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3Mt PnZhbHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAt RUZBVUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0 dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKIHsKQEAgLTg2MiwxNSArOTI0LDE3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFt X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKCFjdHgpCiAJ CXJldHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dpdGNoIChhcmdzLT5wYXJh bSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CiAJCXJldCA9IC1FSU5W QUw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pFUk9NQVA6CisJCWFy Z3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVDT05URVhUX05PX1pFUk9N QVAsICZjdHgtPnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJB TV9HVFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0eC0+cHBndHQpCiAJCQlh cmdzLT52YWx1ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNlIGlmICh0b19pOTE1KGRl diktPm1tLmFsaWFzaW5nX3BwZ3R0KQpAQCAtODc5LDE0ICs5NDMsMjAgQEAgaW50IGk5MTVfZ2Vt X2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOwogCQlicmVh azsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgorCQlhcmdzLT5z aXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1 cmUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6CisJ CWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFu bmFibGUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6 CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkg Pj4gSTkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOwogCQlicmVhazsKKwljYXNlIEk5MTVfQ09OVEVY VF9QQVJBTV9TU0VVOgorCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlk ZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTg5Niw2ICs5NjYsMjcwIEBA IGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBnZW44X2VtaXRf cnBjc19jb25maWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJIHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwl1NjQgb2Zmc2V0 OworCXUzMiAqY3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDQpOworCWlmIChJU19F UlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlvZmZzZXQgPSBpOTE1X2dndHRfb2Zm c2V0KGNlLT5zdGF0ZSkgKworCQkgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFICsKKwkJIChDVFhf Ul9QV1JfQ0xLX1NUQVRFICsgMSkgKiA0OworCisJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1f R0VONCB8IE1JX1VTRV9HR1RUOworCSpjcysrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpj cysrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gZ2VuOF9tYWtlX3JwY3MocnEt Pmk5MTUsICZzc2V1KTsKKworCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQKK2dlbjhfbW9kaWZ5X3JwY3NfZ3B1KHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAg ICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnByZXY7CisJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oIWNlLT5w aW5fY291bnQpOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7CisKKwkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdha2UuICov CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJcnEgPSBpOTE1X3Jl cXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7CisJaWYgKElTX0VSUihy cSkpIHsKKwkJcmV0ID0gUFRSX0VSUihycSk7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisKKwkvKiBR dWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgYnkgdGhpcyBjb250ZXh0 LiAqLworCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZjZS0+cmluZy0+dGltZWxpbmUtPmxh c3RfcmVxdWVzdCwKKwkJCQkgICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHByZXYg JiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJldikpIHsKKwkJcmV0ID0gaTkxNV9yZXF1ZXN0 X2F3YWl0X2RtYV9mZW5jZShycSwgJnByZXYtPmZlbmNlKTsKKwkJaWYgKHJldCA8IDApCisJCQln b3RvIG91dF9hZGQ7CisJfQorCisJLyogT3JkZXIgYWxsIGZvbGxvd2luZyByZXF1ZXN0cyB0byBi ZSBhZnRlci4gKi8KKwlyZXQgPSBpOTE1X3RpbWVsaW5lX3NldF9iYXJyaWVyKGNlLT5yaW5nLT50 aW1lbGluZSwgcnEpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2FkZDsKKworCXJldCA9IGdlbjhf ZW1pdF9ycGNzX2NvbmZpZyhycSwgY2UsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2Fk ZDsKKworCS8qCisJICogR3VhcmFudGVlIGNvbnRleHQgaW1hZ2UgYW5kIHRoZSB0aW1lbGluZSBy ZW1haW5zIHBpbm5lZCB1bnRpbCB0aGUKKwkgKiBtb2RpZnlpbmcgcmVxdWVzdCBpcyByZXRpcmVk IGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCisJICoKKwkgKiBCdXQgd2Ugb25s eSBuZWVkIHRvIHRha2Ugb25lIHBpbiBvbiB0aGUgYWNjb3VudCBvZiBpdC4gT3IgaW4gb3RoZXIK KwkgKiB3b3JkcyB0cmFuc2ZlciB0aGUgcGlubmVkIGNlIG9iamVjdCB0byB0cmFja2VkIGFjdGl2 ZSByZXF1ZXN0LgorCSAqLworCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZjZS0+YWN0aXZl X3RyYWNrZXIpKQorCQlfX2ludGVsX2NvbnRleHRfcGluKGNlKTsKKwlpOTE1X2dlbV9hY3RpdmVf c2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIsIHJxKTsKKworb3V0X2FkZDoKKwlpOTE1X3JlcXVlc3Rf YWRkKHJxKTsKK291dF9wdXQ6CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpOTE1X2dlbV9jb250ZXh0X3JlY29u ZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2lu ZSk7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsK KwlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKKworCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLworCWlmICgh bWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCisJCWdvdG8gb3V0OworCisJ LyoKKwkgKiBJZiBjb250ZXh0IGlzIG5vdCBpZGxlIHdlIGhhdmUgdG8gc3VibWl0IGFuIG9yZGVy ZWQgcmVxdWVzdCB0byBtb2RpZnkKKwkgKiBpdHMgY29udGV4dCBpbWFnZSB2aWEgdGhlIGtlcm5l bCBjb250ZXh0LiBQcmlzdGluZSBhbmQgaWRsZSBjb250ZXh0cworCSAqIHdpbGwgYmUgY29uZmln dXJlZCBvbiBwaW5uaW5nLgorCSAqLworCWlmIChjZS0+cGluX2NvdW50KQorCQlyZXQgPSBnZW44 X21vZGlmeV9ycGNzX2dwdShjZSwgZW5naW5lLCBzc2V1KTsKKworCWlmICghcmV0KQorCQljZS0+ c3NldSA9IHNzZXU7CisKK291dDoKKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Cit1c2VyX3RvX2NvbnRl eHRfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAgICBjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNlciwKKwkJICAgICBzdHJ1Y3Qg aW50ZWxfc3NldSAqY29udGV4dCkKK3sKKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqZGV2 aWNlID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsKKworCS8qIE5vIHplcm9zIGluIGFueSBm aWVsZC4gKi8KKwlpZiAoIXVzZXItPnNsaWNlX21hc2sgfHwgIXVzZXItPnN1YnNsaWNlX21hc2sg fHwKKwkgICAgIXVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlIHx8ICF1c2VyLT5tYXhfZXVzX3Bl cl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBNYXggPiBtaW4uICovCisJaWYg KHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlIDwgdXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2Up CisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTb21lIGZ1dHVyZSBwcm9vZmluZyBvbiB0 aGUgdHlwZXMgc2luY2UgdGhlIHVBUEkgaXMgd2lkZXIgdGhhbiB0aGUKKwkgKiBjdXJyZW50IGlu dGVybmFsIGltcGxlbWVudGF0aW9uLgorCSAqLworCWlmIChvdmVyZmxvd3NfdHlwZSh1c2VyLT5z bGljZV9tYXNrLCBjb250ZXh0LT5zbGljZV9tYXNrKSB8fAorCSAgICBvdmVyZmxvd3NfdHlwZSh1 c2VyLT5zdWJzbGljZV9tYXNrLCBjb250ZXh0LT5zdWJzbGljZV9tYXNrKSB8fAorCSAgICBvdmVy Zmxvd3NfdHlwZSh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSwKKwkJCSAgIGNvbnRleHQtPm1p bl9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5tYXhfZXVz X3Blcl9zdWJzbGljZSwKKwkJCSAgIGNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwkvKiBDaGVjayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAq LworCWlmICh1c2VyLT5zbGljZV9tYXNrICYgfmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlpZiAodXNlci0+c3Vic2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNl X21hc2tbMF0pCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1 YnNsaWNlID4gZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwljb250ZXh0LT5zbGljZV9tYXNrID0gdXNlci0+c2xpY2VfbWFzazsKKwljb250ZXh0LT5z dWJzbGljZV9tYXNrID0gdXNlci0+c3Vic2xpY2VfbWFzazsKKwljb250ZXh0LT5taW5fZXVzX3Bl cl9zdWJzbGljZSA9IHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlOworCWNvbnRleHQtPm1heF9l dXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKiBQYXJ0 IHNwZWNpZmljIHJlc3RyaWN0aW9ucy4gKi8KKwlpZiAoSVNfR0VOKGk5MTUsIDExKSkgeworCQl1 bnNpZ25lZCBpbnQgaHdfcyA9IGh3ZWlnaHQ4KGRldmljZS0+c2xpY2VfbWFzayk7CisJCXVuc2ln bmVkIGludCBod19zc19wZXJfcyA9IGh3ZWlnaHQ4KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7 CisJCXVuc2lnbmVkIGludCByZXFfcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOwor CQl1bnNpZ25lZCBpbnQgcmVxX3NzID0gaHdlaWdodDgoY29udGV4dC0+c3Vic2xpY2VfbWFzayk7 CisKKwkJLyoKKwkJICogT25seSBmdWxsIHN1YnNsaWNlIGVuYWJsZW1lbnQgaXMgcG9zc2libGUg aWYgbW9yZSB0aGFuIG9uZQorCQkgKiBzbGljZSBpcyB0dXJuZWQgb24uCisJCSAqLworCQlpZiAo cmVxX3MgPiAxICYmIHJlcV9zcyAhPSBod19zc19wZXJfcykKKwkJCXJldHVybiAtRUlOVkFMOwor CisJCS8qCisJCSAqIElmIG1vcmUgdGhhbiBmb3VyIChTU2NvdW50IGJpdGZpZWxkIGxpbWl0KSBz dWJzbGljZXMgYXJlCisJCSAqIHJlcXVlc3RlZCB0aGVuIHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2 ZW4uCisJCSAqLworCQlpZiAocmVxX3NzID4gNCAmJiAocmVxX3NzICYgMSkpCisJCQlyZXR1cm4g LUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBvbmx5IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBz dWJzbGljZSBjb3VudCBpcyBiZWxvdyB0aGUKKwkJICogZGV2aWNlIGZ1bGwgZW5hYmxlbWVudCwg aXQgbXVzdCBiZSBhdCBtb3N0IGhhbGYgb2YgdGhlIGFsbAorCQkgKiBhdmFpbGFibGUgc3Vic2xp Y2VzLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEgJiYgcmVxX3NzIDwgaHdfc3NfcGVyX3MgJiYK KwkJICAgIHJlcV9zcyA+IChod19zc19wZXJfcyAvIDIpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisK KwkJLyogQUJJIHJlc3RyaWN0aW9uIC0gVk1FIHVzZSBjYXNlIG9ubHkuICovCisKKwkJLyogQWxs IHNsaWNlcyBvciBvbmUgc2xpY2Ugb25seS4gKi8KKwkJaWYgKHJlcV9zICE9IDEgJiYgcmVxX3Mg IT0gaHdfcykKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIEhhbGYgc3Vic2xpY2Vz IG9yIGZ1bGwgZW5hYmxlbWVudCBvbmx5IHdoZW4gb25lIHNsaWNlIGlzCisJCSAqIGVuYWJsZWQu CisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJgorCQkgICAgKHJlcV9zcyAhPSBod19zc19wZXJf cyAmJiByZXFfc3MgIT0gKGh3X3NzX3Blcl9zIC8gMikpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisK KwkJLyogTm8gRVUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiAqLworCQlpZiAoKHVzZXItPm1pbl9l dXNfcGVyX3N1YnNsaWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkg fHwKKwkJICAgICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAgIGRldmljZS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7CisJaW50IHJldDsKKworCWlm IChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJ aWYgKCFJU19HRU4oaTkxNSwgMTEpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zy b21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAg c2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUu ZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJCXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0g aW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGk5MTUsCisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9j bGFzcywKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2luc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRlciBlbmdpbmUgc3VwcG9ydHMgUlBD UyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykK KwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3RvX2NvbnRleHRfc3NldShpOTE1LCAm dXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGk5 MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsK KworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpCiB7CkBAIC05NTgsNyArMTI5Miw5IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3Nl dHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJCUk5 MTVfVVNFUl9QUklPUklUWShwcmlvcml0eSk7CiAJCX0KIAkJYnJlYWs7Ci0KKwljYXNlIEk5MTVf Q09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBzZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVh azsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCA5MTlmNmYwYTBmN2EuLjkyYWQ1MjcyZTU3ZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTgzLDYgKzE4Mywx MiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJCXU2NCBscmNfZGVzYzsKIAkJaW50IHBp bl9jb3VudDsKIAorCQkvKioKKwkJICogYWN0aXZlX3RyYWNrZXI6IEFjdGl2ZSB0cmFja2VyIGZv ciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkJICogb24gdGhpcyBpbnRlbF9jb250ZXh0IG9i amVjdC4KKwkJICovCisJCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgYWN0aXZlX3RyYWNrZXI7CisK IAkJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CiAKIAkJLyoqIHNzZXU6IENv bnRyb2wgZXUvc2xpY2UgcGFydGl0aW9uaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmlu ZGV4IGQ5OWM0NjJlMmMwOS4uNWU5OGZkNzliZDlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwpAQCAtMjQ5OCw3ICsyNDk4LDkgQEAgdTMyIGdlbjhfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpCiAJICogc3Vic2xp Y2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3VyIG9uIHRoZSBm aXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4oaTkxNSwgMTEpICYmIHNsaWNlcyA9 PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYgKElTX0dFTihpOTE1LCAxMSkgJiYKKwkgICAg c2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xpY2VzID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNz ZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikpIHsKIAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAx KTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDI5OGIyZTE5 Nzc0NC4uMzk3ODEwZmEyZDMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0xNDg2LDkgKzE0ODYsNzMg QEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKICNkZWZpbmUgICBJOTE1X0NP TlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAvKiBpbmNsdXNpdmUgKi8KICNkZWZpbmUgICBJ OTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJMAogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9N SU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNsdXNpdmUgKi8KKwkvKgorCSAqIFdoZW4gdXNp bmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUgc2hvdWxkIGJlIGEgcG9pbnRlciB0bworCSAq IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUuCisJICovCisjZGVmaW5lIEk5MTVfQ09O VEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2NCB2YWx1ZTsKIH07CiAKKy8qKgorICogQ29udGV4 dCBTU0VVIHByb2dyYW1taW5nCisgKgorICogSXQgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgZWl0aGVy IGZ1bmN0aW9uYWwgb3IgcGVyZm9ybWFuY2UgcmVhc29uIHRvIGNvbmZpZ3VyZQorICogYSBjb250 ZXh0IHRvIHJ1biB3aXRoIGEgcmVkdWNlZCBudW1iZXIgb2YgU1NFVSAod2hlcmUgU1NFVSBzdGFu ZHMgZm9yIFNsaWNlLworICogU3ViLXNsaWNlL0VVKS4KKyAqCisgKiBUaGlzIGlzIGRvbmUgYnkg Y29uZmlndXJpbmcgU1NFVSBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBiZWxvdworICogQHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IGZvciBldmVyeSBzdXBwb3J0ZWQgZW5n aW5lIHdoaWNoCisgKiB1c2Vyc3BhY2UgaW50ZW5kcyB0byB1c2UuCisgKgorICogTm90IGFsbCBH UFVzIG9yIGVuZ2luZXMgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gd2hpY2ggY2FzZSBh biBlcnJvcgorICogY29kZSAtRU5PREVWIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICogQWxzbywg ZmxleGliaWxpdHkgb2YgcG9zc2libGUgU1NFVSBjb25maWd1cmF0aW9uIHBlcm11dGF0aW9ucyB2 YXJpZXMgYmV0d2VlbgorICogR1BVIGdlbmVyYXRpb25zIGFuZCBzb2Z0d2FyZSBpbXBvc2VkIGxp bWl0YXRpb25zLiBSZXF1ZXN0aW5nIHN1Y2ggYQorICogY29tYmluYXRpb24gd2lsbCByZXR1cm4g YW4gZXJyb3IgY29kZSBvZiAtRUlOVkFMLgorICoKKyAqIE5PVEU6IFdoZW4gcGVyZi9PQSBpcyBh Y3RpdmUgdGhlIGNvbnRleHQncyBTU0VVIGNvbmZpZ3VyYXRpb24gaXMgaWdub3JlZCBpbgorICog ZmF2b3VyIG9mIGEgc2luZ2xlIGdsb2JhbCBzZXR0aW5nLgorICovCitzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW1fc3NldSB7CisJLyoKKwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5j ZSB0byBiZSBjb25maWd1cmVkIG9yIHF1ZXJpZWQuCisJICovCisJX191MTYgZW5naW5lX2NsYXNz OworCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11 c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIGZsYWdzOworCisJLyoKKwkgKiBN YXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJl IGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVfUEFS QU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNrOworCisJLyoKKwkgKiBNYXNr IG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJl IGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFSQU1f U1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9tYXNrOworCisJLyoKKwkgKiBN aW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNsaWNlIGZvciB0 aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0IGJlIGluZmVyaW9yIG9y IGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJICovCisJX191MTYgbWluX2V1 c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKgorCSAq IFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiBy c3ZkOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3JtYXQgewogCUk5MTVfT0FfRk9STUFUX0Ex MyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhT VyBvbmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=