From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 09/13] drm/irq: Make pipe unsigned and name consistent Date: Wed, 12 Aug 2015 17:00:31 +0200 Message-ID: <1439391635-29166-9-git-send-email-thierry.reding@gmail.com> References: <1439391635-29166-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f180.google.com (mail-pd0-f180.google.com [209.85.192.180]) by gabe.freedesktop.org (Postfix) with ESMTPS id C27D56EB91 for ; Wed, 12 Aug 2015 08:01:59 -0700 (PDT) Received: by pdbfa8 with SMTP id fa8so8241291pdb.1 for ; Wed, 12 Aug 2015 08:01:59 -0700 (PDT) In-Reply-To: <1439391635-29166-1-git-send-email-thierry.reding@gmail.com> 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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCk5hbWUgYWxsIHJlZmVy ZW5jZXMgdG8gdGhlIHBpcGUgbnVtYmVyIChDUlRDIGluZGV4KSBjb25zaXN0ZW50bHkgdG8gbWFr ZQppdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggd2hpY2ggaXMgYSBwaXBlIG51bWJlciBhbmQgd2hp Y2ggaXMgYSBwb2ludGVyCnRvIHN0cnVjdCBkcm1fY3J0Yy4KCldoaWxlIGF0IGl0IGFsc28gbWFr ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgcGlwZSBudW1iZXIgdW5zaWduZWQgYmVjYXVzZQp0aGVy ZSBpcyBubyBsb25nZXIgYW55IHJlYXNvbiB3aHkgaXQgc2hvdWxkIGV2ZXIgYmUgbmVnYXRpdmUu CgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgfCAzMTYgKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICB8ICAzMiAr Ky0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwgMTczIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2lycS5jCmluZGV4IGE5NTdiOTYxOGU4NS4uZjQyNDU5YjI4NjJkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJx LmMKQEAgLTQzLDggKzQzLDggQEAKICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KIAogLyogQWNj ZXNzIG1hY3JvIGZvciBzbG90cyBpbiB2YmxhbmsgdGltZXN0YW1wIHJpbmdidWZmZXIuICovCi0j ZGVmaW5lIHZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIGNvdW50KSBcCi0JKChkZXYpLT52Ymxh bmtbY3J0Y10udGltZVsoY291bnQpICUgRFJNX1ZCTEFOS1RJTUVfUkJTSVpFXSkKKyNkZWZpbmUg dmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwgY291bnQpIFwKKwkoKGRldiktPnZibGFua1twaXBl XS50aW1lWyhjb3VudCkgJSBEUk1fVkJMQU5LVElNRV9SQlNJWkVdKQogCiAvKiBSZXRyeSB0aW1l c3RhbXAgY2FsY3VsYXRpb24gdXAgdG8gMyB0aW1lcyB0byBzYXRpc2Z5CiAgKiBkcm1fdGltZXN0 YW1wX3ByZWNpc2lvbiBiZWZvcmUgZ2l2aW5nIHVwLgpAQCAtNTcsNyArNTcsNyBAQAogI2RlZmlu ZSBEUk1fUkVEVU5EQU5UX1ZCTElSUV9USFJFU0hfTlMgMTAwMDAwMAogCiBzdGF0aWMgYm9vbAot ZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YywKK2RybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUsCiAJCQkgIHN0cnVjdCB0aW1ldmFsICp0dmJsYW5rLCB1bnNpZ25lZCBm bGFncyk7CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgZHJtX3RpbWVzdGFtcF9wcmVjaXNpb24gPSAy MDsgIC8qIERlZmF1bHQgdG8gMjAgdXNlY3MuICovCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGlj IHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAogLyoq CiAgKiBkcm1fdXBkYXRlX3ZibGFua19jb3VudCAtIHVwZGF0ZSB0aGUgbWFzdGVyIHZibGFuayBj b3VudGVyCiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY3J0YzogY291bnRlciB0byB1cGRhdGUK KyAqIEBwaXBlOiBjb3VudGVyIHRvIHVwZGF0ZQogICoKICAqIENhbGwgYmFjayBpbnRvIHRoZSBk cml2ZXIgdG8gdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSB2YmxhbmsgY291bnRlcgogICogKHNwZWNp ZmllZCBieSBAY3J0YykuICBEZWFsIHdpdGggd3JhcGFyb3VuZCwgaWYgaXQgb2NjdXJyZWQsIGFu ZApAQCAtMTIwLDkgKzEyMCw5IEBAIHN0YXRpYyB2b2lkIHN0b3JlX3ZibGFuayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YywKICAqIE5vdGU6IGNhbGxlciBtdXN0IGhvbGQgZGV2LT52 YmxfbG9jayBzaW5jZSB0aGlzIHJlYWRzICYgd3JpdGVzCiAgKiBkZXZpY2UgdmJsYW5rIGZpZWxk cy4KICAqLwotc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGNydGMpCitzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3Vu dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKLQlzdHJ1Y3Qg ZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CisJc3RydWN0IGRy bV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwogCXUzMiBjdXJfdmJs YW5rLCBkaWZmOwogCWJvb2wgcmM7CiAJc3RydWN0IHRpbWV2YWwgdF92Ymxhbms7CkBAIC0xNDAs MjEgKzE0MCwyMSBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAkgKiBjb3JyZXNwb25kaW5nIHZibGFuayB0aW1l c3RhbXAuCiAJICovCiAJZG8gewotCQljdXJfdmJsYW5rID0gZGV2LT5kcml2ZXItPmdldF92Ymxh bmtfY291bnRlcihkZXYsIGNydGMpOwotCQlyYyA9IGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAo ZGV2LCBjcnRjLCAmdF92YmxhbmssIDApOwotCX0gd2hpbGUgKGN1cl92YmxhbmsgIT0gZGV2LT5k cml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIGNydGMpKTsKKwkJY3VyX3ZibGFuayA9IGRl di0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKTsKKwkJcmMgPSBkcm1fZ2V0 X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgcGlwZSwgJnRfdmJsYW5rLCAwKTsKKwl9IHdoaWxlIChj dXJfdmJsYW5rICE9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKSk7 CiAKIAkvKiBEZWFsIHdpdGggY291bnRlciB3cmFwICovCiAJZGlmZiA9IGN1cl92YmxhbmsgLSB2 YmxhbmstPmxhc3Q7CiAJaWYgKGN1cl92YmxhbmsgPCB2YmxhbmstPmxhc3QpIHsKIAkJZGlmZiAr PSBkZXYtPm1heF92YmxhbmtfY291bnQgKyAxOwogCi0JCURSTV9ERUJVRygibGFzdF92Ymxhbmtb JWRdPTB4JXgsIGN1cl92Ymxhbms9MHgleCA9PiBkaWZmPTB4JXhcbiIsCi0JCQkgIGNydGMsIHZi bGFuay0+bGFzdCwgY3VyX3ZibGFuaywgZGlmZik7CisJCURSTV9ERUJVRygibGFzdF92Ymxhbmtb JXVdPTB4JXgsIGN1cl92Ymxhbms9MHgleCA9PiBkaWZmPTB4JXhcbiIsCisJCQkgIHBpcGUsIHZi bGFuay0+bGFzdCwgY3VyX3ZibGFuaywgZGlmZik7CiAJfQogCi0JRFJNX0RFQlVHKCJ1cGRhdGlu ZyB2YmxhbmsgY291bnQgb24gY3J0YyAlZCwgbWlzc2VkICVkXG4iLAotCQkgIGNydGMsIGRpZmYp OworCURSTV9ERUJVRygidXBkYXRpbmcgdmJsYW5rIGNvdW50IG9uIGNydGMgJXUsIG1pc3NlZCAl ZFxuIiwKKwkJICBwaXBlLCBkaWZmKTsKIAogCWlmIChkaWZmID09IDApCiAJCXJldHVybjsKQEAg LTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAlpZiAoIXJjKQogCQl0X3ZibGFuayA9IChz dHJ1Y3QgdGltZXZhbCkgezAsIDB9OwogCi0Jc3RvcmVfdmJsYW5rKGRldiwgY3J0YywgZGlmZiwg JnRfdmJsYW5rKTsKKwlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCBkaWZmLCAmdF92YmxhbmspOwog fQogCiAvKgpAQCAtMTc2LDkgKzE3Niw5IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5r X2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogICogYXJlIHByZXNlcnZl ZCwgZXZlbiBpZiB0aGVyZSBhcmUgYW55IHNwdXJpb3VzIHZibGFuayBpcnEncyBhZnRlcgogICog ZGlzYWJsZS4KICAqLwotc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCitzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9h bmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKLQlz dHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CisJc3Ry dWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwogCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7CiAJdTMyIHZibGNvdW50OwogCXM2NCBkaWZmX25zOwpAQCAtMjA2 LDggKzIwNiw4IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCSAqIHZibGFuayBpbnRlcnJ1cHQgaXMgZGlzYWJs ZWQuCiAJICovCiAJaWYgKCF2YmxhbmstPmVuYWJsZWQgJiYKLQkgICAgZHJtX2dldF9sYXN0X3Zi bHRpbWVzdGFtcChkZXYsIGNydGMsICZ0dmJsYW5rLCAwKSkgewotCQlkcm1fdXBkYXRlX3ZibGFu a19jb3VudChkZXYsIGNydGMpOworCSAgICBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwg cGlwZSwgJnR2YmxhbmssIDApKSB7CisJCWRybV91cGRhdGVfdmJsYW5rX2NvdW50KGRldiwgcGlw ZSk7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsYW5rX3RpbWVfbG9jaywgaXJx ZmxhZ3MpOwogCQlyZXR1cm47CiAJfQpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lkIHZi bGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQog CSAqIGhhcmR3YXJlIHBvdGVudGlhbGx5IHJ1bnRpbWUgc3VzcGVuZGVkLgogCSAqLwogCWlmICh2 YmxhbmstPmVuYWJsZWQpIHsKLQkJZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rKGRldiwgY3J0 Yyk7CisJCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayhkZXYsIHBpcGUpOwogCQl2Ymxhbmst PmVuYWJsZWQgPSBmYWxzZTsKIAl9CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCBzdGF0aWMgdm9pZCB2 YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK IAkgKiBkZWxheWVkIGdwdSBjb3VudGVyIGluY3JlbWVudC4KIAkgKi8KIAlkbyB7Ci0JCXZibGFu ay0+bGFzdCA9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjKTsKLQkJ dmJscmMgPSBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgY3J0YywgJnR2YmxhbmssIDAp OwotCX0gd2hpbGUgKHZibGFuay0+bGFzdCAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3Vu dGVyKGRldiwgY3J0YykgJiYgKC0tY291bnQpICYmIHZibHJjKTsKKwkJdmJsYW5rLT5sYXN0ID0g ZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIHBpcGUpOworCQl2YmxyYyA9IGRy bV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBwaXBlLCAmdHZibGFuaywgMCk7CisJfSB3aGls ZSAodmJsYW5rLT5sYXN0ICE9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBw aXBlKSAmJiAoLS1jb3VudCkgJiYgdmJscmMpOwogCiAJaWYgKCFjb3VudCkKIAkJdmJscmMgPSAw OwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCSAqLwogCXZibGNvdW50ID0gdmJs YW5rLT5jb3VudDsKIAlkaWZmX25zID0gdGltZXZhbF90b19ucygmdHZibGFuaykgLQotCQkgIHRp bWV2YWxfdG9fbnMoJnZibGFua3RpbWVzdGFtcChkZXYsIGNydGMsIHZibGNvdW50KSk7CisJCSAg dGltZXZhbF90b19ucygmdmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwgdmJsY291bnQpKTsKIAog CS8qIElmIHRoZXJlIGlzIGF0IGxlYXN0IDEgbXNlYyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxh c3Qgc3RvcmVkCiAJICogdGltZXN0YW1wIGFuZCB0dmJsYW5rLCB0aGVuIHdlIGFyZSBjdXJyZW50 bHkgZXhlY3V0aW5nIG91cgpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyB2b2lkIHZibGFua19k aXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCSAqIGhv cGUgZm9yIHRoZSBiZXN0LgogCSAqLwogCWlmICh2YmxyYyAmJiAoYWJzNjQoZGlmZl9ucykgPiAx MDAwMDAwKSkKLQkJc3RvcmVfdmJsYW5rKGRldiwgY3J0YywgMSwgJnR2YmxhbmspOworCQlzdG9y ZV92YmxhbmsoZGV2LCBwaXBlLCAxLCAmdHZibGFuayk7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXYtPnZibGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKIH0KQEAgLTI3MSwxNiArMjcx LDE2IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2ZuKHVuc2lnbmVkIGxvbmcgYXJnKQog ewogCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICh2b2lkICopYXJnOwogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSB2YmxhbmstPmRldjsKKwl1bnNpZ25lZCBpbnQgcGlwZSA9IHZi bGFuay0+cGlwZTsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwotCWludCBjcnRjID0gdmJsYW5r LT5jcnRjOwogCiAJaWYgKCFkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQpCiAJCXJldHVybjsK IAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CiAJaWYgKGF0 b21pY19yZWFkKCZ2YmxhbmstPnJlZmNvdW50KSA9PSAwICYmIHZibGFuay0+ZW5hYmxlZCkgewot CQlEUk1fREVCVUcoImRpc2FibGluZyB2Ymxhbmsgb24gY3J0YyAlZFxuIiwgY3J0Yyk7Ci0JCXZi bGFua19kaXNhYmxlX2FuZF9zYXZlKGRldiwgY3J0Yyk7CisJCURSTV9ERUJVRygiZGlzYWJsaW5n IHZibGFuayBvbiBjcnRjICV1XG4iLCBwaXBlKTsKKwkJdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUo ZGV2LCBwaXBlKTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywg aXJxZmxhZ3MpOwogfQpAQCAtMjkzLDE0ICsyOTMsMTQgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rp c2FibGVfZm4odW5zaWduZWQgbG9uZyBhcmcpCiAgKi8KIHZvaWQgZHJtX3ZibGFua19jbGVhbnVw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7Ci0JaW50IGNydGM7CisJdW5zaWduZWQgaW50IHBp cGU7CiAKIAkvKiBCYWlsIGlmIHRoZSBkcml2ZXIgZGlkbid0IGNhbGwgZHJtX3ZibGFua19pbml0 KCkgKi8KIAlpZiAoZGV2LT5udW1fY3J0Y3MgPT0gMCkKIAkJcmV0dXJuOwogCi0JZm9yIChjcnRj ID0gMDsgY3J0YyA8IGRldi0+bnVtX2NydGNzOyBjcnRjKyspIHsKLQkJc3RydWN0IGRybV92Ymxh bmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOworCWZvciAocGlwZSA9IDA7IHBp cGUgPCBkZXYtPm51bV9jcnRjczsgcGlwZSsrKSB7CisJCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMg KnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKIAogCQlXQVJOX09OKHZibGFuay0+ZW5hYmxl ZCAmJgogCQkJZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSk7CkBA IC0zMTYsMTcgKzMxNiwxOCBAQCBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfY2xlYW51cCk7CiAK IC8qKgogICogZHJtX3ZibGFua19pbml0IC0gaW5pdGlhbGl6ZSB2Ymxhbmsgc3VwcG9ydAotICog QGRldjogZHJtX2RldmljZQotICogQG51bV9jcnRjczogbnVtYmVyIG9mIGNydGNzIHN1cHBvcnRl ZCBieSBAZGV2CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAbnVtX2NydGNzOiBudW1iZXIgb2Yg Q1JUQ3Mgc3VwcG9ydGVkIGJ5IEBkZXYKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVz IHZibGFuayBzdXBwb3J0IGZvciBAbnVtX2NydGNzIGRpc3BsYXkgcGlwZWxpbmVzLgogICoKICAq IFJldHVybnM6CiAgKiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9u IGZhaWx1cmUuCiAgKi8KLWludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IG51bV9jcnRjcykKK2ludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IG51bV9jcnRjcykKIHsKLQlpbnQgaSwgcmV0ID0gLUVOT01FTTsK KwlpbnQgcmV0ID0gLUVOT01FTTsKKwl1bnNpZ25lZCBpbnQgaTsKIAogCXNwaW5fbG9ja19pbml0 KCZkZXYtPnZibF9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmZGV2LT52YmxhbmtfdGltZV9sb2Nr KTsKQEAgLTM0MSw3ICszNDIsNyBAQCBpbnQgZHJtX3ZibGFua19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBudW1fY3J0Y3MpCiAJCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFu ayA9ICZkZXYtPnZibGFua1tpXTsKIAogCQl2YmxhbmstPmRldiA9IGRldjsKLQkJdmJsYW5rLT5j cnRjID0gaTsKKwkJdmJsYW5rLT5waXBlID0gaTsKIAkJaW5pdF93YWl0cXVldWVfaGVhZCgmdmJs YW5rLT5xdWV1ZSk7CiAJCXNldHVwX3RpbWVyKCZ2YmxhbmstPmRpc2FibGVfdGltZXIsIHZibGFu a19kaXNhYmxlX2ZuLAogCQkJICAgICh1bnNpZ25lZCBsb25nKXZibGFuayk7CkBAIC02MjQsMTcg KzYyNSwxNyBAQCB2b2lkIGRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFudHMoc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCQlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RSkKIAkJCWZyYW1lZHVyX25zIC89IDI7CiAJfSBlbHNlCi0JCURSTV9FUlJPUigiY3J0YyAlZDog Q2FuJ3QgY2FsY3VsYXRlIGNvbnN0YW50cywgZG90Y2xvY2sgPSAwIVxuIiwKKwkJRFJNX0VSUk9S KCJjcnRjICV1OiBDYW4ndCBjYWxjdWxhdGUgY29uc3RhbnRzLCBkb3RjbG9jayA9IDAhXG4iLAog CQkJICBjcnRjLT5iYXNlLmlkKTsKIAogCWNydGMtPnBpeGVsZHVyX25zID0gcGl4ZWxkdXJfbnM7 CiAJY3J0Yy0+bGluZWR1cl9ucyAgPSBsaW5lZHVyX25zOwogCWNydGMtPmZyYW1lZHVyX25zID0g ZnJhbWVkdXJfbnM7CiAKLQlEUk1fREVCVUcoImNydGMgJWQ6IGh3bW9kZTogaHRvdGFsICVkLCB2 dG90YWwgJWQsIHZkaXNwbGF5ICVkXG4iLAorCURSTV9ERUJVRygiY3J0YyAldTogaHdtb2RlOiBo dG90YWwgJWQsIHZ0b3RhbCAlZCwgdmRpc3BsYXkgJWRcbiIsCiAJCSAgY3J0Yy0+YmFzZS5pZCwg bW9kZS0+Y3J0Y19odG90YWwsCiAJCSAgbW9kZS0+Y3J0Y192dG90YWwsIG1vZGUtPmNydGNfdmRp c3BsYXkpOwotCURSTV9ERUJVRygiY3J0YyAlZDogY2xvY2sgJWQga0h6IGZyYW1lZHVyICVkIGxp bmVkdXIgJWQsIHBpeGVsZHVyICVkXG4iLAorCURSTV9ERUJVRygiY3J0YyAldTogY2xvY2sgJWQg a0h6IGZyYW1lZHVyICVkIGxpbmVkdXIgJWQsIHBpeGVsZHVyICVkXG4iLAogCQkgIGNydGMtPmJh c2UuaWQsIGRvdGNsb2NrLCBmcmFtZWR1cl9ucywKIAkJICBsaW5lZHVyX25zLCBwaXhlbGR1cl9u cyk7CiB9CkBAIC02NDMsNyArNjQ0LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY2FsY190aW1lc3Rh bXBpbmdfY29uc3RhbnRzKTsKIC8qKgogICogZHJtX2NhbGNfdmJsdGltZXN0YW1wX2Zyb21fc2Nh bm91dHBvcyAtIHByZWNpc2UgdmJsYW5rIHRpbWVzdGFtcCBoZWxwZXIKICAqIEBkZXY6IERSTSBk ZXZpY2UKLSAqIEBjcnRjOiBXaGljaCBDUlRDJ3MgdmJsYW5rIHRpbWVzdGFtcCB0byByZXRyaWV2 ZQorICogQHBpcGU6IGluZGV4IG9mIENSVEMgd2hvc2UgdmJsYW5rIHRpbWVzdGFtcCB0byByZXRy aWV2ZQogICogQG1heF9lcnJvcjogRGVzaXJlZCBtYXhpbXVtIGFsbG93YWJsZSBlcnJvciBpbiB0 aW1lc3RhbXBzIChuYW5vc2VjcykKICAqICAgICAgICAgICAgIE9uIHJldHVybiBjb250YWlucyB0 cnVlIG1heGltdW0gZXJyb3Igb2YgdGltZXN0YW1wCiAgKiBAdmJsYW5rX3RpbWU6IFBvaW50ZXIg dG8gc3RydWN0IHRpbWV2YWwgd2hpY2ggc2hvdWxkIHJlY2VpdmUgdGhlIHRpbWVzdGFtcApAQCAt Njg2LDcgKzY4Nyw4IEBAIEVYUE9SVF9TWU1CT0woZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0 YW50cyk7CiAgKiBEUk1fVkJMQU5LVElNRV9JTlZCTCAtIFRpbWVzdGFtcCB0YWtlbiB3aGlsZSBz Y2Fub3V0IHdhcyBpbiB2YmxhbmsgaW50ZXJ2YWwuCiAgKgogICovCi1pbnQgZHJtX2NhbGNfdmJs dGltZXN0YW1wX2Zyb21fc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YywKK2ludCBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCisJCQkJCSAgdW5zaWduZWQgaW50IHBpcGUsCiAJCQkJCSAgaW50ICptYXhf ZXJyb3IsCiAJCQkJCSAgc3RydWN0IHRpbWV2YWwgKnZibGFua190aW1lLAogCQkJCQkgIHVuc2ln bmVkIGZsYWdzLApAQCAtNzAwLDggKzcwMiw4IEBAIGludCBkcm1fY2FsY192Ymx0aW1lc3RhbXBf ZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAogCWludCBm cmFtZWR1cl9ucywgbGluZWR1cl9ucywgcGl4ZWxkdXJfbnMsIGRlbHRhX25zLCBkdXJhdGlvbl9u czsKIAlib29sIGludmJsOwogCi0JaWYgKGNydGMgPCAwIHx8IGNydGMgPj0gZGV2LT5udW1fY3J0 Y3MpIHsKLQkJRFJNX0VSUk9SKCJJbnZhbGlkIGNydGMgJWRcbiIsIGNydGMpOworCWlmIChwaXBl ID49IGRldi0+bnVtX2NydGNzKSB7CisJCURSTV9FUlJPUigiSW52YWxpZCBjcnRjICV1XG4iLCBw aXBlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC03MjAsNyArNzIyLDcgQEAgaW50IGRy bV9jYWxjX3ZibHRpbWVzdGFtcF9mcm9tX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGNydGMsCiAJICogSGFwcGVucyBkdXJpbmcgaW5pdGlhbCBtb2Rlc2V0dGluZyBvZiBh IGNydGMuCiAJICovCiAJaWYgKGZyYW1lZHVyX25zID09IDApIHsKLQkJRFJNX0RFQlVHKCJjcnRj ICVkOiBOb29wIGR1ZSB0byB1bmluaXRpYWxpemVkIG1vZGUuXG4iLCBjcnRjKTsKKwkJRFJNX0RF QlVHKCJjcnRjICV1OiBOb29wIGR1ZSB0byB1bmluaXRpYWxpemVkIG1vZGUuXG4iLCBwaXBlKTsK IAkJcmV0dXJuIC1FQUdBSU47CiAJfQogCkBAIC03MzYsMTMgKzczOCwxMyBAQCBpbnQgZHJtX2Nh bGNfdmJsdGltZXN0YW1wX2Zyb21fc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YywKIAkJICogR2V0IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYW5vdXQgcG9zaXRp b24gdnBvcywgaHBvcywKIAkJICogYW5kIGJvdW5kaW5nIHRpbWVzdGFtcHMgc3RpbWUsIGV0aW1l LCBwcmUvcG9zdCBxdWVyeS4KIAkJICovCi0JCXZibF9zdGF0dXMgPSBkZXYtPmRyaXZlci0+Z2V0 X3NjYW5vdXRfcG9zaXRpb24oZGV2LCBjcnRjLCBmbGFncywgJnZwb3MsCisJCXZibF9zdGF0dXMg PSBkZXYtPmRyaXZlci0+Z2V0X3NjYW5vdXRfcG9zaXRpb24oZGV2LCBwaXBlLCBmbGFncywgJnZw b3MsCiAJCQkJCQkJICAgICAgICZocG9zLCAmc3RpbWUsICZldGltZSk7CiAKIAkJLyogUmV0dXJu IGFzIG5vLW9wIGlmIHNjYW5vdXQgcXVlcnkgdW5zdXBwb3J0ZWQgb3IgZmFpbGVkLiAqLwogCQlp ZiAoISh2Ymxfc3RhdHVzICYgRFJNX1NDQU5PVVRQT1NfVkFMSUQpKSB7Ci0JCQlEUk1fREVCVUco ImNydGMgJWQgOiBzY2Fub3V0cG9zIHF1ZXJ5IGZhaWxlZCBbJWRdLlxuIiwKLQkJCQkgIGNydGMs IHZibF9zdGF0dXMpOworCQkJRFJNX0RFQlVHKCJjcnRjICV1IDogc2Nhbm91dHBvcyBxdWVyeSBm YWlsZWQgWyVkXS5cbiIsCisJCQkJICBwaXBlLCB2Ymxfc3RhdHVzKTsKIAkJCXJldHVybiAtRUlP OwogCQl9CiAKQEAgLTc1Niw4ICs3NTgsOCBAQCBpbnQgZHJtX2NhbGNfdmJsdGltZXN0YW1wX2Zy b21fc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKIAogCS8qIE5v aXN5IHN5c3RlbSB0aW1pbmc/ICovCiAJaWYgKGkgPT0gRFJNX1RJTUVTVEFNUF9NQVhSRVRSSUVT KSB7Ci0JCURSTV9ERUJVRygiY3J0YyAlZDogTm9pc3kgdGltZXN0YW1wICVkIHVzID4gJWQgdXMg WyVkIHJlcHNdLlxuIiwKLQkJCSAgY3J0YywgZHVyYXRpb25fbnMvMTAwMCwgKm1heF9lcnJvci8x MDAwLCBpKTsKKwkJRFJNX0RFQlVHKCJjcnRjICV1OiBOb2lzeSB0aW1lc3RhbXAgJWQgdXMgPiAl ZCB1cyBbJWQgcmVwc10uXG4iLAorCQkJICBwaXBlLCBkdXJhdGlvbl9ucy8xMDAwLCAqbWF4X2Vy cm9yLzEwMDAsIGkpOwogCX0KIAogCS8qIFJldHVybiB1cHBlciBib3VuZCBvZiB0aW1lc3RhbXAg cHJlY2lzaW9uIGVycm9yLiAqLwpAQCAtNzkwLDggKzc5Miw4IEBAIGludCBkcm1fY2FsY192Ymx0 aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRj LAogCQlldGltZSA9IGt0aW1lX3N1Yl9ucyhldGltZSwgZGVsdGFfbnMpOwogCSp2YmxhbmtfdGlt ZSA9IGt0aW1lX3RvX3RpbWV2YWwoZXRpbWUpOwogCi0JRFJNX0RFQlVHKCJjcnRjICVkIDogdiAl ZCBwKCVkLCVkKUAgJWxkLiVsZCAtPiAlbGQuJWxkIFtlICVkIHVzLCAlZCByZXBdXG4iLAotCQkg IGNydGMsIChpbnQpdmJsX3N0YXR1cywgaHBvcywgdnBvcywKKwlEUk1fREVCVUcoImNydGMgJXUg OiB2ICVkIHAoJWQsJWQpQCAlbGQuJWxkIC0+ICVsZC4lbGQgW2UgJWQgdXMsICVkIHJlcF1cbiIs CisJCSAgcGlwZSwgKGludCl2Ymxfc3RhdHVzLCBocG9zLCB2cG9zLAogCQkgIChsb25nKXR2X2V0 aW1lLnR2X3NlYywgKGxvbmcpdHZfZXRpbWUudHZfdXNlYywKIAkJICAobG9uZyl2YmxhbmtfdGlt ZS0+dHZfc2VjLCAobG9uZyl2YmxhbmtfdGltZS0+dHZfdXNlYywKIAkJICBkdXJhdGlvbl9ucy8x MDAwLCBpKTsKQEAgLTgxNiw3ICs4MTgsNyBAQCBzdGF0aWMgc3RydWN0IHRpbWV2YWwgZ2V0X2Ry bV90aW1lc3RhbXAodm9pZCkKICAqIGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAgLSByZXRyaWV2 ZSByYXcgdGltZXN0YW1wIGZvciB0aGUgbW9zdCByZWNlbnQKICAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YmxhbmsgaW50ZXJ2YWwKICAqIEBkZXY6IERSTSBkZXZpY2UKLSAqIEBjcnRj OiB3aGljaCBDUlRDJ3MgdmJsYW5rIHRpbWVzdGFtcCB0byByZXRyaWV2ZQorICogQHBpcGU6IGlu ZGV4IG9mIENSVEMgd2hvc2UgdmJsYW5rIHRpbWVzdGFtcCB0byByZXRyaWV2ZQogICogQHR2Ymxh bms6IFBvaW50ZXIgdG8gdGFyZ2V0IHN0cnVjdCB0aW1ldmFsIHdoaWNoIHNob3VsZCByZWNlaXZl IHRoZSB0aW1lc3RhbXAKICAqIEBmbGFnczogRmxhZ3MgdG8gcGFzcyB0byBkcml2ZXI6CiAgKiAg ICAgICAgIDAgPSBEZWZhdWx0LApAQCAtODMzLDcgKzgzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGlt ZXZhbCBnZXRfZHJtX3RpbWVzdGFtcCh2b2lkKQogICogVHJ1ZSBpZiB0aW1lc3RhbXAgaXMgY29u c2lkZXJlZCB0byBiZSB2ZXJ5IHByZWNpc2UsIGZhbHNlIG90aGVyd2lzZS4KICAqLwogc3RhdGlj IGJvb2wKLWRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMsCitkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJICBzdHJ1Y3QgdGltZXZhbCAqdHZibGFuaywgdW5z aWduZWQgZmxhZ3MpCiB7CiAJaW50IHJldDsKQEAgLTg0Myw3ICs4NDUsNyBAQCBkcm1fZ2V0X2xh c3RfdmJsdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAogCiAJLyog UXVlcnkgZHJpdmVyIGlmIHBvc3NpYmxlIGFuZCBwcmVjaXNpb24gdGltZXN0YW1waW5nIGVuYWJs ZWQuICovCiAJaWYgKGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX3RpbWVzdGFtcCAmJiAobWF4X2Vy cm9yID4gMCkpIHsKLQkJcmV0ID0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfdGltZXN0YW1wKGRl diwgY3J0YywgJm1heF9lcnJvciwKKwkJcmV0ID0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfdGlt ZXN0YW1wKGRldiwgcGlwZSwgJm1heF9lcnJvciwKIAkJCQkJCQl0dmJsYW5rLCBmbGFncyk7CiAJ CWlmIChyZXQgPiAwKQogCQkJcmV0dXJuIHRydWU7CkBAIC04NjAsNyArODYyLDcgQEAgZHJtX2dl dF9sYXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKIC8q KgogICogZHJtX3ZibGFua19jb3VudCAtIHJldHJpZXZlICJjb29rZWQiIHZibGFuayBjb3VudGVy IHZhbHVlCiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY3J0Yzogd2hpY2ggY291bnRlciB0byBy ZXRyaWV2ZQorICogQHBpcGU6IGluZGV4IG9mIENSVEMgZm9yIHdoaWNoIHRvIHJldHJpZXZlIHRo ZSBjb3VudGVyCiAgKgogICogRmV0Y2hlcyB0aGUgImNvb2tlZCIgdmJsYW5rIGNvdW50IHZhbHVl IHRoYXQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mCiAgKiB2YmxhbmsgZXZlbnRzIHNpbmNlIHRo ZSBzeXN0ZW0gd2FzIGJvb3RlZCwgaW5jbHVkaW5nIGxvc3QgZXZlbnRzIGR1ZSB0bwpAQCAtODcx LDExICs4NzMsMTEgQEAgZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgY3J0YywKICAqIFJldHVybnM6CiAgKiBUaGUgc29mdHdhcmUgdmJsYW5rIGNv dW50ZXIuCiAgKi8KLXUzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQordTMyIGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IHBpcGUpCiB7Ci0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW2NydGNdOworCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFu a1twaXBlXTsKIAotCWlmIChXQVJOX09OKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpKQorCWlmIChX QVJOX09OKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3MpKQogCQlyZXR1cm4gMDsKIAlyZXR1cm4gdmJs YW5rLT5jb3VudDsKIH0KQEAgLTkwMSwxMSArOTAzLDEwIEBAIHUzMiBkcm1fY3J0Y192Ymxhbmtf Y291bnQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192Ymxh bmtfY291bnQpOwogCiAvKioKLSAqIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUgLSByZXRyaWV2 ZSAiY29va2VkIiB2YmxhbmsgY291bnRlciB2YWx1ZQotICogYW5kIHRoZSBzeXN0ZW0gdGltZXN0 YW1wIGNvcnJlc3BvbmRpbmcgdG8gdGhhdCB2YmxhbmsgY291bnRlciB2YWx1ZS4KLSAqCisgKiBk cm1fdmJsYW5rX2NvdW50X2FuZF90aW1lIC0gcmV0cmlldmUgImNvb2tlZCIgdmJsYW5rIGNvdW50 ZXIgdmFsdWUgYW5kIHRoZQorICogICAgIHN5c3RlbSB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0 byB0aGF0IHZibGFuayBjb3VudGVyIHZhbHVlLgogICogQGRldjogRFJNIGRldmljZQotICogQGNy dGM6IHdoaWNoIGNvdW50ZXIgdG8gcmV0cmlldmUKKyAqIEBwaXBlOiBpbmRleCBvZiBDUlRDIHdo b3NlIGNvdW50ZXIgdG8gcmV0cmlldmUKICAqIEB2Ymxhbmt0aW1lOiBQb2ludGVyIHRvIHN0cnVj dCB0aW1ldmFsIHRvIHJlY2VpdmUgdGhlIHZibGFuayB0aW1lc3RhbXAuCiAgKgogICogRmV0Y2hl cyB0aGUgImNvb2tlZCIgdmJsYW5rIGNvdW50IHZhbHVlIHRoYXQgcmVwcmVzZW50cyB0aGUgbnVt YmVyIG9mCkBAIC05MTMsMTMgKzkxNCwxMyBAQCBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFu a19jb3VudCk7CiAgKiBtb2Rlc2V0dGluZyBhY3Rpdml0eS4gUmV0dXJucyBjb3JyZXNwb25kaW5n IHN5c3RlbSB0aW1lc3RhbXAgb2YgdGhlIHRpbWUKICAqIG9mIHRoZSB2YmxhbmsgaW50ZXJ2YWwg dGhhdCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB2YmxhbmsgY291bnRlciB2YWx1ZS4KICAq LwotdTMyIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMsCit1MzIgZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKIAkJCSAgICAgIHN0cnVjdCB0aW1ldmFsICp2Ymxh bmt0aW1lKQogewotCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFu a1tjcnRjXTsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52Ymxhbmtb cGlwZV07CiAJdTMyIGN1cl92Ymxhbms7CiAKLQlpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVt X2NydGNzKSkKKwlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkKIAkJcmV0dXJu IDA7CiAKIAkvKgpAQCAtOTMwLDcgKzkzMSw3IEBAIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90 aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAogCWRvIHsKIAkJY3VyX3ZibGFu ayA9IHZibGFuay0+Y291bnQ7CiAJCXNtcF9ybWIoKTsKLQkJKnZibGFua3RpbWUgPSB2Ymxhbmt0 aW1lc3RhbXAoZGV2LCBjcnRjLCBjdXJfdmJsYW5rKTsKKwkJKnZibGFua3RpbWUgPSB2Ymxhbmt0 aW1lc3RhbXAoZGV2LCBwaXBlLCBjdXJfdmJsYW5rKTsKIAkJc21wX3JtYigpOwogCX0gd2hpbGUg KGN1cl92YmxhbmsgIT0gdmJsYW5rLT5jb3VudCk7CiAKQEAgLTk1Nyw3ICs5NTgsNyBAQCBzdGF0 aWMgdm9pZCBzZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogLyoqCiAg KiBkcm1fc2VuZF92YmxhbmtfZXZlbnQgLSBoZWxwZXIgdG8gc2VuZCB2YmxhbmsgZXZlbnQgYWZ0 ZXIgcGFnZWZsaXAKICAqIEBkZXY6IERSTSBkZXZpY2UKLSAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0 aW9uCisgKiBAcGlwZTogQ1JUQyBpbmRleAogICogQGU6IHRoZSBldmVudCB0byBzZW5kCiAgKgog ICogVXBkYXRlcyBzZXF1ZW5jZSAjIGFuZCB0aW1lc3RhbXAgb24gZXZlbnQsIGFuZCBzZW5kcyBp dCB0byB1c2Vyc3BhY2UuCkBAIC05NjUsMjAgKzk2NiwyMCBAQCBzdGF0aWMgdm9pZCBzZW5kX3Zi bGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogICoKICAqIFRoaXMgaXMgdGhlIGxl Z2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KCkuCiAgKi8KLXZvaWQg ZHJtX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAot CQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKQordm9pZCBkcm1fc2VuZF92Ymxh bmtfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCisJCQkg ICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKQogewogCXN0cnVjdCB0aW1ldmFs IG5vdzsKIAl1bnNpZ25lZCBpbnQgc2VxOwogCiAJaWYgKGRldi0+bnVtX2NydGNzID4gMCkgewot CQlzZXEgPSBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRldiwgY3J0YywgJm5vdyk7CisJCXNl cSA9IGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoZGV2LCBwaXBlLCAmbm93KTsKIAl9IGVsc2Ug ewogCQlzZXEgPSAwOwogCiAJCW5vdyA9IGdldF9kcm1fdGltZXN0YW1wKCk7CiAJfQotCWUtPnBp cGUgPSBjcnRjOworCWUtPnBpcGUgPSBwaXBlOwogCXNlbmRfdmJsYW5rX2V2ZW50KGRldiwgZSwg c2VxLCAmbm93KTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3NlbmRfdmJsYW5rX2V2ZW50KTsKQEAg LTEwMDMsMTEgKzEwMDQsMTEgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y19zZW5kX3ZibGFua19l dmVudCk7CiAvKioKICAqIGRybV92YmxhbmtfZW5hYmxlIC0gZW5hYmxlIHRoZSB2YmxhbmsgaW50 ZXJydXB0IG9uIGEgQ1JUQwogICogQGRldjogRFJNIGRldmljZQotICogQGNydGM6IENSVEMgaW4g cXVlc3Rpb24KKyAqIEBwaXBlOiBDUlRDIGluZGV4CiAgKi8KLXN0YXRpYyBpbnQgZHJtX3ZibGFu a19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCitzdGF0aWMgaW50IGRy bV92YmxhbmtfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBl KQogewotCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRj XTsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07 CiAJaW50IHJldCA9IDA7CiAKIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJmRldi0+dmJsX2xvY2spOwpA QCAtMTAyMiwxMyArMTAyMywxMyBAQCBzdGF0aWMgaW50IGRybV92YmxhbmtfZW5hYmxlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCQkgKiB0aW1lc3RhbXBzLiBGaWx0ZXJjb2Rl IGluIGRybV9oYW5kbGVfdmJsYW5rKCkgd2lsbAogCQkgKiBwcmV2ZW50IGRvdWJsZS1hY2NvdW50 aW5nIG9mIHNhbWUgdmJsYW5rIGludGVydmFsLgogCQkgKi8KLQkJcmV0ID0gZGV2LT5kcml2ZXIt PmVuYWJsZV92YmxhbmsoZGV2LCBjcnRjKTsKLQkJRFJNX0RFQlVHKCJlbmFibGluZyB2Ymxhbmsg b24gY3J0YyAlZCwgcmV0OiAlZFxuIiwgY3J0YywgcmV0KTsKKwkJcmV0ID0gZGV2LT5kcml2ZXIt PmVuYWJsZV92YmxhbmsoZGV2LCBwaXBlKTsKKwkJRFJNX0RFQlVHKCJlbmFibGluZyB2Ymxhbmsg b24gY3J0YyAldSwgcmV0OiAlZFxuIiwgcGlwZSwgcmV0KTsKIAkJaWYgKHJldCkKIAkJCWF0b21p Y19kZWMoJnZibGFuay0+cmVmY291bnQpOwogCQllbHNlIHsKIAkJCXZibGFuay0+ZW5hYmxlZCA9 IHRydWU7Ci0JCQlkcm1fdXBkYXRlX3ZibGFua19jb3VudChkZXYsIGNydGMpOworCQkJZHJtX3Vw ZGF0ZV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKIAkJfQogCX0KIApAQCAtMTA0MCw3ICsxMDQx LDcgQEAgc3RhdGljIGludCBkcm1fdmJsYW5rX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgY3J0YykKIC8qKgogICogZHJtX3ZibGFua19nZXQgLSBnZXQgYSByZWZlcmVuY2UgY291 bnQgb24gdmJsYW5rIGV2ZW50cwogICogQGRldjogRFJNIGRldmljZQotICogQGNydGM6IHdoaWNo IENSVEMgdG8gb3duCisgKiBAcGlwZTogaW5kZXggb2YgQ1JUQyB0byBvd24KICAqCiAgKiBBY3F1 aXJlIGEgcmVmZXJlbmNlIGNvdW50IG9uIHZibGFuayBldmVudHMgdG8gYXZvaWQgaGF2aW5nIHRo ZW0gZGlzYWJsZWQKICAqIHdoaWxlIGluIHVzZS4KQEAgLTEwNTAsMjIgKzEwNTEsMjIgQEAgc3Rh dGljIGludCBkcm1fdmJsYW5rX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YykKICAqIFJldHVybnM6CiAgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5vbnplcm8gb24gZmFpbHVyZS4K ICAqLwotaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRj KQoraW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBwaXBlKQogewotCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFu a1tjcnRjXTsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52Ymxhbmtb cGlwZV07CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAlpbnQgcmV0ID0gMDsKIAogCWlmICgh ZGV2LT5udW1fY3J0Y3MpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKFdBUk5fT04oY3J0YyA+ PSBkZXYtPm51bV9jcnRjcykpCisJaWYgKFdBUk5fT04ocGlwZSA+PSBkZXYtPm51bV9jcnRjcykp CiAJCXJldHVybiAtRUlOVkFMOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ss IGlycWZsYWdzKTsKIAkvKiBHb2luZyBmcm9tIDAtPjEgbWVhbnMgd2UgaGF2ZSB0byBlbmFibGUg aW50ZXJydXB0cyBhZ2FpbiAqLwogCWlmIChhdG9taWNfYWRkX3JldHVybigxLCAmdmJsYW5rLT5y ZWZjb3VudCkgPT0gMSkgewotCQlyZXQgPSBkcm1fdmJsYW5rX2VuYWJsZShkZXYsIGNydGMpOwor CQlyZXQgPSBkcm1fdmJsYW5rX2VuYWJsZShkZXYsIHBpcGUpOwogCX0gZWxzZSB7CiAJCWlmICgh dmJsYW5rLT5lbmFibGVkKSB7CiAJCQlhdG9taWNfZGVjKCZ2YmxhbmstPnJlZmNvdW50KTsKQEAg LTEwOTcsMjAgKzEwOTgsMjAgQEAgaW50IGRybV9jcnRjX3ZibGFua19nZXQoc3RydWN0IGRybV9j cnRjICpjcnRjKQogRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfZ2V0KTsKIAogLyoqCi0g KiBkcm1fdmJsYW5rX3B1dCAtIGdpdmUgdXAgb3duZXJzaGlwIG9mIHZibGFuayBldmVudHMKKyAq IGRybV92YmxhbmtfcHV0IC0gcmVsZWFzZSBvd25lcnNoaXAgb2YgdmJsYW5rIGV2ZW50cwogICog QGRldjogRFJNIGRldmljZQotICogQGNydGM6IHdoaWNoIGNvdW50ZXIgdG8gZ2l2ZSB1cAorICog QHBpcGU6IGluZGV4IG9mIENSVEMgdG8gcmVsZWFzZQogICoKICAqIFJlbGVhc2Ugb3duZXJzaGlw IG9mIGEgZ2l2ZW4gdmJsYW5rIGNvdW50ZXIsIHR1cm5pbmcgb2ZmIGludGVycnVwdHMKICAqIGlm IHBvc3NpYmxlLiBEaXNhYmxlIGludGVycnVwdHMgYWZ0ZXIgZHJtX3ZibGFua19vZmZkZWxheSBt aWxsaXNlY29uZHMuCiAgKgogICogVGhpcyBpcyB0aGUgbGVnYWN5IHZlcnNpb24gb2YgZHJtX2Ny dGNfdmJsYW5rX3B1dCgpLgogICovCi12b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjKQordm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2 YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJs YW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwogCi0JaWYgKFdBUk5fT04oY3J0YyA+PSBkZXYtPm51 bV9jcnRjcykpCisJaWYgKFdBUk5fT04ocGlwZSA+PSBkZXYtPm51bV9jcnRjcykpCiAJCXJldHVy bjsKIAogCWlmIChXQVJOX09OKGF0b21pY19yZWFkKCZ2YmxhbmstPnJlZmNvdW50KSA9PSAwKSkK QEAgLTExNDcsMzMgKzExNDgsMzQgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0 KTsKIC8qKgogICogZHJtX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmsKICAq IEBkZXY6IERSTSBkZXZpY2UKLSAqIEBjcnRjOiBjcnRjIGluZGV4CisgKiBAcGlwZTogQ1JUQyBp bmRleAogICoKICAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0Yywg dXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy4KICAqIEl0IGlzIGEgZmFpbHVyZSB0byBj YWxsIHRoaXMgd2hlbiB0aGUgdmJsYW5rIGlycSBmb3IgQGNydGMgaXMgZGlzYWJsZWQsIGUuZy4K ICAqIGR1ZSB0byBsYWNrIG9mIGRyaXZlciBzdXBwb3J0IG9yIGJlY2F1c2UgdGhlIGNydGMgaXMg b2ZmLgogICovCi12b2lkIGRybV93YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGNydGMpCit2b2lkIGRybV93YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJs YW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwogCWludCByZXQ7CiAJdTMyIGxhc3Q7CiAKLQlpZiAo V0FSTl9PTihjcnRjID49IGRldi0+bnVtX2NydGNzKSkKKwlpZiAoV0FSTl9PTihwaXBlID49IGRl di0+bnVtX2NydGNzKSkKIAkJcmV0dXJuOwogCi0JcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBj cnRjKTsKLQlpZiAoV0FSTihyZXQsICJ2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCBy ZXQ9JWlcbiIsIGNydGMsIHJldCkpCisJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsK KwlpZiAoV0FSTihyZXQsICJ2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCByZXQ9JWlc biIsIHBpcGUsIHJldCkpCiAJCXJldHVybjsKIAotCWxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRl diwgY3J0Yyk7CisJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKIAotCXJldCA9 IHdhaXRfZXZlbnRfdGltZW91dChkZXYtPnZibGFua1tjcnRjXS5xdWV1ZSwKLQkJCQkgbGFzdCAh PSBkcm1fdmJsYW5rX2NvdW50KGRldiwgY3J0YyksCisJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0 KHZibGFuay0+cXVldWUsCisJCQkJIGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUp LAogCQkJCSBtc2Vjc190b19qaWZmaWVzKDEwMCkpOwogCi0JV0FSTihyZXQgPT0gMCwgInZibGFu ayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXG4iLCBjcnRjKTsKKwlXQVJOKHJldCA9PSAwLCAi dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiIsIHBpcGUpOwogCi0JZHJtX3ZibGFu a19wdXQoZGV2LCBjcnRjKTsKKwlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwogfQogRVhQT1JU X1NZTUJPTChkcm1fd2FpdF9vbmVfdmJsYW5rKTsKIApAQCAtMTE5NCw3ICsxMTk2LDcgQEAgRVhQ T1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspOwogLyoqCiAgKiBkcm1fdmJsYW5r X29mZiAtIGRpc2FibGUgdmJsYW5rIGV2ZW50cyBvbiBhIENSVEMKICAqIEBkZXY6IERSTSBkZXZp Y2UKLSAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0aW9uCisgKiBAcGlwZTogQ1JUQyBpbmRleAogICoK ICAqIERyaXZlcnMgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHNodXQgZG93biB0aGUgdmJsYW5r IGludGVycnVwdCBoYW5kbGluZyB3aGVuCiAgKiBkaXNhYmxpbmcgYSBjcnRjLiBUaGlzIGZ1bmN0 aW9uIGVuc3VyZXMgdGhhdCB0aGUgbGF0ZXN0IHZibGFuayBmcmFtZSBjb3VudCBpcwpAQCAtMTIw NSwyMSArMTIwNywyMSBAQCBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7 CiAgKgogICogVGhpcyBpcyB0aGUgbGVnYWN5IHZlcnNpb24gb2YgZHJtX2NydGNfdmJsYW5rX29m ZigpLgogICovCi12b2lkIGRybV92Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjcnRjKQordm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcGlwZSkKIHsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2 LT52YmxhbmtbY3J0Y107CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+ dmJsYW5rW3BpcGVdOwogCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUsICp0Owog CXN0cnVjdCB0aW1ldmFsIG5vdzsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCXVuc2lnbmVk IGludCBzZXE7CiAKLQlpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2NydGNzKSkKKwlpZiAo V0FSTl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkKIAkJcmV0dXJuOwogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwogCiAJc3Bpbl9sb2NrKCZkZXYt PnZibF9sb2NrKTsKLQl2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShkZXYsIGNydGMpOworCXZibGFu a19kaXNhYmxlX2FuZF9zYXZlKGRldiwgcGlwZSk7CiAJd2FrZV91cCgmdmJsYW5rLT5xdWV1ZSk7 CiAKIAkvKgpAQCAtMTIzMywxNiArMTIzNSwxNiBAQCB2b2lkIGRybV92Ymxhbmtfb2ZmKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCXNwaW5fdW5sb2NrKCZkZXYtPnZibF9sb2Nr KTsKIAogCS8qIFNlbmQgYW55IHF1ZXVlZCB2YmxhbmsgZXZlbnRzLCBsZXN0IHRoZSBuYXRpdmVz IGdyb3cgZGlzcXVpZXQgKi8KLQlzZXEgPSBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRldiwg Y3J0YywgJm5vdyk7CisJc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShkZXYsIHBpcGUs ICZub3cpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIHQsICZkZXYtPnZibGFua19l dmVudF9saXN0LCBiYXNlLmxpbmspIHsKLQkJaWYgKGUtPnBpcGUgIT0gY3J0YykKKwkJaWYgKGUt PnBpcGUgIT0gcGlwZSkKIAkJCWNvbnRpbnVlOwogCQlEUk1fREVCVUcoIlNlbmRpbmcgcHJlbWF0 dXJlIHZibGFuayBldmVudCBvbiBkaXNhYmxlOiBcCiAJCQkgIHdhbnRlZCAlZCwgY3VycmVudCAl ZFxuIiwKIAkJCSAgZS0+ZXZlbnQuc2VxdWVuY2UsIHNlcSk7CiAJCWxpc3RfZGVsKCZlLT5iYXNl LmxpbmspOwotCQlkcm1fdmJsYW5rX3B1dChkZXYsIGUtPnBpcGUpOworCQlkcm1fdmJsYW5rX3B1 dChkZXYsIHBpcGUpOwogCQlzZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgJm5vdyk7CiAJ fQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwpA QCAtMTMwMyw3ICsxMzA1LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcmVzZXQp OwogLyoqCiAgKiBkcm1fdmJsYW5rX29uIC0gZW5hYmxlIHZibGFuayBldmVudHMgb24gYSBDUlRD CiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0gKiBAY3J0YzogQ1JUQyBpbiBxdWVzdGlvbgorICogQHBp cGU6IENSVEMgaW5kZXgKICAqCiAgKiBUaGlzIGZ1bmN0aW9ucyByZXN0b3JlcyB0aGUgdmJsYW5r IGludGVycnVwdCBzdGF0ZSBjYXB0dXJlZCB3aXRoCiAgKiBkcm1fdmJsYW5rX29mZigpIGFnYWlu LiBOb3RlIHRoYXQgY2FsbHMgdG8gZHJtX3ZibGFua19vbigpIGFuZApAQCAtMTMxMiwxMiArMTMx NCwxMiBAQCBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19yZXNldCk7CiAgKgogICogVGhp cyBpcyB0aGUgbGVnYWN5IHZlcnNpb24gb2YgZHJtX2NydGNfdmJsYW5rX29uKCkuCiAgKi8KLXZv aWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3ZvaWQg ZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkK IHsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107 CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwog CXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKLQlpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVt X2NydGNzKSkKKwlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkKIAkJcmV0dXJu OwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKQEAgLTEz MzUsNyArMTMzNyw3IEBAIHZvaWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgY3J0YykKIAkgKiB2YmxhbmsgY291bnRlciB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIGEg bW9kZXNldAogCSAqLwogCXZibGFuay0+bGFzdCA9Ci0JCShkZXYtPmRyaXZlci0+Z2V0X3ZibGFu a19jb3VudGVyKGRldiwgY3J0YykgLSAxKSAmCisJCShkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19j b3VudGVyKGRldiwgcGlwZSkgLSAxKSAmCiAJCWRldi0+bWF4X3ZibGFua19jb3VudDsKIAkvKgog CSAqIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIHRoZXJlIGFyZSB1c2VycyBsZWZ0LCBvciB0aGUK QEAgLTEzNDMsNyArMTM0NSw3IEBAIHZvaWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgY3J0YykKIAkgKi8KIAlpZiAoYXRvbWljX3JlYWQoJnZibGFuay0+cmVmY291 bnQpICE9IDAgfHwKIAkgICAgKCFkZXYtPnZibGFua19kaXNhYmxlX2ltbWVkaWF0ZSAmJiBkcm1f dmJsYW5rX29mZmRlbGF5ID09IDApKQotCQlXQVJOX09OKGRybV92YmxhbmtfZW5hYmxlKGRldiwg Y3J0YykpOworCQlXQVJOX09OKGRybV92YmxhbmtfZW5hYmxlKGRldiwgcGlwZSkpOwogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKIH0KIEVYUE9SVF9T WU1CT0woZHJtX3ZibGFua19vbik7CkBAIC0xMzY4LDcgKzEzNzAsNyBAQCBFWFBPUlRfU1lNQk9M KGRybV9jcnRjX3ZibGFua19vbik7CiAvKioKICAqIGRybV92YmxhbmtfcHJlX21vZGVzZXQgLSBh Y2NvdW50IGZvciB2YmxhbmtzIGFjcm9zcyBtb2RlIHNldHMKICAqIEBkZXY6IERSTSBkZXZpY2UK LSAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0aW9uCisgKiBAcGlwZTogQ1JUQyBpbmRleAogICoKICAq IEFjY291bnQgZm9yIHZibGFuayBldmVudHMgYWNyb3NzIG1vZGUgc2V0dGluZyBldmVudHMsIHdo aWNoIHdpbGwgbGlrZWx5CiAgKiByZXNldCB0aGUgaGFyZHdhcmUgZnJhbWUgY291bnRlci4KQEAg LTEzODgsMTUgKzEzOTAsMTUgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192Ymxhbmtfb24pOwog ICogRHJpdmVycyBtdXN0IGNhbGwgZHJtX3ZibGFua19wb3N0X21vZGVzZXQoKSB3aGVuIHJlLWVu YWJsaW5nIHRoZSBzYW1lIGNydGMKICAqIGFnYWluLgogICovCi12b2lkIGRybV92YmxhbmtfcHJl X21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCit2b2lkIGRybV92Ymxh bmtfcHJlX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUp CiB7Ci0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNd OworCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsK IAogCS8qIHZibGFuayBpcyBub3QgaW5pdGlhbGl6ZWQgKElSUSBub3QgaW5zdGFsbGVkID8pLCBv ciBoYXMgYmVlbiBmcmVlZCAqLwogCWlmICghZGV2LT5udW1fY3J0Y3MpCiAJCXJldHVybjsKIAot CWlmIChXQVJOX09OKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpKQorCWlmIChXQVJOX09OKHBpcGUg Pj0gZGV2LT5udW1fY3J0Y3MpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMTQwOCw3ICsxNDEwLDcg QEAgdm9pZCBkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjcnRjKQogCSAqLwogCWlmICghdmJsYW5rLT5pbm1vZGVzZXQpIHsKIAkJdmJsYW5rLT5pbm1v ZGVzZXQgPSAweDE7Ci0JCWlmIChkcm1fdmJsYW5rX2dldChkZXYsIGNydGMpID09IDApCisJCWlm IChkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpID09IDApCiAJCQl2YmxhbmstPmlubW9kZXNldCB8 PSAweDI7CiAJfQogfQpAQCAtMTQxNywyMSArMTQxOSwyMSBAQCBFWFBPUlRfU1lNQk9MKGRybV92 YmxhbmtfcHJlX21vZGVzZXQpOwogLyoqCiAgKiBkcm1fdmJsYW5rX3Bvc3RfbW9kZXNldCAtIHVu ZG8gZHJtX3ZibGFua19wcmVfbW9kZXNldCBjaGFuZ2VzCiAgKiBAZGV2OiBEUk0gZGV2aWNlCi0g KiBAY3J0YzogQ1JUQyBpbiBxdWVzdGlvbgorICogQHBpcGU6IENSVEMgaW5kZXgKICAqCiAgKiBU aGlzIGZ1bmN0aW9uIGFnYWluIGRyb3BzIHRoZSB0ZW1wb3JhcnkgdmJsYW5rIHJlZmVyZW5jZSBh Y3F1aXJlZCBpbgogICogZHJtX3ZibGFua19wcmVfbW9kZXNldC4KICAqLwotdm9pZCBkcm1fdmJs YW5rX3Bvc3RfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKK3ZvaWQg ZHJtX3ZibGFua19wb3N0X21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQg aW50IHBpcGUpCiB7Ci0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW2NydGNdOworCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFu a1twaXBlXTsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJLyogdmJsYW5rIGlzIG5vdCBp bml0aWFsaXplZCAoSVJRIG5vdCBpbnN0YWxsZWQgPyksIG9yIGhhcyBiZWVuIGZyZWVkICovCiAJ aWYgKCFkZXYtPm51bV9jcnRjcykKIAkJcmV0dXJuOwogCi0JaWYgKFdBUk5fT04oY3J0YyA+PSBk ZXYtPm51bV9jcnRjcykpCisJaWYgKFdBUk5fT04ocGlwZSA+PSBkZXYtPm51bV9jcnRjcykpCiAJ CXJldHVybjsKIAogCWlmICh2YmxhbmstPmlubW9kZXNldCkgewpAQCAtMTQ0MCw3ICsxNDQyLDcg QEAgdm9pZCBkcm1fdmJsYW5rX3Bvc3RfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YykKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxh Z3MpOwogCiAJCWlmICh2YmxhbmstPmlubW9kZXNldCAmIDB4MikKLQkJCWRybV92YmxhbmtfcHV0 KGRldiwgY3J0Yyk7CisJCQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwogCiAJCXZibGFuay0+ aW5tb2Rlc2V0ID0gMDsKIAl9CkBAIC0xNDYyLDcgKzE0NjQsNyBAQCBpbnQgZHJtX21vZGVzZXRf Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdikKIHsKIAlzdHJ1Y3QgZHJtX21vZGVzZXRfY3RsICptb2Rlc2V0ID0g ZGF0YTsKLQl1bnNpZ25lZCBpbnQgY3J0YzsKKwl1bnNpZ25lZCBpbnQgcGlwZTsKIAogCS8qIElm IGRybV92YmxhbmtfaW5pdCgpIGhhc24ndCBiZWVuIGNhbGxlZCB5ZXQsIGp1c3Qgbm8tb3AgKi8K IAlpZiAoIWRldi0+bnVtX2NydGNzKQpAQCAtMTQ3MiwxNiArMTQ3NCwxNiBAQCBpbnQgZHJtX21v ZGVzZXRfY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKGRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpCiAJCXJldHVybiAwOwogCi0J Y3J0YyA9IG1vZGVzZXQtPmNydGM7Ci0JaWYgKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpCisJcGlw ZSA9IG1vZGVzZXQtPmNydGM7CisJaWYgKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3MpCiAJCXJldHVy biAtRUlOVkFMOwogCiAJc3dpdGNoIChtb2Rlc2V0LT5jbWQpIHsKIAljYXNlIF9EUk1fUFJFX01P REVTRVQ6Ci0JCWRybV92YmxhbmtfcHJlX21vZGVzZXQoZGV2LCBjcnRjKTsKKwkJZHJtX3ZibGFu a19wcmVfbW9kZXNldChkZXYsIHBpcGUpOwogCQlicmVhazsKIAljYXNlIF9EUk1fUE9TVF9NT0RF U0VUOgotCQlkcm1fdmJsYW5rX3Bvc3RfbW9kZXNldChkZXYsIGNydGMpOworCQlkcm1fdmJsYW5r X3Bvc3RfbW9kZXNldChkZXYsIHBpcGUpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4g LUVJTlZBTDsKQEAgLTE0OTAsNyArMTQ5Miw3IEBAIGludCBkcm1fbW9kZXNldF9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBkcm1fcXVldWVfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBl LAorc3RhdGljIGludCBkcm1fcXVldWVfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJCSAgdW5pb24gZHJtX3dhaXRfdmJsYW5rICp2Ymx3 YWl0LAogCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CkBAIC0xNTQ0LDcgKzE1 NDYsNyBAQCBzdGF0aWMgaW50IGRybV9xdWV1ZV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IHBpcGUsCiAJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gdmJsd2FpdC0+ cmVxdWVzdC5zZXF1ZW5jZTsKIAl9CiAKLQlEUk1fREVCVUcoImV2ZW50IG9uIHZibGFuayBjb3Vu dCAlZCwgY3VycmVudCAlZCwgY3J0YyAlZFxuIiwKKwlEUk1fREVCVUcoImV2ZW50IG9uIHZibGFu ayBjb3VudCAlZCwgY3VycmVudCAlZCwgY3J0YyAldVxuIiwKIAkJICB2Ymx3YWl0LT5yZXF1ZXN0 LnNlcXVlbmNlLCBzZXEsIHBpcGUpOwogCiAJdHJhY2VfZHJtX3ZibGFua19ldmVudF9xdWV1ZWQo Y3VycmVudC0+cGlkLCBwaXBlLApAQCAtMTU5Myw3ICsxNTk1LDcgQEAgaW50IGRybV93YWl0X3Zi bGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1fdmJs YW5rX2NydGMgKnZibGFuazsKIAl1bmlvbiBkcm1fd2FpdF92YmxhbmsgKnZibHdhaXQgPSBkYXRh OwogCWludCByZXQ7Ci0JdW5zaWduZWQgaW50IGZsYWdzLCBzZXEsIGNydGMsIGhpZ2hfY3J0YzsK Kwl1bnNpZ25lZCBpbnQgZmxhZ3MsIHNlcSwgcGlwZSwgaGlnaF9waXBlOwogCiAJaWYgKCFkZXYt PmlycV9lbmFibGVkKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE2MTIsMjIgKzE2MTQsMjIgQEAg aW50IGRybV93YWl0X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CX0KIAogCWZsYWdzID0gdmJsd2FpdC0+cmVxdWVzdC50eXBlICYgX0RSTV9WQkxBTktfRkxBR1Nf TUFTSzsKLQloaWdoX2NydGMgPSAodmJsd2FpdC0+cmVxdWVzdC50eXBlICYgX0RSTV9WQkxBTktf SElHSF9DUlRDX01BU0spOwotCWlmIChoaWdoX2NydGMpCi0JCWNydGMgPSBoaWdoX2NydGMgPj4g X0RSTV9WQkxBTktfSElHSF9DUlRDX1NISUZUOworCWhpZ2hfcGlwZSA9ICh2Ymx3YWl0LT5yZXF1 ZXN0LnR5cGUgJiBfRFJNX1ZCTEFOS19ISUdIX0NSVENfTUFTSyk7CisJaWYgKGhpZ2hfcGlwZSkK KwkJcGlwZSA9IGhpZ2hfcGlwZSA+PiBfRFJNX1ZCTEFOS19ISUdIX0NSVENfU0hJRlQ7CiAJZWxz ZQotCQljcnRjID0gZmxhZ3MgJiBfRFJNX1ZCTEFOS19TRUNPTkRBUlkgPyAxIDogMDsKLQlpZiAo Y3J0YyA+PSBkZXYtPm51bV9jcnRjcykKKwkJcGlwZSA9IGZsYWdzICYgX0RSTV9WQkxBTktfU0VD T05EQVJZID8gMSA6IDA7CisJaWYgKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3MpCiAJCXJldHVybiAt RUlOVkFMOwogCi0JdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOworCXZibGFuayA9ICZkZXYt PnZibGFua1twaXBlXTsKIAotCXJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgY3J0Yyk7CisJcmV0 ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVRygi ZmFpbGVkIHRvIGFjcXVpcmUgdmJsYW5rIGNvdW50ZXIsICVkXG4iLCByZXQpOwogCQlyZXR1cm4g cmV0OwogCX0KLQlzZXEgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgY3J0Yyk7CisJc2VxID0gZHJt X3ZibGFua19jb3VudChkZXYsIHBpcGUpOwogCiAJc3dpdGNoICh2Ymx3YWl0LT5yZXF1ZXN0LnR5 cGUgJiBfRFJNX1ZCTEFOS19UWVBFU19NQVNLKSB7CiAJY2FzZSBfRFJNX1ZCTEFOS19SRUxBVElW RToKQEAgLTE2NDQsNyArMTY0Niw3IEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJLyogbXVzdCBob2xkIG9uIHRvIHRoZSB2Ymxhbmsg cmVmIHVudGlsIHRoZSBldmVudCBmaXJlcwogCQkgKiBkcm1fdmJsYW5rX3B1dCB3aWxsIGJlIGNh bGxlZCBhc3luY2hyb25vdXNseQogCQkgKi8KLQkJcmV0dXJuIGRybV9xdWV1ZV92YmxhbmtfZXZl bnQoZGV2LCBjcnRjLCB2Ymx3YWl0LCBmaWxlX3ByaXYpOworCQlyZXR1cm4gZHJtX3F1ZXVlX3Zi bGFua19ldmVudChkZXYsIHBpcGUsIHZibHdhaXQsIGZpbGVfcHJpdik7CiAJfQogCiAJaWYgKChm bGFncyAmIF9EUk1fVkJMQU5LX05FWFRPTk1JU1MpICYmCkBAIC0xNjUyLDExICsxNjU0LDExIEBA IGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSA9IHNlcSArIDE7CiAJfQogCi0JRFJNX0RFQlVH KCJ3YWl0aW5nIG9uIHZibGFuayBjb3VudCAlZCwgY3J0YyAlZFxuIiwKLQkJICB2Ymx3YWl0LT5y ZXF1ZXN0LnNlcXVlbmNlLCBjcnRjKTsKKwlEUk1fREVCVUcoIndhaXRpbmcgb24gdmJsYW5rIGNv dW50ICVkLCBjcnRjICV1XG4iLAorCQkgIHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UsIHBpcGUp OwogCXZibGFuay0+bGFzdF93YWl0ID0gdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZTsKIAlEUk1f V0FJVF9PTihyZXQsIHZibGFuay0+cXVldWUsIDMgKiBIWiwKLQkJICAgICgoKGRybV92Ymxhbmtf Y291bnQoZGV2LCBjcnRjKSAtCisJCSAgICAoKChkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSkg LQogCQkgICAgICAgdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSkgPD0gKDEgPDwgMjMpKSB8fAog CQkgICAgICF2YmxhbmstPmVuYWJsZWQgfHwKIAkJICAgICAhZGV2LT5pcnFfZW5hYmxlZCkpOwpA QCAtMTY2NCw3ICsxNjY2LDcgQEAgaW50IGRybV93YWl0X3ZibGFuayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQgIT0gLUVJTlRSKSB7CiAJCXN0cnVjdCB0aW1l dmFsIG5vdzsKIAotCQl2Ymx3YWl0LT5yZXBseS5zZXF1ZW5jZSA9IGRybV92YmxhbmtfY291bnRf YW5kX3RpbWUoZGV2LCBjcnRjLCAmbm93KTsKKwkJdmJsd2FpdC0+cmVwbHkuc2VxdWVuY2UgPSBk cm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRldiwgcGlwZSwgJm5vdyk7CiAJCXZibHdhaXQtPnJl cGx5LnR2YWxfc2VjID0gbm93LnR2X3NlYzsKIAkJdmJsd2FpdC0+cmVwbHkudHZhbF91c2VjID0g bm93LnR2X3VzZWM7CiAKQEAgLTE2NzUsMTEgKzE2NzcsMTEgQEAgaW50IGRybV93YWl0X3ZibGFu ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCX0KIAogZG9uZToKLQlkcm1f dmJsYW5rX3B1dChkZXYsIGNydGMpOworCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7CiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgZHJtX2hhbmRsZV92YmxhbmtfZXZlbnRzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQorc3RhdGljIHZvaWQgZHJtX2hhbmRsZV92Ymxh bmtfZXZlbnRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQogewog CXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUsICp0OwogCXN0cnVjdCB0aW1ldmFs IG5vdzsKQEAgLTE2ODcsMTAgKzE2ODksMTAgQEAgc3RhdGljIHZvaWQgZHJtX2hhbmRsZV92Ymxh bmtfZXZlbnRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCiAJYXNzZXJ0X3Nw aW5fbG9ja2VkKCZkZXYtPmV2ZW50X2xvY2spOwogCi0Jc2VxID0gZHJtX3ZibGFua19jb3VudF9h bmRfdGltZShkZXYsIGNydGMsICZub3cpOworCXNlcSA9IGRybV92YmxhbmtfY291bnRfYW5kX3Rp bWUoZGV2LCBwaXBlLCAmbm93KTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCB0LCAm ZGV2LT52YmxhbmtfZXZlbnRfbGlzdCwgYmFzZS5saW5rKSB7Ci0JCWlmIChlLT5waXBlICE9IGNy dGMpCisJCWlmIChlLT5waXBlICE9IHBpcGUpCiAJCQljb250aW51ZTsKIAkJaWYgKChzZXEgLSBl LT5ldmVudC5zZXF1ZW5jZSkgPiAoMTw8MjMpKQogCQkJY29udGludWU7CkBAIC0xNjk5LDI2ICsx NzAxLDI2IEBAIHN0YXRpYyB2b2lkIGRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAkJCSAgZS0+ZXZlbnQuc2VxdWVuY2UsIHNlcSk7CiAK IAkJbGlzdF9kZWwoJmUtPmJhc2UubGluayk7Ci0JCWRybV92YmxhbmtfcHV0KGRldiwgZS0+cGlw ZSk7CisJCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7CiAJCXNlbmRfdmJsYW5rX2V2ZW50KGRl diwgZSwgc2VxLCAmbm93KTsKIAl9CiAKLQl0cmFjZV9kcm1fdmJsYW5rX2V2ZW50KGNydGMsIHNl cSk7CisJdHJhY2VfZHJtX3ZibGFua19ldmVudChwaXBlLCBzZXEpOwogfQogCiAvKioKICAqIGRy bV9oYW5kbGVfdmJsYW5rIC0gaGFuZGxlIGEgdmJsYW5rIGV2ZW50CiAgKiBAZGV2OiBEUk0gZGV2 aWNlCi0gKiBAY3J0Yzogd2hlcmUgdGhpcyBldmVudCBvY2N1cnJlZAorICogQHBpcGU6IGluZGV4 IG9mIENSVEMgd2hlcmUgdGhpcyBldmVudCBvY2N1cnJlZAogICoKICAqIERyaXZlcnMgc2hvdWxk IGNhbGwgdGhpcyByb3V0aW5lIGluIHRoZWlyIHZibGFuayBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8K ICAqIHVwZGF0ZSB0aGUgdmJsYW5rIGNvdW50ZXIgYW5kIHNlbmQgYW55IHNpZ25hbHMgdGhhdCBt YXkgYmUgcGVuZGluZy4KICAqCiAgKiBUaGlzIGlzIHRoZSBsZWdhY3kgdmVyc2lvbiBvZiBkcm1f Y3J0Y19oYW5kbGVfdmJsYW5rKCkuCiAgKi8KLWJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCitib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQogewotCXN0cnVjdCBkcm1fdmJs YW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKwlzdHJ1Y3QgZHJtX3ZibGFu a19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07CiAJdTMyIHZibGNvdW50OwogCXM2 NCBkaWZmX25zOwogCXN0cnVjdCB0aW1ldmFsIHR2Ymxhbms7CkBAIC0xNzI3LDcgKzE3MjksNyBA QCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRj KQogCWlmIChXQVJOX09OX09OQ0UoIWRldi0+bnVtX2NydGNzKSkKIAkJcmV0dXJuIGZhbHNlOwog Ci0JaWYgKFdBUk5fT04oY3J0YyA+PSBkZXYtPm51bV9jcnRjcykpCisJaWYgKFdBUk5fT04ocGlw ZSA+PSBkZXYtPm51bV9jcnRjcykpCiAJCXJldHVybiBmYWxzZTsKIAogCXNwaW5fbG9ja19pcnFz YXZlKCZkZXYtPmV2ZW50X2xvY2ssIGlycWZsYWdzKTsKQEAgLTE3NTEsMTEgKzE3NTMsMTEgQEAg Ym9vbCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK IAogCS8qIEdldCBjdXJyZW50IHRpbWVzdGFtcCBhbmQgY291bnQuICovCiAJdmJsY291bnQgPSB2 YmxhbmstPmNvdW50OwotCWRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBjcnRjLCAmdHZi bGFuaywgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSk7CisJZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFt cChkZXYsIHBpcGUsICZ0dmJsYW5rLCBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRKTsKIAogCS8qIENv bXB1dGUgdGltZSBkaWZmZXJlbmNlIHRvIHRpbWVzdGFtcCBvZiBsYXN0IHZibGFuayAqLwogCWRp ZmZfbnMgPSB0aW1ldmFsX3RvX25zKCZ0dmJsYW5rKSAtCi0JCSAgdGltZXZhbF90b19ucygmdmJs YW5rdGltZXN0YW1wKGRldiwgY3J0YywgdmJsY291bnQpKTsKKwkJICB0aW1ldmFsX3RvX25zKCZ2 Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCB2Ymxjb3VudCkpOwogCiAJLyogVXBkYXRlIHZibGFu ayB0aW1lc3RhbXAgYW5kIGNvdW50IGlmIGF0IGxlYXN0CiAJICogRFJNX1JFRFVOREFOVF9WQkxJ UlFfVEhSRVNIX05TIG5hbm9zZWNvbmRzCkBAIC0xNzY3LDE1ICsxNzY5LDE1IEBAIGJvb2wgZHJt X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJICogaWdu b3JlIHRob3NlIGZvciBhY2NvdW50aW5nLgogCSAqLwogCWlmIChhYnM2NChkaWZmX25zKSA+IERS TV9SRURVTkRBTlRfVkJMSVJRX1RIUkVTSF9OUykKLQkJc3RvcmVfdmJsYW5rKGRldiwgY3J0Yywg MSwgJnR2YmxhbmspOworCQlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCAxLCAmdHZibGFuayk7CiAJ ZWxzZQotCQlEUk1fREVCVUcoImNydGMgJWQ6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4gZGlm Zl9ucyA9ICVkXG4iLAotCQkJICBjcnRjLCAoaW50KSBkaWZmX25zKTsKKwkJRFJNX0RFQlVHKCJj cnRjICV1OiBSZWR1bmRhbnQgdmJsaXJxIGlnbm9yZWQuIGRpZmZfbnMgPSAlZFxuIiwKKwkJCSAg cGlwZSwgKGludCkgZGlmZl9ucyk7CiAKIAlzcGluX3VubG9jaygmZGV2LT52YmxhbmtfdGltZV9s b2NrKTsKIAogCXdha2VfdXAoJnZibGFuay0+cXVldWUpOwotCWRybV9oYW5kbGVfdmJsYW5rX2V2 ZW50cyhkZXYsIGNydGMpOworCWRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyhkZXYsIHBpcGUpOwog CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBpcnFmbGFncyk7CiAK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRl eCA1OTA4ODQ4ZDg2YjMuLjAyMGFmYTM0M2RmZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt UC5oCisrKyBiL2luY2x1ZGUvZHJtL2RybVAuaApAQCAtNjgxLDcgKzY4MSw3IEBAIHN0cnVjdCBk cm1fbWlub3IgewogCiBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50IHsKIAlzdHJ1Y3Qg ZHJtX3BlbmRpbmdfZXZlbnQgYmFzZTsKLQlpbnQgcGlwZTsKKwl1bnNpZ25lZCBpbnQgcGlwZTsK IAlzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayBldmVudDsKIH07CiAKQEAgLTcwMCw3ICs3MDAsNyBA QCBzdHJ1Y3QgZHJtX3ZibGFua19jcnRjIHsKIAkJCQkJLyogZm9yIHdyYXBhcm91bmQgaGFuZGxp bmcgKi8KIAl1MzIgbGFzdF93YWl0OwkJCS8qIExhc3QgdmJsYW5rIHNlcW5vIHdhaXRlZCBwZXIg Q1JUQyAqLwogCXVuc2lnbmVkIGludCBpbm1vZGVzZXQ7CQkvKiBEaXNwbGF5IGRyaXZlciBpcyBz ZXR0aW5nIG1vZGUgKi8KLQlpbnQgY3J0YzsJCQkvKiBjcnRjIGluZGV4ICovCisJdW5zaWduZWQg aW50IHBpcGU7CQkvKiBjcnRjIGluZGV4ICovCiAJYm9vbCBlbmFibGVkOwkJCS8qIHNvIHdlIGRv bid0IGNhbGwgZW5hYmxlIG1vcmUgdGhhbgogCQkJCQkgICBvbmNlIHBlciBkaXNhYmxlICovCiB9 OwpAQCAtOTIwLDM0ICs5MjAsMzQgQEAgdm9pZCBkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHZvaWQg KmFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKIGV4dGVybiBpbnQgZHJtX2lycV9pbnN0YWxs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBpcnEpOwogZXh0ZXJuIGludCBkcm1faXJxX3Vu aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAotZXh0ZXJuIGludCBkcm1fdmJsYW5r X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG51bV9jcnRjcyk7CitleHRlcm4gaW50 IGRybV92YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnVt X2NydGNzKTsKIGV4dGVybiBpbnQgZHJtX3dhaXRfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOwotZXh0ZXJuIHUz MiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK2V4 dGVybiB1MzIgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlw ZSk7CiBleHRlcm4gdTMyIGRybV9jcnRjX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwotZXh0ZXJuIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjLAorZXh0ZXJuIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1l KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJCSAgICAgc3Ry dWN0IHRpbWV2YWwgKnZibGFua3RpbWUpOwotZXh0ZXJuIHZvaWQgZHJtX3NlbmRfdmJsYW5rX2V2 ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAotCQkJCSAgICAgc3RydWN0IGRy bV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSk7CitleHRlcm4gdm9pZCBkcm1fc2VuZF92Ymxhbmtf ZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCisJCQkJICBz dHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKTsKIGV4dGVybiB2b2lkIGRybV9jcnRj X3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgICAgICAgc3Ry dWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSk7Ci1leHRlcm4gYm9vbCBkcm1faGFuZGxl X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7CitleHRlcm4gYm9vbCBk cm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlw ZSk7CiBleHRlcm4gYm9vbCBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0Yyk7Ci1leHRlcm4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKTsKLWV4dGVybiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBjcnRjKTsKK2V4dGVybiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOworZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19w dXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwogZXh0ZXJuIGlu dCBkcm1fY3J0Y192YmxhbmtfZ2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBleHRlcm4gdm9p ZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci1leHRlcm4gdm9p ZCBkcm1fd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsK K2V4dGVybiB2b2lkIGRybV93YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHBpcGUpOwogZXh0ZXJuIHZvaWQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5r KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci1leHRlcm4gdm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7Ci1leHRlcm4gdm9pZCBkcm1fdmJsYW5rX29u KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKK2V4dGVybiB2b2lkIGRybV92Ymxh bmtfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKK2V4dGVy biB2b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUpOwogZXh0ZXJuIHZvaWQgZHJtX2NydGNfdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2NydGMg KmNydGMpOwogZXh0ZXJuIHZvaWQgZHJtX2NydGNfdmJsYW5rX3Jlc2V0KHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7CiBleHRlcm4gdm9pZCBkcm1fY3J0Y192Ymxhbmtfb24oc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKIGV4dGVybiB2b2lkIGRybV92YmxhbmtfY2xlYW51cChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIAogZXh0ZXJuIGludCBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0 cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJCQkgaW50IGNydGMsIGludCAqbWF4X2Vy cm9yLAorCQkJCQkJIHVuc2lnbmVkIGludCBwaXBlLCBpbnQgKm1heF9lcnJvciwKIAkJCQkJCSBz dHJ1Y3QgdGltZXZhbCAqdmJsYW5rX3RpbWUsCiAJCQkJCQkgdW5zaWduZWQgZmxhZ3MsCiAJCQkJ CQkgY29uc3Qgc3RydWN0IGRybV9jcnRjICpyZWZjcnRjLApAQCAtOTY4LDggKzk2OCw4IEBAIHN0 YXRpYyBpbmxpbmUgd2FpdF9xdWV1ZV9oZWFkX3QgKmRybV9jcnRjX3ZibGFua193YWl0cXVldWUo c3RydWN0IGRybV9jcnRjICpjcnRjCiB9CiAKIC8qIE1vZGVzZXR0aW5nIHN1cHBvcnQgKi8KLWV4 dGVybiB2b2lkIGRybV92YmxhbmtfcHJlX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMpOwotZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19wb3N0X21vZGVzZXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IGNydGMpOworZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19wcmVfbW9k ZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7CitleHRlcm4g dm9pZCBkcm1fdmJsYW5rX3Bvc3RfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcGlwZSk7CiAKIAkJCQkvKiBTdHViIHN1cHBvcnQgKGRybV9zdHViLmgpICovCiBl eHRlcm4gc3RydWN0IGRybV9tYXN0ZXIgKmRybV9tYXN0ZXJfZ2V0KHN0cnVjdCBkcm1fbWFzdGVy ICptYXN0ZXIpOwotLSAKMi40LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==