From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v18 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 18 Sep 2018 14:43:57 +0100 Message-ID: <20180918134357.10677-1-tvrtko.ursulin@linux.intel.com> References: <20180917113058.28994-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 mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id 685556E3FC for ; Tue, 18 Sep 2018 13:44:05 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id w11-v6so2175880wrc.5 for ; Tue, 18 Sep 2018 06:44:05 -0700 (PDT) In-Reply-To: <20180917113058.28994-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 b25hcykKCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNn aT9pZD0xMDA4OTkKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19i dWcuY2dpP2lkPTEwNzYzNApJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRy aXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcu bGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dv emhraW5AaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IEpvb25h cyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHYxNwotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM0MCArKysrKysrKysrKysrKysr KysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDQgKy0KIGluY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA0MyArKysKIDQgZmlsZXMgY2hh bmdlZCwgMzkwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDBiOGNjNzQ4NjQ4Yi4uYWVlOGY4MzkyZWY3IDEw 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 IC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtODkyLDYgKzk2MSwyNzEgQEAgaW50IGk5MTVfZ2VtX2Nv 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 bmVkIGludCBod19zID0gaHdlaWdodDgoZGV2aWNlLT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQg aW50IGh3X3NzX3Blcl9zID0gaHdlaWdodDgoZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKTsKKwkJ dW5zaWduZWQgaW50IHJlcV9zID0gaHdlaWdodDgoY29udGV4dC0+c2xpY2VfbWFzayk7CisJCXVu c2lnbmVkIGludCByZXFfc3MgPSBod2VpZ2h0OChjb250ZXh0LT5zdWJzbGljZV9tYXNrKTsKKwor CQkvKgorCQkgKiBPbmx5IGZ1bGwgc3Vic2xpY2UgZW5hYmxlbWVudCBpcyBwb3NzaWJsZSBpZiBt b3JlIHRoYW4gb25lCisJCSAqIHNsaWNlIGlzIHR1cm5lZCBvbi4KKwkJICovCisJCWlmIChyZXFf cyA+IDEgJiYgcmVxX3NzICE9IGh3X3NzX3Blcl9zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJ LyoKKwkJICogSWYgbW9yZSB0aGFuIGZvdXIgKFNTY291bnQgYml0ZmllbGQgbGltaXQpIHN1YnNs aWNlcyBhcmUKKwkJICogcmVxdWVzdGVkIHRoZW4gdGhlIG51bWJlciBoYXMgdG8gYmUgZXZlbi4K KwkJICovCisJCWlmIChyZXFfc3MgPiA0ICYmIChyZXFfc3MgJiAxKSkKKwkJCXJldHVybiAtRUlO VkFMOworCisJCS8qCisJCSAqIElmIG9ubHkgb25lIHNsaWNlIGlzIGVuYWJsZWQgYW5kIHN1YnNs aWNlIGNvdW50IGlzIGJlbG93IHRoZQorCQkgKiBkZXZpY2UgZnVsbCBlbmFibGVtZW50LCBpdCBt dXN0IGJlIGF0IG1vc3QgaGFsZiBvZiB0aGUgYWxsCisJCSAqIGF2YWlsYWJsZSBzdWJzbGljZXMu CisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJiByZXFfc3MgPCBod19zc19wZXJfcyAmJgorCQkg ICAgcmVxX3NzID4gKGh3X3NzX3Blcl9zIC8gMikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkv KiBBQkkgcmVzdHJpY3Rpb24gLSBWTUUgdXNlIGNhc2Ugb25seS4gKi8KKworCQkvKiBBbGwgc2xp Y2VzIG9yIG9uZSBzbGljZSBvbmx5LiAqLworCQlpZiAocmVxX3MgIT0gMSAmJiByZXFfcyAhPSBo d19zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSGFsZiBzdWJzbGljZXMgb3Ig ZnVsbCBlbmFibGVtZW50IG9ubHkgd2hlbiBvbmUgc2xpY2UgaXMKKwkJICogZW5hYmxlZC4KKwkJ ICovCisJCWlmIChyZXFfcyA9PSAxICYmCisJCSAgICAocmVxX3NzICE9IGh3X3NzX3Blcl9zICYm IHJlcV9zcyAhPSAoaHdfc3NfcGVyX3MgLyAyKSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkv KiBObyBFVSBjb25maWd1cmF0aW9uIGNoYW5nZXMuICovCisJCWlmICgodXNlci0+bWluX2V1c19w ZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSB8fAor CQkgICAgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhf ZXVzX3Blcl9zdWJzbGljZSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAor CQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1OworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJc3RydWN0IGludGVsX3NzZXUgc3NldTsKKwlpbnQgcmV0OworCisJaWYgKGFy Z3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo IUlTX0dFTjExKGk5MTUpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zyb21fdXNl cigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9m KHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUucnN2ZDEg fHwgdXNlcl9zc2V1LnJzdmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVs X2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJ ICB1c2VyX3NzZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qIE9ubHkgcmVuZGVyIGVuZ2luZSBzdXBwb3J0cyBSUENTIGNvbmZpZ3VyYXRpb24uICov CisJaWYgKGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCXJldCA9IHVzZXJfdG9fY29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9yZWNv bmZpZ3VyZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisK IGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTk1 Myw3ICsxMjg3LDkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQljdHgtPnNjaGVkLnByaW9yaXR5ID0g cHJpb3JpdHk7CiAJCX0KIAkJYnJlYWs7Ci0KKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VV OgorCQlyZXQgPSBzZXRfc3NldShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQly ZXQgPSAtRUlOVkFMOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaAppbmRleCA3NTEwZGU3MzhiMzUuLmM0YWViZmU3ZDRkMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTcwLDYgKzE3MCwxMiBAQCBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCB7CiAJCXU2NCBscmNfZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioK KwkJICogYWN0aXZlOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFjdGl2aXR5 IG9uIHRoaXMKKwkJICogaW50ZWxfY29udGV4dCBvYmplY3QuCisJCSAqLworCQlzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlIGFjdGl2ZTsKKwogCQljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMg Km9wczsKIAogCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25pbmcgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggY2YyZTA4NDhmYTU1Li5iNTYwM2U5NzdhM2YgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yNTU3LDcgKzI1NTcsOSBAQCB1MzIgZ2VuOF9t YWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1 ICpyZXFfc3NldSkKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQgYmV0d2Vl biBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJICovCi0JaWYgKElTX0dF TjExKGk5MTUpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYgKElTX0dF TjExKGk5MTUpICYmCisJICAgIHNsaWNlcyA9PSAxICYmCisJICAgIHN1YnNsaWNlcyA+IG1pbl90 KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIpKSB7CiAJCUdFTV9C VUdfT04oc3Vic2xpY2VzICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaAppbmRleCBhNDQ0NmY0NTIwNDAuLmUxOTVjMzhiMTVhNiAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApA QCAtMTQ3OCw5ICsxNDc4LDUyIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7 CiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCTEwMjMgLyogaW5jbHVz aXZlICovCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkJCTAKICNkZWZp bmUgICBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMgLyogaW5jbHVzaXZlICov CisJLyoKKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZhbHVlIHNob3VsZCBi ZSBhIHBvaW50ZXIgdG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1LgorCSAq LworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJX191NjQgdmFsdWU7CiB9 OwogCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB7CisJLyoKKwkgKiBF bmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9yIHF1ZXJpZWQuCisJICov CisJX191MTYgY2xhc3M7CisJX191MTYgaW5zdGFuY2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Ig bm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiByc3ZkMTsKKworCS8q CisJICogTWFzayBvZiBzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFs dWVzIGFyZSBhIHN1YnNldAorCSAqIG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVybmVkIGZvciBJ OTE1X1BBUkFNX1NMSUNFX01BU0suCisJICovCisJX191NjQgc2xpY2VfbWFzazsKKworCS8qCisJ ICogTWFzayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFs dWVzIGFyZSBhCisJICogc3Vic2V0IG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVybiBieSBJOTE1 X1BBUkFNX1NVQlNMSUNFX01BU0suCisJICovCisJX191NjQgc3Vic2xpY2VfbWFzazsKKworCS8q CisJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBFVXMgdG8gZW5hYmxlIHBlciBzdWJzbGlj ZSBmb3IgdGhlCisJICogY29udGV4dC4gbWluX2V1c19wZXJfc3Vic2xpY2UgbXVzdCBiZSBpbmZl cmlvciBvciBlcXVhbCB0bworCSAqIG1heF9ldXNfcGVyX3N1YnNsaWNlLgorCSAqLworCV9fdTE2 IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCV9fdTE2IG1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJ LyoKKwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICovCisJ X191MzIgcnN2ZDI7Cit9OworCiBlbnVtIGRybV9pOTE1X29hX2Zvcm1hdCB7CiAJSTkxNV9PQV9G T1JNQVRfQTEzID0gMSwJICAgIC8qIEhTVyBvbmx5ICovCiAJSTkxNV9PQV9GT1JNQVRfQTI5LAkg ICAgLyogSFNXIG9ubHkgKi8KLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==