From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Subject: [PATCH 2/2] mailbox: introduce ARM SMC based mailbox Date: Thu, 23 May 2019 05:51:02 +0000 Message-ID: <20190523060437.11059-3-peng.fan@nxp.com> References: <20190523060437.11059-1-peng.fan@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190523060437.11059-1-peng.fan@nxp.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: "robh+dt@kernel.org" , "mark.rutland@arm.com" , "jassisinghbrar@gmail.com" , "sudeep.holla@arm.com" Cc: "kernel@pengutronix.de" , dl-linux-imx , "shawnguo@kernel.org" , "festevam@gmail.com" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "andre.przywara@arm.com" , "van.freenix@gmail.com" , Peng Fan List-Id: devicetree@vger.kernel.org VGhpcyBtYWlsYm94IGRyaXZlciBpbXBsZW1lbnRzIGEgbWFpbGJveCB3aGljaCBzaWduYWxzIHRy YW5zbWl0dGVkIGRhdGEKdmlhIGFuIEFSTSBzbWMgKHNlY3VyZSBtb25pdG9yIGNhbGwpIGluc3Ry dWN0aW9uLiBUaGUgbWFpbGJveCByZWNlaXZlcgppcyBpbXBsZW1lbnRlZCBpbiBmaXJtd2FyZSBh bmQgY2FuIHN5bmNocm9ub3VzbHkgcmV0dXJuIGRhdGEgd2hlbiBpdApyZXR1cm5zIGV4ZWN1dGlv biB0byB0aGUgbm9uLXNlY3VyZSB3b3JsZCBhZ2Fpbi4KQW4gYXN5bmNocm9ub3VzIHJlY2VpdmUg cGF0aCBpcyBub3QgaW1wbGVtZW50ZWQuClRoaXMgYWxsb3dzIHRoZSB1c2FnZSBvZiBhIG1haWxi b3ggdG8gdHJpZ2dlciBmaXJtd2FyZSBhY3Rpb25zIG9uIFNvQ3MKd2hpY2ggZWl0aGVyIGRvbid0 IGhhdmUgYSBzZXBhcmF0ZSBtYW5hZ2VtZW50IHByb2Nlc3NvciBvciBvbiB3aGljaCBzdWNoCmEg Y29yZSBpcyBub3QgYXZhaWxhYmxlLiBBIHVzZXIgb2YgdGhpcyBtYWlsYm94IGNvdWxkIGJlIHRo ZSBTQ1AKaW50ZXJmYWNlLgoKTW9kaWZpZWQgZnJvbSBBbmRyZSBQcnp5d2FyYSdzIHYyIHBhdGNo Cmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3BhdGNod29yay9wYXRjaC84MTI5OTkvCgpDYzogQW5k cmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IFBlbmcg RmFuIDxwZW5nLmZhbkBueHAuY29tPgotLS0KIGRyaXZlcnMvbWFpbGJveC9LY29uZmlnICAgICAg ICAgICAgICAgICB8ICAgNyArKwogZHJpdmVycy9tYWlsYm94L01ha2VmaWxlICAgICAgICAgICAg ICAgIHwgICAyICsKIGRyaXZlcnMvbWFpbGJveC9hcm0tc21jLW1haWxib3guYyAgICAgICB8IDE1 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC9tYWlsYm94 L2FybS1zbWMtbWFpbGJveC5oIHwgIDEwICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNzMgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWFpbGJveC9hcm0tc21jLW1haWxi b3guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWFpbGJveC9hcm0tc21jLW1h aWxib3guaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFpbGJveC9LY29uZmlnIGIvZHJpdmVycy9t YWlsYm94L0tjb25maWcKaW5kZXggNTk1NTQyYmZhZTg1Li5jM2JkMGYxZGRjZDggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWFpbGJveC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWFpbGJveC9LY29uZmln CkBAIC0xNSw2ICsxNSwxMyBAQCBjb25maWcgQVJNX01IVQogCSAgVGhlIGNvbnRyb2xsZXIgaGFz IDMgbWFpbGJveCBjaGFubmVscywgdGhlIGxhc3Qgb2Ygd2hpY2ggY2FuIGJlCiAJICB1c2VkIGlu IFNlY3VyZSBtb2RlIG9ubHkuCiAKK2NvbmZpZyBBUk1fU01DX01CT1gKKwl0cmlzdGF0ZSAiR2Vu ZXJpYyBBUk0gc21jIG1haWxib3giCisJZGVwZW5kcyBvbiBPRiAmJiBIQVZFX0FSTV9TTUNDQwor CWhlbHAKKwkgIEdlbmVyaWMgbWFpbGJveCBkcml2ZXIgd2hpY2ggdXNlcyBBUk0gc21jIGNhbGxz IHRvIGNhbGwgaW50bworCSAgZmlybXdhcmUgZm9yIHRyaWdnZXJpbmcgbWFpbGJveGVzLgorCiBj b25maWcgSU1YX01CT1gKIAl0cmlzdGF0ZSAiaS5NWCBNYWlsYm94IgogCWRlcGVuZHMgb24gQVJD SF9NWEMgfHwgQ09NUElMRV9URVNUCmRpZmYgLS1naXQgYS9kcml2ZXJzL21haWxib3gvTWFrZWZp bGUgYi9kcml2ZXJzL21haWxib3gvTWFrZWZpbGUKaW5kZXggYzIyZmFkNmY2OTZiLi45MzkxOGE4 NGM5MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFpbGJveC9NYWtlZmlsZQorKysgYi9kcml2ZXJz L21haWxib3gvTWFrZWZpbGUKQEAgLTcsNiArNyw4IEBAIG9iai0kKENPTkZJR19NQUlMQk9YX1RF U1QpCSs9IG1haWxib3gtdGVzdC5vCiAKIG9iai0kKENPTkZJR19BUk1fTUhVKQkrPSBhcm1fbWh1 Lm8KIAorb2JqLSQoQ09ORklHX0FSTV9TTUNfTUJPWCkJKz0gYXJtLXNtYy1tYWlsYm94Lm8KKwog b2JqLSQoQ09ORklHX0lNWF9NQk9YKQkrPSBpbXgtbWFpbGJveC5vCiAKIG9iai0kKENPTkZJR19B Uk1BREFfMzdYWF9SV1RNX01CT1gpCSs9IGFybWFkYS0zN3h4LXJ3dG0tbWFpbGJveC5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL21haWxib3gvYXJtLXNtYy1tYWlsYm94LmMgYi9kcml2ZXJzL21haWxi b3gvYXJtLXNtYy1tYWlsYm94LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5mNGRhMTA2MWY3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21haWxib3gvYXJt LXNtYy1tYWlsYm94LmMKQEAgLTAsMCArMSwxNTQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LDIwMTcgQVJNIEx0ZC4KKyAq IENvcHlyaWdodCAyMDE5IE5YUAorICovCisKKyNpbmNsdWRlIDxsaW51eC9hcm0tc21jY2MuaD4K KyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNp bmNsdWRlIDxsaW51eC9tYWlsYm94X2NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tYWls Ym94L2FybS1zbWMtbWFpbGJveC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorCisjZGVmaW5lIEFSTV9TTUNfTUJPWF9VU0Vf SFZDCUJJVCgwKQorCitzdHJ1Y3QgYXJtX3NtY19jaGFuX2RhdGEgeworCXUzMiBmdW5jdGlvbl9p ZDsKKwl1MzIgZmxhZ3M7Cit9OworCitzdGF0aWMgaW50IGFybV9zbWNfc2VuZF9kYXRhKHN0cnVj dCBtYm94X2NoYW4gKmxpbmssIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGFybV9zbWNfY2hhbl9k YXRhICpjaGFuX2RhdGEgPSBsaW5rLT5jb25fcHJpdjsKKwlzdHJ1Y3QgYXJtX3NtY2NjX21ib3hf Y21kICpjbWQgPSBkYXRhOworCXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKKwl1MzIgZnVuY3Rp b25faWQ7CisKKwlpZiAoY2hhbl9kYXRhLT5mdW5jdGlvbl9pZCAhPSBVSU5UX01BWCkKKwkJZnVu Y3Rpb25faWQgPSBjaGFuX2RhdGEtPmZ1bmN0aW9uX2lkOworCWVsc2UKKwkJZnVuY3Rpb25faWQg PSBjbWQtPmEwOworCisJaWYgKGNoYW5fZGF0YS0+ZmxhZ3MgJiBBUk1fU01DX01CT1hfVVNFX0hW QykKKwkJYXJtX3NtY2NjX2h2YyhmdW5jdGlvbl9pZCwgY21kLT5hMSwgY21kLT5hMiwgY21kLT5h MywgY21kLT5hNCwKKwkJCSAgICAgIGNtZC0+YTUsIGNtZC0+YTYsIGNtZC0+YTcsICZyZXMpOwor CWVsc2UKKwkJYXJtX3NtY2NjX3NtYyhmdW5jdGlvbl9pZCwgY21kLT5hMSwgY21kLT5hMiwgY21k LT5hMywgY21kLT5hNCwKKwkJCSAgICAgIGNtZC0+YTUsIGNtZC0+YTYsIGNtZC0+YTcsICZyZXMp OworCisJbWJveF9jaGFuX3JlY2VpdmVkX2RhdGEobGluaywgKHZvaWQgKilyZXMuYTApOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWJveF9jaGFuX29wcyBhcm1fc21j X21ib3hfY2hhbl9vcHMgPSB7CisJLnNlbmRfZGF0YQk9IGFybV9zbWNfc2VuZF9kYXRhLAorfTsK Kworc3RhdGljIGludCBhcm1fc21jX21ib3hfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBtYm94 X2NvbnRyb2xsZXIgKm1ib3g7CisJc3RydWN0IGFybV9zbWNfY2hhbl9kYXRhICpjaGFuX2RhdGE7 CisJY29uc3QgY2hhciAqbWV0aG9kOworCWJvb2wgdXNlX2h2YyA9IGZhbHNlOworCWludCByZXQs IGk7CisJdTMyIHZhbDsKKworCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2Rl LCAiYXJtLG51bS1jaGFucyIsICZ2YWwpKSB7CisJCWlmICh2YWwgPCAxIHx8IHZhbCA+IElOVF9N QVgpIHsKKwkJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBhcm0sbnVtLWNoYW5zIHZhbHVlICV1IG9m ICVwT0ZuXG4iLCB2YWwsIHBkZXYtPmRldi5vZl9ub2RlKTsKKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisJfQorCisJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYtPm9mX25vZGUsICJt ZXRob2QiLCAmbWV0aG9kKSkgeworCQlpZiAoIXN0cmNtcCgiaHZjIiwgbWV0aG9kKSkgeworCQkJ dXNlX2h2YyA9IHRydWU7CisJCX0gZWxzZSBpZiAoIXN0cmNtcCgic21jIiwgbWV0aG9kKSkgewor CQkJdXNlX2h2YyA9IGZhbHNlOworCQl9IGVsc2UgeworCQkJZGV2X3dhcm4oZGV2LCAiaW52YWxp ZCBcIm1ldGhvZFwiIHByb3BlcnR5OiAlc1xuIiwKKwkJCQkgbWV0aG9kKTsKKworCQkJcmV0dXJu IC1FSU5WQUw7CisJCX0KKwl9CisKKwltYm94ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpt Ym94KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtYm94KQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1i b3gtPm51bV9jaGFucyA9IHZhbDsKKwltYm94LT5jaGFucyA9IGRldm1fa2NhbGxvYyhkZXYsIG1i b3gtPm51bV9jaGFucywgc2l6ZW9mKCptYm94LT5jaGFucyksCisJCQkJICAgR0ZQX0tFUk5FTCk7 CisJaWYgKCFtYm94LT5jaGFucykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwljaGFuX2RhdGEgPSBk ZXZtX2tjYWxsb2MoZGV2LCBtYm94LT5udW1fY2hhbnMsIHNpemVvZigqY2hhbl9kYXRhKSwKKwkJ CQkgR0ZQX0tFUk5FTCk7CisJaWYgKCFjaGFuX2RhdGEpCisJCXJldHVybiAtRU5PTUVNOworCisJ Zm9yIChpID0gMDsgaSA8IG1ib3gtPm51bV9jaGFuczsgaSsrKSB7CisJCXUzMiBmdW5jdGlvbl9p ZDsKKworCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChkZXYtPm9mX25vZGUsCisJ CQkJCQkgImFybSxmdW5jLWlkcyIsIGksCisJCQkJCQkgJmZ1bmN0aW9uX2lkKTsKKwkJaWYgKHJl dCkKKwkJCWNoYW5fZGF0YVtpXS5mdW5jdGlvbl9pZCA9IFVJTlRfTUFYOworCisJCWVsc2UKKwkJ CWNoYW5fZGF0YVtpXS5mdW5jdGlvbl9pZCA9IGZ1bmN0aW9uX2lkOworCisJCWlmICh1c2VfaHZj KQorCQkJY2hhbl9kYXRhW2ldLmZsYWdzIHw9IEFSTV9TTUNfTUJPWF9VU0VfSFZDOworCQltYm94 LT5jaGFuc1tpXS5jb25fcHJpdiA9ICZjaGFuX2RhdGFbaV07CisJfQorCisJbWJveC0+dHhkb25l X3BvbGwgPSBmYWxzZTsKKwltYm94LT50eGRvbmVfaXJxID0gZmFsc2U7CisJbWJveC0+b3BzID0g JmFybV9zbWNfbWJveF9jaGFuX29wczsKKwltYm94LT5kZXYgPSBkZXY7CisKKwlyZXQgPSBtYm94 X2NvbnRyb2xsZXJfcmVnaXN0ZXIobWJveCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1ib3gpOworCWRldl9pbmZvKGRldiwgIkFSTSBT TUMgbWFpbGJveCBlbmFibGVkIHdpdGggJWQgY2hhbiVzLlxuIiwKKwkJIG1ib3gtPm51bV9jaGFu cywgbWJveC0+bnVtX2NoYW5zID09IDEgPyAiIiA6ICJzIik7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGFybV9zbWNfbWJveF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwlzdHJ1Y3QgbWJveF9jb250cm9sbGVyICptYm94ID0gcGxhdGZvcm1fZ2V0X2Ry dmRhdGEocGRldik7CisKKwltYm94X2NvbnRyb2xsZXJfdW5yZWdpc3RlcihtYm94KTsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXJtX3NtY19tYm94 X29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJhcm0sc21jLW1ib3giLCB9LAorCXt9 LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFybV9zbWNfbWJveF9vZl9tYXRjaCk7CisK K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFybV9zbWNfbWJveF9kcml2ZXIgPSB7CisJ LmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiYXJtLXNtYy1tYm94IiwKKwkJLm9mX21hdGNoX3RhYmxl ID0gYXJtX3NtY19tYm94X29mX21hdGNoLAorCX0sCisJLnByb2JlCQk9IGFybV9zbWNfbWJveF9w cm9iZSwKKwkucmVtb3ZlCQk9IGFybV9zbWNfbWJveF9yZW1vdmUsCit9OworbW9kdWxlX3BsYXRm b3JtX2RyaXZlcihhcm1fc21jX21ib3hfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiQW5kcmUg UHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04o IkdlbmVyaWMgQVJNIHNtYyBtYWlsYm94IGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tYWlsYm94L2FybS1zbWMtbWFpbGJveC5o IGIvaW5jbHVkZS9saW51eC9tYWlsYm94L2FybS1zbWMtbWFpbGJveC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2EzNjZmZTQ5MWMzCi0tLSAvZGV2L251bGwKKysr IGIvaW5jbHVkZS9saW51eC9tYWlsYm94L2FybS1zbWMtbWFpbGJveC5oCkBAIC0wLDAgKzEsMTAg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisKKyNpZm5kZWYgX0xJ TlVYX0FSTV9TTUNfTUFJTEJPWF9IXworI2RlZmluZSBfTElOVVhfQVJNX1NNQ19NQUlMQk9YX0hf CisKK3N0cnVjdCBhcm1fc21jY2NfbWJveF9jbWQgeworCXVuc2lnbmVkIGxvbmcgYTAsIGExLCBh MiwgYTMsIGE0LCBhNSwgYTYsIGE3OworfTsKKworI2VuZGlmIC8qIF9MSU5VWF9BUk1fU01DX01B SUxCT1hfSF8gKi8KLS0gCjIuMTYuNAoK