From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC v4 08/25] drm/fb-helper: Use struct drm_client_display Date: Sat, 14 Apr 2018 13:53:01 +0200 Message-ID: <20180414115318.14500-9-noralf@tronnes.org> References: <20180414115318.14500-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180414115318.14500-1-noralf@tronnes.org> 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: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UHJlcGFyZSB0byBtb3ZlIHRoZSBtb2Rlc2V0IGNvbW1pdHRpbmcgY29kZSB0byBkcm1fY2xpZW50 LgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8IDE2MSArKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggICAg IHwgICA4ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IDJlZWYyNGRiMjFmOC4uYmRiNGI1N2Qy YzEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8ZHJt L2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVudC5oPgogI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjX2hlbHBlci5oPgpAQCAtMzIxLDEzICszMjIsMTQgQEAgc3RhdGljIGJvb2wgZHJtX2Zi X2hlbHBlcl9wYW5lbF9yb3RhdGlvbihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAog CXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdmUpCitzdGF0aWMgaW50 IGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3JlX2F0b21pYyhzdHJ1Y3QgZHJtX2NsaWVudF9kaXNw bGF5ICpkaXNwbGF5LCBib29sIGFjdGl2ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZmJfaGVscGVyLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRpc3BsYXktPmRldjsK IAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2RlX3NldDsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGU7Ci0JaW50IGksIHJldDsKKwlpbnQgcmV0OwogCXVuc2lnbmVkIGlu dCBwbGFuZV9tYXNrOwogCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAKQEAg LTM2Myw4ICszNjUsNyBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdgogCQkJZ290byBvdXRfc3Rh dGU7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7 Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZv W2ldLm1vZGVfc2V0OworCWRybV9jbGllbnRfZGlzcGxheV9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVf c2V0LCBkaXNwbGF5KSB7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBtb2RlX3NldC0+ Y3J0Yy0+cHJpbWFyeTsKIAkJdW5zaWduZWQgaW50IHJvdGF0aW9uOwogCkBAIC00MTIsMTMgKzQx MywxNCBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdgogCWdvdG8gcmV0cnk7CiB9CiAKLXN0YXRp YyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyKQorc3RhdGljIGludCBkcm1fY2xpZW50X2Rpc3BsYXlfcmVzdG9yZV9sZWdhY3koc3Ry dWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZmJfaGVscGVyLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRpc3BsYXkt PmRldjsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3NldDsKIAlzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZTsKLQlpbnQgaSwgcmV0ID0gMDsKKwlpbnQgcmV0ID0gMDsKIAotCWRybV9tb2Rlc2V0 X2xvY2tfYWxsKGZiX2hlbHBlci0+ZGV2KTsKKwlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwog CWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2KSB7CiAJCWlmIChwbGFuZS0+dHlwZSAhPSBE Uk1fUExBTkVfVFlQRV9QUklNQVJZKQogCQkJZHJtX3BsYW5lX2ZvcmNlX2Rpc2FibGUocGxhbmUp OwpAQCAtNDI5LDggKzQzMSw3IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2xlZ2Fj eShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogCQkJCQkJICAgIERSTV9NT0RFX1JP VEFURV8wKTsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBp KyspIHsKLQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQgPSAmZmJfaGVscGVyLT5jcnRj X2luZm9baV0ubW9kZV9zZXQ7CisJZHJtX2NsaWVudF9kaXNwbGF5X2Zvcl9lYWNoX21vZGVzZXQo bW9kZV9zZXQsIGRpc3BsYXkpIHsKIAkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQt PmNydGM7CiAKIAkJaWYgKGNydGMtPmZ1bmNzLT5jdXJzb3Jfc2V0MikgewpAQCAtNDQ4LDE5ICs0 NDksMTcgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfbGVnYWN5KHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCQlnb3RvIG91dDsKIAl9CiBvdXQ6Ci0JZHJtX21vZGVz ZXRfdW5sb2NrX2FsbChmYl9oZWxwZXItPmRldik7CisJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChk ZXYpOwogCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGUo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKK3N0YXRpYyBpbnQgZHJtX2NsaWVudF9k aXNwbGF5X3Jlc3RvcmUoc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheSkKIHsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Ci0KLQlpZiAoZHJtX2Rydl91 c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCi0JCXJldHVybiByZXN0b3JlX2ZiZGV2X21vZGVfYXRv bWljKGZiX2hlbHBlciwgdHJ1ZSk7CisJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChk aXNwbGF5LT5kZXYpKQorCQlyZXR1cm4gZHJtX2NsaWVudF9kaXNwbGF5X3Jlc3RvcmVfYXRvbWlj KGRpc3BsYXksIHRydWUpOwogCWVsc2UKLQkJcmV0dXJuIHJlc3RvcmVfZmJkZXZfbW9kZV9sZWdh Y3koZmJfaGVscGVyKTsKKwkJcmV0dXJuIGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3JlX2xlZ2Fj eShkaXNwbGF5KTsKIH0KIAogLyoqCkBAIC00ODYsNyArNDg1LDcgQEAgaW50IGRybV9mYl9oZWxw ZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIpCiAJCXJldHVybiAwOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKLQly ZXQgPSByZXN0b3JlX2ZiZGV2X21vZGUoZmJfaGVscGVyKTsKKwlyZXQgPSBkcm1fY2xpZW50X2Rp c3BsYXlfcmVzdG9yZShmYl9oZWxwZXItPmRpc3BsYXkpOwogCiAJZG9fZGVsYXllZCA9IGZiX2hl bHBlci0+ZGVsYXllZF9ob3RwbHVnOwogCWlmIChkb19kZWxheWVkKQpAQCAtNTQ4LDcgKzU0Nyw3 IEBAIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfZm9yY2Vfa2VybmVsX21vZGUodm9pZCkKIAkJ CWNvbnRpbnVlOwogCiAJCW11dGV4X2xvY2soJmhlbHBlci0+bG9jayk7Ci0JCXJldCA9IHJlc3Rv cmVfZmJkZXZfbW9kZShoZWxwZXIpOworCQlyZXQgPSBkcm1fY2xpZW50X2Rpc3BsYXlfcmVzdG9y ZShoZWxwZXItPmRpc3BsYXkpOwogCQlpZiAocmV0KQogCQkJZXJyb3IgPSB0cnVlOwogCQltdXRl eF91bmxvY2soJmhlbHBlci0+bG9jayk7CkBAIC01ODAsMjIgKzU3OSwyMCBAQCBzdGF0aWMgc3Ry dWN0IHN5c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3AgPSB7CiBzdGF0 aWMgc3RydWN0IHN5c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3AgPSB7 IH07CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgZHBtc19sZWdhY3koc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciwgaW50IGRwbXNfbW9kZSkKK3N0YXRpYyB2b2lkIGRybV9jbGllbnRfZGlz cGxheV9kcG1zX2xlZ2FjeShzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5ICpkaXNwbGF5LCBpbnQg ZHBtc19tb2RlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlzcGxheS0+ZGV2OwogCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CiAJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKLQlpbnQg aSwgajsKKwlpbnQgaTsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Ci0JZm9yIChpID0g MDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCW1vZGVzZXQgPSAmZmJfaGVs cGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Ci0KKwlkcm1fY2xpZW50X2Rpc3BsYXlfZm9yX2Vh Y2hfbW9kZXNldChtb2Rlc2V0LCBkaXNwbGF5KSB7CiAJCWlmICghbW9kZXNldC0+Y3J0Yy0+ZW5h YmxlZCkKIAkJCWNvbnRpbnVlOwogCi0JCWZvciAoaiA9IDA7IGogPCBtb2Rlc2V0LT5udW1fY29u bmVjdG9yczsgaisrKSB7Ci0JCQljb25uZWN0b3IgPSBtb2Rlc2V0LT5jb25uZWN0b3JzW2pdOwor CQlmb3IgKGkgPSAwOyBpIDwgbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnM7IGkrKykgeworCQkJY29u bmVjdG9yID0gbW9kZXNldC0+Y29ubmVjdG9yc1tpXTsKIAkJCWNvbm5lY3Rvci0+ZnVuY3MtPmRw bXMoY29ubmVjdG9yLCBkcG1zX21vZGUpOwogCQkJZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFs dWUoJmNvbm5lY3Rvci0+YmFzZSwKIAkJCQlkZXYtPm1vZGVfY29uZmlnLmRwbXNfcHJvcGVydHks IGRwbXNfbW9kZSk7CkBAIC02MDQsMjMgKzYwMSwyMSBAQCBzdGF0aWMgdm9pZCBkcG1zX2xlZ2Fj eShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgZHBtc19tb2RlKQogCWRybV9t b2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKIH0KIAorc3RhdGljIHZvaWQgZHJtX2NsaWVudF9kaXNw bGF5X2RwbXMoc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheSwgaW50IG1vZGUpCit7 CisJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkaXNwbGF5LT5kZXYpKQorCQlkcm1f Y2xpZW50X2Rpc3BsYXlfcmVzdG9yZV9hdG9taWMoZGlzcGxheSwgbW9kZSA9PSBEUk1fTU9ERV9E UE1TX09OKTsKKwllbHNlCisJCWRybV9jbGllbnRfZGlzcGxheV9kcG1zX2xlZ2FjeShkaXNwbGF5 LCBtb2RlKTsKK30KKwogc3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9kcG1zKHN0cnVjdCBmYl9p bmZvICppbmZvLCBpbnQgZHBtc19tb2RlKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIgPSBpbmZvLT5wYXI7CiAKLQkvKgotCSAqIEZvciBlYWNoIENSVEMgaW4gdGhpcyBmYiwg dHVybiB0aGUgY29ubmVjdG9ycyBvbi9vZmYuCi0JICovCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVy LT5sb2NrKTsKLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewotCQlt dXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZiAoZHJt X2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGZiX2hlbHBlci0+ZGV2KSkKLQkJcmVzdG9yZV9mYmRl dl9tb2RlX2F0b21pYyhmYl9oZWxwZXIsIGRwbXNfbW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKTsK LQllbHNlCi0JCWRwbXNfbGVnYWN5KGZiX2hlbHBlciwgZHBtc19tb2RlKTsKKwlpZiAoZHJtX2Zi X2hlbHBlcl9pc19ib3VuZChmYl9oZWxwZXIpKQorCQlkcm1fY2xpZW50X2Rpc3BsYXlfZHBtcyhm Yl9oZWxwZXItPmRpc3BsYXksIGRwbXNfbW9kZSk7CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXIt PmxvY2spOwogfQogCkBAIC04MTEsNiArODA2LDEwIEBAIGludCBkcm1fZmJfaGVscGVyX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaSsrOwogCX0KIAorCWZiX2hlbHBlci0+ZGlzcGxh eSA9IGRybV9jbGllbnRfZGlzcGxheV9jcmVhdGUoZGV2KTsKKwlpZiAoSVNfRVJSKGZiX2hlbHBl ci0+ZGlzcGxheSkpCisJCWdvdG8gb3V0X2ZyZWU7CisKIAlkZXYtPmZiX2hlbHBlciA9IGZiX2hl bHBlcjsKIAogCXJldHVybiAwOwpAQCAtOTE5LDYgKzkxOCw3IEBAIHZvaWQgZHJtX2ZiX2hlbHBl cl9maW5pKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJbXV0ZXhfdW5sb2NrKCZr ZXJuZWxfZmJfaGVscGVyX2xvY2spOwogCiAJbXV0ZXhfZGVzdHJveSgmZmJfaGVscGVyLT5sb2Nr KTsKKwlkcm1fY2xpZW50X2Rpc3BsYXlfZnJlZShmYl9oZWxwZXItPmRpc3BsYXkpOwogCWRybV9m Yl9oZWxwZXJfY3J0Y19mcmVlKGZiX2hlbHBlcik7CiAKIH0KQEAgLTEyNjUsMTMgKzEyNjUsMTQg QEAgc3RhdGljIGludCBzZXRjbWFwX3BzZXVkb19wYWxldHRlKHN0cnVjdCBmYl9jbWFwICpjbWFw LCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHN0YXRpYyBpbnQgc2V0Y21hcF9sZWdhY3koc3RydWN0 IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCXN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZXNldDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJdTE2ICpyLCAqZywgKmI7Ci0JaW50IGks IHJldCA9IDA7CisJaW50IHJldCA9IDA7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxw ZXItPmRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7 Ci0JCWNydGMgPSBmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9j bGllbnRfZGlzcGxheV9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGZiX2hlbHBlci0+ZGlzcGxh eSkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAkJaWYgKCFjcnRjLT5mdW5jcy0+Z2FtbWFf c2V0IHx8ICFjcnRjLT5nYW1tYV9zaXplKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTEzNDcs OSArMTM0OCwxMCBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRvbWljKHN0cnVjdCBmYl9jbWFwICpj bWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9j dHggY3R4OwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJdTE2ICpyLCAqZywgKmI7Ci0JaW50IGksIHJldCA9IDA7 CisJaW50IHJldCA9IDA7CiAJYm9vbCByZXBsYWNlZDsKIAogCWRybV9tb2Rlc2V0X2FjcXVpcmVf aW5pdCgmY3R4LCAwKTsKQEAgLTEzNjIsOCArMTM2NCw4IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9h dG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogCiAJc3Rh dGUtPmFjcXVpcmVfY3R4ID0gJmN0eDsKIHJldHJ5OgotCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxw ZXItPmNydGNfY291bnQ7IGkrKykgewotCQljcnRjID0gZmJfaGVscGVyLT5jcnRjX2luZm9baV0u bW9kZV9zZXQuY3J0YzsKKwlkcm1fY2xpZW50X2Rpc3BsYXlfZm9yX2VhY2hfbW9kZXNldChtb2Rl c2V0LCBmYl9oZWxwZXItPmRpc3BsYXkpIHsKKwkJY3J0YyA9IG1vZGVzZXQtPmNydGM7CiAKIAkJ aWYgKCFnYW1tYV9sdXQpCiAJCQlnYW1tYV9sdXQgPSBzZXRjbWFwX25ld19nYW1tYV9sdXQoY3J0 YywgY21hcCk7CkBAIC0xMzkxLDggKzEzOTMsOCBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRvbWlj KHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAlpZiAocmV0KQog CQlnb3RvIG91dF9zdGF0ZTsKIAotCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291 bnQ7IGkrKykgewotCQljcnRjID0gZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQuY3J0 YzsKKwlkcm1fY2xpZW50X2Rpc3BsYXlfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBmYl9oZWxw ZXItPmRpc3BsYXkpIHsKKwkJY3J0YyA9IG1vZGVzZXQtPmNydGM7CiAKIAkJciA9IGNydGMtPmdh bW1hX3N0b3JlOwogCQlnID0gciArIGNydGMtPmdhbW1hX3NpemU7CkBAIC0xNDY4LDcgKzE0NzAs NiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWdu ZWQgaW50IGNtZCwKIAkJCXVuc2lnbmVkIGxvbmcgYXJnKQogewogCXN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7Ci0Jc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9z ZXQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWludCByZXQgPSAwOwogCkBAIC0xNDk2LDgg KzE0OTcsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywg dW5zaWduZWQgaW50IGNtZCwKIAkJICogbWFrZS4gSWYgd2UncmUgbm90IHNtYXJ0IGVub3VnaCBo ZXJlLCBvbmUgc2hvdWxkCiAJCSAqIGp1c3QgY29uc2lkZXIgc3dpdGNoIHRoZSB1c2Vyc3BhY2Ug dG8gS01TLgogCQkgKi8KLQkJbW9kZV9zZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9bMF0ubW9k ZV9zZXQ7Ci0JCWNydGMgPSBtb2RlX3NldC0+Y3J0YzsKKwkJY3J0YyA9IGZiX2hlbHBlci0+ZGlz cGxheS0+bW9kZXNldHNbMF0uY3J0YzsKIAogCQkvKgogCQkgKiBPbmx5IHdhaXQgZm9yIGEgdmJs YW5rIGV2ZW50IGlmIHRoZSBDUlRDIGlzCkBAIC0xNjUxLDEzICsxNjUxLDkgQEAgRVhQT1JUX1NZ TUJPTChkcm1fZmJfaGVscGVyX3NldF9wYXIpOwogCiBzdGF0aWMgdm9pZCBwYW5fc2V0KHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGludCB4LCBpbnQgeSkKIHsKLQlpbnQgaTsKLQot CWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICptb2RlX3NldDsKLQotCQltb2RlX3NldCA9ICZmYl9oZWxwZXItPmNydGNf aW5mb1tpXS5tb2RlX3NldDsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3NldDsKIAorCWRy bV9jbGllbnRfZGlzcGxheV9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBmYl9oZWxwZXItPmRp c3BsYXkpIHsKIAkJbW9kZV9zZXQtPnggPSB4OwogCQltb2RlX3NldC0+eSA9IHk7CiAJfQpAQCAt MTY3MSw3ICsxNjY3LDcgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9hdG9taWMoc3RydWN0IGZi X3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAKIAlwYW5fc2V0KGZiX2hlbHBlciwgdmFyLT54b2Zmc2V0 LCB2YXItPnlvZmZzZXQpOwogCi0JcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhmYl9o ZWxwZXIsIHRydWUpOworCXJldCA9IGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3JlKGZiX2hlbHBl ci0+ZGlzcGxheSk7CiAJaWYgKCFyZXQpIHsKIAkJaW5mby0+dmFyLnhvZmZzZXQgPSB2YXItPnhv ZmZzZXQ7CiAJCWluZm8tPnZhci55b2Zmc2V0ID0gdmFyLT55b2Zmc2V0OwpAQCAtMTY4NywxMiAr MTY4Myw5IEBAIHN0YXRpYyBpbnQgcGFuX2Rpc3BsYXlfbGVnYWN5KHN0cnVjdCBmYl92YXJfc2Ny ZWVuaW5mbyAqdmFyLAogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5w YXI7CiAJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlpbnQgcmV0ID0gMDsKLQlpbnQg aTsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGZiX2hlbHBlci0+ZGV2KTsKLQlmb3IgKGkgPSAw OyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJbW9kZXNldCA9ICZmYl9oZWxw ZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldDsKLQorCWRybV9jbGllbnRfZGlzcGxheV9mb3JfZWFj aF9tb2Rlc2V0KG1vZGVzZXQsIGZiX2hlbHBlci0+ZGlzcGxheSkgewogCQltb2Rlc2V0LT54ID0g dmFyLT54b2Zmc2V0OwogCQltb2Rlc2V0LT55ID0gdmFyLT55b2Zmc2V0OwogCkBAIC0xNzUxLDYg KzE3NDQsNyBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJaW50IGNydGNfY291bnQgPSAwOwogCWludCBp OwogCXN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSBzaXplczsKKwlzdHJ1Y3QgZHJt X21vZGVfc2V0ICptb2RlX3NldDsKIAlpbnQgZ2FtbWFfc2l6ZSA9IDA7CiAKIAltZW1zZXQoJnNp emVzLCAwLCBzaXplb2Yoc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplKSk7CkBAIC0x Nzk1LDkgKzE3ODksOCBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2Jl KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJfQogCiAJY3J0Y19jb3VudCA9IDA7 Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7CisJZHJtX2Ns aWVudF9kaXNwbGF5X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGZiX2hlbHBlci0+ZGlzcGxh eSkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZGVzaXJlZF9tb2RlOwotCQlzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICptb2RlX3NldDsKIAkJaW50IHgsIHksIGo7CiAJCS8qIGluIGNhc2Ugb2Yg dGlsZSBncm91cCwgYXJlIHdlIHRoZSBsYXN0IHRpbGUgdmVydCBvciBob3Jpej8KIAkJICogSWYg bm8gdGlsZSBncm91cCB5b3UgYXJlIGFsd2F5cyB0aGUgbGFzdCBvbmUgYm90aCB2ZXJ0aWNhbGx5 CkBAIC0xODA1LDE5ICsxNzk4LDE4IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVf ZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJICovCiAJCWJvb2wg bGFzdHYgPSB0cnVlLCBsYXN0aCA9IHRydWU7CiAKLQkJZGVzaXJlZF9tb2RlID0gZmJfaGVscGVy LT5jcnRjX2luZm9baV0uZGVzaXJlZF9tb2RlOwotCQltb2RlX3NldCA9ICZmYl9oZWxwZXItPmNy dGNfaW5mb1tpXS5tb2RlX3NldDsKKwkJZGVzaXJlZF9tb2RlID0gbW9kZV9zZXQtPm1vZGU7CiAK IAkJaWYgKCFkZXNpcmVkX21vZGUpCiAJCQljb250aW51ZTsKIAogCQljcnRjX2NvdW50Kys7CiAK LQkJeCA9IGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLng7Ci0JCXkgPSBmYl9oZWxwZXItPmNydGNf aW5mb1tpXS55OworCQl4ID0gbW9kZV9zZXQtPng7CisJCXkgPSBtb2RlX3NldC0+eTsKIAogCQlp ZiAoZ2FtbWFfc2l6ZSA9PSAwKQotCQkJZ2FtbWFfc2l6ZSA9IGZiX2hlbHBlci0+Y3J0Y19pbmZv W2ldLm1vZGVfc2V0LmNydGMtPmdhbW1hX3NpemU7CisJCQlnYW1tYV9zaXplID0gbW9kZV9zZXQt PmNydGMtPmdhbW1hX3NpemU7CiAKIAkJc2l6ZXMuc3VyZmFjZV93aWR0aCAgPSBtYXhfdCh1MzIs IGRlc2lyZWRfbW9kZS0+aGRpc3BsYXkgKyB4LCBzaXplcy5zdXJmYWNlX3dpZHRoKTsKIAkJc2l6 ZXMuc3VyZmFjZV9oZWlnaHQgPSBtYXhfdCh1MzIsIGRlc2lyZWRfbW9kZS0+dmRpc3BsYXkgKyB5 LCBzaXplcy5zdXJmYWNlX2hlaWdodCk7CkBAIC0xODQ0LDcgKzE4MzYsNyBAQCBzdGF0aWMgaW50 IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIsCiAKIAkJLyogRmlyc3QgdGltZTogZGlzYWJsZSBhbGwgY3J0YydzLi4gKi8KIAkJaWYg KCFmYl9oZWxwZXItPmRlZmVycmVkX3NldHVwICYmICFSRUFEX09OQ0UoZmJfaGVscGVyLT5kZXYt Pm1hc3RlcikpCi0JCQlyZXN0b3JlX2ZiZGV2X21vZGUoZmJfaGVscGVyKTsKKwkJCWRybV9jbGll bnRfZGlzcGxheV9yZXN0b3JlKGZiX2hlbHBlci0+ZGlzcGxheSk7CiAJCXJldHVybiAtRUFHQUlO OwogCX0KIApAQCAtMjM3OSw2ICsyMzcxLDcgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkgICAgdTMyIHdpZHRoLCB1MzIg aGVpZ2h0KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlz dHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5ICpkaXNwbGF5OwogCXN0cnVjdCBkcm1fZmJfaGVscGVy X2NydGMgKipjcnRjczsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzOwogCXN0cnVj dCBkcm1fZmJfb2Zmc2V0ICpvZmZzZXRzOwpAQCAtMjQwMiw2ICsyMzk1LDEwIEBAIHN0YXRpYyB2 b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQln b3RvIG91dDsKIAl9CiAKKwlkaXNwbGF5ID0gZHJtX2NsaWVudF9kaXNwbGF5X2NyZWF0ZShkZXYp OworCWlmIChJU19FUlIoZGlzcGxheSkpCisJCWdvdG8gb3V0OworCiAJbXV0ZXhfbG9jaygmZmJf aGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAlpZiAoZHJtX2ZiX2hlbHBlcl9wcm9i ZV9jb25uZWN0b3JfbW9kZXMoZmJfaGVscGVyLCB3aWR0aCwgaGVpZ2h0KSA9PSAwKQogCQlEUk1f REVCVUdfS01TKCJObyBjb25uZWN0b3JzIHJlcG9ydGVkIGNvbm5lY3RlZCB3aXRoIG1vZGVzXG4i KTsKQEAgLTI0NDAsMjQgKzI0MzcsMjkgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCXN0cnVjdCBkcm1fZmJfb2Zmc2V0ICpv ZmZzZXQgPSAmb2Zmc2V0c1tpXTsKIAogCQlpZiAobW9kZSAmJiBmYl9jcnRjKSB7Ci0JCQlzdHJ1 Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0ID0gJmZiX2NydGMtPm1vZGVfc2V0OwogCQkJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9CiAJCQkJZmJfaGVscGVyLT5jb25uZWN0b3JfaW5m b1tpXS0+Y29ubmVjdG9yOworCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKKworCQkJ bW9kZXNldCA9IGRybV9jbGllbnRfZGlzcGxheV9maW5kX21vZGVzZXQoZGlzcGxheSwgZmJfY3J0 Yy0+bW9kZV9zZXQuY3J0Yyk7CisJCQlpZiAoV0FSTl9PTighbW9kZXNldCkpIHsKKwkJCQlkcm1f Y2xpZW50X2Rpc3BsYXlfZnJlZShkaXNwbGF5KTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KIAogCQkJ RFJNX0RFQlVHX0tNUygiZGVzaXJlZCBtb2RlICVzIHNldCBvbiBjcnRjICVkICglZCwlZClcbiIs Ci0JCQkJICAgICAgbW9kZS0+bmFtZSwgZmJfY3J0Yy0+bW9kZV9zZXQuY3J0Yy0+YmFzZS5pZCwg b2Zmc2V0LT54LCBvZmZzZXQtPnkpOworCQkJCSAgICAgIG1vZGUtPm5hbWUsIG1vZGVzZXQtPmNy dGMtPmJhc2UuaWQsIG9mZnNldC0+eCwgb2Zmc2V0LT55KTsKIAotCQkJZmJfY3J0Yy0+ZGVzaXJl ZF9tb2RlID0gbW9kZTsKLQkJCWZiX2NydGMtPnggPSBvZmZzZXQtPng7Ci0JCQlmYl9jcnRjLT55 ID0gb2Zmc2V0LT55OwotCQkJbW9kZXNldC0+bW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkZXYs Ci0JCQkJCQkJICAgZmJfY3J0Yy0+ZGVzaXJlZF9tb2RlKTsKKwkJCW1vZGVzZXQtPm1vZGUgPSBk cm1fbW9kZV9kdXBsaWNhdGUoZGV2LCBtb2RlKTsKIAkJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5l Y3Rvcik7CiAJCQltb2Rlc2V0LT5jb25uZWN0b3JzW21vZGVzZXQtPm51bV9jb25uZWN0b3JzKytd ID0gY29ubmVjdG9yOwogCQkJbW9kZXNldC0+eCA9IG9mZnNldC0+eDsKIAkJCW1vZGVzZXQtPnkg PSBvZmZzZXQtPnk7CiAJCX0KIAl9CisKKwlkcm1fY2xpZW50X2Rpc3BsYXlfZnJlZShmYl9oZWxw ZXItPmRpc3BsYXkpOworCWZiX2hlbHBlci0+ZGlzcGxheSA9IGRpc3BsYXk7CiBvdXQ6CiAJa2Zy ZWUoY3J0Y3MpOwogCWtmcmVlKG1vZGVzKTsKQEAgLTI0NzYsMTEgKzI0NzgsMTAgQEAgc3RhdGlj IHZvaWQgZHJtX3NldHVwX2NydGNzX2ZiKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIp CiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSBmYl9oZWxwZXItPmZiZGV2OwogCXVuc2lnbmVk IGludCByb3RhdGlvbiwgc3dfcm90YXRpb25zID0gMDsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICpt b2Rlc2V0OwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3Vu dDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQgPSAmZmJfaGVscGVyLT5j cnRjX2luZm9baV0ubW9kZV9zZXQ7Ci0KKwlkcm1fY2xpZW50X2Rpc3BsYXlfZm9yX2VhY2hfbW9k ZXNldChtb2Rlc2V0LCBmYl9oZWxwZXItPmRpc3BsYXkpIHsKIAkJaWYgKCFtb2Rlc2V0LT5udW1f Y29ubmVjdG9ycykKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f ZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKaW5kZXggZDFlNDVjODMy Y2Q1Li5lMmRmNDBhZDUwNjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKQEAgLTE1NSw2ICsxNTUsMTQgQEAg c3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yIHsKIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsK IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owor CisJLyoqCisJICogQGRpc3BsYXk6CisJICoKKwkgKiBEaXNwbGF5IHJlcHJlc2VudGF0aW9uLgor CSAqLworCXN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXk7CisKIAlpbnQgY3J0Y19j b3VudDsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpjcnRjX2luZm87CiAJaW50IGNvbm5l Y3Rvcl9jb3VudDsKLS0gCjIuMTUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==