From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 16/29] drm/i915: gvt: Generic MPT framework Date: Thu, 28 Jan 2016 18:21:38 +0800 Message-ID: <1453976511-27322-17-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 274DE6E7FB for ; Thu, 28 Jan 2016 02:24:49 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org R1ZULWcgc3VwcG9ydHMgYm90aCBYZW4vS1ZNIGh5cGVydmlzb3JzIGFuZCByZXF1aXJlcyBhIGNv dXBsZSBvZiBoeXBlcnZpc29yCnNlcnZpY2VzIHRvIHdvcmsuIFRoZSBNUFQgZnJhbWV3b3JrIGlz IGEga2luZHMgb2YgYWJzdHJhY3Rpb24gd2hpY2ggcHJvdmlkZXMKYSB1bmlxdWUgaHlwZXJ2aXNv ciBBUElzIHRvIEdWVC1nIGNvcmUgbG9naWNzLgoKU2lnbmVkLW9mZi1ieTogWmhpIFdhbmcgPHpo aS5hLndhbmdAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYyAg ICAgICB8ICAgNiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgIHwgIDEx ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggfCAgMjYgKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmMgICAgICB8IDE5NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW8uaCAgICAg IHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaCAgICAgICB8IDEwMyArKysr KysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGVyZi5oICAgICAgfCAg IDQgKwogNyBmaWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCmluZGV4IDEzZmVjZGYuLmE3MTg3M2MgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmMKQEAgLTMxLDYgKzMxLDExIEBAIHN0cnVjdCBndnRfaG9zdCBndnRfaG9zdDsK IGV4dGVybiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9kbSB4ZW5ndF9rZG07CiBleHRlcm4gc3RydWN0IGd2 dF9rZXJuZWxfZG0ga3ZtZ3Rfa2RtOwogCitzdGF0aWMgc3RydWN0IGd2dF9pb19lbXVsYXRpb25f b3BzIGRlZmF1bHRfaW9fZW11bGF0aW9uX29wcyA9IHsKKwkuZW11bGF0ZV9tbWlvX3JlYWQgPSBn dnRfZW11bGF0ZV9tbWlvX3JlYWQsCisJLmVtdWxhdGVfbW1pb193cml0ZSA9IGd2dF9lbXVsYXRl X21taW9fd3JpdGUsCit9OworCiBzdGF0aWMgY29uc3QgY2hhciAqc3VwcG9ydGVkX2h5cGVydmlz b3JzW10gPSB7CiAJW0dWVF9IWVBFUlZJU09SX1RZUEVfWEVOXSA9ICJYZW4gSHlwZXJ2aXNvciIs CiAJW0dWVF9IWVBFUlZJU09SX1RZUEVfS1ZNXSA9ICJLVk0iLApAQCAtNzIsNiArNzcsNyBAQCBz dGF0aWMgYm9vbCBndnRfaW5pdF9ob3N0KHZvaWQpCiAJZ3Z0X2luZm8oIlJ1bm5pbmcgd2l0aCBo eXBlcnZpc29yICVzIGluIGhvc3QgbW9kZSIsCiAJCQlzdXBwb3J0ZWRfaHlwZXJ2aXNvcnNbaG9z dC0+aHlwZXJ2aXNvcl90eXBlXSk7CiAKKwlob3N0LT5lbXVsYXRlX29wcyA9ICZkZWZhdWx0X2lv X2VtdWxhdGlvbl9vcHM7CiAJaWRyX2luaXQoJmhvc3QtPmRldmljZV9pZHIpOwogCW11dGV4X2lu aXQoJmhvc3QtPmRldmljZV9pZHJfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAppbmRleCA1 NDJmM2U2Li5lYjVmZDQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC0zMSw3ICszMSw2IEBA CiAjaW5jbHVkZSAicGFyYW1zLmgiCiAjaW5jbHVkZSAicmVnLmgiCiAjaW5jbHVkZSAiaHlwZXJj YWxsLmgiCi0jaW5jbHVkZSAibXB0LmgiCiAjaW5jbHVkZSAiZmJfZGVjb2Rlci5oIgogI2luY2x1 ZGUgIm1taW8uaCIKICNpbmNsdWRlICJpbnRlcnJ1cHQuaCIKQEAgLTUyLDEyICs1MSwyMCBAQCBl bnVtIHsKIAlHVlRfSFlQRVJWSVNPUl9UWVBFX0tWTSwKIH07CiAKK3N0cnVjdCBndnRfaW9fZW11 bGF0aW9uX29wcyB7CisJYm9vbCAoKmVtdWxhdGVfbW1pb19yZWFkKShzdHJ1Y3Qgdmd0X2Rldmlj ZSAqLCB1aW50NjRfdCwgdm9pZCAqLCBpbnQpOworCWJvb2wgKCplbXVsYXRlX21taW9fd3JpdGUp KHN0cnVjdCB2Z3RfZGV2aWNlICosIHVpbnQ2NF90LCB2b2lkICosIGludCk7CisJYm9vbCAoKmVt dWxhdGVfY2ZnX3JlYWQpKHN0cnVjdCB2Z3RfZGV2aWNlICosIHVuc2lnbmVkIGludCwgdm9pZCAq LCBpbnQpOworCWJvb2wgKCplbXVsYXRlX2NmZ193cml0ZSkoc3RydWN0IHZndF9kZXZpY2UgKiwg dW5zaWduZWQgaW50LCB2b2lkICosIGludCk7Cit9OworCiBzdHJ1Y3QgZ3Z0X2hvc3QgewogCWJv b2wgaW5pdGlhbGl6ZWQ7CiAJaW50IGh5cGVydmlzb3JfdHlwZTsKIAlzdHJ1Y3QgbXV0ZXggZGV2 aWNlX2lkcl9sb2NrOwogCXN0cnVjdCBpZHIgZGV2aWNlX2lkcjsKIAlzdHJ1Y3QgZ3Z0X2tlcm5l bF9kbSAqa2RtOworCXN0cnVjdCBndnRfaW9fZW11bGF0aW9uX29wcyAqZW11bGF0ZV9vcHM7CiB9 OwogCiBleHRlcm4gc3RydWN0IGd2dF9ob3N0IGd2dF9ob3N0OwpAQCAtNTc5LDQgKzU4Niw2IEBA IHN0YXRpYyBpbmxpbmUgdTMyIGgyZ19ndHRfaW5kZXgoc3RydWN0IHZndF9kZXZpY2UgKnZndCwg dWludDMyX3QgaF9pbmRleCkKIAlyZXR1cm4gKHUzMikoaDJnX2dtKHZndCwgaF9hZGRyKSA+PiBH VFRfUEFHRV9TSElGVCk7CiB9CiAKKyNpbmNsdWRlICJtcHQuaCIKKwogI2VuZGlmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKaW5kZXggMGE0MTg3NC4uZDMwZjVhNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaApAQCAtMjQsNyArMjQsMzMgQEAKICNpZm5kZWYgX0dW VF9IWVBFUkNBTExfSF8KICNkZWZpbmUgX0dWVF9IWVBFUkNBTExfSF8KIAorc3RydWN0IHZndF9k ZXZpY2U7CitzdHJ1Y3QgZ3Vlc3RfcGFnZTsKKworZW51bSBtYXBfdHlwZSB7CisgICAgICAgIEdW VF9NQVBfQVBFUlRVUkUsCisgICAgICAgIEdWVF9NQVBfT1BSRUdJT04sCit9OworCiBzdHJ1Y3Qg Z3Z0X2tlcm5lbF9kbSB7CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgICAgIHVuc2ln bmVkIGxvbmcgKCpnMm1fcGZuKShpbnQgdm1faWQsIHVuc2lnbmVkIGxvbmcgZ19wZm4pOworICAg ICAgICBpbnQgKCpwYXVzZV9kb21haW4pKGludCB2bV9pZCk7CisgICAgICAgIGludCAoKnNodXRk b3duX2RvbWFpbikoaW50IHZtX2lkKTsKKyAgICAgICAgaW50ICgqbWFwX21mbl90b19ncGZuKShp bnQgdm1faWQsIHVuc2lnbmVkIGxvbmcgZ3BmbiwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIG1mbiwgaW50IG5yLCBpbnQgbWFwLCBlbnVtIG1hcF90eXBlIHR5cGUpOworICAgICAgICBp bnQgKCpzZXRfdHJhcF9hcmVhKShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCB1aW50NjRfdCBzdGFy dCwgdWludDY0X3QgZW5kLCBib29sIG1hcCk7CisgICAgICAgIGJvb2wgKCpzZXRfd3BfcGFnZXMp KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHN0cnVjdCBndWVzdF9wYWdlICpwKTsKKyAgICAgICAg Ym9vbCAoKnVuc2V0X3dwX3BhZ2VzKShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCBzdHJ1Y3QgZ3Vl c3RfcGFnZSAqcCk7CisgICAgICAgIGludCAoKmRldGVjdF9ob3N0KSh2b2lkKTsKKyAgICAgICAg aW50ICgqZnJvbV92aXJ0X3RvX21mbikodm9pZCAqYWRkcik7CisgICAgICAgIHZvaWQgKigqZnJv bV9tZm5fdG9fdmlydCkoaW50IG1mbik7CisgICAgICAgIGludCAoKmluamVjdF9tc2kpKGludCB2 bV9pZCwgdTMyIGFkZHIsIHUxNiBkYXRhKTsKKyAgICAgICAgaW50ICgqaHZtX2luaXQpKHN0cnVj dCB2Z3RfZGV2aWNlICp2Z3QpOworICAgICAgICB2b2lkICgqaHZtX2V4aXQpKHN0cnVjdCB2Z3Rf ZGV2aWNlICp2Z3QpOworICAgICAgICB2b2lkICooKmdwYV90b192YSkoc3RydWN0IHZndF9kZXZp Y2UgKnZndCwgdW5zaWduZWQgbG9uZyBnYXApOworICAgICAgICBib29sICgqcmVhZF92YSkoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwgdm9pZCAqdmEsIHZvaWQgKnZhbCwgaW50IGxlbiwgaW50IGF0 b21pYyk7CisgICAgICAgIGJvb2wgKCp3cml0ZV92YSkoc3RydWN0IHZndF9kZXZpY2UgKnZndCwg dm9pZCAqdmEsIHZvaWQgKnZhbCwgaW50IGxlbiwgaW50IGF0b21pYyk7CiB9OwogCiAjZW5kaWYg LyogX0dWVF9IWVBFUkNBTExfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9tbWlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5jCmluZGV4IDI4ZTEz OTMuLjMyOTdkODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW8uYwpAQCAtMzIwLDMgKzMyMCwxOTcg QEAgdm9pZCBndnRfaW5pdF9zaGFkb3dfbW1pb19yZWdpc3RlcihzdHJ1Y3Qgdmd0X2RldmljZSAq dmd0KQogCXN0cnVjdCBndnRfdmlydHVhbF9kZXZpY2Vfc3RhdGUgKnN0YXRlID0gJnZndC0+c3Rh dGU7CiAgICAgICAgIG1lbWNweSAoc3RhdGUtPm1taW8uc3JlZywgdmd0LT5wZGV2LT5pbml0aWFs X21taW9fc3RhdGUsIHZndC0+cGRldi0+bW1pb19zaXplKTsKIH0KKwordW5zaWduZWQgaW50IHBh X3RvX21taW9fb2Zmc2V0KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsCisgICAgICAgICAgICAgICB1 aW50NjRfdCBwYSkKK3sKKyNkZWZpbmUgUENJX0JBUl9BRERSX01BU0sgKH4weEZVTCkgIC8qIDQg TFNCIGJpdHMgYXJlIG5vdCBhZGRyZXNzICovCisgICAgICAgcmV0dXJuIHBhIC0gKCgqKHU2NCop KHZndC0+c3RhdGUuY2ZnLnNwYWNlICsgR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMCkpCisgICAgICAg ICAgICAgICAgICAgICAgICYgUENJX0JBUl9BRERSX01BU0spOworfQorCitzdGF0aWMgaW5saW5l IGJvb2wgdmFsaWRfbW1pb19hbGlnbm1lbnQoc3RydWN0IGd2dF9tbWlvX2VudHJ5ICplLAorICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCwgaW50IGJ5dGVzKQoreworICAgICAgIGlm ICgoYnl0ZXMgPj0gZS0+YWxpZ25fYnl0ZXMpICYmICEob2Zmc2V0ICYgKGJ5dGVzIC0gMSkpKQor ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgZ3Z0X2VycigiaW52YWxpZCBNTUlP IG9mZnNldCAlMDh4IGxlbiAlZCIsIG9mZnNldCwgYnl0ZXMpOworICAgICAgIHJldHVybiBmYWxz ZTsKK30KKworYm9vbCBndnRfZGVmYXVsdF9tbWlvX3JlYWQoc3RydWN0IHZndF9kZXZpY2UgKnZn dCwgdW5zaWduZWQgaW50IG9mZnNldCwKKyAgICAgICAgICAgICAgIHZvaWQgKnBfZGF0YSwgdW5z aWduZWQgaW50IGJ5dGVzKQoreworICAgICAgIG1lbWNweShwX2RhdGEsIChjaGFyICopdmd0LT5z dGF0ZS5tbWlvLnZyZWcgKyBvZmZzZXQsIGJ5dGVzKTsKKyAgICAgICByZXR1cm4gdHJ1ZTsKK30K KworYm9vbCBndnRfZGVmYXVsdF9tbWlvX3dyaXRlKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHVu c2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICB2b2lkICpwX2RhdGEsIHVuc2lnbmVk IGludCBieXRlcykKK3sKKyAgICAgICBtZW1jcHkoKGNoYXIgKil2Z3QtPnN0YXRlLm1taW8udnJl ZyArIG9mZnNldCwgcF9kYXRhLCBieXRlcyk7CisgICAgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv b2wgZ3Z0X2VtdWxhdGVfbW1pb19yZWFkKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHVpbnQ2NF90 IHBhLCB2b2lkICpwX2RhdGEsaW50IGJ5dGVzKQoreworICAgICAgIHN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2ID0gdmd0LT5wZGV2OworICAgICAgIHN0cnVjdCBndnRfc3RhdGlzdGljcyAqc3RhdCA9 ICZ2Z3QtPnN0YXQ7CisgICAgICAgc3RydWN0IGd2dF9tbWlvX2VudHJ5ICptbWlvX2VudHJ5Owor ICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgICAgICAgY3ljbGVzX3QgdDAsIHQxOworICAg ICAgIGJvb2wgcjsKKworICAgICAgIHQwID0gZ2V0X2N5Y2xlcygpOworCisgICAgICAgbXV0ZXhf bG9jaygmcGRldi0+bG9jayk7CisKKyAgICAgICBpZiAoYXRvbWljX3JlYWQoJnZndC0+Z3R0Lm5f d3JpdGVfcHJvdGVjdGVkX2d1ZXN0X3BhZ2UpKSB7CisgICAgICAgICAgICAgICBndWVzdF9wYWdl X3QgKmdwOworICAgICAgICAgICAgICAgZ3AgPSBndnRfZmluZF9ndWVzdF9wYWdlKHZndCwgcGEg Pj4gUEFHRV9TSElGVCk7CisgICAgICAgICAgICAgICBpZiAoZ3ApIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgbWVtY3B5KHBfZGF0YSwgZ3AtPnZhZGRyICsgKHBhICYgflBBR0VfTUFTSyksIGJ5 dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZwZGV2LT5sb2NrKTsK KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICB9Cisg ICAgICAgfQorCisgICAgICAgb2Zmc2V0ID0gcGFfdG9fbW1pb19vZmZzZXQodmd0LCBwYSk7CisK KyAgICAgICBpZiAoYnl0ZXMgPiA4IHx8IChvZmZzZXQgJiAoYnl0ZXMgLSAxKSkpCisgICAgICAg ICAgICAgICBnb3RvIGVycjsKKworICAgICAgIGlmIChyZWdfaXNfZ3R0KHBkZXYsIG9mZnNldCkp IHsKKyAgICAgICAgICAgICAgIHIgPSBndHRfZW11bGF0ZV9yZWFkKHZndCwgb2Zmc2V0LCBwX2Rh dGEsIGJ5dGVzKTsKKyAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcGRldi0+bG9jayk7Cisg ICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICB9CisKKyAgICAgICBpZiAoIXJlZ19pc19t bWlvKHBkZXYsIG9mZnNldCArIGJ5dGVzKSkKKyAgICAgICAgICAgICAgIGdvdG8gZXJyOworCisg ICAgICAgbW1pb19lbnRyeSA9IGZpbmRfbW1pb19lbnRyeShwZGV2LCBvZmZzZXQpOworICAgICAg IGlmIChtbWlvX2VudHJ5ICYmIG1taW9fZW50cnktPnJlYWQpIHsKKyAgICAgICAgICAgICAgIGlm ICghdmFsaWRfbW1pb19hbGlnbm1lbnQobW1pb19lbnRyeSwgb2Zmc2V0LCBieXRlcykpCisgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgICAgaWYgKCFtbWlvX2Vu dHJ5LT5yZWFkKHZndCwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgZ290byBlcnI7CisgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICBpZiAoIWd2dF9k ZWZhdWx0X21taW9fcmVhZCh2Z3QsIG9mZnNldCwgcF9kYXRhLCBieXRlcykpCisgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZXJyOworCisgICAgICAgaWYgKCFyZWdfaXNfdHJhY2tlZChwZGV2 LCBvZmZzZXQpICYmIHZndC0+d2Fybl91bnRyYWNrKSB7CisgICAgICAgICAgICAgICBndnRfd2Fy bigiWyB2Z3QlZCBdIHVudHJhY2tlZCBNTUlPIHJlYWQsIG9mZnNldCAleCBsZW4gJWQgdmFsIDB4 JXgiLAorICAgICAgICAgICAgICAgICAgICAgICB2Z3QtPnZtX2lkLCBvZmZzZXQsIGJ5dGVzLCAq KHUzMiAqKXBfZGF0YSk7CisKKyAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMHgyMDZjKSB7 CisgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJW TSglZCkgbGlrZWx5IHRyaWdnZXJzIGEgZ2Z4IHJlc2V0XG4iLCB2Z3QtPnZtX2lkKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRrKCJEaXNhYmxlIHVudHJhY2tlZCBNTUlPIHdhcm5pbmcg Zm9yIFZNKCVkKVxuIiwgdmd0LT52bV9pZCk7CisgICAgICAgICAgICAgICAgICAgICAgIHByaW50 aygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgdmd0LT53YXJuX3VudHJhY2sgPSAwOworICAgICAgICAgICAgICAg fQorICAgICAgIH0KKworICAgICAgIHJlZ19zZXRfYWNjZXNzZWQocGRldiwgb2Zmc2V0KTsKKyAg ICAgICBtdXRleF91bmxvY2soJnBkZXYtPmxvY2spOworCisgICAgICAgdDEgPSBnZXRfY3ljbGVz KCk7CisgICAgICAgc3RhdC0+bW1pb19yY250Kys7CisgICAgICAgc3RhdC0+bW1pb19yY3ljbGVz ICs9IHQxIC0gdDA7CisgICAgICAgcmV0dXJuIHRydWU7CitlcnI6CisgICAgICAgZ3Z0X2Vycigi WyB2Z3QlZCBdIGZhaWwgdG8gZW11bGF0ZSBNTUlPIHJlYWQsIG9mZnNldCAlMDh4IGxlbiAlZCIs CisgICAgICAgICAgICAgICAgICAgICAgIHZndC0+aWQsIG9mZnNldCwgYnl0ZXMpOworICAgICAg IG11dGV4X3VubG9jaygmcGRldi0+bG9jayk7CisgICAgICAgcmV0dXJuIGZhbHNlOworfQorCiti b29sIGd2dF9lbXVsYXRlX21taW9fd3JpdGUoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdWludDY0 X3QgcGEsCisgICAgICAgdm9pZCAqcF9kYXRhLCBpbnQgYnl0ZXMpCit7CisgICAgICAgc3RydWN0 IHBndF9kZXZpY2UgKnBkZXYgPSB2Z3QtPnBkZXY7CisgICAgICAgc3RydWN0IGd2dF9tbWlvX2Vu dHJ5ICptbWlvX2VudHJ5OworICAgICAgIHN0cnVjdCBndnRfc3RhdGlzdGljcyAqc3RhdCA9ICZ2 Z3QtPnN0YXQ7CisgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICAgICB1MzIgb2xkX3Zy ZWcgPSAwLCBvbGRfc3JlZyA9IDA7CisgICAgICAgY3ljbGVzX3QgdDAsIHQxOworICAgICAgIGJv b2wgcjsKKworICAgICAgIHQwID0gZ2V0X2N5Y2xlcygpOworCisgICAgICAgbXV0ZXhfbG9jaygm cGRldi0+bG9jayk7CisKKyAgICAgICBpZiAoYXRvbWljX3JlYWQoJnZndC0+Z3R0Lm5fd3JpdGVf cHJvdGVjdGVkX2d1ZXN0X3BhZ2UpKSB7CisgICAgICAgICAgICAgICBndWVzdF9wYWdlX3QgKmd1 ZXN0X3BhZ2U7CisgICAgICAgICAgICAgICBndWVzdF9wYWdlID0gZ3Z0X2ZpbmRfZ3Vlc3RfcGFn ZSh2Z3QsIHBhID4+IFBBR0VfU0hJRlQpOworICAgICAgICAgICAgICAgaWYgKGd1ZXN0X3BhZ2Up IHsKKyAgICAgICAgICAgICAgICAgICAgICAgciA9IGd1ZXN0X3BhZ2UtPmhhbmRsZXIoZ3Vlc3Rf cGFnZSwgcGEsIHBfZGF0YSwgYnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAgICB0MSA9IGdl dF9jeWNsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdC0+d3BfY3ljbGVzICs9IHQx IC0gdDA7CisgICAgICAgICAgICAgICAgICAgICAgIHN0YXQtPndwX2NudCsrOworICAgICAgICAg ICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnBkZXYtPmxvY2spOworICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICB9CisKKyAgICAgICBv ZmZzZXQgPSBwYV90b19tbWlvX29mZnNldCh2Z3QsIHBhKTsKKworICAgICAgIC8qIEZFTkNFIHJl Z2lzdGVycyAvIEdUVCBlbnRyaWVzKHNvbWV0aW1lcykgYXJlIGFjY2Vzc2VkIGluIDggYnl0ZXMu ICovCisgICAgICAgaWYgKGJ5dGVzID4gOCB8fCAob2Zmc2V0ICYgKGJ5dGVzIC0gMSkpKQorICAg ICAgICAgICAgICAgZ290byBlcnI7CisKKyAgICAgICBpZiAocmVnX2lzX2d0dChwZGV2LCBvZmZz ZXQpKSB7CisgICAgICAgICAgICAgICByID0gZ3R0X2VtdWxhdGVfd3JpdGUodmd0LCBvZmZzZXQs IHBfZGF0YSwgYnl0ZXMpOworICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZwZGV2LT5sb2Nr KTsKKyAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgIH0KKworICAgICAgIGlmICghcmVn X2lzX21taW8ocGRldiwgb2Zmc2V0ICsgYnl0ZXMpKQorICAgICAgICAgICAgICAgZ290byBlcnI7 CisKKyAgICAgICBpZiAocmVnX21vZGVfY3RsKHBkZXYsIG9mZnNldCkpIHsKKyAgICAgICAgICAg ICAgIG9sZF92cmVnID0gX192cmVnKHZndCwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgIG9sZF9z cmVnID0gX19zcmVnKHZndCwgb2Zmc2V0KTsKKyAgICAgICB9CisKKyAgICAgICBpZiAoIXJlZ19p c190cmFja2VkKHBkZXYsIG9mZnNldCkgJiYgdmd0LT53YXJuX3VudHJhY2spIHsKKyAgICAgICAg ICAgICAgIGd2dF93YXJuKCJbIHZndCVkIF0gdW50cmFja2VkIE1NSU8gd3JpdGUsIG9mZnNldCAl eCBsZW4gJWQgdmFsIDB4JXgiLAorICAgICAgICAgICAgICAgICAgICAgICB2Z3QtPnZtX2lkLCBv ZmZzZXQsIGJ5dGVzLCAqKHUzMiAqKXBfZGF0YSk7CisgICAgICAgfQorCisgICAgICAgbW1pb19l bnRyeSA9IGZpbmRfbW1pb19lbnRyeShwZGV2LCBvZmZzZXQpOworICAgICAgIGlmIChtbWlvX2Vu dHJ5ICYmIG1taW9fZW50cnktPndyaXRlICkgeworICAgICAgICAgICAgICAgaWYgKCF2YWxpZF9t bWlvX2FsaWdubWVudChtbWlvX2VudHJ5LCBvZmZzZXQsIGJ5dGVzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgICBpZiAoIW1taW9fZW50cnktPndyaXRl KHZndCwgb2Zmc2V0LCBwX2RhdGEsIGJ5dGVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgZ290 byBlcnI7CisgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICBpZiAoIWd2dF9kZWZhdWx0X21t aW9fd3JpdGUodmd0LCBvZmZzZXQsIHBfZGF0YSwgYnl0ZXMpKQorICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycjsKKworICAgICAgIC8qIGhpZ2hlciAxNmJpdHMgb2YgbW9kZSBjdGwgcmVn cyBhcmUgbWFzayBiaXRzIGZvciBjaGFuZ2UgKi8KKyAgICAgICBpZiAocmVnX21vZGVfY3RsKHBk ZXYsIG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgIHUzMiBtYXNrID0gX192cmVnKHZndCwgb2Zm c2V0KSA+PiAxNjsKKyAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgKiBzaGFyZSB0 aGUgZ2xvYmFsIG1hc2sgYW1vbmcgVk1zLCBzaW5jZSBoYXZpbmcgb25lIFZNIHRvdWNoIGEgYml0 CisgICAgICAgICAgICAgICAgKiBub3QgY2hhbmdlZCBieSBhbm90aGVyIFZNIHNob3VsZCBiZSBz dGlsbCBzYXZlZC9yZXN0b3JlZCBsYXRlcgorICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICByZWdfYXV4X21vZGVfbWFzayhwZGV2LCBvZmZzZXQpIHw9IG1hc2sgPDwgMTY7CisgICAg ICAgICAgICAgICBfX3ZyZWcodmd0LCBvZmZzZXQpID0gKG9sZF92cmVnICYgfm1hc2spIHwgKF9f dnJlZyh2Z3QsIG9mZnNldCkgJiBtYXNrKTsKKyAgICAgICAgICAgICAgIF9fc3JlZyh2Z3QsIG9m ZnNldCkgPSAob2xkX3NyZWcgJiB+bWFzaykgfCAoX19zcmVnKHZndCwgb2Zmc2V0KSAmIG1hc2sp OworICAgICAgIH0KKworICAgICAgIHJlZ19zZXRfYWNjZXNzZWQocGRldiwgb2Zmc2V0KTsKKyAg ICAgICBtdXRleF91bmxvY2soJnBkZXYtPmxvY2spOworCisgICAgICAgdDEgPSBnZXRfY3ljbGVz KCk7CisgICAgICAgc3RhdC0+bW1pb193Y3ljbGVzICs9IHQxIC0gdDA7CisgICAgICAgc3RhdC0+ bW1pb193Y250Kys7CisgICAgICAgcmV0dXJuIHRydWU7CitlcnI6CisgICAgICAgZ3Z0X2Vycigi WyB2Z3QlZCBdIGZhaWwgdG8gZW11bGF0ZSBNTUlPIHdyaXRlLCBvZmZzZXQgJTA4eCBsZW4gJWQi LAorICAgICAgICAgICAgICAgICAgICAgICB2Z3QtPmlkLCBvZmZzZXQsIGJ5dGVzKTsKKyAgICAg ICBtdXRleF91bmxvY2soJnBkZXYtPmxvY2spOworICAgICAgIHJldHVybiBmYWxzZTsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvbW1pby5oCmluZGV4IGNhY2E2MGYuLjQzMDE2NTUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L21taW8uaApAQCAtODQsNCArODQsOCBAQCBzdHJ1Y3QgZ3Z0X3JlZ19pbmZvIHsKIGV4dGVy biBzdHJ1Y3QgZ3Z0X3JlZ19pbmZvIGd2dF9nZW5lcmFsX3JlZ19pbmZvW107CiBleHRlcm4gc3Ry dWN0IGd2dF9yZWdfaW5mbyBndnRfYnJvYWR3ZWxsX3JlZ19pbmZvW107CiBleHRlcm4gaW50IGd2 dF9nZXRfcmVnX251bShpbnQgdHlwZSk7CisKK2Jvb2wgZ3Z0X2VtdWxhdGVfbW1pb19yZWFkKHN0 cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHVpbnQ2NF90IHBhLCB2b2lkICpwX2RhdGEsaW50IGJ5dGVz KTsKK2Jvb2wgZ3Z0X2VtdWxhdGVfbW1pb193cml0ZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCB1 aW50NjRfdCBwYSwgdm9pZCAqcF9kYXRhLGludCBieXRlcyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L21wdC5oCmluZGV4IDk5YWNmM2QuLmY4MzdkZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9tcHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbXB0LmgK QEAgLTI0LDg1ICsyNCwxNDYgQEAKICNpZm5kZWYgX0dWVF9NUFRfSF8KICNkZWZpbmUgX0dWVF9N UFRfSF8KIAotc3RydWN0IGd1ZXN0X3BhZ2U7Ci1zdHJ1Y3Qgdmd0X2RldmljZTsKLQogc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nIGh5cGVydmlzb3JfZzJtX3BmbihzdHJ1Y3Qgdmd0X2Rldmlj ZSAqdmd0LAogCXVuc2lnbmVkIGxvbmcgZ19wZm4pCiB7Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGd2 dF9ob3N0LmtkbS0+ZzJtX3Bmbih2Z3QtPnZtX2lkLCBnX3Bmbik7CiB9CiAKIHN0YXRpYyBpbmxp bmUgaW50IGh5cGVydmlzb3JfcGF1c2VfZG9tYWluKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCiB7 Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGd2dF9ob3N0LmtkbS0+cGF1c2VfZG9tYWluKHZndC0+dm1f aWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX3NodXRkb3duX2RvbWFpbihz dHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQogeworCXJldHVybiBndnRfaG9zdC5rZG0tPnNodXRkb3du X2RvbWFpbih2Z3QtPnZtX2lkKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl9t YXBfbWZuX3RvX2dwZm4oc3RydWN0IHZndF9kZXZpY2UgKnZndCwKKwl1bnNpZ25lZCBsb25nIGdw Zm4sIHVuc2lnbmVkIGxvbmcgbWZuLCBpbnQgbnIsIGludCBtYXAsIGVudW0gbWFwX3R5cGUgdHlw ZSkKK3sKKwlpZiAoZ3Z0X2hvc3Qua2RtICYmIGd2dF9ob3N0LmtkbS0+bWFwX21mbl90b19ncGZu KQorCQlyZXR1cm4gZ3Z0X2hvc3Qua2RtLT5tYXBfbWZuX3RvX2dwZm4odmd0LT52bV9pZCwgZ3Bm biwgbWZuLCBuciwgbWFwLCB0eXBlKTsKKwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5l IGludCBoeXBlcnZpc29yX3NldF90cmFwX2FyZWEoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKLQl1 aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kLCBib29sIG1hcCkKKwl1NjQgc3RhcnQsIHU2NCBl bmQsIGJvb2wgbWFwKQogewotCXJldHVybiAwOworCXJldHVybiBndnRfaG9zdC5rZG0tPnNldF90 cmFwX2FyZWEodmd0LCBzdGFydCwgZW5kLCBtYXApOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg aHlwZXJ2aXNvcl9kZXRlY3RfaG9zdCh2b2lkKQorc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNv cl9zZXRfd3BfcGFnZXMoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgZ3Vlc3RfcGFnZV90ICpwKQog ewotCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gZ3Z0X2hvc3Qua2RtLT5zZXRfd3BfcGFnZXModmd0 LCBwKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl92aXJ0X3RvX21mbih2b2lk ICphZGRyKQorc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl91bnNldF93cF9wYWdlcyhzdHJ1 Y3Qgdmd0X2RldmljZSAqdmd0LCBndWVzdF9wYWdlX3QgKnApCiB7Ci0JcmV0dXJuIDA7CisJcmV0 dXJuIGd2dF9ob3N0LmtkbS0+dW5zZXRfd3BfcGFnZXModmd0LCBwKTsKIH0KIAotc3RhdGljIGlu bGluZSB2b2lkICpoeXBlcnZpc29yX21mbl90b192aXJ0KGludCBtZm4pCitzdGF0aWMgaW5saW5l IGludCBoeXBlcnZpc29yX2RldGVjdF9ob3N0KHZvaWQpCiB7Ci0JcmV0dXJuIE5VTEw7CisJcmV0 dXJuIGd2dF9ob3N0LmtkbS0+ZGV0ZWN0X2hvc3QoKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQg aHlwZXJ2aXNvcl9zZXRfd3BfcGFnZXMoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgc3RydWN0IGd1 ZXN0X3BhZ2UgKnApCitzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX3ZpcnRfdG9fbWZuKHZv aWQgKmFkZHIpCiB7Ci0gICAgICAgIHJldHVybiAwOworCXJldHVybiBndnRfaG9zdC5rZG0tPmZy b21fdmlydF90b19tZm4oYWRkcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3Jf dW5zZXRfd3BfcGFnZXMoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgc3RydWN0IGd1ZXN0X3BhZ2Ug KnApCitzdGF0aWMgaW5saW5lIHZvaWQgKmh5cGVydmlzb3JfbWZuX3RvX3ZpcnQoaW50IG1mbikK IHsKLSAgICAgICAgcmV0dXJuIDA7CisJcmV0dXJuIGd2dF9ob3N0LmtkbS0+ZnJvbV9tZm5fdG9f dmlydChtZm4pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaHlwZXJ2aXNvcl9pbmplY3RfbXNp KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCiB7Ci0JcmV0dXJuOworI2RlZmluZSBNU0lfQ0FQX09G RlNFVCAweDkwCS8qIEZJWE1FLiBuZWVkIHRvIGdldCBmcm9tIGNmZyBlbXVsYXRpb24gKi8KKyNk ZWZpbmUgTVNJX0NBUF9DT05UUk9MIChNU0lfQ0FQX09GRlNFVCArIDIpCisjZGVmaW5lIE1TSV9D QVBfQUREUkVTUyAoTVNJX0NBUF9PRkZTRVQgKyA0KQorI2RlZmluZSBNU0lfQ0FQX0RBVEEJKE1T SV9DQVBfT0ZGU0VUICsgOCkKKyNkZWZpbmUgTVNJX0NBUF9FTiAweDEKKworCWNoYXIgKmNmZ19z cGFjZSA9ICZ2Z3QtPnN0YXRlLmNmZy5zcGFjZVswXTsKKwl1MTYgY29udHJvbCA9ICoodTE2ICop KGNmZ19zcGFjZSArIE1TSV9DQVBfQ09OVFJPTCk7CisJdTMyIGFkZHIgPSAqKHUzMiAqKShjZmdf c3BhY2UgKyBNU0lfQ0FQX0FERFJFU1MpOworCXUxNiBkYXRhID0gKih1MTYgKikoY2ZnX3NwYWNl ICsgTVNJX0NBUF9EQVRBKTsKKwlpbnQgcjsKKworCS8qIERvIG5vdCBnZW5lcmF0ZSBNU0kgaWYg TVNJRU4gaXMgZGlzYWJsZSAqLworCWlmICghKGNvbnRyb2wgJiBNU0lfQ0FQX0VOKSkKKwkJcmV0 dXJuOworCisJLyogRklYTUU6IGN1cnJlbnRseSBvbmx5IGhhbmRsZSBvbmUgTVNJIGZvcm1hdCAq LworCUFTU0VSVF9OVU0oIShjb250cm9sICYgMHhmZmZlKSwgY29udHJvbCk7CisKKwlndnRfZGJn KEdWVF9EQkdfSVJRLCAiVk0gJWQgaHZtIGluamVjdGlvbnMuIGFkZHJlc3MgKCV4KSBkYXRhKCV4 KSEiLAorCQkJdmd0LT52bV9pZCwgYWRkciwgZGF0YSk7CisJciA9IGd2dF9ob3N0LmtkbS0+aW5q ZWN0X21zaSh2Z3QtPnZtX2lkLCBhZGRyLCBkYXRhKTsKKwlpZiAociA8IDApCisJCWd2dF9lcnIo IlZHVCAlZCBmYWlsZWQgdG8gaW5qZWN0IHZtc2kiLCB2Z3QtPmlkKTsKIH0KIAogc3RhdGljIGlu bGluZSBpbnQgaHlwZXJ2aXNvcl9odm1faW5pdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQogewor CWlmIChndnRfaG9zdC5rZG0gJiYgZ3Z0X2hvc3Qua2RtLT5odm1faW5pdCkKKwkJcmV0dXJuIGd2 dF9ob3N0LmtkbS0+aHZtX2luaXQodmd0KTsKKwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5s aW5lIHZvaWQgaHlwZXJ2aXNvcl9odm1fZXhpdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQogewor CWlmIChndnRfaG9zdC5rZG0gJiYgZ3Z0X2hvc3Qua2RtLT5odm1fZXhpdCkKKwkJZ3Z0X2hvc3Qu a2RtLT5odm1fZXhpdCh2Z3QpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgKmh5cGVydmlzb3Jf Z3BhX3RvX3ZhKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHVuc2lnbmVkIGxvbmcgZ3BhKQogewot CXJldHVybiBOVUxMOworCWlmICghdmd0LT52bV9pZCkKKwkJcmV0dXJuIChjaGFyICopaHlwZXJ2 aXNvcl9tZm5fdG9fdmlydChncGEgPj4gUEFHRV9TSElGVCkgKyBvZmZzZXRfaW5fcGFnZShncGEp OworCisJcmV0dXJuIGd2dF9ob3N0LmtkbS0+Z3BhX3RvX3ZhKHZndCwgZ3BhKTsKIH0KIAogc3Rh dGljIGlubGluZSBib29sIGh5cGVydmlzb3JfcmVhZF92YShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0 LCB2b2lkICp2YSwKIAkJdm9pZCAqdmFsLCBpbnQgbGVuLCBpbnQgYXRvbWljKQogewotCXJldHVy biBmYWxzZTsKKwlib29sIHJldDsKKworCWlmICghdmd0LT52bV9pZCkgeworCQltZW1jcHkodmFs LCB2YSwgbGVuKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0ID0gZ3Z0X2hvc3Qua2RtLT5y ZWFkX3ZhKHZndCwgdmEsIHZhbCwgbGVuLCBhdG9taWMpOworCWlmICh1bmxpa2VseSghcmV0KSkK KwkJZ3Z0X2VycigiVk0oJWQpOiByZWFkIHZhIGZhaWxlZCwgdmE6IDB4JXAsIGF0b21pYyA6ICVz XG4iLCB2Z3QtPnZtX2lkLAorCQkJCXZhLCBhdG9taWMgPyAieWVzIiA6ICJubyIpOworCisJcmV0 dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGh5cGVydmlzb3Jfd3JpdGVfdmEoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwgdm9pZCAqdmEsCiAJCXZvaWQgKnZhbCwgaW50IGxlbiwgaW50 IGF0b21pYykKIHsKLQlyZXR1cm4gZmFsc2U7CisJYm9vbCByZXQ7CisKKwlpZiAoIXZndC0+dm1f aWQpIHsKKwkJbWVtY3B5KHZhLCB2YWwsIGxlbik7CisJCXJldHVybiB0cnVlOworCX0KKworCXJl dCA9IGd2dF9ob3N0LmtkbS0+d3JpdGVfdmEodmd0LCB2YSwgdmFsLCBsZW4sIGF0b21pYyk7CisJ aWYgKHVubGlrZWx5KCFyZXQpKQorCQlndnRfZXJyKCJWTSglZCk6IHdyaXRlIHZhIGZhaWxlZCwg dmE6IDB4JXAsIGF0b21pYyA6ICVzXG4iLCB2Z3QtPnZtX2lkLAorCQkJCXZhLCBhdG9taWMgPyAi eWVzIiA6ICJubyIpOworCisJcmV0dXJuIHJldDsKIH0KIAogI2VuZGlmIC8qIF9HVlRfTVBUX0hf ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGVyZi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L3BlcmYuaAppbmRleCAxNDZhMWNiLi4yMWIwNjM3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGVyZi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9wZXJmLmgKQEAgLTI4LDYgKzI4LDEwIEBAIHN0cnVjdCBndnRfc3RhdGlzdGlj cyB7CiAJdTY0CWlycV9udW07CiAJdTY0CWV2ZW50c1tHVlRfRVZFTlRfTUFYXTsKIAl1NjQJbGFz dF9pbmplY3Rpb247CisJdTY0CW1taW9fcmNudDsKKwl1NjQJbW1pb193Y250OworCXU2NAltbWlv X3djeWNsZXM7CisJdTY0CW1taW9fcmN5Y2xlczsKIAl1NjQJZ3R0X21taW9fcmNudDsKIAl1NjQJ Z3R0X21taW9fd2NudDsKIAl1NjQJZ3R0X21taW9fd2N5Y2xlczsKLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=