From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v3 1/2] xen/pt: fix some pass-thru devices don't work across reboot Date: Tue, 18 Dec 2018 22:43:37 +0800 Message-ID: <1545144218-6463-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: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gZGXT-0003dC-Ax for xen-devel@lists.xenproject.org; Tue, 18 Dec 2018 14:40:03 +0000 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 Cc: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Jan Beulich , Chao Gao List-Id: xen-devel@lists.xenproject.org SSBmaW5kIHNvbWUgcGFzcy10aHJ1IGRldmljZXMgZG9uJ3Qgd29yayBhbnkgbW9yZSBhY3Jvc3Mg Z3Vlc3QKcmVib290LiBBc3NpZ25pbmcgaXQgdG8gYW5vdGhlciBkb21haW4gYWxzbyBtZWV0cyB0 aGUgc2FtZSBpc3N1ZS4gQW5kCnRoZSBvbmx5IHdheSB0byBtYWtlIGl0IHdvcmsgYWdhaW4gaXMg dW4tYmluZGluZyBhbmQgYmluZGluZyBpdCB0bwpwY2liYWNrLiBTb21lb25lIHJlcG9ydGVkIHRo aXMgaXNzdWUgb25lIHllYXIgYWdvIFsxXS4KCklmIHRoZSBkZXZpY2UncyBkcml2ZXIgZG9lc24n dCBkaXNhYmxlIE1TSS1YIGR1cmluZyBzaHV0ZG93biBvciBxZW11IGlzCmtpbGxlZC9jcmFzaGVk IGJlZm9yZSB0aGUgZG9tYWluIHNodXRkb3duLCB0aGlzIGRvbWFpbidzIHBpcnEgd29uJ3QgYmUK dW5tYXBwZWQuIFRoZW4geGVuIHRha2VzIG92ZXIgdGhpcyB3b3JrLCB1bm1hcHBpbmcgYWxsIHBp cnEtcywgd2hlbgpkZXN0cm95aW5nIGd1ZXN0LiBCdXQgYXMgcGNpYmFjayBoYXMgYWxyZWFkeSBk aXNhYmxlZCBtZW9yeSBkZWNvZGluZyBiZWZvcmUKeGVuIHVubWFwcGluZyBwaXJxLCBYZW4gaGFz IHRvIHNldHMgdGhlIGhvc3RfbWFza2FsbCBmbGFnIGFuZCBtYXNrYWxsIGJpdAp0byBtYXNrIGEg TVNJIHJhdGhlciB0aGFuIHNldHMgbWFza2JpdCBpbiBNU0kteCB0YWJsZS4gVGhlIGNhbGwgdHJh Y2Ugb2YKdGhpcyBwcm9jZXNzIGlzOgoKLT5hcmNoX2RvbWFpbl9kZXN0cm95CiAgICAtPmZyZWVf ZG9tYWluX3BpcnFzCiAgICAgICAgLT51bm1hcF9kb21haW5fcGlycSAoaWYgcGlycSBpc24ndCB1 bm1hcHBlZCBieSBxZW11KQogICAgICAgICAgICAtPnBpcnFfZ3Vlc3RfZm9yY2VfdW5iaW5kCiAg ICAgICAgICAgICAgICAtPl9fcGlycV9ndWVzdF91bmJpbmQKICAgICAgICAgICAgICAgICAgICAt Pm1hc2tfbXNpX2lycSg9ZGVzYy0+aGFuZGxlci0+ZGlzYWJsZSgpKQogICAgICAgICAgICAgICAg ICAgICAgICAtPnRoZSB3YXJuaW5nIGluIG1zaV9zZXRfbWFza19iaXQoKQoKVGhlIGhvc3RfbWFz a2FsbCBiaXQgd2lsbCBwcmV2ZW50IGd1ZXN0cyBmcm9tIGNsZWFyaW5nIHRoZSBtYXNrYWxsIGJp dApldmVuIHRoZSBkZXZpY2UgaXMgYXNzaWduZWQgdG8gYW5vdGhlciBndWVzdCBsYXRlci4gVGhl biBndWVzdHMgY2Fubm90CnJlY2VpdmUgTVNJcyBmcm9tIHRoaXMgZGV2aWNlLgoKVG8gZml4IHRo aXMgaXNzdWUsIGEgcGlycSBpcyB1bm1hcHBlZCBiZWZvcmUgbWVtb3J5IGRlY29kaW5nIGlzIGRp c2FibGVkIGJ5CnBjaWJhY2suIFNwZWNpZmljYWxseSwgd2hlbiBhIGRldmljZSBpcyBkZXRhY2hl ZCBmcm9tIGEgZ3Vlc3QsIGFsbCBlc3RhYmxpc2hlZAptYXBwaW5ncyBiZXR3ZWVuIHBpcnEgYW5k IG1zaSBhcmUgZGVzdHJveWluZyBiZWZvcmUgY2hhbmdpbmcgdGhlIG93bmVyc2hpcC4KClsxXTog aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE3 LTA5L21zZzAyNTIwLmh0bWwKClNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRl bC5jb20+Ci0tLQpBcHBsaWVkIHRoaXMgcGF0Y2gsIHFlbXUgd291bGQgcmVwb3J0IHRoZSBlcnJv ciBiZWxvdzoKICAgIFswMDowNS4wXSBtc2lfbXNpeF9kaXNhYmxlOiBFcnJvcjogVW5iaW5kaW5n IG9mIE1TSS1YIGZhaWxlZC4gKGVycjogMSwgcGlycTogMzAyLCBndmVjOiAweGQ1KQogICAgWzAw OjA1LjBdIG1zaV9tc2l4X2Rpc2FibGU6IEVycm9yOiBVbmJpbmRpbmcgb2YgTVNJLVggZmFpbGVk LiAoZXJyOiAxLCBwaXJxOiAzMDEsIGd2ZWM6IDB4ZTUpCiAgICBbMDA6MDQuMF0gbXNpX21zaXhf ZGlzYWJsZTogRXJyb3I6IFVuYmluZGluZyBvZiBNU0ktWCBmYWlsZWQuIChlcnI6IDEsIHBpcnE6 IDM1OSwgZ3ZlYzogMHg0MSkKICAgIFswMDowNC4wXSBtc2lfbXNpeF9kaXNhYmxlOiBFcnJvcjog VW5iaW5kaW5nIG9mIE1TSS1YIGZhaWxlZC4gKGVycjogMSwgcGlycTogMzU4LCBndmVjOiAweDUx KQoKRGVzcGl0ZSBvZiB0aGUgZXJyb3IsIGd1ZXN0IHNodXRkb3duIG9yIGRldmljZSBob3RwbHVn IGZpbmlzaHMgc21vb3RobHkuCkl0IHNlZW1zIHRvIG1lIHRoYXQgcWVtdSB0cmllcyB0byB1bmJp bmQgYSBtc2kgd2hpY2ggaXMgYWxyZWFkeSB1bmJvdW5kIGJ5CnRoZSBjb2RlIGFkZGVkIGJ5IHRo aXMgcGF0Y2guIEkgYW0gbm90IHN1cmUgd2hldGhlciBpdCBpcyBhY2NlcHRhYmxlIHRvCmxlYXZl IHRoaXMgZXJyb3IgdGhlcmUuCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYyAgfCA1 NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9wY2kuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFu Z2VkLCA4OSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwpp bmRleCBhNmViOGE0Li41NmVlMWVmIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9pby5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKQEAgLTYxOSw2ICs2MTks NDIgQEAgaW50IHB0X2lycV9jcmVhdGVfYmluZCgKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGlj IHZvaWQgcHRfaXJxX2Rlc3Ryb3lfYmluZF9jb21tb24oc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IHBpcnEgKnBpcnEpCit7CisgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBp cnFfZHBjaShwaXJxKTsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmZC0+ZXZlbnRfbG9j aykpOworCisgICAgaWYgKCBwaXJxX2RwY2kgJiYgKHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1fSVJR X0RQQ0lfTUFQUEVEKSAmJgorICAgICAgICAgbGlzdF9lbXB0eSgmcGlycV9kcGNpLT5kaWdsX2xp c3QpICkKKyAgICB7CisgICAgICAgIHBpcnFfZ3Vlc3RfdW5iaW5kKGQsIHBpcnEpOworICAgICAg ICBtc2l4dGJsX3B0X3VucmVnaXN0ZXIoZCwgcGlycSk7CisgICAgICAgIGlmICggcHRfaXJxX25l ZWRfdGltZXIocGlycV9kcGNpLT5mbGFncykgKQorICAgICAgICAgICAga2lsbF90aW1lcigmcGly cV9kcGNpLT50aW1lcik7CisgICAgICAgIHBpcnFfZHBjaS0+ZmxhZ3MgPSAwOworICAgICAgICAv KgorICAgICAgICAgKiBTZWUgY29tbWVudCBpbiBwdF9pcnFfY3JlYXRlX2JpbmQncyBQVF9JUlFf VFlQRV9NU0kgYmVmb3JlIHRoZQorICAgICAgICAgKiBjYWxsIHRvIHB0X3BpcnFfc29mdGlycV9y ZXNldC4KKyAgICAgICAgICovCisgICAgICAgIHB0X3BpcnFfc29mdGlycV9yZXNldChwaXJxX2Rw Y2kpOworCisgICAgICAgIHBpcnFfY2xlYW51cF9jaGVjayhwaXJxLCBkKTsKKyAgICB9Cit9CisK K3ZvaWQgcHRfaXJxX2Rlc3Ryb3lfYmluZF9tc2koc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHBp cnEgKnBpcnEpCit7CisgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBpcnFf ZHBjaShwaXJxKTsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmZC0+ZXZlbnRfbG9jaykp OworCisgICAgaWYgKCBwaXJxX2RwY2kgJiYgcGlycV9kcGNpLT5nbXNpLnBvc3RlZCApCisgICAg ICAgIHBpX3VwZGF0ZV9pcnRlKE5VTEwsIHBpcnEsIDApOworCisgICAgcHRfaXJxX2Rlc3Ryb3lf YmluZF9jb21tb24oZCwgcGlycSk7Cit9CisKIGludCBwdF9pcnFfZGVzdHJveV9iaW5kKAogICAg IHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCB4ZW5fZG9tY3RsX2JpbmRfcHRfaXJxICpw dF9pcnFfYmluZCkKIHsKQEAgLTcyNywyNiArNzYzLDExIEBAIGludCBwdF9pcnFfZGVzdHJveV9i aW5kKAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHdoYXQgPSAiYm9ndXMi OwotICAgIH0KLSAgICBlbHNlIGlmICggcGlycV9kcGNpICYmIHBpcnFfZHBjaS0+Z21zaS5wb3N0 ZWQgKQotICAgICAgICBwaV91cGRhdGVfaXJ0ZShOVUxMLCBwaXJxLCAwKTsKLQotICAgIGlmICgg cGlycV9kcGNpICYmIChwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX01BUFBFRCkgJiYK LSAgICAgICAgIGxpc3RfZW1wdHkoJnBpcnFfZHBjaS0+ZGlnbF9saXN0KSApCi0gICAgewotICAg ICAgICBwaXJxX2d1ZXN0X3VuYmluZChkLCBwaXJxKTsKLSAgICAgICAgbXNpeHRibF9wdF91bnJl Z2lzdGVyKGQsIHBpcnEpOwotICAgICAgICBpZiAoIHB0X2lycV9uZWVkX3RpbWVyKHBpcnFfZHBj aS0+ZmxhZ3MpICkKLSAgICAgICAgICAgIGtpbGxfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOwot ICAgICAgICBwaXJxX2RwY2ktPmZsYWdzID0gMDsKLSAgICAgICAgLyoKLSAgICAgICAgICogU2Vl IGNvbW1lbnQgaW4gcHRfaXJxX2NyZWF0ZV9iaW5kJ3MgUFRfSVJRX1RZUEVfTVNJIGJlZm9yZSB0 aGUKLSAgICAgICAgICogY2FsbCB0byBwdF9waXJxX3NvZnRpcnFfcmVzZXQuCi0gICAgICAgICAq LwotICAgICAgICBwdF9waXJxX3NvZnRpcnFfcmVzZXQocGlycV9kcGNpKTsKIAotICAgICAgICBw aXJxX2NsZWFudXBfY2hlY2socGlycSwgZCk7CisgICAgICAgIHB0X2lycV9kZXN0cm95X2JpbmRf Y29tbW9uKGQsIHBpcnEpOwogICAgIH0KKyAgICBlbHNlCisgICAgICAgIHB0X2lycV9kZXN0cm95 X2JpbmRfbXNpKGQsIHBpcnEpOwogCiAgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOwog CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3BjaS5jCmluZGV4IDEyNzdjZTIuLjg4YTgwMDcgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3BjaS5jCkBAIC0zNjgsNiArMzY4LDcgQEAgc3RhdGljIHN0cnVjdCBwY2lfZGV2ICphbGxvY19w ZGV2KHN0cnVjdCBwY2lfc2VnICpwc2VnLCB1OCBidXMsIHU4IGRldmZuKQogICAgICAgICAgICAg cmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJm1zaXgtPnRh YmxlX2xvY2spOworICAgICAgICBtc2l4LT53YXJuZWQgPSBET01JRF9JTlZBTElEOwogICAgICAg ICBwZGV2LT5tc2l4ID0gbXNpeDsKICAgICB9CiAKQEAgLTE1MTQsNiArMTUxNSw1MiBAQCBzdGF0 aWMgaW50IGFzc2lnbl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1 OCBkZXZmbiwgdTMyIGZsYWcpCiAgICAgcmV0dXJuIHJjOwogfQogCisvKgorICogVW5tYXAgZXN0 YWJsaXNoZWQgbWFwcGluZ3MgYmV0d2VlbiBkb21haW4ncyBwaXJxIGFuZCBkZXZpY2UncyBNU0ku CisgKiBUaGVzZSBtYXBwaW5ncyB3ZXJlIHNldCB1cCBieSBxZW11L2d1ZXN0IGFuZCBhcmUgZXhw ZWN0ZWQgdG8gYmUKKyAqIGRlc3Ryb3llZCB3aGVuIGNoYW5naW5nIHRoZSBkZXZpY2UncyBvd25l cnNoaXAuCisgKi8KK3N0YXRpYyB2b2lkIHBjaV91bm1hcF9tc2koc3RydWN0IHBjaV9kZXYgKnBk ZXYpCit7CisgICAgc3RydWN0IG1zaV9kZXNjICplbnRyeSwgKnRtcDsKKworICAgIEFTU0VSVChw Y2lkZXZzX2xvY2tlZCgpKTsKKworICAgIGlmICggIXBkZXYtPmRvbWFpbiApCisgICAgICAgIHJl dHVybjsKKworICAgIHNwaW5fbG9jaygmcGRldi0+ZG9tYWluLT5ldmVudF9sb2NrKTsKKyAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoIGVudHJ5LCB0bXAsICZwZGV2LT5tc2lfbGlzdCwgbGlz dCApCisgICAgeworICAgICAgICBzdHJ1Y3QgcGlycSAqaW5mbzsKKyAgICAgICAgc3RydWN0IGh2 bV9waXJxX2RwY2kgKnBpcnFfZHBjaTsKKyAgICAgICAgaW50IHBpcnEgPSBkb21haW5faXJxX3Rv X3BpcnEocGRldi0+ZG9tYWluLCBlbnRyeS0+aXJxKSwgcGlycV9vcmlnOworCisgICAgICAgIHBp cnFfb3JpZyA9IHBpcnE7CisKKyAgICAgICAgaWYgKCAhcGlycSApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICAvKiBGb3IgZm9yY2libHkgdW5tYXBwZWQgcGlycSwgbG9va3VwIHJh ZGl4IHRyZWUgd2l0aCBhYnNvbHV0ZSB2YWx1ZSAqLworICAgICAgICBpZiAoIHBpcnEgPCAwKQor ICAgICAgICAgICAgcGlycSA9IC1waXJxOworCisgICAgICAgIGluZm8gPSBwaXJxX2luZm8ocGRl di0+ZG9tYWluLCBwaXJxKTsKKyAgICAgICAgaWYgKCAhaW5mbyApCisgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgcGlycV9kcGNpID0gcGlycV9kcGNpKGluZm8pOworCisgICAgICAgIGlm ICggcGlycV9kcGNpICYmCisgICAgICAgICAgICAgKHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1fSVJR X0RQQ0lfTUFDSF9NU0kpICYmCisgICAgICAgICAgICAgKHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1f SVJRX0RQQ0lfR1VFU1RfTVNJKSApCisgICAgICAgICAgICBwdF9pcnFfZGVzdHJveV9iaW5kX21z aShwZGV2LT5kb21haW4sIGluZm8pOworCisgICAgICAgIGlmICggcGlycV9vcmlnID4gMCApCisg ICAgICAgICAgICB1bm1hcF9kb21haW5fcGlycShwZGV2LT5kb21haW4sIHBpcnFfb3JpZyk7Cisg ICAgfQorICAgIHNwaW5fdW5sb2NrKCZwZGV2LT5kb21haW4tPmV2ZW50X2xvY2spOworfQorCiAv KiBjYWxsZXIgc2hvdWxkIGhvbGQgdGhlIHBjaWRldnNfbG9jayAqLwogaW50IGRlYXNzaWduX2Rl dmljZShzdHJ1Y3QgZG9tYWluICpkLCB1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQogewpAQCAt MTUyOSw2ICsxNTc2LDggQEAgaW50IGRlYXNzaWduX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCB1 MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQogICAgIGlmICggIXBkZXYgKQogICAgICAgICByZXR1 cm4gLUVOT0RFVjsKIAorICAgIHBjaV91bm1hcF9tc2kocGRldik7CisKICAgICB3aGlsZSAoIHBk ZXYtPnBoYW50b21fc3RyaWRlICkKICAgICB7CiAgICAgICAgIGRldmZuICs9IHBkZXYtPnBoYW50 b21fc3RyaWRlOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5j bHVkZS94ZW4vaW9tbXUuaAppbmRleCAzZDc4MTI2Li44YWVjZjQzIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMTA4 LDYgKzEwOCw3IEBAIHN0cnVjdCBwaXJxOwogaW50IGh2bV9kb19JUlFfZHBjaShzdHJ1Y3QgZG9t YWluICosIHN0cnVjdCBwaXJxICopOwogaW50IHB0X2lycV9jcmVhdGVfYmluZChzdHJ1Y3QgZG9t YWluICosIGNvbnN0IHN0cnVjdCB4ZW5fZG9tY3RsX2JpbmRfcHRfaXJxICopOwogaW50IHB0X2ly cV9kZXN0cm95X2JpbmQoc3RydWN0IGRvbWFpbiAqLCBjb25zdCBzdHJ1Y3QgeGVuX2RvbWN0bF9i aW5kX3B0X2lycSAqKTsKK3ZvaWQgcHRfaXJxX2Rlc3Ryb3lfYmluZF9tc2koc3RydWN0IGRvbWFp biAqZCwgc3RydWN0IHBpcnEgKnBpcnEpOwogCiB2b2lkIGh2bV9kcGNpX2lzYWlycV9lb2koc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlzYWlycSk7CiBzdHJ1Y3QgaHZtX2lycV9kcGNp ICpkb21haW5fZ2V0X2lycV9kcGNpKGNvbnN0IHN0cnVjdCBkb21haW4gKik7Ci0tIAoxLjguMy4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==