From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: [PATCH 02/12] drm/ast: Handle configuration without P2A bridge Date: Fri, 24 Feb 2017 09:53:47 +1100 Message-ID: <20170223225357.9572-2-benh@kernel.crashing.org> References: <20170223225357.9572-1-benh@kernel.crashing.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5BD026EB4F for ; Thu, 23 Feb 2017 22:54:30 +0000 (UTC) In-Reply-To: <20170223225357.9572-1-benh@kernel.crashing.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: linuxppc-dev@ozlabs.org, airlied@redhat.com, eich@suse.come List-Id: dri-devel@lists.freedesktop.org RnJvbTogUnVzc2VsbCBDdXJyZXkgPHJ1c2N1ckBydXNzZWxsLmNjPgoKVGhlIGFzdCBkcml2ZXIg Y29uZmlndXJlcyBhIHdpbmRvdyB0byBlbmFibGUgYWNjZXNzIGludG8gQk1DCm1lbW9yeSBzcGFj ZSBpbiBvcmRlciB0byByZWFkIHNvbWUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCgpJZiB0aGlz IHdpbmRvdyBpcyBkaXNhYmxlZCwgd2hpY2ggaXQgY2FuIGJlIGZyb20gdGhlIEJNQyBzaWRlLAp0 aGUgYXN0IGRyaXZlciBjYW4ndCBmdW5jdGlvbi4KCkNsb3NpbmcgdGhpcyB3aW5kb3cgaXMgYSBu ZWNlc3NpdHkgZm9yIHNlY3VyaXR5IGlmIGEgbWFjaGluZSdzCmhvc3Qgc2lkZSBhbmQgQk1DIHNp ZGUgYXJlIGNvbnRyb2xsZWQgYnkgZGlmZmVyZW50IHBhcnRpZXM7CmkuZS4gYSBjbG91ZCBwcm92 aWRlciBvZmZlcmluZyBtYWNoaW5lcyAiYmFyZSBtZXRhbCIuCgpBIHJlY2VudCBwYXRjaCB3ZW50 IGluIHRvIHRyeSB0byBjaGVjayBpZiB0aGF0IHdpbmRvdyBpcyBvcGVuCmJ1dCBpdCBkb2VzIHNv IGJ5IHRyeWluZyB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVycyBpbiBxdWVzdGlvbgphbmQgdGVzdGlu ZyBpZiB0aGUgcmVzdWx0IGlzIDB4ZmZmZmZmZmYuCgpUaGlzIG1ldGhvZCB3aWxsIHRyaWdnZXIg YSBQQ0llIGVycm9yIHdoZW4gdGhlIHdpbmRvdyBpcyBjbG9zZWQKd2hpY2ggb24gc29tZSBzeXN0 ZW1zIHdpbGwgYmUgZmF0YWwgKGl0IHdpbGwgdHJpZ2dlciBhbiBFRUgKZm9yIGV4YW1wbGUgb24g UE9XRVIgd2hpY2ggd2lsbCB0YWtlIG91dCB0aGUgZGV2aWNlKS4KClRoaXMgcGF0Y2ggaW1wcm92 ZXMgdGhpcyBpbiB0d28gd2F5czoKCiAtIEZpcnN0LCBpZiB0aGUgZmlybXdhcmUgaGFzIHB1dCBw cm9wZXJ0aWVzIGluIHRoZSBkZXZpY2UtdHJlZQpjb250YWluaW5nIHRoZSByZWxldmFudCBjb25m aWd1cmF0aW9uIGluZm9ybWF0aW9uLCB3ZSB1c2UgdGhlc2UuCgogLSBPdGhlcndpc2UsIGEgYml0 IGluIG9uZSBvZiB0aGUgU0NVIHNjcmF0Y2ggcmVnaXN0ZXJzICh3aGljaAphcmUgcmVhZGFibGUg dmlhIHRoZSBWR0EgcmVnaXN0ZXIgc3BhY2UgYW5kIHdyaXRlYWJsZSBieSB0aGUgQk1DKQp3aWxs IGluZGljYXRlIGlmIHRoZSBCTUMgaGFzIGNsb3NlZCB0aGUgd2luZG93LiBUaGlzIGJpdCBoYXMg YmVlbgpkZWZpbmVkIGJ5IFkuQyBDaGVuIGZyb20gQXNwZWVkLgoKSWYgdGhlIHdpbmRvdyBpcyBj bG9zZWQgYW5kIHRoZSBjb25maWd1cmF0aW9uIGlzbid0IGF2YWlsYWJsZSBmcm9tCnRoZSBkZXZp Y2UtdHJlZSwgc29tZSBzYW5lIGRlZmF1bHRzIGFyZSB1c2VkLiBUaG9zZSBkZWZhdWx0cyBhcmUK aG9wZWZ1bGx5IHN1ZmZpY2llbnQgZm9yIHN0YW5kYXJkIHZpZGVvIG1vZGVzIHVzZWQgb24gYSBz ZXJ2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBSdXNzZWxsIEN1cnJleSA8cnVzY3VyQHJ1c3NlbGwuY2M+ ClNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNyYXNo aW5nLm9yZz4KLS0KCnYyLiBbQmVuSF0KICAgIC0gUmV3b3JrZWQgb24gdG9wIG9mIEFzcGVlZCBQ MkEgcGF0Y2gKICAgIC0gQ2xlYW51cCBvdmVyYWxsIGRldGVjdGlvbiB2aWEgYSAiY29uZmlnX21v ZGUiIGFuZCBsb2cgdGhlCiAgICAgIHNlbGVjdGVkIG1vZGUgZm9yIGRpYWdub3N0aWNzIHB1cnBv c2VzCiAgICAtIEFkZCBhIHByb3BlcnR5IGZvciB0aGUgU0NVIHN0cmFwcwoKdjMuIFtCZW5IXQog ICAgLSBNb3ZlZCB0aGUgY29uZmlnIG1vZGUgZGV0ZWN0aW9uIHRvIGEgc2VwYXJhdGUgZnVuY3Rp b25uCiAgICAtIEFkZCByZWFkaW5nIG9mIFNDVSAweDQwIERbMTJdIHRvIGRldGVjdCB0aGUgd2lu ZG93IGlzCiAgICAgIGNsb3NlZCBhcyB0byBub3QgdHJpZ2dlciBhIGJ1cyBlcnJvciBieSBqdXN0 ICJ0cnlpbmciLgogICAgICAoY2hhbmdlIHByb3ZpZGVkIGJ5IFkuQy4gQ2hlbikKdjQuIFtCZW5I XQogICAgLSBPbmx5IGRldmljZXMgd2l0aCB0aGUgQVNUMjAwMCBQQ0kgSUQgaGF2ZSBhIFAyQSBi cmlkZ2UKICAgIC0gVXBkYXRlIHRoZSBQMkEgcHJlc2VuY2UgdGVzdCB0byBhY2NvdW50IGZvciBW R0Egb25seQogICAgICBtb2RlIGFzIHByb3ZpZGVkIGJ5IFkuQy4gQ2hlbi4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYyB8IDI2MiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIHwgICA3ICstCiAzIGZpbGVzIGNoYW5nZWQs IDE2NiBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaApp bmRleCA3YWJkYTk0Li4zYmVkY2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaApAQCAtMTEzLDcgKzEx MywxMSBAQCBzdHJ1Y3QgYXN0X3ByaXZhdGUgewogCXN0cnVjdCB0dG1fYm9fa21hcF9vYmogY2Fj aGVfa21hcDsKIAlpbnQgbmV4dF9jdXJzb3I7CiAJYm9vbCBzdXBwb3J0X3dpZGVfc2NyZWVuOwot CWJvb2wgRGlzYWJsZVAyQTsKKwllbnVtIHsKKwkJYXN0X3VzZV9wMmEsCisJCWFzdF91c2VfZHQs CisJCWFzdF91c2VfZGVmYXVsdHMKKwl9IGNvbmZpZ19tb2RlOwogCiAJZW51bSBhc3RfdHhfY2hp cCB0eF9jaGlwX3R5cGU7CiAJdTggZHA1MDFfbWF4Y2xrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCmlu ZGV4IDUzM2U3NjIuLjM2OTMyYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMKQEAgLTYyLDEzICs2 Miw4MyBAQCB1aW50OF90IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soc3RydWN0IGFzdF9wcml2YXRl ICphc3QsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgYXN0X2RldGVjdF9jb25maWdf bW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgKnNjdV9yZXYpCit7CisJc3RydWN0IGRl dmljZV9ub2RlICpucCA9IGRldi0+cGRldi0+ZGV2Lm9mX25vZGU7CisJc3RydWN0IGFzdF9wcml2 YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOworCXVpbnQzMl90IGRhdGEsIGpyZWdkMCwganJl Z2QxOworCisJLyogRGVmYXVsdHMgKi8KKwlhc3QtPmNvbmZpZ19tb2RlID0gYXN0X3VzZV9kZWZh dWx0czsKKwkqc2N1X3JldiA9IDB4ZmZmZmZmZmY7CisKKwkvKiBDaGVjayBpZiB3ZSBoYXZlIGRl dmljZS10cmVlIHByb3BlcnRpZXMgKi8KKwlpZiAobnAgJiYgIW9mX3Byb3BlcnR5X3JlYWRfdTMy KG5wLCAiYXN0LHNjdS1yZXZpc2lvbi1pZCIsIHNjdV9yZXYpKSB7CisJCS8qIFdlIGRvLCBkaXNh YmxlIFAyQSBhY2Nlc3MgKi8KKwkJYXN0LT5jb25maWdfbW9kZSA9IGFzdF91c2VfZHQ7CisJCURS TV9JTkZPKCJVc2luZyBkZXZpY2UtdHJlZSBmb3IgY29uZmlndXJhdGlvblxuIik7CisJCXJldHVy bjsKKwl9CisKKwkvKiBOb3QgYWxsIGZhbWlsaWVzIGhhdmUgYSBQMkEgYnJpZGdlICovCisJaWYg KGRldi0+cGRldi0+ZGV2aWNlICE9IFBDSV9DSElQX0FTVDIwMDApCisJCXJldHVybjsKKworCS8q CisJICogVGhlIEJNQyB3aWxsIHNldCBTQ1UgMHg0MCBEWzEyXSB0byAxIGlmIHRoZSBQMiBicmlk Z2UKKwkgKiBpcyBkaXNhYmxlZC4gV2UgZm9yY2UgdXNpbmcgUDJBIGlmIFZHQSBvbmx5IG1vZGUg Yml0CisJICogaXMgc2V0IERbN10KKwkgKi8KKwlqcmVnZDAgPSBhc3RfZ2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhkMCwgMHhmZik7CisJanJlZ2QxID0gYXN0X2dl dF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4ZDEsIDB4ZmYpOworCWlm ICghKGpyZWdkMCAmIDB4ODApIHx8ICEoanJlZ2QxICYgMHgxMCkpIHsKKwkJLyogRG91YmxlIGNo ZWNrIGl0J3MgYWN0dWFsbHkgd29ya2luZyAqLworCQlkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4 ZjAwNCk7CisJCWlmIChkYXRhICE9IDB4RkZGRkZGRkYpIHsKKwkJCS8qIFAyQSB3b3JrcywgZ3Jh YiBzaWxpY29uIHJldmlzaW9uICovCisJCQlhc3QtPmNvbmZpZ19tb2RlID0gYXN0X3VzZV9wMmE7 CisKKwkJCURSTV9JTkZPKCJVc2luZyBQMkEgYnJpZGdlIGZvciBjb25maWd1cmF0aW9uXG4iKTsK KworCQkJLyogUmVhZCBTQ1U3YyAoc2lsaWNvbiByZXZpc2lvbiByZWdpc3RlcikgKi8KKwkJCWFz dF93cml0ZTMyKGFzdCwgMHhmMDA0LCAweDFlNmUwMDAwKTsKKwkJCWFzdF93cml0ZTMyKGFzdCwg MHhmMDAwLCAweDEpOworCQkJKnNjdV9yZXYgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMjA3Yyk7CisJ CQlyZXR1cm47CisJCX0KKwl9CisKKwkvKiBXZSBoYXZlIGEgUDJBIGJyaWRnZSBidXQgaXQncyBk aXNhYmxlZCAqLworCURSTV9JTkZPKCJQMkEgYnJpZGdlIGRpc2FibGVkLCB1c2luZyBkZWZhdWx0 IGNvbmZpZ3VyYXRpb25cbiIpOworfQogCiBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICpuZWVkX3Bvc3QpCiB7CiAJc3RydWN0IGFzdF9wcml2 YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOwotCXVpbnQzMl90IGRhdGEsIGpyZWc7CisJdWlu dDMyX3QganJlZywgc2N1X3JldjsKKworCS8qCisJICogSWYgVkdBIGlzbid0IGVuYWJsZWQsIHdl IG5lZWQgdG8gZW5hYmxlIG5vdyBvciBzdWJzZXF1ZW50CisJICogYWNjZXNzIHRvIHRoZSBzY3Jh dGNoIHJlZ2lzdGVycyB3aWxsIGZhaWwuIFdlIGFsc28gaW5mb3JtCisJICogb3VyIGNhbGxlciB0 aGF0IGl0IG5lZWRzIHRvIFBPU1QgdGhlIGNoaXAKKwkgKiAoQXNzdW1wdGlvbjogVkdBIG5vdCBl bmFibGVkIC0+IG5lZWQgdG8gUE9TVCkKKwkgKi8KKwlpZiAoIWFzdF9pc192Z2FfZW5hYmxlZChk ZXYpKSB7CisJCWFzdF9lbmFibGVfdmdhKGRldik7CisJCURSTV9JTkZPKCJWR0Egbm90IGVuYWJs ZWQgb24gZW50cnksIHJlcXVlc3RpbmcgY2hpcCBQT1NUXG4iKTsKKwkJKm5lZWRfcG9zdCA9IHRy dWU7CisJfSBlbHNlCisJCSpuZWVkX3Bvc3QgPSBmYWxzZTsKKworCisJLyogRW5hYmxlIGV4dGVu ZGVkIHJlZ2lzdGVyIGFjY2VzcyAqLworCWFzdF9lbmFibGVfbW1pbyhkZXYpOwogCWFzdF9vcGVu X2tleShhc3QpOwogCisJLyogRmluZCBvdXQgd2hldGhlciBQMkEgd29ya3Mgb3Igd2hldGhlciB0 byB1c2UgZGV2aWNlLXRyZWUgKi8KKwlhc3RfZGV0ZWN0X2NvbmZpZ19tb2RlKGRldiwgJnNjdV9y ZXYpOworCisJLyogSWRlbnRpZnkgY2hpcHNldCAqLwogCWlmIChkZXYtPnBkZXYtPmRldmljZSA9 PSBQQ0lfQ0hJUF9BU1QxMTgwKSB7CiAJCWFzdC0+Y2hpcCA9IEFTVDExMDA7CiAJCURSTV9JTkZP KCJBU1QgMTE4MCBkZXRlY3RlZFxuIik7CkBAIC04MCwxMiArMTUwLDcgQEAgc3RhdGljIGludCBh c3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQog CQkJYXN0LT5jaGlwID0gQVNUMjMwMDsKIAkJCURSTV9JTkZPKCJBU1QgMjMwMCBkZXRlY3RlZFxu Iik7CiAJCX0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDEwKSB7Ci0JCQl1aW50 MzJfdCBkYXRhOwotCQkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2ZTAwMDApOwotCQkJ YXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7Ci0KLQkJCWRhdGEgPSBhc3RfcmVhZDMyKGFz dCwgMHgxMjA3Yyk7Ci0JCQlzd2l0Y2ggKGRhdGEgJiAweDAzMDApIHsKKwkJCXN3aXRjaCAoc2N1 X3JldiAmIDB4MDMwMCkgewogCQkJY2FzZSAweDAyMDA6CiAJCQkJYXN0LT5jaGlwID0gQVNUMTEw MDsKIAkJCQlEUk1fSU5GTygiQVNUIDExMDAgZGV0ZWN0ZWRcbiIpOwpAQCAtMTEwLDI2ICsxNzUs NiBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBi b29sICpuZWVkX3Bvc3QpCiAJCX0KIAl9CiAKLQkvKgotCSAqIElmIFZHQSBpc24ndCBlbmFibGVk LCB3ZSBuZWVkIHRvIGVuYWJsZSBub3cgb3Igc3Vic2VxdWVudAotCSAqIGFjY2VzcyB0byB0aGUg c2NyYXRjaCByZWdpc3RlcnMgd2lsbCBmYWlsLiBXZSBhbHNvIGluZm9ybQotCSAqIG91ciBjYWxs ZXIgdGhhdCBpdCBuZWVkcyB0byBQT1NUIHRoZSBjaGlwCi0JICogKEFzc3VtcHRpb246IFZHQSBu b3QgZW5hYmxlZCAtPiBuZWVkIHRvIFBPU1QpCi0JICovCi0JaWYgKCFhc3RfaXNfdmdhX2VuYWJs ZWQoZGV2KSkgewotCQlhc3RfZW5hYmxlX3ZnYShkZXYpOwotCQlhc3RfZW5hYmxlX21taW8oZGV2 KTsKLQkJRFJNX0lORk8oIlZHQSBub3QgZW5hYmxlZCBvbiBlbnRyeSwgcmVxdWVzdGluZyBjaGlw IFBPU1RcbiIpOwotCQkqbmVlZF9wb3N0ID0gdHJ1ZTsKLQl9IGVsc2UKLQkJKm5lZWRfcG9zdCA9 IGZhbHNlOwotCi0JLyogQ2hlY2sgUDJBIEFjY2VzcyAqLwotCWFzdC0+RGlzYWJsZVAyQSA9IHRy dWU7Ci0JZGF0YSA9IGFzdF9yZWFkMzIoYXN0LCAweGYwMDQpOwotCWlmIChkYXRhICE9IDB4RkZG RkZGRkYpCi0JCWFzdC0+RGlzYWJsZVAyQSA9IGZhbHNlOwotCiAJLyogQ2hlY2sgaWYgd2Ugc3Vw cG9ydCB3aWRlIHNjcmVlbiAqLwogCXN3aXRjaCAoYXN0LT5jaGlwKSB7CiAJY2FzZSBBU1QxMTgw OgpAQCAtMTQ2LDE3ICsxOTEsMTIgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQogCQkJYXN0LT5zdXBwb3J0X3dpZGVf c2NyZWVuID0gdHJ1ZTsKIAkJZWxzZSB7CiAJCQlhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSBm YWxzZTsKLQkJCWlmIChhc3QtPkRpc2FibGVQMkEgPT0gZmFsc2UpIHsKLQkJCQkvKiBSZWFkIFND VTdjIChzaWxpY29uIHJldmlzaW9uIHJlZ2lzdGVyKSAqLwotCQkJCWFzdF93cml0ZTMyKGFzdCwg MHhmMDA0LCAweDFlNmUwMDAwKTsKLQkJCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwMCwgMHgxKTsK LQkJCQlkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4MTIwN2MpOwotCQkJCWRhdGEgJj0gMHgzMDA7 Ci0JCQkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwICYmIGRhdGEgPT0gMHgwKSAvKiBhc3QxMzAw ICovCi0JCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7Ci0JCQkJaWYgKGFzdC0+ Y2hpcCA9PSBBU1QyNDAwICYmIGRhdGEgPT0gMHgxMDApIC8qIGFzdDE0MDAgKi8KLQkJCQkJYXN0 LT5zdXBwb3J0X3dpZGVfc2NyZWVuID0gdHJ1ZTsKLQkJCX0KKwkJCWlmIChhc3QtPmNoaXAgPT0g QVNUMjMwMCAmJgorCQkJICAgIChzY3VfcmV2ICYgMHgzMDApID09IDB4MCkgLyogYXN0MTMwMCAq LworCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7CisJCQlpZiAoYXN0LT5jaGlw ID09IEFTVDI0MDAgJiYKKwkJCSAgICAoc2N1X3JldiAmIDB4MzAwKSA9PSAweDEwMCkgLyogYXN0 MTQwMCAqLworCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7CiAJCX0KIAkJYnJl YWs7CiAJfQpAQCAtMjIwLDg1ICsyNjAsMTAxIEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkKIAogc3RhdGljIGludCBh c3RfZ2V0X2RyYW1faW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogeworCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqbnAgPSBkZXYtPnBkZXYtPmRldi5vZl9ub2RlOwogCXN0cnVjdCBhc3RfcHJpdmF0 ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1aW50MzJfdCBkYXRhLCBkYXRhMjsKLQl1aW50 MzJfdCBkZW51bSwgbnVtLCBkaXYsIHJlZl9wbGw7CisJdWludDMyX3QgbWNyX2NmZywgbWNyX3Nj dV9tcGxsLCBtY3Jfc2N1X3N0cmFwOworCXVpbnQzMl90IGRlbnVtLCBudW0sIGRpdiwgcmVmX3Bs bCwgZHNlbDsKIAotCWlmIChhc3QtPkRpc2FibGVQMkEpCi0JeworCXN3aXRjaCAoYXN0LT5jb25m aWdfbW9kZSkgeworCWNhc2UgYXN0X3VzZV9kdDoKKwkJLyoKKwkJICogSWYgc29tZSBwcm9wZXJ0 aWVzIGFyZSBtaXNzaW5nLCB1c2UgcmVhc29uYWJsZQorCQkgKiBkZWZhdWx0cyBmb3IgQVNUMjQw MAorCQkgKi8KKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYXN0LG1jci1jb25maWd1 cmF0aW9uIiwgJm1jcl9jZmcpKQorCQkJbWNyX2NmZyA9IDB4MDAwMDA1Nzc7CisJCWlmIChvZl9w cm9wZXJ0eV9yZWFkX3UzMihucCwgImFzdCxhc3QsbWNyLXNjdS1tcGxsIiwKKwkJCQkJICZtY3Jf c2N1X21wbGwpKQorCQkJbWNyX3NjdV9tcGxsID0gMHgwMDAwNTBDMDsKKwkJaWYgKG9mX3Byb3Bl cnR5X3JlYWRfdTMyKG5wLCAiYXN0LGFzdCxtY3Itc2N1LXN0cmFwIiwKKwkJCQkJICZtY3Jfc2N1 X3N0cmFwKSkKKwkJCW1jcl9zY3Vfc3RyYXAgPSAwOworCQlicmVhazsKKwljYXNlIGFzdF91c2Vf cDJhOgorCQlhc3Rfd3JpdGUzMihhc3QsIDB4ZjAwNCwgMHgxZTZlMDAwMCk7CisJCWFzdF93cml0 ZTMyKGFzdCwgMHhmMDAwLCAweDEpOworCQltY3JfY2ZnID0gYXN0X3JlYWQzMihhc3QsIDB4MTAw MDQpOworCQltY3Jfc2N1X21wbGwgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDEyMCk7CisJCW1jcl9z Y3Vfc3RyYXAgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDE3MCk7CisJCWJyZWFrOworCWNhc2UgYXN0 X3VzZV9kZWZhdWx0czoKKwlkZWZhdWx0OgogCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMTY7CiAJ CWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMUd4MTY7CiAJCWFzdC0+bWNsayA9IDM5NjsKKwkJ cmV0dXJuIDA7CiAJfQotCWVsc2UKLQl7Ci0JCWFzdF93cml0ZTMyKGFzdCwgMHhmMDA0LCAweDFl NmUwMDAwKTsKLQkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7Ci0JCWRhdGEgPSBhc3Rf cmVhZDMyKGFzdCwgMHgxMDAwNCk7CiAKLQkJaWYgKGRhdGEgJiAweDQwKQotCQkJYXN0LT5kcmFt X2J1c193aWR0aCA9IDE2OwotCQllbHNlCi0JCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMzI7Ci0K LQkJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7Ci0J CQlzd2l0Y2ggKGRhdGEgJiAweDAzKSB7Ci0JCQljYXNlIDA6Ci0JCQkJYXN0LT5kcmFtX3R5cGUg PSBBU1RfRFJBTV81MTJNeDE2OwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCWNhc2UgMToK LQkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2OwotCQkJCWJyZWFrOwotCQkJY2Fz ZSAyOgotCQkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7Ci0JCQkJYnJlYWs7Ci0J CQljYXNlIDM6Ci0JCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKLQkJCQlicmVh azsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCXN3aXRjaCAoZGF0YSAmIDB4MGMpIHsKLQkJCWNhc2Ug MDoKLQkJCWNhc2UgNDoKLQkJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7Ci0J CQkJYnJlYWs7Ci0JCQljYXNlIDg6Ci0JCQkJaWYgKGRhdGEgJiAweDQwKQotCQkJCQlhc3QtPmRy YW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2OwotCQkJCWVsc2UKLQkJCQkJYXN0LT5kcmFtX3R5cGUg PSBBU1RfRFJBTV81MTJNeDMyOwotCQkJCWJyZWFrOwotCQkJY2FzZSAweGM6Ci0JCQkJYXN0LT5k cmFtX3R5cGUgPSBBU1RfRFJBTV8xR3gzMjsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQorCWlmICht Y3JfY2ZnICYgMHg0MCkKKwkJYXN0LT5kcmFtX2J1c193aWR0aCA9IDE2OworCWVsc2UKKwkJYXN0 LT5kcmFtX2J1c193aWR0aCA9IDMyOwogCi0JCWRhdGEgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMDEy MCk7Ci0JCWRhdGEyID0gYXN0X3JlYWQzMihhc3QsIDB4MTAxNzApOwotCQlpZiAoZGF0YTIgJiAw eDIwMDApCi0JCQlyZWZfcGxsID0gMTQzMTg7Ci0JCWVsc2UKLQkJCXJlZl9wbGwgPSAxMjAwMDsK LQotCQlkZW51bSA9IGRhdGEgJiAweDFmOwotCQludW0gPSAoZGF0YSAmIDB4M2ZlMCkgPj4gNTsK LQkJZGF0YSA9IChkYXRhICYgMHhjMDAwKSA+PiAxNDsKLQkJc3dpdGNoIChkYXRhKSB7Ci0JCWNh c2UgMzoKLQkJCWRpdiA9IDB4NDsKKwlpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5j aGlwID09IEFTVDI0MDApIHsKKwkJc3dpdGNoIChtY3JfY2ZnICYgMHgwMykgeworCQljYXNlIDA6 CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7CiAJCQlicmVhazsKLQkJY2Fz ZSAyOgorCQlkZWZhdWx0OgogCQljYXNlIDE6Ci0JCQlkaXYgPSAweDI7CisJCQlhc3QtPmRyYW1f dHlwZSA9IEFTVF9EUkFNXzFHeDE2OwogCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlkaXYgPSAw eDE7CisJCWNhc2UgMjoKKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7CisJCQli cmVhazsKKwkJY2FzZSAzOgorCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKIAkJ CWJyZWFrOwogCQl9Ci0JCWFzdC0+bWNsayA9IHJlZl9wbGwgKiAobnVtICsgMikgLyAoZGVudW0g KyAyKSAqIChkaXYgKiAxMDAwKTsKKwl9IGVsc2UgeworCQlzd2l0Y2ggKG1jcl9jZmcgJiAweDBj KSB7CisJCWNhc2UgMDoKKwkJY2FzZSA0OgorCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81 MTJNeDE2OworCQkJYnJlYWs7CisJCWNhc2UgODoKKwkJCWlmIChtY3JfY2ZnICYgMHg0MCkKKwkJ CQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2OworCQkJZWxzZQorCQkJCWFzdC0+ZHJh bV90eXBlID0gQVNUX0RSQU1fNTEyTXgzMjsKKwkJCWJyZWFrOworCQljYXNlIDB4YzoKKwkJCWFz dC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMUd4MzI7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlm IChtY3Jfc2N1X3N0cmFwICYgMHgyMDAwKQorCQlyZWZfcGxsID0gMTQzMTg7CisJZWxzZQorCQly ZWZfcGxsID0gMTIwMDA7CisKKwlkZW51bSA9IG1jcl9zY3VfbXBsbCAmIDB4MWY7CisJbnVtID0g KG1jcl9zY3VfbXBsbCAmIDB4M2ZlMCkgPj4gNTsKKwlkc2VsID0gKG1jcl9zY3VfbXBsbCAmIDB4 YzAwMCkgPj4gMTQ7CisJc3dpdGNoIChkc2VsKSB7CisJY2FzZSAzOgorCQlkaXYgPSAweDQ7CisJ CWJyZWFrOworCWNhc2UgMjoKKwljYXNlIDE6CisJCWRpdiA9IDB4MjsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJZGl2ID0gMHgxOworCQlicmVhazsKIAl9CisJYXN0LT5tY2xrID0gcmVmX3BsbCAq IChudW0gKyAyKSAvIChkZW51bSArIDIpICogKGRpdiAqIDEwMDApOwogCXJldHVybiAwOwogfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgYi9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9wb3N0LmMKaW5kZXggNmM1MzkxYy4uNjQ1NDljZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X3Bvc3QuYwpAQCAtMzc5LDE3ICszNzksMTQgQEAgdm9pZCBhc3RfcG9zdF9ncHUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlhc3Rfb3Blbl9rZXkoYXN0KTsKIAlhc3Rfc2V0X2RlZl9leHRf cmVnKGRldik7CiAKLQlpZiAoYXN0LT5EaXNhYmxlUDJBID09IGZhbHNlKQotCXsKKwlpZiAoYXN0 LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgewogCQlpZiAoYXN0LT5jaGlwID09IEFTVDIz MDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApCiAJCQlhc3RfaW5pdF9kcmFtXzIzMDAoZGV2KTsK IAkJZWxzZQogCQkJYXN0X2luaXRfZHJhbV9yZWcoZGV2KTsKIAogCQlhc3RfaW5pdF8zcmR0eChk ZXYpOwotCX0KLQllbHNlCi0JeworCX0gZWxzZSB7CiAJCWlmIChhc3QtPnR4X2NoaXBfdHlwZSAh PSBBU1RfVFhfTk9ORSkKIAkJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweGEzLCAweGNmLCAweDgwKTsJLyogRW5hYmxlIERWTyAqLwogCX0KLS0gCjIuOS4z CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK