From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 07/12] drm/cma-helper: Use the generic fbdev emulation Date: Mon, 18 Jun 2018 16:17:34 +0200 Message-ID: <20180618141739.48151-8-noralf@tronnes.org> References: <20180618141739.48151-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180618141739.48151-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, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBzd2l0Y2hlcyB0aGUgQ01BIGhlbHBlciBkcml2ZXJzIHRoYXQgdXNlIGl0cyBmYmRldiBl bXVsYXRpb24gb3Zlcgp0byB0aGUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24uIEl0J3MgdGhlIGZp cnN0IHBoYXNlIG9mIHVzaW5nIGdlbmVyaWMKZmJkZXYuIEEgbGF0ZXIgcGhhc2Ugd2lsbCB1c2Ug RFJNIGNsaWVudCBjYWxsYmFja3MgZm9yIHRoZQpsYXN0Y2xvc2UvaG90cGx1Zy9yZW1vdmUgY2Fs bGJhY2tzLgoKVGhlcmUgYXJlIGN1cnJlbnRseSAyIGZiZGV2IGluaXQvZmluaSBmdW5jdGlvbnM6 Ci0gZHJtX2ZiX2NtYV9mYmRldl9pbml0L2RybV9mYl9jbWFfZmJkZXZfZmluaQotIGRybV9mYmRl dl9jbWFfaW5pdC9kcm1fZmJkZXZfY21hX2ZpbmkKClRoaXMgaXMgYmVjYXVzZSB0aGUgd29yayBv biBnZW5lcmljIGZiZGV2IGNhbWUgdXAgZHVyaW5nIGEgZmJkZXYKcmVmYWN0b3JpbmcgYW5kIHRo dXMgd2Fzbid0IGNvbXBsZXRlZC4gTm8gcG9pbnQgaW4gY29tcGxldGluZyB0aGF0CnJlZmFjdG9y aW5nIHdoZW4gZHJpdmVycyB3aWxsIHNvb24gbW92ZSB0byBkcm1fZmJfaGVscGVyX2dlbmVyaWNf cHJvYmUoKS4KCnRpbnlkcm0gdXNlcyBkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5jcygp LgoKQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNv bT4KU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+CkFj a2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jIHwgMzYxICsrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaCAgICAgfCAg IDMgLQogMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAzMjEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwppbmRleCAxODZkMDBhZGZiNWYuLmRiZDE5 MzMxNjBkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKQEAgLTE4LDYgKzE4LDcg QEAKICAqLwogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVu dC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9m cmFtZWJ1ZmZlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KQEAgLTI2 LDExICsyNyw4IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgogI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgogCi0jZGVmaW5lIERFRkFVTFRfRkJERUZJT19ERUxBWV9NUyA1MAotCiBzdHJ1 Y3QgZHJtX2ZiZGV2X2NtYSB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIJZmJfaGVscGVyOwotCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZiX2Z1bmNzOwogfTsKIAogLyoqCkBA IC00NCwzNiArNDIsNiBAQCBzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSB7CiAgKgogICogQW4gZmJkZXYg ZnJhbWVidWZmZXIgYmFja2VkIGJ5IGNtYSBpcyBhbHNvIGF2YWlsYWJsZSBieSBjYWxsaW5nCiAg KiBkcm1fZmJfY21hX2ZiZGV2X2luaXQoKS4gZHJtX2ZiX2NtYV9mYmRldl9maW5pKCkgdGVhcnMg aXQgZG93bi4KLSAqIElmIHRoZSAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLmRpcnR5IGNhbGxiYWNr IGlzIHNldCwgZmJfZGVmZXJyZWRfaW8gd2lsbCBiZQotICogc2V0IHVwIGF1dG9tYXRpY2FsbHku ICZkcm1fZnJhbWVidWZmZXJfZnVuY3MuZGlydHkgaXMgY2FsbGVkIGJ5Ci0gKiBkcm1fZmJfaGVs cGVyX2RlZmVycmVkX2lvKCkgaW4gcHJvY2VzcyBjb250ZXh0ICgmc3RydWN0IGRlbGF5ZWRfd29y aykuCi0gKgotICogRXhhbXBsZSBmYmRldiBkZWZlcnJlZCBpbyBjb2RlOjoKLSAqCi0gKiAgICAg c3RhdGljIGludCBkcml2ZXJfZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0g KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MsIHVu c2lnbmVkIGNvbG9yLAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fY2xpcF9yZWN0ICpjbGlwcywKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBudW1fY2xpcHMpCi0gKiAgICAgewotICogICAgICAgICBzdHJ1Y3QgZHJtX2dlbV9j bWFfb2JqZWN0ICpjbWEgPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCAwKTsKLSAqICAgICAg ICAgLi4uIHB1c2ggY2hhbmdlcyAuLi4KLSAqICAgICAgICAgcmV0dXJuIDA7Ci0gKiAgICAgfQot ICoKLSAqICAgICBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBkcml2ZXJfZmJf ZnVuY3MgPSB7Ci0gKiAgICAgICAgIC5kZXN0cm95ICAgICAgID0gZHJtX2dlbV9mYl9kZXN0cm95 LAotICogICAgICAgICAuY3JlYXRlX2hhbmRsZSA9IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSwK LSAqICAgICAgICAgLmRpcnR5ICAgICAgICAgPSBkcml2ZXJfZmJfZGlydHksCi0gKiAgICAgfTsK LSAqCi0gKiBJbml0aWFsaXplOjoKLSAqCi0gKiAgICAgZmJkZXYgPSBkcm1fZmJfY21hX2ZiZGV2 X2luaXRfd2l0aF9mdW5jcyhkZXYsIDE2LAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YywKLSAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5l Y3RvciwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkcml2 ZXJfZmJfZnVuY3MpOwotICoKICAqLwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZmJkZXZf Y21hICp0b19mYmRldl9jbWEoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlcikKQEAgLTEzMSwx NTMgKzk5LDYgQEAgZG1hX2FkZHJfdCBkcm1fZmJfY21hX2dldF9nZW1fYWRkcihzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZ2V0X2dl bV9hZGRyKTsKIAotc3RhdGljIGludCBkcm1fZmJfY21hX21tYXAoc3RydWN0IGZiX2luZm8gKmlu Zm8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQotewotCXJldHVybiBkbWFfbW1hcF93cml0 ZWNvbWJpbmUoaW5mby0+ZGV2aWNlLCB2bWEsIGluZm8tPnNjcmVlbl9iYXNlLAotCQkJCSAgICAg aW5mby0+Zml4LnNtZW1fc3RhcnQsIGluZm8tPmZpeC5zbWVtX2xlbik7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3QgZmJfb3BzIGRybV9mYmRldl9jbWFfb3BzID0gewotCS5vd25lcgkJPSBUSElTX01PRFVM RSwKLQlEUk1fRkJfSEVMUEVSX0RFRkFVTFRfT1BTLAotCS5mYl9maWxscmVjdAk9IGRybV9mYl9o ZWxwZXJfc3lzX2ZpbGxyZWN0LAotCS5mYl9jb3B5YXJlYQk9IGRybV9mYl9oZWxwZXJfc3lzX2Nv cHlhcmVhLAotCS5mYl9pbWFnZWJsaXQJPSBkcm1fZmJfaGVscGVyX3N5c19pbWFnZWJsaXQsCi0J LmZiX21tYXAJPSBkcm1fZmJfY21hX21tYXAsCi19OwotCi1zdGF0aWMgaW50IGRybV9mYmRldl9j bWFfZGVmZXJyZWRfaW9fbW1hcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKLQkJCQkJICBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKLXsKLQlmYl9kZWZlcnJlZF9pb19tbWFwKGluZm8sIHZtYSk7 Ci0Jdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHZtYS0+dm1fcGFnZV9w cm90KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGRybV9mYmRldl9jbWFfZGVmaW9f aW5pdChzdHJ1Y3QgZmJfaW5mbyAqZmJpLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2dlbV9jbWFfb2Jq ZWN0ICpjbWFfb2JqKQotewotCXN0cnVjdCBmYl9kZWZlcnJlZF9pbyAqZmJkZWZpbzsKLQlzdHJ1 Y3QgZmJfb3BzICpmYm9wczsKLQotCS8qCi0JICogUGVyIGRldmljZSBzdHJ1Y3R1cmVzIGFyZSBu ZWVkZWQgYmVjYXVzZToKLQkgKiBmYm9wczogZmJfZGVmZXJyZWRfaW9fY2xlYW51cCgpIGNsZWFy cyBmYm9wcy5mYl9tbWFwCi0JICogZmJkZWZpbzogaW5kaXZpZHVhbCBkZWxheXMKLQkgKi8KLQlm YmRlZmlvID0ga3phbGxvYyhzaXplb2YoKmZiZGVmaW8pLCBHRlBfS0VSTkVMKTsKLQlmYm9wcyA9 IGt6YWxsb2Moc2l6ZW9mKCpmYm9wcyksIEdGUF9LRVJORUwpOwotCWlmICghZmJkZWZpbyB8fCAh ZmJvcHMpIHsKLQkJa2ZyZWUoZmJkZWZpbyk7Ci0JCWtmcmVlKGZib3BzKTsKLQkJcmV0dXJuIC1F Tk9NRU07Ci0JfQotCi0JLyogY2FuJ3QgYmUgb2Zmc2V0IGZyb20gdmFkZHIgc2luY2UgZGlydHko KSB1c2VzIGNtYV9vYmogKi8KLQlmYmktPnNjcmVlbl9idWZmZXIgPSBjbWFfb2JqLT52YWRkcjsK LQkvKiBmYl9kZWZlcnJlZF9pb19mYXVsdCgpIG5lZWRzIGEgcGh5c2ljYWwgYWRkcmVzcyAqLwot CWZiaS0+Zml4LnNtZW1fc3RhcnQgPSBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKGZiaS0+c2Ny ZWVuX2J1ZmZlcikpOwotCi0JKmZib3BzID0gKmZiaS0+ZmJvcHM7Ci0JZmJpLT5mYm9wcyA9IGZi b3BzOwotCi0JZmJkZWZpby0+ZGVsYXkgPSBtc2Vjc190b19qaWZmaWVzKERFRkFVTFRfRkJERUZJ T19ERUxBWV9NUyk7Ci0JZmJkZWZpby0+ZGVmZXJyZWRfaW8gPSBkcm1fZmJfaGVscGVyX2RlZmVy cmVkX2lvOwotCWZiaS0+ZmJkZWZpbyA9IGZiZGVmaW87Ci0JZmJfZGVmZXJyZWRfaW9faW5pdChm YmkpOwotCWZiaS0+ZmJvcHMtPmZiX21tYXAgPSBkcm1fZmJkZXZfY21hX2RlZmVycmVkX2lvX21t YXA7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgZHJtX2ZiZGV2X2NtYV9kZWZpb19m aW5pKHN0cnVjdCBmYl9pbmZvICpmYmkpCi17Ci0JaWYgKCFmYmktPmZiZGVmaW8pCi0JCXJldHVy bjsKLQotCWZiX2RlZmVycmVkX2lvX2NsZWFudXAoZmJpKTsKLQlrZnJlZShmYmktPmZiZGVmaW8p OwotCWtmcmVlKGZiaS0+ZmJvcHMpOwotfQotCi1zdGF0aWMgaW50Ci1kcm1fZmJkZXZfY21hX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAotCXN0cnVjdCBkcm1fZmJfaGVscGVy X3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpCi17Ci0Jc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2Nt YSA9IHRvX2ZiZGV2X2NtYShoZWxwZXIpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBoZWxw ZXItPmRldjsKLQlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmI7Ci0JdW5zaWduZWQgaW50IGJ5dGVzX3Blcl9waXhlbDsKLQl1bnNpZ25l ZCBsb25nIG9mZnNldDsKLQlzdHJ1Y3QgZmJfaW5mbyAqZmJpOwotCXNpemVfdCBzaXplOwotCWlu dCByZXQ7Ci0KLQlEUk1fREVCVUdfS01TKCJzdXJmYWNlIHdpZHRoKCVkKSwgaGVpZ2h0KCVkKSBh bmQgYnBwKCVkKVxuIiwKLQkJCXNpemVzLT5zdXJmYWNlX3dpZHRoLCBzaXplcy0+c3VyZmFjZV9o ZWlnaHQsCi0JCQlzaXplcy0+c3VyZmFjZV9icHApOwotCi0JYnl0ZXNfcGVyX3BpeGVsID0gRElW X1JPVU5EX1VQKHNpemVzLT5zdXJmYWNlX2JwcCwgOCk7Ci0Jc2l6ZSA9IHNpemVzLT5zdXJmYWNl X3dpZHRoICogc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0ICogYnl0ZXNfcGVyX3BpeGVsOwotCW9iaiA9 IGRybV9nZW1fY21hX2NyZWF0ZShkZXYsIHNpemUpOwotCWlmIChJU19FUlIob2JqKSkKLQkJcmV0 dXJuIC1FTk9NRU07Ci0KLQlmYmkgPSBkcm1fZmJfaGVscGVyX2FsbG9jX2ZiaShoZWxwZXIpOwot CWlmIChJU19FUlIoZmJpKSkgewotCQlyZXQgPSBQVFJfRVJSKGZiaSk7Ci0JCWdvdG8gZXJyX2dl bV9mcmVlX29iamVjdDsKLQl9Ci0KLQlmYiA9IGRybV9nZW1fZmJkZXZfZmJfY3JlYXRlKGRldiwg c2l6ZXMsIDAsICZvYmotPmJhc2UsCi0JCQkJICAgICBmYmRldl9jbWEtPmZiX2Z1bmNzKTsKLQlp ZiAoSVNfRVJSKGZiKSkgewotCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRl IERSTSBmcmFtZWJ1ZmZlci5cbiIpOwotCQlyZXQgPSBQVFJfRVJSKGZiKTsKLQkJZ290byBlcnJf ZmJfaW5mb19kZXN0cm95OwotCX0KLQotCWhlbHBlci0+ZmIgPSBmYjsKLQotCWZiaS0+cGFyID0g aGVscGVyOwotCWZiaS0+ZmxhZ3MgPSBGQklORk9fRkxBR19ERUZBVUxUOwotCWZiaS0+ZmJvcHMg PSAmZHJtX2ZiZGV2X2NtYV9vcHM7Ci0KLQlkcm1fZmJfaGVscGVyX2ZpbGxfZml4KGZiaSwgZmIt PnBpdGNoZXNbMF0sIGZiLT5mb3JtYXQtPmRlcHRoKTsKLQlkcm1fZmJfaGVscGVyX2ZpbGxfdmFy KGZiaSwgaGVscGVyLCBzaXplcy0+ZmJfd2lkdGgsIHNpemVzLT5mYl9oZWlnaHQpOwotCi0Jb2Zm c2V0ID0gZmJpLT52YXIueG9mZnNldCAqIGJ5dGVzX3Blcl9waXhlbDsKLQlvZmZzZXQgKz0gZmJp LT52YXIueW9mZnNldCAqIGZiLT5waXRjaGVzWzBdOwotCi0JZGV2LT5tb2RlX2NvbmZpZy5mYl9i YXNlID0gKHJlc291cmNlX3NpemVfdClvYmotPnBhZGRyOwotCWZiaS0+c2NyZWVuX2Jhc2UgPSBv YmotPnZhZGRyICsgb2Zmc2V0OwotCWZiaS0+Zml4LnNtZW1fc3RhcnQgPSAodW5zaWduZWQgbG9u Zykob2JqLT5wYWRkciArIG9mZnNldCk7Ci0JZmJpLT5zY3JlZW5fc2l6ZSA9IHNpemU7Ci0JZmJp LT5maXguc21lbV9sZW4gPSBzaXplOwotCi0JaWYgKGZiLT5mdW5jcy0+ZGlydHkpIHsKLQkJcmV0 ID0gZHJtX2ZiZGV2X2NtYV9kZWZpb19pbml0KGZiaSwgb2JqKTsKLQkJaWYgKHJldCkKLQkJCWdv dG8gZXJyX2NtYV9kZXN0cm95OwotCX0KLQotCXJldHVybiAwOwotCi1lcnJfY21hX2Rlc3Ryb3k6 Ci0JZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZShmYik7Ci1lcnJfZmJfaW5mb19kZXN0cm95OgotCWRy bV9mYl9oZWxwZXJfZmluaShoZWxwZXIpOwotZXJyX2dlbV9mcmVlX29iamVjdDoKLQlkcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQoJm9iai0+YmFzZSk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGRybV9mYl9jbWFfaGVscGVyX2Z1 bmNzID0gewotCS5mYl9wcm9iZSA9IGRybV9mYmRldl9jbWFfY3JlYXRlLAotfTsKLQogLyoqCiAg KiBkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5jcygpIC0gQWxsb2NhdGUgYW5kIGluaXRp YWxpemUgZmJkZXYgZW11bGF0aW9uCiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC0yOTUsNTMgKzEx Niw3IEBAIGludCBkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCXVuc2lnbmVkIGludCBwcmVmZXJyZWRfYnBwLCB1bnNpZ25lZCBpbnQgbWF4 X2Nvbm5fY291bnQsCiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3Mp CiB7Ci0Jc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYTsKLQlzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyOwotCWludCByZXQ7Ci0KLQlpZiAoIXByZWZlcnJlZF9icHApCi0JCXBy ZWZlcnJlZF9icHAgPSBkZXYtPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aDsKLQlpZiAoIXBy ZWZlcnJlZF9icHApCi0JCXByZWZlcnJlZF9icHAgPSAzMjsKLQotCWlmICghbWF4X2Nvbm5fY291 bnQpCi0JCW1heF9jb25uX2NvdW50ID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwot Ci0JZmJkZXZfY21hID0ga3phbGxvYyhzaXplb2YoKmZiZGV2X2NtYSksIEdGUF9LRVJORUwpOwot CWlmICghZmJkZXZfY21hKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWZiZGV2X2NtYS0+ZmJfZnVu Y3MgPSBmdW5jczsKLQlmYl9oZWxwZXIgPSAmZmJkZXZfY21hLT5mYl9oZWxwZXI7Ci0KLQlkcm1f ZmJfaGVscGVyX3ByZXBhcmUoZGV2LCBmYl9oZWxwZXIsICZkcm1fZmJfY21hX2hlbHBlcl9mdW5j cyk7Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBmYl9oZWxwZXIsIG1heF9jb25u X2NvdW50KTsKLQlpZiAocmV0IDwgMCkgewotCQlEUk1fREVWX0VSUk9SKGRldi0+ZGV2LCAiRmFp bGVkIHRvIGluaXRpYWxpemUgZmJkZXYgaGVscGVyLlxuIik7Ci0JCWdvdG8gZXJyX2ZyZWU7Ci0J fQotCi0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3JzKGZiX2hl bHBlcik7Ci0JaWYgKHJldCA8IDApIHsKLQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgIkZhaWxl ZCB0byBhZGQgY29ubmVjdG9ycy5cbiIpOwotCQlnb3RvIGVycl9kcm1fZmJfaGVscGVyX2Zpbmk7 Ci0JfQotCi0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhmYl9oZWxwZXIsIHBy ZWZlcnJlZF9icHApOwotCWlmIChyZXQgPCAwKSB7Ci0JCURSTV9ERVZfRVJST1IoZGV2LT5kZXYs ICJGYWlsZWQgdG8gc2V0IGZiZGV2IGNvbmZpZ3VyYXRpb24uXG4iKTsKLQkJZ290byBlcnJfZHJt X2ZiX2hlbHBlcl9maW5pOwotCX0KLQotCXJldHVybiAwOwotCi1lcnJfZHJtX2ZiX2hlbHBlcl9m aW5pOgotCWRybV9mYl9oZWxwZXJfZmluaShmYl9oZWxwZXIpOwotZXJyX2ZyZWU6Ci0Ja2ZyZWUo ZmJkZXZfY21hKTsKLQotCXJldHVybiByZXQ7CisJcmV0dXJuIGRybV9mYl9jbWFfZmJkZXZfaW5p dChkZXYsIHByZWZlcnJlZF9icHAsIG1heF9jb25uX2NvdW50KTsKIH0KIEVYUE9SVF9TWU1CT0xf R1BMKGRybV9mYl9jbWFfZmJkZXZfaW5pdF93aXRoX2Z1bmNzKTsKIApAQCAtMzU5LDggKzEzNCwx NCBAQCBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5jcyk7 CiBpbnQgZHJtX2ZiX2NtYV9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2ln bmVkIGludCBwcmVmZXJyZWRfYnBwLAogCQkJICB1bnNpZ25lZCBpbnQgbWF4X2Nvbm5fY291bnQp CiB7Ci0JcmV0dXJuIGRybV9mYl9jbWFfZmJkZXZfaW5pdF93aXRoX2Z1bmNzKGRldiwgcHJlZmVy cmVkX2JwcCwKLQkJCQkJCW1heF9jb25uX2NvdW50LCBOVUxMKTsKKwlzdHJ1Y3QgZHJtX2ZiZGV2 X2NtYSAqZmJkZXZfY21hOworCisJLyogZGV2LT5mYl9oZWxwZXIgd2lsbCBpbmRpcmVjdGx5IHBv aW50IHRvIGZiZGV2X2NtYSBhZnRlciB0aGlzIGNhbGwgKi8KKwlmYmRldl9jbWEgPSBkcm1fZmJk ZXZfY21hX2luaXQoZGV2LCBwcmVmZXJyZWRfYnBwLCBtYXhfY29ubl9jb3VudCk7CisJaWYgKElT X0VSUihmYmRldl9jbWEpKQorCQlyZXR1cm4gUFRSX0VSUihmYmRldl9jbWEpOworCisJcmV0dXJu IDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2ZiZGV2X2luaXQpOwogCkBAIC0z NzAsODcgKzE1MSwxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2ZiZGV2X2luaXQp OwogICovCiB2b2lkIGRybV9mYl9jbWFfZmJkZXZfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogewotCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBkZXYtPmZiX2hlbHBlcjsK LQotCWlmICghZmJfaGVscGVyKQotCQlyZXR1cm47Ci0KLQkvKiBVbnJlZ2lzdGVyIGlmIGl0IGhh c24ndCBiZWVuIGRvbmUgYWxyZWFkeSAqLwotCWlmIChmYl9oZWxwZXItPmZiZGV2ICYmIGZiX2hl bHBlci0+ZmJkZXYtPmRldikKLQkJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShmYl9oZWxw ZXIpOwotCi0JaWYgKGZiX2hlbHBlci0+ZmJkZXYpCi0JCWRybV9mYmRldl9jbWFfZGVmaW9fZmlu aShmYl9oZWxwZXItPmZiZGV2KTsKLQotCWlmIChmYl9oZWxwZXItPmZiKQotCQlkcm1fZnJhbWVi dWZmZXJfcmVtb3ZlKGZiX2hlbHBlci0+ZmIpOwotCi0JZHJtX2ZiX2hlbHBlcl9maW5pKGZiX2hl bHBlcik7Ci0Ja2ZyZWUodG9fZmJkZXZfY21hKGZiX2hlbHBlcikpOworCWlmIChkZXYtPmZiX2hl bHBlcikKKwkJZHJtX2ZiZGV2X2NtYV9maW5pKHRvX2ZiZGV2X2NtYShkZXYtPmZiX2hlbHBlcikp OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2ZiX2NtYV9mYmRldl9maW5pKTsKIAotLyoqCi0g KiBkcm1fZmJkZXZfY21hX2luaXRfd2l0aF9mdW5jcygpIC0gQWxsb2NhdGUgYW5kIGluaXRpYWxp emVzIGEgZHJtX2ZiZGV2X2NtYSBzdHJ1Y3QKLSAqIEBkZXY6IERSTSBkZXZpY2UKLSAqIEBwcmVm ZXJyZWRfYnBwOiBQcmVmZXJyZWQgYml0cyBwZXIgcGl4ZWwgZm9yIHRoZSBkZXZpY2UKLSAqIEBt YXhfY29ubl9jb3VudDogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdG9ycwotICogQGZ1bmNzOiBm YiBoZWxwZXIgZnVuY3Rpb25zLCBpbiBwYXJ0aWN1bGFyIGEgY3VzdG9tIGRpcnR5KCkgY2FsbGJh Y2sKLSAqCi0gKiBSZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIGRybV9mYmRldl9jbWEgc3RydWN0 IG9yIGEgRVJSX1BUUi4KLSAqLwotc3RydWN0IGRybV9mYmRldl9jbWEgKmRybV9mYmRldl9jbWFf aW5pdF93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JdW5zaWduZWQgaW50IHBy ZWZlcnJlZF9icHAsIHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCwKLQljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpmdW5jcykKLXsKLQlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAq ZmJkZXZfY21hOwotCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXI7Ci0JaW50IHJldDsKLQot CWZiZGV2X2NtYSA9IGt6YWxsb2Moc2l6ZW9mKCpmYmRldl9jbWEpLCBHRlBfS0VSTkVMKTsKLQlp ZiAoIWZiZGV2X2NtYSkgewotCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRl IGRybSBmYmRldi5cbiIpOwotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQl9Ci0JZmJkZXZf Y21hLT5mYl9mdW5jcyA9IGZ1bmNzOwotCi0JaGVscGVyID0gJmZiZGV2X2NtYS0+ZmJfaGVscGVy OwotCi0JZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKGRldiwgaGVscGVyLCAmZHJtX2ZiX2NtYV9oZWxw ZXJfZnVuY3MpOwotCi0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0KGRldiwgaGVscGVyLCBtYXhf Y29ubl9jb3VudCk7Ci0JaWYgKHJldCA8IDApIHsKLQkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxl ZCB0byBpbml0aWFsaXplIGRybSBmYiBoZWxwZXIuXG4iKTsKLQkJZ290byBlcnJfZnJlZTsKLQl9 Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoaGVscGVy KTsKLQlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGFkZCBj b25uZWN0b3JzLlxuIik7Ci0JCWdvdG8gZXJyX2RybV9mYl9oZWxwZXJfZmluaTsKLQotCX0KLQot CXJldCA9IGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoaGVscGVyLCBwcmVmZXJyZWRfYnBw KTsKLQlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIHNldCBp bml0aWFsIGh3IGNvbmZpZ3VyYXRpb24uXG4iKTsKLQkJZ290byBlcnJfZHJtX2ZiX2hlbHBlcl9m aW5pOwotCX0KLQotCXJldHVybiBmYmRldl9jbWE7Ci0KLWVycl9kcm1fZmJfaGVscGVyX2Zpbmk6 Ci0JZHJtX2ZiX2hlbHBlcl9maW5pKGhlbHBlcik7Ci1lcnJfZnJlZToKLQlrZnJlZShmYmRldl9j bWEpOwotCi0JcmV0dXJuIEVSUl9QVFIocmV0KTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGRybV9m YmRldl9jbWFfaW5pdF93aXRoX2Z1bmNzKTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXJfZnVuY3MgZHJtX2ZiX2NtYV9mdW5jcyA9IHsKLQkuZGVzdHJveQk9IGRybV9nZW1f ZmJfZGVzdHJveSwKLQkuY3JlYXRlX2hhbmRsZQk9IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSwK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyBkcm1fZmJfY21hX2hlbHBl cl9mdW5jcyA9IHsKKwkuZmJfcHJvYmUgPSBkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUsCiB9 OwogCiAvKioKQEAgLTQ2NCw5ICsxNzEsMzQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXJfZnVuY3MgZHJtX2ZiX2NtYV9mdW5jcyA9IHsKIHN0cnVjdCBkcm1fZmJkZXZfY21h ICpkcm1fZmJkZXZfY21hX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl1bnNpZ25lZCBp bnQgcHJlZmVycmVkX2JwcCwgdW5zaWduZWQgaW50IG1heF9jb25uX2NvdW50KQogewotCXJldHVy biBkcm1fZmJkZXZfY21hX2luaXRfd2l0aF9mdW5jcyhkZXYsIHByZWZlcnJlZF9icHAsCi0JCQkJ CSAgICAgbWF4X2Nvbm5fY291bnQsCi0JCQkJCSAgICAgJmRybV9mYl9jbWFfZnVuY3MpOworCXN0 cnVjdCBkcm1fZmJkZXZfY21hICpmYmRldl9jbWE7CisJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlcjsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKKwlpbnQgcmV0OworCisJ ZmJkZXZfY21hID0ga3phbGxvYyhzaXplb2YoKmZiZGV2X2NtYSksIEdGUF9LRVJORUwpOworCWlm ICghZmJkZXZfY21hKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWZiX2hlbHBlciA9 ICZmYmRldl9jbWEtPmZiX2hlbHBlcjsKKworCXJldCA9IGRybV9jbGllbnRfbmV3KGRldiwgJmZi X2hlbHBlci0+Y2xpZW50LCAiZmJkZXYiKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlOwor CisJcmV0ID0gZHJtX2ZiX2hlbHBlcl9mYmRldl9zZXR1cChkZXYsIGZiX2hlbHBlciwgJmRybV9m Yl9jbWFfaGVscGVyX2Z1bmNzLAorCQkJCQlwcmVmZXJyZWRfYnBwLCBtYXhfY29ubl9jb3VudCk7 CisJaWYgKHJldCkKKwkJZ290byBlcnJfY2xpZW50X3B1dDsKKworCXJldHVybiBmYmRldl9jbWE7 CisKK2Vycl9jbGllbnRfcHV0OgorCWRybV9jbGllbnRfcHV0KGNsaWVudCk7CitlcnJfZnJlZToK KwlrZnJlZShmYmRldl9jbWEpOworCisJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKGRybV9mYmRldl9jbWFfaW5pdCk7CiAKQEAgLTQ3NywxNCArMjA5LDcgQEAgRVhQ T1JUX1NZTUJPTF9HUEwoZHJtX2ZiZGV2X2NtYV9pbml0KTsKIHZvaWQgZHJtX2ZiZGV2X2NtYV9m aW5pKHN0cnVjdCBkcm1fZmJkZXZfY21hICpmYmRldl9jbWEpCiB7CiAJZHJtX2ZiX2hlbHBlcl91 bnJlZ2lzdGVyX2ZiaSgmZmJkZXZfY21hLT5mYl9oZWxwZXIpOwotCWlmIChmYmRldl9jbWEtPmZi X2hlbHBlci5mYmRldikKLQkJZHJtX2ZiZGV2X2NtYV9kZWZpb19maW5pKGZiZGV2X2NtYS0+ZmJf aGVscGVyLmZiZGV2KTsKLQotCWlmIChmYmRldl9jbWEtPmZiX2hlbHBlci5mYikKLQkJZHJtX2Zy YW1lYnVmZmVyX3JlbW92ZShmYmRldl9jbWEtPmZiX2hlbHBlci5mYik7Ci0KLQlkcm1fZmJfaGVs cGVyX2ZpbmkoJmZiZGV2X2NtYS0+ZmJfaGVscGVyKTsKLQlrZnJlZShmYmRldl9jbWEpOworCS8q IEFsbCByZXNvdXJjZXMgaGF2ZSBub3cgYmVlbiBmcmVlZCBieSBkcm1fZmJkZXZfZmJfZGVzdHJv eSgpICovCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJkZXZfY21hX2ZpbmkpOwogCmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfY21hX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJt X2ZiX2NtYV9oZWxwZXIuaAppbmRleCBkNTMyZjg4YThkNTUuLmEwNTQ2YzM0NTFmOSAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9k cm1fZmJfY21hX2hlbHBlci5oCkBAIC0yMyw5ICsyMyw2IEBAIGludCBkcm1fZmJfY21hX2ZiZGV2 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHByZWZlcnJlZF9icHAs CiAJCQkgIHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCk7CiB2b2lkIGRybV9mYl9jbWFfZmJk ZXZfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAotc3RydWN0IGRybV9mYmRldl9jbWEg KmRybV9mYmRldl9jbWFfaW5pdF93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0J dW5zaWduZWQgaW50IHByZWZlcnJlZF9icHAsIHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCwK LQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpmdW5jcyk7CiBzdHJ1Y3QgZHJt X2ZiZGV2X2NtYSAqZHJtX2ZiZGV2X2NtYV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ dW5zaWduZWQgaW50IHByZWZlcnJlZF9icHAsIHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCk7 CiB2b2lkIGRybV9mYmRldl9jbWFfZmluaShzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXZfY21h KTsKLS0gCjIuMTUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==