From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ray Strode Subject: [PATCH 2/2] drm/qxl: reapply cursor after resetting primary Date: Mon, 27 Nov 2017 16:50:10 -0500 Message-ID: <20171127215010.12621-3-halfline@gmail.com> References: <20171127210706.9200-1-halfline@gmail.com> <20171127215010.12621-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-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id B0FFA6E3CA for ; Mon, 27 Nov 2017 21:50:30 +0000 (UTC) Received: by mail-qk0-x242.google.com with SMTP id j202so34515212qke.10 for ; Mon, 27 Nov 2017 13:50:30 -0800 (PST) In-Reply-To: <20171127215010.12621-1-halfline@gmail.com> 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 cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCmluZGV4IDczMzVkOTky NDRkNS4uOWE5MjE0YWUwZmI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9k 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 ZmVyX29iamVjdHMocmVsZWFzZSk7CiAKIAlxeGxfYm9fdW5yZWYoJmN1cnNvcl9ibyk7CiAKIAly ZXR1cm47CiAKIG91dF9iYWNrb2ZmOgogCXF4bF9yZWxlYXNlX2JhY2tvZmZfcmVzZXJ2ZV9saXN0 KHJlbGVhc2UpOwogb3V0X2ZyZWVfYm86CiAJcXhsX2JvX3VucmVmKCZjdXJzb3JfYm8pOwogb3V0 X2t1bm1hcDoKIAlxeGxfYm9fa3VubWFwKHVzZXJfYm8pOwogb3V0X2ZyZWVfcmVsZWFzZToKIAlx eGxfcmVsZWFzZV9mcmVlKHFkZXYsIHJlbGVhc2UpOwogCXJldHVybjsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2 LmgKaW5kZXggMDg3NTJjMGZmYjM1Li4wMGExYTY2YjA1MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9xeGwvcXhsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5o CkBAIC04NCw2MCArODQsNjIgQEAgc3RydWN0IHF4bF9ibyB7CiAJc3RydWN0IHR0bV9ib19rbWFw X29iagkJa21hcDsKIAl1bnNpZ25lZAkJCXBpbl9jb3VudDsKIAl2b2lkCQkJCSprcHRyOwogCWlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTsKIAogCS8qIENvbnN0YW50IGFmdGVy IGluaXRpYWxpemF0aW9uICovCiAJc3RydWN0IGRybV9nZW1fb2JqZWN0CQlnZW1fYmFzZTsKIAli b29sIGlzX3ByaW1hcnk7IC8qIGlzIHRoaXMgbm93IGEgcHJpbWFyeSBzdXJmYWNlICovCiAJYm9v bCBpc19kdW1iOwogCXN0cnVjdCBxeGxfYm8gKnNoYWRvdzsKIAlib29sIGh3X3N1cmZfYWxsb2M7 CiAJc3RydWN0IHF4bF9zdXJmYWNlIHN1cmY7CiAJdWludDMyX3Qgc3VyZmFjZV9pZDsKIAlzdHJ1 Y3QgcXhsX3JlbGVhc2UgKnN1cmZfY3JlYXRlOwogfTsKICNkZWZpbmUgZ2VtX3RvX3F4bF9ibyhn b2JqKSBjb250YWluZXJfb2YoKGdvYmopLCBzdHJ1Y3QgcXhsX2JvLCBnZW1fYmFzZSkKICNkZWZp bmUgdG9fcXhsX2JvKHRvYmopIGNvbnRhaW5lcl9vZigodG9iaiksIHN0cnVjdCBxeGxfYm8sIHRi bykKIAogc3RydWN0IHF4bF9nZW0gewogCXN0cnVjdCBtdXRleAkJbXV0ZXg7CiAJc3RydWN0IGxp c3RfaGVhZAlvYmplY3RzOwogfTsKIAogc3RydWN0IHF4bF9ib19saXN0IHsKIAlzdHJ1Y3QgdHRt X3ZhbGlkYXRlX2J1ZmZlciB0djsKIH07CiAKIHN0cnVjdCBxeGxfY3J0YyB7CiAJc3RydWN0IGRy bV9jcnRjIGJhc2U7CiAJaW50IGluZGV4OworCisJc3RydWN0IHF4bF9ibyAqY3Vyc29yX2JvOwog fTsKIAogc3RydWN0IHF4bF9vdXRwdXQgewogCWludCBpbmRleDsKIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciBiYXNlOwogCXN0cnVjdCBkcm1fZW5jb2RlciBlbmM7CiB9OwogCiBzdHJ1Y3QgcXhsX2Zy YW1lYnVmZmVyIHsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGJhc2U7CiAJc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmo7CiB9OwogCiAjZGVmaW5lIHRvX3F4bF9jcnRjKHgpIGNvbnRhaW5lcl9v Zih4LCBzdHJ1Y3QgcXhsX2NydGMsIGJhc2UpCiAjZGVmaW5lIGRybV9jb25uZWN0b3JfdG9fcXhs X291dHB1dCh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IHF4bF9vdXRwdXQsIGJhc2UpCiAjZGVm aW5lIGRybV9lbmNvZGVyX3RvX3F4bF9vdXRwdXQoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBx eGxfb3V0cHV0LCBlbmMpCiAjZGVmaW5lIHRvX3F4bF9mcmFtZWJ1ZmZlcih4KSBjb250YWluZXJf b2YoeCwgc3RydWN0IHF4bF9mcmFtZWJ1ZmZlciwgYmFzZSkKIAogc3RydWN0IHF4bF9tbWFuIHsK IAlzdHJ1Y3QgdHRtX2JvX2dsb2JhbF9yZWYgICAgICAgIGJvX2dsb2JhbF9yZWY7CiAJc3RydWN0 IGRybV9nbG9iYWxfcmVmZXJlbmNlCW1lbV9nbG9iYWxfcmVmOwogCWJvb2wJCQkJbWVtX2dsb2Jh bF9yZWZlcmVuY2VkOwogCXN0cnVjdCB0dG1fYm9fZGV2aWNlCQliZGV2OwogfTsKIAogc3RydWN0 IHF4bF9tb2RlX2luZm8gewogCWJvb2wgbW9kZV9jb25maWdfaW5pdGlhbGl6ZWQ7CiAKIAkvKiBw b2ludGVyIHRvIGZiZGV2IGluZm8gc3RydWN0dXJlICovCiAJc3RydWN0IHF4bF9mYmRldiAqcWZi ZGV2OwotLSAKMi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK