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 Date: Mon, 17 Sep 2018 12:30:57 +0100 Message-ID: <20180917113058.28994-6-tvrtko.ursulin@linux.intel.com> References: <20180917113058.28994-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 mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62F9C6E17E for ; Mon, 17 Sep 2018 11:31:11 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id 20-v6so16847030wrb.12 for ; Mon, 17 Sep 2018 04:31:11 -0700 (PDT) In-Reply-To: <20180917113058.28994-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 aW9uIGZvcgppdHMgb3duIHVzZSBjYXNlLiBUbyBkbyBzbywgd2UgZXhwb3NlIGEgY29udGV4dCBw YXJhbWV0ZXIgdG8gYWxsb3cKYWRqdXN0bWVudCBvZiB0aGUgUlBDUyByZWdpc3RlciBzdG9yZWQg d2l0aGluIHRoZSBjb250ZXh0IGltYWdlIChhbmQKY3VycmVudGx5IG5vdCBhY2Nlc3NpYmxlIHZp YSBMUkkpLiBJZiB0aGUgY29udGV4dCBpcyBhZGp1c3RlZCBiZWZvcmUKZmlyc3QgdXNlLCB0aGUg YWRqdXN0bWVudCBpcyBmb3IgImZyZWUiOyBvdGhlcndpc2UgaWYgdGhlIGNvbnRleHQgaXMKYWN0 aXZlIHdlIGZsdXNoIHRoZSBjb250ZXh0IG9mZiB0aGUgR1BVIChzdGFsbGluZyBhbGwgdXNlcnMp IGFuZCBmb3JjaW5nCnRoZSBHUFUgdG8gc2F2ZSB0aGUgY29udGV4dCB0byBtZW1vcnkgd2hlcmUg d2UgY2FuIG1vZGlmeSBpdCBhbmQgc28KZW5zdXJlIHRoYXQgdGhlIHJlZ2lzdGVyIGlzIHJlbG9h ZGVkIG9uIG5leHQgZXhlY3V0aW9uLgoKVGhlIG92ZXJoZWFkIG9mIG1hbmFnaW5nIGFkZGl0aW9u YWwgRVUgc3Vic2xpY2VzIGNhbiBiZSBzaWduaWZpY2FudCwKZXNwZWNpYWxseSBpbiBtdWx0aS1j b250ZXh0IHdvcmtsb2Fkcy4gTm9uLUdQR1BVIGNvbnRleHRzIHNob3VsZApwcmVmZXJhYmx5IGRp c2FibGUgdGhlIHN1YnNsaWNlcyBpdCBpcyBub3QgdXNpbmcsIGFuZCBvdGhlcnMgc2hvdWxkCmZp bmUtdHVuZSB0aGUgbnVtYmVyIHRvIG1hdGNoIHRoZWlyIHdvcmtsb2FkLgoKV2UgZXhwb3NlIGNv bXBsZXRlIGNvbnRyb2wgb3ZlciB0aGUgUlBDUyByZWdpc3RlciwgYWxsb3dpbmcKY29uZmlndXJh dGlvbiBvZiBzbGljZS9zdWJzbGljZSwgdmlhIG1hc2tzIHBhY2tlZCBpbnRvIGEgdTY0IGZvcgpz aW1wbGljaXR5LiBGb3IgZXhhbXBsZSwKCglzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW0gYXJnOwoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgc3NldSA9IHsg LmNsYXNzID0gMCwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC5pbnN0YW5jZSA9IDAsIH07CgoJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKCWFy Zy5jdHhfaWQgPSBjdHg7CglhcmcucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVTsKCWFy Zy52YWx1ZSA9ICh1aW50cHRyX3QpICZzc2V1OwoJaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExf STkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSwgJmFyZykgPT0gMCkgewoJCXNzZXUucGFja2VkLnN1 YnNsaWNlX21hc2sgPSAwOwoKCQlkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRF WFRfU0VUUEFSQU0sICZhcmcpOwoJfQoKY291bGQgYmUgdXNlZCB0byBkaXNhYmxlIGFsbCBzdWJz bGljZXMgd2hlcmUgc3VwcG9ydGVkLgoKdjI6IEZpeCBvZmZzZXQgb2YgQ1RYX1JfUFdSX0NMS19T VEFURSBpbiBpbnRlbF9scl9jb250ZXh0X3NldF9zc2V1KCkgKExpb25lbCkKCnYzOiBBZGQgYWJp bGl0eSB0byBwcm9ncmFtIHRoaXMgcGVyIGVuZ2luZSAoQ2hyaXMpCgp2NDogTW92ZSBtb3N0IGdl dF9zc2V1KCkgaW50byBpOTE1X2dlbV9jb250ZXh0LmMgKExpb25lbCkKCnY1OiBWYWxpZGF0ZSBz c2V1IGNvbmZpZ3VyYXRpb24gYWdhaW5zdCB0aGUgZGV2aWNlJ3MgY2FwYWJpbGl0aWVzIChMaW9u ZWwpCgp2NjogQ2hhbmdlIGNvbnRleHQgcG93ZXJnYXRpbmcgc2V0dGluZ3MgdGhyb3VnaCBNSV9T RE0gb24ga2VybmVsIGNvbnRleHQgKENocmlzKQoKdjc6IFN5bmNocm9uaXplIHRoZSByZXF1ZXN0 cyBmb2xsb3dpbmcgYSBwb3dlcmdhdGluZyBzZXR0aW5nIGNoYW5nZSB1c2luZyBhIGdsb2JhbAog ICAgZGVwZW5kZW5jeSAoQ2hyaXMpCiAgICBJdGVyYXRlIHRpbWVsaW5lcyB0aHJvdWdoIGRldl9w cml2Lmd0LmFjdGl2ZV9yaW5ncyAoVHZydGtvKQogICAgRGlzYWJsZSBSUENTIGNvbmZpZ3VyYXRp b24gc2V0dGluZyBmb3Igbm9uIGNhcGFibGUgdXNlcnMgKExpb25lbC9UdnJ0a28pCgp2ODogcy91 bmlvbiBpbnRlbF9zc2V1L3N0cnVjdCBpbnRlbF9zc2V1LyAoTGlvbmVsKQogICAgcy9kZXZfcHJp di9pOTE1LyAoVHZydGtvKQogICAgQ2hhbmdlIHVhcGkgY2xhc3MvaW5zdGFuY2UgZmllbGRzIHRv IHUxNiAoVHZydGtvKQogICAgQnVtcCBtYXNrIGZpZWxkcyB0byA2NGJpdHMgKExpb25lbCkKICAg IERvbid0IHJldHVybiBFUEVSTSB3aGVuIGR5bmFtaWMgc3NldSBpcyBkaXNhYmxlZCAoVHZydGtv KQoKdjk6IEltcG9ydCBjb250ZXh0IGltYWdlIGludG8ga2VybmVsIGNvbnRleHQncyBwcGd0dCBv bmx5IHdoZW4KICAgIHJlY29uZmlndXJpbmcgcG93ZXJnYXRlZCBzbGljZS9zdWJzbGljZXMgKENo cmlzKQogICAgVXNlIGFsaWFzaW5nIHBwZ3R0IHdoZW4gbmVlZGVkIChNaWNoZWwpCgpUdnJ0a28g VXJzdWxpbjoKCnYxMDoKICogVXBkYXRlIGZvciB1cHN0cmVhbSBjaGFuZ2VzLgogKiBSZXF1ZXN0 IHN1Ym1pdCBuZWVkcyBhIFJQTSByZWZlcmVuY2UuCiAqIFJlamVjdCBvbiAhRlVMTF9QUEdUVCBm b3Igc2ltcGxpY2l0eS4KICogUHVsbCBvdXQgZ2V0L3NldCBwYXJhbSB0byBoZWxwZXJzIGZvciBy ZWFkYWJpbGl0eSBhbmQgbGVzcyBpbmRlbnQuCiAqIFVzZSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1h X2ZlbmNlIGluIGFkZF9nbG9iYWxfYmFycmllciB0byBza2lwIHdhaXRzCiAgIG9uIHRoZSBzYW1l IHRpbWVsaW5lIGFuZCBhdm9pZCBHRU1fQlVHX09OLgogKiBObyBuZWVkIHRvIGV4cGxpY2l0bHkg YXNzaWduIGEgTlVMTCBwb2ludGVyIHRvIGVuZ2luZSBpbiBsZWdhY3kgbW9kZS4KICogTm8gbmVl ZCB0byBtb3ZlIGdlbjhfbWFrZV9ycGNzIHVwLgogKiBGYWN0b3JlZCBvdXQgZ2xvYmFsIGJhcnJp ZXIgYXMgcHJlcCBwYXRjaC4KICogQWxsb3cgdG8gb25seSBDQVBfU1lTX0FETUlOIGlmICFHZW4x MS4KCnYxMToKICogUmVtb3ZlIGVuZ2luZSB2ZnVuYyBpbiBmYXZvdXIgb2YgbG9jYWwgaGVscGVy LiAoQ2hyaXMgV2lsc29uKQogKiBTdG9wIHJldGlyaW5nIHJlcXVlc3RzIGJlZm9yZSB1cGRhdGVz IHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQKICAgKENocmlzIFdpbHNvbikKICogSW1wbGVtZW50IGRp cmVjdCBDUFUgdXBkYXRlIHBhdGggZm9yIGlkbGUgY29udGV4dHMuIChDaHJpcyBXaWxzb24pCiAq IExlZnQgc2lkZSBkZXBlbmRlbmN5IG5lZWRzIG9ubHkgYmUgb24gdGhlIHNhbWUgY29udGV4dCB0 aW1lbGluZS4KICAgKENocmlzIFdpbHNvbikKICogSXQgaXMgc3VmZmljaWVudCB0byBvcmRlciB0 aGUgdGltZWxpbmUuIChDaHJpcyBXaWxzb24pCiAqIFJlamVjdCAhUkNTIGNvbmZpZ3VyYXRpb24g YXR0ZW1wdHMgd2l0aCAtRU5PREVWIGZvciBub3cuCgp2MTI6CiAqIFJlYmFzZSBmb3IgbWFrZV9y cGNzLgoKdjEzOgogKiBDZW50cmFsaXplIFNTRVUgbm9ybWFsaXphdGlvbiB0byBtYWtlX3JwY3Mu CiAqIFR5cGUgd2lkdGggY2hlY2tpbmcgKHVBUEkgPC0+IGltcGxlbWVudGF0aW9uKS4KICogR2Vu MTEgcmVzdHJpY3Rpb25zIHVBUEkgY2hlY2tzLgogKiBHZW4xMSBzdWJzbGljZSBjb3VudCBkaWZm ZXJlbmNlcyBoYW5kbGluZy4KIENocmlzIFdpbHNvbjoKICogYXJncy0+c2l6ZSBoYW5kbGluZyBm aXhlcy4KICogVXBkYXRlIGNvbnRleHQgaW1hZ2UgZnJvbSBHR1RULgogKiBQb3N0cG9uZSBjb250 ZXh0IGltYWdlIHVwZGF0ZSB0byBwaW5uaW5nLgogKiBVc2UgaTkxNV9nZW1fYWN0aXZlX3JhdyBp bnN0ZWFkIG9mIGxhc3RfcmVxdWVzdF9vbl9lbmdpbmUuCgp2MTQ6CiAqIEFkZCBhY3Rpdml0eSB0 cmFja2VyIG9uIGludGVsX2NvbnRleHQgdG8gZml4IHRoZSBsaWZldGltZSBpc3N1ZXMKICAgYW5k IHNpbXBsaWZ5IHRoZSBjb2RlLiAoQ2hyaXMgV2lsc29uKQoKdjE1OgogKiBGaXggY29udGV4dCBw aW4gbGVhayBpZiBubyBzcGFjZSBpbiByaW5nIGJ5IHNpbXBsaWZ5aW5nIHRoZQogICBjb250ZXh0 IHBpbm5pbmcgc2VxdWVuY2UuCgp2MTY6CiAqIFJlYmFzZSBmb3IgY29udGV4dCBnZXQvc2V0IHBh cmFtIGxvY2tpbmcgY2hhbmdlcy4KICogSnVzdCAtRU5PREVWIG9uICFHZW4xMS4gKEpvb25hcykK CnYxNzoKICogRml4IG9uZSBHZW4xMSBzdWJzbGljZSBlbmFibGVtZW50IHJ1bGUuCiAqIEhhbmRs ZSBlcnJvciBmcm9tIGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwLiAoQ2hyaXMgV2ls c29uKQoKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTEwMDg5OQpCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MTA3NjM0Cklzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJp dmVyL2lzc3Vlcy8yNjcKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5s YW5kd2VybGluQGludGVsLmNvbT4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296 aGtpbkBpbnRlbC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgpDYzogWmhpcGVuZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ICMgdjE1Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgMzE4ICsrKysrKysrKysrKysrKysr KysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIHwgICA2ICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgNCArLQogaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgIDQzICsrKysKIDQgZmlsZXMgY2hh bmdlZCwgMzY4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDBiOGNjNzQ4NjQ4Yi4uYjM4ZThiOGVjNzcyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC05MCw2ICs5MCw3IEBA CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUg ImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wzX1NMSUNFUyhkZXYpICgxIDw8 IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjIsNiArMzIzLDE0IEBAIHN0YXRpYyB1MzIg ZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGNvbnRhaW5lcl9vZihhY3RpdmUs IHR5cGVvZigqY2UpLCBhY3RpdmUpOworCisJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cit9CisK IHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCiBfX2NyZWF0ZV9od19jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICAgIHN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKQEAgLTM0NSw2ICszNTQsOCBAQCBfX2NyZWF0ZV9od19j b250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJY2UtPmdlbV9jb250 ZXh0ID0gY3R4OwogCQkvKiBVc2UgdGhlIHdob2xlIGRldmljZSBieSBkZWZhdWx0ICovCiAJCWNl LT5zc2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShkZXZfcHJpdik7CisKKwkJaW5pdF9y ZXF1ZXN0X2FjdGl2ZSgmY2UtPmFjdGl2ZSwgaW50ZWxfY29udGV4dF9yZXRpcmUpOwogCX0KIAog CUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7CkBAIC04NDYs NiArODU3LDU2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBn ZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJncy0+ c2l6ZSA9PSAwKQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVz ZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2Vy X3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9z c2V1KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5yc3ZkMSB8fCB1c2Vy X3NzZXUucnN2ZDIpCisJCXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5l X2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAg dXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBPbmx5IHVzZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFu ZCBzZXRfcGFyYW0uICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljZSA9 IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sg PSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNz ZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+ c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xp Y2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3Vz ZXJfcHRyKGFyZ3MtPnZhbHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1KSkp CisJCXJldHVybiAtRUZBVUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3Nz ZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKIHsKQEAgLTg1OCwxNSArOTE5LDE3IEBAIGludCBpOTE1X2dlbV9jb250 ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ aWYgKCFjdHgpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dpdGNo IChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CiAJ CXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pF Uk9NQVA6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVDT05U RVhUX05PX1pFUk9NQVAsICZjdHgtPnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5MTVf Q09OVEVYVF9QQVJBTV9HVFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0eC0+ cHBndHQpCiAJCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNlIGlm ICh0b19pOTE1KGRldiktPm1tLmFsaWFzaW5nX3BwZ3R0KQpAQCAtODc1LDE0ICs5MzgsMjAgQEAg aW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRv dGFsOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJF OgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25v X2Vycm9yX2NhcHR1cmUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f QkFOTkFCTEU6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2Nv bnRleHRfaXNfYmFubmFibGUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fUFJJT1JJVFk6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2No ZWQucHJpb3JpdHk7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJ CXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9 IC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtODkyLDYgKzk2MSwyNDkgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJ CSBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXU2NCBvZmZzZXQ7CisJdTMyICpjczsKKwor CWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7CisJaWYgKElTX0VSUihjcykpCisJCXJldHVy biBQVFJfRVJSKGNzKTsKKworCW9mZnNldCA9IGNlLT5zdGF0ZS0+bm9kZS5zdGFydCArCisJCUxS Q19TVEFURV9QTiAqIFBBR0VfU0laRSArCisJCShDVFhfUl9QV1JfQ0xLX1NUQVRFICsgMSkgKiA0 OworCisJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOworCSpj cysrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gdXBwZXJfMzJfYml0cyhvZmZz ZXQpOworCSpjcysrID0gZ2VuOF9tYWtlX3JwY3MocnEtPmk5MTUsICZzc2V1KTsKKworCWludGVs X3JpbmdfYWR2YW5jZShycSwgY3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dl bjhfbW9kaWZ5X3JwY3NfZ3B1KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJICAgICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgc3Nl dSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnByZXY7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04o IWNlLT5waW5fY291bnQpOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CisKKwkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdh a2UuICovCisJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlycSA9IGk5MTVfcmVxdWVz dF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKwlpZiAoSVNfRVJSKHJxKSkg eworCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBvdXRfcHV0OworCX0KKworCS8qIFF1ZXVl IHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSBieSB0aGlzIGNvbnRleHQuICov CisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmNlLT5yaW5nLT50aW1lbGluZS0+bGFzdF9y ZXF1ZXN0LAorCQkJCSAgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocHJldiAmJiAh aTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkgeworCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3 YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKKwkJCQkJCSAgICAgICAmcHJldi0+c3VibWl0 LAorCQkJCQkJICAgICAgIEk5MTVfRkVOQ0VfR0ZQKTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3Rv IG91dF9hZGQ7CisJfQorCisJcmV0ID0gZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHJxLCBjZSwgc3Nl dSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRkOworCisJLyogT3JkZXIgYWxsIGZvbGxvd2lu ZyByZXF1ZXN0cyB0byBiZSBhZnRlci4gKi8KKwlpOTE1X3RpbWVsaW5lX3NldF9iYXJyaWVyKGNl LT5yaW5nLT50aW1lbGluZSwgcnEpOworCisJLyoKKwkgKiBHdWFyYW50ZWUgY29udGV4dCBpbWFn ZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFpbnMgcGlubmVkIHVudGlsIHRoZQorCSAqIG1vZGlmeWlu ZyByZXF1ZXN0IGlzIHJldGlyZWQgYnkgc2V0dGluZyB0aGUgY2UgYWN0aXZpdHkgdHJhY2tlci4K KwkgKgorCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gdGFrZSBvbmUgcGluIG9uIHRoZSBhY2NvdW50 IG9mIGl0LiBPciBpbiBvdGhlcgorCSAqIHdvcmRzIHRyYW5zZmVyIHRoZSBwaW5uZWQgY2Ugb2Jq ZWN0IHRvIHRyYWNrZWQgYWN0aXZlIHJlcXVlc3QuCisJICovCisJaWYgKCFpOTE1X2dlbV9hY3Rp dmVfaXNzZXQoJmNlLT5hY3RpdmUpKQorCQlfX2ludGVsX2NvbnRleHRfcGluKGNlKTsKKwlpOTE1 X2dlbV9hY3RpdmVfc2V0KCZjZS0+YWN0aXZlLCBycSk7CisKK291dF9hZGQ6CisJaTkxNV9yZXF1 ZXN0X2FkZChycSk7CitvdXRfcHV0OgorCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3Vy ZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwor CWludCByZXQ7CisKKwlHRU1fQlVHX09OKElOVEVMX0dFTihjdHgtPmk5MTUpIDwgOCk7CisJR0VN X0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdW5tb2RpZmllZC4gKi8KKwlpZiAoIW1lbWNt cCgmY2UtPnNzZXUsICZzc2V1LCBzaXplb2Yoc3NldSkpKQorCQlnb3RvIG91dDsKKworCS8qCisJ ICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJl cXVlc3QgdG8gbW9kaWZ5CisJICogaXRzIGNvbnRleHQgaW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29u dGV4dC4gUHJpc3RpbmUgYW5kIGlkbGUgY29udGV4dHMKKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQg b24gcGlubmluZy4KKwkgKi8KKwlpZiAoY2UtPnBpbl9jb3VudCkKKwkJcmV0ID0gZ2VuOF9tb2Rp ZnlfcnBjc19ncHUoY2UsIGVuZ2luZSwgc3NldSk7CisKKwlpZiAoIXJldCkKKwkJY2UtPnNzZXUg PSBzc2V1OworCitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAordXNlcl90b19jb250ZXh0X3Nz ZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCSAgICAgY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgKnVzZXIsCisJCSAgICAgc3RydWN0IGludGVs X3NzZXUgKmNvbnRleHQpCit7CisJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKmRldmljZSA9 ICZJTlRFTF9JTkZPKGk5MTUpLT5zc2V1OworCisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAq LworCWlmICghdXNlci0+c2xpY2VfbWFzayB8fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAg ICAhdXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPCB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwkvKiBDaGVjayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLwor CWlmICh1c2VyLT5zbGljZV9tYXNrICYgfmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAodXNlci0+c3Vic2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21h c2tbMF0pCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlID4gZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKgorCSAqIFNvbWUgZnV0dXJlIHByb29maW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQ SSBpcyB3aWRlciB0aGFuIHRoZQorCSAqIGN1cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24u CisJICovCisJaWYgKFdBUk5fT04oKGZscyh1c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6 ZW9mKGNvbnRleHQtPnNsaWNlX21hc2spICogQklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHMo dXNlci0+c3Vic2xpY2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9t YXNrKSAqIEJJVFNfUEVSX0JZVEUpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5f ZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkg fHwKKwkJICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJ CSAgIGNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOwor CisJY29udGV4dC0+c2xpY2VfbWFzayA9IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vi c2xpY2VfbWFzayA9IHVzZXItPnN1YnNsaWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJf c3Vic2xpY2UgPSB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBz cGVjaWZpYyByZXN0cmljdGlvbnMuICovCisJaWYgKElTX0dFTjExKGk5MTUpKSB7CisJCXVuc2ln bmVkIGludCBod19zc19wZXJfcyA9IGh3ZWlnaHQ4KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7 CisJCXVuc2lnbmVkIGludCByZXFfcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOwor CQl1bnNpZ25lZCBpbnQgcmVxX3NzID0gaHdlaWdodDgoY29udGV4dC0+c3Vic2xpY2VfbWFzayk7 CisKKwkJLyoKKwkJICogT25seSBmdWxsIHN1YnNsaWNlIGVuYWJsZW1lbnQgaXMgcG9zc2libGUg aWYgbW9yZSB0aGFuIG9uZQorCQkgKiBzbGljZSBpcyB0dXJuZWQgb24uCisJCSAqLworCQlpZiAo cmVxX3MgPiAxICYmIHJlcV9zcyAhPSBod19zc19wZXJfcykKKwkJCXJldHVybiAtRUlOVkFMOwor CisJCS8qCisJCSAqIElmIG1vcmUgdGhhbiBmb3VyIChTU2NvdW50IGJpdGZpZWxkIGxpbWl0KSBz dWJzbGljZXMgYXJlCisJCSAqIHJlcXVlc3RlZCB0aGVuIHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2 ZW4uCisJCSAqLworCQlpZiAocmVxX3NzID4gNCAmJiAocmVxX3NzICYgMSkpCisJCQlyZXR1cm4g LUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBvbmx5IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBz dWJzbGljZSBjb3VudCBpcyBiZWxvdyB0aGUKKwkJICogZGV2aWNlIGZ1bGwgZW5hYmxlbWVudCwg aXQgbXVzdCBiZSBhdCBtb3N0IGhhbGYgb2YgdGhlIGFsbAorCQkgKiBhdmFpbGFibGUgc3Vic2xp Y2VzLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEgJiYgcmVxX3NzIDwgaHdfc3NfcGVyX3MgJiYK KwkJICAgIHJlcV9zcyA+IChod19zc19wZXJfcyAvIDIpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAq YXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7CisJaW50 IHJldDsKKworCWlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCisJCXJldHVybiAt RUlOVkFMOworCisJaWYgKCFJU19HRU4xMShpOTE1KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlp ZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVl KSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAo dXNlcl9zc2V1LnJzdmQxIHx8IHVzZXJfc3NldS5yc3ZkMikKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwKKwkJCQkJICB1c2VyX3Nz ZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRlciBlbmdpbmUgc3VwcG9ydHMgUlBDUyBj b25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3RvX2NvbnRleHRfc3NldShpOTE1LCAmdXNl cl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGk5MTVf Z2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsKKwor CXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCiB7CkBAIC05NTMsNyArMTI2NSw5IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBh cmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJY3R4LT5z Y2hlZC5wcmlvcml0eSA9IHByaW9yaXR5OwogCQl9CiAJCWJyZWFrOwotCisJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gc2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggNzUxMGRlNzM4YjM1Li5jNGFlYmZlN2Q0ZDIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTE3MCw2ICsxNzAsMTIg QEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewogCQl1NjQgbHJjX2Rlc2M7CiAJCWludCBwaW5f Y291bnQ7CiAKKwkJLyoqCisJCSAqIGFjdGl2ZTogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBleHRl cm5hbCBycSBhY3Rpdml0eSBvbiB0aGlzCisJCSAqIGludGVsX2NvbnRleHQgb2JqZWN0LgorCQkg Ki8KKwkJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBhY3RpdmU7CisKIAkJY29uc3Qgc3RydWN0IGlu dGVsX2NvbnRleHRfb3BzICpvcHM7CiAKIAkJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFy dGl0aW9uaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGNmMmUwODQ4ZmE1NS4u YjU2MDNlOTc3YTNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjU1Nyw3ICsyNTU3 LDkgQEAgdTMyIGdlbjhfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBz dHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpCiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBv ciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgog CSAqLwotCWlmIChJU19HRU4xMShpOTE1KSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0g NCkgeworCWlmIChJU19HRU4xMShpOTE1KSAmJgorCSAgICBzbGljZXMgPT0gMSAmJgorCSAgICBz dWJzbGljZXMgPiBtaW5fdCh1OCwgNCwgaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSkg LyAyKSkgewogCQlHRU1fQlVHX09OKHN1YnNsaWNlcyAmIDEpOwogCiAJCXN1YnNsaWNlX3BnID0g ZmFsc2U7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRl L3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggYTQ0NDZmNDUyMDQwLi5lMTk1YzM4YjE1YTYgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKQEAgLTE0NzgsOSArMTQ3OCw1MiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0gewogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklU WQkxMDIzIC8qIGluY2x1c2l2ZSAqLwogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BS SU9SSVRZCQkwCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIz IC8qIGluY2x1c2l2ZSAqLworCS8qCisJICogV2hlbiB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFt LCB2YWx1ZSBzaG91bGQgYmUgYSBwb2ludGVyIHRvCisJICogZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW1fc3NldS4KKwkgKi8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1NTRVUJCTB4Nwog CV9fdTY0IHZhbHVlOwogfTsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3Nz ZXUgeworCS8qCisJICogRW5naW5lIGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmlndXJlZCBv ciBxdWVyaWVkLgorCSAqLworCV9fdTE2IGNsYXNzOworCV9fdTE2IGluc3RhbmNlOworCisJLyoK KwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICovCisJX191 MzIgcnN2ZDE7CisKKwkvKgorCSAqIE1hc2sgb2Ygc2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNv bnRleHQuIFZhbGlkIHZhbHVlcyBhcmUgYSBzdWJzZXQKKwkgKiBvZiB0aGUgYml0bWFzayB2YWx1 ZSByZXR1cm5lZCBmb3IgSTkxNV9QQVJBTV9TTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHNsaWNl X21hc2s7CisKKwkvKgorCSAqIE1hc2sgb2Ygc3Vic2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNv bnRleHQuIFZhbGlkIHZhbHVlcyBhcmUgYQorCSAqIHN1YnNldCBvZiB0aGUgYml0bWFzayB2YWx1 ZSByZXR1cm4gYnkgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHN1YnNs aWNlX21hc2s7CisKKwkvKgorCSAqIE1pbmltdW0vTWF4aW11bSBudW1iZXIgb2YgRVVzIHRvIGVu YWJsZSBwZXIgc3Vic2xpY2UgZm9yIHRoZQorCSAqIGNvbnRleHQuIG1pbl9ldXNfcGVyX3N1YnNs aWNlIG11c3QgYmUgaW5mZXJpb3Igb3IgZXF1YWwgdG8KKwkgKiBtYXhfZXVzX3Blcl9zdWJzbGlj ZS4KKwkgKi8KKwlfX3UxNiBtaW5fZXVzX3Blcl9zdWJzbGljZTsKKwlfX3UxNiBtYXhfZXVzX3Bl cl9zdWJzbGljZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0 byB6ZXJvLgorCSAqLworCV9fdTMyIHJzdmQyOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3Jt YXQgewogCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVf T0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjE3LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=