From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v2 10/13] optee: add support for RPC commands Date: Mon, 3 Sep 2018 19:54:34 +0300 Message-ID: <1535993677-20816-11-git-send-email-volodymyr_babchuk@epam.com> References: <1535993677-20816-1-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fws8w-0006iH-SS for xen-devel@lists.xenproject.org; Mon, 03 Sep 2018 16:56:02 +0000 In-Reply-To: <1535993677-20816-1-git-send-email-volodymyr_babchuk@epam.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, xen-devel@lists.xen.org Cc: tee-dev@lists.linaro.org, Julien Grall , Stefano Stabellini , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org T1AtVEVFIGNhbiBpc3N1ZSBtdWx0aXBsZSBSUEMgcmVxdWVzdHMuIFdlIGFyZSBpbnRlcmVzdGVk IG1vc3RseSBpbgpyZXF1ZXN0IHRoYXQgYXNrcyBOVyB0byBhbGxvY2F0ZS9mcmVlIHNoYXJlZCBt ZW1vcnkgZm9yIE9QLVRFRQpuZWVkcywgYmVjdWFzZSBtZWRpYXRvciBuZWVkIHRvIGRvIGFkZHJl c3MgdHJhbnNsYXRpb24gaW4gdGhlIHNhbWUKd2F5IGFzIGl0IHdhcyBkb25lIGZvciBzaGFyZWQg YnVmZmVycyByZWdpc3RlcmVkIGJ5IE5XLgoKQXMgbWVkaWF0b3Igbm93IGFjY2Vzc2VzIHNoYXJl ZCBjb21tYW5kIGJ1ZmZlciwgd2UgbmVlZCB0byBzaGFkb3cKaXQgaW4gdGhlIHNhbWUgd2F5LCBh cyB3ZSBzaGFkb3cgcmVxdWVzdCBidWZmZXJzIGZvciBTVEQgY2FsbHMuCgpTaWduZWQtb2ZmLWJ5 OiBWb2xvZHlteXIgQmFiY2h1ayA8dm9sb2R5bXlyX2JhYmNodWtAZXBhbS5jb20+Ci0tLQogeGVu L2FyY2gvYXJtL3RlZS9vcHRlZS5jIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDEx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYyBiL3hl bi9hcmNoL2FybS90ZWUvb3B0ZWUuYwppbmRleCA4YmZjZmRjLi5iMmQ3OTVlIDEwMDY0NAotLS0g YS94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMKKysrIGIveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5j CkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBzdGRfY2FsbF9jdHggewogc3RydWN0IHNobV9ycGMg ewogICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICBzdHJ1Y3Qgb3B0ZWVfbXNnX2FyZyAq Z3Vlc3RfYXJnOworICAgIHN0cnVjdCBvcHRlZV9tc2dfYXJnICp4ZW5fYXJnOwogICAgIHN0cnVj dCBwYWdlICpndWVzdF9wYWdlOwogICAgIG1mbl90IGd1ZXN0X21mbjsKICAgICB1aW50NjRfdCBj b29raWU7CkBAIC0zMDMsNiArMzA0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2htX3JwYyAqYWxsb2Nh dGVfYW5kX21hcF9zaG1fcnBjKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsIHBhZGRyX3QKICAgICBp ZiAoICFzaG1fcnBjICkKICAgICAgICAgZ290byBlcnI7CiAKKyAgICBzaG1fcnBjLT54ZW5fYXJn ID0gYWxsb2NfeGVuaGVhcF9wYWdlKCk7CisgICAgaWYgKCAhc2htX3JwYy0+eGVuX2FyZyApCisg ICAgICAgIGdvdG8gZXJyOworCiAgICAgc2htX3JwYy0+Z3Vlc3RfbWZuID0gbG9va3VwX2FuZF9w aW5fZ3Vlc3RfcmFtX2FkZHIoZ2FkZHIsIE5VTEwpOwogCiAgICAgaWYgKCBtZm5fZXEoc2htX3Jw Yy0+Z3Vlc3RfbWZuLCBJTlZBTElEX01GTikgKQpAQCAtMzI0LDYgKzMyOSwxMCBAQCBzdGF0aWMg c3RydWN0IHNobV9ycGMgKmFsbG9jYXRlX2FuZF9tYXBfc2htX3JwYyhzdHJ1Y3QgZG9tYWluX2N0 eCAqY3R4LCBwYWRkcl90CiAKIGVycjoKICAgICBhdG9taWNfZGVjKCZjdHgtPnNobV9ycGNfY291 bnQpOworCisgICAgaWYgKCBzaG1fcnBjLT54ZW5fYXJnICkKKyAgICAgICAgZnJlZV94ZW5oZWFw X3BhZ2Uoc2htX3JwYy0+eGVuX2FyZyk7CisKICAgICB4ZnJlZShzaG1fcnBjKTsKICAgICByZXR1 cm4gTlVMTDsKIH0KQEAgLTM0Niw5ICszNTUsMTAgQEAgc3RhdGljIHZvaWQgZnJlZV9zaG1fcnBj KHN0cnVjdCBkb21haW5fY3R4ICpjdHgsIHVpbnQ2NF90IGNvb2tpZSkKICAgICB9CiAgICAgc3Bp bl91bmxvY2soJmN0eC0+bG9jayk7CiAKLSAgICBpZiAoICFmb3VuZCApIHsKKyAgICBpZiAoICFm b3VuZCApCiAgICAgICAgIHJldHVybjsKLSAgICB9CisKKyAgICBmcmVlX3hlbmhlYXBfcGFnZShz aG1fcnBjLT54ZW5fYXJnKTsKIAogICAgIGlmICggc2htX3JwYy0+Z3Vlc3RfYXJnICkgewogICAg ICAgICB1bnBpbl9ndWVzdF9yYW1fYWRkcihzaG1fcnBjLT5ndWVzdF9tZm4pOwpAQCAtMzU4LDYg KzM2OCwyNCBAQCBzdGF0aWMgdm9pZCBmcmVlX3NobV9ycGMoc3RydWN0IGRvbWFpbl9jdHggKmN0 eCwgdWludDY0X3QgY29va2llKQogICAgIHhmcmVlKHNobV9ycGMpOwogfQogCitzdGF0aWMgc3Ry dWN0IHNobV9ycGMgKmZpbmRfc2htX3JwYyhzdHJ1Y3QgZG9tYWluX2N0eCAqY3R4LCB1aW50NjRf dCBjb29raWUpCit7CisgICAgc3RydWN0IHNobV9ycGMgKnNobV9ycGM7CisKKyAgICBzcGluX2xv Y2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggc2htX3JwYywgJmN0eC0+ c2htX3JwY19saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggc2htX3JwYy0+Y29va2ll ID09IGNvb2tpZSApCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmY3R4 LT5sb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2htX3JwYzsKKyAgICAgICAgfQorICAg IH0KKyAgICBzcGluX3VubG9jaygmY3R4LT5sb2NrKTsKKworICAgIHJldHVybiBOVUxMOworfQor CiBzdGF0aWMgc3RydWN0IHNobV9idWYgKmFsbG9jYXRlX3NobV9idWYoc3RydWN0IGRvbWFpbl9j dHggKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCBjb29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBh Z2VzX2NudCkKQEAgLTcwNCw2ICs3MzIsMjggQEAgc3RhdGljIGJvb2wgY29weV9zdGRfcmVxdWVz dF9iYWNrKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0 YXRpYyB2b2lkIGhhbmRsZV9ycGNfcmV0dXJuKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RkX2NhbGxfY3R4ICpjYWxsKQorewor ICAgIGNhbGwtPm9wdGVlX3RocmVhZF9pZCA9IGdldF91c2VyX3JlZyhyZWdzLCAzKTsKKyAgICBj YWxsLT5ycGNfb3AgPSBPUFRFRV9TTUNfUkVUVVJOX0dFVF9SUENfRlVOQyhnZXRfdXNlcl9yZWco cmVncywgMCkpOworCisgICAgaWYgKCBjYWxsLT5ycGNfb3AgPT0gT1BURUVfU01DX1JQQ19GVU5D X0NNRCApCisgICAgeworICAgICAgICAvKiBDb3B5IFJQQyByZXF1ZXN0IGZyb20gc2hhZG93ZWQg YnVmZmVyIHRvIGd1ZXN0ICovCisgICAgICAgIHVpbnQ2NF90IGNvb2tpZSA9IGdldF91c2VyX3Jl ZyhyZWdzLCAxKSA8PCAzMiB8IGdldF91c2VyX3JlZyhyZWdzLCAyKTsKKyAgICAgICAgc3RydWN0 IHNobV9ycGMgKnNobV9ycGMgPSBmaW5kX3NobV9ycGMoY3R4LCBjb29raWUpOworICAgICAgICBp ZiAoICFzaG1fcnBjICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJS LCAiQ2FuJ3QgZmluZCBTSE0tUlBDIHdpdGggY29va2llICVseFxuIiwgY29va2llKTsKKyAgICAg ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2htX3JwYy0+Z3Vlc3Rf YXJnLCBzaG1fcnBjLT54ZW5fYXJnLAorICAgICAgICAgICAgICAgT1BURUVfTVNHX0dFVF9BUkdf U0laRShzaG1fcnBjLT54ZW5fYXJnLT5udW1fcGFyYW1zKSk7CisgICAgfQorfQorCiBzdGF0aWMg Ym9vbCBleGVjdXRlX3N0ZF9jYWxsKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RkX2NhbGxfY3R4ICpjYWxsKQpAQCAtNzE1LDgg Kzc2NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVfc3RkX2NhbGwoc3RydWN0IGRvbWFpbl9jdHgg KmN0eCwKICAgICBvcHRlZV9yZXQgPSBnZXRfdXNlcl9yZWcocmVncywgMCk7CiAgICAgaWYgKCBP UFRFRV9TTUNfUkVUVVJOX0lTX1JQQyhvcHRlZV9yZXQpICkKICAgICB7Ci0gICAgICAgIGNhbGwt Pm9wdGVlX3RocmVhZF9pZCA9IGdldF91c2VyX3JlZyhyZWdzLCAzKTsKLSAgICAgICAgY2FsbC0+ cnBjX29wID0gT1BURUVfU01DX1JFVFVSTl9HRVRfUlBDX0ZVTkMob3B0ZWVfcmV0KTsKKyAgICAg ICAgaGFuZGxlX3JwY19yZXR1cm4oY3R4LCByZWdzLCBjYWxsKTsKICAgICAgICAgcmV0dXJuIHRy dWU7CiAgICAgfQogCkBAIC03ODMsNiArODMyLDc0IEBAIG91dDoKICAgICByZXR1cm4gcmV0Owog fQogCisKK3N0YXRpYyB2b2lkIGhhbmRsZV9ycGNfY21kX2FsbG9jKHN0cnVjdCBkb21haW5fY3R4 ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGRf Y2FsbF9jdHggKmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2htX3JwYyAqc2htX3JwYykKK3sKKyAgICBpZiAoIHNobV9ycGMtPnhlbl9hcmctPnBhcmFtc1sw XS5hdHRyICE9IChPUFRFRV9NU0dfQVRUUl9UWVBFX1RNRU1fT1VUUFVUIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BURUVfTVNHX0FUVFJfTk9OQ09OVElH KSApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiSW52YWxpZCBhdHRy cyBmb3Igc2hhcmVkIG1lbSBidWZmZXJcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg ICAgLyogTGFzdCBlbnRyeSBpbiBub25fY29udGlnIGFycmF5IGlzIHVzZWQgdG8gaG9sZCBSUEMt YWxsb2NhdGVkIGJ1ZmZlciAqLworICAgIGlmICggY2FsbC0+bm9uX2NvbnRpZ1tNQVhfTk9OQ09O VElHX0VOVFJJRVMgLSAxXSApCisgICAgeworICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZXMoY2Fs bC0+bm9uX2NvbnRpZ1tNQVhfTk9OQ09OVElHX0VOVFJJRVMgLSAxXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhbGwtPm5vbl9jb250aWdfb3JkZXJbTUFYX05PTkNPTlRJR19FTlRSSUVT IC0gMV0pOworICAgICAgICBjYWxsLT5ub25fY29udGlnW01BWF9OT05DT05USUdfRU5UUklFUyAt IDFdID0gTlVMTDsKKyAgICB9CisgICAgdHJhbnNsYXRlX25vbmNvbnRpZyhjdHgsIGNhbGwsIHNo bV9ycGMtPnhlbl9hcmctPnBhcmFtcyArIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBNQVhf Tk9OQ09OVElHX0VOVFJJRVMgLSAxKTsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlX3JwY19jbWQo c3RydWN0IGRvbWFpbl9jdHggKmN0eCwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RkX2NhbGxfY3R4ICpjYWxsKQoreworICAg IHN0cnVjdCBzaG1fcnBjICpzaG1fcnBjOworICAgIHVpbnQ2NF90IGNvb2tpZTsKKyAgICBpbnQg bnVtX3BhcmFtczsKKworICAgIGNvb2tpZSA9IGdldF91c2VyX3JlZyhyZWdzLCAxKSA8PCAzMiB8 IGdldF91c2VyX3JlZyhyZWdzLCAyKTsKKworICAgIHNobV9ycGMgPSBmaW5kX3NobV9ycGMoY3R4 LCBjb29raWUpOworCisgICAgaWYgKCAhc2htX3JwYyApCisgICAgeworICAgICAgICBncHJpbnRr KFhFTkxPR19FUlIsICJDYW4ndCBmaW5kIFNITS1SUEMgd2l0aCBjb29raWUgJWx4XG4iLCBjb29r aWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbnVtX3BhcmFtcyA9IHNobV9ycGMt Pmd1ZXN0X2FyZy0+bnVtX3BhcmFtczsKKworICAgIGJhcnJpZXIoKTsgLyogRW5zdXJlIHRoYXQg bnVtX3BhcmFtcyBpcyByZWFkIG9uY2UgKi8KKyAgICBpZiAoIE9QVEVFX01TR19HRVRfQVJHX1NJ WkUobnVtX3BhcmFtcykgPiBPUFRFRV9NU0dfTk9OQ09OVElHX1BBR0VfU0laRSApCisgICAgICAg IHJldHVybjsKKworICAgIG1lbWNweShzaG1fcnBjLT54ZW5fYXJnLCBzaG1fcnBjLT5ndWVzdF9h cmcsCisgICAgICAgICAgIE9QVEVFX01TR19HRVRfQVJHX1NJWkUobnVtX3BhcmFtcykpOworCisg ICAgc3dpdGNoIChzaG1fcnBjLT54ZW5fYXJnLT5jbWQpIHsKKyAgICBjYXNlIE9QVEVFX01TR19S UENfQ01EX0dFVF9USU1FOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIE9QVEVFX01TR19SUENf Q01EX1dBSVRfUVVFVUU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BURUVfTVNHX1JQQ19D TURfU1VTUEVORDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPUFRFRV9NU0dfUlBDX0NNRF9T SE1fQUxMT0M6CisgICAgICAgIGhhbmRsZV9ycGNfY21kX2FsbG9jKGN0eCwgcmVncywgY2FsbCwg c2htX3JwYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BURUVfTVNHX1JQQ19DTURfU0hN X0ZSRUU6CisgICAgICAgIGZyZWVfc2htX2J1ZihjdHgsIHNobV9ycGMtPnhlbl9hcmctPnBhcmFt c1swXS51LnZhbHVlLmIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBi cmVhazsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIGhhbmRsZV9ycGNfZnVuY19hbGxvYyhzdHJ1 Y3QgZG9tYWluX2N0eCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewpAQCAtNzk2LDEzICs5MTMsMTEgQEAgc3RhdGlj IHZvaWQgaGFuZGxlX3JwY19mdW5jX2FsbG9jKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsCiAgICAg ICAgIHN0cnVjdCBzaG1fcnBjICpzaG1fcnBjOwogCiAgICAgICAgIHNobV9ycGMgPSBhbGxvY2F0 ZV9hbmRfbWFwX3NobV9ycGMoY3R4LCBwdHIsIGNvb2tpZSk7Ci0gICAgICAgIGlmICggIXNobV9y cGMgKQotICAgICAgICB7CisgICAgICAgIGlmICggIXNobV9ycGMgKSB7CiAgICAgICAgICAgICBn cHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHNobV9ycGMgb2JqZWN0 XG4iKTsKLSAgICAgICAgICAgIHB0ciA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg ICAgICAgICAgcHRyID0gbWZuX3RvX21hZGRyKHNobV9ycGMtPmd1ZXN0X21mbik7CisgICAgICAg ICAgICBwdHIgPSB+MDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwdHIgPSB2aXJ0X3Rv X21hZGRyKHNobV9ycGMtPnhlbl9hcmcpOwogCiAgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAx LCBwdHIgPj4gMzIpOwogICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMiwgcHRyICYgMHhGRkZG RkZGRik7CkBAIC04MzMsNyArOTQ4LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlX3JwYyhzdHJ1Y3Qg ZG9tYWluX2N0eCAqY3R4LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBjYXNlIE9Q VEVFX1NNQ19SUENfRlVOQ19GT1JFSUdOX0lOVFI6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug T1BURUVfU01DX1JQQ19GVU5DX0NNRDoKLSAgICAgICAgLyogVE9ETzogQWRkIGhhbmRsaW5nICov CisgICAgICAgIGhhbmRsZV9ycGNfY21kKGN0eCwgcmVncywgY2FsbCk7CiAgICAgICAgIGJyZWFr OwogICAgIH0KIAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs