From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Herrmann Subject: [PATCH v5 7/7] drm/simpledrm: add fbdev fallback support Date: Fri, 2 Sep 2016 10:22:45 +0200 Message-ID: <20160902082245.7119-8-dh.herrmann@gmail.com> References: <20160902082245.7119-1-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 15FB46EA38 for ; Fri, 2 Sep 2016 08:23:28 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id c133so1847849wmd.2 for ; Fri, 02 Sep 2016 01:23:28 -0700 (PDT) In-Reply-To: <20160902082245.7119-1-dh.herrmann@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 List-Id: dri-devel@lists.freedesktop.org Q3JlYXRlIGEgc2ltcGxlIGZiZGV2IGRldmljZSBkdXJpbmcgU2ltcGxlRFJNIHNldHVwIHNvIGxl Z2FjeSB1c2VyLXNwYWNlCmFuZCBmYmNvbiBjYW4gdXNlIGl0LgoKU2lnbmVkLW9mZi1ieTogRGF2 aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v c2ltcGxlZHJtL01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9zaW1w bGVkcm0vc2ltcGxlZHJtLmggICAgICAgfCAgIDggKysKIGRyaXZlcnMvZ3B1L2RybS9zaW1wbGVk cm0vc2ltcGxlZHJtX2Rydi5jICAgfCAgMTMgKysrCiBkcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJt L3NpbXBsZWRybV9mYmRldi5jIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2ltcGxlZHJtX2ttcy5jICAgfCAgNTUgKysrKysrLS0t LS0KIDUgZmlsZXMgY2hhbmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2ltcGxlZHJtX2Zi ZGV2LmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL3NpbXBsZWRybS9NYWtlZmlsZQppbmRleCBkN2IxNzlkLi5lMzY4ZDE0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vTWFrZWZpbGUKQEAgLTEsNiArMSw3IEBACiBzaW1wbGVk cm0teSA6PSBcCiAJc2ltcGxlZHJtX2RhbWFnZS5vIFwKIAlzaW1wbGVkcm1fZHJ2Lm8gXAorCXNp bXBsZWRybV9mYmRldi5vIFwKIAlzaW1wbGVkcm1fZ2VtLm8gXAogCXNpbXBsZWRybV9rbXMubyBc CiAJc2ltcGxlZHJtX29mLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0v c2ltcGxlZHJtLmggYi9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL3NpbXBsZWRybS5oCmluZGV4 IGVkNmQ3MjUuLmQ3YTIwNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0v c2ltcGxlZHJtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NpbXBsZWRybS9zaW1wbGVkcm0uaApA QCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CiAKIHN0cnVjdCBjbGs7 CitzdHJ1Y3QgZHJtX2ZiX2hlbHBlcjsKIHN0cnVjdCByZWd1bGF0b3I7CiBzdHJ1Y3Qgc2ltcGxl ZmJfZm9ybWF0OwogCkBAIC00OSw2ICs1MCw3IEBAIHN0cnVjdCBzZHJtX2RldmljZSB7CiAJYXRv bWljX3Qgbl91c2VkOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2OwogCXN0cnVjdCBzZHJtX2h3 ICpodzsKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJkZXY7CiAKIAlzaXplX3Qgbl9jbGtzOwog CXNpemVfdCBuX3JlZ3VsYXRvcnM7CkBAIC02Niw2ICs2OCw5IEBAIHZvaWQgc2RybV9vZl91bmJp bmQoc3RydWN0IHNkcm1fZGV2aWNlICpzZHJtKTsKIGludCBzZHJtX2ttc19iaW5kKHN0cnVjdCBz ZHJtX2RldmljZSAqc2RybSk7CiB2b2lkIHNkcm1fa21zX3VuYmluZChzdHJ1Y3Qgc2RybV9kZXZp Y2UgKnNkcm0pOwogCit2b2lkIHNkcm1fZmJkZXZfYmluZChzdHJ1Y3Qgc2RybV9kZXZpY2UgKnNk cm0pOwordm9pZCBzZHJtX2ZiZGV2X3VuYmluZChzdHJ1Y3Qgc2RybV9kZXZpY2UgKnNkcm0pOwor CiB2b2lkIHNkcm1fZGlydHkoc3RydWN0IHNkcm1fZmIgKmZiLCB1MzIgeCwgdTMyIHksIHUzMiB3 aWR0aCwgdTMyIGhlaWdodCk7CiAKIHN0cnVjdCBzZHJtX2JvICpzZHJtX2JvX25ldyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGRldiwgc2l6ZV90IHNpemUpOwpAQCAtODAsNCArODUsNyBAQCBpbnQgc2Ry bV9kdW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpkZmlsZSwKIAkJCSB1aW50MzJfdCBo YW5kbGUsCiAJCQkgdWludDY0X3QgKm9mZnNldCk7CiAKK3N0cnVjdCBzZHJtX2ZiICpzZHJtX2Zi X25ldyhzdHJ1Y3Qgc2RybV9ibyAqYm8sCisJCQkgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2Zi X2NtZDIgKmNtZCk7CisKICNlbmRpZiAvKiBfX1NEUk1fU0lNUExFRFJNX0ggKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2ltcGxlZHJtX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL3NpbXBsZWRybS9zaW1wbGVkcm1fZHJ2LmMKaW5kZXggZDU2OTEyMC4uNmFlZmU0OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NpbXBsZWRybS9zaW1wbGVkcm1fZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3NpbXBsZWRybS9zaW1wbGVkcm1fZHJ2LmMKQEAgLTksNiArOSw3 IEBACiAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgIjogIiBmbXQKICNpbmNs dWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CiAjaW5jbHVk ZSA8bGludXgvYXRvbWljLmg+CiAjaW5jbHVkZSA8bGludXgvZXJyLmg+CiAjaW5jbHVkZSA8bGlu dXgvaW8uaD4KQEAgLTIxMCw2ICsyMTEsNyBAQCBlcnJvcjoKIHN0YXRpYyB2b2lkIHNkcm1fZGV2 aWNlX3VuYmluZChzdHJ1Y3Qgc2RybV9kZXZpY2UgKnNkcm0pCiB7CiAJaWYgKHNkcm0pIHsKKwkJ c2RybV9mYmRldl91bmJpbmQoc2RybSk7CiAJCXNkcm1fa21zX3VuYmluZChzZHJtKTsKIAkJc2Ry bV9od191bmJpbmQoc2RybS0+aHcpOwogCQlzZHJtX29mX3VuYmluZChzZHJtKTsKQEAgLTIzMiw2 ICsyMzQsOCBAQCBzdGF0aWMgaW50IHNkcm1fZGV2aWNlX2JpbmQoc3RydWN0IHNkcm1fZGV2aWNl ICpzZHJtKQogCWlmIChyIDwgMCkKIAkJZ290byBlcnJvcjsKIAorCXNkcm1fZmJkZXZfYmluZChz ZHJtKTsKKwogCXJldHVybiAwOwogCiBlcnJvcjoKQEAgLTI1Myw2ICsyNTcsMTQgQEAgc3RhdGlj IHZvaWQgc2RybV9kZXZpY2VfcmVsZWFzZShzdHJ1Y3Qgc2RybV9kZXZpY2UgKnNkcm0pCiAJfQog fQogCitzdGF0aWMgdm9pZCBzZHJtX2RldmljZV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRkZXYpCit7CisJc3RydWN0IHNkcm1fZGV2aWNlICpzZHJtID0gZGRldi0+ZGV2X3ByaXZhdGU7 CisKKwlpZiAoc2RybS0+ZmJkZXYpCisJCWRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2Rl X3VubG9ja2VkKHNkcm0tPmZiZGV2KTsKK30KKwogc3RhdGljIGludCBzZHJtX2ZvcF9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZGV2OwpAQCAtNDExLDYgKzQyMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHNkcm1fZHJtX2ZvcHMgPSB7CiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgc2Ry bV9kcm1fZHJpdmVyID0gewogCS5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNIHwgRFJJVkVS X01PREVTRVQgfCBEUklWRVJfQVRPTUlDLAogCS5mb3BzID0gJnNkcm1fZHJtX2ZvcHMsCisJLmxh c3RjbG9zZSA9IHNkcm1fZGV2aWNlX2xhc3RjbG9zZSwKIAogCS5nZW1fZnJlZV9vYmplY3QgPSBz ZHJtX2JvX2ZyZWUsCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2lt cGxlZHJtX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL3NpbXBsZWRybV9mYmRl di5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZTRlODMKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL3NpbXBsZWRybV9mYmRldi5jCkBA IC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgUmVkIEhhdCwg SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE2IE5vcmFsZiBUcsO4bm5lcworICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyAq IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2RlZmluZSBwcl9mbXQoZm10KSBL QlVJTERfTU9ETkFNRSAiOiAiIGZtdAorI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cisj aW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvZmIuaD4KKyNpbmNsdWRlIDxs aW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSAic2ltcGxl ZHJtLmgiCisKK3N0YXRpYyBpbnQgc2RybV9mYmRldl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZv LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlyZXR1cm4gLUVOT0RFVjsKK30KKwor c3RhdGljIHN0cnVjdCBmYl9vcHMgc2RybV9mYmRldl9vcHMgPSB7CisJLm93bmVyCQk9IFRISVNf TU9EVUxFLAorCS5mYl9maWxscmVjdAk9IGRybV9mYl9oZWxwZXJfc3lzX2ZpbGxyZWN0LAorCS5m Yl9jb3B5YXJlYQk9IGRybV9mYl9oZWxwZXJfc3lzX2NvcHlhcmVhLAorCS5mYl9pbWFnZWJsaXQJ PSBkcm1fZmJfaGVscGVyX3N5c19pbWFnZWJsaXQsCisJLmZiX2NoZWNrX3Zhcgk9IGRybV9mYl9o ZWxwZXJfY2hlY2tfdmFyLAorCS5mYl9zZXRfcGFyCT0gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyLAor CS5mYl9zZXRjbWFwCT0gZHJtX2ZiX2hlbHBlcl9zZXRjbWFwLAorCS5mYl9tbWFwCT0gc2RybV9m YmRldl9tbWFwLAorfTsKKworc3RhdGljIGludCBzZHJtX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYmRldiwKKwkJCSAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3Np emUgKnNpemVzKQoreworCXN0cnVjdCBzZHJtX2RldmljZSAqc2RybSA9IGZiZGV2LT5kZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIGNtZCA9IHsKKwkJLndpZHRoID0g c2RybS0+aHctPndpZHRoLAorCQkuaGVpZ2h0ID0gc2RybS0+aHctPmhlaWdodCwKKwkJLnBpdGNo ZXNbMF0gPSBzZHJtLT5ody0+c3RyaWRlLAorCQkucGl4ZWxfZm9ybWF0ID0gc2RybS0+aHctPmZv cm1hdCwKKwl9OworCXN0cnVjdCBmYl9pbmZvICpmYmk7CisJc3RydWN0IHNkcm1fYm8gKmJvOwor CXN0cnVjdCBzZHJtX2ZiICpmYjsKKwlpbnQgcjsKKworCWZiaSA9IGRybV9mYl9oZWxwZXJfYWxs b2NfZmJpKGZiZGV2KTsKKwlpZiAoSVNfRVJSKGZiaSkpCisJCXJldHVybiBQVFJfRVJSKGZiaSk7 CisKKwlibyA9IHNkcm1fYm9fbmV3KHNkcm0tPmRkZXYsCisJCQkgUEFHRV9BTElHTihzZHJtLT5o dy0+aGVpZ2h0ICogc2RybS0+aHctPnN0cmlkZSkpOworCWlmICghYm8pIHsKKwkJciA9IC1FTk9N RU07CisJCWdvdG8gZXJyb3I7CisJfQorCisJZmIgPSBzZHJtX2ZiX25ldyhibywgJmNtZCk7CisJ ZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoJmJvLT5iYXNlKTsKKwlpZiAoSVNf RVJSKGZiKSkgeworCQlyID0gUFRSX0VSUihmYik7CisJCWdvdG8gZXJyb3I7CisJfQorCisJZmJk ZXYtPmZiID0gJmZiLT5iYXNlOworCWZiaS0+cGFyID0gZmJkZXY7CisJZmJpLT5mbGFncyA9IEZC SU5GT19ERUZBVUxUIHwgRkJJTkZPX01JU0NfRklSTVdBUkU7CisJZmJpLT5mYm9wcyA9ICZzZHJt X2ZiZGV2X29wczsKKworCWRybV9mYl9oZWxwZXJfZmlsbF9maXgoZmJpLCBmYi0+YmFzZS5waXRj aGVzWzBdLCBmYi0+YmFzZS5kZXB0aCk7CisJZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihmYmksIGZi ZGV2LCBmYi0+YmFzZS53aWR0aCwgZmItPmJhc2UuaGVpZ2h0KTsKKworCXN0cm5jcHkoZmJpLT5m aXguaWQsICJzaW1wbGVkcm1mYiIsIHNpemVvZihmYmktPmZpeC5pZCkgLSAxKTsKKwlmYmktPnNj cmVlbl9iYXNlID0gYm8tPnZtYXBwaW5nOworCWZiaS0+Zml4LnNtZW1fbGVuID0gYm8tPmJhc2Uu c2l6ZTsKKworCXJldHVybiAwOworCitlcnJvcjoKKwlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJp KGZiZGV2KTsKKwlyZXR1cm4gcjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVs cGVyX2Z1bmNzIHNkcm1fZmJkZXZfZnVuY3MgPSB7CisJLmZiX3Byb2JlID0gc2RybV9mYmRldl9w cm9iZSwKK307CisKK3ZvaWQgc2RybV9mYmRldl9iaW5kKHN0cnVjdCBzZHJtX2RldmljZSAqc2Ry bSkKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJkZXY7CisJaW50IHI7CisKKwlmYmRldiA9 IGt6YWxsb2Moc2l6ZW9mKCpmYmRldiksIEdGUF9LRVJORUwpOworCWlmICghZmJkZXYpCisJCXJl dHVybjsKKworCWRybV9mYl9oZWxwZXJfcHJlcGFyZShzZHJtLT5kZGV2LCBmYmRldiwgJnNkcm1f ZmJkZXZfZnVuY3MpOworCisJciA9IGRybV9mYl9oZWxwZXJfaW5pdChzZHJtLT5kZGV2LCBmYmRl diwgMSwgMSk7CisJaWYgKHIgPCAwKQorCQlnb3RvIGVycm9yOworCisJciA9IGRybV9mYl9oZWxw ZXJfc2luZ2xlX2FkZF9hbGxfY29ubmVjdG9ycyhmYmRldik7CisJaWYgKHIgPCAwKQorCQlnb3Rv IGVycm9yOworCisJciA9IGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoZmJkZXYsCisJCQkJ c2RybS0+ZGRldi0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoKTsKKwlpZiAociA8IDApCisJ CWdvdG8gZXJyb3I7CisKKwlpZiAoIWZiZGV2LT5mYmRldikKKwkJZ290byBlcnJvcjsKKworCXNk cm0tPmZiZGV2ID0gZmJkZXY7CisJcmV0dXJuOworCitlcnJvcjoKKwlkcm1fZmJfaGVscGVyX2Zp bmkoZmJkZXYpOworCWtmcmVlKGZiZGV2KTsKK30KKwordm9pZCBzZHJtX2ZiZGV2X3VuYmluZChz dHJ1Y3Qgc2RybV9kZXZpY2UgKnNkcm0pCit7CisJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiZGV2 ID0gc2RybS0+ZmJkZXY7CisKKwlpZiAoIWZiZGV2KQorCQlyZXR1cm47CisKKwlzZHJtLT5mYmRl diA9IE5VTEw7CisJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShmYmRldik7CisJY2FuY2Vs X3dvcmtfc3luYygmZmJkZXYtPmRpcnR5X3dvcmspOworCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9m YmkoZmJkZXYpOworCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShmYmRldi0+ZmIpOworCWZi ZGV2LT5mYiA9IE5VTEw7CisJZHJtX2ZiX2hlbHBlcl9maW5pKGZiZGV2KTsKKwlrZnJlZShmYmRl dik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2ltcGxlZHJtL3NpbXBsZWRybV9r bXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2ltcGxlZHJtX2ttcy5jCmluZGV4IDAw MTAxYzkuLjhmNjdmZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2lt cGxlZHJtX2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zaW1wbGVkcm0vc2ltcGxlZHJtX2tt cy5jCkBAIC0xNjksNTMgKzE2OSw2MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlcl9mdW5jcyBzZHJtX2ZiX29wcyA9IHsKIAkuZGVzdHJveQkJPSBzZHJtX2ZiX2Rlc3Ryb3ks CiB9OwogCi1zdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCi1zZHJtX2ZiX2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGRldiwKLQkgICAgICAgc3RydWN0IGRybV9maWxlICpkZmlsZSwK LQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKmNtZCkKK3N0cnVjdCBzZHJt X2ZiICpzZHJtX2ZiX25ldyhzdHJ1Y3Qgc2RybV9ibyAqYm8sCisJCQkgICAgY29uc3Qgc3RydWN0 IGRybV9tb2RlX2ZiX2NtZDIgKmNtZCkKIHsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRvYmo7 Ci0Jc3RydWN0IHNkcm1fZmIgKmZiID0gTlVMTDsKLQlzdHJ1Y3Qgc2RybV9ibyAqYm87CisJc3Ry dWN0IHNkcm1fZmIgKmZiOwogCWludCByOwogCiAJaWYgKGNtZC0+ZmxhZ3MpCiAJCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwogCi0JZG9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZmlsZSwg Y21kLT5oYW5kbGVzWzBdKTsKLQlpZiAoIWRvYmopCi0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp OwotCi0JYm8gPSBjb250YWluZXJfb2YoZG9iaiwgc3RydWN0IHNkcm1fYm8sIGJhc2UpOwotCiAJ ciA9IHNkcm1fYm9fdm1hcChibyk7CiAJaWYgKHIgPCAwKQotCQlnb3RvIGVycm9yOworCQlyZXR1 cm4gRVJSX1BUUihyKTsKIAogCWZiID0ga3phbGxvYyhzaXplb2YoKmZiKSwgR0ZQX0tFUk5FTCk7 Ci0JaWYgKCFmYikgewotCQlyID0gLUVOT01FTTsKLQkJZ290byBlcnJvcjsKLQl9CisJaWYgKCFm YikKKwkJcmV0dXJuIEVSUl9QVFIocik7CiAKKwlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJmJv LT5iYXNlKTsKIAlmYi0+Ym8gPSBibzsKIAlkcm1faGVscGVyX21vZGVfZmlsbF9mYl9zdHJ1Y3Qo JmZiLT5iYXNlLCBjbWQpOwogCi0JciA9IGRybV9mcmFtZWJ1ZmZlcl9pbml0KGRkZXYsICZmYi0+ YmFzZSwgJnNkcm1fZmJfb3BzKTsKKwlyID0gZHJtX2ZyYW1lYnVmZmVyX2luaXQoYm8tPmJhc2Uu ZGV2LCAmZmItPmJhc2UsICZzZHJtX2ZiX29wcyk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIGVycm9y OwogCi0JRFJNX0RFQlVHX0tNUygiW0ZCOiVkXSBwaXhlbF9mb3JtYXQ6ICVzXG4iLCBmYi0+YmFz ZS5iYXNlLmlkLAotCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5iYXNlLnBpeGVsX2Zv cm1hdCkpOwotCi0JcmV0dXJuICZmYi0+YmFzZTsKKwlyZXR1cm4gZmI7CiAKIGVycm9yOgorCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZiby0+YmFzZSk7CiAJa2ZyZWUoZmIp OwotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGRvYmopOwogCXJldHVybiBF UlJfUFRSKHIpOwogfQogCitzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCitzZHJtX2Zi X2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwKKwkgICAgICAgc3RydWN0IGRybV9maWxl ICpkZmlsZSwKKwkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKmNtZCkKK3sK KwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRvYmo7CisJc3RydWN0IHNkcm1fZmIgKmZiOworCisJ ZG9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZmlsZSwgY21kLT5oYW5kbGVzWzBdKTsKKwlp ZiAoIWRvYmopCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCisJZmIgPSBzZHJtX2ZiX25l dyhjb250YWluZXJfb2YoZG9iaiwgc3RydWN0IHNkcm1fYm8sIGJhc2UpLCBjbWQpOworCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGRvYmopOworCisJaWYgKElTX0VSUihmYikp CisJCXJldHVybiBFUlJfQ0FTVChmYik7CisKKwlyZXR1cm4gJmZiLT5iYXNlOworfQorCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBzZHJtX21vZGVfY29uZmlnX29w cyA9IHsKIAkuZmJfY3JlYXRlCQk9IHNkcm1fZmJfY3JlYXRlLAogCS5hdG9taWNfY2hlY2sJCT0g ZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==