From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v29 4/5] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Wed, 30 Jan 2019 10:15:35 +0000 Message-ID: <20190130101535.20493-1-tvrtko.ursulin@linux.intel.com> References: <20190130093416.3513-5-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE56F6EB06 for ; Wed, 30 Jan 2019 10:15:32 +0000 (UTC) In-Reply-To: <20190130093416.3513-5-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 cmllciBjYW4gbm93IGZhaWwuIChDaHJpcyBXaWxzb24pCgpCdWd6aWxsYTogaHR0cHM6Ly9idWdz LmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODk5CkJ1Z3ppbGxhOiBodHRwczov L2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc2MzQKSXNzdWU6IGh0dHBz Oi8vZ2l0aHViLmNvbS9pbnRlbC9tZWRpYS1kcml2ZXIvaXNzdWVzLzI2NwpTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTog TGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgpDYzogRG1p dHJ5IFJvZ296aGtpbiA8ZG1pdHJ5LnYucm9nb3poa2luQGludGVsLmNvbT4KQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBaaGlwZW5nIEdvbmcgPHpoaXBl bmcuZ29uZ0BpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+CkNjOiBUb255IFllIDx0b255LnllQGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHYyMQpSZXZpZXdl ZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPiAj IHYyNwotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM0MiAr KysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaCB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAg fCAgIDQgKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA2NCAr KysrKwogNCBmaWxlcyBjaGFuZ2VkLCA0MTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZDM4ODdjMjdjM2Jh Li4xODc5MzA4YTU1ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK QEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlICJp OTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9scmNf cmVnLmgiCiAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIKIAogI2RlZmluZSBBTExfTDNf U0xJQ0VTKGRldikgKDEgPDwgTlVNX0wzX1NMSUNFUyhkZXYpKSAtIDEKQEAgLTMyMSw2ICszMjIs MTUgQEAgc3RhdGljIHUzMiBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIGRlc2M7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVs X2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKKwkJCQkgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0KKwkJ Y29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZV90cmFja2VyKTsKKworCWlu dGVsX2NvbnRleHRfdW5waW4oY2UpOworfQorCiB2b2lkCiBpbnRlbF9jb250ZXh0X2luaXQoc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LApAQCAtMzMzLDYgKzM0Myw4IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UsCiAKIAkvKiBVc2UgdGhlIHdob2xlIGRldmljZSBieSBkZWZhdWx0ICovCiAJY2Ut PnNzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGN0eC0+aTkxNSk7CisKKwlpbml0X3Jl cXVlc3RfYWN0aXZlKCZjZS0+YWN0aXZlX3RyYWNrZXIsIGludGVsX2NvbnRleHRfcmV0aXJlKTsK IH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKQEAgLTg1MCw2ICs4NjIsNTYg QEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdldF9zc2V1KHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt X3NzZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5zaXplID09IDAp CisJCWdvdG8gb3V0OworCWVsc2UgaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0 X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJ cmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3Zk KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNl cihjdHgtPmk5MTUsCisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKKwkJCQkJICB1c2Vy X3NzZXUuZW5naW5lX2luc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwkvKiBPbmx5IHVzZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFt IGFuZCBzZXRfcGFyYW0uICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21h c2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2Ut PnNzZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBj ZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vi c2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygm Y3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1 KSkpCisJCXJldHVybiAtRUZBVUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2Vy X3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFt X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTg2MiwxNSArOTI0LDE3IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJaWYgKCFjdHgpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dp dGNoIChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6 CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05P X1pFUk9NQVA6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVD T05URVhUX05PX1pFUk9NQVAsICZjdHgtPnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5 MTVfQ09OVEVYVF9QQVJBTV9HVFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0 eC0+cHBndHQpCiAJCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNl IGlmICh0b19pOTE1KGRldiktPm1tLmFsaWFzaW5nX3BwZ3R0KQpAQCAtODc5LDE0ICs5NDMsMjAg QEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZt LnRvdGFsOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBU VVJFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0 X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fQkFOTkFCTEU6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2Vt X2NvbnRleHRfaXNfYmFubmFibGUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRf UEFSQU1fUFJJT1JJVFk6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+ c2NoZWQucHJpb3JpdHkgPj4gSTkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOwogCQlicmVhazsKKwlj YXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3Mp OworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTg5 Niw2ICs5NjYsMjcyIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGlj IGludCBnZW44X2VtaXRfcnBjc19jb25maWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJ IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkK K3sKKwl1NjQgb2Zmc2V0OworCXUzMiAqY3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEs IDQpOworCWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlvZmZzZXQg PSBpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgKworCQkgTFJDX1NUQVRFX1BOICogUEFHRV9T SVpFICsKKwkJIChDVFhfUl9QV1JfQ0xLX1NUQVRFICsgMSkgKiA0OworCisJKmNzKysgPSBNSV9T VE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOworCSpjcysrID0gbG93ZXJfMzJfYml0 cyhvZmZzZXQpOworCSpjcysrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gZ2Vu OF9tYWtlX3JwY3MocnEtPmk5MTUsICZzc2V1KTsKKworCWludGVsX3JpbmdfYWR2YW5jZShycSwg Y3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dlbjhfbW9kaWZ5X3JwY3NfZ3B1 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgKnByZXY7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJaW50IHJldDsKKworCUdF TV9CVUdfT04oIWNlLT5waW5fY291bnQpOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CisKKwkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0 aGUgaHcgYXdha2UuICovCisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwor CisJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7 CisJaWYgKElTX0VSUihycSkpIHsKKwkJcmV0ID0gUFRSX0VSUihycSk7CisJCWdvdG8gb3V0X3B1 dDsKKwl9CisKKwkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkg YnkgdGhpcyBjb250ZXh0LiAqLworCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZjZS0+cmlu Zy0+dGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKKwkJCQkgICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7CisJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJldikpIHsKKwkJcmV0 ID0gaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShycSwgJnByZXYtPmZlbmNlKTsKKwkJaWYg KHJldCA8IDApCisJCQlnb3RvIG91dF9hZGQ7CisJfQorCisJLyogT3JkZXIgYWxsIGZvbGxvd2lu ZyByZXF1ZXN0cyB0byBiZSBhZnRlci4gKi8KKwlyZXQgPSBpOTE1X3RpbWVsaW5lX3NldF9iYXJy aWVyKGNlLT5yaW5nLT50aW1lbGluZSwgcnEpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2FkZDsK KworCXJldCA9IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhycSwgY2UsIHNzZXUpOworCWlmIChyZXQp CisJCWdvdG8gb3V0X2FkZDsKKworCS8qCisJICogR3VhcmFudGVlIGNvbnRleHQgaW1hZ2UgYW5k IHRoZSB0aW1lbGluZSByZW1haW5zIHBpbm5lZCB1bnRpbCB0aGUKKwkgKiBtb2RpZnlpbmcgcmVx dWVzdCBpcyByZXRpcmVkIGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCisJICoK KwkgKiBCdXQgd2Ugb25seSBuZWVkIHRvIHRha2Ugb25lIHBpbiBvbiB0aGUgYWNjb3VudCBvZiBp dC4gT3IgaW4gb3RoZXIKKwkgKiB3b3JkcyB0cmFuc2ZlciB0aGUgcGlubmVkIGNlIG9iamVjdCB0 byB0cmFja2VkIGFjdGl2ZSByZXF1ZXN0LgorCSAqLworCWlmICghaTkxNV9nZW1fYWN0aXZlX2lz c2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIpKQorCQlfX2ludGVsX2NvbnRleHRfcGluKGNlKTsKKwlp OTE1X2dlbV9hY3RpdmVfc2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIsIHJxKTsKKworb3V0X2FkZDoK KwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKK291dF9wdXQ6CisJaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSwgd2FrZXJlZik7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpOTE1X2dl bV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK KwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRl bF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29u dGV4dChjdHgsIGVuZ2luZSk7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0 eC0+aTkxNSkgPCA4KTsKKwlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKKworCXJldCA9 IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlm aWVkLiAqLworCWlmICghbWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCisJ CWdvdG8gb3V0OworCisJLyoKKwkgKiBJZiBjb250ZXh0IGlzIG5vdCBpZGxlIHdlIGhhdmUgdG8g c3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkKKwkgKiBpdHMgY29udGV4dCBpbWFn ZSB2aWEgdGhlIGtlcm5lbCBjb250ZXh0LiBQcmlzdGluZSBhbmQgaWRsZSBjb250ZXh0cworCSAq IHdpbGwgYmUgY29uZmlndXJlZCBvbiBwaW5uaW5nLgorCSAqLworCWlmIChjZS0+cGluX2NvdW50 KQorCQlyZXQgPSBnZW44X21vZGlmeV9ycGNzX2dwdShjZSwgZW5naW5lLCBzc2V1KTsKKworCWlm ICghcmV0KQorCQljZS0+c3NldSA9IHNzZXU7CisKK291dDoKKwltdXRleF91bmxvY2soJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 Cit1c2VyX3RvX2NvbnRleHRfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJ ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNlciwK KwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSAqY29udGV4dCkKK3sKKwljb25zdCBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqZGV2aWNlID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsKKworCS8qIE5v IHplcm9zIGluIGFueSBmaWVsZC4gKi8KKwlpZiAoIXVzZXItPnNsaWNlX21hc2sgfHwgIXVzZXIt PnN1YnNsaWNlX21hc2sgfHwKKwkgICAgIXVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlIHx8ICF1 c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBNYXgg PiBtaW4uICovCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlIDwgdXNlci0+bWluX2V1 c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ2hlY2sgdmFsaWRpdHkg YWdhaW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNlci0+c2xpY2VfbWFzayAmIH5kZXZpY2UtPnNs aWNlX21hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPnN1YnNsaWNlX21hc2sg JiB+ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1 c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2Up CisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTb21lIGZ1dHVyZSBwcm9vZmluZyBvbiB0 aGUgdHlwZXMgc2luY2UgdGhlIHVBUEkgaXMgd2lkZXIgdGhhbiB0aGUKKwkgKiBjdXJyZW50IGlu dGVybmFsIGltcGxlbWVudGF0aW9uLgorCSAqLworCWlmIChXQVJOX09OKChmbHModXNlci0+c2xp Y2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zbGljZV9tYXNrKSAqIEJJVFNfUEVS X0JZVEUpIHx8CisJCSAgICAoZmxzKHVzZXItPnN1YnNsaWNlX21hc2spID4KKwkJICAgICBzaXpl b2YoY29udGV4dC0+c3Vic2xpY2VfbWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAorCQkgICAgb3Zl cmZsb3dzX3R5cGUodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4dC0+ bWluX2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5tYXhf ZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSkp KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNvbnRleHQtPnNsaWNlX21hc2sgPSB1c2VyLT5zbGlj ZV9tYXNrOworCWNvbnRleHQtPnN1YnNsaWNlX21hc2sgPSB1c2VyLT5zdWJzbGljZV9tYXNrOwor CWNvbnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWluX2V1c19wZXJfc3Vic2xp Y2U7CisJY29udGV4dC0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5tYXhfZXVzX3Blcl9z dWJzbGljZTsKKworCS8qIFBhcnQgc3BlY2lmaWMgcmVzdHJpY3Rpb25zLiAqLworCWlmIChJU19H RU4oaTkxNSwgMTEpKSB7CisJCXVuc2lnbmVkIGludCBod19zID0gaHdlaWdodDgoZGV2aWNlLT5z bGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IGh3X3NzX3Blcl9zID0gaHdlaWdodDgoZGV2aWNl LT5zdWJzbGljZV9tYXNrWzBdKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zID0gaHdlaWdodDgoY29u dGV4dC0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCByZXFfc3MgPSBod2VpZ2h0OChjb250 ZXh0LT5zdWJzbGljZV9tYXNrKTsKKworCQkvKgorCQkgKiBPbmx5IGZ1bGwgc3Vic2xpY2UgZW5h YmxlbWVudCBpcyBwb3NzaWJsZSBpZiBtb3JlIHRoYW4gb25lCisJCSAqIHNsaWNlIGlzIHR1cm5l ZCBvbi4KKwkJICovCisJCWlmIChyZXFfcyA+IDEgJiYgcmVxX3NzICE9IGh3X3NzX3Blcl9zKQor CQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgbW9yZSB0aGFuIGZvdXIgKFNTY291 bnQgYml0ZmllbGQgbGltaXQpIHN1YnNsaWNlcyBhcmUKKwkJICogcmVxdWVzdGVkIHRoZW4gdGhl IG51bWJlciBoYXMgdG8gYmUgZXZlbi4KKwkJICovCisJCWlmIChyZXFfc3MgPiA0ICYmIChyZXFf c3MgJiAxKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIElmIG9ubHkgb25lIHNs aWNlIGlzIGVuYWJsZWQgYW5kIHN1YnNsaWNlIGNvdW50IGlzIGJlbG93IHRoZQorCQkgKiBkZXZp Y2UgZnVsbCBlbmFibGVtZW50LCBpdCBtdXN0IGJlIGF0IG1vc3QgaGFsZiBvZiB0aGUgYWxsCisJ CSAqIGF2YWlsYWJsZSBzdWJzbGljZXMuCisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJiByZXFf c3MgPCBod19zc19wZXJfcyAmJgorCQkgICAgcmVxX3NzID4gKGh3X3NzX3Blcl9zIC8gMikpCisJ CQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBBQkkgcmVzdHJpY3Rpb24gLSBWTUUgdXNlIGNhc2Ug b25seS4gKi8KKworCQkvKiBBbGwgc2xpY2VzIG9yIG9uZSBzbGljZSBvbmx5LiAqLworCQlpZiAo cmVxX3MgIT0gMSAmJiByZXFfcyAhPSBod19zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoK KwkJICogSGFsZiBzdWJzbGljZXMgb3IgZnVsbCBlbmFibGVtZW50IG9ubHkgd2hlbiBvbmUgc2xp Y2UgaXMKKwkJICogZW5hYmxlZC4KKwkJICovCisJCWlmIChyZXFfcyA9PSAxICYmCisJCSAgICAo cmVxX3NzICE9IGh3X3NzX3Blcl9zICYmIHJlcV9zcyAhPSAoaHdfc3NfcGVyX3MgLyAyKSkpCisJ CQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBObyBFVSBjb25maWd1cmF0aW9uIGNoYW5nZXMuICov CisJCWlmICgodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1h eF9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNl ICE9CisJCSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkpCisJCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5p OTE1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGludGVsX3NzZXUgc3Nl dTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIUlTX0dFTihpOTE1LCAxMSkpCisJCXJldHVybiAtRU5P REVWOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihh cmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxU OworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwKKwkJCQkJ ICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfaW5zdGFu Y2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE9ubHkgcmVuZGVy IGVuZ2luZSBzdXBwb3J0cyBSUENTIGNvbmZpZ3VyYXRpb24uICovCisJaWYgKGVuZ2luZS0+Y2xh c3MgIT0gUkVOREVSX0NMQVNTKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldCA9IHVzZXJfdG9f Y29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KGN0eCwg ZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYXJncy0+c2l6ZSA9 IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250 ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ CQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTk1OCw3ICsxMjk0LDkgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJCQkJSTkxNV9VU0VSX1BSSU9SSVRZKHByaW9yaXR5KTsKIAkJfQogCQli cmVhazsKLQorCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJldCA9IHNldF9zc2V1 KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJy ZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmluZGV4IDkxOWY2ZjBh MGY3YS4uOTJhZDUyNzJlNTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5oCkBAIC0xODMsNiArMTgzLDEyIEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKIAkJdTY0 IGxyY19kZXNjOwogCQlpbnQgcGluX2NvdW50OwogCisJCS8qKgorCQkgKiBhY3RpdmVfdHJhY2tl cjogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBleHRlcm5hbCBycSBhY3Rpdml0eQorCQkgKiBvbiB0 aGlzIGludGVsX2NvbnRleHQgb2JqZWN0LgorCQkgKi8KKwkJc3RydWN0IGk5MTVfZ2VtX2FjdGl2 ZSBhY3RpdmVfdHJhY2tlcjsKKwogCQljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgKm9w czsKIAogCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25pbmcgKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZDk5YzQ2MmUyYzA5Li41ZTk4ZmQ3OWJkOWQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yNDk4LDcgKzI0OTgsOSBAQCB1MzIgZ2VuOF9tYWtl X3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1ICpy ZXFfc3NldSkKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQgYmV0d2VlbiBv bmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJICovCi0JaWYgKElTX0dFTihp OTE1LCAxMSkgJiYgc2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsKKwlpZiAoSVNfR0VO KGk5MTUsIDExKSAmJgorCSAgICBzbGljZXMgPT0gMSAmJgorCSAgICBzdWJzbGljZXMgPiBtaW5f dCh1OCwgNCwgaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSkgLyAyKSkgewogCQlHRU1f QlVHX09OKHN1YnNsaWNlcyAmIDEpOwogCiAJCXN1YnNsaWNlX3BnID0gZmFsc2U7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVf ZHJtLmgKaW5kZXggMjk4YjJlMTk3NzQ0Li4zOTc4MTBmYTJkMzMgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgK QEAgLTE0ODYsOSArMTQ4Niw3MyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g ewogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQkxMDIzIC8qIGluY2x1 c2l2ZSAqLwogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BSSU9SSVRZCQkwCiAjZGVm aW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIzIC8qIGluY2x1c2l2ZSAq LworCS8qCisJICogV2hlbiB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtLCB2YWx1ZSBzaG91bGQg YmUgYSBwb2ludGVyIHRvCisJICogZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldS4KKwkg Ki8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1NTRVUJCTB4NwogCV9fdTY0IHZhbHVlOwog fTsKIAorLyoqCisgKiBDb250ZXh0IFNTRVUgcHJvZ3JhbW1pbmcKKyAqCisgKiBJdCBtYXkgYmUg bmVjZXNzYXJ5IGZvciBlaXRoZXIgZnVuY3Rpb25hbCBvciBwZXJmb3JtYW5jZSByZWFzb24gdG8g Y29uZmlndXJlCisgKiBhIGNvbnRleHQgdG8gcnVuIHdpdGggYSByZWR1Y2VkIG51bWJlciBvZiBT U0VVICh3aGVyZSBTU0VVIHN0YW5kcyBmb3IgU2xpY2UvCisgKiBTdWItc2xpY2UvRVUpLgorICoK KyAqIFRoaXMgaXMgZG9uZSBieSBjb25maWd1cmluZyBTU0VVIGNvbmZpZ3VyYXRpb24gdXNpbmcg dGhlIGJlbG93CisgKiBAc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgZm9y IGV2ZXJ5IHN1cHBvcnRlZCBlbmdpbmUgd2hpY2gKKyAqIHVzZXJzcGFjZSBpbnRlbmRzIHRvIHVz ZS4KKyAqCisgKiBOb3QgYWxsIEdQVXMgb3IgZW5naW5lcyBzdXBwb3J0IHRoaXMgZnVuY3Rpb25h bGl0eSBpbiB3aGljaCBjYXNlIGFuIGVycm9yCisgKiBjb2RlIC1FTk9ERVYgd2lsbCBiZSByZXR1 cm5lZC4KKyAqCisgKiBBbHNvLCBmbGV4aWJpbGl0eSBvZiBwb3NzaWJsZSBTU0VVIGNvbmZpZ3Vy YXRpb24gcGVybXV0YXRpb25zIHZhcmllcyBiZXR3ZWVuCisgKiBHUFUgZ2VuZXJhdGlvbnMgYW5k IHNvZnR3YXJlIGltcG9zZWQgbGltaXRhdGlvbnMuIFJlcXVlc3Rpbmcgc3VjaCBhCisgKiBjb21i aW5hdGlvbiB3aWxsIHJldHVybiBhbiBlcnJvciBjb2RlIG9mIC1FSU5WQUwuCisgKgorICogTk9U RTogV2hlbiBwZXJmL09BIGlzIGFjdGl2ZSB0aGUgY29udGV4dCdzIFNTRVUgY29uZmlndXJhdGlv biBpcyBpZ25vcmVkIGluCisgKiBmYXZvdXIgb2YgYSBzaW5nbGUgZ2xvYmFsIHNldHRpbmcuCisg Ki8KK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKKwkvKgorCSAqIEVu Z2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4KKwkgKi8K KwlfX3UxNiBlbmdpbmVfY2xhc3M7CisJX191MTYgZW5naW5lX2luc3RhbmNlOworCisJLyoKKwkg KiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICovCisJX191MzIg ZmxhZ3M7CisKKwkvKgorCSAqIE1hc2sgb2Ygc2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNvbnRl eHQuIFZhbGlkIHZhbHVlcyBhcmUgYSBzdWJzZXQKKwkgKiBvZiB0aGUgYml0bWFzayB2YWx1ZSBy ZXR1cm5lZCBmb3IgSTkxNV9QQVJBTV9TTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHNsaWNlX21h c2s7CisKKwkvKgorCSAqIE1hc2sgb2Ygc3Vic2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNvbnRl eHQuIFZhbGlkIHZhbHVlcyBhcmUgYQorCSAqIHN1YnNldCBvZiB0aGUgYml0bWFzayB2YWx1ZSBy ZXR1cm4gYnkgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHN1YnNsaWNl X21hc2s7CisKKwkvKgorCSAqIE1pbmltdW0vTWF4aW11bSBudW1iZXIgb2YgRVVzIHRvIGVuYWJs ZSBwZXIgc3Vic2xpY2UgZm9yIHRoZQorCSAqIGNvbnRleHQuIG1pbl9ldXNfcGVyX3N1YnNsaWNl IG11c3QgYmUgaW5mZXJpb3Igb3IgZXF1YWwgdG8KKwkgKiBtYXhfZXVzX3Blcl9zdWJzbGljZS4K KwkgKi8KKwlfX3UxNiBtaW5fZXVzX3Blcl9zdWJzbGljZTsKKwlfX3UxNiBtYXhfZXVzX3Blcl9z dWJzbGljZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6 ZXJvLgorCSAqLworCV9fdTMyIHJzdmQ7Cit9OworCiBlbnVtIGRybV9pOTE1X29hX2Zvcm1hdCB7 CiAJSTkxNV9PQV9GT1JNQVRfQTEzID0gMSwJICAgIC8qIEhTVyBvbmx5ICovCiAJSTkxNV9PQV9G T1JNQVRfQTI5LAkgICAgLyogSFNXIG9ubHkgKi8KLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==