From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ray Strode Subject: [PATCH] drm/qxl: reapply cursor after resetting primary Date: Mon, 27 Nov 2017 16:07:06 -0500 Message-ID: <20171127210706.9200-1-halfline@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 86D4589823 for ; Mon, 27 Nov 2017 21:07:15 +0000 (UTC) Received: by mail-qk0-x243.google.com with SMTP id j202so34361401qke.10 for ; Mon, 27 Nov 2017 13:07:15 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Dave Airlie , Ray Strode , Gerd Hoffmann List-Id: dri-devel@lists.freedesktop.org RnJvbTogUmF5IFN0cm9kZSA8cnN0cm9kZUByZWRoYXQuY29tPgoKUVhMIGFzc29jaWF0ZXMgbW91 c2Ugc3RhdGUgd2l0aCBpdHMgcHJpbWFyeSBwbGFuZS4KCkRlc3Ryb3lpbmcgYSBwcmltYXJ5IHBs YW5lIGFuZCBwdXR0aW5nIGEgbmV3IG9uZSBpbiBwbGFjZSBoYXMgdGhlIHNpZGUKZWZmZWN0IG9m IGRlc3Ryb3lpbmcgdGhlIGN1cnNvciBhcyB3ZWxsLgoKVGhpcyBjb21taXQgY2hhbmdlcyB0aGUg ZHJpdmVyIHRvIHJlYXBwbHkgdGhlIGN1cnNvciBhbnkgdGltZSBhIG5ldwpwcmltYXJ5IGlzIGNy ZWF0ZWQuIEl0IGFjaGlldmVzIHRoaXMgYnkga2VlcGluZyBhIHJlZmVyZW5jZSB0byB0aGUKY3Vy c29yIGJvIG9uIHRoZSBxeGxfY3J0YyBzdHJ1Y3QuCgpUaGlzIGZpeCBpcyB2ZXJ5IHNpbWlsYXIg dG8KCmNvbW1pdCA0NTMyYjI0MWE0YjcgKCJkcm0vcXhsOiByZWFwcGx5IGN1cnNvciBhZnRlciBT ZXRDcnRjIGNhbGxzIikKCndoaWNoIGdvdCBpbXBsaWNpdGx5IHJldmVydGVkIGFzIHBhcnQgb2Yg aW1wbGVtZW50aW5nIHRoZSBhdG9taWMKbW9kZXNldCBmZWF0dXJlLgoKQ2M6IEdlcmQgSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPgpDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KQnVnemlsbGE6IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9 MTUxMjA5NwpGaXhlczogMTI3N2VlZDVmZWNiICgiZHJtOiBxeGw6IEF0b21pYyBwaGFzZSAxOiBj b252ZXJ0IGN1cnNvciB0byB1bml2ZXJzYWwgcGxhbmUiKQpTaWduZWQtb2ZmLWJ5OiBSYXkgU3Ry b2RlIDxyc3Ryb2RlQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlz cGxheS5jIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCAgICAgfCAgMiArKwogMiBmaWxlcyBjaGFuZ2VkLCA2 MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCmluZGV4IGZjOWU4NmYz ODExZi4uYTUxYTVhYmI5NzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9k aXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCkBAIC0yNjIs NjAgKzI2Miw2MSBAQCBzdGF0aWMgaW50IHF4bF9hZGRfY29tbW9uX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCiAJCW1vZGUgPSBkcm1fY3Z0X21vZGUoZGV2LCBjb21tb25f bW9kZXNbaV0udywgY29tbW9uX21vZGVzW2ldLmgsCiAJCQkJICAgIDYwLCBmYWxzZSwgZmFsc2Us IGZhbHNlKTsKIAkJaWYgKGNvbW1vbl9tb2Rlc1tpXS53ID09IHB3aWR0aCAmJiBjb21tb25fbW9k ZXNbaV0uaCA9PSBwaGVpZ2h0KQogCQkJbW9kZS0+dHlwZSB8PSBEUk1fTU9ERV9UWVBFX1BSRUZF UlJFRDsKIAkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwogCX0KIAlyZXR1 cm4gaSAtIDE7CiB9CiAKIHN0YXRpYyB2b2lkIHF4bF9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRy bV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAog CWlmIChjcnRjLT5zdGF0ZSAmJiBjcnRjLT5zdGF0ZS0+ZXZlbnQpIHsKIAkJZXZlbnQgPSBjcnRj LT5zdGF0ZS0+ZXZlbnQ7CiAJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7CiAKIAkJc3Bpbl9s b2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwogCQlkcm1fY3J0Y19zZW5kX3Zi bGFua19ldmVudChjcnRjLCBldmVudCk7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ ZXZlbnRfbG9jaywgZmxhZ3MpOwogCX0KIH0KIAogc3RhdGljIHZvaWQgcXhsX2NydGNfZGVzdHJv eShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IHF4bF9jcnRjICpxeGxfY3J0YyA9 IHRvX3F4bF9jcnRjKGNydGMpOwogCisJcXhsX2JvX3VucmVmKCZxeGxfY3J0Yy0+Y3Vyc29yX2Jv KTsKIAlkcm1fY3J0Y19jbGVhbnVwKGNydGMpOwogCWtmcmVlKHF4bF9jcnRjKTsKIH0KIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBxeGxfY3J0Y19mdW5jcyA9IHsKIAkuc2V0 X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCiAJLmRlc3Ryb3kgPSBxeGxf Y3J0Y19kZXN0cm95LAogCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAs CiAJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKIAkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlLAogCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0 ZSwKIH07CiAKIHZvaWQgcXhsX3VzZXJfZnJhbWVidWZmZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYikKIHsKIAlzdHJ1Y3QgcXhsX2ZyYW1lYnVmZmVyICpxeGxfZmIgPSB0b19x eGxfZnJhbWVidWZmZXIoZmIpOwogCXN0cnVjdCBxeGxfYm8gKmJvID0gZ2VtX3RvX3F4bF9ibyhx eGxfZmItPm9iaik7CiAKIAlXQVJOX09OKGJvLT5zaGFkb3cpOwogCWRybV9nZW1fb2JqZWN0X3Vu cmVmZXJlbmNlX3VubG9ja2VkKHF4bF9mYi0+b2JqKTsKIAlkcm1fZnJhbWVidWZmZXJfY2xlYW51 cChmYik7CiAJa2ZyZWUocXhsX2ZiKTsKIH0KIAogc3RhdGljIGludCBxeGxfZnJhbWVidWZmZXJf c3VyZmFjZV9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJCQkJIHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2LAogCQkJCQkgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIGNvbG9y LAogCQkJCQkgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAogCQkJCQkgdW5zaWduZWQgbnVt X2NsaXBzKQogewpAQCAtNDY4LDE5MyArNDY5LDI1MSBAQCBzdGF0aWMgdm9pZCBxeGxfY3J0Y19h dG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIHF4bF9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9k ZV9maXh1cCA9IHF4bF9jcnRjX21vZGVfZml4dXAsCiAJLm1vZGVfc2V0X25vZmIgPSBxeGxfbW9k ZV9zZXRfbm9mYiwKIAkuYXRvbWljX2ZsdXNoID0gcXhsX2NydGNfYXRvbWljX2ZsdXNoLAogCS5h dG9taWNfZW5hYmxlID0gcXhsX2NydGNfYXRvbWljX2VuYWJsZSwKIAkuYXRvbWljX2Rpc2FibGUg PSBxeGxfY3J0Y19hdG9taWNfZGlzYWJsZSwKIH07CiAKIHN0YXRpYyBpbnQgcXhsX3ByaW1hcnlf YXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgICBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9IHBsYW5l LT5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBxeGxfZnJhbWVidWZmZXIgKnFmYjsKIAlzdHJ1 Y3QgcXhsX2JvICpibzsKIAogCWlmICghc3RhdGUtPmNydGMgfHwgIXN0YXRlLT5mYikKIAkJcmV0 dXJuIDA7CiAKIAlxZmIgPSB0b19xeGxfZnJhbWVidWZmZXIoc3RhdGUtPmZiKTsKIAlibyA9IGdl bV90b19xeGxfYm8ocWZiLT5vYmopOwogCiAJaWYgKGJvLT5zdXJmLnN0cmlkZSAqIGJvLT5zdXJm LmhlaWdodCA+IHFkZXYtPnZyYW1fc2l6ZSkgewogCQlEUk1fRVJST1IoIk1vZGUgZG9lc24ndCBm aXQgaW4gdnJhbSBzaXplICh2Z2FtZW0pIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCXJl dHVybiAwOwogfQogCitzdGF0aWMgaW50IHF4bF9wcmltYXJ5X2FwcGx5X2N1cnNvcihzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRl djsKKwlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOworCXN0cnVjdCBxeGxfY3J0 YyAqcWNydGMgPSB0b19xeGxfY3J0YyhwbGFuZS0+c3RhdGUtPmNydGMpOworCXN0cnVjdCBxeGxf Y3Vyc29yX2NtZCAqY21kOworCXN0cnVjdCBxeGxfcmVsZWFzZSAqcmVsZWFzZTsKKwlpbnQgcmV0 ID0gMDsKKworCWlmICghcWNydGMtPmN1cnNvcl9ibykKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBx eGxfYWxsb2NfcmVsZWFzZV9yZXNlcnZlZChxZGV2LCBzaXplb2YoKmNtZCksCisJCQkJCSBRWExf UkVMRUFTRV9DVVJTT1JfQ01ELAorCQkJCQkgJnJlbGVhc2UsIE5VTEwpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKKwlyZXQgPSBxeGxfcmVsZWFzZV9saXN0X2FkZChyZWxlYXNlLCBxY3J0 Yy0+Y3Vyc29yX2JvKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mcmVlX3JlbGVhc2U7CisKKwly ZXQgPSBxeGxfcmVsZWFzZV9yZXNlcnZlX2xpc3QocmVsZWFzZSwgZmFsc2UpOworCWlmIChyZXQp CisJCWdvdG8gb3V0X2ZyZWVfcmVsZWFzZTsKKworCWNtZCA9IChzdHJ1Y3QgcXhsX2N1cnNvcl9j bWQgKilxeGxfcmVsZWFzZV9tYXAocWRldiwgcmVsZWFzZSk7CisJY21kLT50eXBlID0gUVhMX0NV UlNPUl9TRVQ7CisJY21kLT51LnNldC5wb3NpdGlvbi54ID0gcGxhbmUtPnN0YXRlLT5jcnRjX3gg KyBmYi0+aG90X3g7CisJY21kLT51LnNldC5wb3NpdGlvbi55ID0gcGxhbmUtPnN0YXRlLT5jcnRj X3kgKyBmYi0+aG90X3k7CisKKwljbWQtPnUuc2V0LnNoYXBlID0gcXhsX2JvX3BoeXNpY2FsX2Fk ZHJlc3MocWRldiwgcWNydGMtPmN1cnNvcl9ibywgMCk7CisKKwljbWQtPnUuc2V0LnZpc2libGUg PSAxOworCXF4bF9yZWxlYXNlX3VubWFwKHFkZXYsIHJlbGVhc2UsICZjbWQtPnJlbGVhc2VfaW5m byk7CisKKwlxeGxfcHVzaF9jdXJzb3JfcmluZ19yZWxlYXNlKHFkZXYsIHJlbGVhc2UsIFFYTF9D TURfQ1VSU09SLCBmYWxzZSk7CisJcXhsX3JlbGVhc2VfZmVuY2VfYnVmZmVyX29iamVjdHMocmVs ZWFzZSk7CisKKwlyZXR1cm4gcmV0OworCitvdXRfZnJlZV9yZWxlYXNlOgorCXF4bF9yZWxlYXNl X2ZyZWUocWRldiwgcmVsZWFzZSk7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQgcXhs X3ByaW1hcnlfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgICAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IHF4bF9kZXZp Y2UgKnFkZXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcXhsX2ZyYW1lYnVm ZmVyICpxZmIgPQogCQl0b19xeGxfZnJhbWVidWZmZXIocGxhbmUtPnN0YXRlLT5mYik7CiAJc3Ry dWN0IHF4bF9mcmFtZWJ1ZmZlciAqcWZiX29sZDsKIAlzdHJ1Y3QgcXhsX2JvICpibyA9IGdlbV90 b19xeGxfYm8ocWZiLT5vYmopOwogCXN0cnVjdCBxeGxfYm8gKmJvX29sZDsKIAlzdHJ1Y3QgZHJt X2NsaXBfcmVjdCBub3JlY3QgPSB7CiAJICAgIC54MSA9IDAsCiAJICAgIC55MSA9IDAsCiAJICAg IC54MiA9IHFmYi0+YmFzZS53aWR0aCwKIAkgICAgLnkyID0gcWZiLT5iYXNlLmhlaWdodAogCX07 CisJaW50IHJldDsKIAlib29sIHNhbWVfc2hhZG93ID0gZmFsc2U7CiAKIAlpZiAob2xkX3N0YXRl LT5mYikgewogCQlxZmJfb2xkID0gdG9fcXhsX2ZyYW1lYnVmZmVyKG9sZF9zdGF0ZS0+ZmIpOwog CQlib19vbGQgPSBnZW1fdG9fcXhsX2JvKHFmYl9vbGQtPm9iaik7CiAJfSBlbHNlIHsKIAkJYm9f b2xkID0gTlVMTDsKIAl9CiAKIAlpZiAoYm8gPT0gYm9fb2xkKQogCQlyZXR1cm47CiAKIAlpZiAo Ym9fb2xkICYmIGJvX29sZC0+c2hhZG93ICYmIGJvLT5zaGFkb3cgJiYKIAkgICAgYm9fb2xkLT5z aGFkb3cgPT0gYm8tPnNoYWRvdykgewogCQlzYW1lX3NoYWRvdyA9IHRydWU7CiAJfQogCiAJaWYg KGJvX29sZCAmJiBib19vbGQtPmlzX3ByaW1hcnkpIHsKIAkJaWYgKCFzYW1lX3NoYWRvdykKIAkJ CXF4bF9pb19kZXN0cm95X3ByaW1hcnkocWRldik7CiAJCWJvX29sZC0+aXNfcHJpbWFyeSA9IGZh bHNlOworCisJCXJldCA9IHF4bF9wcmltYXJ5X2FwcGx5X2N1cnNvcihwbGFuZSk7CisJCWlmIChy ZXQpCisJCQlEUk1fRVJST1IoCisJCQkiY291bGQgbm90IHNldCBjdXJzb3IgYWZ0ZXIgY3JlYXRp bmcgcHJpbWFyeSIpOwogCX0KIAogCWlmICghYm8tPmlzX3ByaW1hcnkpIHsKIAkJaWYgKCFzYW1l X3NoYWRvdykKIAkJCXF4bF9pb19jcmVhdGVfcHJpbWFyeShxZGV2LCAwLCBibyk7CiAJCWJvLT5p c19wcmltYXJ5ID0gdHJ1ZTsKIAl9CiAKIAlxeGxfZHJhd19kaXJ0eV9mYihxZGV2LCBxZmIsIGJv LCAwLCAwLCAmbm9yZWN0LCAxLCAxKTsKIH0KIAogc3RhdGljIHZvaWQgcXhsX3ByaW1hcnlfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJICAgICAgIHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9 IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKG9sZF9zdGF0ZS0+ZmIpIHsKIAkJc3Ry dWN0IHF4bF9mcmFtZWJ1ZmZlciAqcWZiID0KIAkJCXRvX3F4bF9mcmFtZWJ1ZmZlcihvbGRfc3Rh dGUtPmZiKTsKIAkJc3RydWN0IHF4bF9ibyAqYm8gPSBnZW1fdG9fcXhsX2JvKHFmYi0+b2JqKTsK IAogCQlpZiAoYm8tPmlzX3ByaW1hcnkpIHsKIAkJCXF4bF9pb19kZXN0cm95X3ByaW1hcnkocWRl dik7CiAJCQliby0+aXNfcHJpbWFyeSA9IGZhbHNlOwogCQl9CiAJfQogfQogCiBzdGF0aWMgaW50 IHF4bF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJICBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGlj IHZvaWQgcXhsX2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2OwogCXN0cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5z dGF0ZS0+ZmI7CisJc3RydWN0IHF4bF9jcnRjICpxY3J0YyA9IHRvX3F4bF9jcnRjKHBsYW5lLT5z dGF0ZS0+Y3J0Yyk7CiAJc3RydWN0IHF4bF9yZWxlYXNlICpyZWxlYXNlOwogCXN0cnVjdCBxeGxf Y3Vyc29yX2NtZCAqY21kOwogCXN0cnVjdCBxeGxfY3Vyc29yICpjdXJzb3I7CiAJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IHF4bF9ibyAqY3Vyc29yX2JvID0gTlVMTCwgKnVz ZXJfYm8gPSBOVUxMOwogCWludCByZXQ7CiAJdm9pZCAqdXNlcl9wdHI7CiAJaW50IHNpemUgPSA2 NCo2NCo0OwogCiAJcmV0ID0gcXhsX2FsbG9jX3JlbGVhc2VfcmVzZXJ2ZWQocWRldiwgc2l6ZW9m KCpjbWQpLAogCQkJCQkgUVhMX1JFTEVBU0VfQ1VSU09SX0NNRCwKIAkJCQkJICZyZWxlYXNlLCBO VUxMKTsKIAlpZiAocmV0KQogCQlyZXR1cm47CiAKIAlpZiAoZmIgIT0gb2xkX3N0YXRlLT5mYikg ewogCQlvYmogPSB0b19xeGxfZnJhbWVidWZmZXIoZmIpLT5vYmo7CiAJCXVzZXJfYm8gPSBnZW1f dG9fcXhsX2JvKG9iaik7CiAKIAkJLyogcGlubmluZyBpcyBkb25lIGluIHRoZSBwcmVwYXJlL2Ns ZWFudXAgZnJhbWV2YnVmZmVyICovCiAJCXJldCA9IHF4bF9ib19rbWFwKHVzZXJfYm8sICZ1c2Vy X3B0cik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dF9mcmVlX3JlbGVhc2U7CiAKIAkJcmV0ID0g cXhsX2FsbG9jX2JvX3Jlc2VydmVkKHFkZXYsIHJlbGVhc2UsCiAJCQkJCSAgICBzaXplb2Yoc3Ry dWN0IHF4bF9jdXJzb3IpICsgc2l6ZSwKIAkJCQkJICAgICZjdXJzb3JfYm8pOwogCQlpZiAocmV0 KQogCQkJZ290byBvdXRfa3VubWFwOwogCiAJCXJldCA9IHF4bF9yZWxlYXNlX3Jlc2VydmVfbGlz dChyZWxlYXNlLCB0cnVlKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gb3V0X2ZyZWVfYm87CiAKIAkJ cmV0ID0gcXhsX2JvX2ttYXAoY3Vyc29yX2JvLCAodm9pZCAqKikmY3Vyc29yKTsKIAkJaWYgKHJl dCkKIAkJCWdvdG8gb3V0X2JhY2tvZmY7CiAKIAkJY3Vyc29yLT5oZWFkZXIudW5pcXVlID0gMDsK IAkJY3Vyc29yLT5oZWFkZXIudHlwZSA9IFNQSUNFX0NVUlNPUl9UWVBFX0FMUEhBOwogCQljdXJz b3ItPmhlYWRlci53aWR0aCA9IDY0OwogCQljdXJzb3ItPmhlYWRlci5oZWlnaHQgPSA2NDsKIAkJ Y3Vyc29yLT5oZWFkZXIuaG90X3Nwb3RfeCA9IGZiLT5ob3RfeDsKIAkJY3Vyc29yLT5oZWFkZXIu aG90X3Nwb3RfeSA9IGZiLT5ob3RfeTsKIAkJY3Vyc29yLT5kYXRhX3NpemUgPSBzaXplOwogCQlj dXJzb3ItPmNodW5rLm5leHRfY2h1bmsgPSAwOwogCQljdXJzb3ItPmNodW5rLnByZXZfY2h1bmsg PSAwOwogCQljdXJzb3ItPmNodW5rLmRhdGFfc2l6ZSA9IHNpemU7CiAJCW1lbWNweShjdXJzb3It PmNodW5rLmRhdGEsIHVzZXJfcHRyLCBzaXplKTsKIAkJcXhsX2JvX2t1bm1hcChjdXJzb3JfYm8p OwogCQlxeGxfYm9fa3VubWFwKHVzZXJfYm8pOwogCiAJCWNtZCA9IChzdHJ1Y3QgcXhsX2N1cnNv cl9jbWQgKikgcXhsX3JlbGVhc2VfbWFwKHFkZXYsIHJlbGVhc2UpOwogCQljbWQtPnUuc2V0LnZp c2libGUgPSAxOwogCQljbWQtPnUuc2V0LnNoYXBlID0gcXhsX2JvX3BoeXNpY2FsX2FkZHJlc3Mo cWRldiwKIAkJCQkJCQkgICBjdXJzb3JfYm8sIDApOwogCQljbWQtPnR5cGUgPSBRWExfQ1VSU09S X1NFVDsKKworCQlxeGxfYm9fdW5yZWYoJnFjcnRjLT5jdXJzb3JfYm8pOworCQlxY3J0Yy0+Y3Vy c29yX2JvID0gY3Vyc29yX2JvOworCQljdXJzb3JfYm8gPSBOVUxMOwogCX0gZWxzZSB7CiAKIAkJ cmV0ID0gcXhsX3JlbGVhc2VfcmVzZXJ2ZV9saXN0KHJlbGVhc2UsIHRydWUpOwogCQlpZiAocmV0 KQogCQkJZ290byBvdXRfZnJlZV9yZWxlYXNlOwogCiAJCWNtZCA9IChzdHJ1Y3QgcXhsX2N1cnNv cl9jbWQgKikgcXhsX3JlbGVhc2VfbWFwKHFkZXYsIHJlbGVhc2UpOwogCQljbWQtPnR5cGUgPSBR WExfQ1VSU09SX01PVkU7CiAJfQogCiAJY21kLT51LnBvc2l0aW9uLnggPSBwbGFuZS0+c3RhdGUt PmNydGNfeCArIGZiLT5ob3RfeDsKIAljbWQtPnUucG9zaXRpb24ueSA9IHBsYW5lLT5zdGF0ZS0+ Y3J0Y195ICsgZmItPmhvdF95OwogCiAJcXhsX3JlbGVhc2VfdW5tYXAocWRldiwgcmVsZWFzZSwg JmNtZC0+cmVsZWFzZV9pbmZvKTsKIAlxeGxfcHVzaF9jdXJzb3JfcmluZ19yZWxlYXNlKHFkZXYs IHJlbGVhc2UsIFFYTF9DTURfQ1VSU09SLCBmYWxzZSk7CiAJcXhsX3JlbGVhc2VfZmVuY2VfYnVm ZmVyX29iamVjdHMocmVsZWFzZSk7CiAKIAlxeGxfYm9fdW5yZWYgKCZjdXJzb3JfYm8pOwogCiAJ cmV0dXJuOwogCiBvdXRfYmFja29mZjoKIAlxeGxfcmVsZWFzZV9iYWNrb2ZmX3Jlc2VydmVfbGlz dChyZWxlYXNlKTsKIG91dF9mcmVlX2JvOgogCXF4bF9ib191bnJlZigmY3Vyc29yX2JvKTsKIG91 dF9rdW5tYXA6CiAJcXhsX2JvX2t1bm1hcCh1c2VyX2JvKTsKIG91dF9mcmVlX3JlbGVhc2U6CiAJ cXhsX3JlbGVhc2VfZnJlZShxZGV2LCByZWxlYXNlKTsKIAlyZXR1cm47CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Ry di5oCmluZGV4IDA4NzUyYzBmZmIzNS4uMDBhMWE2NmIwNTJhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYu aApAQCAtODQsNjAgKzg0LDYyIEBAIHN0cnVjdCBxeGxfYm8gewogCXN0cnVjdCB0dG1fYm9fa21h cF9vYmoJCWttYXA7CiAJdW5zaWduZWQJCQlwaW5fY291bnQ7CiAJdm9pZAkJCQkqa3B0cjsKIAlp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7CiAKIAkvKiBDb25zdGFudCBhZnRl ciBpbml0aWFsaXphdGlvbiAqLwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdAkJZ2VtX2Jhc2U7CiAJ Ym9vbCBpc19wcmltYXJ5OyAvKiBpcyB0aGlzIG5vdyBhIHByaW1hcnkgc3VyZmFjZSAqLwogCWJv b2wgaXNfZHVtYjsKIAlzdHJ1Y3QgcXhsX2JvICpzaGFkb3c7CiAJYm9vbCBod19zdXJmX2FsbG9j OwogCXN0cnVjdCBxeGxfc3VyZmFjZSBzdXJmOwogCXVpbnQzMl90IHN1cmZhY2VfaWQ7CiAJc3Ry dWN0IHF4bF9yZWxlYXNlICpzdXJmX2NyZWF0ZTsKIH07CiAjZGVmaW5lIGdlbV90b19xeGxfYm8o Z29iaikgY29udGFpbmVyX29mKChnb2JqKSwgc3RydWN0IHF4bF9ibywgZ2VtX2Jhc2UpCiAjZGVm aW5lIHRvX3F4bF9ibyh0b2JqKSBjb250YWluZXJfb2YoKHRvYmopLCBzdHJ1Y3QgcXhsX2JvLCB0 Ym8pCiAKIHN0cnVjdCBxeGxfZ2VtIHsKIAlzdHJ1Y3QgbXV0ZXgJCW11dGV4OwogCXN0cnVjdCBs aXN0X2hlYWQJb2JqZWN0czsKIH07CiAKIHN0cnVjdCBxeGxfYm9fbGlzdCB7CiAJc3RydWN0IHR0 bV92YWxpZGF0ZV9idWZmZXIgdHY7CiB9OwogCiBzdHJ1Y3QgcXhsX2NydGMgewogCXN0cnVjdCBk cm1fY3J0YyBiYXNlOwogCWludCBpbmRleDsKKworCXN0cnVjdCBxeGxfYm8gKmN1cnNvcl9ibzsK IH07CiAKIHN0cnVjdCBxeGxfb3V0cHV0IHsKIAlpbnQgaW5kZXg7CiAJc3RydWN0IGRybV9jb25u ZWN0b3IgYmFzZTsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jOwogfTsKIAogc3RydWN0IHF4bF9m cmFtZWJ1ZmZlciB7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBiYXNlOwogCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqOwogfTsKIAogI2RlZmluZSB0b19xeGxfY3J0Yyh4KSBjb250YWluZXJf b2YoeCwgc3RydWN0IHF4bF9jcnRjLCBiYXNlKQogI2RlZmluZSBkcm1fY29ubmVjdG9yX3RvX3F4 bF9vdXRwdXQoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBxeGxfb3V0cHV0LCBiYXNlKQogI2Rl ZmluZSBkcm1fZW5jb2Rlcl90b19xeGxfb3V0cHV0KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3Qg cXhsX291dHB1dCwgZW5jKQogI2RlZmluZSB0b19xeGxfZnJhbWVidWZmZXIoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBxeGxfZnJhbWVidWZmZXIsIGJhc2UpCiAKIHN0cnVjdCBxeGxfbW1hbiB7 CiAJc3RydWN0IHR0bV9ib19nbG9iYWxfcmVmICAgICAgICBib19nbG9iYWxfcmVmOwogCXN0cnVj dCBkcm1fZ2xvYmFsX3JlZmVyZW5jZQltZW1fZ2xvYmFsX3JlZjsKIAlib29sCQkJCW1lbV9nbG9i YWxfcmVmZXJlbmNlZDsKIAlzdHJ1Y3QgdHRtX2JvX2RldmljZQkJYmRldjsKIH07CiAKIHN0cnVj dCBxeGxfbW9kZV9pbmZvIHsKIAlib29sIG1vZGVfY29uZmlnX2luaXRpYWxpemVkOwogCiAJLyog cG9pbnRlciB0byBmYmRldiBpbmZvIHN0cnVjdHVyZSAqLwogCXN0cnVjdCBxeGxfZmJkZXYgKnFm YmRldjsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==