From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC v3 03/12] drm: Make ioctls available for in-kernel clients part 1 Date: Thu, 22 Feb 2018 21:06:44 +0100 Message-ID: <20180222200653.19453-4-noralf@tronnes.org> References: <20180222200653.19453-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 B2F976E07B for ; Thu, 22 Feb 2018 20:07:09 +0000 (UTC) In-Reply-To: <20180222200653.19453-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: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyBwYXJ0IDEgb2YgbWFraW5nIGlvY3RscyB1c2VhYmxlIGZvciBpbi1rZXJuZWwgY2xp ZW50cy4KTWFrZSBhbiBpb2N0bCB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYSBmdW5jdGlv biB0aGF0IGNhbiBiZSB1c2VkIGJ5CmluLWtlcm5lbCBjbGllbnRzLgoKSXQgYWRqdXN0cyB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9ucyB0byBoYW5kbGUga2VybmVsIGJ1ZmZlcnM6Ci0gZHJtX21vZGVf Z2V0cmVzb3VyY2VzKCkKLSBkcm1fbW9kZV9zZXRjcnRjKCkKLSBkcm1fbW9kZV9nZXRjb25uZWN0 b3IoKQotIGRybV9tb2RlX2RpcnR5ZmJfaW9jdGwoKQoKVGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBj aGFuZ2UgZnJvbSB0aGUgdXNlcnNwYWNlIHNpZGUuCgpTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLD uG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5l Y3Rvci5jICAgICB8IDUwICsrKysrKysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGMuYyAgICAgICAgICB8IDMyICsrKysrKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjX2ludGVybmFsLmggfCAyMyArKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9mcmFtZWJ1ZmZlci5jICAgfCA1NiArKysrKysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2lvY3RsLmMgICAgICAgICB8ICA2ICstLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9tb2RlX2NvbmZpZy5jICAgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tCiA2IGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9jb25uZWN0b3IuYwppbmRleCBiM2NkZTg5N2NkODAuLjU3YzljMjdjZWIwNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCkBAIC0xNTQ0LDEwICsxNTQ0LDEwIEBAIHN0YXRpYyBi b29sIGRybV9tb2RlX2V4cG9zZV90b191c2Vyc3BhY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKLWludCBkcm1fbW9kZV9nZXRjb25uZWN0 b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJCSAgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYpCitpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkgIHN0cnVjdCBkcm1fbW9kZV9nZXRfY29ubmVjdG9yICpvdXRfcmVzcCwK KwkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIGJvb2wgdXNlcikKIHsKLQlzdHJ1Y3Qg ZHJtX21vZGVfZ2V0X2Nvbm5lY3RvciAqb3V0X3Jlc3AgPSBkYXRhOwogCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwpAQCAtMTU1Niw5ICsxNTU2LDEwIEBAIGludCBkcm1f bW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlp bnQgcmV0ID0gMDsKIAlpbnQgY29waWVkID0gMDsKIAlpbnQgaTsKLQlzdHJ1Y3QgZHJtX21vZGVf bW9kZWluZm8gdV9tb2RlOwotCXN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyBfX3VzZXIgKm1vZGVf cHRyOwotCXVpbnQzMl90IF9fdXNlciAqZW5jb2Rlcl9wdHI7CisJc3RydWN0IGRybV9tb2RlX21v ZGVpbmZvIF9fdXNlciAqbW9kZV9wdHJfdXNlcjsKKwlzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8g dV9tb2RlLCAqbW9kZV9wdHI7CisJdWludDMyX3QgX191c2VyICplbmNvZGVyX3B0cl91c2VyOwor CXUzMiAqZW5jb2Rlcl9wdHI7CiAKIAlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfTU9ERVNFVCkpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTU3NSwxMyArMTU3NiwxOCBA QCBpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAKIAlpZiAoKG91dF9yZXNwLT5jb3VudF9lbmNvZGVycyA+PSBlbmNvZGVyc19jb3Vu dCkgJiYgZW5jb2RlcnNfY291bnQpIHsKIAkJY29waWVkID0gMDsKLQkJZW5jb2Rlcl9wdHIgPSAo dWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpKG91dF9yZXNwLT5lbmNvZGVyc19wdHIp OworCQllbmNvZGVyX3B0cl91c2VyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNpZ25lZCBsb25n KShvdXRfcmVzcC0+ZW5jb2RlcnNfcHRyKTsKKwkJZW5jb2Rlcl9wdHIgPSAodTMyICopKHVuc2ln bmVkIGxvbmcpKG91dF9yZXNwLT5lbmNvZGVyc19wdHIpOwogCQlmb3IgKGkgPSAwOyBpIDwgRFJN X0NPTk5FQ1RPUl9NQVhfRU5DT0RFUjsgaSsrKSB7CiAJCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVy X2lkc1tpXSAhPSAwKSB7Ci0JCQkJaWYgKHB1dF91c2VyKGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNb aV0sCi0JCQkJCSAgICAgZW5jb2Rlcl9wdHIgKyBjb3BpZWQpKSB7Ci0JCQkJCXJldCA9IC1FRkFV TFQ7Ci0JCQkJCWdvdG8gb3V0OworCQkJCWlmICh1c2VyKSB7CisJCQkJCWlmIChwdXRfdXNlcihj b25uZWN0b3ItPmVuY29kZXJfaWRzW2ldLAorCQkJCQkJICAgICBlbmNvZGVyX3B0cl91c2VyICsg Y29waWVkKSkgeworCQkJCQkJcmV0ID0gLUVGQVVMVDsKKwkJCQkJCWdvdG8gb3V0OworCQkJCQl9 CisJCQkJfSBlbHNlIHsKKwkJCQkJZW5jb2Rlcl9wdHJbY29waWVkXSA9IGNvbm5lY3Rvci0+ZW5j b2Rlcl9pZHNbaV07CiAJCQkJfQogCQkJCWNvcGllZCsrOwogCQkJfQpAQCAtMTYxNiwxOCArMTYy MiwyMyBAQCBpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJICovCiAJaWYgKChvdXRfcmVzcC0+Y291bnRfbW9kZXMgPj0gbW9kZV9j b3VudCkgJiYgbW9kZV9jb3VudCkgewogCQljb3BpZWQgPSAwOwotCQltb2RlX3B0ciA9IChzdHJ1 Y3QgZHJtX21vZGVfbW9kZWluZm8gX191c2VyICopKHVuc2lnbmVkIGxvbmcpb3V0X3Jlc3AtPm1v ZGVzX3B0cjsKKwkJbW9kZV9wdHJfdXNlciA9IChzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gX191 c2VyICopKHVuc2lnbmVkIGxvbmcpb3V0X3Jlc3AtPm1vZGVzX3B0cjsKKwkJbW9kZV9wdHIgPSAo c3RydWN0IGRybV9tb2RlX21vZGVpbmZvICopKHVuc2lnbmVkIGxvbmcpb3V0X3Jlc3AtPm1vZGVz X3B0cjsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVh ZCkgewogCQkJaWYgKCFkcm1fbW9kZV9leHBvc2VfdG9fdXNlcnNwYWNlKG1vZGUsIGZpbGVfcHJp dikpCiAJCQkJY29udGludWU7CiAKIAkJCWRybV9tb2RlX2NvbnZlcnRfdG9fdW1vZGUoJnVfbW9k ZSwgbW9kZSk7Ci0JCQlpZiAoY29weV90b191c2VyKG1vZGVfcHRyICsgY29waWVkLAotCQkJCQkg JnVfbW9kZSwgc2l6ZW9mKHVfbW9kZSkpKSB7Ci0JCQkJcmV0ID0gLUVGQVVMVDsKLQkJCQltdXRl eF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCQkJaWYgKHVzZXIpIHsKKwkJCQlp ZiAoY29weV90b191c2VyKG1vZGVfcHRyX3VzZXIgKyBjb3BpZWQsCisJCQkJCQkgJnVfbW9kZSwg c2l6ZW9mKHVfbW9kZSkpKSB7CisJCQkJCXJldCA9IC1FRkFVTFQ7CisJCQkJCW11dGV4X3VubG9j aygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAKLQkJCQlnb3RvIG91dDsKKwkJCQkJZ290byBv dXQ7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQltb2RlX3B0cltjb3BpZWRdID0gdV9tb2RlOwog CQkJfQogCQkJY29waWVkKys7CiAJCX0KQEAgLTE2NTYsNiArMTY2NywxMSBAQCBpbnQgZHJtX21v ZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0 dXJuIHJldDsKIH0KIAoraW50IGRybV9tb2RlX2dldGNvbm5lY3Rvcl9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KQoreworCXJldHVybiBkcm1fbW9kZV9nZXRjb25uZWN0b3IoZGV2LCBkYXRhLCBmaWxlX3ByaXYs IHRydWUpOworfQogCiAvKioKICAqIERPQzogVGlsZSBncm91cApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwppbmRleCAz NTNlMjRmY2RlOWUuLmM5YWIxY2M2YjQxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKQEAgLTUzOCwyMSArNTM4 LDIxIEBAIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfY2hlY2tfdmlld3BvcnQpOwogLyoqCiAgKiBk cm1fbW9kZV9zZXRjcnRjIC0gc2V0IENSVEMgY29uZmlndXJhdGlvbgogICogQGRldjogZHJtIGRl dmljZSBmb3IgdGhlIGlvY3RsCi0gKiBAZGF0YTogZGF0YSBwb2ludGVyIGZvciB0aGUgaW9jdGwK LSAqIEBmaWxlX3ByaXY6IGRybSBmaWxlIGZvciB0aGUgaW9jdGwgY2FsbAorICogQGNydGNfcmVx OiBwb2ludGVyIHRvIHJlcXVlc3Qgc3RydWN0dXJlCisgKiBAZmlsZV9wcml2OiBkcm0gZmlsZQor ICogQHVzZXI6IFRydWUgaWYgY2FsbGVkIGZvcm0gdXNlcnNwYWNlLCBmYWxzZSBmcm9tIGluLWtl cm5lbCBjbGllbnQKICAqCi0gKiBCdWlsZCBhIG5ldyBDUlRDIGNvbmZpZ3VyYXRpb24gYmFzZWQg b24gdXNlciByZXF1ZXN0LgorICogQnVpbGQgYSBuZXcgQ1JUQyBjb25maWd1cmF0aW9uIGJhc2Vk IG9uIHJlcXVlc3QuCiAgKgotICogQ2FsbGVkIGJ5IHRoZSB1c2VyIHZpYSBpb2N0bC4KKyAqIENh bGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwsIG9yIGJ5IGFuIGluLWtlcm5lbCBjbGllbnQuCiAg KgogICogUmV0dXJuczoKICAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFp bHVyZS4KICAqLwotaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKLQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK2ludCBkcm1f bW9kZV9zZXRjcnRjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fbW9kZV9jcnRj ICpjcnRjX3JlcSwKKwkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgYm9vbCB1c2Vy KQogewogCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmln OwotCXN0cnVjdCBkcm1fbW9kZV9jcnRjICpjcnRjX3JlcSA9IGRhdGE7CiAJc3RydWN0IGRybV9j cnRjICpjcnRjOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICoqY29ubmVjdG9yX3NldCA9IE5VTEws ICpjb25uZWN0b3I7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBOVUxMOwpAQCAtNjc4 LDEwICs2NzgsMTQgQEAgaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAogCQlmb3IgKGkgPSAwOyBpIDwgY3J0Y19yZXEtPmNvdW50X2Nvbm5l Y3RvcnM7IGkrKykgewogCQkJY29ubmVjdG9yX3NldFtpXSA9IE5VTEw7Ci0JCQlzZXRfY29ubmVj dG9yc19wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpY3J0Y19yZXEtPnNl dF9jb25uZWN0b3JzX3B0cjsKLQkJCWlmIChnZXRfdXNlcihvdXRfaWQsICZzZXRfY29ubmVjdG9y c19wdHJbaV0pKSB7Ci0JCQkJcmV0ID0gLUVGQVVMVDsKLQkJCQlnb3RvIG91dDsKKwkJCWlmICh1 c2VyKSB7CisJCQkJc2V0X2Nvbm5lY3RvcnNfcHRyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNp Z25lZCBsb25nKWNydGNfcmVxLT5zZXRfY29ubmVjdG9yc19wdHI7CisJCQkJaWYgKGdldF91c2Vy KG91dF9pZCwgJnNldF9jb25uZWN0b3JzX3B0cltpXSkpIHsKKwkJCQkJcmV0ID0gLUVGQVVMVDsK KwkJCQkJZ290byBvdXQ7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlvdXRfaWQgPSAoKHUzMiAq KSh1bnNpZ25lZCBsb25nKWNydGNfcmVxLT5zZXRfY29ubmVjdG9yc19wdHIpW2ldOwogCQkJfQog CiAJCQljb25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgb3V0 X2lkKTsKQEAgLTczMiw2ICs3MzYsMTIgQEAgaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gcmV0OwogfQogCitpbnQgZHJtX21v ZGVfc2V0Y3J0Y19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJcmV0dXJuIGRybV9tb2RlX3NldGNy dGMoZGV2LCBkYXRhLCBmaWxlX3ByaXYsIHRydWUpOworfQorCiBpbnQgZHJtX21vZGVfY3J0Y19z ZXRfb2JqX3Byb3Aoc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqLAogCQkJICAgICAgIHN0cnVj dCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAogCQkJICAgICAgIHVpbnQ2NF90IHZhbHVlKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmggYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaAppbmRleCBhZjAwZjQyYmEyNjkuLjI5YzU5Y2U3ZTU2 ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmgKQEAgLTQ1LDIwICs0NSwyNiBAQCB2 b2lkIGRybV9jcnRjX3VucmVnaXN0ZXJfYWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiBz dHJ1Y3QgZG1hX2ZlbmNlICpkcm1fY3J0Y19jcmVhdGVfZmVuY2Uoc3RydWN0IGRybV9jcnRjICpj cnRjKTsKIAoraW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9tb2RlX2NydGMgKmNydGNfcmVxLAorCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2LCBib29sIHVzZXIpOworCiAvKiBJT0NUTHMgKi8KIGludCBkcm1fbW9kZV9nZXRjcnRj KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYpOwotaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKLQkJICAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Citp bnQgZHJtX21vZGVfc2V0Y3J0Y19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICAg dm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogCiAKIC8qIGRybV9tb2Rl X2NvbmZpZy5jICovCiBpbnQgZHJtX21vZGVzZXRfcmVnaXN0ZXJfYWxsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwogdm9pZCBkcm1fbW9kZXNldF91bnJlZ2lzdGVyX2FsbChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKK2ludCBkcm1fbW9kZV9nZXRyZXNvdXJjZXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKKwkJCSAgc3RydWN0IGRybV9tb2RlX2NhcmRfcmVzICpjYXJkX3JlcywKKwkJCSAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsIGJvb2wgdXNlcik7CiAKIC8qIElPQ1RMcyAqLwotaW50 IGRybV9tb2RlX2dldHJlc291cmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICB2b2lk ICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CitpbnQgZHJtX21vZGVfZ2V0cmVz b3VyY2VzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogCiAKIC8qIGRybV9kdW1iX2J1ZmZlcnMuYyAqLwpA QCAtMTQzLDEyICsxNDksMTUgQEAgaW50IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfb2JqX3Byb3Ao c3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqLAogaW50IGRybV9jb25uZWN0b3JfY3JlYXRlX3N0 YW5kYXJkX3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBjb25zdCBjaGFyICpk cm1fZ2V0X2Nvbm5lY3Rvcl9mb3JjZV9uYW1lKGVudW0gZHJtX2Nvbm5lY3Rvcl9mb3JjZSBmb3Jj ZSk7CiB2b2lkIGRybV9jb25uZWN0b3JfZnJlZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yayk7CitpbnQgZHJtX21vZGVfZ2V0Y29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCQkgIHN0cnVjdCBkcm1fbW9kZV9nZXRfY29ubmVjdG9yICpvdXRfcmVzcCwKKwkJCSAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsIGJvb2wgdXNlcik7CiAKIC8qIElPQ1RMICovCiBpbnQg ZHJtX21vZGVfY29ubmVjdG9yX3Byb3BlcnR5X3NldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCQkgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKLWlu dCBkcm1fbW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCSAgdm9p ZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGRybV9tb2RlX2dldGNv bm5lY3Rvcl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXZvaWQgKmRhdGEsIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAogLyogZHJtX2ZyYW1lYnVmZmVyLmMgKi8KIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKgpAQCAtMTYxLDYgKzE3MCw4IEBAIGludCBkcm1fZnJhbWVi dWZmZXJfY2hlY2tfc3JjX2Nvb3Jkcyh1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCiAJ CQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CiB2b2lkIGRybV9mYl9y ZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAoraW50IGRybV9tb2RlX2RpcnR5 ZmIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9tb2RlX2ZiX2RpcnR5X2NtZCAq cmVxLAorCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCBib29sIHVzZXIpOwogCiAv KiBJT0NUTCAqLwogaW50IGRybV9tb2RlX2FkZGZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMKaW5kZXggNWExM2ZmMjlmNGYwLi5lOTE4YzcxMjRkY2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMKQEAgLTQ4NiwxMCArNDg2LDExIEBAIGludCBk cm1fbW9kZV9nZXRmYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogCiAvKioKLSAqIGRybV9t b2RlX2RpcnR5ZmJfaW9jdGwgLSBmbHVzaCBmcm9udGJ1ZmZlciByZW5kZXJpbmcgb24gYW4gRkIK LSAqIEBkZXY6IGRybSBkZXZpY2UgZm9yIHRoZSBpb2N0bAotICogQGRhdGE6IGRhdGEgcG9pbnRl ciBmb3IgdGhlIGlvY3RsCi0gKiBAZmlsZV9wcml2OiBkcm0gZmlsZSBmb3IgdGhlIGlvY3RsIGNh bGwKKyAqIGRybV9tb2RlX2RpcnR5ZmIgLSBmbHVzaCBmcm9udGJ1ZmZlciByZW5kZXJpbmcgb24g YW4gRkIKKyAqIEBkZXY6IGRybSBkZXZpY2UKKyAqIEByOiBwb2ludGVyIHRvIHJlcXVlc3Qgc3Ry dWN0dXJlCisgKiBAZmlsZV9wcml2OiBkcm0gZmlsZQorICogQHVzZXI6IHRydWUgaWYgY2FsbGVk IGZvcm0gdXNlcnNwYWNlLCBmYWxzZSBpZiBjYWxsZWQgYnkgaW4ta2VybmVsIGNsaWVudAogICoK ICAqIExvb2t1cCB0aGUgRkIgYW5kIGZsdXNoIG91dCB0aGUgZGFtYWdlZCBhcmVhIHN1cHBsaWVk IGJ5IHVzZXJzcGFjZSBhcyBhIGNsaXAKICAqIHJlY3RhbmdsZSBsaXN0LiBHZW5lcmljIHVzZXJz cGFjZSB3aGljaCBkb2VzIGZyb250YnVmZmVyIHJlbmRlcmluZyBtdXN0IGNhbGwKQEAgLTQ5OSwx NyArNTAwLDE2IEBAIGludCBkcm1fbW9kZV9nZXRmYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog ICogTW9kZXNldHRpbmcgZHJpdmVycyB3aGljaCBhbHdheXMgdXBkYXRlIHRoZSBmcm9udGJ1ZmZl ciBkbyBub3QgbmVlZCB0bwogICogaW1wbGVtZW50IHRoZSBjb3JyZXNwb25kaW5nICZkcm1fZnJh bWVidWZmZXJfZnVuY3MuZGlydHkgY2FsbGJhY2suCiAgKgotICogQ2FsbGVkIGJ5IHRoZSB1c2Vy IHZpYSBpb2N0bC4KKyAqIENhbGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwsIG9yIGJ5IGFuIGlu LWtlcm5lbCBjbGllbnQuCiAgKgogICogUmV0dXJuczoKICAqIFplcm8gb24gc3VjY2VzcywgbmVn YXRpdmUgZXJybm8gb24gZmFpbHVyZS4KICAqLwotaW50IGRybV9tb2RlX2RpcnR5ZmJfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCSAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2KQoraW50IGRybV9tb2RlX2RpcnR5ZmIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9tb2RlX2ZiX2RpcnR5X2NtZCAqciwKKwkJICAgICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwgYm9vbCB1c2VyKQogewogCXN0cnVjdCBkcm1fY2xpcF9yZWN0IF9fdXNl ciAqY2xpcHNfcHRyOwogCXN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcyA9IE5VTEw7Ci0Jc3Ry dWN0IGRybV9tb2RlX2ZiX2RpcnR5X2NtZCAqciA9IGRhdGE7CiAJc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmI7CiAJdW5zaWduZWQgZmxhZ3M7CiAJaW50IG51bV9jbGlwczsKQEAgLTUyMyw5ICs1 MjMsOCBAQCBpbnQgZHJtX21vZGVfZGlydHlmYl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQlyZXR1cm4gLUVOT0VOVDsKIAogCW51bV9jbGlwcyA9IHItPm51bV9jbGlwczsKLQljbGlw c19wdHIgPSAoc3RydWN0IGRybV9jbGlwX3JlY3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpci0+ Y2xpcHNfcHRyOwogCi0JaWYgKCFudW1fY2xpcHMgIT0gIWNsaXBzX3B0cikgeworCWlmICghbnVt X2NsaXBzICE9ICFyLT5jbGlwc19wdHIpIHsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXRf ZXJyMTsKIAl9CkBAIC01MzgsMjIgKzUzNywyOCBAQCBpbnQgZHJtX21vZGVfZGlydHlmYl9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlnb3RvIG91dF9lcnIxOwogCX0KIAotCWlmIChu dW1fY2xpcHMgJiYgY2xpcHNfcHRyKSB7CisJaWYgKG51bV9jbGlwcyAmJiByLT5jbGlwc19wdHIp IHsKIAkJaWYgKG51bV9jbGlwcyA8IDAgfHwgbnVtX2NsaXBzID4gRFJNX01PREVfRkJfRElSVFlf TUFYX0NMSVBTKSB7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBvdXRfZXJyMTsKIAkJfQot CQljbGlwcyA9IGtjYWxsb2MobnVtX2NsaXBzLCBzaXplb2YoKmNsaXBzKSwgR0ZQX0tFUk5FTCk7 Ci0JCWlmICghY2xpcHMpIHsKLQkJCXJldCA9IC1FTk9NRU07Ci0JCQlnb3RvIG91dF9lcnIxOwot CQl9CiAKLQkJcmV0ID0gY29weV9mcm9tX3VzZXIoY2xpcHMsIGNsaXBzX3B0ciwKLQkJCQkgICAg IG51bV9jbGlwcyAqIHNpemVvZigqY2xpcHMpKTsKLQkJaWYgKHJldCkgewotCQkJcmV0ID0gLUVG QVVMVDsKLQkJCWdvdG8gb3V0X2VycjI7CisJCWlmICh1c2VyKSB7CisJCQljbGlwc19wdHIgPSAo c3RydWN0IGRybV9jbGlwX3JlY3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpci0+Y2xpcHNfcHRy OworCQkJY2xpcHMgPSBrY2FsbG9jKG51bV9jbGlwcywgc2l6ZW9mKCpjbGlwcyksIEdGUF9LRVJO RUwpOworCQkJaWYgKCFjbGlwcykgeworCQkJCXJldCA9IC1FTk9NRU07CisJCQkJZ290byBvdXRf ZXJyMTsKKwkJCX0KKworCQkJcmV0ID0gY29weV9mcm9tX3VzZXIoY2xpcHMsIGNsaXBzX3B0ciwK KwkJCQkJICAgICBudW1fY2xpcHMgKiBzaXplb2YoKmNsaXBzKSk7CisJCQlpZiAocmV0KSB7CisJ CQkJcmV0ID0gLUVGQVVMVDsKKwkJCQlnb3RvIG91dF9lcnIyOworCQkJfQorCQl9IGVsc2Ugewor CQkJY2xpcHMgPSAoc3RydWN0IGRybV9jbGlwX3JlY3QgKikodW5zaWduZWQgbG9uZylyLT5jbGlw c19wdHI7CiAJCX0KIAl9CiAKQEAgLTU2NSwxMyArNTcwLDIwIEBAIGludCBkcm1fbW9kZV9kaXJ0 eWZiX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJfQogCiBvdXRfZXJyMjoKLQlrZnJl ZShjbGlwcyk7CisJaWYgKHVzZXIpCisJCWtmcmVlKGNsaXBzKTsKIG91dF9lcnIxOgogCWRybV9m cmFtZWJ1ZmZlcl9wdXQoZmIpOwogCiAJcmV0dXJuIHJldDsKIH0KIAoraW50IGRybV9tb2RlX2Rp cnR5ZmJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgIHZvaWQgKmRhdGEsIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXJldHVybiBkcm1fbW9kZV9kaXJ0eWZiKGRl diwgZGF0YSwgZmlsZV9wcml2LCB0cnVlKTsKK30KKwogLyoqCiAgKiBkcm1fZmJfcmVsZWFzZSAt IHJlbW92ZSBhbmQgZnJlZSB0aGUgRkJzIG9uIHRoaXMgZmlsZQogICogQHByaXY6IGRybSBmaWxl IGZvciB0aGUgaW9jdGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwppbmRleCBhZjc4MjkxMWM1MDUuLjM0NmI4MDYw ZGY3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1faW9jdGwuYwpAQCAtNjEzLDIxICs2MTMsMjEgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRihE Uk1fSU9DVExfR0VNX0ZMSU5LLCBkcm1fZ2VtX2ZsaW5rX2lvY3RsLCBEUk1fQVVUSHxEUk1fVU5M T0NLRUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX0dFTV9PUEVOLCBkcm1fZ2VtX29wZW5f aW9jdGwsIERSTV9BVVRIfERSTV9VTkxPQ0tFRCksCiAKLQlEUk1fSU9DVExfREVGKERSTV9JT0NU TF9NT0RFX0dFVFJFU09VUkNFUywgZHJtX21vZGVfZ2V0cmVzb3VyY2VzLCBEUk1fQ09OVFJPTF9B TExPV3xEUk1fVU5MT0NLRUQpLAorCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VUUkVT T1VSQ0VTLCBkcm1fbW9kZV9nZXRyZXNvdXJjZXNfaW9jdGwsIERSTV9DT05UUk9MX0FMTE9XfERS TV9VTkxPQ0tFRCksCiAKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9QUklNRV9IQU5ETEVfVE9f RkQsIGRybV9wcmltZV9oYW5kbGVfdG9fZmRfaW9jdGwsIERSTV9BVVRIfERSTV9VTkxPQ0tFRHxE Uk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9QUklNRV9GRF9UT19I QU5ETEUsIGRybV9wcmltZV9mZF90b19oYW5kbGVfaW9jdGwsIERSTV9BVVRIfERSTV9VTkxPQ0tF RHxEUk1fUkVOREVSX0FMTE9XKSwKIAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VU UExBTkVSRVNPVVJDRVMsIGRybV9tb2RlX2dldHBsYW5lX3JlcywgRFJNX0NPTlRST0xfQUxMT1d8 RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0dFVENSVEMsIGRy bV9tb2RlX2dldGNydGMsIERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCi0JRFJNX0lP Q1RMX0RFRihEUk1fSU9DVExfTU9ERV9TRVRDUlRDLCBkcm1fbW9kZV9zZXRjcnRjLCBEUk1fTUFT VEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCisJRFJNX0lPQ1RMX0RFRihEUk1f SU9DVExfTU9ERV9TRVRDUlRDLCBkcm1fbW9kZV9zZXRjcnRjX2lvY3RsLCBEUk1fTUFTVEVSfERS TV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExf TU9ERV9HRVRQTEFORSwgZHJtX21vZGVfZ2V0cGxhbmUsIERSTV9DT05UUk9MX0FMTE9XfERSTV9V TkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9TRVRQTEFORSwgZHJtX21v ZGVfc2V0cGxhbmUsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwK IAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0NVUlNPUiwgZHJtX21vZGVfY3Vyc29yX2lv Y3RsLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lP Q1RMX0RFRihEUk1fSU9DVExfTU9ERV9HRVRHQU1NQSwgZHJtX21vZGVfZ2FtbWFfZ2V0X2lvY3Rs LCBEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfU0VUR0FNTUEs IGRybV9tb2RlX2dhbW1hX3NldF9pb2N0bCwgRFJNX01BU1RFUnxEUk1fVU5MT0NLRUQpLAogCURS TV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VURU5DT0RFUiwgZHJtX21vZGVfZ2V0ZW5jb2Rl ciwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKLQlEUk1fSU9DVExfREVGKERSTV9J T0NUTF9NT0RFX0dFVENPTk5FQ1RPUiwgZHJtX21vZGVfZ2V0Y29ubmVjdG9yLCBEUk1fQ09OVFJP TF9BTExPV3xEUk1fVU5MT0NLRUQpLAorCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VU Q09OTkVDVE9SLCBkcm1fbW9kZV9nZXRjb25uZWN0b3JfaW9jdGwsIERSTV9DT05UUk9MX0FMTE9X fERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9BVFRBQ0hNT0RF LCBkcm1fbm9vcCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAog CURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfREVUQUNITU9ERSwgZHJtX25vb3AsIERSTV9N QVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERS TV9JT0NUTF9NT0RFX0dFVFBST1BFUlRZLCBkcm1fbW9kZV9nZXRwcm9wZXJ0eV9pb2N0bCwgRFJN X0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fbW9kZV9jb25maWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYwpp bmRleCBlNWM2NTMzNTcwMjQuLmE1YzA5MmU0YTA5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9tb2RlX2NvbmZpZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25m aWcuYwpAQCAtODEsMTkgKzgxLDIwIEBAIHZvaWQgZHJtX21vZGVzZXRfdW5yZWdpc3Rlcl9hbGwo c3RydWN0IGRybV9kZXZpY2UgKmRldikKICAqIFJldHVybnM6CiAgKiBaZXJvIG9uIHN1Y2Nlc3Ms IG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCiAgKi8KLWludCBkcm1fbW9kZV9nZXRyZXNvdXJj ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJCSAgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYpCitpbnQgZHJtX21vZGVfZ2V0cmVzb3VyY2VzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkgIHN0cnVjdCBkcm1fbW9kZV9jYXJkX3JlcyAqY2FyZF9yZXMsCisJCQkg IHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCBib29sIHVzZXIpCiB7Ci0Jc3RydWN0IGRybV9t b2RlX2NhcmRfcmVzICpjYXJkX3JlcyA9IGRhdGE7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmI7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCWludCBjb3VudCwgcmV0ID0g MDsKLQl1aW50MzJfdCBfX3VzZXIgKmZiX2lkOwotCXVpbnQzMl90IF9fdXNlciAqY3J0Y19pZDsK LQl1aW50MzJfdCBfX3VzZXIgKmNvbm5lY3Rvcl9pZDsKLQl1aW50MzJfdCBfX3VzZXIgKmVuY29k ZXJfaWQ7CisJdWludDMyX3QgX191c2VyICpmYl9pZF91c2VyOworCXVpbnQzMl90IF9fdXNlciAq Y3J0Y19pZF91c2VyOworCXVpbnQzMl90IF9fdXNlciAqY29ubmVjdG9yX2lkX3VzZXI7CisJdWlu dDMyX3QgX191c2VyICplbmNvZGVyX2lkX3VzZXI7CisJdTMyICpmYl9pZCwgKmNydGNfaWQsICpj b25uZWN0b3JfaWQsICplbmNvZGVyX2lkOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRl ciBjb25uX2l0ZXI7CiAKIAlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf TU9ERVNFVCkpCkBAIC0xMDIsMTIgKzEwMywxOCBAQCBpbnQgZHJtX21vZGVfZ2V0cmVzb3VyY2Vz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAltdXRleF9sb2NrKCZmaWxl X3ByaXYtPmZic19sb2NrKTsKIAljb3VudCA9IDA7Ci0JZmJfaWQgPSB1NjRfdG9fdXNlcl9wdHIo Y2FyZF9yZXMtPmZiX2lkX3B0cik7CisJZmJfaWRfdXNlciA9IHU2NF90b191c2VyX3B0cihjYXJk X3Jlcy0+ZmJfaWRfcHRyKTsKKwlmYl9pZCA9ICh1MzIgKikodW5zaWduZWQgbG9uZykoY2FyZF9y ZXMtPmZiX2lkX3B0cik7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShmYiwgJmZpbGVfcHJpdi0+ZmJz LCBmaWxwX2hlYWQpIHsKLQkJaWYgKGNvdW50IDwgY2FyZF9yZXMtPmNvdW50X2ZicyAmJgotCQkg ICAgcHV0X3VzZXIoZmItPmJhc2UuaWQsIGZiX2lkICsgY291bnQpKSB7Ci0JCQltdXRleF91bmxv Y2soJmZpbGVfcHJpdi0+ZmJzX2xvY2spOwotCQkJcmV0dXJuIC1FRkFVTFQ7CisJCWlmIChjb3Vu dCA8IGNhcmRfcmVzLT5jb3VudF9mYnMpIHsKKwkJCWlmICh1c2VyKSB7CisJCQkJaWYgKHB1dF91 c2VyKGZiLT5iYXNlLmlkLCBmYl9pZF91c2VyICsgY291bnQpKSB7CisJCQkJCW11dGV4X3VubG9j aygmZmlsZV9wcml2LT5mYnNfbG9jayk7CisJCQkJCXJldHVybiAtRUZBVUxUOworCQkJCX0KKwkJ CX0gZWxzZSB7CisJCQkJZmJfaWRbY291bnRdID0gZmItPmJhc2UuaWQ7CisJCQl9CiAJCX0KIAkJ Y291bnQrKzsKIAl9CkBAIC0xMjAsMzYgKzEyNyw1NCBAQCBpbnQgZHJtX21vZGVfZ2V0cmVzb3Vy Y2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJY2FyZF9yZXMtPm1pbl93 aWR0aCA9IGRldi0+bW9kZV9jb25maWcubWluX3dpZHRoOwogCiAJY291bnQgPSAwOwotCWNydGNf aWQgPSB1NjRfdG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNydGNfaWRfcHRyKTsKKwljcnRjX2lkX3Vz ZXIgPSB1NjRfdG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNydGNfaWRfcHRyKTsKKwljcnRjX2lkID0g KHUzMiAqKSh1bnNpZ25lZCBsb25nKShjYXJkX3Jlcy0+Y3J0Y19pZF9wdHIpOwogCWRybV9mb3Jf ZWFjaF9jcnRjKGNydGMsIGRldikgewogCQlpZiAoZHJtX2xlYXNlX2hlbGQoZmlsZV9wcml2LCBj cnRjLT5iYXNlLmlkKSkgewotCQkJaWYgKGNvdW50IDwgY2FyZF9yZXMtPmNvdW50X2NydGNzICYm Ci0JCQkgICAgcHV0X3VzZXIoY3J0Yy0+YmFzZS5pZCwgY3J0Y19pZCArIGNvdW50KSkKLQkJCQly ZXR1cm4gLUVGQVVMVDsKKwkJCWlmIChjb3VudCA8IGNhcmRfcmVzLT5jb3VudF9jcnRjcykgewor CQkJCWlmICh1c2VyKSB7CisJCQkJCWlmIChwdXRfdXNlcihjcnRjLT5iYXNlLmlkLCBjcnRjX2lk X3VzZXIgKyBjb3VudCkpCisJCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCQl9IGVsc2UgeworCQkJ CQljcnRjX2lkW2NvdW50XSA9IGNydGMtPmJhc2UuaWQ7CisJCQkJfQorCQkJfQogCQkJY291bnQr KzsKIAkJfQogCX0KIAljYXJkX3Jlcy0+Y291bnRfY3J0Y3MgPSBjb3VudDsKIAogCWNvdW50ID0g MDsKLQllbmNvZGVyX2lkID0gdTY0X3RvX3VzZXJfcHRyKGNhcmRfcmVzLT5lbmNvZGVyX2lkX3B0 cik7CisJZW5jb2Rlcl9pZF91c2VyID0gdTY0X3RvX3VzZXJfcHRyKGNhcmRfcmVzLT5lbmNvZGVy X2lkX3B0cik7CisJZW5jb2Rlcl9pZCA9ICh1MzIgKikodW5zaWduZWQgbG9uZykoY2FyZF9yZXMt PmVuY29kZXJfaWRfcHRyKTsKIAlkcm1fZm9yX2VhY2hfZW5jb2RlcihlbmNvZGVyLCBkZXYpIHsK LQkJaWYgKGNvdW50IDwgY2FyZF9yZXMtPmNvdW50X2VuY29kZXJzICYmCi0JCSAgICBwdXRfdXNl cihlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyX2lkICsgY291bnQpKQotCQkJcmV0dXJuIC1FRkFV TFQ7CisJCWlmIChjb3VudCA8IGNhcmRfcmVzLT5jb3VudF9lbmNvZGVycykgeworCQkJaWYgKHVz ZXIpIHsKKwkJCQlpZiAocHV0X3VzZXIoZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlcl9pZF91c2Vy ICsgY291bnQpKQorCQkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCX0gZWxzZSB7CisJCQkJZW5jb2Rl cl9pZFtjb3VudF0gPSBlbmNvZGVyLT5iYXNlLmlkOworCQkJfQorCQl9CiAJCWNvdW50Kys7CiAJ fQogCWNhcmRfcmVzLT5jb3VudF9lbmNvZGVycyA9IGNvdW50OwogCiAJZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKIAljb3VudCA9IDA7Ci0JY29ubmVjdG9y X2lkID0gdTY0X3RvX3VzZXJfcHRyKGNhcmRfcmVzLT5jb25uZWN0b3JfaWRfcHRyKTsKKwljb25u ZWN0b3JfaWRfdXNlciA9IHU2NF90b191c2VyX3B0cihjYXJkX3Jlcy0+Y29ubmVjdG9yX2lkX3B0 cik7CisJY29ubmVjdG9yX2lkID0gKHUzMiAqKSh1bnNpZ25lZCBsb25nKShjYXJkX3Jlcy0+Y29u bmVjdG9yX2lkX3B0cik7CiAJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3Rvciwg JmNvbm5faXRlcikgewogCQlpZiAoZHJtX2xlYXNlX2hlbGQoZmlsZV9wcml2LCBjb25uZWN0b3It PmJhc2UuaWQpKSB7Ci0JCQlpZiAoY291bnQgPCBjYXJkX3Jlcy0+Y291bnRfY29ubmVjdG9ycyAm JgotCQkJICAgIHB1dF91c2VyKGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yX2lkICsgY291 bnQpKSB7Ci0JCQkJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwotCQkJ CXJldHVybiAtRUZBVUxUOworCQkJaWYgKGNvdW50IDwgY2FyZF9yZXMtPmNvdW50X2Nvbm5lY3Rv cnMpIHsKKwkJCQlpZiAodXNlcikgeworCQkJCQlpZiAocHV0X3VzZXIoY29ubmVjdG9yLT5iYXNl LmlkLCBjb25uZWN0b3JfaWRfdXNlciArIGNvdW50KSkgeworCQkJCQkJZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOworCQkJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQkJCX0K KwkJCQl9IGVsc2UgeworCQkJCQljb25uZWN0b3JfaWRbY291bnRdID0gY29ubmVjdG9yLT5iYXNl LmlkOworCQkJCX0KIAkJCX0KIAkJCWNvdW50Kys7CiAJCX0KQEAgLTE2MCw2ICsxODUsMTIgQEAg aW50IGRybV9tb2RlX2dldHJlc291cmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCXJldHVybiByZXQ7CiB9CiAKK2ludCBkcm1fbW9kZV9nZXRyZXNvdXJjZXNfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQlzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdikKK3sKKwlyZXR1cm4gZHJtX21vZGVfZ2V0cmVzb3VyY2VzKGRldiwgZGF0YSwg ZmlsZV9wcml2LCB0cnVlKTsKK30KKwogLyoqCiAgKiBkcm1fbW9kZV9jb25maWdfcmVzZXQgLSBj YWxsIC0+cmVzZXQgY2FsbGJhY2tzCiAgKiBAZGV2OiBkcm0gZGV2aWNlCi0tIAoyLjE1LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=