From: Eric Anholt Subject: [PATCH v2 2/3] drm/vc4: Add an ioctl for labeling GEM BOs for summary stats Date: Tue, 25 Jul 2017 11:27:17 -0700 Message-ID: <20170725182718.31468-2-eric@anholt.net> References: <20170725182718.31468-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 1C3C56E0E9 for ; Tue, 25 Jul 2017 18:27:25 +0000 (UTC) In-Reply-To: <20170725182718.31468-1-eric@anholt.net> 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: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBoYXMgcHJvdmVuIGltbWVuc2VseSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBtZW1vcnkgbGVh a3MgYW5kCm92ZXJhbGxvY2F0aW9uICh3aGljaCBpcyBhIHJhdGhlciBzZXJpb3VzIGNvbmNlcm4g b24gdGhlIHBsYXRmb3JtLApnaXZlbiB0aGF0IHdlIHR5cGljYWxseSBydW4gYXQgYWJvdXQgMjU2 TUIgb2YgQ01BIG91dCBvZiB1cCB0byAxR0IKdG90YWwgbWVtb3J5LCB3aXRoIGZyYW1lYnVmZmVy cyB0aGF0IGFyZSBhYm91dCA4TUIgZWNhaCkuCgpUaGUgc3RhdGUgb2YgdGhlIGFydCB3aXRob3V0 IHRoaXMgaXMgdG8gZHVtcCBkZWJ1ZyBsb2dzIGZyb20gZXZlcnkgR0wKYXBwbGljYXRpb24sIGd1 ZXNzIGFzIHRvIGtlcm5lbCBhbGxvY2F0aW9ucyBiYXNlZCBvbiBib19zdGF0cywgYW5kIHRyeQp0 byBtZXJnZSB0aGF0IGFsbCB0b2dldGhlciBpbnRvIGEgZ2xvYmFsIHBpY3R1cmUgb2YgbWVtb3J5 IGFsbG9jYXRpb24Kc3RhdGUuICBXaXRoIHRoaXMsIHlvdSBjYW4gYWRkIGEgY291cGxlIG9mIGNh bGxzIHRvIHRoZSBkZWJ1ZyBidWlsZCBvZgp0aGUgM0QgZHJpdmVyIGFuZCBnZXQgYSBwcmV0dHkg ZGV0YWlsZWQgdmlldyBvZiBHUFUgbWVtb3J5IHVzYWdlIGZyb20KL2RlYnVnL2RyaS8wL2JvX3N0 YXRzIChvciB3aGVuIHdlIGRlYnVnIHByaW50IHRvIGRtZXNnIG9uIGFsbG9jYXRpb24KZmFpbHVy ZSkuCgpUaGUgTWVzYSBzaWRlIGN1cnJlbnRseSBsYWJlbHMgYXQgdGhlIGdhbGxpdW0gcmVzb3Vy Y2UgbGV2ZWwgKHNvIHlvdQpzZWUgdGhhdCBhIDE5MjB4MjAgcGl4bWFwIGhhcyBiZWVuIGNyZWF0 ZWQsIHByZXN1bWFibHkgZm9yIHRoZSB3aW5kb3cKc3lzdGVtIHBhbmVsKSwgYnV0IHdlIGNvdWxk IGV4dGVuZCB0aGF0IHRvIGJlIGV2ZW4gbW9yZSB1c2VmdWwgd2l0aApnbE9iamVjdExhYmVsKCkg bmFtZXMgYmVpbmcgc2VudCBhbGwgdGhlIHdheSBkb3duIHRvIHRoZSBrZXJuZWwuCgoocGFydGlh bCkgZXhhbXBsZSBvZiBzb3J0ZWQgZGVidWdmcyBvdXRwdXQgd2l0aCBNZXNhIGxhYmVsaW5nIGFs bApyZXNvdXJjZXM6CgogICAgICAgICAgICAgICBrZXJuZWwgQk8gY2FjaGU6ICAxNjM5MmtiIEJP cyAoMykKICAgICAgIHRpbGluZyBzaGFkb3cgMTkyMHgxMDgwOiAgIDgxNjBrYiBCT3MgKDEpCiAg ICAgICByZXNvdXJjZSAxOTIweDEwODBAMzIvMDogICA4MTYwa2IgQk9zICgxKQpzY2Fub3V0IHJl c291cmNlIDE5MjB4MTA4MEAzMi8wOiAgIDgxMDBrYiBCT3MgKDEpCiAgICAgICAgICAgICAgICAg ICAgICAgIGtlcm5lbDogICA4MTAwa2IgQk9zICgxKQoKdjI6IFVzZSBzdHJuZHVwX3VzZXIoKSwg dXNlIGxvY2tkZXAgYXNzZXJ0aW9uIGluc3RlYWQgb2YganVzdCBhCiAgICBjb21tZW50LCBmaXgg YW4gYXJyYXlbLTFdIHJlZmVyZW5jZSwgZXh0ZW5kIGNvbW1lbnQgYWJvdXQgbmFtZQogICAgZnJl ZWluZy4KClNpZ25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyAgICAgICAgfCAyNTggKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYyAgICAg ICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggICAgICAgfCAgMzkgKysr KystCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYyAgICAgICB8ICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfcmVuZGVyX2NsLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X3YzZC5jICAgICAgIHwgICAzICstCiBpbmNsdWRlL3VhcGkvZHJtL3ZjNF9kcm0uaCAg ICAgICAgICB8ICAxMSArKwogNyBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgNjYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyBi L2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKaW5kZXggNDg3Zjk2NDEyZDM1Li5mNDM4N2Ux ZTE3OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYwpAQCAtMjQsMjEgKzI0LDM1IEBACiAjaW5jbHVkZSAi dmM0X2Rydi5oIgogI2luY2x1ZGUgInVhcGkvZHJtL3ZjNF9kcm0uaCIKIAorc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCBib190eXBlX25hbWVzW10gPSB7CisJImtlcm5lbCIsCisJIlYzRCIsCisJ IlYzRCBzaGFkZXIiLAorCSJkdW1iIiwKKwkiYmlubmVyIiwKKwkiUkNMIiwKKwkiQkNMIiwKKwki a2VybmVsIEJPIGNhY2hlIiwKK307CisKK3N0YXRpYyBib29sIGlzX3VzZXJfbGFiZWwoaW50IGxh YmVsKQoreworCXJldHVybiBsYWJlbCA+PSBWQzRfQk9fVFlQRV9DT1VOVDsKK30KKwogc3RhdGlj IHZvaWQgdmM0X2JvX3N0YXRzX2R1bXAoc3RydWN0IHZjNF9kZXYgKnZjNCkKIHsKLQlEUk1fSU5G TygibnVtIGJvcyBhbGxvY2F0ZWQ6ICVkXG4iLAotCQkgdmM0LT5ib19zdGF0cy5udW1fYWxsb2Nh dGVkKTsKLQlEUk1fSU5GTygic2l6ZSBib3MgYWxsb2NhdGVkOiAlZGtiXG4iLAotCQkgdmM0LT5i b19zdGF0cy5zaXplX2FsbG9jYXRlZCAvIDEwMjQpOwotCURSTV9JTkZPKCJudW0gYm9zIHVzZWQ6 ICVkXG4iLAotCQkgdmM0LT5ib19zdGF0cy5udW1fYWxsb2NhdGVkIC0gdmM0LT5ib19zdGF0cy5u dW1fY2FjaGVkKTsKLQlEUk1fSU5GTygic2l6ZSBib3MgdXNlZDogJWRrYlxuIiwKLQkJICh2YzQt PmJvX3N0YXRzLnNpemVfYWxsb2NhdGVkIC0KLQkJICB2YzQtPmJvX3N0YXRzLnNpemVfY2FjaGVk KSAvIDEwMjQpOwotCURSTV9JTkZPKCJudW0gYm9zIGNhY2hlZDogJWRcbiIsCi0JCSB2YzQtPmJv X3N0YXRzLm51bV9jYWNoZWQpOwotCURSTV9JTkZPKCJzaXplIGJvcyBjYWNoZWQ6ICVka2JcbiIs Ci0JCSB2YzQtPmJvX3N0YXRzLnNpemVfY2FjaGVkIC8gMTAyNCk7CisJaW50IGk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgdmM0LT5udW1fbGFiZWxzOyBpKyspIHsKKwkJaWYgKCF2YzQtPmJvX2xhYmVs c1tpXS5udW1fYWxsb2NhdGVkKQorCQkJY29udGludWU7CisKKwkJRFJNX0lORk8oIiUzMHM6ICU2 ZGtiIEJPcyAoJWQpXG4iLAorCQkJIHZjNC0+Ym9fbGFiZWxzW2ldLm5hbWUsCisJCQkgdmM0LT5i b19sYWJlbHNbaV0uc2l6ZV9hbGxvY2F0ZWQgLyAxMDI0LAorCQkJIHZjNC0+Ym9fbGFiZWxzW2ld Lm51bV9hbGxvY2F0ZWQpOworCX0KIH0KIAogI2lmZGVmIENPTkZJR19ERUJVR19GUwpAQCAtNDcs MzAgKzYxLDEwMyBAQCBpbnQgdmM0X2JvX3N0YXRzX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRy bV9pbmZvX25vZGUgKiltLT5wcml2YXRlOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2Rl LT5taW5vci0+ZGV2OwogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7Ci0J c3RydWN0IHZjNF9ib19zdGF0cyBzdGF0czsKKwlpbnQgaTsKIAotCS8qIFRha2UgYSBzbmFwc2hv dCBvZiB0aGUgY3VycmVudCBzdGF0cyB3aXRoIHRoZSBsb2NrIGhlbGQuICovCiAJbXV0ZXhfbG9j aygmdmM0LT5ib19sb2NrKTsKLQlzdGF0cyA9IHZjNC0+Ym9fc3RhdHM7CisJZm9yIChpID0gMDsg aSA8IHZjNC0+bnVtX2xhYmVsczsgaSsrKSB7CisJCWlmICghdmM0LT5ib19sYWJlbHNbaV0ubnVt X2FsbG9jYXRlZCkKKwkJCWNvbnRpbnVlOworCisJCXNlcV9wcmludGYobSwgIiUzMHM6ICU2ZGti IEJPcyAoJWQpXG4iLAorCQkJICAgdmM0LT5ib19sYWJlbHNbaV0ubmFtZSwKKwkJCSAgIHZjNC0+ Ym9fbGFiZWxzW2ldLnNpemVfYWxsb2NhdGVkIC8gMTAyNCwKKwkJCSAgIHZjNC0+Ym9fbGFiZWxz W2ldLm51bV9hbGxvY2F0ZWQpOworCX0KIAltdXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7CiAK LQlzZXFfcHJpbnRmKG0sICJudW0gYm9zIGFsbG9jYXRlZDogJWRcbiIsCi0JCSAgIHN0YXRzLm51 bV9hbGxvY2F0ZWQpOwotCXNlcV9wcmludGYobSwgInNpemUgYm9zIGFsbG9jYXRlZDogJWRrYlxu IiwKLQkJICAgc3RhdHMuc2l6ZV9hbGxvY2F0ZWQgLyAxMDI0KTsKLQlzZXFfcHJpbnRmKG0sICJu dW0gYm9zIHVzZWQ6ICVkXG4iLAotCQkgICBzdGF0cy5udW1fYWxsb2NhdGVkIC0gc3RhdHMubnVt X2NhY2hlZCk7Ci0Jc2VxX3ByaW50ZihtLCAic2l6ZSBib3MgdXNlZDogJWRrYlxuIiwKLQkJICAg KHN0YXRzLnNpemVfYWxsb2NhdGVkIC0gc3RhdHMuc2l6ZV9jYWNoZWQpIC8gMTAyNCk7Ci0Jc2Vx X3ByaW50ZihtLCAibnVtIGJvcyBjYWNoZWQ6ICVkXG4iLAotCQkgICBzdGF0cy5udW1fY2FjaGVk KTsKLQlzZXFfcHJpbnRmKG0sICJzaXplIGJvcyBjYWNoZWQ6ICVka2JcbiIsCi0JCSAgIHN0YXRz LnNpemVfY2FjaGVkIC8gMTAyNCk7Ci0KIAlyZXR1cm4gMDsKIH0KICNlbmRpZgogCisvKiBUYWtl cyBvd25lcnNoaXAgb2YgKm5hbWUgYW5kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIHNsb3QgZm9y IGl0IGluCisgKiB0aGUgYm9fbGFiZWxzW10gYXJyYXksIGV4dGVuZGluZyBpdCBhcyBuZWNlc3Nh cnkuCisgKgorICogVGhpcyBpcyBpbmVmZmljaWVudCBhbmQgY291bGQgdXNlIGEgaGFzaCB0YWJs ZSBpbnN0ZWFkIG9mIHdhbGtpbmcKKyAqIGFuIGFycmF5IGFuZCBzdHJjbXAoKWluZy4gIEhvd2V2 ZXIsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdXNlcgorICogbGFiZWxpbmcgd2lsbCBiZSBpbmZy ZXF1ZW50IChzY2Fub3V0IGJ1ZmZlcnMgYW5kIG90aGVyIGxvbmctbGl2ZWQKKyAqIG9iamVjdHMs IG9yIGRlYnVnIGRyaXZlciBidWlsZHMpLCBzbyB3ZSBjYW4gbGl2ZSB3aXRoIGl0IGZvciBub3cu CisgKi8KK3N0YXRpYyBpbnQgdmM0X2dldF91c2VyX2xhYmVsKHN0cnVjdCB2YzRfZGV2ICp2YzQs IGNvbnN0IGNoYXIgKm5hbWUpCit7CisJaW50IGk7CisJaW50IGZyZWVfc2xvdCA9IC0xOworCisJ Zm9yIChpID0gMDsgaSA8IHZjNC0+bnVtX2xhYmVsczsgaSsrKSB7CisJCWlmICghdmM0LT5ib19s YWJlbHNbaV0ubmFtZSkgeworCQkJZnJlZV9zbG90ID0gaTsKKwkJfSBlbHNlIGlmIChzdHJjbXAo dmM0LT5ib19sYWJlbHNbaV0ubmFtZSwgbmFtZSkgPT0gMCkgeworCQkJa2ZyZWUobmFtZSk7CisJ CQlyZXR1cm4gaTsKKwkJfQorCX0KKworCWlmIChmcmVlX3Nsb3QgIT0gLTEpIHsKKwkJV0FSTl9P Tih2YzQtPmJvX2xhYmVsc1tmcmVlX3Nsb3RdLm51bV9hbGxvY2F0ZWQgIT0gMCk7CisJCXZjNC0+ Ym9fbGFiZWxzW2ZyZWVfc2xvdF0ubmFtZSA9IG5hbWU7CisJCXJldHVybiBmcmVlX3Nsb3Q7CisJ fSBlbHNlIHsKKwkJdTMyIG5ld19sYWJlbF9jb3VudCA9IHZjNC0+bnVtX2xhYmVscyArIDE7CisJ CXN0cnVjdCB2YzRfbGFiZWwgKm5ld19sYWJlbHMgPQorCQkJa3JlYWxsb2ModmM0LT5ib19sYWJl bHMsCisJCQkJIG5ld19sYWJlbF9jb3VudCAqIHNpemVvZigqbmV3X2xhYmVscyksCisJCQkJIEdG UF9LRVJORUwpOworCisJCWlmICghbmV3X2xhYmVscykgeworCQkJa2ZyZWUobmFtZSk7CisJCQly ZXR1cm4gLTE7CisJCX0KKworCQlmcmVlX3Nsb3QgPSB2YzQtPm51bV9sYWJlbHM7CisJCXZjNC0+ Ym9fbGFiZWxzID0gbmV3X2xhYmVsczsKKwkJdmM0LT5udW1fbGFiZWxzID0gbmV3X2xhYmVsX2Nv dW50OworCisJCXZjNC0+Ym9fbGFiZWxzW2ZyZWVfc2xvdF0ubmFtZSA9IG5hbWU7CisJCXZjNC0+ Ym9fbGFiZWxzW2ZyZWVfc2xvdF0ubnVtX2FsbG9jYXRlZCA9IDA7CisJCXZjNC0+Ym9fbGFiZWxz W2ZyZWVfc2xvdF0uc2l6ZV9hbGxvY2F0ZWQgPSAwOworCisJCXJldHVybiBmcmVlX3Nsb3Q7CisJ fQorfQorCitzdGF0aWMgdm9pZCB2YzRfYm9fc2V0X2xhYmVsKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ2VtX29iaiwgaW50IGxhYmVsKQoreworCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2Jv KGdlbV9vYmopOworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGdlbV9vYmotPmRl dik7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2YzQtPmJvX2xvY2spOworCisJaWYgKGxhYmVs ICE9IC0xKSB7CisJCXZjNC0+Ym9fbGFiZWxzW2xhYmVsXS5udW1fYWxsb2NhdGVkKys7CisJCXZj NC0+Ym9fbGFiZWxzW2xhYmVsXS5zaXplX2FsbG9jYXRlZCArPSBnZW1fb2JqLT5zaXplOworCX0K KworCXZjNC0+Ym9fbGFiZWxzW2JvLT5sYWJlbF0ubnVtX2FsbG9jYXRlZC0tOworCXZjNC0+Ym9f bGFiZWxzW2JvLT5sYWJlbF0uc2l6ZV9hbGxvY2F0ZWQgLT0gZ2VtX29iai0+c2l6ZTsKKworCWlm ICh2YzQtPmJvX2xhYmVsc1tiby0+bGFiZWxdLm51bV9hbGxvY2F0ZWQgPT0gMCAmJgorCSAgICBp c191c2VyX2xhYmVsKGJvLT5sYWJlbCkpIHsKKwkJLyogRnJlZSB1c2VyIEJPIGxhYmVsIHNsb3Rz IG9uIGxhc3QgdW5yZWZlcmVuY2UuCisJCSAqIFNsb3RzIGFyZSBqdXN0IHdoZXJlIHdlIHRyYWNr IHRoZSBzdGF0cyBmb3IgYSBnaXZlbgorCQkgKiBuYW1lLCBhbmQgb25jZSBhIG5hbWUgaXMgdW51 c2VkIHdlIGNhbiByZXVzZSB0aGF0CisJCSAqIHNsb3QuCisJCSAqLworCQlrZnJlZSh2YzQtPmJv X2xhYmVsc1tiby0+bGFiZWxdLm5hbWUpOworCQl2YzQtPmJvX2xhYmVsc1tiby0+bGFiZWxdLm5h bWUgPSBOVUxMOworCX0KKworCWJvLT5sYWJlbCA9IGxhYmVsOworfQorCiBzdGF0aWMgdWludDMy X3QgYm9fcGFnZV9pbmRleChzaXplX3Qgc2l6ZSkKIHsKIAlyZXR1cm4gKHNpemUgLyBQQUdFX1NJ WkUpIC0gMTsKQEAgLTgwLDcgKzE2Nyw4IEBAIHN0YXRpYyB1aW50MzJfdCBib19wYWdlX2luZGV4 KHNpemVfdCBzaXplKQogc3RhdGljIHZvaWQgdmM0X2JvX2Rlc3Ryb3koc3RydWN0IHZjNF9ibyAq Ym8pCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmYm8tPmJhc2UuYmFzZTsKLQlz dHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihvYmotPmRldik7CisKKwl2YzRfYm9fc2V0 X2xhYmVsKG9iaiwgLTEpOwogCiAJaWYgKGJvLT52YWxpZGF0ZWRfc2hhZGVyKSB7CiAJCWtmcmVl KGJvLT52YWxpZGF0ZWRfc2hhZGVyLT50ZXh0dXJlX3NhbXBsZXMpOwpAQCAtODgsOSArMTc2LDYg QEAgc3RhdGljIHZvaWQgdmM0X2JvX2Rlc3Ryb3koc3RydWN0IHZjNF9ibyAqYm8pCiAJCWJvLT52 YWxpZGF0ZWRfc2hhZGVyID0gTlVMTDsKIAl9CiAKLQl2YzQtPmJvX3N0YXRzLm51bV9hbGxvY2F0 ZWQtLTsKLQl2YzQtPmJvX3N0YXRzLnNpemVfYWxsb2NhdGVkIC09IG9iai0+c2l6ZTsKLQogCXJl c2VydmF0aW9uX29iamVjdF9maW5pKCZiby0+X3Jlc3YpOwogCiAJZHJtX2dlbV9jbWFfZnJlZV9v YmplY3Qob2JqKTsKQEAgLTk5LDEyICsxODQsNiBAQCBzdGF0aWMgdm9pZCB2YzRfYm9fZGVzdHJv eShzdHJ1Y3QgdmM0X2JvICpibykKIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggYm9fbG9jayBoZWxk LiAqLwogc3RhdGljIHZvaWQgdmM0X2JvX3JlbW92ZV9mcm9tX2NhY2hlKHN0cnVjdCB2YzRfYm8g KmJvKQogewotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gJmJvLT5iYXNlLmJhc2U7Ci0J c3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYob2JqLT5kZXYpOwotCi0JdmM0LT5ib19z dGF0cy5udW1fY2FjaGVkLS07Ci0JdmM0LT5ib19zdGF0cy5zaXplX2NhY2hlZCAtPSBvYmotPnNp emU7Ci0KIAlsaXN0X2RlbCgmYm8tPnVucmVmX2hlYWQpOwogCWxpc3RfZGVsKCZiby0+c2l6ZV9o ZWFkKTsKIH0KQEAgLTE2NSw3ICsyNDQsOCBAQCBzdGF0aWMgdm9pZCB2YzRfYm9fY2FjaGVfcHVy Z2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIH0KIAogc3RhdGljIHN0cnVjdCB2YzRfYm8gKnZj NF9ib19nZXRfZnJvbV9jYWNoZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCQkgICAgdWlu dDMyX3Qgc2l6ZSkKKwkJCQkJICAgIHVpbnQzMl90IHNpemUsCisJCQkJCSAgICBlbnVtIHZjNF9r ZXJuZWxfYm9fdHlwZSB0eXBlKQogewogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2 KGRldik7CiAJdWludDMyX3QgcGFnZV9pbmRleCA9IGJvX3BhZ2VfaW5kZXgoc2l6ZSk7CkBAIC0x ODYsNiArMjY2LDggQEAgc3RhdGljIHN0cnVjdCB2YzRfYm8gKnZjNF9ib19nZXRfZnJvbV9jYWNo ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWtyZWZfaW5pdCgmYm8tPmJhc2UuYmFzZS5yZWZj b3VudCk7CiAKIG91dDoKKwlpZiAoYm8pCisJCXZjNF9ib19zZXRfbGFiZWwoJmJvLT5iYXNlLmJh c2UsIHR5cGUpOwogCW11dGV4X3VubG9jaygmdmM0LT5ib19sb2NrKTsKIAlyZXR1cm4gYm87CiB9 CkBAIC0yMDgsOCArMjkwLDkgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2YzRfY3JlYXRlX29i amVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkKIAkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CiAKIAltdXRleF9sb2NrKCZ2YzQtPmJvX2xvY2spOwotCXZjNC0+Ym9fc3Rh dHMubnVtX2FsbG9jYXRlZCsrOwotCXZjNC0+Ym9fc3RhdHMuc2l6ZV9hbGxvY2F0ZWQgKz0gc2l6 ZTsKKwliby0+bGFiZWwgPSBWQzRfQk9fVFlQRV9LRVJORUw7CisJdmM0LT5ib19sYWJlbHNbVkM0 X0JPX1RZUEVfS0VSTkVMXS5udW1fYWxsb2NhdGVkKys7CisJdmM0LT5ib19sYWJlbHNbVkM0X0JP X1RZUEVfS0VSTkVMXS5zaXplX2FsbG9jYXRlZCArPSBzaXplOwogCW11dGV4X3VubG9jaygmdmM0 LT5ib19sb2NrKTsKIAliby0+cmVzdiA9ICZiby0+X3Jlc3Y7CiAJcmVzZXJ2YXRpb25fb2JqZWN0 X2luaXQoYm8tPnJlc3YpOwpAQCAtMjE4LDcgKzMwMSw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqdmM0X2NyZWF0ZV9vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUp CiB9CiAKIHN0cnVjdCB2YzRfYm8gKnZjNF9ib19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc2l6ZV90IHVuYWxpZ25lZF9zaXplLAotCQkJICAgICBib29sIGFsbG93X3VuemVyb2VkKQor CQkJICAgICBib29sIGFsbG93X3VuemVyb2VkLCBlbnVtIHZjNF9rZXJuZWxfYm9fdHlwZSB0eXBl KQogewogCXNpemVfdCBzaXplID0gcm91bmR1cCh1bmFsaWduZWRfc2l6ZSwgUEFHRV9TSVpFKTsK IAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwpAQCAtMjI5LDcgKzMxMiw3 IEBAIHN0cnVjdCB2YzRfYm8gKnZjNF9ib19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c2l6ZV90IHVuYWxpZ25lZF9zaXplLAogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIAogCS8q IEZpcnN0LCB0cnkgdG8gZ2V0IGEgdmM0X2JvIGZyb20gdGhlIGtlcm5lbCBCTyBjYWNoZS4gKi8K LQlibyA9IHZjNF9ib19nZXRfZnJvbV9jYWNoZShkZXYsIHNpemUpOworCWJvID0gdmM0X2JvX2dl dF9mcm9tX2NhY2hlKGRldiwgc2l6ZSwgdHlwZSk7CiAJaWYgKGJvKSB7CiAJCWlmICghYWxsb3df dW56ZXJvZWQpCiAJCQltZW1zZXQoYm8tPmJhc2UudmFkZHIsIDAsIGJvLT5iYXNlLmJhc2Uuc2l6 ZSk7CkBAIC0yNTEsNyArMzM0LDEzIEBAIHN0cnVjdCB2YzRfYm8gKnZjNF9ib19jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHVuYWxpZ25lZF9zaXplLAogCQkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CiAJCX0KIAl9Ci0JcmV0dXJuIHRvX3ZjNF9ibygmY21hX29iai0+YmFz ZSk7CisJYm8gPSB0b192YzRfYm8oJmNtYV9vYmotPmJhc2UpOworCisJbXV0ZXhfbG9jaygmdmM0 LT5ib19sb2NrKTsKKwl2YzRfYm9fc2V0X2xhYmVsKCZjbWFfb2JqLT5iYXNlLCB0eXBlKTsKKwlt dXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7CisKKwlyZXR1cm4gYm87CiB9CiAKIGludCB2YzRf ZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCkBAIC0yNjgsNyArMzU3LDcg QEAgaW50IHZjNF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAlpZiAo YXJncy0+c2l6ZSA8IGFyZ3MtPnBpdGNoICogYXJncy0+aGVpZ2h0KQogCQlhcmdzLT5zaXplID0g YXJncy0+cGl0Y2ggKiBhcmdzLT5oZWlnaHQ7CiAKLQlibyA9IHZjNF9ib19jcmVhdGUoZGV2LCBh cmdzLT5zaXplLCBmYWxzZSk7CisJYm8gPSB2YzRfYm9fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwg ZmFsc2UsIFZDNF9CT19UWVBFX0RVTUIpOwogCWlmIChJU19FUlIoYm8pKQogCQlyZXR1cm4gUFRS X0VSUihibyk7CiAKQEAgLTM0OCw4ICs0MzcsNyBAQCB2b2lkIHZjNF9mcmVlX29iamVjdChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9ibykKIAlsaXN0X2FkZCgmYm8tPnNpemVfaGVhZCwgY2Fj aGVfbGlzdCk7CiAJbGlzdF9hZGQoJmJvLT51bnJlZl9oZWFkLCAmdmM0LT5ib19jYWNoZS50aW1l X2xpc3QpOwogCi0JdmM0LT5ib19zdGF0cy5udW1fY2FjaGVkKys7Ci0JdmM0LT5ib19zdGF0cy5z aXplX2NhY2hlZCArPSBnZW1fYm8tPnNpemU7CisJdmM0X2JvX3NldF9sYWJlbCgmYm8tPmJhc2Uu YmFzZSwgVkM0X0JPX1RZUEVfS0VSTkVMX0NBQ0hFKTsKIAogCXZjNF9ib19jYWNoZV9mcmVlX29s ZChkZXYpOwogCkBAIC00ODMsNyArNTcxLDcgQEAgaW50IHZjNF9jcmVhdGVfYm9faW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkgKiBXZSBjYW4ndCBhbGxvY2F0ZSBm cm9tIHRoZSBCTyBjYWNoZSwgYmVjYXVzZSB0aGUgQk9zIGRvbid0CiAJICogZ2V0IHplcm9lZCwg YW5kIHRoYXQgbWlnaHQgbGVhayBkYXRhIGJldHdlZW4gdXNlcnMuCiAJICovCi0JYm8gPSB2YzRf Ym9fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwgZmFsc2UpOworCWJvID0gdmM0X2JvX2NyZWF0ZShk ZXYsIGFyZ3MtPnNpemUsIGZhbHNlLCBWQzRfQk9fVFlQRV9WM0QpOwogCWlmIChJU19FUlIoYm8p KQogCQlyZXR1cm4gUFRSX0VSUihibyk7CiAKQEAgLTUzNiw3ICs2MjQsNyBAQCB2YzRfY3JlYXRl X3NoYWRlcl9ib19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQly ZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlibyA9IHZjNF9ib19jcmVhdGUoZGV2LCBhcmdzLT5zaXpl LCB0cnVlKTsKKwlibyA9IHZjNF9ib19jcmVhdGUoZGV2LCBhcmdzLT5zaXplLCB0cnVlLCBWQzRf Qk9fVFlQRV9WM0RfU0hBREVSKTsKIAlpZiAoSVNfRVJSKGJvKSkKIAkJcmV0dXJuIFBUUl9FUlIo Ym8pOwogCkBAIC02NTEsOSArNzM5LDI0IEBAIGludCB2YzRfZ2V0X3RpbGluZ19pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogfQogCi12b2lkIHZj NF9ib19jYWNoZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitpbnQgdmM0X2JvX2NhY2hl X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0g dG9fdmM0X2RldihkZXYpOworCWludCBpOworCisJLyogQ3JlYXRlIHRoZSBpbml0aWFsIHNldCBv ZiBCTyBsYWJlbHMgdGhhdCB0aGUga2VybmVsIHdpbGwKKwkgKiB1c2UuICBUaGlzIGxldHMgdXMg YXZvaWQgYSBidW5jaCBvZiBzdHJpbmcgcmVhbGxvY2F0aW9uIGluCisJICogdGhlIGtlcm5lbCdz IGRyYXcgYW5kIEJPIGFsbG9jYXRpb24gcGF0aHMuCisJICovCisJdmM0LT5ib19sYWJlbHMgPSBr Y2FsbG9jKFZDNF9CT19UWVBFX0NPVU5ULCBzaXplb2YoKnZjNC0+Ym9fbGFiZWxzKSwKKwkJCQkg R0ZQX0tFUk5FTCk7CisJaWYgKCF2YzQtPmJvX2xhYmVscykKKwkJcmV0dXJuIC1FTk9NRU07CisJ dmM0LT5udW1fbGFiZWxzID0gVkM0X0JPX1RZUEVfQ09VTlQ7CisKKwlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShib190eXBlX25hbWVzKSAhPSBWQzRfQk9fVFlQRV9DT1VOVCk7CisJZm9yIChpID0g MDsgaSA8IFZDNF9CT19UWVBFX0NPVU5UOyBpKyspCisJCXZjNC0+Ym9fbGFiZWxzW2ldLm5hbWUg PSBib190eXBlX25hbWVzW2ldOwogCiAJbXV0ZXhfaW5pdCgmdmM0LT5ib19sb2NrKTsKIApAQCAt NjYzLDE5ICs3NjYsNjYgQEAgdm9pZCB2YzRfYm9fY2FjaGVfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCXNldHVwX3RpbWVyKCZ2YzQtPmJvX2NhY2hlLnRpbWVfdGltZXIsCiAJCSAgICB2 YzRfYm9fY2FjaGVfdGltZV90aW1lciwKIAkJICAgICh1bnNpZ25lZCBsb25nKWRldik7CisKKwly ZXR1cm4gMDsKIH0KIAogdm9pZCB2YzRfYm9fY2FjaGVfZGVzdHJveShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogewogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CisJaW50 IGk7CiAKIAlkZWxfdGltZXIoJnZjNC0+Ym9fY2FjaGUudGltZV90aW1lcik7CiAJY2FuY2VsX3dv cmtfc3luYygmdmM0LT5ib19jYWNoZS50aW1lX3dvcmspOwogCiAJdmM0X2JvX2NhY2hlX3B1cmdl KGRldik7CiAKLQlpZiAodmM0LT5ib19zdGF0cy5udW1fYWxsb2NhdGVkKSB7Ci0JCURSTV9FUlJP UigiRGVzdHJveWluZyBCTyBjYWNoZSB3aGlsZSBCT3Mgc3RpbGwgYWxsb2NhdGVkOlxuIik7Ci0J CXZjNF9ib19zdGF0c19kdW1wKHZjNCk7CisJZm9yIChpID0gMDsgaSA8IHZjNC0+bnVtX2xhYmVs czsgaSsrKSB7CisJCWlmICh2YzQtPmJvX2xhYmVsc1tpXS5udW1fYWxsb2NhdGVkKSB7CisJCQlE Uk1fRVJST1IoIkRlc3Ryb3lpbmcgQk8gY2FjaGUgd2l0aCAlZCAlcyAiCisJCQkJICAiQk9zIHN0 aWxsIGFsbG9jYXRlZFxuIiwKKwkJCQkgIHZjNC0+Ym9fbGFiZWxzW2ldLm51bV9hbGxvY2F0ZWQs CisJCQkJICB2YzQtPmJvX2xhYmVsc1tpXS5uYW1lKTsKKwkJfQorCisJCWlmIChpc191c2VyX2xh YmVsKGkpKQorCQkJa2ZyZWUodmM0LT5ib19sYWJlbHNbaV0ubmFtZSk7CiAJfQorCWtmcmVlKHZj NC0+Ym9fbGFiZWxzKTsKK30KKworaW50IHZjNF9sYWJlbF9ib19pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpCit7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKKwlzdHJ1Y3Qg ZHJtX3ZjNF9sYWJlbF9ibyAqYXJncyA9IGRhdGE7CisJY2hhciAqbmFtZTsKKwlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbV9vYmo7CisJaW50IHJldCA9IDAsIGxhYmVsOworCisJaWYgKCFhcmdz LT5sZW4pCisJCXJldHVybiAtRUlOVkFMOworCisJbmFtZSA9IHN0cm5kdXBfdXNlcih1NjRfdG9f dXNlcl9wdHIoYXJncy0+bmFtZSksIGFyZ3MtPmxlbiArIDEpOworCWlmIChJU19FUlIobmFtZSkp CisJCXJldHVybiBQVFJfRVJSKG5hbWUpOworCisJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xv b2t1cChmaWxlX3ByaXYsIGFyZ3MtPmhhbmRsZSk7CisJaWYgKCFnZW1fb2JqKSB7CisJCURSTV9F UlJPUigiRmFpbGVkIHRvIGxvb2sgdXAgR0VNIEJPICVkXG4iLCBhcmdzLT5oYW5kbGUpOworCQlr ZnJlZShuYW1lKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJbXV0ZXhfbG9jaygmdmM0LT5i b19sb2NrKTsKKwlsYWJlbCA9IHZjNF9nZXRfdXNlcl9sYWJlbCh2YzQsIG5hbWUpOworCWlmIChs YWJlbCAhPSAtMSkKKwkJdmM0X2JvX3NldF9sYWJlbChnZW1fb2JqLCBsYWJlbCk7CisJZWxzZQor CQlyZXQgPSAtRU5PTUVNOworCW11dGV4X3VubG9jaygmdmM0LT5ib19sb2NrKTsKKworCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdlbV9vYmopOworCisJcmV0dXJuIHJldDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHJ2LmMKaW5kZXggYzZiNDg3YzNkMmI3Li43NWMxZjUwYTdiNWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2Rydi5jCkBAIC0xNDAsNiArMTQwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1faW9jdGxfZGVzYyB2YzRfZHJtX2lvY3Rsc1tdID0gewogCURSTV9JT0NUTF9ERUZfRFJW KFZDNF9HRVRfUEFSQU0sIHZjNF9nZXRfcGFyYW1faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAog CURSTV9JT0NUTF9ERUZfRFJWKFZDNF9TRVRfVElMSU5HLCB2YzRfc2V0X3RpbGluZ19pb2N0bCwg RFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoVkM0X0dFVF9USUxJTkcsIHZj NF9nZXRfdGlsaW5nX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RS VihWQzRfTEFCRUxfQk8sIHZjNF9sYWJlbF9ib19pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiB9 OwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgdmM0X2RybV9kcml2ZXIgPSB7CkBAIC0yNTcs NyArMjU4LDkgQEAgc3RhdGljIGludCB2YzRfZHJtX2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQog CXZjNC0+ZGV2ID0gZHJtOwogCWRybS0+ZGV2X3ByaXZhdGUgPSB2YzQ7CiAKLQl2YzRfYm9fY2Fj aGVfaW5pdChkcm0pOworCXJldCA9IHZjNF9ib19jYWNoZV9pbml0KGRybSk7CisJaWYgKHJldCkK KwkJZ290byBkZXZfdW5yZWY7CiAKIAlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwogCkBAIC0y ODEsOCArMjg0LDkgQEAgc3RhdGljIGludCB2YzRfZHJtX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 KQogCWNvbXBvbmVudF91bmJpbmRfYWxsKGRldiwgZHJtKTsKIGdlbV9kZXN0cm95OgogCXZjNF9n ZW1fZGVzdHJveShkcm0pOwotCWRybV9kZXZfdW5yZWYoZHJtKTsKIAl2YzRfYm9fY2FjaGVfZGVz dHJveShkcm0pOworZGV2X3VucmVmOgorCWRybV9kZXZfdW5yZWYoZHJtKTsKIAlyZXR1cm4gcmV0 OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCmluZGV4IDEwNDc5NTMyMTZhOC4uODdmMmQ4ZTVjMTM0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kcnYuaApAQCAtMTEsNiArMTEsMjQgQEAKICNpbmNsdWRlIDxkcm0v ZHJtX2VuY29kZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CiAKKy8q IERvbid0IGZvcmdldCB0byB1cGRhdGUgdmM0X2JvLmM6IGJvX3R5cGVfbmFtZXNbXSB3aGVuIGFk ZGluZyB0bworICogdGhpcy4KKyAqLworZW51bSB2YzRfa2VybmVsX2JvX3R5cGUgeworCS8qIEFu eSBrZXJuZWwgYWxsb2NhdGlvbiAoZ2VtX2NyZWF0ZV9vYmplY3QgaG9vaykgYmVmb3JlIGl0CisJ ICogZ2V0cyBhbm90aGVyIHR5cGUgc2V0LgorCSAqLworCVZDNF9CT19UWVBFX0tFUk5FTCwKKwlW QzRfQk9fVFlQRV9WM0QsCisJVkM0X0JPX1RZUEVfVjNEX1NIQURFUiwKKwlWQzRfQk9fVFlQRV9E VU1CLAorCVZDNF9CT19UWVBFX0JJTiwKKwlWQzRfQk9fVFlQRV9SQ0wsCisJVkM0X0JPX1RZUEVf QkNMLAorCVZDNF9CT19UWVBFX0tFUk5FTF9DQUNIRSwKKwlWQzRfQk9fVFlQRV9DT1VOVAorfTsK Kwogc3RydWN0IHZjNF9kZXYgewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAKQEAgLTQ2LDE0 ICs2NCwxNCBAQCBzdHJ1Y3QgdmM0X2RldiB7CiAJCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVfdGlt ZXI7CiAJfSBib19jYWNoZTsKIAotCXN0cnVjdCB2YzRfYm9fc3RhdHMgeworCXUzMiBudW1fbGFi ZWxzOworCXN0cnVjdCB2YzRfbGFiZWwgeworCQljb25zdCBjaGFyICpuYW1lOwogCQl1MzIgbnVt X2FsbG9jYXRlZDsKIAkJdTMyIHNpemVfYWxsb2NhdGVkOwotCQl1MzIgbnVtX2NhY2hlZDsKLQkJ dTMyIHNpemVfY2FjaGVkOwotCX0gYm9fc3RhdHM7CisJfSAqYm9fbGFiZWxzOwogCi0JLyogUHJv dGVjdHMgYm9fY2FjaGUgYW5kIHRoZSBCTyBzdGF0cy4gKi8KKwkvKiBQcm90ZWN0cyBib19jYWNo ZSBhbmQgYm9fbGFiZWxzLiAqLwogCXN0cnVjdCBtdXRleCBib19sb2NrOwogCiAJdWludDY0X3Qg ZG1hX2ZlbmNlX2NvbnRleHQ7CkBAIC0xNjksNiArMTg3LDExIEBAIHN0cnVjdCB2YzRfYm8gewog CS8qIG5vcm1hbGx5IChyZXN2ID09ICZfcmVzdikgZXhjZXB0IGZvciBpbXBvcnRlZCBibydzICov CiAJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKIAlzdHJ1Y3QgcmVzZXJ2YXRpb25f b2JqZWN0IF9yZXN2OworCisJLyogT25lIG9mIGVudW0gdmM0X2tlcm5lbF9ib190eXBlLCBvciBW QzRfQk9fVFlQRV9DT1VOVCArIGkKKwkgKiBmb3IgdXNlci1hbGxvY2F0ZWQgbGFiZWxzLgorCSAq LworCWludCBsYWJlbDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjNF9ibyAqCkBAIC00 NjAsNyArNDgzLDcgQEAgc3RydWN0IHZjNF92YWxpZGF0ZWRfc2hhZGVyX2luZm8gewogc3RydWN0 IGRybV9nZW1fb2JqZWN0ICp2YzRfY3JlYXRlX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzaXplX3Qgc2l6ZSk7CiB2b2lkIHZjNF9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbV9vYmopOwogc3RydWN0IHZjNF9ibyAqdmM0X2JvX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKLQkJCSAgICAgYm9vbCBmcm9tX2NhY2hlKTsKKwkJCSAg ICAgYm9vbCBmcm9tX2NhY2hlLCBlbnVtIHZjNF9rZXJuZWxfYm9fdHlwZSB0eXBlKTsKIGludCB2 YzRfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCSAgICBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdz KTsKQEAgLTQ3OCw2ICs1MDEsOCBAQCBpbnQgdmM0X2dldF90aWxpbmdfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dik7CiBpbnQgdmM0X2dldF9oYW5nX3N0YXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2ludCB2 YzRfbGFiZWxfYm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJ ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCB2YzRfbW1hcChzdHJ1Y3Qg ZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogc3RydWN0IHJlc2VydmF0 aW9uX29iamVjdCAqdmM0X3ByaW1lX3Jlc19vYmooc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop OwogaW50IHZjNF9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CkBAIC00ODUsNyArNTEwLDcgQEAgc3RydWN0IGRybV9nZW1f b2JqZWN0ICp2YzRfcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQkJCQkgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAogCQkJCQkJIHN0cnVj dCBzZ190YWJsZSAqc2d0KTsKIHZvaWQgKnZjNF9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKTsKLXZvaWQgdmM0X2JvX2NhY2hlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CitpbnQgdmM0X2JvX2NhY2hlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lk IHZjNF9ib19jYWNoZV9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IHZjNF9i b19zdGF0c19kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9nZW0uYwppbmRleCA1OTVmOTNmNTc4MjEuLjIwOWZjY2QwZDNiNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfZ2VtLmMKQEAgLTc3NCw3ICs3NzQsNyBAQCB2YzRfZ2V0X2JjbChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYykKIAkJZ290byBmYWlsOwogCX0KIAot CWJvID0gdmM0X2JvX2NyZWF0ZShkZXYsIGV4ZWNfc2l6ZSwgdHJ1ZSk7CisJYm8gPSB2YzRfYm9f Y3JlYXRlKGRldiwgZXhlY19zaXplLCB0cnVlLCBWQzRfQk9fVFlQRV9CQ0wpOwogCWlmIChJU19F UlIoYm8pKSB7CiAJCURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgQk8gZm9yIGJpbm5pbmdc biIpOwogCQlyZXQgPSBQVFJfRVJSKGJvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X3JlbmRlcl9jbC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcmVuZGVyX2NsLmMK aW5kZXggNWRjMTk0MjlkNGFlLi40YTgwNTE1MzJmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X3JlbmRlcl9jbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3Jl bmRlcl9jbC5jCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIGludCB2YzRfY3JlYXRlX3JjbF9i byhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKIAog CXNpemUgKz0geHRpbGVzICogeXRpbGVzICogbG9vcF9ib2R5X3NpemU7CiAKLQlzZXR1cC0+cmNs ID0gJnZjNF9ib19jcmVhdGUoZGV2LCBzaXplLCB0cnVlKS0+YmFzZTsKKwlzZXR1cC0+cmNsID0g JnZjNF9ib19jcmVhdGUoZGV2LCBzaXplLCB0cnVlLCBWQzRfQk9fVFlQRV9SQ0wpLT5iYXNlOwog CWlmIChJU19FUlIoc2V0dXAtPnJjbCkpCiAJCXJldHVybiBQVFJfRVJSKHNldHVwLT5yY2wpOwog CWxpc3RfYWRkX3RhaWwoJnRvX3ZjNF9ibygmc2V0dXAtPnJjbC0+YmFzZSktPnVucmVmX2hlYWQs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92M2QuYyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X3YzZC5jCmluZGV4IDhjNzIzZGE3MWY2Ni4uNjIyY2Q0Mzg0MGI4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92M2QuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF92M2QuYwpAQCAtMjM2LDcgKzIzNiw4IEBAIHZjNF9hbGxvY2F0ZV9iaW5fYm8o c3RydWN0IGRybV9kZXZpY2UgKmRybSkKIAlJTklUX0xJU1RfSEVBRCgmbGlzdCk7CiAKIAl3aGls ZSAodHJ1ZSkgewotCQlzdHJ1Y3QgdmM0X2JvICpibyA9IHZjNF9ib19jcmVhdGUoZHJtLCBzaXpl LCB0cnVlKTsKKwkJc3RydWN0IHZjNF9ibyAqYm8gPSB2YzRfYm9fY3JlYXRlKGRybSwgc2l6ZSwg dHJ1ZSwKKwkJCQkJCSAgVkM0X0JPX1RZUEVfQklOKTsKIAogCQlpZiAoSVNfRVJSKGJvKSkgewog CQkJcmV0ID0gUFRSX0VSUihibyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL3ZjNF9k cm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vdmM0X2RybS5oCmluZGV4IDZhYzRjNWMwMTRjYi4uNTUx NjI4ZTU3MWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL3ZjNF9kcm0uaAorKysgYi9p bmNsdWRlL3VhcGkvZHJtL3ZjNF9kcm0uaApAQCAtNDAsNiArNDAsNyBAQCBleHRlcm4gIkMiIHsK ICNkZWZpbmUgRFJNX1ZDNF9HRVRfUEFSQU0gICAgICAgICAgICAgICAgICAgICAgICAgMHgwNwog I2RlZmluZSBEUk1fVkM0X1NFVF9USUxJTkcgICAgICAgICAgICAgICAgICAgICAgICAweDA4CiAj ZGVmaW5lIERSTV9WQzRfR0VUX1RJTElORyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkKKyNk ZWZpbmUgRFJNX1ZDNF9MQUJFTF9CTyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwYQogCiAj ZGVmaW5lIERSTV9JT0NUTF9WQzRfU1VCTUlUX0NMICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX1ZDNF9TVUJNSVRfQ0wsIHN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9jbCkK ICNkZWZpbmUgRFJNX0lPQ1RMX1ZDNF9XQUlUX1NFUU5PICAgICAgICAgIERSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fVkM0X1dBSVRfU0VRTk8sIHN0cnVjdCBkcm1fdmM0X3dhaXRfc2Vx bm8pCkBAIC01MSw2ICs1Miw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fSU9DVExfVkM0 X0dFVF9QQVJBTSAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WQzRf R0VUX1BBUkFNLCBzdHJ1Y3QgZHJtX3ZjNF9nZXRfcGFyYW0pCiAjZGVmaW5lIERSTV9JT0NUTF9W QzRfU0VUX1RJTElORyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZD NF9TRVRfVElMSU5HLCBzdHJ1Y3QgZHJtX3ZjNF9zZXRfdGlsaW5nKQogI2RlZmluZSBEUk1fSU9D VExfVkM0X0dFVF9USUxJTkcgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9WQzRfR0VUX1RJTElORywgc3RydWN0IGRybV92YzRfZ2V0X3RpbGluZykKKyNkZWZpbmUgRFJN X0lPQ1RMX1ZDNF9MQUJFTF9CTyAgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fVkM0X0xBQkVMX0JPLCBzdHJ1Y3QgZHJtX3ZjNF9sYWJlbF9ibykKIAogc3RydWN0IGRy bV92YzRfc3VibWl0X3JjbF9zdXJmYWNlIHsKIAlfX3UzMiBoaW5kZXg7IC8qIEhhbmRsZSBpbmRl eCwgb3IgfjAgaWYgbm90IHByZXNlbnQuICovCkBAIC0zMTEsNiArMzEzLDE1IEBAIHN0cnVjdCBk cm1fdmM0X3NldF90aWxpbmcgewogCV9fdTY0IG1vZGlmaWVyOwogfTsKIAorLyoqCisgKiBzdHJ1 Y3QgZHJtX3ZjNF9sYWJlbF9ibyAtIEF0dGFjaCBhIG5hbWUgdG8gYSBCTyBmb3IgZGVidWcgcHVy cG9zZXMuCisgKi8KK3N0cnVjdCBkcm1fdmM0X2xhYmVsX2JvIHsKKwlfX3UzMiBoYW5kbGU7CisJ X191MzIgbGVuOworCV9fdTY0IG5hbWU7Cit9OworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykK IH0KICNlbmRpZgotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK