From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v3 09/10] IOMMU: propagate IOMMU Device-TLB flush error up to IOMMU suspending Date: Fri, 29 Apr 2016 17:25:16 +0800 Message-ID: <1461921917-48394-10-git-send-email-quan.xu@intel.com> References: <1461921917-48394-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1461921917-48394-1-git-send-email-quan.xu@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 , Stefano Stabellini , Keir Fraser , Quan Xu , Liu Jinsong , dario.faggioli@citrix.com, Julien Grall , Jan Beulich , Andrew Cooper , Feng Wu , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org UHJvcGFnYXRlIHRoZSBJT01NVSBEZXZpY2UtVExCIGZsdXNoIGVycm9yIHVwIHRvIElPTU1VIHN1 c3BlbmRpbmcuCgpTaWduZWQtb2ZmLWJ5OiBRdWFuIFh1IDxxdWFuLnh1QGludGVsLmNvbT4KCkND OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBMaXUgSmluc29uZyA8amluc29u Zy5saXVAYWxpYmFiYS1pbmMuY29tPgpDQzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ0M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNDOiBTdXJhdmVlIFN1 dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgpDQzogU3RlZmFubyBT dGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxp ZW4uZ3JhbGxAYXJtLmNvbT4KQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpD QzogRmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2FjcGkvcG93 ZXIuYyAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIHhlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMgICAgICB8ICA5ICsrKysrKy0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgICB8ICAyICstCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAgICAgfCAgNyArKystLQogeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysr KystLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgg fCAgMiArLQogeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0tCiA3IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9hY3BpL3Bvd2VyLmMgYi94ZW4vYXJjaC94ODYv YWNwaS9wb3dlci5jCmluZGV4IDI4ODVlMzEuLjkwOTczMzMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9hY3BpL3Bvd2VyLmMKKysrIGIveGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYwpAQCAtNDUs NiArNDUsOCBAQCB2b2lkIGRvX3N1c3BlbmRfbG93bGV2ZWwodm9pZCk7CiAKIHN0YXRpYyBpbnQg ZGV2aWNlX3Bvd2VyX2Rvd24odm9pZCkKIHsKKyAgICBpbnQgZXJyOworCiAgICAgY29uc29sZV9z dXNwZW5kKCk7CiAKICAgICB0aW1lX3N1c3BlbmQoKTsKQEAgLTUzLDExICs1NSwyMiBAQCBzdGF0 aWMgaW50IGRldmljZV9wb3dlcl9kb3duKHZvaWQpCiAKICAgICBpb2FwaWNfc3VzcGVuZCgpOwog Ci0gICAgaW9tbXVfc3VzcGVuZCgpOworICAgIGVyciA9IGlvbW11X3N1c3BlbmQoKTsKKworICAg IGlmICggZXJyICkKKyAgICAgICAgZ290byBpb21tdV9zdXNwZW5kX2Vycm9yOwogCiAgICAgbGFw aWNfc3VzcGVuZCgpOwogCiAgICAgcmV0dXJuIDA7CisKKyBpb21tdV9zdXNwZW5kX2Vycm9yOgor ICAgIGlvYXBpY19yZXN1bWUoKTsKKyAgICBpODI1OUFfcmVzdW1lKCk7CisgICAgdGltZV9yZXN1 bWUoKTsKKyAgICBjb25zb2xlX3Jlc3VtZSgpOworCisgICAgcmV0dXJuIGVycjsKIH0KIAogc3Rh dGljIHZvaWQgZGV2aWNlX3Bvd2VyX3VwKHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X2luaXQuYwppbmRleCA0NTM2MTA2Li4wMjU4OGFhIDEwMDY0NAotLS0gYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FtZC9pb21tdV9pbml0LmMKQEAgLTEzMzksMTIgKzEzMzksMTkgQEAgc3RhdGljIHZv aWQgaW52YWxpZGF0ZV9hbGxfZGV2aWNlcyh2b2lkKQogICAgIGl0ZXJhdGVfaXZyc19tYXBwaW5n cyhfaW52YWxpZGF0ZV9hbGxfZGV2aWNlcyk7CiB9CiAKLXZvaWQgYW1kX2lvbW11X3N1c3BlbmQo dm9pZCkKK2ludCBhbWRfaW9tbXVfc3VzcGVuZCh2b2lkKQogewogICAgIHN0cnVjdCBhbWRfaW9t bXUgKmlvbW11OwogCiAgICAgZm9yX2VhY2hfYW1kX2lvbW11ICggaW9tbXUgKQogICAgICAgICBk aXNhYmxlX2lvbW11KGlvbW11KTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIGFtZF9pb21t dV9jcmFzaF9zaHV0ZG93bih2b2lkKQoreworICAgIGFtZF9pb21tdV9zdXNwZW5kKCk7CiB9CiAK IHZvaWQgYW1kX2lvbW11X3Jlc3VtZSh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9wY2lfYW1kX2lvbW11LmMKaW5kZXggYzhlZThkYy4uZmI4ZTgxNiAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCkBAIC02MjgsNiArNjI4LDYgQEAgY29u c3Qgc3RydWN0IGlvbW11X29wcyBhbWRfaW9tbXVfb3BzID0gewogICAgIC5zdXNwZW5kID0gYW1k X2lvbW11X3N1c3BlbmQsCiAgICAgLnJlc3VtZSA9IGFtZF9pb21tdV9yZXN1bWUsCiAgICAgLnNo YXJlX3AybSA9IGFtZF9pb21tdV9zaGFyZV9wMm0sCi0gICAgLmNyYXNoX3NodXRkb3duID0gYW1k X2lvbW11X3N1c3BlbmQsCisgICAgLmNyYXNoX3NodXRkb3duID0gYW1kX2lvbW11X2NyYXNoX3No dXRkb3duLAogICAgIC5kdW1wX3AybV90YWJsZSA9IGFtZF9kdW1wX3AybV90YWJsZSwKIH07CmRp ZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYwppbmRleCA4Mzk4NTJmLi5jNTY1YzY2IDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2lvbW11LmMKQEAgLTQwNywxMSArNDA3LDE0IEBAIGludCBpb21tdV9kb19kb21jdGwoCiAg ICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBpb21tdV9zdXNwZW5kKCkKK2ludCBfX211c3RfY2hl Y2sgaW9tbXVfc3VzcGVuZCgpCiB7CiAgICAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqb3BzID0g aW9tbXVfZ2V0X29wcygpOworCiAgICAgaWYgKCBpb21tdV9lbmFibGVkICkKLSAgICAgICAgb3Bz LT5zdXNwZW5kKCk7CisgICAgICAgIHJldHVybiBvcHMtPnN1c3BlbmQoKTsKKworICAgIHJldHVy biAwOwogfQogCiB2b2lkIGlvbW11X3NoYXJlX3AybV90YWJsZShzdHJ1Y3QgZG9tYWluKiBkKQpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCBiZjhjOWMxLi5jZjg0N2VjIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNTQyLDExICs1NDIsMTIgQEAgc3RhdGlj IGludCBpb21tdV9mbHVzaF9pb3RsYl9wc2koCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotc3Rh dGljIHZvaWQgaW9tbXVfZmx1c2hfYWxsKHZvaWQpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBp b21tdV9mbHVzaF9hbGwodm9pZCkKIHsKICAgICBzdHJ1Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7 CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICBpbnQgZmx1c2hfZGV2X2lvdGxiOworICAg IGludCByYyA9IDAsIHJldDsKIAogICAgIGZsdXNoX2FsbF9jYWNoZSgpOwogICAgIGZvcl9lYWNo X2RyaGRfdW5pdCAoIGRyaGQgKQpAQCAtNTU0LDggKzU1NSwxMyBAQCBzdGF0aWMgdm9pZCBpb21t dV9mbHVzaF9hbGwodm9pZCkKICAgICAgICAgaW9tbXUgPSBkcmhkLT5pb21tdTsKICAgICAgICAg aW9tbXVfZmx1c2hfY29udGV4dF9nbG9iYWwoaW9tbXUsIDApOwogICAgICAgICBmbHVzaF9kZXZf aW90bGIgPSBmaW5kX2F0c19kZXZfZHJoZChpb21tdSkgPyAxIDogMDsKLSAgICAgICAgaW9tbXVf Zmx1c2hfaW90bGJfZ2xvYmFsKGlvbW11LCAwLCBmbHVzaF9kZXZfaW90bGIpOworICAgICAgICBy ZXQgPSBpb21tdV9mbHVzaF9pb3RsYl9nbG9iYWwoaW9tbXUsIDAsIGZsdXNoX2Rldl9pb3RsYik7 CisKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgcmMgPSByZXQ7CiAgICAgfQorCisg ICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLApAQCAtMTI3Miw3ICsxMjc4LDkgQEAgc3RhdGlj IHZvaWQgX19od2RvbV9pbml0IGludGVsX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAq ZCkKICAgICBzZXR1cF9od2RvbV9wY2lfZGV2aWNlcyhkLCBzZXR1cF9od2RvbV9kZXZpY2UpOwog ICAgIHNldHVwX2h3ZG9tX3JtcnIoZCk7CiAKLSAgICBpb21tdV9mbHVzaF9hbGwoKTsKKyAgICBp ZiAoIGlvbW11X2ZsdXNoX2FsbCgpICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HIFZU RFBSRUZJWAorICAgICAgICAgICAgICAgIiBpbnRlbF9pb21tdV9od2RvbV9pbml0OiBJT01NVSBm bHVzaCBhbGwgZmFpbGVkLlxuIik7CiAKICAgICBmb3JfZWFjaF9kcmhkX3VuaXQgKCBkcmhkICkK ICAgICB7CkBAIC0yMTM0LDggKzIxNDIsOCBAQCBzdGF0aWMgaW50IGluaXRfdnRkX2h3KHZvaWQp CiAgICAgICAgICAgICByZXR1cm4gLUVJTzsKICAgICAgICAgfQogICAgIH0KLSAgICBpb21tdV9m bHVzaF9hbGwoKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBpb21tdV9mbHVzaF9hbGwo KTsKIH0KIAogc3RhdGljIHZvaWQgX19od2RvbV9pbml0IHNldHVwX2h3ZG9tX3JtcnIoc3RydWN0 IGRvbWFpbiAqZCkKQEAgLTI0MjQsMTYgKzI0MzIsMjUgQEAgc3RhdGljIGludCBpbnRlbF9pb21t dV9ncm91cF9pZCh1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQogfQogCiBzdGF0aWMgdTMyIGlv bW11X3N0YXRlW01BWF9JT01NVVNdW01BWF9JT01NVV9SRUdTXTsKLXN0YXRpYyB2b2lkIHZ0ZF9z dXNwZW5kKHZvaWQpCisKK3N0YXRpYyBpbnQgdnRkX3N1c3BlbmQodm9pZCkKIHsKICAgICBzdHJ1 Y3QgYWNwaV9kcmhkX3VuaXQgKmRyaGQ7CiAgICAgc3RydWN0IGlvbW11ICppb21tdTsKICAgICB1 MzIgICAgaTsKKyAgICBpbnQgcmM7CiAKICAgICBpZiAoICFpb21tdV9lbmFibGVkICkKLSAgICAg ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAotICAgIGlvbW11X2ZsdXNoX2FsbCgpOwor ICAgIHJjID0gaW9tbXVfZmx1c2hfYWxsKCk7CisKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAg ICAgIHByaW50ayhYRU5MT0dfV0FSTklORyBWVERQUkVGSVgKKyAgICAgICAgICAgICAgICIgdnRk X3N1c3BlbmQ6IElPTU1VIGZsdXNoIGFsbCBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuIHJj OworICAgIH0KIAogICAgIGZvcl9lYWNoX2RyaGRfdW5pdCAoIGRyaGQgKQogICAgIHsKQEAgLTI0 NjIsNiArMjQ3OSw4IEBAIHN0YXRpYyB2b2lkIHZ0ZF9zdXNwZW5kKHZvaWQpCiAgICAgICAgIGlm ICggIWlvbW11X2ludHJlbWFwICYmIGlvbW11X3FpbnZhbCApCiAgICAgICAgICAgICBkaXNhYmxl X3FpbnZhbChpb21tdSk7CiAgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lk IHZ0ZF9jcmFzaF9zaHV0ZG93bih2b2lkKQpAQCAtMjQ3Miw3ICsyNDkxLDkgQEAgc3RhdGljIHZv aWQgdnRkX2NyYXNoX3NodXRkb3duKHZvaWQpCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCApCiAg ICAgICAgIHJldHVybjsKIAotICAgIGlvbW11X2ZsdXNoX2FsbCgpOworICAgIGlmICggaW9tbXVf Zmx1c2hfYWxsKCkgKQorICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgVlREUFJFRklYCisg ICAgICAgICAgICAgICAiIHZ0ZF9jcmFzaF9zaHV0ZG93bjogSU9NTVUgZmx1c2ggYWxsIGZhaWxl ZC5cbiIpOwogCiAgICAgZm9yX2VhY2hfZHJoZF91bml0ICggZHJoZCApCiAgICAgewpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCmluZGV4IDljNTExNzIu LmY1NDBmYzggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9t bXUtcHJvdG8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXBy b3RvLmgKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyAqc2hhcmVkX2lu dHJlbWFwX2ludXNlOwogCiAvKiBwb3dlciBtYW5hZ2VtZW50IHN1cHBvcnQgKi8KIHZvaWQgYW1k X2lvbW11X3Jlc3VtZSh2b2lkKTsKLXZvaWQgYW1kX2lvbW11X3N1c3BlbmQodm9pZCk7CitpbnQg YW1kX2lvbW11X3N1c3BlbmQodm9pZCk7CiB2b2lkIGFtZF9pb21tdV9jcmFzaF9zaHV0ZG93bih2 b2lkKTsKIAogLyogZ3Vlc3QgaW9tbXUgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCBmZTUyNDI4Li5k ZmE1MmVmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5j bHVkZS94ZW4vaW9tbXUuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0cnVjdCBpb21tdV9vcHMgewog ICAgIHVuc2lnbmVkIGludCAoKnJlYWRfYXBpY19mcm9tX2lyZSkodW5zaWduZWQgaW50IGFwaWMs IHVuc2lnbmVkIGludCByZWcpOwogICAgIGludCAoKnNldHVwX2hwZXRfbXNpKShzdHJ1Y3QgbXNp X2Rlc2MgKik7CiAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwotICAgIHZvaWQgKCpzdXNwZW5kKSh2 b2lkKTsKKyAgICBpbnQgKCpzdXNwZW5kKSh2b2lkKTsKICAgICB2b2lkICgqcmVzdW1lKSh2b2lk KTsKICAgICB2b2lkICgqc2hhcmVfcDJtKShzdHJ1Y3QgZG9tYWluICpkKTsKICAgICB2b2lkICgq Y3Jhc2hfc2h1dGRvd24pKHZvaWQpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0cnVjdCBpb21tdV9v cHMgewogICAgIHZvaWQgKCpkdW1wX3AybV90YWJsZSkoc3RydWN0IGRvbWFpbiAqZCk7CiB9Owog Ci12b2lkIGlvbW11X3N1c3BlbmQodm9pZCk7CitpbnQgX19tdXN0X2NoZWNrIGlvbW11X3N1c3Bl bmQodm9pZCk7CiB2b2lkIGlvbW11X3Jlc3VtZSh2b2lkKTsKIHZvaWQgaW9tbXVfY3Jhc2hfc2h1 dGRvd24odm9pZCk7CiBpbnQgaW9tbXVfZ2V0X3Jlc2VydmVkX2RldmljZV9tZW1vcnkoaW9tbXVf Z3JkbV90ICosIHZvaWQgKik7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==