From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH 7/9] drm/cma-helper: Use the generic fbdev emulation Date: Wed, 23 May 2018 16:34:09 +0200 Message-ID: <20180523143411.64070-8-noralf@tronnes.org> References: <20180523143411.64070-1-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 8450B6E4C2 for ; Wed, 23 May 2018 14:34:38 +0000 (UTC) In-Reply-To: <20180523143411.64070-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+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgfCAzNjUgKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fZmJfY21hX2hlbHBlci5o ICAgICB8ICAgMyAtCiAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDMyMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCmluZGV4IDE4NmQwMGFkZmI1 Zi4uNzZlMmY3OTc3Nzc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9o ZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwpAQCAtMTgs NiArMTgsNyBAQAogICovCiAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9k cm1fY2xpZW50Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxk cm0vZHJtX2ZyYW1lYnVmZmVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5o PgpAQCAtMjYsMTEgKzI3LDggQEAKICNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CiAjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CiAKLSNkZWZpbmUgREVGQVVMVF9GQkRFRklPX0RFTEFZX01TIDUw Ci0KIHN0cnVjdCBkcm1fZmJkZXZfY21hIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcglmYl9oZWxw ZXI7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAqZmJfZnVuY3M7CiB9Owog CiAvKioKQEAgLTQ0LDM2ICs0Miw2IEBAIHN0cnVjdCBkcm1fZmJkZXZfY21hIHsKICAqCiAgKiBB biBmYmRldiBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgY21hIGlzIGFsc28gYXZhaWxhYmxlIGJ5IGNh bGxpbmcKICAqIGRybV9mYl9jbWFfZmJkZXZfaW5pdCgpLiBkcm1fZmJfY21hX2ZiZGV2X2Zpbmko KSB0ZWFycyBpdCBkb3duLgotICogSWYgdGhlICZkcm1fZnJhbWVidWZmZXJfZnVuY3MuZGlydHkg Y2FsbGJhY2sgaXMgc2V0LCBmYl9kZWZlcnJlZF9pbyB3aWxsIGJlCi0gKiBzZXQgdXAgYXV0b21h dGljYWxseS4gJmRybV9mcmFtZWJ1ZmZlcl9mdW5jcy5kaXJ0eSBpcyBjYWxsZWQgYnkKLSAqIGRy bV9mYl9oZWxwZXJfZGVmZXJyZWRfaW8oKSBpbiBwcm9jZXNzIGNvbnRleHQgKCZzdHJ1Y3QgZGVs YXllZF93b3JrKS4KLSAqCi0gKiBFeGFtcGxlIGZiZGV2IGRlZmVycmVkIGlvIGNvZGU6OgotICoK LSAqICAgICBzdGF0aWMgaW50IGRyaXZlcl9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdiwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBm bGFncywgdW5zaWduZWQgY29sb3IsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAotICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIG51bV9jbGlwcykKLSAqICAgICB7Ci0gKiAgICAgICAgIHN0cnVjdCBk cm1fZ2VtX2NtYV9vYmplY3QgKmNtYSA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOwot ICogICAgICAgICAuLi4gcHVzaCBjaGFuZ2VzIC4uLgotICogICAgICAgICByZXR1cm4gMDsKLSAq ICAgICB9Ci0gKgotICogICAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIGRy aXZlcl9mYl9mdW5jcyA9IHsKLSAqICAgICAgICAgLmRlc3Ryb3kgICAgICAgPSBkcm1fZ2VtX2Zi X2Rlc3Ryb3ksCi0gKiAgICAgICAgIC5jcmVhdGVfaGFuZGxlID0gZHJtX2dlbV9mYl9jcmVhdGVf aGFuZGxlLAotICogICAgICAgICAuZGlydHkgICAgICAgICA9IGRyaXZlcl9mYl9kaXJ0eSwKLSAq ICAgICB9OwotICoKLSAqIEluaXRpYWxpemU6OgotICoKLSAqICAgICBmYmRldiA9IGRybV9mYl9j bWFfZmJkZXZfaW5pdF93aXRoX2Z1bmNzKGRldiwgMTYsCi0gKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjLAotICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5tb2RlX2NvbmZpZy5u dW1fY29ubmVjdG9yLAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmRyaXZlcl9mYl9mdW5jcyk7Ci0gKgogICovCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRy bV9mYmRldl9jbWEgKnRvX2ZiZGV2X2NtYShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyKQpA QCAtMTMxLDE1MyArOTksNiBAQCBkbWFfYWRkcl90IGRybV9mYl9jbWFfZ2V0X2dlbV9hZGRyKHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogfQogRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2ZiX2Nt YV9nZXRfZ2VtX2FkZHIpOwogCi1zdGF0aWMgaW50IGRybV9mYl9jbWFfbW1hcChzdHJ1Y3QgZmJf aW5mbyAqaW5mbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCi17Ci0JcmV0dXJuIGRtYV9t bWFwX3dyaXRlY29tYmluZShpbmZvLT5kZXZpY2UsIHZtYSwgaW5mby0+c2NyZWVuX2Jhc2UsCi0J CQkJICAgICBpbmZvLT5maXguc21lbV9zdGFydCwgaW5mby0+Zml4LnNtZW1fbGVuKTsKLX0KLQot c3RhdGljIHN0cnVjdCBmYl9vcHMgZHJtX2ZiZGV2X2NtYV9vcHMgPSB7Ci0JLm93bmVyCQk9IFRI SVNfTU9EVUxFLAotCURSTV9GQl9IRUxQRVJfREVGQVVMVF9PUFMsCi0JLmZiX2ZpbGxyZWN0CT0g ZHJtX2ZiX2hlbHBlcl9zeXNfZmlsbHJlY3QsCi0JLmZiX2NvcHlhcmVhCT0gZHJtX2ZiX2hlbHBl cl9zeXNfY29weWFyZWEsCi0JLmZiX2ltYWdlYmxpdAk9IGRybV9mYl9oZWxwZXJfc3lzX2ltYWdl YmxpdCwKLQkuZmJfbW1hcAk9IGRybV9mYl9jbWFfbW1hcCwKLX07Ci0KLXN0YXRpYyBpbnQgZHJt X2ZiZGV2X2NtYV9kZWZlcnJlZF9pb19tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLAotCQkJCQkg IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQotewotCWZiX2RlZmVycmVkX2lvX21tYXAoaW5m bywgdm1hKTsKLQl2bWEtPnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0ZWNvbWJpbmUodm1hLT52 bV9wYWdlX3Byb3QpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgZHJtX2ZiZGV2X2Nt YV9kZWZpb19pbml0KHN0cnVjdCBmYl9pbmZvICpmYmksCi0JCQkJICAgIHN0cnVjdCBkcm1fZ2Vt X2NtYV9vYmplY3QgKmNtYV9vYmopCi17Ci0Jc3RydWN0IGZiX2RlZmVycmVkX2lvICpmYmRlZmlv OwotCXN0cnVjdCBmYl9vcHMgKmZib3BzOwotCi0JLyoKLQkgKiBQZXIgZGV2aWNlIHN0cnVjdHVy ZXMgYXJlIG5lZWRlZCBiZWNhdXNlOgotCSAqIGZib3BzOiBmYl9kZWZlcnJlZF9pb19jbGVhbnVw KCkgY2xlYXJzIGZib3BzLmZiX21tYXAKLQkgKiBmYmRlZmlvOiBpbmRpdmlkdWFsIGRlbGF5cwot CSAqLwotCWZiZGVmaW8gPSBremFsbG9jKHNpemVvZigqZmJkZWZpbyksIEdGUF9LRVJORUwpOwot CWZib3BzID0ga3phbGxvYyhzaXplb2YoKmZib3BzKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmYmRl ZmlvIHx8ICFmYm9wcykgewotCQlrZnJlZShmYmRlZmlvKTsKLQkJa2ZyZWUoZmJvcHMpOwotCQly ZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQkvKiBjYW4ndCBiZSBvZmZzZXQgZnJvbSB2YWRkciBzaW5j ZSBkaXJ0eSgpIHVzZXMgY21hX29iaiAqLwotCWZiaS0+c2NyZWVuX2J1ZmZlciA9IGNtYV9vYmot PnZhZGRyOwotCS8qIGZiX2RlZmVycmVkX2lvX2ZhdWx0KCkgbmVlZHMgYSBwaHlzaWNhbCBhZGRy ZXNzICovCi0JZmJpLT5maXguc21lbV9zdGFydCA9IHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2Uo ZmJpLT5zY3JlZW5fYnVmZmVyKSk7Ci0KLQkqZmJvcHMgPSAqZmJpLT5mYm9wczsKLQlmYmktPmZi b3BzID0gZmJvcHM7Ci0KLQlmYmRlZmlvLT5kZWxheSA9IG1zZWNzX3RvX2ppZmZpZXMoREVGQVVM VF9GQkRFRklPX0RFTEFZX01TKTsKLQlmYmRlZmlvLT5kZWZlcnJlZF9pbyA9IGRybV9mYl9oZWxw ZXJfZGVmZXJyZWRfaW87Ci0JZmJpLT5mYmRlZmlvID0gZmJkZWZpbzsKLQlmYl9kZWZlcnJlZF9p b19pbml0KGZiaSk7Ci0JZmJpLT5mYm9wcy0+ZmJfbW1hcCA9IGRybV9mYmRldl9jbWFfZGVmZXJy ZWRfaW9fbW1hcDsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBkcm1fZmJkZXZfY21h X2RlZmlvX2Zpbmkoc3RydWN0IGZiX2luZm8gKmZiaSkKLXsKLQlpZiAoIWZiaS0+ZmJkZWZpbykK LQkJcmV0dXJuOwotCi0JZmJfZGVmZXJyZWRfaW9fY2xlYW51cChmYmkpOwotCWtmcmVlKGZiaS0+ ZmJkZWZpbyk7Ci0Ja2ZyZWUoZmJpLT5mYm9wcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLWRybV9mYmRl dl9jbWFfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCi0Jc3RydWN0IGRybV9m Yl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcykKLXsKLQlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAq ZmJkZXZfY21hID0gdG9fZmJkZXZfY21hKGhlbHBlcik7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGhlbHBlci0+ZGV2OwotCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9iajsKLQlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKLQl1bnNpZ25lZCBpbnQgYnl0ZXNfcGVyX3BpeGVsOwot CXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotCXN0cnVjdCBmYl9pbmZvICpmYmk7Ci0Jc2l6ZV90IHNp emU7Ci0JaW50IHJldDsKLQotCURSTV9ERUJVR19LTVMoInN1cmZhY2Ugd2lkdGgoJWQpLCBoZWln aHQoJWQpIGFuZCBicHAoJWQpXG4iLAotCQkJc2l6ZXMtPnN1cmZhY2Vfd2lkdGgsIHNpemVzLT5z dXJmYWNlX2hlaWdodCwKLQkJCXNpemVzLT5zdXJmYWNlX2JwcCk7Ci0KLQlieXRlc19wZXJfcGl4 ZWwgPSBESVZfUk9VTkRfVVAoc2l6ZXMtPnN1cmZhY2VfYnBwLCA4KTsKLQlzaXplID0gc2l6ZXMt PnN1cmZhY2Vfd2lkdGggKiBzaXplcy0+c3VyZmFjZV9oZWlnaHQgKiBieXRlc19wZXJfcGl4ZWw7 Ci0Jb2JqID0gZHJtX2dlbV9jbWFfY3JlYXRlKGRldiwgc2l6ZSk7Ci0JaWYgKElTX0VSUihvYmop KQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWZiaSA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGhl bHBlcik7Ci0JaWYgKElTX0VSUihmYmkpKSB7Ci0JCXJldCA9IFBUUl9FUlIoZmJpKTsKLQkJZ290 byBlcnJfZ2VtX2ZyZWVfb2JqZWN0OwotCX0KLQotCWZiID0gZHJtX2dlbV9mYmRldl9mYl9jcmVh dGUoZGV2LCBzaXplcywgMCwgJm9iai0+YmFzZSwKLQkJCQkgICAgIGZiZGV2X2NtYS0+ZmJfZnVu Y3MpOwotCWlmIChJU19FUlIoZmIpKSB7Ci0JCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8g YWxsb2NhdGUgRFJNIGZyYW1lYnVmZmVyLlxuIik7Ci0JCXJldCA9IFBUUl9FUlIoZmIpOwotCQln b3RvIGVycl9mYl9pbmZvX2Rlc3Ryb3k7Ci0JfQotCi0JaGVscGVyLT5mYiA9IGZiOwotCi0JZmJp LT5wYXIgPSBoZWxwZXI7Ci0JZmJpLT5mbGFncyA9IEZCSU5GT19GTEFHX0RFRkFVTFQ7Ci0JZmJp LT5mYm9wcyA9ICZkcm1fZmJkZXZfY21hX29wczsKLQotCWRybV9mYl9oZWxwZXJfZmlsbF9maXgo ZmJpLCBmYi0+cGl0Y2hlc1swXSwgZmItPmZvcm1hdC0+ZGVwdGgpOwotCWRybV9mYl9oZWxwZXJf ZmlsbF92YXIoZmJpLCBoZWxwZXIsIHNpemVzLT5mYl93aWR0aCwgc2l6ZXMtPmZiX2hlaWdodCk7 Ci0KLQlvZmZzZXQgPSBmYmktPnZhci54b2Zmc2V0ICogYnl0ZXNfcGVyX3BpeGVsOwotCW9mZnNl dCArPSBmYmktPnZhci55b2Zmc2V0ICogZmItPnBpdGNoZXNbMF07Ci0KLQlkZXYtPm1vZGVfY29u ZmlnLmZiX2Jhc2UgPSAocmVzb3VyY2Vfc2l6ZV90KW9iai0+cGFkZHI7Ci0JZmJpLT5zY3JlZW5f YmFzZSA9IG9iai0+dmFkZHIgKyBvZmZzZXQ7Ci0JZmJpLT5maXguc21lbV9zdGFydCA9ICh1bnNp Z25lZCBsb25nKShvYmotPnBhZGRyICsgb2Zmc2V0KTsKLQlmYmktPnNjcmVlbl9zaXplID0gc2l6 ZTsKLQlmYmktPmZpeC5zbWVtX2xlbiA9IHNpemU7Ci0KLQlpZiAoZmItPmZ1bmNzLT5kaXJ0eSkg ewotCQlyZXQgPSBkcm1fZmJkZXZfY21hX2RlZmlvX2luaXQoZmJpLCBvYmopOwotCQlpZiAocmV0 KQotCQkJZ290byBlcnJfY21hX2Rlc3Ryb3k7Ci0JfQotCi0JcmV0dXJuIDA7Ci0KLWVycl9jbWFf ZGVzdHJveToKLQlkcm1fZnJhbWVidWZmZXJfcmVtb3ZlKGZiKTsKLWVycl9mYl9pbmZvX2Rlc3Ry b3k6Ci0JZHJtX2ZiX2hlbHBlcl9maW5pKGhlbHBlcik7Ci1lcnJfZ2VtX2ZyZWVfb2JqZWN0Ogot CWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmb2JqLT5iYXNlKTsKLQlyZXR1cm4gcmV0Owot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3MgZHJtX2ZiX2NtYV9o ZWxwZXJfZnVuY3MgPSB7Ci0JLmZiX3Byb2JlID0gZHJtX2ZiZGV2X2NtYV9jcmVhdGUsCi19Owot CiAvKioKICAqIGRybV9mYl9jbWFfZmJkZXZfaW5pdF93aXRoX2Z1bmNzKCkgLSBBbGxvY2F0ZSBh bmQgaW5pdGlhbGl6ZSBmYmRldiBlbXVsYXRpb24KICAqIEBkZXY6IERSTSBkZXZpY2UKQEAgLTI5 NSw1MyArMTE2LDcgQEAgaW50IGRybV9mYl9jbWFfZmJkZXZfaW5pdF93aXRoX2Z1bmNzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJdW5zaWduZWQgaW50IHByZWZlcnJlZF9icHAsIHVuc2lnbmVk IGludCBtYXhfY29ubl9jb3VudCwKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNz ICpmdW5jcykKIHsKLQlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXZfY21hOwotCXN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXI7Ci0JaW50IHJldDsKLQotCWlmICghcHJlZmVycmVkX2Jw cCkKLQkJcHJlZmVycmVkX2JwcCA9IGRldi0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoOwot CWlmICghcHJlZmVycmVkX2JwcCkKLQkJcHJlZmVycmVkX2JwcCA9IDMyOwotCi0JaWYgKCFtYXhf Y29ubl9jb3VudCkKLQkJbWF4X2Nvbm5fY291bnQgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25u ZWN0b3I7Ci0KLQlmYmRldl9jbWEgPSBremFsbG9jKHNpemVvZigqZmJkZXZfY21hKSwgR0ZQX0tF Uk5FTCk7Ci0JaWYgKCFmYmRldl9jbWEpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JZmJkZXZfY21h LT5mYl9mdW5jcyA9IGZ1bmNzOwotCWZiX2hlbHBlciA9ICZmYmRldl9jbWEtPmZiX2hlbHBlcjsK LQotCWRybV9mYl9oZWxwZXJfcHJlcGFyZShkZXYsIGZiX2hlbHBlciwgJmRybV9mYl9jbWFfaGVs cGVyX2Z1bmNzKTsKLQotCXJldCA9IGRybV9mYl9oZWxwZXJfaW5pdChkZXYsIGZiX2hlbHBlciwg bWF4X2Nvbm5fY291bnQpOwotCWlmIChyZXQgPCAwKSB7Ci0JCURSTV9ERVZfRVJST1IoZGV2LT5k ZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBmYmRldiBoZWxwZXIuXG4iKTsKLQkJZ290byBlcnJf ZnJlZTsKLQl9Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3Rv cnMoZmJfaGVscGVyKTsKLQlpZiAocmV0IDwgMCkgewotCQlEUk1fREVWX0VSUk9SKGRldi0+ZGV2 LCAiRmFpbGVkIHRvIGFkZCBjb25uZWN0b3JzLlxuIik7Ci0JCWdvdG8gZXJyX2RybV9mYl9oZWxw ZXJfZmluaTsKLQl9Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKGZiX2hl bHBlciwgcHJlZmVycmVkX2JwcCk7Ci0JaWYgKHJldCA8IDApIHsKLQkJRFJNX0RFVl9FUlJPUihk ZXYtPmRldiwgIkZhaWxlZCB0byBzZXQgZmJkZXYgY29uZmlndXJhdGlvbi5cbiIpOwotCQlnb3Rv IGVycl9kcm1fZmJfaGVscGVyX2Zpbmk7Ci0JfQotCi0JcmV0dXJuIDA7Ci0KLWVycl9kcm1fZmJf aGVscGVyX2Zpbmk6Ci0JZHJtX2ZiX2hlbHBlcl9maW5pKGZiX2hlbHBlcik7Ci1lcnJfZnJlZToK LQlrZnJlZShmYmRldl9jbWEpOwotCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gZHJtX2ZiX2NtYV9m YmRldl9pbml0KGRldiwgcHJlZmVycmVkX2JwcCwgbWF4X2Nvbm5fY291bnQpOwogfQogRVhQT1JU X1NZTUJPTF9HUEwoZHJtX2ZiX2NtYV9mYmRldl9pbml0X3dpdGhfZnVuY3MpOwogCkBAIC0zNTks OCArMTM0LDE0IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZmJkZXZfaW5pdF93aXRo X2Z1bmNzKTsKIGludCBkcm1fZmJfY21hX2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHByZWZlcnJlZF9icHAsCiAJCQkgIHVuc2lnbmVkIGludCBtYXhfY29u bl9jb3VudCkKIHsKLQlyZXR1cm4gZHJtX2ZiX2NtYV9mYmRldl9pbml0X3dpdGhfZnVuY3MoZGV2 LCBwcmVmZXJyZWRfYnBwLAotCQkJCQkJbWF4X2Nvbm5fY291bnQsIE5VTEwpOworCXN0cnVjdCBk cm1fZmJkZXZfY21hICpmYmRldl9jbWE7CisKKwkvKiBkZXYtPmZiX2hlbHBlciB3aWxsIGluZGly ZWN0bHkgcG9pbnQgdG8gZmJkZXZfY21hIGFmdGVyIHRoaXMgY2FsbCAqLworCWZiZGV2X2NtYSA9 IGRybV9mYmRldl9jbWFfaW5pdChkZXYsIHByZWZlcnJlZF9icHAsIG1heF9jb25uX2NvdW50KTsK KwlpZiAoSVNfRVJSKGZiZGV2X2NtYSkpCisJCXJldHVybiBQVFJfRVJSKGZiZGV2X2NtYSk7CisK KwlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZmJkZXZfaW5pdCk7 CiAKQEAgLTM3MCw4NyArMTUxLDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9mYl9jbWFfZmJk ZXZfaW5pdCk7CiAgKi8KIHZvaWQgZHJtX2ZiX2NtYV9mYmRldl9maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7Ci0Jc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGRldi0+ZmJf aGVscGVyOwotCi0JaWYgKCFmYl9oZWxwZXIpCi0JCXJldHVybjsKLQotCS8qIFVucmVnaXN0ZXIg aWYgaXQgaGFzbid0IGJlZW4gZG9uZSBhbHJlYWR5ICovCi0JaWYgKGZiX2hlbHBlci0+ZmJkZXYg JiYgZmJfaGVscGVyLT5mYmRldi0+ZGV2KQotCQlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJp KGZiX2hlbHBlcik7Ci0KLQlpZiAoZmJfaGVscGVyLT5mYmRldikKLQkJZHJtX2ZiZGV2X2NtYV9k ZWZpb19maW5pKGZiX2hlbHBlci0+ZmJkZXYpOwotCi0JaWYgKGZiX2hlbHBlci0+ZmIpCi0JCWRy bV9mcmFtZWJ1ZmZlcl9yZW1vdmUoZmJfaGVscGVyLT5mYik7Ci0KLQlkcm1fZmJfaGVscGVyX2Zp bmkoZmJfaGVscGVyKTsKLQlrZnJlZSh0b19mYmRldl9jbWEoZmJfaGVscGVyKSk7CisJaWYgKGRl di0+ZmJfaGVscGVyKQorCQlkcm1fZmJkZXZfY21hX2ZpbmkodG9fZmJkZXZfY21hKGRldi0+ZmJf aGVscGVyKSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJfY21hX2ZiZGV2X2ZpbmkpOwog Ci0vKioKLSAqIGRybV9mYmRldl9jbWFfaW5pdF93aXRoX2Z1bmNzKCkgLSBBbGxvY2F0ZSBhbmQg aW5pdGlhbGl6ZXMgYSBkcm1fZmJkZXZfY21hIHN0cnVjdAotICogQGRldjogRFJNIGRldmljZQot ICogQHByZWZlcnJlZF9icHA6IFByZWZlcnJlZCBiaXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmlj ZQotICogQG1heF9jb25uX2NvdW50OiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0b3JzCi0gKiBA ZnVuY3M6IGZiIGhlbHBlciBmdW5jdGlvbnMsIGluIHBhcnRpY3VsYXIgYSBjdXN0b20gZGlydHko KSBjYWxsYmFjawotICoKLSAqIFJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQgZHJtX2ZiZGV2X2Nt YSBzdHJ1Y3Qgb3IgYSBFUlJfUFRSLgotICovCi1zdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZHJtX2Zi ZGV2X2NtYV9pbml0X3dpdGhfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQl1bnNpZ25l ZCBpbnQgcHJlZmVycmVkX2JwcCwgdW5zaWduZWQgaW50IG1heF9jb25uX2NvdW50LAotCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQotewotCXN0cnVjdCBkcm1fZmJk ZXZfY21hICpmYmRldl9jbWE7Ci0Jc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlcjsKLQlpbnQg cmV0OwotCi0JZmJkZXZfY21hID0ga3phbGxvYyhzaXplb2YoKmZiZGV2X2NtYSksIEdGUF9LRVJO RUwpOwotCWlmICghZmJkZXZfY21hKSB7Ci0JCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8g YWxsb2NhdGUgZHJtIGZiZGV2LlxuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCX0K LQlmYmRldl9jbWEtPmZiX2Z1bmNzID0gZnVuY3M7Ci0KLQloZWxwZXIgPSAmZmJkZXZfY21hLT5m Yl9oZWxwZXI7Ci0KLQlkcm1fZmJfaGVscGVyX3ByZXBhcmUoZGV2LCBoZWxwZXIsICZkcm1fZmJf Y21hX2hlbHBlcl9mdW5jcyk7Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBoZWxw ZXIsIG1heF9jb25uX2NvdW50KTsKLQlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKGRldi0+ZGV2 LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZHJtIGZiIGhlbHBlci5cbiIpOwotCQlnb3RvIGVycl9m cmVlOwotCX0KLQotCXJldCA9IGRybV9mYl9oZWxwZXJfc2luZ2xlX2FkZF9hbGxfY29ubmVjdG9y cyhoZWxwZXIpOwotCWlmIChyZXQgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQg dG8gYWRkIGNvbm5lY3RvcnMuXG4iKTsKLQkJZ290byBlcnJfZHJtX2ZiX2hlbHBlcl9maW5pOwot Ci0JfQotCi0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhoZWxwZXIsIHByZWZl cnJlZF9icHApOwotCWlmIChyZXQgPCAwKSB7Ci0JCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQg dG8gc2V0IGluaXRpYWwgaHcgY29uZmlndXJhdGlvbi5cbiIpOwotCQlnb3RvIGVycl9kcm1fZmJf aGVscGVyX2Zpbmk7Ci0JfQotCi0JcmV0dXJuIGZiZGV2X2NtYTsKLQotZXJyX2RybV9mYl9oZWxw ZXJfZmluaToKLQlkcm1fZmJfaGVscGVyX2ZpbmkoaGVscGVyKTsKLWVycl9mcmVlOgotCWtmcmVl KGZiZGV2X2NtYSk7Ci0KLQlyZXR1cm4gRVJSX1BUUihyZXQpOwotfQotRVhQT1JUX1NZTUJPTF9H UEwoZHJtX2ZiZGV2X2NtYV9pbml0X3dpdGhfZnVuY3MpOwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBkcm1fZmJfY21hX2Z1bmNzID0gewotCS5kZXN0cm95CT0g ZHJtX2dlbV9mYl9kZXN0cm95LAotCS5jcmVhdGVfaGFuZGxlCT0gZHJtX2dlbV9mYl9jcmVhdGVf aGFuZGxlLAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGRybV9mYl9j bWFfaGVscGVyX2Z1bmNzID0geworCS5mYl9wcm9iZSA9IGRybV9mYl9oZWxwZXJfZ2VuZXJpY19w cm9iZSwKIH07CiAKIC8qKgpAQCAtNDY0LDkgKzE3MSwzOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBkcm1fZmJfY21hX2Z1bmNzID0gewogc3RydWN0IGRybV9m YmRldl9jbWEgKmRybV9mYmRldl9jbWFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXVu c2lnbmVkIGludCBwcmVmZXJyZWRfYnBwLCB1bnNpZ25lZCBpbnQgbWF4X2Nvbm5fY291bnQpCiB7 Ci0JcmV0dXJuIGRybV9mYmRldl9jbWFfaW5pdF93aXRoX2Z1bmNzKGRldiwgcHJlZmVycmVkX2Jw cCwKLQkJCQkJICAgICBtYXhfY29ubl9jb3VudCwKLQkJCQkJICAgICAmZHJtX2ZiX2NtYV9mdW5j cyk7CisJc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYTsKKwlzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyOworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50OworCWludCBy ZXQ7CisKKwlmYmRldl9jbWEgPSBremFsbG9jKHNpemVvZigqZmJkZXZfY21hKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFmYmRldl9jbWEpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJY2xp ZW50ID0gZHJtX2NsaWVudF9uZXcoZGV2KTsKKwlpZiAoSVNfRVJSKGNsaWVudCkpIHsKKwkJcmV0 ID0gUFRSX0VSUihjbGllbnQpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWZiX2hlbHBlciA9 ICZmYmRldl9jbWEtPmZiX2hlbHBlcjsKKwljbGllbnQtPnByaXZhdGUgPSBmYl9oZWxwZXI7CisJ ZmJfaGVscGVyLT5jbGllbnQgPSBjbGllbnQ7CisKKwlyZXQgPSBkcm1fZmJfaGVscGVyX2ZiZGV2 X3NldHVwKGRldiwgZmJfaGVscGVyLCAmZHJtX2ZiX2NtYV9oZWxwZXJfZnVuY3MsCisJCQkJCXBy ZWZlcnJlZF9icHAsIG1heF9jb25uX2NvdW50KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9jbGll bnRfZnJlZTsKKworCXJldHVybiBmYmRldl9jbWE7CisKK2Vycl9jbGllbnRfZnJlZToKKwlkcm1f Y2xpZW50X2ZyZWUoY2xpZW50KTsKK2Vycl9mcmVlOgorCWtmcmVlKGZiZGV2X2NtYSk7CisKKwly ZXR1cm4gRVJSX1BUUihyZXQpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2ZiZGV2X2NtYV9p bml0KTsKIApAQCAtNDc3LDE0ICsyMTMsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZmJkZXZf Y21hX2luaXQpOwogdm9pZCBkcm1fZmJkZXZfY21hX2Zpbmkoc3RydWN0IGRybV9mYmRldl9jbWEg KmZiZGV2X2NtYSkKIHsKIAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZmYmRldl9jbWEt PmZiX2hlbHBlcik7Ci0JaWYgKGZiZGV2X2NtYS0+ZmJfaGVscGVyLmZiZGV2KQotCQlkcm1fZmJk ZXZfY21hX2RlZmlvX2ZpbmkoZmJkZXZfY21hLT5mYl9oZWxwZXIuZmJkZXYpOwotCi0JaWYgKGZi ZGV2X2NtYS0+ZmJfaGVscGVyLmZiKQotCQlkcm1fZnJhbWVidWZmZXJfcmVtb3ZlKGZiZGV2X2Nt YS0+ZmJfaGVscGVyLmZiKTsKLQotCWRybV9mYl9oZWxwZXJfZmluaSgmZmJkZXZfY21hLT5mYl9o ZWxwZXIpOwotCWtmcmVlKGZiZGV2X2NtYSk7CisJLyogQWxsIHJlc291cmNlcyBoYXZlIG5vdyBi ZWVuIGZyZWVkIGJ5IGRybV9mYmRldl9mYl9kZXN0cm95KCkgKi8KIH0KIEVYUE9SVF9TWU1CT0xf R1BMKGRybV9mYmRldl9jbWFfZmluaSk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9m Yl9jbWFfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfY21hX2hlbHBlci5oCmluZGV4IGQ1 MzJmODhhOGQ1NS4uYTA1NDZjMzQ1MWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZmJf Y21hX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmgKQEAgLTIz LDkgKzIzLDYgQEAgaW50IGRybV9mYl9jbWFfZmJkZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2JwcCwKIAkJCSAgdW5zaWduZWQgaW50IG1heF9j b25uX2NvdW50KTsKIHZvaWQgZHJtX2ZiX2NtYV9mYmRldl9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwogCi1zdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZHJtX2ZiZGV2X2NtYV9pbml0X3dpdGhf ZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQl1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2Jw cCwgdW5zaWduZWQgaW50IG1heF9jb25uX2NvdW50LAotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXJfZnVuY3MgKmZ1bmNzKTsKIHN0cnVjdCBkcm1fZmJkZXZfY21hICpkcm1fZmJkZXZfY21h X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2Jw cCwgdW5zaWduZWQgaW50IG1heF9jb25uX2NvdW50KTsKIHZvaWQgZHJtX2ZiZGV2X2NtYV9maW5p KHN0cnVjdCBkcm1fZmJkZXZfY21hICpmYmRldl9jbWEpOwotLSAKMi4xNS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK