From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v3 02/22] drm/fb-cma-helper: Use drm_gem_framebuffer_helper Date: Sun, 13 Aug 2017 15:31:45 +0200 Message-ID: <1502631125-13557-3-git-send-email-noralf@tronnes.org> References: <1502631125-13557-1-git-send-email-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.domeneshop.no (smtp.domeneshop.no [IPv6:2a01:5b40:0:3005::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24F2F6E076 for ; Sun, 13 Aug 2017 13:32:27 +0000 (UTC) In-Reply-To: <1502631125-13557-1-git-send-email-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: narmstrong@baylibre.com, daniel.vetter@ffwll.ch, liviu.dudau@arm.com, laurent.pinchart@ideasonboard.com, marex@denx.de, boris.brezillon@free-electrons.com, abrodkin@synopsys.com, z.liuxinliang@hisilicon.com, kong.kongxinwei@hisilicon.com, tomi.valkeinen@ti.com, puck.chen@hisilicon.com, jsarha@ti.com, vincent.abriou@st.com, alison.wang@freescale.com, philippe.cornu@st.com, yannick.fertre@st.com, zourongrong@gmail.com, maxime.ripard@free-electrons.com, shawnguo@kernel.org List-Id: dri-devel@lists.freedesktop.org VXNlIHRoZSBuZXcgZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIgd2hvJ3MgY29kZSB3YXMgY29w aWVkCmZyb20gdGhpcyBoZWxwZXIuCgpTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5v cmFsZkB0cm9ubmVzLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIu YyB8IDE4MSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAzMCBpbnNlcnRpb25zKCspLCAxNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2NtYV9oZWxwZXIuYwppbmRleCBhZGUzMTlkLi5lMWJlZmVlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2NtYV9oZWxwZXIuYwpAQCAtMTgsMjcgKzE4LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPGRybS9k cm1QLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2Ny dGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgotI2luY2x1ZGUgPGRybS9kcm1f Y3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZyYW1lYnVmZmVyLmg+CiAjaW5jbHVk ZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1l YnVmZmVyX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgotI2lu Y2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgog I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+ CiAKICNkZWZpbmUgREVGQVVMVF9GQkRFRklPX0RFTEFZX01TIDUwCiAKLXN0cnVjdCBkcm1fZmJf Y21hIHsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyCQlmYjsKLQlzdHJ1Y3QgZHJtX2dlbV9jbWFf b2JqZWN0CSpvYmpbNF07Ci19OwotCiBzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSB7CiAJc3RydWN0IGRy bV9mYl9oZWxwZXIJZmJfaGVscGVyOwotCXN0cnVjdCBkcm1fZmJfY21hCSpmYjsKIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpmYl9mdW5jczsKIH07CiAKQEAgLTkwLDY5ICs4 MCwxOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZmJkZXZfY21hICp0b19mYmRldl9jbWEo c3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlcikKIAlyZXR1cm4gY29udGFpbmVyX29mKGhlbHBl ciwgc3RydWN0IGRybV9mYmRldl9jbWEsIGZiX2hlbHBlcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUg c3RydWN0IGRybV9mYl9jbWEgKnRvX2ZiX2NtYShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikK LXsKLQlyZXR1cm4gY29udGFpbmVyX29mKGZiLCBzdHJ1Y3QgZHJtX2ZiX2NtYSwgZmIpOwotfQot CiB2b2lkIGRybV9mYl9jbWFfZGVzdHJveShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKIHsK LQlzdHJ1Y3QgZHJtX2ZiX2NtYSAqZmJfY21hID0gdG9fZmJfY21hKGZiKTsKLQlpbnQgaTsKLQot CWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKLQkJaWYgKGZiX2NtYS0+b2JqW2ldKQotCQkJZHJt X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZmYl9jbWEtPm9ialtpXS0+YmFzZSk7Ci0JfQotCi0J ZHJtX2ZyYW1lYnVmZmVyX2NsZWFudXAoZmIpOwotCWtmcmVlKGZiX2NtYSk7CisJZHJtX2dlbV9m Yl9kZXN0cm95KGZiKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2NtYV9kZXN0cm95KTsKIAog aW50IGRybV9mYl9jbWFfY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK IAlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgdW5zaWduZWQgaW50ICpoYW5kbGUpCiB7Ci0J c3RydWN0IGRybV9mYl9jbWEgKmZiX2NtYSA9IHRvX2ZiX2NtYShmYik7Ci0KLQlyZXR1cm4gZHJt X2dlbV9oYW5kbGVfY3JlYXRlKGZpbGVfcHJpdiwKLQkJCSZmYl9jbWEtPm9ialswXS0+YmFzZSwg aGFuZGxlKTsKKwlyZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGVfaGFuZGxlKGZiLCBmaWxlX3ByaXYs IGhhbmRsZSk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9jbWFfY3JlYXRlX2hhbmRsZSk7CiAK LXN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIGRybV9mYl9jbWFfZnVuY3MgPSB7 Ci0JLmRlc3Ryb3kJPSBkcm1fZmJfY21hX2Rlc3Ryb3ksCi0JLmNyZWF0ZV9oYW5kbGUJPSBkcm1f ZmJfY21hX2NyZWF0ZV9oYW5kbGUsCi19OwotCi1zdGF0aWMgc3RydWN0IGRybV9mYl9jbWEgKmRy bV9mYl9jbWFfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQljb25zdCBzdHJ1Y3QgZHJt X21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCi0Jc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqKm9i aiwKLQl1bnNpZ25lZCBpbnQgbnVtX3BsYW5lcywgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl cl9mdW5jcyAqZnVuY3MpCi17Ci0Jc3RydWN0IGRybV9mYl9jbWEgKmZiX2NtYTsKLQlpbnQgcmV0 OwotCWludCBpOwotCi0JZmJfY21hID0ga3phbGxvYyhzaXplb2YoKmZiX2NtYSksIEdGUF9LRVJO RUwpOwotCWlmICghZmJfY21hKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQotCWRybV9o ZWxwZXJfbW9kZV9maWxsX2ZiX3N0cnVjdChkZXYsICZmYl9jbWEtPmZiLCBtb2RlX2NtZCk7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BsYW5lczsgaSsrKQotCQlmYl9jbWEtPm9ialtpXSA9IG9i altpXTsKLQotCXJldCA9IGRybV9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJmZiX2NtYS0+ZmIsIGZ1 bmNzKTsKLQlpZiAocmV0KSB7Ci0JCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8gaW5pdGlh bGl6ZSBmcmFtZWJ1ZmZlcjogJWRcbiIsIHJldCk7Ci0JCWtmcmVlKGZiX2NtYSk7Ci0JCXJldHVy biBFUlJfUFRSKHJldCk7Ci0JfQotCi0JcmV0dXJuIGZiX2NtYTsKLX0KLQogLyoqCiAgKiBkcm1f ZmJfY21hX2NyZWF0ZV93aXRoX2Z1bmNzKCkgLSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQogICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRybV9tb2RlX2NvbmZpZ19mdW5jcy5m Yl9jcmVhdGUKQEAgLTE3MCw1MyArMTEwLDcgQEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZHJt X2ZiX2NtYV9jcmVhdGVfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LCBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9k ZV9jbWQsCiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3MpCiB7Ci0J Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKLQlzdHJ1Y3QgZHJtX2ZiX2NtYSAq ZmJfY21hOwotCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9ianNbNF07Ci0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Ci0JaW50IHJldDsKLQlpbnQgaTsKLQotCWluZm8gPSBkcm1fZ2V0 X2Zvcm1hdF9pbmZvKGRldiwgbW9kZV9jbWQpOwotCWlmICghaW5mbykKLQkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX3BsYW5lczsgaSsrKSB7 Ci0JCXVuc2lnbmVkIGludCB3aWR0aCA9IG1vZGVfY21kLT53aWR0aCAvIChpID8gaW5mby0+aHN1 YiA6IDEpOwotCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gbW9kZV9jbWQtPmhlaWdodCAvIChpID8g aW5mby0+dnN1YiA6IDEpOwotCQl1bnNpZ25lZCBpbnQgbWluX3NpemU7Ci0KLQkJb2JqID0gZHJt X2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgbW9kZV9jbWQtPmhhbmRsZXNbaV0pOwotCQlp ZiAoIW9iaikgewotCQkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBsb29rdXAgR0VNIG9i amVjdFxuIik7Ci0JCQlyZXQgPSAtRU5PRU5UOwotCQkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7 Ci0JCX0KLQotCQltaW5fc2l6ZSA9IChoZWlnaHQgLSAxKSAqIG1vZGVfY21kLT5waXRjaGVzW2ld Ci0JCQkgKyB3aWR0aCAqIGluZm8tPmNwcFtpXQotCQkJICsgbW9kZV9jbWQtPm9mZnNldHNbaV07 Ci0KLQkJaWYgKG9iai0+c2l6ZSA8IG1pbl9zaXplKSB7Ci0JCQlkcm1fZ2VtX29iamVjdF9wdXRf dW5sb2NrZWQob2JqKTsKLQkJCXJldCA9IC1FSU5WQUw7Ci0JCQlnb3RvIGVycl9nZW1fb2JqZWN0 X3B1dDsKLQkJfQotCQlvYmpzW2ldID0gdG9fZHJtX2dlbV9jbWFfb2JqKG9iaik7Ci0JfQotCi0J ZmJfY21hID0gZHJtX2ZiX2NtYV9hbGxvYyhkZXYsIG1vZGVfY21kLCBvYmpzLCBpLCBmdW5jcyk7 Ci0JaWYgKElTX0VSUihmYl9jbWEpKSB7Ci0JCXJldCA9IFBUUl9FUlIoZmJfY21hKTsKLQkJZ290 byBlcnJfZ2VtX29iamVjdF9wdXQ7Ci0JfQotCi0JcmV0dXJuICZmYl9jbWEtPmZiOwotCi1lcnJf Z2VtX29iamVjdF9wdXQ6Ci0JZm9yIChpLS07IGkgPj0gMDsgaS0tKQotCQlkcm1fZ2VtX29iamVj dF9wdXRfdW5sb2NrZWQoJm9ianNbaV0tPmJhc2UpOwotCXJldHVybiBFUlJfUFRSKHJldCk7CisJ cmV0dXJuIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3MoZGV2LCBmaWxlX3ByaXYsIG1vZGVf Y21kLCBmdW5jcyk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2NyZWF0ZV93aXRo X2Z1bmNzKTsKIApAQCAtMjMzLDggKzEyNyw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9j bWFfY3JlYXRlX3dpdGhfZnVuY3MpOwogc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZHJtX2ZiX2Nt YV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdiwgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQogewotCXJldHVy biBkcm1fZmJfY21hX2NyZWF0ZV93aXRoX2Z1bmNzKGRldiwgZmlsZV9wcml2LCBtb2RlX2NtZCwK LQkJCQkJICAgICZkcm1fZmJfY21hX2Z1bmNzKTsKKwlyZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGUo ZGV2LCBmaWxlX3ByaXYsIG1vZGVfY21kKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9j bWFfY3JlYXRlKTsKIApAQCAtMjUwLDEyICsxNDMsMTQgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJt X2ZiX2NtYV9jcmVhdGUpOwogc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZHJtX2ZiX2NtYV9n ZXRfZ2VtX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJCQkJCSAgdW5zaWduZWQg aW50IHBsYW5lKQogewotCXN0cnVjdCBkcm1fZmJfY21hICpmYl9jbWEgPSB0b19mYl9jbWEoZmIp OworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtOwogCi0JaWYgKHBsYW5lID49IDQpCisJZ2Vt ID0gZHJtX2dlbV9mYl9nZXRfb2JqKGZiLCBwbGFuZSk7CisJaWYgKCFnZW0pCiAJCXJldHVybiBO VUxMOwogCi0JcmV0dXJuIGZiX2NtYS0+b2JqW3BsYW5lXTsKKwlyZXR1cm4gdG9fZHJtX2dlbV9j bWFfb2JqKGdlbSk7CisKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZ2V0X2dlbV9v YmopOwogCkBAIC0yNzIsMTMgKzE2NywxNCBAQCBkbWFfYWRkcl90IGRybV9mYl9jbWFfZ2V0X2dl bV9hZGRyKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCQkJCSAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnN0YXRlLAogCQkJCSAgIHVuc2lnbmVkIGludCBwbGFuZSkKIHsKLQlzdHJ1Y3Qg ZHJtX2ZiX2NtYSAqZmJfY21hID0gdG9fZmJfY21hKGZiKTsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFf b2JqZWN0ICpvYmo7CiAJZG1hX2FkZHJfdCBwYWRkcjsKIAotCWlmIChwbGFuZSA+PSA0KQorCW9i aiA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIHBsYW5lKTsKKwlpZiAoIW9iaikKIAkJcmV0 dXJuIDA7CiAKLQlwYWRkciA9IGZiX2NtYS0+b2JqW3BsYW5lXS0+cGFkZHIgKyBmYi0+b2Zmc2V0 c1twbGFuZV07CisJcGFkZHIgPSBvYmotPnBhZGRyICsgZmItPm9mZnNldHNbcGxhbmVdOwogCXBh ZGRyICs9IGZiLT5mb3JtYXQtPmNwcFtwbGFuZV0gKiAoc3RhdGUtPnNyY194ID4+IDE2KTsKIAlw YWRkciArPSBmYi0+cGl0Y2hlc1twbGFuZV0gKiAoc3RhdGUtPnNyY195ID4+IDE2KTsKIApAQCAt MzAyLDI2ICsxOTgsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2ZiX2NtYV9nZXRfZ2VtX2Fk ZHIpOwogaW50IGRybV9mYl9jbWFfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRtYV9idWYg KmRtYV9idWY7Ci0Jc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Ci0KLQlpZiAoKHBsYW5lLT5zdGF0 ZS0+ZmIgPT0gc3RhdGUtPmZiKSB8fCAhc3RhdGUtPmZiKQotCQlyZXR1cm4gMDsKLQotCWRtYV9i dWYgPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKHN0YXRlLT5mYiwgMCktPmJhc2UuZG1hX2J1ZjsK LQlpZiAoZG1hX2J1ZikgewotCQlmZW5jZSA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbF9y Y3UoZG1hX2J1Zi0+cmVzdik7Ci0JCWRybV9hdG9taWNfc2V0X2ZlbmNlX2Zvcl9wbGFuZShzdGF0 ZSwgZmVuY2UpOwotCX0KLQotCXJldHVybiAwOworCXJldHVybiBkcm1fZ2VtX2ZiX3ByZXBhcmVf ZmIocGxhbmUsIHN0YXRlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfcHJlcGFy ZV9mYik7CiAKICNpZmRlZiBDT05GSUdfREVCVUdfRlMKIHN0YXRpYyB2b2lkIGRybV9mYl9jbWFf ZGVzY3JpYmUoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHN0cnVjdCBzZXFfZmlsZSAqbSkK IHsKLQlzdHJ1Y3QgZHJtX2ZiX2NtYSAqZmJfY21hID0gdG9fZmJfY21hKGZiKTsKIAlpbnQgaTsK IAogCXNlcV9wcmludGYobSwgImZiOiAlZHglZEAlNC40c1xuIiwgZmItPndpZHRoLCBmYi0+aGVp Z2h0LApAQCAtMzMwLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIGRybV9mYl9jbWFfZGVzY3JpYmUo c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIAlmb3IgKGkg PSAwOyBpIDwgZmItPmZvcm1hdC0+bnVtX3BsYW5lczsgaSsrKSB7CiAJCXNlcV9wcmludGYobSwg IiAgICVkOiBvZmZzZXQ9JWQgcGl0Y2g9JWQsIG9iajogIiwKIAkJCQlpLCBmYi0+b2Zmc2V0c1tp XSwgZmItPnBpdGNoZXNbaV0pOwotCQlkcm1fZ2VtX2NtYV9kZXNjcmliZShmYl9jbWEtPm9ialtp XSwgbSk7CisJCWRybV9nZW1fY21hX2Rlc2NyaWJlKGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIs IGkpLCBtKTsKIAl9CiB9CiAKQEAgLTQzMSw3ICszMTQsNiBAQCBkcm1fZmJkZXZfY21hX2NyZWF0 ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCXN0cnVjdCBkcm1fZmJfaGVscGVyX3N1 cmZhY2Vfc2l6ZSAqc2l6ZXMpCiB7CiAJc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYSA9 IHRvX2ZiZGV2X2NtYShoZWxwZXIpOwotCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIG1vZGVfY21k ID0geyAwIH07CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGhlbHBlci0+ZGV2OwogCXN0cnVj dCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsK QEAgLTQ0NiwxNCArMzI4LDcgQEAgZHJtX2ZiZGV2X2NtYV9jcmVhdGUoc3RydWN0IGRybV9mYl9o ZWxwZXIgKmhlbHBlciwKIAkJCXNpemVzLT5zdXJmYWNlX2JwcCk7CiAKIAlieXRlc19wZXJfcGl4 ZWwgPSBESVZfUk9VTkRfVVAoc2l6ZXMtPnN1cmZhY2VfYnBwLCA4KTsKLQotCW1vZGVfY21kLndp ZHRoID0gc2l6ZXMtPnN1cmZhY2Vfd2lkdGg7Ci0JbW9kZV9jbWQuaGVpZ2h0ID0gc2l6ZXMtPnN1 cmZhY2VfaGVpZ2h0OwotCW1vZGVfY21kLnBpdGNoZXNbMF0gPSBzaXplcy0+c3VyZmFjZV93aWR0 aCAqIGJ5dGVzX3Blcl9waXhlbDsKLQltb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9s ZWdhY3lfZmJfZm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwKLQkJc2l6ZXMtPnN1cmZhY2VfZGVw dGgpOwotCi0Jc2l6ZSA9IG1vZGVfY21kLnBpdGNoZXNbMF0gKiBtb2RlX2NtZC5oZWlnaHQ7CisJ c2l6ZSA9IHNpemVzLT5zdXJmYWNlX3dpZHRoICogc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0ICogYnl0 ZXNfcGVyX3BpeGVsOwogCW9iaiA9IGRybV9nZW1fY21hX2NyZWF0ZShkZXYsIHNpemUpOwogCWlm IChJU19FUlIob2JqKSkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00NjQsMTUgKzMzOSwxNCBAQCBk cm1fZmJkZXZfY21hX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCQlnb3Rv IGVycl9nZW1fZnJlZV9vYmplY3Q7CiAJfQogCi0JZmJkZXZfY21hLT5mYiA9IGRybV9mYl9jbWFf YWxsb2MoZGV2LCAmbW9kZV9jbWQsICZvYmosIDEsCi0JCQkJCSBmYmRldl9jbWEtPmZiX2Z1bmNz KTsKLQlpZiAoSVNfRVJSKGZiZGV2X2NtYS0+ZmIpKSB7CisJZmIgPSBkcm1fZ2VtX2ZiZGV2X2Zi X2NyZWF0ZShkZXYsIHNpemVzLCAwLCAmb2JqLT5iYXNlLAorCQkJCSAgICAgZmJkZXZfY21hLT5m Yl9mdW5jcyk7CisJaWYgKElTX0VSUihmYikpIHsKIAkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxl ZCB0byBhbGxvY2F0ZSBEUk0gZnJhbWVidWZmZXIuXG4iKTsKLQkJcmV0ID0gUFRSX0VSUihmYmRl dl9jbWEtPmZiKTsKKwkJcmV0ID0gUFRSX0VSUihmYik7CiAJCWdvdG8gZXJyX2ZiX2luZm9fZGVz dHJveTsKIAl9CiAKLQlmYiA9ICZmYmRldl9jbWEtPmZiLT5mYjsKIAloZWxwZXItPmZiID0gZmI7 CiAKIAlmYmktPnBhciA9IGhlbHBlcjsKQEAgLTUwMCw3ICszNzQsNyBAQCBkcm1fZmJkZXZfY21h X2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCXJldHVybiAwOwogCiBlcnJf Y21hX2Rlc3Ryb3k6Ci0JZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZSgmZmJkZXZfY21hLT5mYi0+ZmIp OworCWRybV9mcmFtZWJ1ZmZlcl9yZW1vdmUoZmIpOwogZXJyX2ZiX2luZm9fZGVzdHJveToKIAlk cm1fZmJfaGVscGVyX2ZpbmkoaGVscGVyKTsKIGVycl9nZW1fZnJlZV9vYmplY3Q6CkBAIC01NzAs NiArNDQ0LDExIEBAIHN0cnVjdCBkcm1fZmJkZXZfY21hICpkcm1fZmJkZXZfY21hX2luaXRfd2l0 aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogRVhQT1JUX1NZTUJPTF9HUEwoZHJt X2ZiZGV2X2NtYV9pbml0X3dpdGhfZnVuY3MpOwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlcl9mdW5jcyBkcm1fZmJfY21hX2Z1bmNzID0geworCS5kZXN0cm95CT0gZHJtX2dl bV9mYl9kZXN0cm95LAorCS5jcmVhdGVfaGFuZGxlCT0gZHJtX2dlbV9mYl9jcmVhdGVfaGFuZGxl LAorfTsKKwogLyoqCiAgKiBkcm1fZmJkZXZfY21hX2luaXQoKSAtIEFsbG9jYXRlIGFuZCBpbml0 aWFsaXplcyBhIGRybV9mYmRldl9jbWEgc3RydWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC01 OTcsOCArNDc2LDggQEAgdm9pZCBkcm1fZmJkZXZfY21hX2Zpbmkoc3RydWN0IGRybV9mYmRldl9j bWEgKmZiZGV2X2NtYSkKIAlpZiAoZmJkZXZfY21hLT5mYl9oZWxwZXIuZmJkZXYpCiAJCWRybV9m YmRldl9jbWFfZGVmaW9fZmluaShmYmRldl9jbWEtPmZiX2hlbHBlci5mYmRldik7CiAKLQlpZiAo ZmJkZXZfY21hLT5mYikKLQkJZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZSgmZmJkZXZfY21hLT5mYi0+ ZmIpOworCWlmIChmYmRldl9jbWEtPmZiX2hlbHBlci5mYikKKwkJZHJtX2ZyYW1lYnVmZmVyX3Jl bW92ZShmYmRldl9jbWEtPmZiX2hlbHBlci5mYik7CiAKIAlkcm1fZmJfaGVscGVyX2ZpbmkoJmZi ZGV2X2NtYS0+ZmJfaGVscGVyKTsKIAlrZnJlZShmYmRldl9jbWEpOwotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=