From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC v4 22/25] drm/fb-helper: Add generic fbdev emulation Date: Thu, 12 Apr 2018 18:12:34 +0200 Message-ID: <20180412161237.9314-11-noralf@tronnes.org> References: <20180412161237.9314-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180412161237.9314-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , laurent.pinchart@ideasonboard.com, mstaudt@suse.de, dh.herrmann@gmail.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uIGZvciBkcml2ZXJzIHRoYXQgc3VwcG9y dHMKZHVtYiBidWZmZXJzIHdoaWNoIHRoZXkgY2FuIGV4cG9ydC4KCkFsbCB0aGUgZHJpdmVyIGhh cyB0byBkbyBpcyBjYWxsIGRybV9mYmRldl9nZW5lcmljX3NldHVwKCkuCgpTaWduZWQtb2ZmLWJ5 OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jIHwgMjU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAgMjAgKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyNzUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmlu ZGV4IGIxMTI0YzA4YjFlZC4uMTk1NGRlNWIxM2UwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMK QEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgIjog IiBmbXQKIAogI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEt YnVmLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzcnEu aD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CkBAIC0xOTk1LDYgKzE5OTYsMjYwIEBAIHZvaWQg ZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCk7CiAK K3N0YXRpYyBpbnQgZHJtX2ZiZGV2X2ZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIgPSBpbmZvLT5wYXI7CisKKwlyZXR1cm4gZG1hX2J1Zl9tbWFwKGZiX2hlbHBlci0+YnVmZmVy LT5kbWFfYnVmLCB2bWEsIDApOworfQorCisvKgorICogZmJfb3BzLmZiX2Rlc3Ryb3kgaXMgY2Fs bGVkIGJ5IHRoZSBsYXN0IHB1dF9mYl9pbmZvKCkgY2FsbCBhdCB0aGUgZW5kIG9mCisgKiB1bnJl Z2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3IgZmJfcmVsZWFzZSgpLgorICovCitzdGF0aWMgdm9pZCBk cm1fZmJkZXZfZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBmYl9vcHMgKmZib3Bz ID0gTlVMTDsKKworCURSTV9ERUJVRygiXG4iKTsKKworCWlmIChmYl9oZWxwZXItPmZiZGV2LT5m YmRlZmlvKQorCQlmYm9wcyA9IGZiX2hlbHBlci0+ZmJkZXYtPmZib3BzOworCisJZHJtX2ZiX2hl bHBlcl9maW5pKGZiX2hlbHBlcik7CisJZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoZmJf aGVscGVyLT5idWZmZXIpOworCWRybV9jbGllbnRfZnJlZShmYl9oZWxwZXItPmNsaWVudCk7CisJ a2ZyZWUoZmJfaGVscGVyKTsKKwlrZnJlZShmYm9wcyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmJf b3BzIGRybV9mYmRldl9mYl9vcHMgPSB7CisJLyoKKwkgKiBObyBuZWVkIHRvIHNldCBvd25lciwg dGhpcyBtb2R1bGUgaXMgYWxyZWFkeSBwaW5uZWQgYnkgdGhlIGRyaXZlci4KKwkgKiBBIHJlZmVy ZW5jZSBpcyB0YWtlbiBvbiB0aGUgZHJpdmVyIG1vZHVsZSBpbiBkcm1fZmJfaGVscGVyX2ZiX29w ZW4oKQorCSAqIHRvIHByZXZlbnQgdGhlIGRyaXZlciBnb2luZyBhd2F5IHdpdGggb3BlbiBmZCdz LgorCSAqLworCURSTV9GQl9IRUxQRVJfREVGQVVMVF9PUFMsCisJLmZiX29wZW4JPSBkcm1fZmJf aGVscGVyX2ZiX29wZW4sCisJLmZiX3JlbGVhc2UJPSBkcm1fZmJfaGVscGVyX2ZiX3JlbGVhc2Us CisJLmZiX2Rlc3Ryb3kJPSBkcm1fZmJkZXZfZmJfZGVzdHJveSwKKwkuZmJfbW1hcAk9IGRybV9m YmRldl9mYl9tbWFwLAorCS5mYl9yZWFkCT0gZHJtX2ZiX2hlbHBlcl9zeXNfcmVhZCwKKwkuZmJf d3JpdGUJPSBkcm1fZmJfaGVscGVyX3N5c193cml0ZSwKKwkuZmJfZmlsbHJlY3QJPSBkcm1fZmJf aGVscGVyX3N5c19maWxscmVjdCwKKwkuZmJfY29weWFyZWEJPSBkcm1fZmJfaGVscGVyX3N5c19j b3B5YXJlYSwKKwkuZmJfaW1hZ2VibGl0CT0gZHJtX2ZiX2hlbHBlcl9zeXNfaW1hZ2VibGl0LAor fTsKKworc3RhdGljIHN0cnVjdCBmYl9kZWZlcnJlZF9pbyBkcm1fZmJkZXZfZGVmaW8gPSB7CisJ LmRlbGF5CQk9IEhaIC8gMjAsCisJLmRlZmVycmVkX2lvCT0gZHJtX2ZiX2hlbHBlcl9kZWZlcnJl ZF9pbywKK307CisKKy8qIEhhY2sgdG8gdGVzdCB0aW55ZHJtIGJlZm9yZSBjb252ZXJ0aW5nIHRv IHZtYWxsb2MgYnVmZmVycyAqLworc3RhdGljIGludCBkcm1fZmJkZXZfY21hX2RlZmVycmVkX2lv X21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCisJCQkJCSAgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEpCit7CisJZmJfZGVmZXJyZWRfaW9fbW1hcChpbmZvLCB2bWEpOworCXZtYS0+dm1fcGFn ZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bWEtPnZtX3BhZ2VfcHJvdCk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKKwkJCQkgICAgICAgc3RydWN0IGRybV9mYl9oZWxw ZXJfc3VyZmFjZV9zaXplICpzaXplcykKK3sKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dCA9IGZiX2hlbHBlci0+Y2xpZW50OworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIHNpemVzX21v ZGUgPSB7CisJCS5oZGlzcGxheSA9IHNpemVzLT5zdXJmYWNlX3dpZHRoLAorCQkudmRpc3BsYXkg PSBzaXplcy0+c3VyZmFjZV9oZWlnaHQsCisJfTsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIg KmJ1ZmZlcjsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1Y3QgZmJfaW5mbyAq ZmJpOworCXUzMiBmb3JtYXQ7CisJaW50IHJldDsKKworCURSTV9ERUJVR19LTVMoInN1cmZhY2Ug d2lkdGgoJWQpLCBoZWlnaHQoJWQpIGFuZCBicHAoJWQpXG4iLAorCQkgICAgICBzaXplcy0+c3Vy ZmFjZV93aWR0aCwgc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LAorCQkgICAgICBzaXplcy0+c3VyZmFj ZV9icHApOworCisJZm9ybWF0ID0gZHJtX21vZGVfbGVnYWN5X2ZiX2Zvcm1hdChzaXplcy0+c3Vy ZmFjZV9icHAsIHNpemVzLT5zdXJmYWNlX2RlcHRoKTsKKwlidWZmZXIgPSBkcm1fY2xpZW50X2Zy YW1lYnVmZmVyX2NyZWF0ZShjbGllbnQsICZzaXplc19tb2RlLCBmb3JtYXQpOworCWlmIChJU19F UlIoYnVmZmVyKSkKKwkJcmV0dXJuIFBUUl9FUlIoYnVmZmVyKTsKKworCWZiX2hlbHBlci0+YnVm ZmVyID0gYnVmZmVyOworCWZiX2hlbHBlci0+ZmIgPSBidWZmZXItPmZiOworCWZiID0gYnVmZmVy LT5mYjsKKworCWZiaSA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGZiX2hlbHBlcik7CisJaWYg KElTX0VSUihmYmkpKSB7CisJCXJldCA9IFBUUl9FUlIoZmJpKTsKKwkJZ290byBlcnJfZnJlZV9i dWZmZXI7CisJfQorCisJZmJpLT5wYXIgPSBmYl9oZWxwZXI7CisJZmJpLT5mYm9wcyA9ICZkcm1f ZmJkZXZfZmJfb3BzOworCWZiaS0+c2NyZWVuX3NpemUgPSBmYi0+aGVpZ2h0ICogZmItPnBpdGNo ZXNbMF07CisJZmJpLT5maXguc21lbV9sZW4gPSBmYmktPnNjcmVlbl9zaXplOworCWZiaS0+c2Ny ZWVuX2J1ZmZlciA9IGJ1ZmZlci0+dmFkZHI7CisJc3RyY3B5KGZiaS0+Zml4LmlkLCAiRFJNIGVt dWxhdGVkIik7CisKKwlkcm1fZmJfaGVscGVyX2ZpbGxfZml4KGZiaSwgZmItPnBpdGNoZXNbMF0s IGZiLT5mb3JtYXQtPmRlcHRoKTsKKwlkcm1fZmJfaGVscGVyX2ZpbGxfdmFyKGZiaSwgZmJfaGVs cGVyLCBzaXplcy0+ZmJfd2lkdGgsIHNpemVzLT5mYl9oZWlnaHQpOworCisJLyoKKwkgKiBEcml2 ZXJzIHRoYXQgc2V0IHRoZSBkaXJ0eSBjYWxsYmFjazoKKwkgKiAtIERvZXNuJ3QgdXNlIGRlZmlv OgorCSAqICAgaTkxNSwgdmlydGlvLCByb2NrY2hpcAorCSAqIC0gZGVmaW8gd2l0aCB2bWFsbG9j IGJ1ZmZlciBibGl0dGVkIG9uIHRoZSByZWFsIG9uZToKKwkgKiAgIHZtd2dmeAorCSAqIC0gZGVm aW8gaXMgZGlzYWJsZWQgYmVjYXVzZSBpdCBkb2Vzbid0IHdvcmsgd2l0aCBzaG1lbToKKwkgKiAg IHVkbAorCSAqIC0gZGVmaW8gd2l0aCBzcGVjaWFsIGRpcnR5IGNhbGxiYWNrIGZvciBmYmRldiwg dXNlcyB2bWFsbG9jIGZvciBmYmRldjoKKwkgKiAgIHF4bAorCSAqIC0gZGVmaW8gd2l0aCBjbWEg YnVmZmVyLCB3aWxsIG1vdmUgdG8gdm1hbGxvYyBidWZmZXJzOgorCSAqICAgdGlueWRybQorCSAq CisJICogVE9ETzoKKwkgKiBNYXliZSBhZGQgdm1hbGxvYyBzaGFkb3cgYnVmZmVyIHN1cHBvcnQu CisJICovCisKKwlpZiAoZmItPmZ1bmNzLT5kaXJ0eSkgeworCQlzdHJ1Y3QgZmJfb3BzICpmYm9w czsKKworCQkvKgorCQkgKiBmYl9kZWZlcnJlZF9pb19jbGVhbnVwKCkgY2xlYXJzICZmYm9wcy0+ ZmJfbW1hcCBzbyBhIHBlcgorCQkgKiBpbnN0YW5jZSB2ZXJzaW9uIGlzIG5lY2Vzc2FyeS4KKwkJ ICovCisJCWZib3BzID0ga3phbGxvYyhzaXplb2YoKmZib3BzKSwgR0ZQX0tFUk5FTCk7CisJCWlm ICghZmJvcHMpIHsKKwkJCXJldCA9IC1FTk9NRU07CisJCQlnb3RvIGVycl9mYl9pbmZvX2Rlc3Ry b3k7CisJCX0KKworCQkqZmJvcHMgPSAqZmJpLT5mYm9wczsKKwkJZmJpLT5mYm9wcyA9IGZib3Bz OworCisJCWZiaS0+ZmJkZWZpbyA9ICZkcm1fZmJkZXZfZGVmaW87CisKKwkJLyogSGFjayBzbyBJ IGNhbiB0ZXN0IHdpdGggdGlueWRybSAqLworCQlmYmktPmZpeC5zbWVtX3N0YXJ0ID0gcGFnZV90 b19waHlzKHZpcnRfdG9fcGFnZShidWZmZXItPnZhZGRyKSk7CisKKwkJZmJfZGVmZXJyZWRfaW9f aW5pdChmYmkpOworCisJCS8qIEhhY2sgc28gSSBjYW4gdGVzdCB3aXRoIHRpbnlkcm0gKi8KKwkJ ZmJpLT5mYm9wcy0+ZmJfbW1hcCA9IGRybV9mYmRldl9jbWFfZGVmZXJyZWRfaW9fbW1hcDsKKwl9 CisKKwlyZXR1cm4gMDsKKworZXJyX2ZiX2luZm9fZGVzdHJveToKKwlkcm1fZmJfaGVscGVyX2Zp bmkoZmJfaGVscGVyKTsKK2Vycl9mcmVlX2J1ZmZlcjoKKwlkcm1fY2xpZW50X2ZyYW1lYnVmZmVy X2RlbGV0ZShidWZmZXIpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZmJfaGVscGVyX2Z1bmNzIGRybV9mYl9oZWxwZXJfZ2VuZXJpY19mdW5jcyA9IHsKKwku ZmJfcHJvYmUgPSBkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUsCit9OworCitzdGF0aWMgaW50 IGRybV9mYmRldl9jbGllbnRfcmVtb3ZlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQor eworCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBjbGllbnQtPnByaXZhdGU7CisK KwlpZiAoIWZiX2hlbHBlci0+ZmJkZXYpIHsKKwkJa2ZyZWUoZmJfaGVscGVyKTsKKwkJcmV0dXJu IDA7CisJfQorCisJdW5yZWdpc3Rlcl9mcmFtZWJ1ZmZlcihmYl9oZWxwZXItPmZiZGV2KTsKKwor CS8qCisJICogSWYgdXNlcnNwYWNlIGlzIGNsb3NlZCB0aGUgY2xpZW50IGlzIG5vdyBmcmVlZCBi eQorCSAqIGRybV9mYmRldl9mYl9kZXN0cm95KCksIG90aGVyd2lzZSBpdCB3aWxsIGJlIGZyZWVk IG9uIHRoZSBsYXN0IGNsb3NlLgorCSAqIFJldHVybiAxIHRvIHRlbGwgdGhhdCBmcmVlaW5nIGlz IHRha2VuIGNhcmUgb2YuCisJICovCisKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBkcm1f ZmJkZXZfY2xpZW50X2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sK KwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gY2xpZW50LT5wcml2YXRlOworCisJ ZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoZmJfaGVscGVyKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRybV9mYmRldl9jbGllbnRfaG90cGx1ZyhzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyID0gY2xpZW50LT5wcml2YXRlOworCisJaWYgKGZiX2hlbHBlci0+ZmJkZXYpCisJCXJl dHVybiAwOworCisJcmV0dXJuIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoY2xpZW50LT5kZXYs IGZiX2hlbHBlciwKKwkJCQkJICZkcm1fZmJfaGVscGVyX2dlbmVyaWNfZnVuY3MsCisJCQkJCSBm Yl9oZWxwZXItPnByZWZlcnJlZF9icHAsIDApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jbGllbnRfZnVuY3MgZHJtX2ZiZGV2X2NsaWVudF9mdW5jcyA9IHsKKwkubmFtZQkJPSAiZmJk ZXYiLAorCS5yZW1vdmUJCT0gZHJtX2ZiZGV2X2NsaWVudF9yZW1vdmUsCisJLmxhc3RjbG9zZQk9 IGRybV9mYmRldl9jbGllbnRfbGFzdGNsb3NlLAorCS5ob3RwbHVnCT0gZHJtX2ZiZGV2X2NsaWVu dF9ob3RwbHVnLAorfTsKKworLyoqCisgKiBkcm1fZmJfaGVscGVyX2dlbmVyaWNfZmJkZXZfc2V0 dXAoKSAtIFNldHVwIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uCisgKiBAZGV2OiBEUk0gZGV2aWNl CisgKiBAcHJlZmVycmVkX2JwcDogUHJlZmVycmVkIGJpdHMgcGVyIHBpeGVsIGZvciB0aGUgZGV2 aWNlLgorICogICAgICAgICAgICAgICAgIEBkZXYtPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0 aCBpcyB1c2VkIGlmIHRoaXMgaXMgemVyby4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdXAg Z2VuZXJpYyBmYmRldiBlbXVsYXRpb24gZm9yIGRyaXZlcnMgdGhhdCBzdXBwb3J0cworICogZHVt YiBidWZmZXJzIHdoaWNoIGNhbiBiZSBleHBvcnRlZC4KKyAqCisgKiBSZXN0b3JlLCBob3RwbHVn IGV2ZW50cyBhbmQgdGVhcmRvd24gYXJlIGFsbCB0YWtlbiBjYXJlIG9mLiBEcml2ZXJzIHRoYXQg ZG9lcworICogc3VzcGVuZC9yZXN1bWUgbmVlZCB0byBjYWxsIGRybV9mYl9oZWxwZXJfc2V0X3N1 c3BlbmRfdW5sb2NrZWQoKSB0aGVtc2VsdmVzLgorICogU2ltcGxlIGRyaXZlcnMgbWlnaHQgdXNl IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfc3VzcGVuZCgpLgorICoKKyAqIFJldHVybnM6CisgKiBa ZXJvIG9uIHN1Y2Nlc3Mgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitp bnQgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWdu ZWQgaW50IHByZWZlcnJlZF9icHApCit7CisJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cjsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKKworCWlmICghZHJtX2ZiZGV2X2Vt dWxhdGlvbikKKwkJcmV0dXJuIDA7CisKKwlmYl9oZWxwZXIgPSBremFsbG9jKHNpemVvZigqZmJf aGVscGVyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFmYl9oZWxwZXIpCisJCXJldHVybiAtRU5PTUVN OworCisJY2xpZW50ID0gZHJtX2NsaWVudF9uZXcoZGV2LCAmZHJtX2ZiZGV2X2NsaWVudF9mdW5j cyk7CisJaWYgKElTX0VSUihjbGllbnQpKSB7CisJCWtmcmVlKGZiX2hlbHBlcik7CisJCXJldHVy biBQVFJfRVJSKGNsaWVudCk7CisJfQorCisJY2xpZW50LT5wcml2YXRlID0gZmJfaGVscGVyOwor CWZiX2hlbHBlci0+Y2xpZW50ID0gY2xpZW50OworCWZiX2hlbHBlci0+cHJlZmVycmVkX2JwcCA9 IHByZWZlcnJlZF9icHA7CisKKwlkcm1fZmJkZXZfY2xpZW50X2hvdHBsdWcoY2xpZW50KTsKKwor CXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCk7CisK IC8qIFRoZSBLY29uZmlnIERSTV9LTVNfSEVMUEVSIHNlbGVjdHMgRlJBTUVCVUZGRVJfQ09OU09M RSAoaWYgIUVYUEVSVCkKICAqIGJ1dCB0aGUgbW9kdWxlIGRvZXNuJ3QgZGVwZW5kIG9uIGFueSBm YiBjb25zb2xlIHN5bWJvbHMuICBBdCBsZWFzdAogICogYXR0ZW1wdCB0byBsb2FkIGZiY29uIHRv IGF2b2lkIGxlYXZpbmcgdGhlIHN5c3RlbSB3aXRob3V0IGEgdXNhYmxlIGNvbnNvbGUuCmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJf aGVscGVyLmgKaW5kZXggMzMwOTgzOTc1ZDVlLi43MTFkYTE3NDc4MzYgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVy LmgKQEAgLTEyNiw2ICsxMjYsMjAgQEAgc3RydWN0IGRybV9mYl9oZWxwZXIgewogCSAqLwogCXN0 cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXk7CiAKKwkvKioKKwkgKiBAY2xpZW50Ogor CSAqCisJICogRFJNIGNsaWVudCB1c2VkIGJ5IHRoZSBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbi4K KwkgKi8KKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudDsKKworCS8qKgorCSAqIEBidWZm ZXI6CisJICoKKwkgKiBGcmFtZWJ1ZmZlciB1c2VkIGJ5IHRoZSBnZW5lcmljIGZiZGV2IGVtdWxh dGlvbi4KKwkgKi8KKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcjsKKwogCWNvbnN0 IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzICpmdW5jczsKIAlzdHJ1Y3QgZmJfaW5mbyAqZmJk ZXY7CiAJdTMyIHBzZXVkb19wYWxldHRlWzE3XTsKQEAgLTIxOSw2ICsyMzMsNyBAQCBzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciB7CiAJLmZiX2lvY3RsCT0gZHJtX2ZiX2hlbHBlcl9pb2N0bAogCiAjaWZk ZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04KK2ludCBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1 cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2JwcCk7CiB2 b2lkIGRybV9mYl9oZWxwZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCQkJICAgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJf ZnVuY3MgKmZ1bmNzKTsKIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKQEAgLTI5Nyw2ICszMTIsMTEgQEAgdm9pZCBkcm1fZmJfaGVscGVyX2ZiZGV2X3RlYXJk b3duKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBkcm1fZmJfaGVscGVyX2xhc3RjbG9z ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9s bF9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogI2Vsc2UKK3N0YXRpYyBpbmxpbmUg aW50Citkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcHJlZmVycmVkX2JwcCkKK3sKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGRybV9m Yl9oZWxwZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQlzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqaGVscGVyLAogCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5j cyAqZnVuY3MpCi0tIAoyLjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=