From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Tyshchenko Subject: [RFC PATCH 19/31] xen/arm: Introduce ARM SMC based mailbox Date: Thu, 9 Nov 2017 19:10:09 +0200 Message-ID: <1510247421-24094-20-git-send-email-olekstysh@gmail.com> References: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eCqLv-0004P9-W1 for xen-devel@lists.xenproject.org; Thu, 09 Nov 2017 17:10:56 +0000 Received: by mail-lf0-f68.google.com with SMTP id r135so8043421lfe.5 for ; Thu, 09 Nov 2017 09:10:53 -0800 (PST) In-Reply-To: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Oleksandr Tyshchenko , Stefano Stabellini , Andre Przywara , Julien Grall List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29t PgoKVGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgYm9ycm93ZWQgZnJvbSB0aGUgcGF0Y2ggc2VyaWVz IGZvciBMaW51eAp3aGljaCBoYXNuJ3QgYmVlbiB1cHN0cmVhbWVkIHlldDoKW1BBVENIIHYyIDAv M10gbWFpbGJveDogYXJtOiBpbnRyb2R1Y2Ugc21jIHRyaWdnZXJlZCBtYWlsYm94Cmh0dHBzOi8v bGttbC5vcmcvbGttbC8yMDE3LzcvMjMvMTI5CgpJIGFtIHZlcnkgZXhjaXRlZCBhYm91dCB0aGUg aWRlYSBkZXNjcmliZWQgaXQgYSBsaW5rIGFib3ZlLgpUaGlzIHNvbHV0aW9uIGxldHMgdXMgKHdo byBwbGF5cyB3aXRoIEFSTSBiYXNlZCBTb0NzIHdpdGgKU2VjdXJpdHkgRXh0ZW5zaW9ucyBlbmFi bGVkLCBidXQgd2l0aG91dCBwb3NzaWJpbGl0eSB0byBpbnZvbHZlCnNvbWUgc3RhbmRhbG9uZSBj by1wcm9zc2Vzb3IgdG8gY29udHJvbCBQTSkgaGF2ZSBTQ1BJIGJhc2VkIENQVUZyZXEKaW4gWGVu IG9uIEFSTSB3aXRoIGEgbWluaW1hbCBjb3N0LgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIFR5 c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29tPgpDQzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAbGluYXJvLm9yZz4KQ0M6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBsaW5h cm8ub3JnPgotLS0KIHhlbi9hcmNoL2FybS9jcHVmcmVxL2FybS1zbWMtbWFpbGJveC5jIHwgMTU1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE1NSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2NwdWZyZXEvYXJt LXNtYy1tYWlsYm94LmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vY3B1ZnJlcS9hcm0tc21j LW1haWxib3guYyBiL3hlbi9hcmNoL2FybS9jcHVmcmVxL2FybS1zbWMtbWFpbGJveC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YjYxYTcKLS0tIC9kZXYvbnVsbAorKysg Yi94ZW4vYXJjaC9hcm0vY3B1ZnJlcS9hcm0tc21jLW1haWxib3guYwpAQCAtMCwwICsxLDE1NSBA QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYsMjAxNyBBUk0gTHRkLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICogVGhpcyBkZXZpY2UgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGVt dWxhdGluZyBhIG1haWxib3ggYnkgdXNpbmcKKyAqIHNtYyBjYWxscywgYWxsb3dpbmcgYSAibWFp bGJveCIgY29uc3VtZXIgdG8gc2l0IGluIGZpcm13YXJlIHJ1bm5pbmcKKyAqIG9uIHRoZSBzYW1l IGNvcmUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21haWxib3hfY29udHJvbGxlci5oPgorI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L2FybS1zbWNjYy5oPgorCisjZGVmaW5lIEFSTV9TTUNfTUJPWF9VU0Vf SFZDCUJJVCgwKQorCitzdHJ1Y3QgYXJtX3NtY19jaGFuX2RhdGEgeworCXUzMiBmdW5jdGlvbl9p ZDsKKwl1MzIgZmxhZ3M7Cit9OworCitzdGF0aWMgaW50IGFybV9zbWNfc2VuZF9kYXRhKHN0cnVj dCBtYm94X2NoYW4gKmxpbmssIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGFybV9zbWNfY2hhbl9k YXRhICpjaGFuX2RhdGEgPSBsaW5rLT5jb25fcHJpdjsKKwl1MzIgZnVuY3Rpb25faWQgPSBjaGFu X2RhdGEtPmZ1bmN0aW9uX2lkOworCXN0cnVjdCBhcm1fc21jY2NfcmVzIHJlczsKKwl1MzIgbXNn ID0gKih1MzIgKilkYXRhOworCisJaWYgKGNoYW5fZGF0YS0+ZmxhZ3MgJiBBUk1fU01DX01CT1hf VVNFX0hWQykKKwkJYXJtX3NtY2NjX2h2YyhmdW5jdGlvbl9pZCwgbXNnLCAwLCAwLCAwLCAwLCAw LCAwLCAmcmVzKTsKKwllbHNlCisJCWFybV9zbWNjY19zbWMoZnVuY3Rpb25faWQsIG1zZywgMCwg MCwgMCwgMCwgMCwgMCwgJnJlcyk7CisKKwltYm94X2NoYW5fcmVjZWl2ZWRfZGF0YShsaW5rLCAo dm9pZCAqKXJlcy5hMCk7CisKKwlyZXR1cm4gMDsKK30KKworLyogVGhpcyBtYWlsYm94IGlzIHN5 bmNocm9ub3VzLCBzbyB3ZSBhcmUgYWx3YXlzIGRvbmUuICovCitzdGF0aWMgYm9vbCBhcm1fc21j X2xhc3RfdHhfZG9uZShzdHJ1Y3QgbWJveF9jaGFuICpsaW5rKQoreworCXJldHVybiB0cnVlOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG1ib3hfY2hhbl9vcHMgYXJtX3NtY19tYm94X2NoYW5f b3BzID0geworCS5zZW5kX2RhdGEJPSBhcm1fc21jX3NlbmRfZGF0YSwKKwkubGFzdF90eF9kb25l CT0gYXJtX3NtY19sYXN0X3R4X2RvbmUKK307CisKK3N0YXRpYyBpbnQgYXJtX3NtY19tYm94X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgbWJveF9jb250cm9sbGVyICptYm94OworCXN0cnVjdCBh cm1fc21jX2NoYW5fZGF0YSAqY2hhbl9kYXRhOworCWNvbnN0IGNoYXIgKm1ldGhvZDsKKwlib29s IHVzZV9odmMgPSBmYWxzZTsKKwlpbnQgcmV0LCBpOworCisJcmV0ID0gb2ZfcHJvcGVydHlfY291 bnRfZWxlbXNfb2Zfc2l6ZShkZXYtPm9mX25vZGUsICJhcm0sZnVuYy1pZHMiLAorCQkJCQkgICAg ICBzaXplb2YodTMyKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpZiAoIW9m X3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldi0+b2Zfbm9kZSwgIm1ldGhvZCIsICZtZXRob2QpKSB7 CisJCWlmICghc3RyY21wKCJodmMiLCBtZXRob2QpKSB7CisJCQl1c2VfaHZjID0gdHJ1ZTsKKwkJ fSBlbHNlIGlmICghc3RyY21wKCJzbWMiLCBtZXRob2QpKSB7CisJCQl1c2VfaHZjID0gZmFsc2U7 CisJCX0gZWxzZSB7CisJCQlkZXZfd2FybihkZXYsICJpbnZhbGlkIFwibWV0aG9kXCIgcHJvcGVy dHk6ICVzXG4iLAorCQkJCSBtZXRob2QpOworCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0K KworCW1ib3ggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1ib3gpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIW1ib3gpCisJCXJldHVybiAtRU5PTUVNOworCisJbWJveC0+bnVtX2NoYW5zID0gcmV0 OworCW1ib3gtPmNoYW5zID0gZGV2bV9rY2FsbG9jKGRldiwgbWJveC0+bnVtX2NoYW5zLCBzaXpl b2YoKm1ib3gtPmNoYW5zKSwKKwkJCQkgICBHRlBfS0VSTkVMKTsKKwlpZiAoIW1ib3gtPmNoYW5z KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWNoYW5fZGF0YSA9IGRldm1fa2NhbGxvYyhkZXYsIG1i b3gtPm51bV9jaGFucywgc2l6ZW9mKCpjaGFuX2RhdGEpLAorCQkJCSBHRlBfS0VSTkVMKTsKKwlp ZiAoIWNoYW5fZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKGkgPSAwOyBpIDwgbWJv eC0+bnVtX2NoYW5zOyBpKyspIHsKKwkJdTMyIGZ1bmN0aW9uX2lkOworCisJCXJldCA9IG9mX3By b3BlcnR5X3JlYWRfdTMyX2luZGV4KGRldi0+b2Zfbm9kZSwKKwkJCQkJCSAiYXJtLGZ1bmMtaWRz IiwgaSwKKwkJCQkJCSAmZnVuY3Rpb25faWQpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsK KworCQljaGFuX2RhdGFbaV0uZnVuY3Rpb25faWQgPSBmdW5jdGlvbl9pZDsKKwkJaWYgKHVzZV9o dmMpCisJCQljaGFuX2RhdGFbaV0uZmxhZ3MgfD0gQVJNX1NNQ19NQk9YX1VTRV9IVkM7CisJCW1i b3gtPmNoYW5zW2ldLmNvbl9wcml2ID0gJmNoYW5fZGF0YVtpXTsKKwl9CisKKwltYm94LT50eGRv bmVfcG9sbCA9IHRydWU7CisJbWJveC0+dHhkb25lX2lycSA9IGZhbHNlOworCW1ib3gtPnR4cG9s bF9wZXJpb2QgPSAxOworCW1ib3gtPm9wcyA9ICZhcm1fc21jX21ib3hfY2hhbl9vcHM7CisJbWJv eC0+ZGV2ID0gZGV2OworCisJcmV0ID0gbWJveF9jb250cm9sbGVyX3JlZ2lzdGVyKG1ib3gpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBt Ym94KTsKKwlkZXZfaW5mbyhkZXYsICJBUk0gU01DIG1haWxib3ggZW5hYmxlZCB3aXRoICVkIGNo YW4lcy5cbiIsCisJCSBtYm94LT5udW1fY2hhbnMsIG1ib3gtPm51bV9jaGFucyA9PSAxID8gIiIg OiAicyIpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhcm1fc21jX21ib3hfcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG1ib3hfY29udHJv bGxlciAqbWJveCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJbWJveF9jb250cm9s bGVyX3VucmVnaXN0ZXIobWJveCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGFybV9zbWNfbWJveF9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGli bGUgPSAiYXJtLHNtYy1tYm94IiwgfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCBhcm1fc21jX21ib3hfb2ZfbWF0Y2gpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBhcm1fc21jX21ib3hfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gImFybS1z bWMtbWJveCIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGFybV9zbWNfbWJveF9vZl9tYXRjaCwKKwl9 LAorCS5wcm9iZQkJPSBhcm1fc21jX21ib3hfcHJvYmUsCisJLnJlbW92ZQkJPSBhcm1fc21jX21i b3hfcmVtb3ZlLAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXJtX3NtY19tYm94X2RyaXZl cik7CisKK01PRFVMRV9BVVRIT1IoIkFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0u Y29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJHZW5lcmljIEFSTSBzbWMgbWFpbGJveCBkcml2 ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIuNy40CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==