From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Myl=C3=A8ne=20Josserand?= Subject: [PATCH v3 1/7] ARM: sun8i: smp: Add support for A83T Date: Mon, 19 Feb 2018 09:18:31 +0100 Message-ID: <20180219081837.15482-2-mylene.josserand@bootlin.com> References: <20180219081837.15482-1-mylene.josserand@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180219081837.15482-1-mylene.josserand@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: maxime.ripard@bootlin.com, wens@csie.org, linux@armlinux.org.uk, robh+dt@kernel.org, mark.rutland@arm.com Cc: devicetree@vger.kernel.org, quentin.schulz@bootlin.com, linux-kernel@vger.kernel.org, clabbe.montjoie@gmail.com, thomas.petazzoni@bootlin.com, mylene.josserand@bootlin.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org QWRkIHRoZSBzdXBwb3J0IGZvciBBODNULgoKQTgzVCBTb0MgaGFzIGFuIGFkZGl0aW9uYWwgcmVn aXN0ZXIgdGhhbiBBODAgdG8gaGFuZGxlIENQVSBjb25maWd1cmF0aW9uczoKUl9DUFVTX0NGRy4g SW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZ2lzdGVyIGNvbWVzIGZyb20gQWxsd2lubmVyJ3MgQlNQ CmRyaXZlci4KQW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgaXMgdGhlIFBvd2VyIE9mZiBHYXRpbmcg cmVnaXN0ZXIgZm9yIGNsdXN0ZXJzCndoaWNoIGlzIEJJVCg0KSBpbiBjYXNlIG9mIFNVTjlJLUE4 MCBhbmQgQklUKDApIGluIGNhc2Ugb2YgU1VOOEktQTgzVC4KClNpZ25lZC1vZmYtYnk6IE15bMOo bmUgSm9zc2VyYW5kIDxteWxlbmUuam9zc2VyYW5kQGJvb3RsaW4uY29tPgotLS0KIGFyY2gvYXJt L21hY2gtc3VueGkvS2NvbmZpZyAgfCAgIDIgKy0KIGFyY2gvYXJtL21hY2gtc3VueGkvbWNfc21w LmMgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMiBm aWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1zdW54aS9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1zdW54aS9L Y29uZmlnCmluZGV4IGNlNTNjZWFmNGNjNS4uYTBhZDM1YzQxYzAyIDEwMDY0NAotLS0gYS9hcmNo L2FybS9tYWNoLXN1bnhpL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1zdW54aS9LY29uZmln CkBAIC01MSw3ICs1MSw3IEBAIGNvbmZpZyBNQUNIX1NVTjlJCiBjb25maWcgQVJDSF9TVU5YSV9N Q19TTVAKIAlib29sCiAJZGVwZW5kcyBvbiBTTVAKLQlkZWZhdWx0IE1BQ0hfU1VOOUkKKwlkZWZh dWx0IHkgaWYgTUFDSF9TVU45SSB8fCBNQUNIX1NVTjhJCiAJc2VsZWN0IEFSTV9DQ0k0MDBfUE9S VF9DVFJMCiAJc2VsZWN0IEFSTV9DUFVfU1VTUEVORAogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9t YWNoLXN1bnhpL21jX3NtcC5jIGIvYXJjaC9hcm0vbWFjaC1zdW54aS9tY19zbXAuYwppbmRleCAx MWU0NmM2ZWZiOTAuLmZlYzU5MmJmNjhiNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zdW54 aS9tY19zbXAuYworKysgYi9hcmNoL2FybS9tYWNoLXN1bnhpL21jX3NtcC5jCkBAIC01NSwyMCAr NTUsMjkgQEAKICNkZWZpbmUgQ1BVQ0ZHX0NYX1JTVF9DVFJMX0wyX1JTVAlCSVQoOCkKICNkZWZp bmUgQ1BVQ0ZHX0NYX1JTVF9DVFJMX0NYX1JTVChuKQlCSVQoNCArIChuKSkKICNkZWZpbmUgQ1BV Q0ZHX0NYX1JTVF9DVFJMX0NPUkVfUlNUKG4pCUJJVChuKQorI2RlZmluZSBDUFVDRkdfQ1hfUlNU X0NUUkxfQ09SRV9SU1RfQUxMCSgweGYgPDwgMCkKIAogI2RlZmluZSBQUkNNX0NQVV9QT19SU1Rf Q1RSTChjKQkJKDB4NCArIDB4NCAqIChjKSkKICNkZWZpbmUgUFJDTV9DUFVfUE9fUlNUX0NUUkxf Q09SRShuKQlCSVQobikKICNkZWZpbmUgUFJDTV9DUFVfUE9fUlNUX0NUUkxfQ09SRV9BTEwJMHhm CiAjZGVmaW5lIFBSQ01fUFdST0ZGX0dBVElOR19SRUcoYykJKDB4MTAwICsgMHg0ICogKGMpKQot I2RlZmluZSBQUkNNX1BXUk9GRl9HQVRJTkdfUkVHX0NMVVNURVIJQklUKDQpCisvKiBUaGUgcG93 ZXIgb2ZmIHJlZ2lzdGVyIGZvciBjbHVzdGVycyBhcmUgZGlmZmVyZW50IGZyb20gU1VOOUkgYW5k IFNVTjhJICovCisjZGVmaW5lIFBSQ01fUFdST0ZGX0dBVElOR19SRUdfQ0xVU1RFUl9TVU44SQlC SVQoMCkKKyNkZWZpbmUgUFJDTV9QV1JPRkZfR0FUSU5HX1JFR19DTFVTVEVSX1NVTjlJCUJJVCg0 KQogI2RlZmluZSBQUkNNX1BXUk9GRl9HQVRJTkdfUkVHX0NPUkUobikJQklUKG4pCiAjZGVmaW5l IFBSQ01fUFdSX1NXSVRDSF9SRUcoYywgY3B1KQkoMHgxNDAgKyAweDEwICogKGMpICsgMHg0ICog KGNwdSkpCiAjZGVmaW5lIFBSQ01fQ1BVX1NPRlRfRU5UUllfUkVHCQkweDE2NAogCisvKiBSX0NQ VUNGRyByZWdpc3RlcnMsIHNwZWNpZmljIHRvIFNVTjhJICovCisjZGVmaW5lIFJfQ1BVQ0ZHX0NM VVNURVJfUE9fUlNUX0NUUkwoYykJKDB4MzAgKyAoYykgKiAweDQpCisjZGVmaW5lIFJfQ1BVQ0ZH X0NMVVNURVJfUE9fUlNUX0NUUkxfQ09SRShuKQlCSVQobikKKyNkZWZpbmUgUl9DUFVDRkdfQ1BV X1NPRlRfRU5UUllfUkVHCTB4MDFhNAorCiAjZGVmaW5lIENQVTBfU1VQUE9SVF9IT1RQTFVHX01B R0lDMAkweEZBNTAzOTJGCiAjZGVmaW5lIENQVTBfU1VQUE9SVF9IT1RQTFVHX01BR0lDMQkweDc5 MERDQTNBCiAKIHN0YXRpYyB2b2lkIF9faW9tZW0gKmNwdWNmZ19iYXNlOworc3RhdGljIHZvaWQg X19pb21lbSAqcl9jcHVjZmdfYmFzZTsKIHN0YXRpYyB2b2lkIF9faW9tZW0gKnByY21fYmFzZTsK IHN0YXRpYyB2b2lkIF9faW9tZW0gKnNyYW1fYl9zbXBfYmFzZTsKIApAQCAtMTU3LDYgKzE2Niwx NiBAQCBzdGF0aWMgaW50IHN1bnhpX2NwdV9wb3dlcnVwKHVuc2lnbmVkIGludCBjcHUsIHVuc2ln bmVkIGludCBjbHVzdGVyKQogCXJlZyAmPSB+UFJDTV9DUFVfUE9fUlNUX0NUUkxfQ09SRShjcHUp OwogCXdyaXRlbChyZWcsIHByY21fYmFzZSArIFBSQ01fQ1BVX1BPX1JTVF9DVFJMKGNsdXN0ZXIp KTsKIAorCWlmIChyX2NwdWNmZ19iYXNlKSB7CisJCS8qIGFzc2VydCBjcHUgcG93ZXItb24gcmVz ZXQgKi8KKwkJcmVnICA9IHJlYWRsKHJfY3B1Y2ZnX2Jhc2UgKworCQkJICAgICBSX0NQVUNGR19D TFVTVEVSX1BPX1JTVF9DVFJMKGNsdXN0ZXIpKTsKKwkJcmVnICY9IH4oUl9DUFVDRkdfQ0xVU1RF Ul9QT19SU1RfQ1RSTF9DT1JFKGNwdSkpOworCQl3cml0ZWwocmVnLCByX2NwdWNmZ19iYXNlICsK KwkJICAgICAgIFJfQ1BVQ0ZHX0NMVVNURVJfUE9fUlNUX0NUUkwoY2x1c3RlcikpOworCQl1ZGVs YXkoMTApOworCX0KKwogCS8qIENvcnRleC1BNzogaG9sZCBMMSByZXNldCBkaXNhYmxlIHNpZ25h bCBsb3cgKi8KIAlpZiAoIXN1bnhpX2NvcmVfaXNfY29ydGV4X2ExNShjcHUsIGNsdXN0ZXIpKSB7 CiAJCXJlZyA9IHJlYWRsKGNwdWNmZ19iYXNlICsgQ1BVQ0ZHX0NYX0NUUkxfUkVHMChjbHVzdGVy KSk7CkBAIC0xODAsMTcgKzE5OSwzNyBAQCBzdGF0aWMgaW50IHN1bnhpX2NwdV9wb3dlcnVwKHVu c2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBjbHVzdGVyKQogCS8qIG9wZW4gcG93ZXIgc3dp dGNoICovCiAJc3VueGlfY3B1X3Bvd2VyX3N3aXRjaF9zZXQoY3B1LCBjbHVzdGVyLCB0cnVlKTsK IAorCS8qIEhhbmRsZSBBODNUIGJpdCBzd2FwICovCisJaWYgKG9mX21hY2hpbmVfaXNfY29tcGF0 aWJsZSgiYWxsd2lubmVyLHN1bjhpLWE4M3QiKSkgeworCQlpZiAoY3B1ID09IDApCisJCQljcHUg PSA0OworCX0KKwogCS8qIGNsZWFyIHByb2Nlc3NvciBwb3dlciBnYXRlICovCiAJcmVnID0gcmVh ZGwocHJjbV9iYXNlICsgUFJDTV9QV1JPRkZfR0FUSU5HX1JFRyhjbHVzdGVyKSk7CiAJcmVnICY9 IH5QUkNNX1BXUk9GRl9HQVRJTkdfUkVHX0NPUkUoY3B1KTsKIAl3cml0ZWwocmVnLCBwcmNtX2Jh c2UgKyBQUkNNX1BXUk9GRl9HQVRJTkdfUkVHKGNsdXN0ZXIpKTsKIAl1ZGVsYXkoMjApOwogCisJ aWYgKG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgiYWxsd2lubmVyLHN1bjhpLWE4M3QiKSkgewor CQlpZiAoY3B1ID09IDQpCisJCQljcHUgPSAwOworCX0KKwogCS8qIGRlLWFzc2VydCBwcm9jZXNz b3IgcG93ZXItb24gcmVzZXQgKi8KIAlyZWcgPSByZWFkbChwcmNtX2Jhc2UgKyBQUkNNX0NQVV9Q T19SU1RfQ1RSTChjbHVzdGVyKSk7CiAJcmVnIHw9IFBSQ01fQ1BVX1BPX1JTVF9DVFJMX0NPUkUo Y3B1KTsKIAl3cml0ZWwocmVnLCBwcmNtX2Jhc2UgKyBQUkNNX0NQVV9QT19SU1RfQ1RSTChjbHVz dGVyKSk7CiAKKwlpZiAocl9jcHVjZmdfYmFzZSkgeworCQlyZWcgID0gcmVhZGwocl9jcHVjZmdf YmFzZSArCisJCQkgICAgIFJfQ1BVQ0ZHX0NMVVNURVJfUE9fUlNUX0NUUkwoY2x1c3RlcikpOwor CQlyZWcgfD0gUl9DUFVDRkdfQ0xVU1RFUl9QT19SU1RfQ1RSTF9DT1JFKGNwdSk7CisJCXdyaXRl bChyZWcsIHJfY3B1Y2ZnX2Jhc2UgKworCQkgICAgICAgUl9DUFVDRkdfQ0xVU1RFUl9QT19SU1Rf Q1RSTChjbHVzdGVyKSk7CisJCXVkZWxheSgxMCk7CisJfQorCiAJLyogZGUtYXNzZXJ0IGFsbCBw cm9jZXNzb3IgcmVzZXRzICovCiAJcmVnID0gcmVhZGwoY3B1Y2ZnX2Jhc2UgKyBDUFVDRkdfQ1hf UlNUX0NUUkwoY2x1c3RlcikpOwogCXJlZyB8PSBDUFVDRkdfQ1hfUlNUX0NUUkxfREJHX1JTVChj cHUpOwpAQCAtMjEyLDYgKzI1MSwxNCBAQCBzdGF0aWMgaW50IHN1bnhpX2NsdXN0ZXJfcG93ZXJ1 cCh1bnNpZ25lZCBpbnQgY2x1c3RlcikKIAlpZiAoY2x1c3RlciA+PSBTVU5YSV9OUl9DTFVTVEVS UykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwkvKiBGb3IgQTgzVCwgYXNzZXJ0IGNsdXN0ZXIgY29y ZXMgcmVzZXRzICovCisJaWYgKG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgiYWxsd2lubmVyLHN1 bjhpLWE4M3QiKSkgeworCQlyZWcgPSByZWFkbChjcHVjZmdfYmFzZSArIENQVUNGR19DWF9SU1Rf Q1RSTChjbHVzdGVyKSk7CisJCXJlZyAmPSB+Q1BVQ0ZHX0NYX1JTVF9DVFJMX0NPUkVfUlNUX0FM TDsgICAvKiBDb3JlIFJlc2V0ICAgICovCisJCXdyaXRlbChyZWcsIGNwdWNmZ19iYXNlICsgQ1BV Q0ZHX0NYX1JTVF9DVFJMKGNsdXN0ZXIpKTsKKwkJdWRlbGF5KDEwKTsKKwl9CisKIAkvKiBhc3Nl cnQgQUNJTkFDVE0gKi8KIAlyZWcgPSByZWFkbChjcHVjZmdfYmFzZSArIENQVUNGR19DWF9DVFJM X1JFRzEoY2x1c3RlcikpOwogCXJlZyB8PSBDUFVDRkdfQ1hfQ1RSTF9SRUcxX0FDSU5BQ1RNOwpA QCAtMjIyLDYgKzI2OSwxNiBAQCBzdGF0aWMgaW50IHN1bnhpX2NsdXN0ZXJfcG93ZXJ1cCh1bnNp Z25lZCBpbnQgY2x1c3RlcikKIAlyZWcgJj0gflBSQ01fQ1BVX1BPX1JTVF9DVFJMX0NPUkVfQUxM OwogCXdyaXRlbChyZWcsIHByY21fYmFzZSArIFBSQ01fQ1BVX1BPX1JTVF9DVFJMKGNsdXN0ZXIp KTsKIAorCS8qIGFzc2VydCBjbHVzdGVyIGNvcmVzIHJlc2V0cyAqLworCWlmIChyX2NwdWNmZ19i YXNlKSB7CisJCXJlZyAgPSByZWFkbChyX2NwdWNmZ19iYXNlICsKKwkJCSAgICAgUl9DUFVDRkdf Q0xVU1RFUl9QT19SU1RfQ1RSTChjbHVzdGVyKSk7CisJCXJlZyAmPSB+Q1BVQ0ZHX0NYX1JTVF9D VFJMX0NPUkVfUlNUX0FMTDsKKwkJd3JpdGVsKHJlZywgcl9jcHVjZmdfYmFzZSArCisJCSAgICAg ICBSX0NQVUNGR19DTFVTVEVSX1BPX1JTVF9DVFJMKGNsdXN0ZXIpKTsKKwkJdWRlbGF5KDEwKTsK Kwl9CisKIAkvKiBhc3NlcnQgY2x1c3RlciByZXNldHMgKi8KIAlyZWcgPSByZWFkbChjcHVjZmdf YmFzZSArIENQVUNGR19DWF9SU1RfQ1RSTChjbHVzdGVyKSk7CiAJcmVnICY9IH5DUFVDRkdfQ1hf UlNUX0NUUkxfREJHX1NPQ19SU1Q7CkBAIC0yNTIsNyArMzA5LDEwIEBAIHN0YXRpYyBpbnQgc3Vu eGlfY2x1c3Rlcl9wb3dlcnVwKHVuc2lnbmVkIGludCBjbHVzdGVyKQogCiAJLyogY2xlYXIgY2x1 c3RlciBwb3dlciBnYXRlICovCiAJcmVnID0gcmVhZGwocHJjbV9iYXNlICsgUFJDTV9QV1JPRkZf R0FUSU5HX1JFRyhjbHVzdGVyKSk7Ci0JcmVnICY9IH5QUkNNX1BXUk9GRl9HQVRJTkdfUkVHX0NM VVNURVI7CisJaWYgKG9mX21hY2hpbmVfaXNfY29tcGF0aWJsZSgiYWxsd2lubmVyLHN1bjhpLWE4 M3QiKSkKKwkJcmVnICY9IH5QUkNNX1BXUk9GRl9HQVRJTkdfUkVHX0NMVVNURVJfU1VOOEk7CisJ ZWxzZQorCQlyZWcgJj0gflBSQ01fUFdST0ZGX0dBVElOR19SRUdfQ0xVU1RFUl9TVU45STsKIAl3 cml0ZWwocmVnLCBwcmNtX2Jhc2UgKyBQUkNNX1BXUk9GRl9HQVRJTkdfUkVHKGNsdXN0ZXIpKTsK IAl1ZGVsYXkoMjApOwogCkBAIC01MTYsNyArNTc2LDEwIEBAIHN0YXRpYyBpbnQgc3VueGlfY2x1 c3Rlcl9wb3dlcmRvd24odW5zaWduZWQgaW50IGNsdXN0ZXIpCiAJLyogZ2F0ZSBjbHVzdGVyIHBv d2VyICovCiAJcHJfZGVidWcoIiVzOiBnYXRlIGNsdXN0ZXIgcG93ZXJcbiIsIF9fZnVuY19fKTsK IAlyZWcgPSByZWFkbChwcmNtX2Jhc2UgKyBQUkNNX1BXUk9GRl9HQVRJTkdfUkVHKGNsdXN0ZXIp KTsKLQlyZWcgfD0gUFJDTV9QV1JPRkZfR0FUSU5HX1JFR19DTFVTVEVSOworCWlmIChvZl9tYWNo aW5lX2lzX2NvbXBhdGlibGUoImFsbHdpbm5lcixzdW44aS1hODN0IikpCisJCXJlZyB8PSBQUkNN X1BXUk9GRl9HQVRJTkdfUkVHX0NMVVNURVJfU1VOOEk7CisJZWxzZQorCQlyZWcgfD0gUFJDTV9Q V1JPRkZfR0FUSU5HX1JFR19DTFVTVEVSX1NVTjlJOwogCXdyaXRlbChyZWcsIHByY21fYmFzZSAr IFBSQ01fUFdST0ZGX0dBVElOR19SRUcoY2x1c3RlcikpOwogCXVkZWxheSgyMCk7CiAKQEAgLTY4 NCwzNyArNzQ3LDI1IEBAIHN0YXRpYyBpbnQgX19pbml0IHN1bnhpX21jX3NtcF9sb29rYmFjayh2 b2lkKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHN1bnhpX21jX3NtcF9p bml0KHZvaWQpCitzdGF0aWMgaW50IHN1bjlpX2R0X3BhcnNpbmcoc3RydWN0IHJlc291cmNlIHJl cykKIHsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdWNmZ19ub2RlLCAqc3JhbV9ub2RlLCAqbm9k ZTsKLQlzdHJ1Y3QgcmVzb3VyY2UgcmVzOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcHJjbV9ub2Rl LCAqY3B1Y2ZnX25vZGUsICpzcmFtX25vZGU7CiAJaW50IHJldDsKIAotCWlmICghb2ZfbWFjaGlu ZV9pc19jb21wYXRpYmxlKCJhbGx3aW5uZXIsc3VuOWktYTgwIikpCi0JCXJldHVybiAtRU5PREVW OwotCi0JaWYgKCFzdW54aV9tY19zbXBfY3B1X3RhYmxlX2luaXQoKSkKLQkJcmV0dXJuIC1FSU5W QUw7Ci0KLQlpZiAoIWNjaV9wcm9iZWQoKSkgewotCQlwcl9lcnIoIiVzOiBDQ0ktNDAwIG5vdCBh dmFpbGFibGVcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIC1FTk9ERVY7Ci0JfQotCi0Jbm9kZSA9 IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsICJhbGx3aW5uZXIsc3VuOWktYTgw LXByY20iKTsKLQlpZiAoIW5vZGUpIHsKLQkJcHJfZXJyKCIlczogUFJDTSBub3QgYXZhaWxhYmxl XG4iLCBfX2Z1bmNfXyk7CisJcHJjbV9ub2RlID0gb2ZfZmluZF9jb21wYXRpYmxlX25vZGUoTlVM TCwgTlVMTCwKKwkJCQkgICAgICAgImFsbHdpbm5lcixzdW45aS1hODAtcHJjbSIpOworCWlmICgh cHJjbV9ub2RlKQogCQlyZXR1cm4gLUVOT0RFVjsKLQl9CiAKIAkvKgogCSAqIFVuZm9ydHVuYXRl bHkgd2UgY2FuIG5vdCByZXF1ZXN0IHRoZSBJL08gcmVnaW9uIGZvciB0aGUgUFJDTS4KIAkgKiBJ dCBpcyBzaGFyZWQgd2l0aCB0aGUgUFJDTSBjbG9jay4KIAkgKi8KLQlwcmNtX2Jhc2UgPSBvZl9p b21hcChub2RlLCAwKTsKLQlvZl9ub2RlX3B1dChub2RlKTsKKwlwcmNtX2Jhc2UgPSBvZl9pb21h cChwcmNtX25vZGUsIDApOworCW9mX25vZGVfcHV0KHByY21fbm9kZSk7CiAJaWYgKCFwcmNtX2Jh c2UpIHsKIAkJcHJfZXJyKCIlczogZmFpbGVkIHRvIG1hcCBQUkNNIHJlZ2lzdGVyc1xuIiwgX19m dW5jX18pOworCQlpb3VubWFwKHByY21fYmFzZSk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApA QCAtNzQ4LDM1ICs3OTksODggQEAgc3RhdGljIGludCBfX2luaXQgc3VueGlfbWNfc21wX2luaXQo dm9pZCkKIAkJZ290byBlcnJfcHV0X3NyYW1fbm9kZTsKIAl9CiAKLQkvKiBDb25maWd1cmUgQ0NJ LTQwMCBmb3IgYm9vdCBjbHVzdGVyICovCi0JcmV0ID0gc3VueGlfbWNfc21wX2xvb2tiYWNrKCk7 Ci0JaWYgKHJldCkgewotCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gY29uZmlndXJlIGJvb3QgY2x1 c3RlcjogJWRcbiIsCi0JCSAgICAgICBfX2Z1bmNfXywgcmV0KTsKLQkJZ290byBlcnJfdW5tYXBf cmVsZWFzZV9zZWN1cmVfc3JhbTsKLQl9CisJcl9jcHVjZmdfYmFzZSA9IE5VTEw7CiAKIAkvKiBX ZSBkb24ndCBuZWVkIHRoZSBDUFVDRkcgYW5kIFNSQU0gZGV2aWNlIG5vZGVzIGFueW1vcmUgKi8K IAlvZl9ub2RlX3B1dChjcHVjZmdfbm9kZSk7CiAJb2Zfbm9kZV9wdXQoc3JhbV9ub2RlKTsKIAot CS8qIFNldCB0aGUgaGFyZHdhcmUgZW50cnkgcG9pbnQgYWRkcmVzcyAqLwotCXdyaXRlbChfX3Bh X3N5bWJvbChzdW54aV9tY19zbXBfc2Vjb25kYXJ5X3N0YXJ0dXApLAotCSAgICAgICBwcmNtX2Jh c2UgKyBQUkNNX0NQVV9TT0ZUX0VOVFJZX1JFRyk7Ci0KLQkvKiBBY3R1YWxseSBlbmFibGUgbXVs dGkgY2x1c3RlciBTTVAgKi8KLQlzbXBfc2V0X29wcygmc3VueGlfbWNfc21wX3NtcF9vcHMpOwot Ci0JcHJfaW5mbygic3VueGkgbXVsdGkgY2x1c3RlciBTTVAgc3VwcG9ydCBpbnN0YWxsZWRcbiIp OwotCiAJcmV0dXJuIDA7CiAKLWVycl91bm1hcF9yZWxlYXNlX3NlY3VyZV9zcmFtOgotCWlvdW5t YXAoc3JhbV9iX3NtcF9iYXNlKTsKLQlvZl9hZGRyZXNzX3RvX3Jlc291cmNlKHNyYW1fbm9kZSwg MCwgJnJlcyk7CitlcnJfdW5tYXBfcmVsZWFzZV9jcHVjZmc6CisJaW91bm1hcChjcHVjZmdfYmFz ZSk7CisJb2ZfYWRkcmVzc190b19yZXNvdXJjZShjcHVjZmdfbm9kZSwgMCwgJnJlcyk7CiAJcmVs ZWFzZV9tZW1fcmVnaW9uKHJlcy5zdGFydCwgcmVzb3VyY2Vfc2l6ZSgmcmVzKSk7CiBlcnJfcHV0 X3NyYW1fbm9kZToKIAlvZl9ub2RlX3B1dChzcmFtX25vZGUpOworZXJyX3B1dF9jcHVjZmdfbm9k ZToKKwlvZl9ub2RlX3B1dChjcHVjZmdfbm9kZSk7CitlcnJfdW5tYXBfcHJjbToKKwlpb3VubWFw KHByY21fYmFzZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHN1bjhpX2R0X3Bh cnNpbmcoc3RydWN0IHJlc291cmNlIHJlcykKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUs ICpjcHVjZmdfbm9kZTsKKwlpbnQgcmV0OworCisJbm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9u b2RlKE5VTEwsIE5VTEwsCisJCQkJICAgICAgICJhbGx3aW5uZXIsc3VuOGktYTgzdC1wcmNtIik7 CisJaWYgKCFub2RlKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qCisJICogVW5mb3J0dW5hdGVs eSB3ZSBjYW4gbm90IHJlcXVlc3QgdGhlIEkvTyByZWdpb24gZm9yIHRoZSBQUkNNLgorCSAqIEl0 IGlzIHNoYXJlZCB3aXRoIHRoZSBQUkNNIGNsb2NrLgorCSAqLworCXByY21fYmFzZSA9IG9mX2lv bWFwKG5vZGUsIDApOworCW9mX25vZGVfcHV0KG5vZGUpOworCWlmICghcHJjbV9iYXNlKSB7CisJ CXByX2VycigiJXM6IGZhaWxlZCB0byBtYXAgUFJDTSByZWdpc3RlcnNcbiIsIF9fZnVuY19fKTsK KwkJaW91bm1hcChwcmNtX2Jhc2UpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwljcHVjZmdf bm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsCisJCQkJCSAgICAgICJh bGx3aW5uZXIsc3VuOGktYTgzdC1jcHVjZmciKTsKKwlpZiAoIWNwdWNmZ19ub2RlKSB7CisJCXJl dCA9IC1FTk9ERVY7CisJCXByX2VycigiJXM6IENQVUNGRyBub3QgYXZhaWxhYmxlXG4iLCBfX2Z1 bmNfXyk7CisJCWdvdG8gZXJyX3VubWFwX3ByY207CisJfQorCisJY3B1Y2ZnX2Jhc2UgPSBvZl9p b19yZXF1ZXN0X2FuZF9tYXAoY3B1Y2ZnX25vZGUsIDAsICJzdW54aS1tYy1zbXAiKTsKKwlpZiAo SVNfRVJSKGNwdWNmZ19iYXNlKSkgeworCQlyZXQgPSBQVFJfRVJSKGNwdWNmZ19iYXNlKTsKKwkJ cHJfZXJyKCIlczogZmFpbGVkIHRvIG1hcCBDUFVDRkcgcmVnaXN0ZXJzOiAlZFxuIiwKKwkJICAg ICAgIF9fZnVuY19fLCByZXQpOworCQlnb3RvIGVycl9wdXRfY3B1Y2ZnX25vZGU7CisJfQorCisJ bm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsCisJCQkJICAgICAgICJh bGx3aW5uZXIsc3VuOGktYTgzdC1yLWNwdWNmZyIpOworCWlmICghbm9kZSkgeworCQlyZXQgPSAt RU5PREVWOworCQlnb3RvIGVycl91bm1hcF9yZWxlYXNlX2NwdWNmZzsKKwl9CisKKwlyX2NwdWNm Z19iYXNlID0gb2ZfaW9tYXAobm9kZSwgMCk7CisJaWYgKCFyX2NwdWNmZ19iYXNlKSB7CisJCXBy X2VycigiJXM6IGZhaWxlZCB0byBtYXAgUi1DUFVDRkcgcmVnaXN0ZXJzXG4iLAorCQkgICAgICAg X19mdW5jX18pOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9wdXRfbm9kZTsKKwl9CisK KwkvKiBXZSBkb24ndCBuZWVkIHRoZSBDUFVDRkcgZGV2aWNlIG5vZGUgYW55bW9yZSAqLworCW9m X25vZGVfcHV0KGNwdWNmZ19ub2RlKTsKKwlvZl9ub2RlX3B1dChub2RlKTsKKworCXJldHVybiAw OworZXJyX3B1dF9ub2RlOgorCW9mX25vZGVfcHV0KG5vZGUpOwogZXJyX3VubWFwX3JlbGVhc2Vf Y3B1Y2ZnOgogCWlvdW5tYXAoY3B1Y2ZnX2Jhc2UpOwogCW9mX2FkZHJlc3NfdG9fcmVzb3VyY2Uo Y3B1Y2ZnX25vZGUsIDAsICZyZXMpOwpAQCAtNzg1LDYgKzg4OSw1NyBAQCBzdGF0aWMgaW50IF9f aW5pdCBzdW54aV9tY19zbXBfaW5pdCh2b2lkKQogCW9mX25vZGVfcHV0KGNwdWNmZ19ub2RlKTsK IGVycl91bm1hcF9wcmNtOgogCWlvdW5tYXAocHJjbV9iYXNlKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBpbnQgX19pbml0IHN1bnhpX21jX3NtcF9pbml0KHZvaWQpCit7CisJc3RydWN0 IHJlc291cmNlIHJlczsKKwlpbnQgcmV0OworCisJaWYgKCFvZl9tYWNoaW5lX2lzX2NvbXBhdGli bGUoImFsbHdpbm5lcixzdW45aS1hODAiKSAmJgorCSAgICAhb2ZfbWFjaGluZV9pc19jb21wYXRp YmxlKCJhbGx3aW5uZXIsc3VuOGktYTgzdCIpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICgh c3VueGlfbWNfc21wX2NwdV90YWJsZV9pbml0KCkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYg KCFjY2lfcHJvYmVkKCkpIHsKKwkJcHJfZXJyKCIlczogQ0NJLTQwMCBub3QgYXZhaWxhYmxlXG4i LCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmIChvZl9tYWNoaW5lX2lz X2NvbXBhdGlibGUoImFsbHdpbm5lcixzdW45aS1hODAiKSkKKwkJcmV0ID0gc3VuOWlfZHRfcGFy c2luZyhyZXMpOworCWVsc2UKKwkJcmV0ID0gc3VuOGlfZHRfcGFyc2luZyhyZXMpOworCWlmIChy ZXQpIHsKKwkJcHJfZXJyKCIlczogZmFpbGVkIHRvIHBhcnNlIERUOiAlZFxuIiwgX19mdW5jX18s IHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogQ29uZmlndXJlIENDSS00MDAgZm9yIGJv b3QgY2x1c3RlciAqLworCXJldCA9IHN1bnhpX21jX3NtcF9sb29rYmFjaygpOworCWlmIChyZXQp IHsKKwkJcHJfZXJyKCIlczogZmFpbGVkIHRvIGNvbmZpZ3VyZSBib290IGNsdXN0ZXI6ICVkXG4i LAorCQkgICAgICAgX19mdW5jX18sIHJldCk7CisJCXJldHVybiByZXQ7IC8qIE1ZTVk6IE5lZWQg dG8gaGFuZGxlIHRoaXMgZXJyb3IgY2FzZSAqLworCX0KKworCS8qIFNldCB0aGUgaGFyZHdhcmUg ZW50cnkgcG9pbnQgYWRkcmVzcyAqLworCWlmIChvZl9tYWNoaW5lX2lzX2NvbXBhdGlibGUoImFs bHdpbm5lcixzdW45aS1hODAiKSkKKwkJd3JpdGVsKF9fcGFfc3ltYm9sKHN1bnhpX21jX3NtcF9z ZWNvbmRhcnlfc3RhcnR1cCksCisJCSAgICAgICBwcmNtX2Jhc2UgKyBQUkNNX0NQVV9TT0ZUX0VO VFJZX1JFRyk7CisJZWxzZQorCQl3cml0ZWwoX19wYV9zeW1ib2woc3VueGlfbWNfc21wX3NlY29u ZGFyeV9zdGFydHVwKSwKKwkJICAgICAgIHJfY3B1Y2ZnX2Jhc2UgKyBSX0NQVUNGR19DUFVfU09G VF9FTlRSWV9SRUcpOworCisJLyogQWN0dWFsbHkgZW5hYmxlIG11bHRpIGNsdXN0ZXIgU01QICov CisJc21wX3NldF9vcHMoJnN1bnhpX21jX3NtcF9zbXBfb3BzKTsKKworCXByX2luZm8oInN1bnhp IG11bHRpIGNsdXN0ZXIgU01QIHN1cHBvcnQgaW5zdGFsbGVkXG4iKTsKKwogCXJldHVybiByZXQ7 CiB9CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK