From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v11 5/6] VT-d: introduce update_irte to update irte safely Date: Wed, 29 Mar 2017 13:11:54 +0800 Message-ID: <1490764315-7162-6-git-send-email-chao.gao@intel.com> References: <1490764315-7162-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1490764315-7162-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Jun Nakajima , George Dunlap , Andrew Cooper , Dario Faggioli , Jan Beulich , Chao Gao List-Id: xen-devel@lists.xenproject.org V2UgdXNlZCBzdHJ1Y3R1cmUgYXNzaWdubWVudCB0byB1cGRhdGUgaXJ0ZSB3aGljaCB3YXMgbm9u LWF0b21pYyB3aGVuIHRoZQp3aG9sZSBJUlRFIHdhcyB0byBiZSB1cGRhdGVkLiBJdCBpcyB1bnNh ZmUgd2hlbiBhIGludGVycnVwdCBoYXBwZW5lZCBkdXJpbmcKdXBkYXRlLiBGdXJ0aGVybW9yZSwg bm8gYnVnIG9yIHdhcm5pbmcgd291bGQgYmUgcmVwb3J0ZWQgd2hlbiB0aGlzIGhhcHBlbmVkLgoK VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHR3byB2YXJpYW50cywgYXRvbWljIGFuZCBub24tYXRvbWlj LCB0byB1cGRhdGUKaXJ0ZS4gQm90aCB2YXJpYW50cyB3aWxsIHVwZGF0ZSBJUlRFIGlmIHBvc3Np YmxlLiBJZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGEKYXRvbWljIHVwZGF0ZSBidXQgd2UgY2FuJ3Qg bWVldCBpdCwgd2UgcmFpc2UgYSBidWcuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5n YW9AaW50ZWwuY29tPgotLS0KdjExOgotIEFkZCB0d28gdmFyaWFudCBmdW5jdGlvbiB0byB1cGRh dGUgSVJURS4gQ2FsbCB0aGUgbm9uLWF0b21pYyBvbmUgZm9yIGluaXQKYW5kIGNsZWFyIG9wZXJh dGlvbnMuIENhbGwgdGhlIGF0b21pYyBvbmUgZm9yIG90aGVyIGNhc2VzLgotIEFkZCBhIG5ldyBm aWVsZCB0byBpbmRpY2F0ZSB0aGUgcmVtYXBfZW50cnkgYXNzb2NpYXRlZCB3aXRoIG1zaV9kZXNj IGlzCmluaXRpYWxpemVkIG9yIG5vdC4KCnYxMDoKLSByZW5hbWUgY29weV9pcnRlX3RvX2lydCB0 byB1cGRhdGVfaXJ0ZQotIHJlbW92ZSBjb3B5X2Zyb21fdG9faXJ0Ci0gY2hhbmdlIGNvbW1taXQg bWVzc2FnZSBhbmQgYWRkIHNvbWUgY29tbWVudHMgdG8gaWxsdXN0cmF0ZSBvbiB3aGljaApjb25k aXRpb24gdXBkYXRlX2lydGUoKSBpcyBzYWZlLgoKIHhlbi9hcmNoL3g4Ni9tc2kuYyAgICAgICAg ICAgICAgICAgICAgIHwgIDEgKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2ludHJlbWFw LmMgfCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vaW5jbHVkZS9h c20teDg2L21zaS5oICAgICAgICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbXNp LmMgYi94ZW4vYXJjaC94ODYvbXNpLmMKaW5kZXggMzM3NGNkNC4uN2VkMTI0MyAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L21zaS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwpAQCAtNTc4LDYg KzU3OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXNpX2Rlc2MgKmFsbG9jX21zaV9lbnRyeSh1bnNpZ25l ZCBpbnQgbnIpCiAgICAgICAgIGVudHJ5W25yXS5kZXYgPSBOVUxMOwogICAgICAgICBlbnRyeVtu cl0uaXJxID0gLTE7CiAgICAgICAgIGVudHJ5W25yXS5yZW1hcF9pbmRleCA9IC0xOworICAgICAg ICBlbnRyeVtucl0ucmVtYXBfZW50cnlfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICAgICAgZW50 cnlbbnJdLnBpX2Rlc2MgPSBOVUxMOwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2ludHJlbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv aW50cmVtYXAuYwppbmRleCBiOTkyZjIzLi5iN2YzY2YxIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvaW50cmVtYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQvaW50cmVtYXAuYwpAQCAtMTY5LDEwICsxNjksNjQgQEAgYm9vbF90IF9faW5pdCBpb21t dV9zdXBwb3J0c19laW0odm9pZCkKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIHZvaWQgdXBk YXRlX2lydGUoc3RydWN0IGlyZW1hcF9lbnRyeSAqZW50cnksCisgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgaXJlbWFwX2VudHJ5ICpuZXdfaXJlLAorICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBhdG9taWMpCit7CisgICAgaWYgKCBjcHVfaGFzX2N4MTYgKQorICAgIHsK KyAgICAgICAgX191aW50MTI4X3QgcmV0OworICAgICAgICBzdHJ1Y3QgaXJlbWFwX2VudHJ5IG9s ZF9pcmU7CisKKyAgICAgICAgb2xkX2lyZSA9ICplbnRyeTsKKyAgICAgICAgcmV0ID0gY21weGNo ZzE2YihlbnRyeSwgJm9sZF9pcmUsIG5ld19pcmUpOworCisgICAgICAgIC8qCisgICAgICAgICAq IEluIHRoZSBhYm92ZSwgd2UgdXNlIGNtcHhjaGcxNiB0byBhdG9taWNhbGx5IHVwZGF0ZSB0aGUg MTI4LWJpdAorICAgICAgICAgKiBJUlRFLCBhbmQgdGhlIGhhcmR3YXJlIGNhbm5vdCB1cGRhdGUg dGhlIElSVEUgYmVoaW5kIHVzLCBzbworICAgICAgICAgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIGNt cHhjaGcxNiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgb2xkX2lyZS4KKyAgICAgICAgICogVGhpcyBB U1NFUlQgdmFsaWRhdGUgaXQuCisgICAgICAgICAqLworICAgICAgICBBU1NFUlQocmV0ID09IG9s ZF9pcmUudmFsKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAg ICogVGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgdXBkYXRlIGlydGUgYXRvbWljYWxseSBpZiBwb3Nz aWJsZS4KKyAgICAgICAgICogSWYgdGhlIGNhbGxlciByZXF1ZXN0cyBhIGF0b21pYyB1cGRhdGUg YnV0IHdlIGNhbid0IG1lZXQgaXQsIAorICAgICAgICAgKiBhIGJ1ZyB3aWxsIGJlIHJhaXNlZC4K KyAgICAgICAgICovCisgICAgICAgIGlmICggZW50cnktPmxvID09IG5ld19pcmUtPmxvICkKKyAg ICAgICAgICAgIGVudHJ5LT5oaSA9IG5ld19pcmUtPmhpOworICAgICAgICBlbHNlIGlmICggZW50 cnktPmhpID09IG5ld19pcmUtPmhpICkKKyAgICAgICAgICAgIGVudHJ5LT5sbyA9IG5ld19pcmUt PmxvOworICAgICAgICBlbHNlIGlmICggIWF0b21pYyApCisgICAgICAgIHsKKyAgICAgICAgICAg IGVudHJ5LT5sbyA9IG5ld19pcmUtPmxvOworICAgICAgICAgICAgZW50cnktPmhpID0gbmV3X2ly ZS0+aGk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQlVHKCk7CisgICAg fQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlX2lydGVfbm9uX2F0b21pYyhzdHJ1Y3Qg aXJlbWFwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBpcmVtYXBfZW50cnkgKm5ld19pcmUpCit7CisgICAgdXBkYXRl X2lydGUoZW50cnksIG5ld19pcmUsIGZhbHNlKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHVw ZGF0ZV9pcnRlX2F0b21pYyhzdHJ1Y3QgaXJlbWFwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlyZW1hcF9lbnRyeSAqbmV3 X2lyZSkKK3sKKyAgICB1cGRhdGVfaXJ0ZShlbnRyeSwgbmV3X2lyZSwgdHJ1ZSk7Cit9CisKKwog LyogTWFyayBzcGVjaWZpZWQgaW50ciByZW1hcCBlbnRyeSBhcyBmcmVlICovCiBzdGF0aWMgdm9p ZCBmcmVlX3JlbWFwX2VudHJ5KHN0cnVjdCBpb21tdSAqaW9tbXUsIGludCBpbmRleCkKIHsKLSAg ICBzdHJ1Y3QgaXJlbWFwX2VudHJ5ICppcmVtYXBfZW50cnkgPSBOVUxMLCAqaXJlbWFwX2VudHJp ZXM7CisgICAgc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJlbWFwX2VudHJ5ID0gTlVMTCwgKmlyZW1h cF9lbnRyaWVzLCBuZXdfaXJlID0geyB9OwogICAgIHN0cnVjdCBpcl9jdHJsICppcl9jdHJsID0g aW9tbXVfaXJfY3RybChpb21tdSk7CiAKICAgICBpZiAoIGluZGV4IDwgMCB8fCBpbmRleCA+IElS RU1BUF9FTlRSWV9OUiAtIDEgKQpAQCAtMTgzLDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGZyZWVf cmVtYXBfZW50cnkoc3RydWN0IGlvbW11ICppb21tdSwgaW50IGluZGV4KQogICAgIEdFVF9JUkVN QVBfRU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRyLCBpbmRleCwKICAgICAgICAgICAgICAgICAg ICAgIGlyZW1hcF9lbnRyaWVzLCBpcmVtYXBfZW50cnkpOwogCi0gICAgbWVtc2V0KGlyZW1hcF9l bnRyeSwgMCwgc2l6ZW9mKCppcmVtYXBfZW50cnkpKTsKKyAgICB1cGRhdGVfaXJ0ZV9ub25fYXRv bWljKGlyZW1hcF9lbnRyeSwgJm5ld19pcmUpOwogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5 KGlyZW1hcF9lbnRyeSwgc2l6ZW9mKCppcmVtYXBfZW50cnkpKTsKICAgICBpb21tdV9mbHVzaF9p ZWNfaW5kZXgoaW9tbXUsIDAsIGluZGV4KTsKIApAQCAtMjg2LDYgKzM0MCw3IEBAIHN0YXRpYyBp bnQgaW9hcGljX3J0ZV90b19yZW1hcF9lbnRyeShzdHJ1Y3QgaW9tbXUgKmlvbW11LAogICAgIGlu dCBpbmRleDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVjdCBpcl9jdHJsICpp cl9jdHJsID0gaW9tbXVfaXJfY3RybChpb21tdSk7CisgICAgYm9vbCBpbml0ID0gZmFsc2U7CiAK ICAgICByZW1hcF9ydGUgPSAoc3RydWN0IElPX0FQSUNfcm91dGVfcmVtYXBfZW50cnkgKikgb2xk X3J0ZTsKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaXJfY3RybC0+aXJlbWFwX2xvY2ssIGZsYWdz KTsKQEAgLTI5Niw2ICszNTEsNyBAQCBzdGF0aWMgaW50IGlvYXBpY19ydGVfdG9fcmVtYXBfZW50 cnkoc3RydWN0IGlvbW11ICppb21tdSwKICAgICAgICAgaW5kZXggPSBhbGxvY19yZW1hcF9lbnRy eShpb21tdSwgMSk7CiAgICAgICAgIGlmICggaW5kZXggPCBJUkVNQVBfRU5UUllfTlIgKQogICAg ICAgICAgICAgYXBpY19waW5fMl9pcl9pZHhbYXBpY11baW9hcGljX3Bpbl0gPSBpbmRleDsKKyAg ICAgICAgaW5pdCA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKCBpbmRleCA+IElSRU1BUF9FTlRS WV9OUiAtIDEgKQpAQCAtMzUzLDcgKzQwOSwxMSBAQCBzdGF0aWMgaW50IGlvYXBpY19ydGVfdG9f cmVtYXBfZW50cnkoc3RydWN0IGlvbW11ICppb21tdSwKICAgICAgICAgcmVtYXBfcnRlLT5mb3Jt YXQgPSAxOyAgICAvKiBpbmRpY2F0ZSByZW1hcCBmb3JtYXQgKi8KICAgICB9CiAKLSAgICAqaXJl bWFwX2VudHJ5ID0gbmV3X2lyZTsKKyAgICBpZiAoIGluaXQgKQorICAgICAgICB1cGRhdGVfaXJ0 ZV9ub25fYXRvbWljKGlyZW1hcF9lbnRyeSwgJm5ld19pcmUpOworICAgIGVsc2UKKyAgICAgICAg dXBkYXRlX2lydGVfYXRvbWljKGlyZW1hcF9lbnRyeSwgJm5ld19pcmUpOworCiAgICAgaW9tbXVf Zmx1c2hfY2FjaGVfZW50cnkoaXJlbWFwX2VudHJ5LCBzaXplb2YoKmlyZW1hcF9lbnRyeSkpOwog ICAgIGlvbW11X2ZsdXNoX2llY19pbmRleChpb21tdSwgMCwgaW5kZXgpOwogCkBAIC01NjcsNyAr NjI3LDEwIEBAIHN0YXRpYyBpbnQgbXNpX21zZ190b19yZW1hcF9lbnRyeSgKICAgICB7CiAgICAg ICAgIC8qIEZyZWUgc3BlY2lmaWVkIHVudXNlZCBJUlRFcyAqLwogICAgICAgICBmb3IgKCBpID0g MDsgaSA8IG5yOyArK2kgKQorICAgICAgICB7CiAgICAgICAgICAgICBmcmVlX3JlbWFwX2VudHJ5 KGlvbW11LCBtc2lfZGVzYy0+cmVtYXBfaW5kZXggKyBpKTsKKyAgICAgICAgICAgIG1zaV9kZXNj W2ldLnJlbWFwX2VudHJ5X2luaXRpYWxpemVkID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAg c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJfY3RybC0+aXJlbWFwX2xvY2ssIGZsYWdzKTsKICAg ICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNjM5LDcgKzcwMiwxNCBAQCBzdGF0aWMgaW50IG1z aV9tc2dfdG9fcmVtYXBfZW50cnkoCiAgICAgcmVtYXBfcnRlLT5hZGRyZXNzX2hpID0gMDsKICAg ICByZW1hcF9ydGUtPmRhdGEgPSBpbmRleCAtIGk7CiAKLSAgICAqaXJlbWFwX2VudHJ5ID0gbmV3 X2lyZTsKKyAgICBpZiAoIG1zaV9kZXNjLT5yZW1hcF9lbnRyeV9pbml0aWFsaXplZCApCisgICAg ICAgIHVwZGF0ZV9pcnRlX2F0b21pYyhpcmVtYXBfZW50cnksICZuZXdfaXJlKTsKKyAgICBlbHNl CisgICAgeworICAgICAgICB1cGRhdGVfaXJ0ZV9ub25fYXRvbWljKGlyZW1hcF9lbnRyeSwgJm5l d19pcmUpOworICAgICAgICBtc2lfZGVzYy0+cmVtYXBfZW50cnlfaW5pdGlhbGl6ZWQgPSB0cnVl OworICAgIH0KKwogICAgIGlvbW11X2ZsdXNoX2NhY2hlX2VudHJ5KGlyZW1hcF9lbnRyeSwgc2l6 ZW9mKCppcmVtYXBfZW50cnkpKTsKICAgICBpb21tdV9mbHVzaF9pZWNfaW5kZXgoaW9tbXUsIDAs IGluZGV4KTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc2kuaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNpLmgKaW5kZXggZmM5YWIwNC4uYTBiZDNhZiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9tc2kuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21zaS5o CkBAIC0xMTgsNiArMTE4LDcgQEAgc3RydWN0IG1zaV9kZXNjIHsKIAlzdHJ1Y3QgbXNpX21zZyBt c2c7CQkvKiBMYXN0IHNldCBNU0kgbWVzc2FnZSAqLwogCiAJaW50IHJlbWFwX2luZGV4OwkJLyog aW5kZXggaW4gaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSAqLworCWJvb2wgcmVtYXBfZW50cnlf aW5pdGlhbGl6ZWQ7CiAJY29uc3Qgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2M7CS8qIHBvaW50ZXIg dG8gcG9zdGVkIGRlc2NyaXB0b3IgKi8KIAl1aW50OF90IGd2ZWM7CQkJLyogZ3Vlc3QgdmVjdG9y LiB2YWxpZCB3aGVuIHBpX2Rlc2MgaXNuJ3QgTlVMTCAqLwogfTsKLS0gCjEuOC4zLjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK