From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v3 01/22] drm: Add GEM backed framebuffer library Date: Sun, 13 Aug 2017 15:31:44 +0200 Message-ID: <1502631125-13557-2-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 7B5D06E076 for ; Sun, 13 Aug 2017 13:32:26 +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 VGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGhlbHBlcnMgZm9yIGRyaXZlcnMgdGhhdCBkb24ndCBzdWJj bGFzcwpkcm1fZnJhbWVidWZmZXIgYW5kIGFyZSBiYWNrZWQgYnkgZHJtX2dlbV9vYmplY3QuIFRo ZSBjb2RlIGlzCnRha2VuIGZyb20gZHJtX2ZiX2NtYV9oZWxwZXIuCgpTaWduZWQtb2ZmLWJ5OiBO b3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KUmV2aWV3ZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogRG9jdW1lbnRhdGlvbi9ncHUvZHJt LWttcy1oZWxwZXJzLnJzdCAgICAgICAgfCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2Zy YW1lYnVmZmVyX2hlbHBlci5jIHwgMjgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmggICAgICAgICAgICAgICAgfCAgIDcgKwogaW5jbHVk ZS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaCAgICAgfCAgMzcgKysrKwogNSBmaWxl cyBjaGFuZ2VkLCAzMzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaAoK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1 bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4IDdjNWUyNTQuLjEzZGQyMzcg MTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysrIGIv RG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdApAQCAtMjk2LDMgKzI5NiwxMiBA QCBBdXhpbGlhcnkgTW9kZXNldCBIZWxwZXJzCiAKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dw dS9kcm0vZHJtX21vZGVzZXRfaGVscGVyLmMKICAgIDpleHBvcnQ6CisKK0ZyYW1lYnVmZmVyIEdF TSBIZWxwZXIgUmVmZXJlbmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisu LiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVy LmMKKyAgIDpkb2M6IG92ZXJ2aWV3CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuYworICAgOmV4cG9ydDoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAy NGEwNjZlLi5hOGFjYzE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysr IGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0zMyw3ICszMyw3IEBAIGRybV9rbXNfaGVs cGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxw ZXIubyBcCiAJCWRybV9wbGFuZV9oZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0 b21pY19oZWxwZXIubyBcCiAJCWRybV9rbXNfaGVscGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21v ZGVfaGVscGVyLm8gXAogCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxw ZXIubyBcCi0JCWRybV9zY2RjX2hlbHBlci5vCisJCWRybV9zY2RjX2hlbHBlci5vIGRybV9nZW1f ZnJhbWVidWZmZXJfaGVscGVyLm8KIAogZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVM X0JSSURHRSkgKz0gYnJpZGdlL3BhbmVsLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9M T0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4wNjhhNjMwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9n ZW1fZnJhbWVidWZmZXJfaGVscGVyLmMKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBkcm0gZ2Vt IGZyYW1lYnVmZmVyIGhlbHBlciBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg Tm9yYWxmIFRyw7hubmVzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisj aW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgor I2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgor CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2ZyYW1lYnVmZmVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0u aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX21vZGVzZXRfaGVscGVyLmg+CisKKy8qKgorICogRE9DOiBvdmVydmlldworICoK KyAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBoZWxwZXJzIGZvciBkcml2ZXJzIHRoYXQgZG9uJ3Qg c3ViY2xhc3MKKyAqICZkcm1fZnJhbWVidWZmZXIgYW5kIGFuZCB1c2UgJmRybV9nZW1fb2JqZWN0 IGZvciB0aGVpciBiYWNraW5nIHN0b3JhZ2UuCisgKgorICogRHJpdmVycyB3aXRob3V0IGFkZGl0 aW9uYWwgbmVlZHMgdG8gdmFsaWRhdGUgZnJhbWVidWZmZXJzIGNhbiBzaW1wbHkgdXNlCisgKiBk cm1fZ2VtX2ZiX2NyZWF0ZSgpIGFuZCBldmVyeXRoaW5nIGlzIHdpcmVkIHVwIGF1dG9tYXRpY2Fs bHkuIEJ1dCBhbGwKKyAqIHBhcnRzIGNhbiBiZSB1c2VkIGluZGl2aWR1YWxseS4KKyAqLworCisv KioKKyAqIGRybV9nZW1fZmJfZ2V0X29iaigpIC0gR2V0IEdFTSBvYmplY3QgZm9yIGZyYW1lYnVm ZmVyCisgKiBAZmI6IFRoZSBmcmFtZWJ1ZmZlcgorICogQHBsYW5lOiBXaGljaCBwbGFuZQorICoK KyAqIFJldHVybnMgdGhlIEdFTSBvYmplY3QgZm9yIGdpdmVuIGZyYW1lYnVmZmVyLgorICovCitz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fZmJfZ2V0X29iaihzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKKwkJCQkJICB1bnNpZ25lZCBpbnQgcGxhbmUpCit7CisJaWYgKHBsYW5lID49 IDQpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIGZiLT5vYmpbcGxhbmVdOworfQorRVhQT1JU X1NZTUJPTF9HUEwoZHJtX2dlbV9mYl9nZXRfb2JqKTsKKworc3RhdGljIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKgorZHJtX2dlbV9mYl9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAorCQkgc3RydWN0IGRybV9n ZW1fb2JqZWN0ICoqb2JqLCB1bnNpZ25lZCBpbnQgbnVtX3BsYW5lcywKKwkJIGNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQoreworCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiOworCWludCByZXQsIGk7CisKKwlmYiA9IGt6YWxsb2Moc2l6ZW9mKCpmYiksIEdGUF9L RVJORUwpOworCWlmICghZmIpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJZHJtX2hl bHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KGRldiwgZmIsIG1vZGVfY21kKTsKKworCWZvciAoaSA9 IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspCisJCWZiLT5vYmpbaV0gPSBvYmpbaV07CisKKwlyZXQg PSBkcm1fZnJhbWVidWZmZXJfaW5pdChkZXYsIGZiLCBmdW5jcyk7CisJaWYgKHJldCkgeworCQlE Uk1fREVWX0VSUk9SKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGluaXQgZnJhbWVidWZmZXI6ICVkXG4i LAorCQkJICAgICAgcmV0KTsKKwkJa2ZyZWUoZmIpOworCQlyZXR1cm4gRVJSX1BUUihyZXQpOwor CX0KKworCXJldHVybiBmYjsKK30KKworLyoqCisgKiBkcm1fZ2VtX2ZiX2Rlc3Ryb3kgLSBGcmVl IEdFTSBiYWNrZWQgZnJhbWVidWZmZXIKKyAqIEBmYjogRFJNIGZyYW1lYnVmZmVyCisgKgorICog RnJlZXMgYSBHRU0gYmFja2VkIGZyYW1lYnVmZmVyIHdpdGggaXQncyBiYWNraW5nIGJ1ZmZlcihz KSBhbmQgdGhlIHN0cnVjdHVyZQorICogaXRzZWxmLiBEcml2ZXJzIGNhbiB1c2UgdGhpcyBhcyB0 aGVpciAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLT5kZXN0cm95CisgKiBjYWxsYmFjay4KKyAqLwor dm9pZCBkcm1fZ2VtX2ZiX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCit7CisJ aW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCQlkcm1fZ2VtX29iamVjdF9wdXRf dW5sb2NrZWQoZmItPm9ialtpXSk7CisKKwlkcm1fZnJhbWVidWZmZXJfY2xlYW51cChmYik7CisJ a2ZyZWUoZmIpOworfQorRVhQT1JUX1NZTUJPTChkcm1fZ2VtX2ZiX2Rlc3Ryb3kpOworCisvKioK KyAqIGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSAtIENyZWF0ZSBoYW5kbGUgZm9yIEdFTSBiYWNr ZWQgZnJhbWVidWZmZXIKKyAqIEBmYjogRFJNIGZyYW1lYnVmZmVyCisgKiBAZmlsZTogZHJtIGZp bGUKKyAqIEBoYW5kbGU6IGhhbmRsZSBjcmVhdGVkCisgKgorICogRHJpdmVycyBjYW4gdXNlIHRo aXMgYXMgdGhlaXIgJmRybV9mcmFtZWJ1ZmZlcl9mdW5jcy0+Y3JlYXRlX2hhbmRsZQorICogY2Fs bGJhY2suCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZShz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkJICAg ICB1bnNpZ25lZCBpbnQgKmhhbmRsZSkKK3sKKwlyZXR1cm4gZHJtX2dlbV9oYW5kbGVfY3JlYXRl KGZpbGUsIGZiLT5vYmpbMF0sIGhhbmRsZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9nZW1fZmJf Y3JlYXRlX2hhbmRsZSk7CisKKy8qKgorICogZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcygp IC0gaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZkcm1fbW9kZV9jb25maWdfZnVuY3MuZmJfY3JlYXRlCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaworICogQGRldjogRFJNIGRldmljZQorICogQGZp bGU6IGRybSBmaWxlIGZvciB0aGUgaW9jdGwgY2FsbAorICogQG1vZGVfY21kOiBtZXRhZGF0YSBm cm9tIHRoZSB1c2Vyc3BhY2UgZmIgY3JlYXRpb24gcmVxdWVzdAorICogQGZ1bmNzOiB2dGFibGUg dG8gYmUgdXNlZCBmb3IgdGhlIG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QKKyAqCisgKiBUaGlzIGNh biBiZSB1c2VkIHRvIHNldCAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIGZvciBkcml2ZXJzIHRoYXQg bmVlZCB0aGUKKyAqICZkcm1fZnJhbWVidWZmZXJfZnVuY3MuZGlydHkgY2FsbGJhY2suIFVzZSBk cm1fZ2VtX2ZiX2NyZWF0ZSgpIGlmIHlvdSBkb24ndAorICogbmVlZCB0byBjaGFuZ2UgJmRybV9m cmFtZWJ1ZmZlcl9mdW5jcy4KKyAqIFRoZSBmdW5jdGlvbiBkb2VzIGJ1ZmZlciBzaXplIHZhbGlk YXRpb24uCisgKi8KK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgorZHJtX2dlbV9mYl9jcmVhdGVf d2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUs CisJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKKwkJCSAg ICAgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3MpCit7CisJY29uc3Qg c3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i anNbNF07CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CisJaW50IHJldCwgaTsKKworCWlu Zm8gPSBkcm1fZ2V0X2Zvcm1hdF9pbmZvKGRldiwgbW9kZV9jbWQpOworCWlmICghaW5mbykKKwkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX3Bs YW5lczsgaSsrKSB7CisJCXVuc2lnbmVkIGludCB3aWR0aCA9IG1vZGVfY21kLT53aWR0aCAvIChp ID8gaW5mby0+aHN1YiA6IDEpOworCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gbW9kZV9jbWQtPmhl aWdodCAvIChpID8gaW5mby0+dnN1YiA6IDEpOworCQl1bnNpZ25lZCBpbnQgbWluX3NpemU7CisK KwkJb2Jqc1tpXSA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBtb2RlX2NtZC0+aGFuZGxl c1tpXSk7CisJCWlmICghb2Jqc1tpXSkgeworCQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgIkZh aWxlZCB0byBsb29rdXAgR0VNXG4iKTsKKwkJCXJldCA9IC1FTk9FTlQ7CisJCQlnb3RvIGVycl9n ZW1fb2JqZWN0X3B1dDsKKwkJfQorCisJCW1pbl9zaXplID0gKGhlaWdodCAtIDEpICogbW9kZV9j bWQtPnBpdGNoZXNbaV0KKwkJCSArIHdpZHRoICogaW5mby0+Y3BwW2ldCisJCQkgKyBtb2RlX2Nt ZC0+b2Zmc2V0c1tpXTsKKworCQlpZiAob2Jqc1tpXS0+c2l6ZSA8IG1pbl9zaXplKSB7CisJCQlk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2Jqc1tpXSk7CisJCQlyZXQgPSAtRUlOVkFMOwor CQkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7CisJCX0KKwl9CisKKwlmYiA9IGRybV9nZW1fZmJf YWxsb2MoZGV2LCBtb2RlX2NtZCwgb2JqcywgaSwgZnVuY3MpOworCWlmIChJU19FUlIoZmIpKSB7 CisJCXJldCA9IFBUUl9FUlIoZmIpOworCQlnb3RvIGVycl9nZW1fb2JqZWN0X3B1dDsKKwl9CisK KwlyZXR1cm4gZmI7CisKK2Vycl9nZW1fb2JqZWN0X3B1dDoKKwlmb3IgKGktLTsgaSA+PSAwOyBp LS0pCisJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmpzW2ldKTsKKworCXJldHVybiBF UlJfUFRSKHJldCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRo X2Z1bmNzKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgZHJt X2dlbV9mYl9mdW5jcyA9IHsKKwkuZGVzdHJveQk9IGRybV9nZW1fZmJfZGVzdHJveSwKKwkuY3Jl YXRlX2hhbmRsZQk9IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSwKK307CisKKy8qKgorICogZHJt X2dlbV9mYl9jcmVhdGUoKSAtICZkcm1fbW9kZV9jb25maWdfZnVuY3MuZmJfY3JlYXRlIGNhbGxi YWNrIGZ1bmN0aW9uCisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAZmlsZTogZHJtIGZpbGUgZm9y IHRoZSBpb2N0bCBjYWxsCisgKiBAbW9kZV9jbWQ6IG1ldGFkYXRhIGZyb20gdGhlIHVzZXJzcGFj ZSBmYiBjcmVhdGlvbiByZXF1ZXN0CisgKgorICogSWYgeW91ciBoYXJkd2FyZSBoYXMgc3BlY2lh bCBhbGlnbm1lbnQgb3IgcGl0Y2ggcmVxdWlyZW1lbnRzIHRoZXNlIHNob3VsZCBiZQorICogY2hl Y2tlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gZG9lcyBidWZm ZXIgc2l6ZQorICogdmFsaWRhdGlvbi4gVXNlIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3Mo KSBpZiB5b3UgbmVlZCB0byBzZXQKKyAqICZkcm1fZnJhbWVidWZmZXJfZnVuY3MuZGlydHkuCisg Ki8KK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgorZHJtX2dlbV9mYl9jcmVhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkgIGNvbnN0IHN0cnVjdCBk cm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCkKK3sKKwlyZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGVf d2l0aF9mdW5jcyhkZXYsIGZpbGUsIG1vZGVfY21kLAorCQkJCQkgICAgJmRybV9nZW1fZmJfZnVu Y3MpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9mYl9jcmVhdGUpOworCisvKioKKyAq IGRybV9nZW1fZmJfcHJlcGFyZV9mYigpIC0gUHJlcGFyZSBnZW0gZnJhbWVidWZmZXIKKyAqIEBw bGFuZTogV2hpY2ggcGxhbmUKKyAqIEBzdGF0ZTogUGxhbmUgc3RhdGUgYXR0YWNoIGZlbmNlIHRv CisgKgorICogVGhpcyBjYW4gYmUgdXNlZCBhcyB0aGUgJmRybV9wbGFuZV9oZWxwZXJfZnVuY3Mu cHJlcGFyZV9mYiBob29rLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBwbGFu ZSBGQiBoYXMgYW4gZG1hLWJ1ZiBhdHRhY2hlZCwgZXh0cmFjdHMKKyAqIHRoZSBleGNsdXNpdmUg ZmVuY2UgYW5kIGF0dGFjaGVzIGl0IHRvIHBsYW5lIHN0YXRlIGZvciB0aGUgYXRvbWljIGhlbHBl cgorICogdG8gd2FpdCBvbi4KKyAqCisgKiBUaGVyZSBpcyBubyBuZWVkIGZvciAmZHJtX3BsYW5l X2hlbHBlcl9mdW5jcy5jbGVhbnVwX2ZiIGhvb2sgZm9yIHNpbXBsZQorICogZ2VtIGJhc2VkIGZy YW1lYnVmZmVyIGRyaXZlcnMgd2hpY2ggaGF2ZSB0aGVpciBidWZmZXJzIGFsd2F5cyBwaW5uZWQg aW4KKyAqIG1lbW9yeS4KKyAqLworaW50IGRybV9nZW1fZmJfcHJlcGFyZV9mYihzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKKwkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJ c3RydWN0IGRtYV9idWYgKmRtYV9idWY7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisKKwlp ZiAoKHBsYW5lLT5zdGF0ZS0+ZmIgPT0gc3RhdGUtPmZiKSB8fCAhc3RhdGUtPmZiKQorCQlyZXR1 cm4gMDsKKworCWRtYV9idWYgPSBkcm1fZ2VtX2ZiX2dldF9vYmooc3RhdGUtPmZiLCAwKS0+ZG1h X2J1ZjsKKwlpZiAoZG1hX2J1ZikgeworCQlmZW5jZSA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRf ZXhjbF9yY3UoZG1hX2J1Zi0+cmVzdik7CisJCWRybV9hdG9taWNfc2V0X2ZlbmNlX2Zvcl9wbGFu ZShzdGF0ZSwgZmVuY2UpOworCX0KKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwo ZHJtX2dlbV9mYl9wcmVwYXJlX2ZiKTsKKworLyoqCisgKiBkcm1fZ2VtX2ZiZGV2X2ZiX2NyZWF0 ZSAtIENyZWF0ZSBhIGRybV9mcmFtZWJ1ZmZlciBmb3IgZmJkZXYgZW11bGF0aW9uCisgKiBAZGV2 OiBEUk0gZGV2aWNlCisgKiBAc2l6ZXM6IGZiZGV2IHNpemUgZGVzY3JpcHRpb24KKyAqIEBwaXRj aF9hbGlnbjogb3B0aW9uYWwgcGl0Y2ggYWxpZ25tZW50CisgKiBAb2JqOiBHRU0gb2JqZWN0IGJh Y2tpbmcgdGhlIGZyYW1lYnVmZmVyCisgKiBAZnVuY3M6IHZ0YWJsZSB0byBiZSB1c2VkIGZvciB0 aGUgbmV3IGZyYW1lYnVmZmVyIG9iamVjdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBh IGZyYW1lYnVmZmVyIGZvciB1c2Ugd2l0aCBmYmRldiBlbXVsYXRpb24uCisgKgorICogUmV0dXJu czoKKyAqIFBvaW50ZXIgdG8gYSBkcm1fZnJhbWVidWZmZXIgb24gc3VjY2VzcyBvciBhbiBlcnJv ciBwb2ludGVyIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgorZHJt X2dlbV9mYmRldl9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCXN0cnVjdCBk cm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMsCisJCQl1bnNpZ25lZCBpbnQgcGl0Y2hf YWxpZ24sIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQkJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3MpCit7CisJc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgbW9k ZV9jbWQgPSB7IDAgfTsKKworCW1vZGVfY21kLndpZHRoID0gc2l6ZXMtPnN1cmZhY2Vfd2lkdGg7 CisJbW9kZV9jbWQuaGVpZ2h0ID0gc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0OworCW1vZGVfY21kLnBp dGNoZXNbMF0gPSBzaXplcy0+c3VyZmFjZV93aWR0aCAqCisJCQkgICAgICBESVZfUk9VTkRfVVAo c2l6ZXMtPnN1cmZhY2VfYnBwLCA4KTsKKwlpZiAocGl0Y2hfYWxpZ24pCisJCW1vZGVfY21kLnBp dGNoZXNbMF0gPSByb3VuZHVwKG1vZGVfY21kLnBpdGNoZXNbMF0sCisJCQkJCSAgICAgIHBpdGNo X2FsaWduKTsKKwltb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9sZWdhY3lfZmJfZm9y bWF0KHNpemVzLT5zdXJmYWNlX2JwcCwKKwkJCQkJCQlzaXplcy0+c3VyZmFjZV9kZXB0aCk7CisJ aWYgKG9iai0+c2l6ZSA8IG1vZGVfY21kLnBpdGNoZXNbMF0gKiBtb2RlX2NtZC5oZWlnaHQpCisJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCisJcmV0dXJuIGRybV9nZW1fZmJfYWxsb2MoZGV2 LCAmbW9kZV9jbWQsICZvYmosIDEsIGZ1bmNzKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2dlbV9m YmRldl9mYl9jcmVhdGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZyYW1lYnVmZmVy LmggYi9pbmNsdWRlL2RybS9kcm1fZnJhbWVidWZmZXIuaAppbmRleCA1MjQ0ZjA1Li5iNjk5NmRk IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZnJhbWVidWZmZXIuaAorKysgYi9pbmNsdWRl L2RybS9kcm1fZnJhbWVidWZmZXIuaApAQCAtMTkwLDYgKzE5MCwxMyBAQCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyIHsKIAkgKiBAZmlscF9oZWFkOiBQbGFjZWQgb24gJmRybV9maWxlLmZicywgcHJv dGVjdGVkIGJ5ICZkcm1fZmlsZS5mYnNfbG9jay4KIAkgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGZp bHBfaGVhZDsKKwkvKioKKwkgKiBAb2JqOiBHRU0gb2JqZWN0cyBiYWNraW5nIHRoZSBmcmFtZWJ1 ZmZlciwgb25lIHBlciBwbGFuZSAob3B0aW9uYWwpLgorCSAqCisJICogVGhpcyBpcyB1c2VkIGJ5 IHRoZSBHRU0gZnJhbWVidWZmZXIgaGVscGVycywgc2VlIGUuZy4KKwkgKiBkcm1fZ2VtX2ZiX2Ny ZWF0ZSgpLgorCSAqLworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqWzRdOwogfTsKIAogI2Rl ZmluZSBvYmpfdG9fZmIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIs IGJhc2UpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBl ci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjljZmEwCi0tLSAvZGV2L251bGwKKysrIGIvaW5j bHVkZS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaApAQCAtMCwwICsxLDM3IEBACisj aWZuZGVmIF9fRFJNX0dFTV9GQl9IRUxQRVJfSF9fCisjZGVmaW5lIF9fRFJNX0dFTV9GQl9IRUxQ RVJfSF9fCisKK3N0cnVjdCBkcm1fZGV2aWNlOworc3RydWN0IGRybV9maWxlOworc3RydWN0IGRy bV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplOworc3RydWN0IGRybV9mcmFtZWJ1ZmZlcjsKK3N0cnVj dCBkcm1fZnJhbWVidWZmZXJfZnVuY3M7CitzdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7CitzdHJ1Y3Qg ZHJtX21vZGVfZmJfY21kMjsKK3N0cnVjdCBkcm1fcGxhbmU7CitzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlOworCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fZmJfZ2V0X29iaihzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCQkJICB1bnNpZ25lZCBpbnQgcGxhbmUpOwordm9pZCBk cm1fZ2VtX2ZiX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOworaW50IGRybV9n ZW1fZmJfY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgc3RydWN0IGRy bV9maWxlICpmaWxlLAorCQkJICAgICB1bnNpZ25lZCBpbnQgKmhhbmRsZSk7CisKK3N0cnVjdCBk cm1fZnJhbWVidWZmZXIgKgorZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCQkgICAgIGNvbnN0IHN0cnVj dCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3MpOworc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCitkcm1f Z2VtX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUsCisJCSAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKTsKKworaW50 IGRybV9nZW1fZmJfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOworCitzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoK K2RybV9nZW1fZmJkZXZfZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQlzdHJ1 Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzLAorCQkJdW5zaWduZWQgaW50IHBp dGNoX2FsaWduLCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKTsKKworI2VuZGlmCi0tIAoyLjcuNAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==