From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC 2/7] drm: Add GEM backed framebuffer library Date: Wed, 12 Jul 2017 15:46:00 +0200 Message-ID: <1499867165-60925-3-git-send-email-noralf@tronnes.org> References: <1499867165-60925-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 C52B76E40D for ; Wed, 12 Jul 2017 13:46:22 +0000 (UTC) In-Reply-To: <1499867165-60925-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 List-Id: dri-devel@lists.freedesktop.org QWRkIGEgbGlicmFyeSBmb3IgZHJpdmVycyB0aGF0IGNhbiB1c2UgYSBzaW1wbGUgcmVwcmVzZW50 YXRpb24Kb2YgYSBHRU0gYmFja2VkIGZyYW1lYnVmZmVyLgoKU2lnbmVkLW9mZi1ieTogTm9yYWxm IFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfZ2VtX2hlbHBl ci5jIHwgMjQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9k cm0vZHJtX2ZiX2dlbV9oZWxwZXIuaCAgICAgfCAgNjQgKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAzMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfZ2VtX2hlbHBlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg aW5jbHVkZS9kcm0vZHJtX2ZiX2dlbV9oZWxwZXIuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAyNGEwNjZlLi44 M2Q4YjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCkBAIC0zMyw3ICszMyw3IEBAIGRybV9rbXNfaGVscGVyLXkgOj0g ZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxwZXIubyBcCiAJ CWRybV9wbGFuZV9oZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21pY19oZWxw ZXIubyBcCiAJCWRybV9rbXNfaGVscGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21vZGVfaGVscGVy Lm8gXAogCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubyBcCi0J CWRybV9zY2RjX2hlbHBlci5vCisJCWRybV9zY2RjX2hlbHBlci5vIGRybV9mYl9nZW1faGVscGVy Lm8KIAogZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgKz0gYnJpZGdl L3BhbmVsLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUp ICs9IGRybV9lZGlkX2xvYWQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9n ZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2dlbV9oZWxwZXIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTBkYTA5Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9mYl9nZW1faGVscGVyLmMKQEAgLTAsMCArMSwyNDggQEAKKy8q CisgKiBkcm0gZmIgZ2VtIGhlbHBlciBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MTcgTm9yYWxmIFRyw7hubmVzCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5n Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRp b24uaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2ZiX2dlbV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgorCisvKioKKyAqIGRy bV9mYl9nZW1fZ2V0X29iaigpIC0gR2V0IEdFTSBvYmplY3QgZm9yIGZyYW1lYnVmZmVyCisgKiBA ZmI6IFRoZSBmcmFtZWJ1ZmZlcgorICogQHBsYW5lOiBXaGljaCBwbGFuZQorICoKKyAqIFJldHVy bnMgdGhlIEdFTSBvYmplY3QgZm9yIGdpdmVuIGZyYW1lYnVmZmVyLgorICovCitzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmRybV9mYl9nZW1fZ2V0X29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKKwkJCQkJICB1bnNpZ25lZCBpbnQgcGxhbmUpCit7CisJc3RydWN0IGRybV9mYl9nZW0gKmZi X2dlbSA9IHRvX2ZiX2dlbShmYik7CisKKwlpZiAocGxhbmUgPj0gNCkKKwkJcmV0dXJuIE5VTEw7 CisKKwlyZXR1cm4gZmJfZ2VtLT5vYmpbcGxhbmVdOworfQorRVhQT1JUX1NZTUJPTF9HUEwoZHJt X2ZiX2dlbV9nZXRfb2JqKTsKKworLyoqCisgKiBkcm1fZmJfZ2VtX2FsbG9jIC0gQWxsb2NhdGUg R0VNIGJhY2tlZCBmcmFtZWJ1ZmZlcgorICogQGRldjogRFJNIGRldmljZQorICogQG1vZGVfY21k OiBtZXRhZGF0YSBmcm9tIHRoZSB1c2Vyc3BhY2UgZmIgY3JlYXRpb24gcmVxdWVzdAorICogQG9i ajogR0VNIG9iamVjdCBuYWNraW5nIHRoZSBmcmFtZWJ1ZmZlcgorICogQG51bV9wbGFuZXM6IE51 bWJlciBvZiBwbGFuZXMKKyAqIEBmdW5jczogdnRhYmxlIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXcg ZnJhbWVidWZmZXIgb2JqZWN0CisgKgorICogUmV0dXJuczoKKyAqIEFsbG9jYXRlZCBzdHJ1Y3Qg ZHJtX2ZiX2dlbSAqIG9yIGVycm9yIGVuY29kZWQgcG9pbnRlci4KKyAqLworc3RydWN0IGRybV9m Yl9nZW0gKgorZHJtX2ZiX2dlbV9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkgY29u c3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAorCQkgc3RydWN0IGRybV9nZW1f b2JqZWN0ICoqb2JqLCB1bnNpZ25lZCBpbnQgbnVtX3BsYW5lcywKKwkJIGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQoreworCXN0cnVjdCBkcm1fZmJfZ2VtICpmYl9n ZW07CisJaW50IHJldCwgaTsKKworCWZiX2dlbSA9IGt6YWxsb2Moc2l6ZW9mKCpmYl9nZW0pLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWZiX2dlbSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisK Kwlkcm1faGVscGVyX21vZGVfZmlsbF9mYl9zdHJ1Y3QoZGV2LCAmZmJfZ2VtLT5iYXNlLCBtb2Rl X2NtZCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3BsYW5lczsgaSsrKQorCQlmYl9nZW0tPm9i altpXSA9IG9ialtpXTsKKworCXJldCA9IGRybV9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJmZiX2dl bS0+YmFzZSwgZnVuY3MpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxl ZCB0byBpbml0aWFsaXplIGZyYW1lYnVmZmVyOiAlZFxuIiwgcmV0KTsKKwkJa2ZyZWUoZmJfZ2Vt KTsKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwl9CisKKwlyZXR1cm4gZmJfZ2VtOworfQorRVhQ T1JUX1NZTUJPTChkcm1fZmJfZ2VtX2FsbG9jKTsKKworLyoqCisgKiBkcm1fZmJfZ2VtX2Rlc3Ry b3kgLSBGcmVlIEdFTSBiYWNrZWQgZnJhbWVidWZmZXIKKyAqIEBmYjogRFJNIGZyYW1lYnVmZmVy CisgKgorICogRnJlZXMgYSBHRU0gYmFja2VkIGZyYW1lYnVmZmVyIHdpdGggaXQncyBiYWNraW5n IGJ1ZmZlcihzKSBhbmQgdGhlIHN0cnVjdHVyZQorICogaXRzZWxmLiBEcml2ZXJzIGNhbiB1c2Ug dGhpcyBhcyB0aGVpciAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLT5kZXN0cm95CisgKiBjYWxsYmFj ay4KKyAqLwordm9pZCBkcm1fZmJfZ2VtX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIpCit7CisJc3RydWN0IGRybV9mYl9nZW0gKmZiX2dlbSA9IHRvX2ZiX2dlbShmYik7CisJaW50 IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCWlmIChmYl9nZW0tPm9ialtpXSkK KwkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChmYl9nZW0tPm9ialtpXSk7CisJfQorCisJ ZHJtX2ZyYW1lYnVmZmVyX2NsZWFudXAoZmIpOworCWtmcmVlKGZiX2dlbSk7Cit9CitFWFBPUlRf U1lNQk9MKGRybV9mYl9nZW1fZGVzdHJveSk7CisKKy8qKgorICogZHJtX2ZiX2dlbV9jcmVhdGVf aGFuZGxlIC0gQ3JlYXRlIGhhbmRsZSBmb3IgR0VNIGJhY2tlZCBmcmFtZWJ1ZmZlcgorICogQGZi OiBEUk0gZnJhbWVidWZmZXIKKyAqIEBmaWxlOiBkcm0gZmlsZQorICogQGhhbmRsZTogaGFuZGxl IGNyZWF0ZWQKKyAqCisgKiBEcml2ZXJzIGNhbiB1c2UgdGhpcyBhcyB0aGVpciAmZHJtX2ZyYW1l YnVmZmVyX2Z1bmNzLT5jcmVhdGVfaGFuZGxlCisgKiBjYWxsYmFjay4KKyAqCisgKiBSZXR1cm5z OgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgor ICovCitpbnQgZHJtX2ZiX2dlbV9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCQkgICAgIHVuc2lnbmVkIGludCAqaGFuZGxl KQoreworCXN0cnVjdCBkcm1fZmJfZ2VtICpmYl9nZW0gPSB0b19mYl9nZW0oZmIpOworCisJcmV0 dXJuIGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCBmYl9nZW0tPm9ialswXSwgaGFuZGxlKTsK K30KK0VYUE9SVF9TWU1CT0woZHJtX2ZiX2dlbV9jcmVhdGVfaGFuZGxlKTsKKworLyoqCisgKiBk cm1fZmJfZ2VtX2NyZWF0ZV93aXRoX2Z1bmNzKCkgLSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRybV9tb2RlX2NvbmZpZ19mdW5j cy5mYl9jcmVhdGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAZmlsZTogZHJtIGZpbGUgZm9yIHRoZSBpb2N0bCBj YWxsCisgKiBAbW9kZV9jbWQ6IG1ldGFkYXRhIGZyb20gdGhlIHVzZXJzcGFjZSBmYiBjcmVhdGlv biByZXF1ZXN0CisgKiBAZnVuY3M6IHZ0YWJsZSB0byBiZSB1c2VkIGZvciB0aGUgbmV3IGZyYW1l YnVmZmVyIG9iamVjdAorICoKKyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2V0ICZkcm1fZnJhbWVi dWZmZXJfZnVuY3MgZm9yIGRyaXZlcnMgdGhhdCBuZWVkIHRoZQorICogJmRybV9mcmFtZWJ1ZmZl cl9mdW5jcy5kaXJ0eSBjYWxsYmFjay4gVXNlIGRybV9mYl9nZW1fY3JlYXRlKCkgaWYgeW91IGRv bid0CisgKiBuZWVkIHRvIGNoYW5nZSAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLgorICovCitzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICoKK2RybV9mYl9nZW1fY3JlYXRlX3dpdGhfZnVuY3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkJICAgICBjb25zdCBz dHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQoreworCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0 X2luZm8gKmluZm87CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmpzWzRdOworCXN0cnVjdCBk cm1fZmJfZ2VtICpmYl9nZW07CisJaW50IHJldCwgaTsKKworCWluZm8gPSBkcm1fZ2V0X2Zvcm1h dF9pbmZvKGRldiwgbW9kZV9jbWQpOworCWlmICghaW5mbykKKwkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX3BsYW5lczsgaSsrKSB7CisJCXVu c2lnbmVkIGludCB3aWR0aCA9IG1vZGVfY21kLT53aWR0aCAvIChpID8gaW5mby0+aHN1YiA6IDEp OworCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gbW9kZV9jbWQtPmhlaWdodCAvIChpID8gaW5mby0+ dnN1YiA6IDEpOworCQl1bnNpZ25lZCBpbnQgbWluX3NpemU7CisKKwkJb2Jqc1tpXSA9IGRybV9n ZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBtb2RlX2NtZC0+aGFuZGxlc1tpXSk7CisJCWlmICghb2Jq c1tpXSkgeworCQkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVj dFxuIik7CisJCQlyZXQgPSAtRU5PRU5UOworCQkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7CisJ CX0KKworCQltaW5fc2l6ZSA9IChoZWlnaHQgLSAxKSAqIG1vZGVfY21kLT5waXRjaGVzW2ldCisJ CQkgKyB3aWR0aCAqIGluZm8tPmNwcFtpXQorCQkJICsgbW9kZV9jbWQtPm9mZnNldHNbaV07CisK KwkJaWYgKG9ianNbaV0tPnNpemUgPCBtaW5fc2l6ZSkgeworCQkJZHJtX2dlbV9vYmplY3RfcHV0 X3VubG9ja2VkKG9ianNbaV0pOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyX2dlbV9v YmplY3RfcHV0OworCQl9CisJfQorCisJZmJfZ2VtID0gZHJtX2ZiX2dlbV9hbGxvYyhkZXYsIG1v ZGVfY21kLCBvYmpzLCBpLCBmdW5jcyk7CisJaWYgKElTX0VSUihmYl9nZW0pKSB7CisJCXJldCA9 IFBUUl9FUlIoZmJfZ2VtKTsKKwkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7CisJfQorCisJcmV0 dXJuICZmYl9nZW0tPmJhc2U7CisKK2Vycl9nZW1fb2JqZWN0X3B1dDoKKwlmb3IgKGktLTsgaSA+ PSAwOyBpLS0pCisJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmpzW2ldKTsKKworCXJl dHVybiBFUlJfUFRSKHJldCk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfZ2VtX2NyZWF0 ZV93aXRoX2Z1bmNzKTsKKworc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgZHJt X2ZiX2dlbV9mYl9mdW5jcyA9IHsKKwkuZGVzdHJveQk9IGRybV9mYl9nZW1fZGVzdHJveSwKKwku Y3JlYXRlX2hhbmRsZQk9IGRybV9mYl9nZW1fY3JlYXRlX2hhbmRsZSwKK307CisKKy8qKgorICog ZHJtX2ZiX2dlbV9jcmVhdGUoKSAtICZkcm1fbW9kZV9jb25maWdfZnVuY3MuZmJfY3JlYXRlIGNh bGxiYWNrIGZ1bmN0aW9uCisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAZmlsZTogZHJtIGZpbGUg Zm9yIHRoZSBpb2N0bCBjYWxsCisgKiBAbW9kZV9jbWQ6IG1ldGFkYXRhIGZyb20gdGhlIHVzZXJz cGFjZSBmYiBjcmVhdGlvbiByZXF1ZXN0CisgKgorICogSWYgeW91ciBoYXJkd2FyZSBoYXMgc3Bl Y2lhbCBhbGlnbm1lbnQgb3IgcGl0Y2ggcmVxdWlyZW1lbnRzIHRoZXNlIHNob3VsZCBiZQorICog Y2hlY2tlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBVc2UgZHJtX2ZiX2dlbV9jcmVh dGVfd2l0aF9mdW5jcygpIGlmCisgKiB5b3UgbmVlZCB0byBzZXQgJmRybV9mcmFtZWJ1ZmZlcl9m dW5jcy5kaXJ0eS4KKyAqLworc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCitkcm1fZmJfZ2VtX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCSAg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQoreworCXJldHVybiBkcm1f ZmJfZ2VtX2NyZWF0ZV93aXRoX2Z1bmNzKGRldiwgZmlsZSwgbW9kZV9jbWQsCisJCQkJCSAgICAm ZHJtX2ZiX2dlbV9mYl9mdW5jcyk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfZ2VtX2Ny ZWF0ZSk7CisKKy8qKgorICogZHJtX2ZiX2dlbV9wcmVwYXJlX2ZiKCkgLSBQcmVwYXJlIGdlbSBm cmFtZWJ1ZmZlcgorICogQHBsYW5lOiBXaGljaCBwbGFuZQorICogQHN0YXRlOiBQbGFuZSBzdGF0 ZSBhdHRhY2ggZmVuY2UgdG8KKyAqCisgKiBUaGlzIHNob3VsZCBiZSBzZXQgYXMgdGhlICZzdHJ1 Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcy5wcmVwYXJlX2ZiIGhvb2suCisgKgorICogVGhpcyBm dW5jdGlvbiBjaGVja3MgaWYgdGhlIHBsYW5lIEZCIGhhcyBhbiBkbWEtYnVmIGF0dGFjaGVkLCBl eHRyYWN0cworICogdGhlIGV4Y2x1c2l2ZSBmZW5jZSBhbmQgYXR0YWNoZXMgaXQgdG8gcGxhbmUg c3RhdGUgZm9yIHRoZSBhdG9taWMgaGVscGVyCisgKiB0byB3YWl0IG9uLgorICoKKyAqIFRoZXJl IGlzIG5vIG5lZWQgZm9yIGNsZWFudXBfZmIgZm9yIGdlbSBiYXNlZCBmcmFtZWJ1ZmZlciBkcml2 ZXJzLgorICovCitpbnQgZHJtX2ZiX2dlbV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAorCQkJICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZG1h X2J1ZiAqZG1hX2J1ZjsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKworCWlmICgocGxhbmUt PnN0YXRlLT5mYiA9PSBzdGF0ZS0+ZmIpIHx8ICFzdGF0ZS0+ZmIpCisJCXJldHVybiAwOworCisJ ZG1hX2J1ZiA9IGRybV9mYl9nZW1fZ2V0X29iaihzdGF0ZS0+ZmIsIDApLT5kbWFfYnVmOworCWlm IChkbWFfYnVmKSB7CisJCWZlbmNlID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdShk bWFfYnVmLT5yZXN2KTsKKwkJZHJtX2F0b21pY19zZXRfZmVuY2VfZm9yX3BsYW5lKHN0YXRlLCBm ZW5jZSk7CisJfQorCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfZ2Vt X3ByZXBhcmVfZmIpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2dlbV9oZWxwZXIu aCBiL2luY2x1ZGUvZHJtL2RybV9mYl9nZW1faGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDA1YTFlMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9mYl9nZW1faGVscGVyLmgKQEAgLTAsMCArMSw2NCBAQAorI2lmbmRlZiBfX0RSTV9GQl9HRU1f SEVMUEVSX0hfXworI2RlZmluZSBfX0RSTV9GQl9HRU1fSEVMUEVSX0hfXworCisjaW5jbHVkZSA8 ZHJtL2RybV9mcmFtZWJ1ZmZlci5oPgorCitzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Q7Citz dHJ1Y3QgZHJtX21vZGVfZmJfY21kMjsKK3N0cnVjdCBkcm1fcGxhbmU7CitzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlOworCisvKioKKyAqIHN0cnVjdCBkcm1fZmJfZ2VtIC0gR0VNIGJhY2tlZCBmcmFt ZWJ1ZmZlcgorICovCitzdHJ1Y3QgZHJtX2ZiX2dlbSB7CisJLyoqCisJICogQGJhc2U6IEJhc2Ug RFJNIGZyYW1lYnVmZmVyCisJICovCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBiYXNlOworCS8q KgorCSAqIEBvYmo6IEdFTSBvYmplY3QgYXJyYXkgYmFja2luZyB0aGUgZnJhbWVidWZmZXIuIE9u ZSBvYmplY3QgcGVyCisJICogcGxhbmUuCisJICovCisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmpbNF07Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZmJfZ2VtICp0b19mYl9nZW0o c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihmYiwg c3RydWN0IGRybV9mYl9nZW0sIGJhc2UpOworfQorCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRy bV9mYl9nZW1fZ2V0X29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCQkJICB1bnNp Z25lZCBpbnQgcGxhbmUpOworc3RydWN0IGRybV9mYl9nZW0gKgorZHJtX2ZiX2dlbV9hbGxvYyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIg Km1vZGVfY21kLAorCQkgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqb2JqLCB1bnNpZ25lZCBpbnQg bnVtX3BsYW5lcywKKwkJIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNz KTsKK3ZvaWQgZHJtX2ZiX2dlbV9kZXN0cm95KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsK K2ludCBkcm1fZmJfZ2VtX2NyZWF0ZV9oYW5kbGUoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKKwkJCSAgICAgdW5zaWduZWQgaW50ICpoYW5kbGUpOwor CitzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKK2RybV9mYl9nZW1fY3JlYXRlX3dpdGhfZnVuY3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkJICAgICBj b25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCisJCQkgICAgIGNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKTsKK3N0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKgorZHJtX2ZiX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9maWxlICpmaWxlLAorCQkgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2Nt ZCk7CisKKworaW50IGRybV9mYl9nZW1fcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKKwkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOworCisKKworCisjaWZkZWYg Q09ORklHX0RFQlVHX0ZTCitzdHJ1Y3Qgc2VxX2ZpbGU7CisKK2ludCBkcm1fZmJfZ2VtX2RlYnVn ZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZyk7CisjZW5kaWYKKworI2VuZGlm CisKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK