From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: [PATCH v2 08/17] xen: x86/mm: add SGX EPC management Date: Mon, 4 Dec 2017 08:15:19 +0800 Message-ID: <20171204001528.1342-9-boqun.feng@intel.com> References: <20171204001528.1342-1-boqun.feng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171204001528.1342-1-boqun.feng@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Tim Deegan , kai.huang@linux.intel.com, Julien Grall , Jan Beulich , David Scott , Boqun Feng List-Id: xen-devel@lists.xenproject.org QXMgbm93IHRoZSBoZWFwIGFsbG9jYXRvciBzdXBwb3J0cyBFUEMgcGFnZXMsIHRoZSBtYW5hZ2Vt ZW50IG9mIEVQQwpwYWdlcyBpcyBzaW1wbHkgcHV0dGluZyBFUEMgcGFnZXMgaW50byB0aGUgaGVh cCBhdCBib290aW5nIHVwIGlmIFNHWCBpcwpzdXBwb3J0ZWQgYW5kIHRoZSBFUEMgc2VjdGlvbiBp cyByZXBvcnRlZCBjb25zaXN0ZW50bHkuIEFsbG9jYXRpb24gYW5kCnJlY2xhbWF0aW9uIGFyZSBq dXN0IGhlYXAgYWxsb2NhdGlvbiBhbmQgcmVjbGFtYXRpb24gd2l0aCBNRU1GX2VwYy4KCk9uZSBt b3JlIHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgdG8gcG9wdWxhdGUgdGhlIHBvcnRpb24gb2YgRVBD IHBhZ2VzIGluCnRoZSAnZnJhbWVfdGFibGUnIGFuZCBzZXQgdXAgdGhlIG1hcHBpbmcgcHJvcGVy bHkuCgpTR1ggd291bGQgYmUgZGlzYWJsZWQsIGlmIEVQQyBpbml0aWFsaXphdGlvbiBmb3VuZCBh bnkgcHJvYmxlbS4KClNpZ25lZC1vZmYtYnk6IEJvcXVuIEZlbmcgPGJvcXVuLmZlbmdAaW50ZWwu Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9zZ3guYyAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zZ3gu aCB8ICAgMyArCiAyIGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3NneC5jIGIveGVuL2FyY2gveDg2L3NneC5jCmluZGV4IGVhZDkxNzU0 M2YzZS4uOTQwOWIwNDFlNGY3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2d4LmMKKysrIGIv eGVuL2FyY2gveDg2L3NneC5jCkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSA8YXNtL2NwdWZl YXR1cmUuaD4KICNpbmNsdWRlIDxhc20vbXNyLWluZGV4Lmg+CiAjaW5jbHVkZSA8YXNtL21zci5o PgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUg PGFzbS9zZ3guaD4KIAogc3RydWN0IHNneF9jcHVpbmZvIF9fcmVhZF9tb3N0bHkgYm9vdF9zZ3hf Y3B1ZGF0YTsKQEAgLTI5LDYgKzMxLDEzIEBAIHN0cnVjdCBzZ3hfY3B1aW5mbyBfX3JlYWRfbW9z dGx5IGJvb3Rfc2d4X2NwdWRhdGE7CiBzdGF0aWMgYm9vbCBfX3JlYWRfbW9zdGx5IG9wdF9zZ3hf ZW5hYmxlZCA9IGZhbHNlOwogYm9vbGVhbl9wYXJhbSgic2d4Iiwgb3B0X3NneF9lbmFibGVkKTsK IAorI2RlZmluZSB0b3RhbF9lcGNfbnBhZ2VzIChib290X3NneF9jcHVkYXRhLmVwY19zaXplID4+ IFBBR0VfU0hJRlQpCisjZGVmaW5lIGVwY19iYXNlX21mbiAoYm9vdF9zZ3hfY3B1ZGF0YS5lcGNf YmFzZSA+PiBQQUdFX1NISUZUKQorI2RlZmluZSBlcGNfYmFzZV9tYWRkciAoYm9vdF9zZ3hfY3B1 ZGF0YS5lcGNfYmFzZSkKKyNkZWZpbmUgZXBjX2VuZF9tYWRkciAoZXBjX2Jhc2VfbWFkZHIgKyBi b290X3NneF9jcHVkYXRhLmVwY19zaXplKQorCitzdGF0aWMgdm9pZCAqZXBjX2Jhc2VfdmFkZHIg PSBOVUxMOworCiBzdGF0aWMgdm9pZCBfX2RldGVjdF9zZ3goc3RydWN0IHNneF9jcHVpbmZvICpz Z3hpbmZvKQogewogICAgIHUzMiBlYXgsIGVieCwgZWN4LCBlZHg7CkBAIC0xNjYsMTEgKzE3NSwx NjMgQEAgc3RhdGljIHZvaWQgX19pbml0IHByaW50X3NneF9jcHVpbmZvKHN0cnVjdCBzZ3hfY3B1 aW5mbyAqc2d4aW5mbykKICAgICAgICAgICAgYm9vdF9zZ3hfY3B1ZGF0YS5lcGNfYmFzZSArIGJv b3Rfc2d4X2NwdWRhdGEuZXBjX3NpemUpOwogfQogCitzdHJ1Y3QgZnRfcGFnZSB7CisgICAgc3Ry dWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgdW5zaWduZWQgaW50IG9yZGVyOworICAgIHVuc2lnbmVk IGxvbmcgaWR4OworICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKK3N0YXRpYyBpbnQg ZXh0ZW5kX2VwY19mcmFtZXRhYmxlKHVuc2lnbmVkIGxvbmcgc21mbiwgdW5zaWduZWQgbG9uZyBl bWZuKQoreworICAgIHVuc2lnbmVkIGxvbmcgaWR4OworICAgIExJU1RfSEVBRChmdF9wYWdlcyk7 CisgICAgc3RydWN0IGZ0X3BhZ2UgKmZ0cCwgKm5mdHA7CisgICAgaW50IHJjID0gMDsKKworICAg IGZvciAoIDsgc21mbiA8IGVtZm47IHNtZm4gKz0gUERYX0dST1VQX0NPVU5UICkKKyAgICB7Cisg ICAgICAgIGlkeCA9IHBmbl90b19wZHgoc21mbikgLyBQRFhfR1JPVVBfQ09VTlQ7CisKKyAgICAg ICAgaWYgKCF0ZXN0X2JpdChpZHgsIHBkeF9ncm91cF92YWxpZCkpCisgICAgICAgIHsKKyAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgcyA9ICh1bnNpZ25lZCBsb25nKXBkeF90b19wYWdlKGlkeCAq IFBEWF9HUk9VUF9DT1VOVCk7CisgICAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKKwor ICAgICAgICAgICAgZnRwID0geHphbGxvYyhzdHJ1Y3QgZnRfcGFnZSk7CisKKyAgICAgICAgICAg IGlmICggIWZ0cCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVN OworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZXMoTlVMTCwgUERYX0dST1VQX1NISUZUIC0gUEFHRV9T SElGVCwgMCk7CisKKyAgICAgICAgICAgIGlmICggIXBnICkKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICB4ZnJlZShmdHApOworICAgICAgICAgICAgICAgIHJjID0gLUVOT01FTTsKKyAg ICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnRw LT5vcmRlciA9IFBEWF9HUk9VUF9TSElGVCAtIFBBR0VfU0hJRlQ7CisgICAgICAgICAgICBmdHAt PnBnID0gcGc7CisgICAgICAgICAgICBmdHAtPmlkeCA9IGlkeDsKKworICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmZnRwLT5saXN0LCAmZnRfcGFnZXMpOworCisgICAgICAgICAgICBtYXBfcGFn ZXNfdG9feGVuKHMsIHBhZ2VfdG9fbWZuKHBnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMVVMIDw8IChQRFhfR1JPVVBfU0hJRlQgLSBQQUdFX1NISUZUKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJU09SKTsKKyAgICAgICAgICAgIG1lbXNldCgodm9p ZCAqKXMsIDAsIHNpemVvZihzdHJ1Y3QgcGFnZV9pbmZvKSAqIFBEWF9HUk9VUF9DT1VOVCk7Cisg ICAgICAgIH0KKyAgICB9CisKK291dDoKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZnRw LCBuZnRwLCAmZnRfcGFnZXMsIGxpc3QpCisgICAgeworICAgICAgICBpZiAoIHJjICkKKyAgICAg ICAgeworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzID0gKHVuc2lnbmVkIGxvbmcpcGR4X3Rv X3BhZ2UoZnRwLT5pZHggKiBQRFhfR1JPVVBfQ09VTlQpOworCisgICAgICAgICAgICBkZXN0cm95 X3hlbl9tYXBwaW5ncyhzLCBzICsgKDFVTCA8PCBQRFhfR1JPVVBfU0hJRlQpKTsKKyAgICAgICAg ICAgIGZyZWVfZG9taGVhcF9wYWdlcyhmdHAtPnBnLCBmdHAtPm9yZGVyKTsKKyAgICAgICAgfQor ICAgICAgICBsaXN0X2RlbCgmZnRwLT5saXN0KTsKKyAgICAgICAgeGZyZWUoZnRwKTsKKyAgICB9 CisKKyAgICBpZiAoICFyYyApCisgICAgICAgIHNldF9wZHhfcmFuZ2Uoc21mbiwgZW1mbik7CisK KyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXRfZXBjX2ZyYW1ldGFi bGUodW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxvbmcgbnBhZ2VzKQoreworICAgIHJldHVy biBleHRlbmRfZXBjX2ZyYW1ldGFibGUobWZuLCBtZm4gKyBucGFnZXMpOworfQorCitzdGF0aWMg aW50IF9faW5pdCBpbml0X2VwY19oZWFwKHZvaWQpCit7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGc7CisgICAgdW5zaWduZWQgbG9uZyBucnBhZ2VzID0gdG90YWxfZXBjX25wYWdlczsKKyAgICB1 bnNpZ25lZCBsb25nIGk7CisgICAgaW50IHJjID0gMDsKKworICAgIHJjID0gaW5pdF9lcGNfZnJh bWV0YWJsZShlcGNfYmFzZV9tZm4sIG5ycGFnZXMpOworCisgICAgaWYgKCByYyApCisgICAgICAg IHJldHVybiByYzsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJwYWdlczsgaSsrICkKKyAgICB7 CisgICAgICAgIHBnID0gbWZuX3RvX3BhZ2UoZXBjX2Jhc2VfbWZuICsgaSk7CisgICAgICAgIHBn LT5jb3VudF9pbmZvIHw9IFBHQ19lcGM7CisgICAgfQorCisgICAgaW5pdF9kb21oZWFwX3BhZ2Vz KGVwY19iYXNlX21hZGRyLCBlcGNfZW5kX21hZGRyKTsKKworICAgIHJldHVybiByYzsKK30KKwor c3RydWN0IHBhZ2VfaW5mbyAqYWxsb2NfZXBjX3BhZ2Uodm9pZCkKK3sKKyAgICBzdHJ1Y3QgcGFn ZV9pbmZvICpwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCBNRU1GX2VwYyk7CisKKyAgICBp ZiAoICFwZyApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyoKKyAgICAgKiBQR0NfZXBj IHdpbGwgYmUgY2xlYXJlZCBpbiBmcmVlX2hlYXBfcGFnZXMoKSwgc28gd2UgYWRkIGl0IGJhY2sg YXQKKyAgICAgKiBhbGxvY2F0aW9uIHRpbWUsIHNvIHRoYXQgaXNfZXBjX3BhZ2UoKSB3aWxsIHJl dHVybiB0cnVlLCB3aGVuIHRoaXMgcGFnZQorICAgICAqIGdldHMgZnJlZWQuCisgICAgICovCisg ICAgcGctPmNvdW50X2luZm8gfD0gUEdDX2VwYzsKKworICAgIHJldHVybiBwZzsKK30KKwordm9p ZCBmcmVlX2VwY19wYWdlKHN0cnVjdCBwYWdlX2luZm8gKmVwZykKK3sKKyAgICBmcmVlX2RvbWhl YXBfcGFnZShlcGcpOworfQorCisKK3N0YXRpYyBpbnQgX19pbml0IHNneF9pbml0X2VwYyh2b2lk KQoreworICAgIGludCByYyA9IDA7CisKKyAgICBlcGNfYmFzZV92YWRkciA9IGlvcmVtYXBfd2Io ZXBjX2Jhc2VfbWFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2Vw Y19ucGFnZXMgPDwgUEFHRV9TSElGVCk7CisKKyAgICBpZiAoICFlcGNfYmFzZV9tYWRkciApCisg ICAgeworICAgICAgICBwcmludGsoIkZhaWxlZCB0byBpb3JlbWFwX3diIEVQQyByYW5nZS4gRGlz YWJsZSBTR1guXG4iKTsKKworICAgICAgICByZXR1cm4gLUVGQVVMVDsKKyAgICB9CisKKyAgICBy YyA9IGluaXRfZXBjX2hlYXAoKTsKKworICAgIGlmICggcmMgKQorICAgIHsKKyAgICAgICAgcHJp bnRrKCJGYWlsZWQgdG8gaW5pdCBoZWFwIGZvciBFUEMgcGFnZXMuIERpc2FibGUgU0dYLlxuIik7 CisgICAgICAgIGlvdW5tYXAoZXBjX2Jhc2VfdmFkZHIpOworICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKwogc3RhdGljIGludCBfX2luaXQgc2d4X2luaXQodm9pZCkKIHsKICAgICBpZiAoICFj cHVfaGFzX3NneCApCiAgICAgICAgIGdvdG8gbm90X3N1cHBvcnRlZDsKIAorICAgIGlmICggc2d4 X2luaXRfZXBjKCkgKQorICAgICAgICBnb3RvIG5vdF9zdXBwb3J0ZWQ7CisKICAgICBwcmludF9z Z3hfY3B1aW5mbygmYm9vdF9zZ3hfY3B1ZGF0YSk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvc2d4LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3NneC5o CmluZGV4IGIzN2ViZGU2NGU4NC4uOGZlZDY2NGZhMTU0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L3NneC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2d4LmgKQEAgLTU4LDQg KzU4LDcgQEAgdm9pZCBkZXRlY3Rfc2d4KHN0cnVjdCBzZ3hfY3B1aW5mbyAqc2d4aW5mbyk7CiB2 b2lkIGRpc2FibGVfc2d4KHZvaWQpOwogI2RlZmluZSBzZ3hfbGV3cigpIChib290X3NneF9jcHVk YXRhLmxld3IpCiAKK3N0cnVjdCBwYWdlX2luZm8gKmFsbG9jX2VwY19wYWdlKHZvaWQpOwordm9p ZCBmcmVlX2VwY19wYWdlKHN0cnVjdCBwYWdlX2luZm8gKmVwZyk7CisKICNlbmRpZiAgLyogX19B U01fWDg2X1NHWF9IX18gKi8KLS0gCjIuMTUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=