From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v24 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 8 Jan 2019 16:29:27 +0000 Message-ID: <20190108162927.5616-1-tvrtko.ursulin@linux.intel.com> References: <20190108151252.4214-6-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 64EFC6E151 for ; Tue, 8 Jan 2019 16:29:33 +0000 (UTC) In-Reply-To: <20190108151252.4214-6-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 dSBzc2V1ID0geyB9OwoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9CgkJ eyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKCQkgIC5jdHhfaWQgPSBnZW1fY29u dGV4dF9jcmVhdGUoZmQpLAoJCSAgLnNpemUgPSBzaXplb2Yoc3NldSksCgkJICAudmFsdWUgPSB0 b191c2VyX3BvaW50ZXIoJnNzZXUpCgkJfTsKCgkvKiBRdWVyeSBkZXZpY2UgZGVmYXVsdHMuICov CglnZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpOwoKCS8qIFNldCBWTUUgY29uZmlndXJh dGlvbiBvbiBhIDF4Nng4IHBhcnQuICovCglzc2V1LnNsaWNlX21hc2sgPSAweDE7Cglzc2V1LnN1 YnNsaWNlX21hc2sgPSAweGUwOwoJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKTsKCnYy OiBGaXggb2Zmc2V0IG9mIENUWF9SX1BXUl9DTEtfU1RBVEUgaW4gaW50ZWxfbHJfY29udGV4dF9z ZXRfc3NldSgpIChMaW9uZWwpCgp2MzogQWRkIGFiaWxpdHkgdG8gcHJvZ3JhbSB0aGlzIHBlciBl bmdpbmUgKENocmlzKQoKdjQ6IE1vdmUgbW9zdCBnZXRfc3NldSgpIGludG8gaTkxNV9nZW1fY29u dGV4dC5jIChMaW9uZWwpCgp2NTogVmFsaWRhdGUgc3NldSBjb25maWd1cmF0aW9uIGFnYWluc3Qg dGhlIGRldmljZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVsKQoKdjY6IENoYW5nZSBjb250ZXh0IHBv d2VyZ2F0aW5nIHNldHRpbmdzIHRocm91Z2ggTUlfU0RNIG9uIGtlcm5lbCBjb250ZXh0IChDaHJp cykKCnY3OiBTeW5jaHJvbml6ZSB0aGUgcmVxdWVzdHMgZm9sbG93aW5nIGEgcG93ZXJnYXRpbmcg c2V0dGluZyBjaGFuZ2UgdXNpbmcgYSBnbG9iYWwKICAgIGRlcGVuZGVuY3kgKENocmlzKQogICAg SXRlcmF0ZSB0aW1lbGluZXMgdGhyb3VnaCBkZXZfcHJpdi5ndC5hY3RpdmVfcmluZ3MgKFR2cnRr bykKICAgIERpc2FibGUgUlBDUyBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIG5vbiBjYXBhYmxl IHVzZXJzIChMaW9uZWwvVHZydGtvKQoKdjg6IHMvdW5pb24gaW50ZWxfc3NldS9zdHJ1Y3QgaW50 ZWxfc3NldS8gKExpb25lbCkKICAgIHMvZGV2X3ByaXYvaTkxNS8gKFR2cnRrbykKICAgIENoYW5n ZSB1YXBpIGNsYXNzL2luc3RhbmNlIGZpZWxkcyB0byB1MTYgKFR2cnRrbykKICAgIEJ1bXAgbWFz ayBmaWVsZHMgdG8gNjRiaXRzIChMaW9uZWwpCiAgICBEb24ndCByZXR1cm4gRVBFUk0gd2hlbiBk eW5hbWljIHNzZXUgaXMgZGlzYWJsZWQgKFR2cnRrbykKCnY5OiBJbXBvcnQgY29udGV4dCBpbWFn ZSBpbnRvIGtlcm5lbCBjb250ZXh0J3MgcHBndHQgb25seSB3aGVuCiAgICByZWNvbmZpZ3VyaW5n IHBvd2VyZ2F0ZWQgc2xpY2Uvc3Vic2xpY2VzIChDaHJpcykKICAgIFVzZSBhbGlhc2luZyBwcGd0 dCB3aGVuIG5lZWRlZCAoTWljaGVsKQoKVHZydGtvIFVyc3VsaW46Cgp2MTA6CiAqIFVwZGF0ZSBm b3IgdXBzdHJlYW0gY2hhbmdlcy4KICogUmVxdWVzdCBzdWJtaXQgbmVlZHMgYSBSUE0gcmVmZXJl bmNlLgogKiBSZWplY3Qgb24gIUZVTExfUFBHVFQgZm9yIHNpbXBsaWNpdHkuCiAqIFB1bGwgb3V0 IGdldC9zZXQgcGFyYW0gdG8gaGVscGVycyBmb3IgcmVhZGFiaWxpdHkgYW5kIGxlc3MgaW5kZW50 LgogKiBVc2UgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZSBpbiBhZGRfZ2xvYmFsX2JhcnJp ZXIgdG8gc2tpcCB3YWl0cwogICBvbiB0aGUgc2FtZSB0aW1lbGluZSBhbmQgYXZvaWQgR0VNX0JV R19PTi4KICogTm8gbmVlZCB0byBleHBsaWNpdGx5IGFzc2lnbiBhIE5VTEwgcG9pbnRlciB0byBl bmdpbmUgaW4gbGVnYWN5IG1vZGUuCiAqIE5vIG5lZWQgdG8gbW92ZSBnZW44X21ha2VfcnBjcyB1 cC4KICogRmFjdG9yZWQgb3V0IGdsb2JhbCBiYXJyaWVyIGFzIHByZXAgcGF0Y2guCiAqIEFsbG93 IHRvIG9ubHkgQ0FQX1NZU19BRE1JTiBpZiAhR2VuMTEuCgp2MTE6CiAqIFJlbW92ZSBlbmdpbmUg dmZ1bmMgaW4gZmF2b3VyIG9mIGxvY2FsIGhlbHBlci4gKENocmlzIFdpbHNvbikKICogU3RvcCBy ZXRpcmluZyByZXF1ZXN0cyBiZWZvcmUgdXBkYXRlcyBzaW5jZSBpdCBpcyBub3QgbmVlZGVkCiAg IChDaHJpcyBXaWxzb24pCiAqIEltcGxlbWVudCBkaXJlY3QgQ1BVIHVwZGF0ZSBwYXRoIGZvciBp ZGxlIGNvbnRleHRzLiAoQ2hyaXMgV2lsc29uKQogKiBMZWZ0IHNpZGUgZGVwZW5kZW5jeSBuZWVk cyBvbmx5IGJlIG9uIHRoZSBzYW1lIGNvbnRleHQgdGltZWxpbmUuCiAgIChDaHJpcyBXaWxzb24p CiAqIEl0IGlzIHN1ZmZpY2llbnQgdG8gb3JkZXIgdGhlIHRpbWVsaW5lLiAoQ2hyaXMgV2lsc29u KQogKiBSZWplY3QgIVJDUyBjb25maWd1cmF0aW9uIGF0dGVtcHRzIHdpdGggLUVOT0RFViBmb3Ig bm93LgoKdjEyOgogKiBSZWJhc2UgZm9yIG1ha2VfcnBjcy4KCnYxMzoKICogQ2VudHJhbGl6ZSBT U0VVIG5vcm1hbGl6YXRpb24gdG8gbWFrZV9ycGNzLgogKiBUeXBlIHdpZHRoIGNoZWNraW5nICh1 QVBJIDwtPiBpbXBsZW1lbnRhdGlvbikuCiAqIEdlbjExIHJlc3RyaWN0aW9ucyB1QVBJIGNoZWNr cy4KICogR2VuMTEgc3Vic2xpY2UgY291bnQgZGlmZmVyZW5jZXMgaGFuZGxpbmcuCiBDaHJpcyBX aWxzb246CiAqIGFyZ3MtPnNpemUgaGFuZGxpbmcgZml4ZXMuCiAqIFVwZGF0ZSBjb250ZXh0IGlt YWdlIGZyb20gR0dUVC4KICogUG9zdHBvbmUgY29udGV4dCBpbWFnZSB1cGRhdGUgdG8gcGlubmlu Zy4KICogVXNlIGk5MTVfZ2VtX2FjdGl2ZV9yYXcgaW5zdGVhZCBvZiBsYXN0X3JlcXVlc3Rfb25f ZW5naW5lLgoKdjE0OgogKiBBZGQgYWN0aXZpdHkgdHJhY2tlciBvbiBpbnRlbF9jb250ZXh0IHRv IGZpeCB0aGUgbGlmZXRpbWUgaXNzdWVzCiAgIGFuZCBzaW1wbGlmeSB0aGUgY29kZS4gKENocmlz IFdpbHNvbikKCnYxNToKICogRml4IGNvbnRleHQgcGluIGxlYWsgaWYgbm8gc3BhY2UgaW4gcmlu ZyBieSBzaW1wbGlmeWluZyB0aGUKICAgY29udGV4dCBwaW5uaW5nIHNlcXVlbmNlLgoKdjE2Ogog KiBSZWJhc2UgZm9yIGNvbnRleHQgZ2V0L3NldCBwYXJhbSBsb2NraW5nIGNoYW5nZXMuCiAqIEp1 c3QgLUVOT0RFViBvbiAhR2VuMTEuIChKb29uYXMpCgp2MTc6CiAqIEZpeCBvbmUgR2VuMTEgc3Vi c2xpY2UgZW5hYmxlbWVudCBydWxlLgogKiBIYW5kbGUgZXJyb3IgZnJvbSBpOTE1X3N3X2ZlbmNl X2F3YWl0X3N3X2ZlbmNlX2dmcC4gKENocmlzIFdpbHNvbikKCnYxODoKICogVXBkYXRlIGNvbW1p dCBtZXNzYWdlLiAoSm9vbmFzKQogKiBSZXN0cmljdCB1QVBJIHRvIFZNRSB1c2UgY2FzZS4gKEpv b25hcykKCnYxOToKICogUmViYXNlLgoKdjIwOgogKiBSZWJhc2UgZm9yIGNlLT5hY3RpdmVfdHJh Y2tlci4KCnYyMToKICogUmViYXNlIGZvciBJU19HRU4gY2hhbmdlcy4KCnYyMjoKICogUmVzZXJ2 ZSB1QVBJIGZvciBmbGFncyBzdHJhaWdodCBhd2F5LiAoQ2hyaXMgV2lsc29uKQoKdjIzOgogKiBS ZWJhc2UgZm9yIFJVTlRJTUVfSU5GTy4KCnYyNDoKICogQWRkZWQgc29tZSBoZWFkbGluZSBkb2Nz IGZvciB0aGUgdWFwaSB1c2FnZS4gKEpvb25hcy9DaHJpcykKCkJ1Z3ppbGxhOiBodHRwczovL2J1 Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4OTkKQnVnemlsbGE6IGh0dHBz Oi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzYzNApJc3N1ZTogaHR0 cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRyaXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5 OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBE bWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhp cGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVu QGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51 cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPiAjIHYyMQpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMu bGFodGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyB8IDM0MSArKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0u aCAgICAgICAgICAgICB8ICA2NCArKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA0MTIgaW5zZXJ0aW9u cygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggYTU2NTY0M2U5YTI2Li4xYWI3ZDY5ODBjMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlIDxkcm0vaTkx NV9kcm0uaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIK KyNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMu aCIKIAogI2RlZmluZSBBTExfTDNfU0xJQ0VTKGRldikgKDEgPDwgTlVNX0wzX1NMSUNFUyhkZXYp KSAtIDEKQEAgLTMyMiw2ICszMjMsMTUgQEAgc3RhdGljIHUzMiBkZWZhdWx0X2Rlc2NfdGVtcGxh dGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIGRlc2M7CiB9 CiAKK3N0YXRpYyB2b2lkIGludGVsX2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKmFjdGl2ZSwKKwkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjZSksIGFj dGl2ZV90cmFja2VyKTsKKworCWludGVsX2NvbnRleHRfdW5waW4oY2UpOworfQorCiBzdGF0aWMg c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2 YXRlICpmaWxlX3ByaXYpCkBAIC0zNDUsNiArMzU1LDggQEAgX19jcmVhdGVfaHdfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNlLT5nZW1fY29udGV4dCA9IGN0 eDsKIAkJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwogCQljZS0+c3NldSA9 IGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoZGV2X3ByaXYpOworCisJCWluaXRfcmVxdWVzdF9h Y3RpdmUoJmNlLT5hY3RpdmVfdHJhY2tlciwgaW50ZWxfY29udGV4dF9yZXRpcmUpOwogCX0KIAog CUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7CkBAIC04NDIs NiArODU0LDU2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBn ZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJncy0+ c2l6ZSA9PSAwKQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVz ZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2Vy X3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9z c2V1KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2Vy X3NzZXUucnN2ZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVf bG9va3VwX3VzZXIoY3R4LT5pOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJICB1 c2VyX3NzZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CS8qIE9ubHkgdXNlIGZvciBtdXRleCBoZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5k IHNldF9wYXJhbS4gKi8KKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWNlID0g dG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CisKKwl1c2VyX3NzZXUuc2xpY2VfbWFzayA9 IGNlLT5zc2V1LnNsaWNlX21hc2s7CisJdXNlcl9zc2V1LnN1YnNsaWNlX21hc2sgPSBjZS0+c3Nl dS5zdWJzbGljZV9tYXNrOworCXVzZXJfc3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5z c2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlOworCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGlj ZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJbXV0ZXhfdW5sb2NrKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNl cl9wdHIoYXJncy0+dmFsdWUpLCAmdXNlcl9zc2V1LAorCQkJIHNpemVvZih1c2VyX3NzZXUpKSkK KwkJcmV0dXJuIC1FRkFVTFQ7CisKK291dDoKKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3Nl dSk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgICAgc3RydWN0IGRy bV9maWxlICpmaWxlKQogewpAQCAtODU0LDE1ICs5MTYsMTcgQEAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlp ZiAoIWN0eCkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlhcmdzLT5zaXplID0gMDsKIAlzd2l0Y2gg KGFyZ3MtPnBhcmFtKSB7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKIAkJ cmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVS T01BUDoKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRF WFRfTk9fWkVST01BUCwgJmN0eC0+dXNlcl9mbGFncyk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX0dUVF9TSVpFOgorCQlhcmdzLT5zaXplID0gMDsKKwogCQlpZiAoY3R4LT5w cGd0dCkKIAkJCWFyZ3MtPnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CiAJCWVsc2UgaWYg KHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCkBAIC04NzEsMTQgKzkzNSwyMCBAQCBp bnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCQkJYXJncy0+dmFsdWUgPSB0b19pOTE1KGRldiktPmdndHQudm0udG90 YWw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6 CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfbm9f ZXJyb3JfY2FwdHVyZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9C QU5OQUJMRToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29u dGV4dF9pc19iYW5uYWJsZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJB TV9QUklPUklUWToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gY3R4LT5zY2hl ZC5wcmlvcml0eSA+PiBJOTE1X1VTRVJfUFJJT1JJVFlfU0hJRlQ7CiAJCWJyZWFrOworCWNhc2Ug STkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJ CWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtODg4LDYg Kzk1OCwyNzEgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50 IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQorewor CXU2NCBvZmZzZXQ7CisJdTMyICpjczsKKworCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7 CisJaWYgKElTX0VSUihjcykpCisJCXJldHVybiBQVFJfRVJSKGNzKTsKKworCW9mZnNldCA9IGNl LT5zdGF0ZS0+bm9kZS5zdGFydCArCisJCUxSQ19TVEFURV9QTiAqIFBBR0VfU0laRSArCisJCShD VFhfUl9QV1JfQ0xLX1NUQVRFICsgMSkgKiA0OworCisJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9J TU1fR0VONCB8IE1JX1VTRV9HR1RUOworCSpjcysrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOwor CSpjcysrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gZ2VuOF9tYWtlX3JwY3Mo cnEtPmk5MTUsICZzc2V1KTsKKworCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dlbjhfbW9kaWZ5X3JwY3NfZ3B1KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CSAgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnByZXY7 CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOworCisJbG9ja2RlcF9h c3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwkvKiBTdWJtaXR0aW5nIHJl cXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdha2UuICovCisJaW50ZWxfcnVudGltZV9wbV9nZXQo aTkxNSk7CisKKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9j b250ZXh0KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJZ290 byBvdXRfcHV0OworCX0KKworCS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBh Y3Rpdml0eSBieSB0aGlzIGNvbnRleHQuICovCisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXco JmNlLT5yaW5nLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAorCQkJCSAgICZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKKwlpZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkg eworCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwK KwkJCQkJCSAgICAgICAmcHJldi0+c3VibWl0LAorCQkJCQkJICAgICAgIEk5MTVfRkVOQ0VfR0ZQ KTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3RvIG91dF9hZGQ7CisJfQorCisJcmV0ID0gZ2VuOF9l bWl0X3JwY3NfY29uZmlnKHJxLCBjZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRk OworCisJLyogT3JkZXIgYWxsIGZvbGxvd2luZyByZXF1ZXN0cyB0byBiZSBhZnRlci4gKi8KKwlp OTE1X3RpbWVsaW5lX3NldF9iYXJyaWVyKGNlLT5yaW5nLT50aW1lbGluZSwgcnEpOworCisJLyoK KwkgKiBHdWFyYW50ZWUgY29udGV4dCBpbWFnZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFpbnMgcGlu bmVkIHVudGlsIHRoZQorCSAqIG1vZGlmeWluZyByZXF1ZXN0IGlzIHJldGlyZWQgYnkgc2V0dGlu ZyB0aGUgY2UgYWN0aXZpdHkgdHJhY2tlci4KKwkgKgorCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8g dGFrZSBvbmUgcGluIG9uIHRoZSBhY2NvdW50IG9mIGl0LiBPciBpbiBvdGhlcgorCSAqIHdvcmRz IHRyYW5zZmVyIHRoZSBwaW5uZWQgY2Ugb2JqZWN0IHRvIHRyYWNrZWQgYWN0aXZlIHJlcXVlc3Qu CisJICovCisJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmNlLT5hY3RpdmVfdHJhY2tlcikp CisJCV9faW50ZWxfY29udGV4dF9waW4oY2UpOworCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJmNlLT5h Y3RpdmVfdHJhY2tlciwgcnEpOworCitvdXRfYWRkOgorCWk5MTVfcmVxdWVzdF9hZGQocnEpOwor b3V0X3B1dDoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKwlpbnQgcmV0OworCisJ R0VNX0JVR19PTihJTlRFTF9HRU4oY3R4LT5pOTE1KSA8IDgpOworCUdFTV9CVUdfT04oZW5naW5l LT5pZCAhPSBSQ1MpOworCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHVubW9kaWZpZWQuICovCisJaWYgKCFtZW1jbXAoJmNlLT5zc2V1LCAm c3NldSwgc2l6ZW9mKHNzZXUpKSkKKwkJZ290byBvdXQ7CisKKwkvKgorCSAqIElmIGNvbnRleHQg aXMgbm90IGlkbGUgd2UgaGF2ZSB0byBzdWJtaXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlm eQorCSAqIGl0cyBjb250ZXh0IGltYWdlIHZpYSB0aGUga2VybmVsIGNvbnRleHQuIFByaXN0aW5l IGFuZCBpZGxlIGNvbnRleHRzCisJICogd2lsbCBiZSBjb25maWd1cmVkIG9uIHBpbm5pbmcuCisJ ICovCisJaWYgKGNlLT5waW5fY291bnQpCisJCXJldCA9IGdlbjhfbW9kaWZ5X3JwY3NfZ3B1KGNl LCBlbmdpbmUsIHNzZXUpOworCisJaWYgKCFyZXQpCisJCWNlLT5zc2V1ID0gc3NldTsKKworb3V0 OgorCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK3VzZXJfdG9fY29udGV4dF9zc2V1KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAorCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbV9zc2V1ICp1c2VyLAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1ICpjb250ZXh0 KQoreworCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpkZXZpY2UgPSAmUlVOVElNRV9JTkZP KGk5MTUpLT5zc2V1OworCisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAqLworCWlmICghdXNl ci0+c2xpY2VfbWFzayB8fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAgICAhdXNlci0+bWlu X2V1c19wZXJfc3Vic2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+bWF4X2V1c19wZXJf c3Vic2xpY2UgPCB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwkvKiBDaGVjayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLworCWlmICh1c2VyLT5z bGljZV9tYXNrICYgfmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAodXNlci0+c3Vic2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlID4gZGV2aWNl LT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIFNv bWUgZnV0dXJlIHByb29maW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQSSBpcyB3aWRlciB0 aGFuIHRoZQorCSAqIGN1cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisJICovCisJaWYg KFdBUk5fT04oKGZscyh1c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQt PnNsaWNlX21hc2spICogQklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHModXNlci0+c3Vic2xp Y2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9tYXNrKSAqIEJJVFNf UEVSX0JZVEUpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5fZXVzX3Blcl9zdWJz bGljZSwKKwkJCQkgICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgIG92 ZXJmbG93c190eXBlKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJCSAgIGNvbnRleHQt Pm1heF9ldXNfcGVyX3N1YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJY29udGV4dC0+ c2xpY2VfbWFzayA9IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFzayA9 IHVzZXItPnN1YnNsaWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1 c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBzcGVjaWZpYyByZXN0 cmljdGlvbnMuICovCisJaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwkJdW5zaWduZWQgaW50IGh3 X3MgPSBod2VpZ2h0OChkZXZpY2UtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgaHdfc3Nf cGVyX3MgPSBod2VpZ2h0OChkZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBp bnQgcmVxX3MgPSBod2VpZ2h0OChjb250ZXh0LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50 IHJlcV9zcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAq IE9ubHkgZnVsbCBzdWJzbGljZSBlbmFibGVtZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBv bmUKKwkJICogc2xpY2UgaXMgdHVybmVkIG9uLgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiBy ZXFfc3MgIT0gaHdfc3NfcGVyX3MpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJ ZiBtb3JlIHRoYW4gZm91ciAoU1Njb3VudCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQor CQkgKiByZXF1ZXN0ZWQgdGhlbiB0aGUgbnVtYmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJ aWYgKHJlcV9zcyA+IDQgJiYgKHJlcV9zcyAmIDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJ LyoKKwkJICogSWYgb25seSBvbmUgc2xpY2UgaXMgZW5hYmxlZCBhbmQgc3Vic2xpY2UgY291bnQg aXMgYmVsb3cgdGhlCisJCSAqIGRldmljZSBmdWxsIGVuYWJsZW1lbnQsIGl0IG11c3QgYmUgYXQg bW9zdCBoYWxmIG9mIHRoZSBhbGwKKwkJICogYXZhaWxhYmxlIHN1YnNsaWNlcy4KKwkJICovCisJ CWlmIChyZXFfcyA9PSAxICYmIHJlcV9zcyA8IGh3X3NzX3Blcl9zICYmCisJCSAgICByZXFfc3Mg PiAoaHdfc3NfcGVyX3MgLyAyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIEFCSSByZXN0 cmljdGlvbiAtIFZNRSB1c2UgY2FzZSBvbmx5LiAqLworCisJCS8qIEFsbCBzbGljZXMgb3Igb25l IHNsaWNlIG9ubHkuICovCisJCWlmIChyZXFfcyAhPSAxICYmIHJlcV9zICE9IGh3X3MpCisJCQly ZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBIYWxmIHN1YnNsaWNlcyBvciBmdWxsIGVuYWJs ZW1lbnQgb25seSB3aGVuIG9uZSBzbGljZSBpcworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaWYg KHJlcV9zID09IDEgJiYKKwkJICAgIChyZXFfc3MgIT0gaHdfc3NfcGVyX3MgJiYgcmVxX3NzICE9 IChod19zc19wZXJfcyAvIDIpKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIE5vIEVVIGNv bmZpZ3VyYXRpb24gY2hhbmdlcy4gKi8KKwkJaWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGlj ZSAhPQorCQkgICAgIGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICAodXNl ci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1 YnNsaWNlKSkKKwkJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IHNldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtX3NzZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK KwlzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA8 IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghSVNfR0VOKGk5 MTUsIDExKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJf c3NldSwgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3Nz ZXUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJf c3NldS5yc3ZkKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9s b29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJICB1c2VyX3Nz ZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE9u bHkgcmVuZGVyIGVuZ2luZSBzdXBwb3J0cyBSUENTIGNvbmZpZ3VyYXRpb24uICovCisJaWYgKGVu Z2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldCA9 IHVzZXJfdG9fY29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9z c2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYXJn cy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1 X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTk1MCw3ICsxMjg1 LDkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkJSTkxNV9VU0VSX1BSSU9SSVRZKHByaW9yaXR5KTsK IAkJfQogCQlicmVhazsKLQorCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJldCA9 IHNldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5W QUw7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmluZGV4 IGVmMDRlNDIyY2Y5YS4uMmRlZDRiOGM5YjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oCkBAIC0xNzEsNiArMTcxLDEyIEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 IHsKIAkJdTY0IGxyY19kZXNjOwogCQlpbnQgcGluX2NvdW50OwogCisJCS8qKgorCQkgKiBhY3Rp dmVfdHJhY2tlcjogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBleHRlcm5hbCBycSBhY3Rpdml0eQor CQkgKiBvbiB0aGlzIGludGVsX2NvbnRleHQgb2JqZWN0LgorCQkgKi8KKwkJc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSBhY3RpdmVfdHJhY2tlcjsKKwogCQljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4 dF9vcHMgKm9wczsKIAogCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25pbmcg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggYmNhMDlhNDk3ZjI3Li5lOWM2ODc2YTU4 OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yMzkyLDcgKzIzOTIsOSBAQCB1MzIg Z2VuOF9tYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRl bF9zc2V1ICpyZXFfc3NldSkKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQg YmV0d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJICovCi0JaWYg KElTX0dFTihpOTE1LCAxMSkgJiYgc2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsKKwlp ZiAoSVNfR0VOKGk5MTUsIDExKSAmJgorCSAgICBzbGljZXMgPT0gMSAmJgorCSAgICBzdWJzbGlj ZXMgPiBtaW5fdCh1OCwgNCwgaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSkgLyAyKSkg ewogCQlHRU1fQlVHX09OKHN1YnNsaWNlcyAmIDEpOwogCiAJCXN1YnNsaWNlX3BnID0gZmFsc2U7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKaW5kZXggMjk4YjJlMTk3NzQ0Li41NWRjYmJmNTRjYjkgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmgKQEAgLTE0ODYsOSArMTQ4Niw3MyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gewogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQkxMDIz IC8qIGluY2x1c2l2ZSAqLwogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BSSU9SSVRZ CQkwCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIzIC8qIGlu Y2x1c2l2ZSAqLworCS8qCisJICogV2hlbiB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtLCB2YWx1 ZSBzaG91bGQgYmUgYSBwb2ludGVyIHRvCisJICogZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldS4KKwkgKi8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1NTRVUJCTB4NwogCV9fdTY0 IHZhbHVlOwogfTsKIAorLyoqCisgKiBDb250ZXh0IFNTRVUgcHJvZ3JhbW1pbmcKKyAqCisgKiBJ dCBtYXkgYmUgbmVjZXNzYXJ5IGZvciBlaXRoZXIgZnVuY3Rpb25hbCBvciBwZXJmb3JtYW5jZSBy ZWFzb24gdG8gY29uZmlndXJlCisgKiBhIGNvbnRleHQgdG8gcnVuIHdpdGggYSByZWR1Y2VkIG51 bWJlciBvZiBTU0VVICh3aGVyZSBTU0VVIHN0YW5kcyBmb3IgU2xpY2UvCisgKiBTdWItc2xpY2Uv RVUpLgorICoKKyAqIFRoaXMgaXMgZG9uZSBieSBjb25maWd1cmluZyBTU0VVIGNvbmZpZ3VyYXRp b24gdXNpbmcgdGhlIGJlbG93CisgKiBAc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt X3NzZXUgZm9yIGV2ZXJ5IHN1cHBvcnRlZCBlbmdpbmUgd2hpY2gKKyAqIHVzZXJzcGFjZSBpbnRl bmRzIHRvIHVzZS4KKyAqCisgKiBOb3QgYWxsIEdQVXMgb3IgZW5naW5lcyBzdXBwb3J0IHRoaXMg ZnVuY3Rpb25hbGl0eSBpbiB3aGljaCBjYXNlIGFuIGVycm9yCisgKiBjb2RlIC1FTk9ERVYgd2ls bCBiZSByZXR1cm5lZC4KKyAqCisgKiBBbHNvLCBmbGV4aWJpbGl0eSBvZiBwb3NzaWJsZSBTU0VV IGNvbmZpZ3VyYXRpb24gcGVybXV0YXRpb25zIHZhcmllcyBiZXR3ZWVuCisgKiBHUFUgZ2VuZXJh dGlvbnMgYW5kIHNvZnR3YXJlIGltcG9zZWQgbGltaXRhdGlvbnMuIFJlcXVlc3Rpbmcgc3VjaCBh CisgKiBjb21iaW5hdGlvbiB3aWxsIHJldHVybiBhbiBlcnJvciBjb2RlIG9mIC1FSU5WQUwuCisg KgorICogTk9URTogV2hlbiBwZXJmL09BIGlzIGFjdGl2ZSB0aGUgY29udGV4dCdzIFNTRVUgY29u ZmlndXJhdGlvbiBpcyBpZ25vcmVkIGluCisgKiBmYXZvdXIgb2YgYSBzaW5nbGUgZ2xvYmFsIHNl dHRpbmcuCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKKwkv KgorCSAqIEVuZ2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmll ZC4KKwkgKi8KKwlfX3UxNiBjbGFzczsKKwlfX3UxNiBpbnN0YW5jZTsKKworCS8qCisJICogVW51 c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIGZsYWdz OworCisJLyoKKwkgKiBNYXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBW YWxpZCB2YWx1ZXMgYXJlIGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJu ZWQgZm9yIEk5MTVfUEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNrOwor CisJLyoKKwkgKiBNYXNrIG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBW YWxpZCB2YWx1ZXMgYXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJu IGJ5IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9tYXNr OworCisJLyoKKwkgKiBNaW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVy IHN1YnNsaWNlIGZvciB0aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0 IGJlIGluZmVyaW9yIG9yIGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJICov CisJX191MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vic2xp Y2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4K KwkgKi8KKwlfX3UzMiByc3ZkOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3JtYXQgewogCUk5 MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVfT0FfRk9STUFU X0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=