From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 8 Jan 2019 15:12:51 +0000 Message-ID: <20190108151252.4214-6-tvrtko.ursulin@linux.intel.com> References: <20190108151252.4214-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 BD2096EF82 for ; Tue, 8 Jan 2019 15:13:02 +0000 (UTC) In-Reply-To: <20190108151252.4214-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 PiAjIHYyMQpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGlu dXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyB8IDM0MSArKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAg ICB8ICA0MyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGE1NjU2 NDNlOWEyNi4uMWFiN2Q2OTgwYzM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50 ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUg QUxMX0wzX1NMSUNFUyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjIs NiArMzIzLDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9p ZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJ CQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7 CisKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKK30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICoKIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCQkgICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 KQpAQCAtMzQ1LDYgKzM1NSw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7CiAJCS8qIFVzZSB0 aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8KIAkJY2UtPnNzZXUgPSBpbnRlbF9kZXZpY2Vf ZGVmYXVsdF9zc2V1KGRldl9wcml2KTsKKworCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZjZS0+YWN0 aXZlX3RyYWNrZXIsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKIAl9CiAKIAlJTklUX1JBRElYX1RS RUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwpAQCAtODQyLDYgKzg1NCw1NiBAQCBp bnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJ Z290byBvdXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9f dXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1 cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJ CXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0 eC0+aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3Rh bmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHVzZSBm b3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFuZCBzZXRfcGFyYW0uICov CisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljZSA9IHRvX2ludGVsX2NvbnRl eHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGlj ZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFz azsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Bl cl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5t YXhfZXVzX3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZh bHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZB VUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJu IDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkK IHsKQEAgLTg1NCwxNSArOTE2LDE3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKCFjdHgpCiAJCXJl dHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dpdGNoIChhcmdzLT5wYXJhbSkg ewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CiAJCXJldCA9IC1FSU5WQUw7 CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pFUk9NQVA6CisJCWFyZ3Mt PnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVDT05URVhUX05PX1pFUk9NQVAs ICZjdHgtPnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9H VFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0eC0+cHBndHQpCiAJCQlhcmdz LT52YWx1ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNlIGlmICh0b19pOTE1KGRldikt Pm1tLmFsaWFzaW5nX3BwZ3R0KQpAQCAtODcxLDE0ICs5MzUsMjAgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOwogCQlicmVhazsK IAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgorCQlhcmdzLT5zaXpl ID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUo Y3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6CisJCWFy Z3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmFi bGUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6CisJ CWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkgPj4g STkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOwogCQlicmVhazsKKwljYXNlIEk5MTVfQ09OVEVYVF9Q QVJBTV9TU0VVOgorCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZh dWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTg4OCw2ICs5NTgsMjcxIEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBnZW44X2VtaXRfcnBj c19jb25maWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwl1NjQgb2Zmc2V0Owor CXUzMiAqY3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDQpOworCWlmIChJU19FUlIo Y3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlvZmZzZXQgPSBjZS0+c3RhdGUtPm5vZGUu c3RhcnQgKworCQlMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKworCQkoQ1RYX1JfUFdSX0NMS19T VEFURSArIDEpICogNDsKKworCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9V U0VfR0dUVDsKKwkqY3MrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IHVwcGVy XzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IGdlbjhfbWFrZV9ycGNzKHJxLT5pOTE1LCAmc3Nl dSk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50CitnZW44X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us CisJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICAgIHN0cnVjdCBp bnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdp bmUtPmk5MTU7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpwcmV2OworCWludCByZXQ7CisK KwlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogU3VibWl0dGluZyByZXF1ZXN0cyBldGMgbmVl ZHMgdGhlIGh3IGF3YWtlLiAqLworCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJcnEg PSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7CisJaWYg KElTX0VSUihycSkpIHsKKwkJcmV0ID0gUFRSX0VSUihycSk7CisJCWdvdG8gb3V0X3B1dDsKKwl9 CisKKwkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgYnkgdGhp cyBjb250ZXh0LiAqLworCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZjZS0+cmluZy0+dGlt ZWxpbmUtPmxhc3RfcmVxdWVzdCwKKwkJCQkgICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJ aWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJldikpIHsKKwkJcmV0ID0gaTkx NV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCisJCQkJCQkgICAgICAg JnByZXYtPnN1Ym1pdCwKKwkJCQkJCSAgICAgICBJOTE1X0ZFTkNFX0dGUCk7CisJCWlmIChyZXQg PCAwKQorCQkJZ290byBvdXRfYWRkOworCX0KKworCXJldCA9IGdlbjhfZW1pdF9ycGNzX2NvbmZp ZyhycSwgY2UsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2FkZDsKKworCS8qIE9yZGVy IGFsbCBmb2xsb3dpbmcgcmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICovCisJaTkxNV90aW1lbGluZV9z ZXRfYmFycmllcihjZS0+cmluZy0+dGltZWxpbmUsIHJxKTsKKworCS8qCisJICogR3VhcmFudGVl IGNvbnRleHQgaW1hZ2UgYW5kIHRoZSB0aW1lbGluZSByZW1haW5zIHBpbm5lZCB1bnRpbCB0aGUK KwkgKiBtb2RpZnlpbmcgcmVxdWVzdCBpcyByZXRpcmVkIGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2 aXR5IHRyYWNrZXIuCisJICoKKwkgKiBCdXQgd2Ugb25seSBuZWVkIHRvIHRha2Ugb25lIHBpbiBv biB0aGUgYWNjb3VudCBvZiBpdC4gT3IgaW4gb3RoZXIKKwkgKiB3b3JkcyB0cmFuc2ZlciB0aGUg cGlubmVkIGNlIG9iamVjdCB0byB0cmFja2VkIGFjdGl2ZSByZXF1ZXN0LgorCSAqLworCWlmICgh aTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIpKQorCQlfX2ludGVsX2Nv bnRleHRfcGluKGNlKTsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZjZS0+YWN0aXZlX3RyYWNrZXIs IHJxKTsKKworb3V0X2FkZDoKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKK291dF9wdXQ6CisJaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 CitpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0 cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9f aW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oSU5U RUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKKwlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsK KworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogTm90aGluZyB0byBkbyBp ZiB1bm1vZGlmaWVkLiAqLworCWlmICghbWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihz c2V1KSkpCisJCWdvdG8gb3V0OworCisJLyoKKwkgKiBJZiBjb250ZXh0IGlzIG5vdCBpZGxlIHdl IGhhdmUgdG8gc3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkKKwkgKiBpdHMgY29u dGV4dCBpbWFnZSB2aWEgdGhlIGtlcm5lbCBjb250ZXh0LiBQcmlzdGluZSBhbmQgaWRsZSBjb250 ZXh0cworCSAqIHdpbGwgYmUgY29uZmlndXJlZCBvbiBwaW5uaW5nLgorCSAqLworCWlmIChjZS0+ cGluX2NvdW50KQorCQlyZXQgPSBnZW44X21vZGlmeV9ycGNzX2dwdShjZSwgZW5naW5lLCBzc2V1 KTsKKworCWlmICghcmV0KQorCQljZS0+c3NldSA9IHNzZXU7CisKK291dDoKKwltdXRleF91bmxv Y2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50Cit1c2VyX3RvX2NvbnRleHRfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKKwkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSAqdXNlciwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSAqY29udGV4dCkKK3sKKwljb25zdCBz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqZGV2aWNlID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsK KworCS8qIE5vIHplcm9zIGluIGFueSBmaWVsZC4gKi8KKwlpZiAoIXVzZXItPnNsaWNlX21hc2sg fHwgIXVzZXItPnN1YnNsaWNlX21hc2sgfHwKKwkgICAgIXVzZXItPm1pbl9ldXNfcGVyX3N1YnNs aWNlIHx8ICF1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBNYXggPiBtaW4uICovCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlIDwgdXNl ci0+bWluX2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ2hlY2sg dmFsaWRpdHkgYWdhaW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNlci0+c2xpY2VfbWFzayAmIH5k ZXZpY2UtPnNsaWNlX21hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPnN1YnNs aWNlX21hc2sgJiB+ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJf c3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTb21lIGZ1dHVyZSBwcm9v ZmluZyBvbiB0aGUgdHlwZXMgc2luY2UgdGhlIHVBUEkgaXMgd2lkZXIgdGhhbiB0aGUKKwkgKiBj dXJyZW50IGludGVybmFsIGltcGxlbWVudGF0aW9uLgorCSAqLworCWlmIChXQVJOX09OKChmbHMo dXNlci0+c2xpY2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zbGljZV9tYXNrKSAq IEJJVFNfUEVSX0JZVEUpIHx8CisJCSAgICAoZmxzKHVzZXItPnN1YnNsaWNlX21hc2spID4KKwkJ ICAgICBzaXplb2YoY29udGV4dC0+c3Vic2xpY2VfbWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAor CQkgICAgb3ZlcmZsb3dzX3R5cGUodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAg Y29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1 c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5tYXhfZXVzX3Blcl9z dWJzbGljZSkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNvbnRleHQtPnNsaWNlX21hc2sgPSB1 c2VyLT5zbGljZV9tYXNrOworCWNvbnRleHQtPnN1YnNsaWNlX21hc2sgPSB1c2VyLT5zdWJzbGlj ZV9tYXNrOworCWNvbnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWluX2V1c19w ZXJfc3Vic2xpY2U7CisJY29udGV4dC0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5tYXhf ZXVzX3Blcl9zdWJzbGljZTsKKworCS8qIFBhcnQgc3BlY2lmaWMgcmVzdHJpY3Rpb25zLiAqLwor CWlmIChJU19HRU4oaTkxNSwgMTEpKSB7CisJCXVuc2lnbmVkIGludCBod19zID0gaHdlaWdodDgo ZGV2aWNlLT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IGh3X3NzX3Blcl9zID0gaHdlaWdo dDgoZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zID0gaHdl aWdodDgoY29udGV4dC0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCByZXFfc3MgPSBod2Vp Z2h0OChjb250ZXh0LT5zdWJzbGljZV9tYXNrKTsKKworCQkvKgorCQkgKiBPbmx5IGZ1bGwgc3Vi c2xpY2UgZW5hYmxlbWVudCBpcyBwb3NzaWJsZSBpZiBtb3JlIHRoYW4gb25lCisJCSAqIHNsaWNl IGlzIHR1cm5lZCBvbi4KKwkJICovCisJCWlmIChyZXFfcyA+IDEgJiYgcmVxX3NzICE9IGh3X3Nz X3Blcl9zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgbW9yZSB0aGFuIGZv dXIgKFNTY291bnQgYml0ZmllbGQgbGltaXQpIHN1YnNsaWNlcyBhcmUKKwkJICogcmVxdWVzdGVk IHRoZW4gdGhlIG51bWJlciBoYXMgdG8gYmUgZXZlbi4KKwkJICovCisJCWlmIChyZXFfc3MgPiA0 ICYmIChyZXFfc3MgJiAxKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIElmIG9u bHkgb25lIHNsaWNlIGlzIGVuYWJsZWQgYW5kIHN1YnNsaWNlIGNvdW50IGlzIGJlbG93IHRoZQor CQkgKiBkZXZpY2UgZnVsbCBlbmFibGVtZW50LCBpdCBtdXN0IGJlIGF0IG1vc3QgaGFsZiBvZiB0 aGUgYWxsCisJCSAqIGF2YWlsYWJsZSBzdWJzbGljZXMuCisJCSAqLworCQlpZiAocmVxX3MgPT0g MSAmJiByZXFfc3MgPCBod19zc19wZXJfcyAmJgorCQkgICAgcmVxX3NzID4gKGh3X3NzX3Blcl9z IC8gMikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBBQkkgcmVzdHJpY3Rpb24gLSBWTUUg dXNlIGNhc2Ugb25seS4gKi8KKworCQkvKiBBbGwgc2xpY2VzIG9yIG9uZSBzbGljZSBvbmx5LiAq LworCQlpZiAocmVxX3MgIT0gMSAmJiByZXFfcyAhPSBod19zKQorCQkJcmV0dXJuIC1FSU5WQUw7 CisKKwkJLyoKKwkJICogSGFsZiBzdWJzbGljZXMgb3IgZnVsbCBlbmFibGVtZW50IG9ubHkgd2hl biBvbmUgc2xpY2UgaXMKKwkJICogZW5hYmxlZC4KKwkJICovCisJCWlmIChyZXFfcyA9PSAxICYm CisJCSAgICAocmVxX3NzICE9IGh3X3NzX3Blcl9zICYmIHJlcV9zcyAhPSAoaHdfc3NfcGVyX3Mg LyAyKSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKiBObyBFVSBjb25maWd1cmF0aW9uIGNo YW5nZXMuICovCisJCWlmICgodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UgIT0KKwkJICAgICBk ZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAgKHVzZXItPm1heF9ldXNfcGVy X3N1YnNsaWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkpCisJCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzZXRfc3Nl dShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gY3R4LT5pOTE1OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVz ZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGludGVs X3NzZXUgc3NldTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9z c2V1KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIUlTX0dFTihpOTE1LCAxMSkpCisJCXJl dHVybiAtRU5PREVWOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191 c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVy biAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkx NSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsK KwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRlciBlbmdp bmUgc3VwcG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNsYXNzICE9 IFJFTkRFUl9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3RvX2NvbnRl eHRfc3NldShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2lu ZSwgc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUgPSBzaXpl b2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9z ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTAsNyArMTI4NSw5IEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkJCUk5MTVfVVNFUl9QUklPUklUWShwcmlvcml0eSk7CiAJCX0KIAkJYnJlYWs7 Ci0KKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBzZXRfc3NldShjdHgs IGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCBlZjA0ZTQyMmNmOWEu LjJkZWQ0YjhjOWI5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApA QCAtMTcxLDYgKzE3MSwxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJCXU2NCBscmNf ZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioKKwkJICogYWN0aXZlX3RyYWNrZXI6IEFj dGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkJICogb24gdGhpcyBp bnRlbF9jb250ZXh0IG9iamVjdC4KKwkJICovCisJCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgYWN0 aXZlX3RyYWNrZXI7CisKIAkJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CiAK IAkJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0aW9uaW5nICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCmluZGV4IGJjYTA5YTQ5N2YyNy4uZTljNjg3NmE1ODk3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwpAQCAtMjM5Miw3ICsyMzkyLDkgQEAgdTMyIGdlbjhfbWFrZV9ycGNz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3Nz ZXUpCiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFu ZCBmb3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4oaTkxNSwg MTEpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYgKElTX0dFTihpOTE1 LCAxMSkgJiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xpY2VzID4gbWluX3QodTgs IDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikpIHsKIAkJR0VNX0JVR19P TihzdWJzbGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CmluZGV4IDI5OGIyZTE5Nzc0NC4uZjkwZjIzYWI0Y2EzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0x NDg2LDkgKzE0ODYsNTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKICNk ZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAvKiBpbmNsdXNpdmUg Ki8KICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJMAogI2RlZmluZSAg IEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNsdXNpdmUgKi8KKwkv KgorCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUgc2hvdWxkIGJlIGEg cG9pbnRlciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUuCisJICovCisj ZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2NCB2YWx1ZTsKIH07CiAK K3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKKwkvKgorCSAqIEVuZ2lu ZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4KKwkgKi8KKwlf X3UxNiBjbGFzczsKKwlfX3UxNiBpbnN0YW5jZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cu IE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIGZsYWdzOworCisJLyoKKwkg KiBNYXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMg YXJlIGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9yIEk5MTVf UEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNrOworCisJLyoKKwkgKiBN YXNrIG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2YWx1ZXMg YXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFS QU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9tYXNrOworCisJLyoKKwkg KiBNaW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNsaWNlIGZv ciB0aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0IGJlIGluZmVyaW9y IG9yIGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJICovCisJX191MTYgbWlu X2V1c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKgor CSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3Uz MiByc3ZkOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3JtYXQgewogCUk5MTVfT0FfRk9STUFU X0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVfT0FfRk9STUFUX0EyOSwJICAgIC8q IEhTVyBvbmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=