From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 4/5] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Wed, 30 Jan 2019 09:34:15 +0000 Message-ID: <20190130093416.3513-5-tvrtko.ursulin@linux.intel.com> References: <20190130093416.3513-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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id A66DF6EADB for ; Wed, 30 Jan 2019 09:34:18 +0000 (UTC) In-Reply-To: <20190130093416.3513-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 IHRvIHNob3cgYSBiZXR0ZXIgZXhhbXBsZS4KCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRl c2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4OTkKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzYzNApJc3N1ZTogaHR0cHM6Ly9naXRo dWIuY29tL2ludGVsL21lZGlhLWRyaXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwg TGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBEbWl0cnkgUm9n b3poa2luIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4g PHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhpcGVuZy5nb25n QGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4Lmlu dGVsLmNvbT4KQ2M6IFRvbnkgWWUgPHRvbnkueWVAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ICMgdjIxClJldmlld2VkLWJ5OiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ICMgdjI3Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgMzQwICsrKysrKysr KysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5o IHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgNCAr LQogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgIDY0ICsrKysrCiA0 IGZpbGVzIGNoYW5nZWQsIDQxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCBkMzg4N2MyN2MzYmEuLjRmOGEy MTY2NGI0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtODks NiArODksNyBAQAogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgorI2luY2x1ZGUgImludGVsX2xyY19yZWcuaCIK ICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgogCiAjZGVmaW5lIEFMTF9MM19TTElDRVMo ZGV2KSAoMSA8PCBOVU1fTDNfU0xJQ0VTKGRldikpIC0gMQpAQCAtMzIxLDYgKzMyMiwxNSBAQCBz dGF0aWMgdTMyIGRlZmF1bHRfZGVzY190ZW1wbGF0ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKIAlyZXR1cm4gZGVzYzsKIH0KIAorc3RhdGljIHZvaWQgaW50ZWxfY29udGV4 dF9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAorCQkJCSBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPQorCQljb250YWlu ZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNlKSwgYWN0aXZlX3RyYWNrZXIpOworCisJaW50ZWxfY29u dGV4dF91bnBpbihjZSk7Cit9CisKIHZvaWQKIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCiAJCSAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCkBAIC0z MzMsNiArMzQzLDggQEAgaW50ZWxfY29udGV4dF9pbml0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwKIAogCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8KIAljZS0+c3NldSA9 IGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoY3R4LT5pOTE1KTsKKworCWluaXRfcmVxdWVzdF9h Y3RpdmUoJmNlLT5hY3RpdmVfdHJhY2tlciwgaW50ZWxfY29udGV4dF9yZXRpcmUpOwogfQogCiBz dGF0aWMgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgpAQCAtODUwLDYgKzg2Miw1NiBAQCBpbnQg aTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1 c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJZ290 byBvdXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNl cl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJCXJl dHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+ aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAorCQkJCQkgIHVzZXJfc3NldS5l bmdpbmVfaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8q IE9ubHkgdXNlIGZvciBtdXRleCBoZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5kIHNl dF9wYXJhbS4gKi8KKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWNlID0gdG9f aW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CisKKwl1c2VyX3NzZXUuc2xpY2VfbWFzayA9IGNl LT5zc2V1LnNsaWNlX21hc2s7CisJdXNlcl9zc2V1LnN1YnNsaWNlX21hc2sgPSBjZS0+c3NldS5z dWJzbGljZV9tYXNrOworCXVzZXJfc3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1 Lm1pbl9ldXNfcGVyX3N1YnNsaWNlOworCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9 IGNlLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9w dHIoYXJncy0+dmFsdWUpLCAmdXNlcl9zc2V1LAorCQkJIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJ cmV0dXJuIC1FRkFVTFQ7CisKK291dDoKKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7 CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgICAgc3RydWN0IGRybV9m aWxlICpmaWxlKQogewpAQCAtODYyLDE1ICs5MjQsMTcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRf Z2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAo IWN0eCkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlhcmdzLT5zaXplID0gMDsKIAlzd2l0Y2ggKGFy Z3MtPnBhcmFtKSB7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKIAkJcmV0 ID0gLUVJTlZBTDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01B UDoKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRf Tk9fWkVST01BUCwgJmN0eC0+dXNlcl9mbGFncyk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX0dUVF9TSVpFOgorCQlhcmdzLT5zaXplID0gMDsKKwogCQlpZiAoY3R4LT5wcGd0 dCkKIAkJCWFyZ3MtPnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CiAJCWVsc2UgaWYgKHRv X2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCkBAIC04NzksMTQgKzk0MywyMCBAQCBpbnQg aTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCQkJYXJncy0+dmFsdWUgPSB0b19pOTE1KGRldiktPmdndHQudm0udG90YWw7 CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6CisJ CWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfbm9fZXJy b3JfY2FwdHVyZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5O QUJMRToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4 dF9pc19iYW5uYWJsZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9Q UklPUklUWToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gY3R4LT5zY2hlZC5w cmlvcml0eSA+PiBJOTE1X1VTRVJfUFJJT1JJVFlfU0hJRlQ7CiAJCWJyZWFrOworCWNhc2UgSTkx NV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJy ZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtODk2LDYgKzk2 NiwyNzAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGdl bjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkgc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXU2 NCBvZmZzZXQ7CisJdTMyICpjczsKKworCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7CisJ aWYgKElTX0VSUihjcykpCisJCXJldHVybiBQVFJfRVJSKGNzKTsKKworCW9mZnNldCA9IGk5MTVf Z2d0dF9vZmZzZXQoY2UtPnN0YXRlKSArCisJCSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKwor CQkgKENUWF9SX1BXUl9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkqY3MrKyA9IE1JX1NUT1JFX0RX T1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJKmNzKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNl dCk7CisJKmNzKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysgPSBnZW44X21ha2Vf cnBjcyhycS0+aTkxNSwgJnNzZXUpOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAorCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAq cHJldjsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlpbnQgcmV0OworCisJR0VNX0JVR19P TighY2UtPnBpbl9jb3VudCk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKKworCS8qIFN1Ym1pdHRpbmcgcmVxdWVzdHMgZXRjIG5lZWRzIHRoZSBodyBh d2FrZS4gKi8KKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlycSA9 IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKwlpZiAo SVNfRVJSKHJxKSkgeworCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBvdXRfcHV0OworCX0K KworCS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSBieSB0aGlz IGNvbnRleHQuICovCisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmNlLT5yaW5nLT50aW1l bGluZS0+bGFzdF9yZXF1ZXN0LAorCQkJCSAgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlp ZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkgeworCQlyZXQgPSBpOTE1 X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxLCAmcHJldi0+ZmVuY2UpOworCQlpZiAocmV0IDwg MCkKKwkJCWdvdG8gb3V0X2FkZDsKKwl9CisKKwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWco cnEsIGNlLCBzc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9hZGQ7CisKKwkvKiBPcmRlciBh bGwgZm9sbG93aW5nIHJlcXVlc3RzIHRvIGJlIGFmdGVyLiAqLworCWk5MTVfdGltZWxpbmVfc2V0 X2JhcnJpZXIoY2UtPnJpbmctPnRpbWVsaW5lLCBycSk7CisKKwkvKgorCSAqIEd1YXJhbnRlZSBj b250ZXh0IGltYWdlIGFuZCB0aGUgdGltZWxpbmUgcmVtYWlucyBwaW5uZWQgdW50aWwgdGhlCisJ ICogbW9kaWZ5aW5nIHJlcXVlc3QgaXMgcmV0aXJlZCBieSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0 eSB0cmFja2VyLgorCSAqCisJICogQnV0IHdlIG9ubHkgbmVlZCB0byB0YWtlIG9uZSBwaW4gb24g dGhlIGFjY291bnQgb2YgaXQuIE9yIGluIG90aGVyCisJICogd29yZHMgdHJhbnNmZXIgdGhlIHBp bm5lZCBjZSBvYmplY3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KKwkgKi8KKwlpZiAoIWk5 MTVfZ2VtX2FjdGl2ZV9pc3NldCgmY2UtPmFjdGl2ZV90cmFja2VyKSkKKwkJX19pbnRlbF9jb250 ZXh0X3BpbihjZSk7CisJaTkxNV9nZW1fYWN0aXZlX3NldCgmY2UtPmFjdGl2ZV90cmFja2VyLCBy cSk7CisKK291dF9hZGQ6CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitvdXRfcHV0OgorCWludGVs X3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludAoraTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCWludCByZXQ7CisKKwlHRU1fQlVH X09OKElOVEVMX0dFTihjdHgtPmk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9 IFJDUyk7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIE5vdGhpbmcg dG8gZG8gaWYgdW5tb2RpZmllZC4gKi8KKwlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBz aXplb2Yoc3NldSkpKQorCQlnb3RvIG91dDsKKworCS8qCisJICogSWYgY29udGV4dCBpcyBub3Qg aWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CisJICog aXRzIGNvbnRleHQgaW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29udGV4dC4gUHJpc3RpbmUgYW5kIGlk bGUgY29udGV4dHMKKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQgb24gcGlubmluZy4KKwkgKi8KKwlp ZiAoY2UtPnBpbl9jb3VudCkKKwkJcmV0ID0gZ2VuOF9tb2RpZnlfcnBjc19ncHUoY2UsIGVuZ2lu ZSwgc3NldSk7CisKKwlpZiAoIXJldCkKKwkJY2UtPnNzZXUgPSBzc2V1OworCitvdXQ6CisJbXV0 ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludAordXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJCSAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtX3NzZXUgKnVzZXIsCisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgKmNvbnRleHQpCit7CisJ Y29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKmRldmljZSA9ICZSVU5USU1FX0lORk8oaTkxNSkt PnNzZXU7CisKKwkvKiBObyB6ZXJvcyBpbiBhbnkgZmllbGQuICovCisJaWYgKCF1c2VyLT5zbGlj ZV9tYXNrIHx8ICF1c2VyLT5zdWJzbGljZV9tYXNrIHx8CisJICAgICF1c2VyLT5taW5fZXVzX3Bl cl9zdWJzbGljZSB8fCAhdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlO VkFMOworCisJLyogTWF4ID4gbWluLiAqLworCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSA8IHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8q IENoZWNrIHZhbGlkaXR5IGFnYWluc3QgaGFyZHdhcmUuICovCisJaWYgKHVzZXItPnNsaWNlX21h c2sgJiB+ZGV2aWNlLT5zbGljZV9tYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1c2Vy LT5zdWJzbGljZV9tYXNrICYgfmRldmljZS0+c3Vic2xpY2VfbWFza1swXSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPiBkZXZpY2UtPm1heF9l dXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICogU29tZSBmdXR1 cmUgcHJvb2Zpbmcgb24gdGhlIHR5cGVzIHNpbmNlIHRoZSB1QVBJIGlzIHdpZGVyIHRoYW4gdGhl CisJICogY3VycmVudCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlpZiAoV0FSTl9P TigoZmxzKHVzZXItPnNsaWNlX21hc2spID4KKwkJICAgICBzaXplb2YoY29udGV4dC0+c2xpY2Vf bWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAorCQkgICAgKGZscyh1c2VyLT5zdWJzbGljZV9tYXNr KSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQtPnN1YnNsaWNlX21hc2spICogQklUU19QRVJfQllU RSkgfHwKKwkJICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlLAor CQkJCSAgIGNvbnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAgb3ZlcmZsb3dz X3R5cGUodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4dC0+bWF4X2V1 c19wZXJfc3Vic2xpY2UpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb250ZXh0LT5zbGljZV9t YXNrID0gdXNlci0+c2xpY2VfbWFzazsKKwljb250ZXh0LT5zdWJzbGljZV9tYXNrID0gdXNlci0+ c3Vic2xpY2VfbWFzazsKKwljb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1p bl9ldXNfcGVyX3N1YnNsaWNlOworCWNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gdXNl ci0+bWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKiBQYXJ0IHNwZWNpZmljIHJlc3RyaWN0aW9u cy4gKi8KKwlpZiAoSVNfR0VOKGk5MTUsIDExKSkgeworCQl1bnNpZ25lZCBpbnQgaHdfcyA9IGh3 ZWlnaHQ4KGRldmljZS0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCBod19zc19wZXJfcyA9 IGh3ZWlnaHQ4KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7CisJCXVuc2lnbmVkIGludCByZXFf cyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgcmVxX3Nz ID0gaHdlaWdodDgoY29udGV4dC0+c3Vic2xpY2VfbWFzayk7CisKKwkJLyoKKwkJICogT25seSBm dWxsIHN1YnNsaWNlIGVuYWJsZW1lbnQgaXMgcG9zc2libGUgaWYgbW9yZSB0aGFuIG9uZQorCQkg KiBzbGljZSBpcyB0dXJuZWQgb24uCisJCSAqLworCQlpZiAocmVxX3MgPiAxICYmIHJlcV9zcyAh PSBod19zc19wZXJfcykKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIElmIG1vcmUg dGhhbiBmb3VyIChTU2NvdW50IGJpdGZpZWxkIGxpbWl0KSBzdWJzbGljZXMgYXJlCisJCSAqIHJl cXVlc3RlZCB0aGVuIHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2ZW4uCisJCSAqLworCQlpZiAocmVx X3NzID4gNCAmJiAocmVxX3NzICYgMSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkg KiBJZiBvbmx5IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBzdWJzbGljZSBjb3VudCBpcyBiZWxv dyB0aGUKKwkJICogZGV2aWNlIGZ1bGwgZW5hYmxlbWVudCwgaXQgbXVzdCBiZSBhdCBtb3N0IGhh bGYgb2YgdGhlIGFsbAorCQkgKiBhdmFpbGFibGUgc3Vic2xpY2VzLgorCQkgKi8KKwkJaWYgKHJl cV9zID09IDEgJiYgcmVxX3NzIDwgaHdfc3NfcGVyX3MgJiYKKwkJICAgIHJlcV9zcyA+IChod19z c19wZXJfcyAvIDIpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogQUJJIHJlc3RyaWN0aW9u IC0gVk1FIHVzZSBjYXNlIG9ubHkuICovCisKKwkJLyogQWxsIHNsaWNlcyBvciBvbmUgc2xpY2Ug b25seS4gKi8KKwkJaWYgKHJlcV9zICE9IDEgJiYgcmVxX3MgIT0gaHdfcykKKwkJCXJldHVybiAt RUlOVkFMOworCisJCS8qCisJCSAqIEhhbGYgc3Vic2xpY2VzIG9yIGZ1bGwgZW5hYmxlbWVudCBv bmx5IHdoZW4gb25lIHNsaWNlIGlzCisJCSAqIGVuYWJsZWQuCisJCSAqLworCQlpZiAocmVxX3Mg PT0gMSAmJgorCQkgICAgKHJlcV9zcyAhPSBod19zc19wZXJfcyAmJiByZXFfc3MgIT0gKGh3X3Nz X3Blcl9zIC8gMikpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogTm8gRVUgY29uZmlndXJh dGlvbiBjaGFuZ2VzLiAqLworCQlpZiAoKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlICE9CisJ CSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgICh1c2VyLT5tYXhf ZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAgIGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2Up KQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg c2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVj dCBpbnRlbF9zc2V1IHNzZXU7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5zaXplIDwgc2l6ZW9m KHVzZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFJU19HRU4oaTkxNSwgMTEp KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1 NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQor CQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJz dmQpCisJCXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91 c2VyKGk5MTUsCisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKKwkJCQkJICB1c2VyX3Nz ZXUuZW5naW5lX2luc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBPbmx5IHJlbmRlciBlbmdpbmUgc3VwcG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLwor CWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisK KwlyZXQgPSB1c2VyX3RvX2NvbnRleHRfc3NldShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25m aWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBp bnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTgs NyArMTI5Miw5IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJCUk5MTVfVVNFUl9QUklPUklUWShwcmlv cml0eSk7CiAJCX0KIAkJYnJlYWs7Ci0KKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgor CQlyZXQgPSBzZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQg PSAtRUlOVkFMOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu aAppbmRleCAyZjA4NjQ2NzkwMzAuLjIzZGVhMDQ5ZjQ2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTczLDYgKzE3MywxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCB7CiAJCXU2NCBscmNfZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioKKwkJ ICogYWN0aXZlX3RyYWNrZXI6IEFjdGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0 aXZpdHkKKwkJICogb24gdGhpcyBpbnRlbF9jb250ZXh0IG9iamVjdC4KKwkJICovCisJCXN0cnVj dCBpOTE1X2dlbV9hY3RpdmUgYWN0aXZlX3RyYWNrZXI7CisKIAkJY29uc3Qgc3RydWN0IGludGVs X2NvbnRleHRfb3BzICpvcHM7CiAKIAkJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0 aW9uaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGQ5OWM0NjJlMmMwOS4uNWU5 OGZkNzliZDlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjQ5OCw3ICsyNDk4LDkg QEAgdTMyIGdlbjhfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1 Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpCiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBh IGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAq LwotCWlmIChJU19HRU4oaTkxNSwgMTEpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0 KSB7CisJaWYgKElTX0dFTihpOTE1LCAxMSkgJiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAg c3Vic2xpY2VzID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0p IC8gMikpIHsKIAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDI5OGIyZTE5Nzc0NC4uMzk3ODEwZmEyZDMzIDEw MDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oCkBAIC0xNDg2LDkgKzE0ODYsNzMgQEAgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtIHsKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJ VFkJMTAyMyAvKiBpbmNsdXNpdmUgKi8KICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9Q UklPUklUWQkJMAogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAy MyAvKiBpbmNsdXNpdmUgKi8KKwkvKgorCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJh bSwgdmFsdWUgc2hvdWxkIGJlIGEgcG9pbnRlciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtX3NzZXUuCisJICovCisjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcK IAlfX3U2NCB2YWx1ZTsKIH07CiAKKy8qKgorICogQ29udGV4dCBTU0VVIHByb2dyYW1taW5nCisg KgorICogSXQgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgZWl0aGVyIGZ1bmN0aW9uYWwgb3IgcGVyZm9y bWFuY2UgcmVhc29uIHRvIGNvbmZpZ3VyZQorICogYSBjb250ZXh0IHRvIHJ1biB3aXRoIGEgcmVk dWNlZCBudW1iZXIgb2YgU1NFVSAod2hlcmUgU1NFVSBzdGFuZHMgZm9yIFNsaWNlLworICogU3Vi LXNsaWNlL0VVKS4KKyAqCisgKiBUaGlzIGlzIGRvbmUgYnkgY29uZmlndXJpbmcgU1NFVSBjb25m aWd1cmF0aW9uIHVzaW5nIHRoZSBiZWxvdworICogQHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1IGZvciBldmVyeSBzdXBwb3J0ZWQgZW5naW5lIHdoaWNoCisgKiB1c2Vyc3Bh Y2UgaW50ZW5kcyB0byB1c2UuCisgKgorICogTm90IGFsbCBHUFVzIG9yIGVuZ2luZXMgc3VwcG9y dCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gd2hpY2ggY2FzZSBhbiBlcnJvcgorICogY29kZSAtRU5P REVWIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICogQWxzbywgZmxleGliaWxpdHkgb2YgcG9zc2li bGUgU1NFVSBjb25maWd1cmF0aW9uIHBlcm11dGF0aW9ucyB2YXJpZXMgYmV0d2VlbgorICogR1BV IGdlbmVyYXRpb25zIGFuZCBzb2Z0d2FyZSBpbXBvc2VkIGxpbWl0YXRpb25zLiBSZXF1ZXN0aW5n IHN1Y2ggYQorICogY29tYmluYXRpb24gd2lsbCByZXR1cm4gYW4gZXJyb3IgY29kZSBvZiAtRUlO VkFMLgorICoKKyAqIE5PVEU6IFdoZW4gcGVyZi9PQSBpcyBhY3RpdmUgdGhlIGNvbnRleHQncyBT U0VVIGNvbmZpZ3VyYXRpb24gaXMgaWdub3JlZCBpbgorICogZmF2b3VyIG9mIGEgc2luZ2xlIGds b2JhbCBzZXR0aW5nLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSB7CisJLyoKKwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9y IHF1ZXJpZWQuCisJICovCisJX191MTYgZW5naW5lX2NsYXNzOworCV9fdTE2IGVuZ2luZV9pbnN0 YW5jZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJv LgorCSAqLworCV9fdTMyIGZsYWdzOworCisJLyoKKwkgKiBNYXNrIG9mIHNsaWNlcyB0byBlbmFi bGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEgc3Vic2V0CisJICogb2YgdGhl IGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVfUEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8K KwlfX3U2NCBzbGljZV9tYXNrOworCisJLyoKKwkgKiBNYXNrIG9mIHN1YnNsaWNlcyB0byBlbmFi bGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhl IGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8K KwlfX3U2NCBzdWJzbGljZV9tYXNrOworCisJLyoKKwkgKiBNaW5pbXVtL01heGltdW0gbnVtYmVy IG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNsaWNlIGZvciB0aGUKKwkgKiBjb250ZXh0LiBtaW5f ZXVzX3Blcl9zdWJzbGljZSBtdXN0IGJlIGluZmVyaW9yIG9yIGVxdWFsIHRvCisJICogbWF4X2V1 c19wZXJfc3Vic2xpY2UuCisJICovCisJX191MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7CisJX191 MTYgbWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0 IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiByc3ZkOworfTsKKwogZW51bSBkcm1f aTkxNV9vYV9mb3JtYXQgewogCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25s eSAqLwogCUk5MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjE5LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=