From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/7] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 8 Jan 2019 11:22:50 +0000 Message-ID: <20190108112252.29002-6-tvrtko.ursulin@linux.intel.com> References: <20190108112252.29002-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id A68876EAA4 for ; Tue, 8 Jan 2019 11:23:03 +0000 (UTC) In-Reply-To: <20190108112252.29002-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 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 ZWJhc2UgZm9yIFJVTlRJTUVfSU5GTy4KCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0 b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4OTkKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVl ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzYzNApJc3N1ZTogaHR0cHM6Ly9naXRodWIu Y29tL2ludGVsL21lZGlhLWRyaXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFu ZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBEbWl0cnkgUm9nb3po a2luIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhpcGVuZy5nb25nQGlu dGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PiAjIHYyMQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM0 MSArKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaCB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgfCAgIDQgKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA0 MyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGE1NjU2NDNlOWEy Ni4uMWFiN2Q2OTgwYzM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j CkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJj X3JlZy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wz X1NMSUNFUyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjIsNiArMzIz LDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRl bF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9CisJ CWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7CisKKwlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKK30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICoKIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkgICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQpAQCAt MzQ1LDYgKzM1NSw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7CiAJCS8qIFVzZSB0aGUgd2hv bGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8KIAkJY2UtPnNzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVs dF9zc2V1KGRldl9wcml2KTsKKworCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZjZS0+YWN0aXZlX3Ry YWNrZXIsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKIAl9CiAKIAlJTklUX1JBRElYX1RSRUUoJmN0 eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwpAQCAtODQyLDYgKzg1NCw1NiBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2Vy X3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJZ290byBv dXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9w dHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVG QVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJCXJldHVy biAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkx NSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsK KwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHVzZSBmb3IgbXV0 ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFuZCBzZXRfcGFyYW0uICovCisJcmV0 ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4 LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGljZV9tYXNr OworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFzazsKKwl1 c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJz bGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5tYXhfZXVz X3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwg JnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxUOwor CitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9 CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAg LTg1NCwxNSArOTE2LDE3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKCFjdHgpCiAJCXJldHVybiAt RU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dpdGNoIChhcmdzLT5wYXJhbSkgewogCWNh c2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJy ZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pFUk9NQVA6CisJCWFyZ3MtPnNpemUg PSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVDT05URVhUX05PX1pFUk9NQVAsICZjdHgt PnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9HVFRfU0la RToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0eC0+cHBndHQpCiAJCQlhcmdzLT52YWx1 ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNlIGlmICh0b19pOTE1KGRldiktPm1tLmFs aWFzaW5nX3BwZ3R0KQpAQCAtODcxLDE0ICs5MzUsMjAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRf Z2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCWFy Z3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOwogCQlicmVhazsKIAljYXNl IEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgorCQlhcmdzLT5zaXplID0gMDsK IAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsK IAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6CisJCWFyZ3MtPnNp emUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmFibGUoY3R4 KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6CisJCWFyZ3Mt PnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkgPj4gSTkxNV9V U0VSX1BSSU9SSVRZX1NISUZUOwogCQlicmVhazsKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9T U0VVOgorCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0Ogog CQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTg4OCw2ICs5NTgsMjcxIEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBnZW44X2VtaXRfcnBjc19jb25m aWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwl1NjQgb2Zmc2V0OworCXUzMiAq Y3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDQpOworCWlmIChJU19FUlIoY3MpKQor CQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlvZmZzZXQgPSBjZS0+c3RhdGUtPm5vZGUuc3RhcnQg KworCQlMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKworCQkoQ1RYX1JfUFdSX0NMS19TVEFURSAr IDEpICogNDsKKworCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dU VDsKKwkqY3MrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IHVwcGVyXzMyX2Jp dHMob2Zmc2V0KTsKKwkqY3MrKyA9IGdlbjhfbWFrZV9ycGNzKHJxLT5pOTE1LCAmc3NldSk7CisK KwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50CitnZW44X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCSAg ICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICAgIHN0cnVjdCBpbnRlbF9z c2V1IHNzZXUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5 MTU7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpwcmV2OworCWludCByZXQ7CisKKwlHRU1f QlVHX09OKCFjZS0+cGluX2NvdW50KTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMgbmVlZHMgdGhl IGh3IGF3YWtlLiAqLworCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJcnEgPSBpOTE1 X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7CisJaWYgKElTX0VS UihycSkpIHsKKwkJcmV0ID0gUFRSX0VSUihycSk7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisKKwkv KiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgYnkgdGhpcyBjb250 ZXh0LiAqLworCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZjZS0+cmluZy0+dGltZWxpbmUt Pmxhc3RfcmVxdWVzdCwKKwkJCQkgICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHBy ZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJldikpIHsKKwkJcmV0ID0gaTkxNV9zd19m ZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCisJCQkJCQkgICAgICAgJnByZXYt PnN1Ym1pdCwKKwkJCQkJCSAgICAgICBJOTE1X0ZFTkNFX0dGUCk7CisJCWlmIChyZXQgPCAwKQor CQkJZ290byBvdXRfYWRkOworCX0KKworCXJldCA9IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhycSwg Y2UsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2FkZDsKKworCS8qIE9yZGVyIGFsbCBm b2xsb3dpbmcgcmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICovCisJaTkxNV90aW1lbGluZV9zZXRfYmFy cmllcihjZS0+cmluZy0+dGltZWxpbmUsIHJxKTsKKworCS8qCisJICogR3VhcmFudGVlIGNvbnRl eHQgaW1hZ2UgYW5kIHRoZSB0aW1lbGluZSByZW1haW5zIHBpbm5lZCB1bnRpbCB0aGUKKwkgKiBt b2RpZnlpbmcgcmVxdWVzdCBpcyByZXRpcmVkIGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRy YWNrZXIuCisJICoKKwkgKiBCdXQgd2Ugb25seSBuZWVkIHRvIHRha2Ugb25lIHBpbiBvbiB0aGUg YWNjb3VudCBvZiBpdC4gT3IgaW4gb3RoZXIKKwkgKiB3b3JkcyB0cmFuc2ZlciB0aGUgcGlubmVk IGNlIG9iamVjdCB0byB0cmFja2VkIGFjdGl2ZSByZXF1ZXN0LgorCSAqLworCWlmICghaTkxNV9n ZW1fYWN0aXZlX2lzc2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIpKQorCQlfX2ludGVsX2NvbnRleHRf cGluKGNlKTsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIsIHJxKTsK Kworb3V0X2FkZDoKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKK291dF9wdXQ6CisJaW50ZWxfcnVu dGltZV9wbV9wdXQoaTkxNSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpOTE1 X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBp bnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxf Y29udGV4dChjdHgsIGVuZ2luZSk7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oSU5URUxfR0VO KGN0eC0+aTkxNSkgPCA4KTsKKwlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKKworCXJl dCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogTm90aGluZyB0byBkbyBpZiB1bm1v ZGlmaWVkLiAqLworCWlmICghbWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkp CisJCWdvdG8gb3V0OworCisJLyoKKwkgKiBJZiBjb250ZXh0IGlzIG5vdCBpZGxlIHdlIGhhdmUg dG8gc3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkKKwkgKiBpdHMgY29udGV4dCBp bWFnZSB2aWEgdGhlIGtlcm5lbCBjb250ZXh0LiBQcmlzdGluZSBhbmQgaWRsZSBjb250ZXh0cwor CSAqIHdpbGwgYmUgY29uZmlndXJlZCBvbiBwaW5uaW5nLgorCSAqLworCWlmIChjZS0+cGluX2Nv dW50KQorCQlyZXQgPSBnZW44X21vZGlmeV9ycGNzX2dwdShjZSwgZW5naW5lLCBzc2V1KTsKKwor CWlmICghcmV0KQorCQljZS0+c3NldSA9IHNzZXU7CisKK291dDoKKwltdXRleF91bmxvY2soJmN0 eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg aW50Cit1c2VyX3RvX2NvbnRleHRfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK KwkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNl ciwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSAqY29udGV4dCkKK3sKKwljb25zdCBzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqZGV2aWNlID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsKKworCS8q IE5vIHplcm9zIGluIGFueSBmaWVsZC4gKi8KKwlpZiAoIXVzZXItPnNsaWNlX21hc2sgfHwgIXVz ZXItPnN1YnNsaWNlX21hc2sgfHwKKwkgICAgIXVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlIHx8 ICF1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBN YXggPiBtaW4uICovCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlIDwgdXNlci0+bWlu X2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ2hlY2sgdmFsaWRp dHkgYWdhaW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNlci0+c2xpY2VfbWFzayAmIH5kZXZpY2Ut PnNsaWNlX21hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPnN1YnNsaWNlX21h c2sgJiB+ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlm ICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xp Y2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTb21lIGZ1dHVyZSBwcm9vZmluZyBv biB0aGUgdHlwZXMgc2luY2UgdGhlIHVBUEkgaXMgd2lkZXIgdGhhbiB0aGUKKwkgKiBjdXJyZW50 IGludGVybmFsIGltcGxlbWVudGF0aW9uLgorCSAqLworCWlmIChXQVJOX09OKChmbHModXNlci0+ c2xpY2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zbGljZV9tYXNrKSAqIEJJVFNf UEVSX0JZVEUpIHx8CisJCSAgICAoZmxzKHVzZXItPnN1YnNsaWNlX21hc2spID4KKwkJICAgICBz aXplb2YoY29udGV4dC0+c3Vic2xpY2VfbWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAorCQkgICAg b3ZlcmZsb3dzX3R5cGUodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4 dC0+bWluX2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5t YXhfZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNvbnRleHQtPnNsaWNlX21hc2sgPSB1c2VyLT5z bGljZV9tYXNrOworCWNvbnRleHQtPnN1YnNsaWNlX21hc2sgPSB1c2VyLT5zdWJzbGljZV9tYXNr OworCWNvbnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWluX2V1c19wZXJfc3Vi c2xpY2U7CisJY29udGV4dC0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5tYXhfZXVzX3Bl cl9zdWJzbGljZTsKKworCS8qIFBhcnQgc3BlY2lmaWMgcmVzdHJpY3Rpb25zLiAqLworCWlmIChJ U19HRU4oaTkxNSwgMTEpKSB7CisJCXVuc2lnbmVkIGludCBod19zID0gaHdlaWdodDgoZGV2aWNl LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IGh3X3NzX3Blcl9zID0gaHdlaWdodDgoZGV2 aWNlLT5zdWJzbGljZV9tYXNrWzBdKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zID0gaHdlaWdodDgo Y29udGV4dC0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCByZXFfc3MgPSBod2VpZ2h0OChj b250ZXh0LT5zdWJzbGljZV9tYXNrKTsKKworCQkvKgorCQkgKiBPbmx5IGZ1bGwgc3Vic2xpY2Ug ZW5hYmxlbWVudCBpcyBwb3NzaWJsZSBpZiBtb3JlIHRoYW4gb25lCisJCSAqIHNsaWNlIGlzIHR1 cm5lZCBvbi4KKwkJICovCisJCWlmIChyZXFfcyA+IDEgJiYgcmVxX3NzICE9IGh3X3NzX3Blcl9z KQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgbW9yZSB0aGFuIGZvdXIgKFNT Y291bnQgYml0ZmllbGQgbGltaXQpIHN1YnNsaWNlcyBhcmUKKwkJICogcmVxdWVzdGVkIHRoZW4g dGhlIG51bWJlciBoYXMgdG8gYmUgZXZlbi4KKwkJICovCisJCWlmIChyZXFfc3MgPiA0ICYmIChy ZXFfc3MgJiAxKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIElmIG9ubHkgb25l IHNsaWNlIGlzIGVuYWJsZWQgYW5kIHN1YnNsaWNlIGNvdW50IGlzIGJlbG93IHRoZQorCQkgKiBk ZXZpY2UgZnVsbCBlbmFibGVtZW50LCBpdCBtdXN0IGJlIGF0IG1vc3QgaGFsZiBvZiB0aGUgYWxs CisJCSAqIGF2YWlsYWJsZSBzdWJzbGljZXMuCisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJiBy ZXFfc3MgPCBod19zc19wZXJfcyAmJgorCQkgICAgcmVxX3NzID4gKGh3X3NzX3Blcl9zIC8gMikp CisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBBQkkgcmVzdHJpY3Rpb24gLSBWTUUgdXNlIGNh c2Ugb25seS4gKi8KKworCQkvKiBBbGwgc2xpY2VzIG9yIG9uZSBzbGljZSBvbmx5LiAqLworCQlp ZiAocmVxX3MgIT0gMSAmJiByZXFfcyAhPSBod19zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJ LyoKKwkJICogSGFsZiBzdWJzbGljZXMgb3IgZnVsbCBlbmFibGVtZW50IG9ubHkgd2hlbiBvbmUg c2xpY2UgaXMKKwkJICogZW5hYmxlZC4KKwkJICovCisJCWlmIChyZXFfcyA9PSAxICYmCisJCSAg ICAocmVxX3NzICE9IGh3X3NzX3Blcl9zICYmIHJlcV9zcyAhPSAoaHdfc3NfcGVyX3MgLyAyKSkp CisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBObyBFVSBjb25maWd1cmF0aW9uIGNoYW5nZXMu ICovCisJCWlmICgodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2Ut Pm1heF9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkpCisJCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfc3NldShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4 LT5pOTE1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3Nl dTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGludGVsX3NzZXUg c3NldTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIUlTX0dFTihpOTE1LCAxMSkpCisJCXJldHVybiAt RU5PREVWOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0 cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZB VUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwKKwkJ CQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAo IWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRlciBlbmdpbmUgc3Vw cG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRF Ul9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3RvX2NvbnRleHRfc3Nl dShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3Nl dSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUgPSBzaXplb2YodXNl cl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTAsNyArMTI4NSw5IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJCQkJCUk5MTVfVVNFUl9QUklPUklUWShwcmlvcml0eSk7CiAJCX0KIAkJYnJlYWs7Ci0KKwlj YXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBzZXRfc3NldShjdHgsIGFyZ3Mp OworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCBlZjA0ZTQyMmNmOWEuLjJkZWQ0 YjhjOWI5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTcx LDYgKzE3MSwxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJCXU2NCBscmNfZGVzYzsK IAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioKKwkJICogYWN0aXZlX3RyYWNrZXI6IEFjdGl2ZSB0 cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkJICogb24gdGhpcyBpbnRlbF9j b250ZXh0IG9iamVjdC4KKwkJICovCisJCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgYWN0aXZlX3Ry YWNrZXI7CisKIAkJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CiAKIAkJLyoq IHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0aW9uaW5nICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCmluZGV4IDJjNTc3NTAyYjYzZi4uMmNlNTViYjY0ZmNhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwpAQCAtMjM3Nyw3ICsyMzc3LDkgQEAgdTMyIGdlbjhfbWFrZV9ycGNzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpCiAJ ICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3Vy IG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4oaTkxNSwgMTEpICYm IHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYgKElTX0dFTihpOTE1LCAxMSkg JiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xpY2VzID4gbWluX3QodTgsIDQsIGh3 ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikpIHsKIAkJR0VNX0JVR19PTihzdWJz bGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4 IDI5OGIyZTE5Nzc0NC4uZjkwZjIzYWI0Y2EzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0xNDg2LDkg KzE0ODYsNTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKICNkZWZpbmUg ICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAvKiBpbmNsdXNpdmUgKi8KICNk ZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJMAogI2RlZmluZSAgIEk5MTVf Q09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNsdXNpdmUgKi8KKwkvKgorCSAq IFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUgc2hvdWxkIGJlIGEgcG9pbnRl ciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUuCisJICovCisjZGVmaW5l IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2NCB2YWx1ZTsKIH07CiAKK3N0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKKwkvKgorCSAqIEVuZ2luZSBjbGFz cyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4KKwkgKi8KKwlfX3UxNiBj bGFzczsKKwlfX3UxNiBpbnN0YW5jZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3Qg YmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIGZsYWdzOworCisJLyoKKwkgKiBNYXNr IG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEg c3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVfUEFSQU1f U0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNrOworCisJLyoKKwkgKiBNYXNrIG9m IHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMgYXJlIGEK KwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFSQU1fU1VC U0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9tYXNrOworCisJLyoKKwkgKiBNaW5p bXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNsaWNlIGZvciB0aGUK KwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0IGJlIGluZmVyaW9yIG9yIGVx dWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJICovCisJX191MTYgbWluX2V1c19w ZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKgorCSAqIFVu dXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiByc3Zk OworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3JtYXQgewogCUk5MTVfT0FfRk9STUFUX0ExMyA9 IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBv bmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=