From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 06/11] drm/fbdevdrm: Add modesetting infrastructure Date: Tue, 26 Mar 2019 10:17:39 +0100 Message-ID: <20190326091744.11542-7-tzimmermann@suse.de> References: <20190326091744.11542-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C68F6E7B4 for ; Tue, 26 Mar 2019 09:17:57 +0000 (UTC) In-Reply-To: <20190326091744.11542-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@linux.ie, daniel@ffwll.ch, b.zolnierkie@samsung.com Cc: linux-fbdev@vger.kernel.org, Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org TW9kZXNldHRpbmcgZm9yIGZiZGV2ZHJtIHN1cHBvcnRzIGEgc2luZ2xlIGRpc3BsYXkgcGlwZWxp bmUgd2l0aCBDUlRDLApwcmltYXJ5IHBsYW5lLCBlbmNvZGVyIGFuZCBjb25uZWN0b3IuCgpUaGUg ZmJkZXYgZGV2aWNlIHdvdWxkIGhhdmUgYmVlbiBhbiBpZGVhbCBjYW5kaWRhdGUgZm9yIHVzaW5n CnxzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGV8LiBUbyBiZXR0ZXIgaWxsdXN0cmF0ZSB0 aGUgY29udmVyc2lvbgpmcm9tIGZiZGV2IHRvIERSTSBkcml2ZXJzLCBmYmRldmRybSB1c2VkIHRo ZSByZWd1bGFyIERSTSBkYXRhIHN0cnVjdHVyZXMKaW5zdGVhZC4KClNpZ25lZC1vZmYtYnk6IFRo b21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9mYmRldmRybS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2Zi ZGV2ZHJtL2ZiZGV2ZHJtX2RldmljZS5jICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vZmJkZXZk cm0vZmJkZXZkcm1fZGV2aWNlLmggIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9m YmRldmRybV9kcnYuYyAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRl dmRybV9tb2Rlc2V0LmMgfCA0MzAgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2Ry bS9mYmRldmRybS9mYmRldmRybV9tb2Rlc2V0LmggfCAgMzYgKysKIDYgZmlsZXMgY2hhbmdlZCwg NDc5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fbW9kZXNldC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX21vZGVzZXQuaAoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9m YmRldmRybS9NYWtlZmlsZQppbmRleCBmZGZkYjUyMzM4MzEuLmI4ZmFiOWQ1MmZhYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9mYmRldmRybS9NYWtlZmlsZQpAQCAtMiw2ICsyLDcgQEAgY2NmbGFncy15ID0gLUlpbmNs dWRlL2RybQogZmJkZXZkcm0teSA6PSBmYmRldmRybV9iby5vIFwKIAkgICAgICBmYmRldmRybV9k ZXZpY2UubyBcCiAJICAgICAgZmJkZXZkcm1fZHJ2Lm8gXAorCSAgICAgIGZiZGV2ZHJtX21vZGVz ZXQubyBcCiAJICAgICAgZmJkZXZkcm1fdHRtLm8KIAogb2JqLSQoQ09ORklHX0RSTV9GQkRFVkRS TSkgKz0gZmJkZXZkcm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2Zi ZGV2ZHJtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX2Rldmlj ZS5jCmluZGV4IGM4MDU0ZWFjMjcxZC4uYmIwMzRmM2Q5MzkyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2ZiZGV2ZHJtL2ZiZGV2ZHJtX2RldmljZS5jCkBAIC0zNywxMCArMzcsMTYgQEAgaW50IGZiZGV2 ZHJtX2RldmljZV9pbml0KHN0cnVjdCBmYmRldmRybV9kZXZpY2UgKmZkZXYsIHN0cnVjdCBkcm1f ZHJpdmVyICpkcnYsCiAJaWYgKHJldCkKIAkJZ290byBlcnJfZHJtX2Rldl9maW5pOwogCisJcmV0 ID0gZmJkZXZkcm1fbW9kZXNldF9pbml0KCZmZGV2LT5tb2Rlc2V0LCAmZmRldi0+ZGV2LCBmYl9p bmZvKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mYmRldmRybV90dG1fY2xlYW51cDsKKwogCUlO SVRfTElTVF9IRUFEKCZmZGV2LT5kZXZpY2VfbGlzdCk7CiAKIAlyZXR1cm4gMDsKIAorZXJyX2Zi ZGV2ZHJtX3R0bV9jbGVhbnVwOgorCWZiZGV2ZHJtX3R0bV9jbGVhbnVwKCZmZGV2LT50dG0pOwog ZXJyX2RybV9kZXZfZmluaToKIAlkcm1fZGV2X2ZpbmkoJmZkZXYtPmRldik7CiAJcmV0dXJuIHJl dDsKQEAgLTU1LDYgKzYxLDcgQEAgdm9pZCBmYmRldmRybV9kZXZpY2VfY2xlYW51cChzdHJ1Y3Qg ZmJkZXZkcm1fZGV2aWNlICpmZGV2KQogCQkJICAiaW4gZGV2aWNlIGxpc3RcbiIpOwogCX0KIAor CWZiZGV2ZHJtX21vZGVzZXRfY2xlYW51cCgmZmRldi0+bW9kZXNldCk7CiAJZmJkZXZkcm1fdHRt X2NsZWFudXAoJmZkZXYtPnR0bSk7CiAKIAlkcm1fZGV2X2ZpbmkoZGV2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kZXZpY2UuaCBiL2RyaXZlcnMvZ3B1 L2RybS9mYmRldmRybS9mYmRldmRybV9kZXZpY2UuaAppbmRleCAzODFkOWNmYjE0NTAuLjQwNjhk MTJlMzI3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX2Rl dmljZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kZXZpY2UuaApA QCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgImZiZGV2 ZHJtX21vZGVzZXQuaCIKICNpbmNsdWRlICJmYmRldmRybV90dG0uaCIKIAogc3RydWN0IGRybV9k cml2ZXI7CkBAIC0yNiw2ICsyNyw3IEBAIHN0cnVjdCBmYmRldmRybV9kZXZpY2UgewogCXN0cnVj dCBmYl9pbmZvICpmYl9pbmZvOwogCiAJc3RydWN0IGZiZGV2ZHJtX3R0bSB0dG07CisJc3RydWN0 IGZiZGV2ZHJtX21vZGVzZXQgbW9kZXNldDsKIAogCXN0cnVjdCBsaXN0X2hlYWQgZGV2aWNlX2xp c3Q7IC8qIGVudHJ5IGluIGdsb2JhbCBkZXZpY2UgbGlzdCAqLwogfTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9m YmRldmRybS9mYmRldmRybV9kcnYuYwppbmRleCA0NzI0ZTNkZjZhY2UuLmRmZjlmNDRmMDViZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX2Rydi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kcnYuYwpAQCAtMTQ4LDcgKzE0OCw5 IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBmYmRldmRybV9kcnYgPSB7CiAJLm5hbWUgPSBE UklWRVJfTkFNRSwKIAkuZGVzYyA9IERSSVZFUl9ERVNDUklQVElPTiwKIAkuZGF0ZSA9IERSSVZF Ul9EQVRFLAotCS5kcml2ZXJfZmVhdHVyZXMgPSBEUklWRVJfR0VNLAorCS5kcml2ZXJfZmVhdHVy ZXMgPSBEUklWRVJfQVRPTUlDIHwKKwkJCSAgIERSSVZFUl9HRU0gfAorCQkJICAgRFJJVkVSX01P REVTRVQsCiAJLmZvcHMgPSAmZHJpdmVyX2ZvcHMKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9mYmRldmRybS9mYmRldmRybV9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZmJk ZXZkcm0vZmJkZXZkcm1fbW9kZXNldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNTg1ZjM0NzhmMTkwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2ZiZGV2ZHJtL2ZiZGV2ZHJtX21vZGVzZXQuYwpAQCAtMCwwICsxLDQzMCBAQAorLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKyAqCisgKiBPbmUgcHVycG9zZSBv ZiB0aGlzIGRyaXZlciBpcyB0byBhbGxvdyBmb3IgZWFzeSBjb252ZXJzaW9uIG9mIGZyYW1lYnVm ZmVyCisgKiBkcml2ZXJzIHRvIERSTS4gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05V IEdQTCwgeW91IGFyZSBhbGxvd2VkIHRvCisgKiByZWxpY2Vuc2UgdGhpcyBmaWxlIHVuZGVyIHRo ZSB0ZXJtcyBvZiBhIGxpY2Vuc2Ugb2YgeW91ciBjaG9pY2UgaWYgeW91J3JlCisgKiBwb3J0aW5n IGEgZnJhbWVidWZmZXIgZHJpdmVyLiBJbiBvcmRlciB0byBkbyBzbywgdXBkYXRlIHRoZSBTUERY IGxpY2Vuc2UKKyAqIGlkZW50aWZpZXIgdG8gdGhlIG5ldyBsaWNlbnNlIGFuZCByZW1vdmUgdGhp cyBleGNlcHRpb24uCisgKgorICogSWYgeW91IGFkZCBjb2RlIHRvIHRoaXMgZmlsZSwgcGxlYXNl IGVuc3VyZSB0aGF0IGl0J3MgY29tcGF0aWJsZSB3aXRoIHRoZQorICogc3RhdGVkIGV4Y2VwdGlv bi4KKyAqLworCisjaW5jbHVkZSAiZmJkZXZkcm1fbW9kZXNldC5oIgorI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9tb2Rlc2V0X2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxw ZXJfdnRhYmxlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+CisjaW5jbHVk ZSA8bGludXgvZmIuaD4KKworLyoKKyAqIENSVEMKKyAqLworCitzdGF0aWMgZW51bSBkcm1fbW9k ZV9zdGF0dXMgY3J0Y19oZWxwZXJfbW9kZV92YWxpZCgKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXJldHVybiBNT0RFX09L OworfQorCitzdGF0aWMgYm9vbCBjcnRjX2hlbHBlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKKwkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJ CQkgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlyZXR1cm4g dHJ1ZTsKK30KKworc3RhdGljIHZvaWQgY3J0Y19oZWxwZXJfbW9kZV9zZXRfbm9mYihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCit7IH0KKworc3RhdGljIGludCBjcnRjX2hlbHBlcl9tb2RlX3NldF9i YXNlX2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKKwkJCQkJICAgIGludCB4LCBpbnQgeSwKKwkJCQkJICAgIGVudW0gbW9k ZV9zZXRfYXRvbWljIG1vZGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY3J0Y19o ZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg Y3J0Y19oZWxwZXJfYXRvbWljX2JlZ2luKAorCXN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKK3sgfQorCitzdGF0aWMgdm9pZCBjcnRj X2hlbHBlcl9hdG9taWNfZmx1c2goCisJc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreyB9CisKK3N0YXRpYyB2b2lkIGNydGNfaGVs cGVyX2F0b21pY19lbmFibGUoCisJc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreyB9CisKK3N0YXRpYyB2b2lkIGNydGNfaGVscGVy X2F0b21pY19kaXNhYmxlKAorCXN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9jcnRj X3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKK3sgfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j cnRjX2hlbHBlcl9mdW5jcyBmYmRldmRybV9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKKwkuZHBtcyA9 IE5VTEwsIC8qIGxlZ2FjeSAqLworCS5wcmVwYXJlID0gTlVMTCwgLyogbGVnYWN5ICovCisJLmNv bW1pdCA9IE5VTEwsIC8qIGxlZ2FjeSAqLworCS5tb2RlX3ZhbGlkID0gY3J0Y19oZWxwZXJfbW9k ZV92YWxpZCwKKwkubW9kZV9maXh1cCA9IGNydGNfaGVscGVyX21vZGVfZml4dXAsCisJLm1vZGVf c2V0ID0gTlVMTCwgLyogbGVnYWN5ICovCisJLm1vZGVfc2V0X25vZmIgPSBjcnRjX2hlbHBlcl9t b2RlX3NldF9ub2ZiLAorCS5tb2RlX3NldF9iYXNlID0gTlVMTCwgLyogbGVnYWN5ICovCisJLm1v ZGVfc2V0X2Jhc2VfYXRvbWljID0gY3J0Y19oZWxwZXJfbW9kZV9zZXRfYmFzZV9hdG9taWMsCisJ LmRpc2FibGUgPSBOVUxMLCAvKiBsZWdhY3kgKi8KKwkuYXRvbWljX2NoZWNrID0gY3J0Y19oZWxw ZXJfYXRvbWljX2NoZWNrLAorCS5hdG9taWNfYmVnaW4gPSBjcnRjX2hlbHBlcl9hdG9taWNfYmVn aW4sCisJLmF0b21pY19mbHVzaCA9IGNydGNfaGVscGVyX2F0b21pY19mbHVzaCwKKwkuYXRvbWlj X2VuYWJsZSA9IGNydGNfaGVscGVyX2F0b21pY19lbmFibGUsCisJLmF0b21pY19kaXNhYmxlID0g Y3J0Y19oZWxwZXJfYXRvbWljX2Rpc2FibGUsCit9OworCitzdGF0aWMgdm9pZCBjcnRjX2Rlc3Ry b3koc3RydWN0IGRybV9jcnRjICpjcnRjKQoreyB9CisKK3N0YXRpYyBpbnQgY3J0Y19hdG9taWNf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICAgc3RydWN0IGRybV9j cnRjX3N0YXRlICpzdGF0ZSwKKwkJCQkgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHks CisJCQkJICAgIHVpbnQ2NF90IHZhbCkKK3sKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGlj IGludCBjcnRjX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJ CSAgICBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLAorCQkJCSAgICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkgICAgdWludDY0X3QgKnZhbCkKK3sKKwlyZXR1 cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBjcnRjX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRy bV9jcnRjICpjcnRjKQoreworCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgdm9pZCBjcnRj X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sgfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGZiZGV2ZHJtX2NydGNfZnVuY3MgPSB7CisJLnJlc2V0 ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKKwkuY3Vyc29yX3NldCA9IE5VTEwsIC8q IG5vdCBzdXBwb3J0ZWQgYnkgZmJkZXYgKi8KKwkuY3Vyc29yX3NldDIgPSBOVUxMLAorCS5jdXJz b3JfbW92ZSA9IE5VTEwsCisJLmdhbW1hX3NldCA9IE5VTEwsIC8qIG5vdCBzdXBwb3J0ZWQgYnkg ZmJkZXYgKi8KKwkuZGVzdHJveSA9IGNydGNfZGVzdHJveSwKKwkuc2V0X2NvbmZpZyA9IGRybV9h dG9taWNfaGVscGVyX3NldF9jb25maWcsCisJLnBhZ2VfZmxpcCA9IE5VTEwsCisJLnBhZ2VfZmxp cF90YXJnZXQgPSBOVUxMLAorCS5zZXRfcHJvcGVydHkgPSBOVUxMLCAvKiB1bnVzZWQgaW4gYXRv bWljIGRyaXZlcnMgKi8KKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVs cGVyX2NydGNfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKKwkuYXRvbWljX3NldF9wcm9wZXJ0eSA9 IGNydGNfYXRvbWljX3NldF9wcm9wZXJ0eSwKKwkuYXRvbWljX2dldF9wcm9wZXJ0eSA9IGNydGNf YXRvbWljX2dldF9wcm9wZXJ0eSwKKwkubGF0ZV9yZWdpc3RlciA9IE5VTEwsCisJLmVhcmx5X3Vu cmVnaXN0ZXIgPSBOVUxMLAorCS5zZXRfY3JjX3NvdXJjZSA9IE5VTEwsCisJLmF0b21pY19wcmlu dF9zdGF0ZSA9IE5VTEwsCisJLmdldF92YmxhbmtfY291bnRlciA9IE5VTEwsIC8qIG5vdCBzdXBw b3J0ZWQgYnkgZmJkZXYgKi8KKwkuZW5hYmxlX3ZibGFuayA9IGNydGNfZW5hYmxlX3ZibGFuaywK KwkuZGlzYWJsZV92YmxhbmsgPSBjcnRjX2Rpc2FibGVfdmJsYW5rCit9OworCisvKgorICogRW5j b2RlcgorICovCisKK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBlbmNvZGVyX2hlbHBlcl9t b2RlX3ZhbGlkKAorCXN0cnVjdCBkcm1fZW5jb2RlciAqY3J0YywgY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCit7CisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRpYyBib29s IGVuY29kZXJfaGVscGVyX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAor CQkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCSAgICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgdm9pZCBlbmNvZGVyX2hlbHBlcl9hdG9taWNfbW9kZV9zZXQoCisJc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7IH0KKworc3Rh dGljIHZvaWQgZW5jb2Rlcl9oZWxwZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCit7IH0KKworc3RhdGljIHZvaWQgZW5jb2Rlcl9oZWxwZXJfZW5hYmxlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKK3sgfQorCitzdGF0aWMgaW50IGVuY29kZXJfaGVscGVyX2F0b21p Y19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICAgICAgIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGZiZGV2ZHJtX2VuY29kZXJfaGVscGVyX2Z1 bmNzID0geworCS5kcG1zID0gTlVMTCwgLyogbGVnYWN5ICovCisJLm1vZGVfdmFsaWQgPSBlbmNv ZGVyX2hlbHBlcl9tb2RlX3ZhbGlkLAorCS5tb2RlX2ZpeHVwID0gZW5jb2Rlcl9oZWxwZXJfbW9k ZV9maXh1cCwKKwkucHJlcGFyZSA9IE5VTEwsIC8qIGxlZ2FjeSAqLworCS5jb21taXQgPSBOVUxM LCAvKiBsZWdhY3kgKi8KKwkubW9kZV9zZXQgPSBOVUxMLCAvKiBsZWdhY3kgKi8KKwkuYXRvbWlj X21vZGVfc2V0ID0gZW5jb2Rlcl9oZWxwZXJfYXRvbWljX21vZGVfc2V0LAorCS5nZXRfY3J0YyA9 IE5VTEwsIC8qIGxlZ2FjeSAqLworCS5kZXRlY3QgPSBOVUxMLCAvKiBsZWdhY3kgKi8KKwkuZGlz YWJsZSA9IGVuY29kZXJfaGVscGVyX2Rpc2FibGUsCisJLmVuYWJsZSA9IGVuY29kZXJfaGVscGVy X2VuYWJsZSwKKwkuYXRvbWljX2NoZWNrID0gZW5jb2Rlcl9oZWxwZXJfYXRvbWljX2NoZWNrCit9 OworCitzdGF0aWMgdm9pZCBlbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQoreyB9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZmJkZXZk cm1fZW5jb2Rlcl9mdW5jcyA9IHsKKwkucmVzZXQgPSBOVUxMLAorCS5kZXN0cm95ID0gZW5jb2Rl cl9kZXN0cm95LAorCS5sYXRlX3JlZ2lzdGVyID0gTlVMTCwKKwkuZWFybHlfdW5yZWdpc3RlciA9 IE5VTEwsCit9OworCisvKgorICogQ29ubmVjdG9yCisgKi8KKworc3RhdGljIGludCBjb25uZWN0 b3JfaGVscGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvbm5lY3Rvcl9oZWxwZXJfZGV0ZWN0X2N0eChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX21v ZGVzZXRfYWNxdWlyZV9jdHggKmN0eCwKKwkJCQkgICAgICAgYm9vbCBmb3JjZSkKK3sKKwlyZXR1 cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9tb2Rl X3N0YXR1cyBjb25uZWN0b3JfaGVscGVyX21vZGVfdmFsaWQoCisJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJcmV0dXJu IE1PREVfT0s7Cit9CisKK3N0YXRpYyBpbnQgY29ubmVjdG9yX2hlbHBlcl9hdG9taWNfY2hlY2so c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkJIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY29ubmVj dG9yX2hlbHBlcl9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkJCSAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSkKK3sgfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzCisJZmJkZXZkcm1fY29u bmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0gY29ubmVjdG9yX2hlbHBlcl9n ZXRfbW9kZXMsCisJLmRldGVjdF9jdHggPSBjb25uZWN0b3JfaGVscGVyX2RldGVjdF9jdHgsCisJ Lm1vZGVfdmFsaWQgPSBjb25uZWN0b3JfaGVscGVyX21vZGVfdmFsaWQsCisJLmJlc3RfZW5jb2Rl ciA9IE5VTEwsIC8qIHVzZSBkZWZhdWx0ICovCisJLmF0b21pY19iZXN0X2VuY29kZXIgPSBOVUxM LCAvKiB1c2UgYmVzdF9lbmNvZGVyIGluc3RlYWQgKi8KKwkuYXRvbWljX2NoZWNrID0gY29ubmVj dG9yX2hlbHBlcl9hdG9taWNfY2hlY2ssCisJLmF0b21pY19jb21taXQgPSBjb25uZWN0b3JfaGVs cGVyX2F0b21pY19jb21taXQKK307CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz IGNvbm5lY3Rvcl9kZXRlY3QoCisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9v bCBmb3JjZSkKK3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0 YXRpYyB2b2lkIGNvbm5lY3Rvcl9mb3JjZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQoreyB9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCit7IH0KKworc3RhdGljIGludCBjb25uZWN0b3JfYXRvbWljX3NldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCQkgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAorCQkJCQkgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJv cGVydHksCisJCQkJCSB1aW50NjRfdCB2YWwpCit7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0 YXRpYyBpbnQgY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoCisJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKKwljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3Rh dGUsIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCXVpbnQ2NF90ICp2YWwpCit7CisJ cmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9m dW5jcyBmYmRldmRybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmRwbXMgPSBOVUxMLCAvKiBub3Qg dXNlZCBieSBhdG9taWMgZHJpdmVycyAqLworCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9yZXNldCwKKwkuZGV0ZWN0ID0gY29ubmVjdG9yX2RldGVjdCwKKwkuZm9yY2UgPSBj b25uZWN0b3JfZm9yY2UsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9j b25uZWN0b3JfbW9kZXMsCisJLnNldF9wcm9wZXJ0eSA9IE5VTEwsCisJLmxhdGVfcmVnaXN0ZXIg PSBOVUxMLAorCS5lYXJseV91bnJlZ2lzdGVyID0gTlVMTCwKKwkuZGVzdHJveSA9IGNvbm5lY3Rv cl9kZXN0cm95LAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1f YXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKKwkuYXRvbWljX3NldF9wcm9w ZXJ0eSA9IGNvbm5lY3Rvcl9hdG9taWNfc2V0X3Byb3BlcnR5LAorCS5hdG9taWNfZ2V0X3Byb3Bl cnR5ID0gY29ubmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHksCisJLmF0b21pY19wcmludF9zdGF0 ZSA9IE5VTEwKK307CisKKy8qCisgKiBNb2RlIGNvbmZpZworICovCisKK3N0YXRpYyBlbnVtIGRy bV9tb2RlX3N0YXR1cyBtb2RlX2NvbmZpZ19tb2RlX3ZhbGlkKAorCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXJldHVybiBN T0RFX09LOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBm YmRldmRybV9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKKwkuZmJfY3JlYXRlID0gZHJtX2dlbV9mYl9j cmVhdGUsCisJLmdldF9mb3JtYXRfaW5mbyA9IE5VTEwsCisJLyogRFJNIHBvcnRpbmcgbm90ZXM6 IHRoZSBvdXRwdXRfcG9sbF9jaGFuZ2VkIGNhbGxiYWNrIGlzIHVzZWQgYnkKKwkgKiBmYiBoZWxw ZXJzIHRvIGltcGxlbWVudCBmYmRldiBlbXVsYXRpb24uIEFzIGZiZGV2ZHJtIGlzIGJ1aWx0CisJ ICogdXBvbiBmYmRldiwgdGhpcyBpcyBiYXNpY2FsbHkgdGhlIG9wcG9zaXRlLiBJZiB5b3UncmUg cG9ydGluZworCSAqIGFuIGZiZGV2IGRyaXZlciB0byBEUk0gYW5kIGVuYWJsZSBmYmRldiBlbXVs YXRpb24sIHRoaXMgY2FsbGJhY2sKKwkgKiB3aWxsIGJlY29tZSB1c2VmdWwuCisJICovCisJLm91 dHB1dF9wb2xsX2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5nZWQsCisJ Lm1vZGVfdmFsaWQgPSBtb2RlX2NvbmZpZ19tb2RlX3ZhbGlkLAorCS5hdG9taWNfY2hlY2sgPSBk cm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdCwKKwkuYXRvbWljX3N0YXRlX2FsbG9jID0gTlVMTCwKKwkuYXRvbWljX3N0YXRl X2NsZWFyID0gTlVMTCwKKwkuYXRvbWljX3N0YXRlX2ZyZWUgPSBOVUxMCit9OworCisvKgorICog UHVibGljIGludGVyZmFjZQorICovCisKK3N0YXRpYyBpbnQgdXBkYXRlX21vZGVfY29uZmlnX2Zy b21fZmJfaW5mbyhzdHJ1Y3QgZHJtX21vZGVfY29uZmlnKiBtb2RlX2NvbmZpZywgc3RydWN0IGZi X2luZm8gKmZiX2luZm8pCit7CisJLyogRFJNIGJhY2twb3J0aW5nIG5vdGVzOiBUaGlzIGZ1bmN0 aW9uIG9ubHkgZXhpc3RzIHRvIHdvcmsgYXJvdW5kCisJICogdGhlIGZhY3QgdGhhdCB3ZSBkb24n dCBrbm93IHRoZSBoYXJkd2FyZSBsaW1pdGF0aW9ucy4gSGVyZSB3ZQorCSAqIHRlc3QgZm9yIHRo ZSBtYXhpbXVtIHN1cHBvcnRlZCByZXNvbHV0aW9uLiBJZiB5b3UncmUgY29udmVydGluZworCSAq IGFuIGZiZGV2IGRyaXZlciB0byBEUk0sIHJlbW92ZSB0aGlzIGZ1bmN0aW9uIGFuZCBzaW1wbHkg ZmlsbCBpbgorCSAqIHRoZSBhY3R1YWwgaGFyZHdhcmUgbGltaXRzIGluIHRoZSBtb2RlX2NvbmZp ZyBzdHJ1Y3R1cmUuCisJICovCisKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7CisJdTMyIHhyZXMg PSAwOworCXUzMiB5cmVzID0gMDsKKwlpbnQgbnVtX21vZGVzID0gMDsKKworCWxpc3RfZm9yX2Vh Y2gocG9zLCAmZmJfaW5mby0+bW9kZWxpc3QpIHsKKwkJY29uc3Qgc3RydWN0IGZiX21vZGVsaXN0 ICptb2RlbGlzdCA9CisJCQljb250YWluZXJfb2YocG9zLCBzdHJ1Y3QgZmJfbW9kZWxpc3QsIGxp c3QpOworCQlpZiAobW9kZWxpc3QtPm1vZGUueHJlcyA+IHhyZXMpCisJCQl4cmVzID0gbW9kZWxp c3QtPm1vZGUueHJlczsKKwkJaWYgKG1vZGVsaXN0LT5tb2RlLnlyZXMgPiB5cmVzKQorCQkJeXJl cyA9IG1vZGVsaXN0LT5tb2RlLnlyZXM7CisKKwkJKytudW1fbW9kZXM7CisJfQorCisJaWYgKCF4 cmVzIHx8ICF5cmVzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCW1vZGVfY29uZmlnLT5tYXhfd2lk dGggPSAoaW50KXhyZXM7CisJbW9kZV9jb25maWctPm1heF9oZWlnaHQgPSAoaW50KXlyZXM7CisJ bW9kZV9jb25maWctPmZiX2Jhc2UgPSBmYl9pbmZvLT5maXguc21lbV9zdGFydDsKKworCS8qIFRP RE86IGdldCBwcmVmZXJyZWQgZGVwdGggZnJvbSBzY3JlZW5pbmZvICovCisJbW9kZV9jb25maWct PnByZWZlcnJlZF9kZXB0aCA9IDMyOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBmYmRldmRybV9t b2Rlc2V0X2luaXQoc3RydWN0IGZiZGV2ZHJtX21vZGVzZXQgKm1vZGVzZXQsCisJCQkgIHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKQoreworCWludCByZXQ7 CisKKwltb2Rlc2V0LT5kZXYgPSBkZXY7CisJbW9kZXNldC0+ZmJfaW5mbyA9IGZiX2luZm87CisK Kwlkcm1fbW9kZV9jb25maWdfaW5pdChkZXYpOworCXJldCA9IHVwZGF0ZV9tb2RlX2NvbmZpZ19m cm9tX2ZiX2luZm8oJmRldi0+bW9kZV9jb25maWcsIGZiX2luZm8pOworCWlmIChyZXQpCisJCWdv dG8gZXJyX2RybV9tb2RlX2NvbmZpZ19jbGVhbnVwOworCWRldi0+bW9kZV9jb25maWcuZnVuY3Mg PSAmZmJkZXZkcm1fbW9kZV9jb25maWdfZnVuY3M7CisKKwkvKiBPbmUgYnkgb25lLCB3ZSBlbmFi bGUgYWxsIHN0YWdlcyBvZiB0aGUgZGlzcGxheSBwaXBlbGluZSBhbmQKKwkgKiBjb25uZWN0IHRo ZW0gd2l0aCBlYWNoIG90aGVyLgorCSAqLworCisJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3Bs YW5lcyhkZXYsICZtb2Rlc2V0LT5jcnRjLCBOVUxMLCBOVUxMLAorCQkJCQkmZmJkZXZkcm1fY3J0 Y19mdW5jcywgTlVMTCk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZHJtX21vZGVfY29uZmlnX2Ns ZWFudXA7CisJZHJtX2NydGNfaGVscGVyX2FkZCgmbW9kZXNldC0+Y3J0YywgJmZiZGV2ZHJtX2Ny dGNfaGVscGVyX2Z1bmNzKTsKKworCS8qIFVzZSBEUk1fTU9ERV9FTkNPREVSX1RZUEVfREFDLiBJ dCdzIHRydWUgZm9yIG1hbnkgb2YgdGhlIGZiZGV2CisJICogZGV2aWNlcyBhbmQgZG9lc24ndCBp bXBseSBob3RwbHVnZ2luZy4gKi8KKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgJm1vZGVz ZXQtPmVuY29kZXIsCisJCQkgICAgICAgJmZiZGV2ZHJtX2VuY29kZXJfZnVuY3MsCisJCQkgICAg ICAgRFJNX01PREVfRU5DT0RFUl9EQUMsIE5VTEwpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2Ry bV9tb2RlX2NvbmZpZ19jbGVhbnVwOworCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoJm1vZGVzZXQt PmVuY29kZXIsCisJCQkgICAgICAgJmZiZGV2ZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKKwor CW1vZGVzZXQtPmVuY29kZXIucG9zc2libGVfY3J0Y3MgPSAoMXVsIDw8IG1vZGVzZXQtPmNydGMu aW5kZXgpOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgJm1vZGVzZXQtPmNvbm5l Y3RvciwKKwkJCQkgJmZiZGV2ZHJtX2Nvbm5lY3Rvcl9mdW5jcywKKwkJCQkgRFJNX01PREVfQ09O TkVDVE9SX1ZHQSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZHJtX21vZGVfY29uZmlnX2NsZWFu dXA7CisJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZtb2Rlc2V0LT5jb25uZWN0b3IsCisJCQkJ ICZmYmRldmRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKKworCXJldCA9IGRybV9jb25uZWN0 b3JfcmVnaXN0ZXIoJm1vZGVzZXQtPmNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8g ZXJyX2RybV9tb2RlX2NvbmZpZ19jbGVhbnVwOworCisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9hdHRh Y2hfZW5jb2RlcigmbW9kZXNldC0+Y29ubmVjdG9yLAorCQkJCQkgICAmbW9kZXNldC0+ZW5jb2Rl cik7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZHJtX21vZGVfY29uZmlnX2NsZWFudXA7CisKKwkv KiBGaW5hbCBzdGVwOiByZXNldHRpbmcgdGhlIGRldmljZSdzIG1vZGUgY29uZmlnIGNyZWF0ZXMK KwkgKiBzdGF0ZSBmb3IgYWxsIG9iamVjdHMgaW4gdGhlIG1vZGUtc2V0dGluZyBwaXBlbGluZS4K KwkgKi8KKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKKworCXJldHVybiAwOworCitlcnJf ZHJtX21vZGVfY29uZmlnX2NsZWFudXA6CisJLyogQWxzbyByZW1vdmVzIGFsbCBDUlRDcywgZW5j b2RlcnMgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBhZGRlZC4gKi8KKwlkcm1fbW9kZV9jb25maWdf Y2xlYW51cChkZXYpOworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgZmJkZXZkcm1fbW9kZXNldF9j bGVhbnVwKHN0cnVjdCBmYmRldmRybV9tb2Rlc2V0ICptb2Rlc2V0KQoreworCWRybV9tb2RlX2Nv bmZpZ19jbGVhbnVwKG1vZGVzZXQtPmRldik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZmJkZXZkcm0vZmJkZXZkcm1fbW9kZXNldC5oIGIvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJt L2ZiZGV2ZHJtX21vZGVzZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjIxZTg3Y2FhODE5NgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mYmRl dmRybS9mYmRldmRybV9tb2Rlc2V0LmgKQEAgLTAsMCArMSwzNiBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKyAqCisgKiBPbmUgcHVycG9zZSBvZiB0aGlz IGRyaXZlciBpcyB0byBhbGxvdyBmb3IgZWFzeSBjb252ZXJzaW9uIG9mIGZyYW1lYnVmZmVyCisg KiBkcml2ZXJzIHRvIERSTS4gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdQTCwg eW91IGFyZSBhbGxvd2VkIHRvCisgKiByZWxpY2Vuc2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJt cyBvZiBhIGxpY2Vuc2Ugb2YgeW91ciBjaG9pY2UgaWYgeW91J3JlCisgKiBwb3J0aW5nIGEgZnJh bWVidWZmZXIgZHJpdmVyLiBJbiBvcmRlciB0byBkbyBzbywgdXBkYXRlIHRoZSBTUERYIGxpY2Vu c2UKKyAqIGlkZW50aWZpZXIgdG8gdGhlIG5ldyBsaWNlbnNlIGFuZCByZW1vdmUgdGhpcyBleGNl cHRpb24uCisgKgorICogSWYgeW91IGFkZCBjb2RlIHRvIHRoaXMgZmlsZSwgcGxlYXNlIGVuc3Vy ZSB0aGF0IGl0J3MgY29tcGF0aWJsZSB3aXRoIHRoZQorICogc3RhdGVkIGV4Y2VwdGlvbi4KKyAq LworCisjaWZuZGVmIEZCREVWRFJNX01PREVTRVRfSAorI2RlZmluZSBGQkRFVkRSTV9NT0RFU0VU X0gKKworI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+CisKK3N0cnVjdCBkcm1fZGV2aWNl Oworc3RydWN0IGZiX2luZm87CisKK3N0cnVjdCBmYmRldmRybV9tb2Rlc2V0IHsKKwlzdHJ1Y3Qg ZHJtX2NydGMgY3J0YzsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciBjb25uZWN0b3I7CisKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCXN0cnVj dCBmYl9pbmZvICpmYl9pbmZvOworfTsKKworaW50IGZiZGV2ZHJtX21vZGVzZXRfaW5pdChzdHJ1 Y3QgZmJkZXZkcm1fbW9kZXNldCAqbW9kZXNldCwKKwkJCSAgc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGZiX2luZm8gKmZiX2luZm8pOwordm9pZCBmYmRldmRybV9tb2Rlc2V0X2NsZWFu dXAoc3RydWN0IGZiZGV2ZHJtX21vZGVzZXQgKm1vZGVzZXQpOworCisjZW5kaWYKLS0gCjIuMjEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs