From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v5 11/21] x86/cpu: Context switch cpuid masks and faulting state in context_switch() Date: Thu, 7 Apr 2016 12:57:16 +0100 Message-ID: <1460030246-30153-12-git-send-email-andrew.cooper3@citrix.com> References: <1460030246-30153-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1460030246-30153-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org QSBzaW5nbGUgY3R4dF9zd2l0Y2hfbGV2ZWxsaW5nKCkgZnVuY3Rpb24gcG9pbnRlciBpcyBwcm92 aWRlZAooZGVmYXVsdGluZyB0byBhbiBlbXB0eSBub3ApLCB3aGljaCBpcyBvdmVycmlkZGVuIGlu IHRoZSBhcHByb3ByaWF0ZQokVkVORE9SX2luaXRfbGV2ZWxsaW5nKCkuCgpzZXRfY3B1aWRfZmF1 bHRpbmcoKSBpcyBtYWRlIHByaXZhdGUgYW5kIGluY2x1ZGVkIHdpdGhpbgppbnRlbF9jdHh0X3N3 aXRjaF9sZXZlbGxpbmcoKS4KCk9uZSAoYXR0ZW1wdGVkKSBmdW5jdGlvbmFsIGNoYW5nZSBpcyB0 aGF0IHRoZSBmYXVsdGluZyBjb25maWd1cmF0aW9uIHNob3VsZApub3QgYmUgc3BlY2lhbCBjYXNl ZCBmb3IgZG9tMC4gIEl0IHR1cm5zIG91dCB0aGF0IHRoZSB0b29sc3RhY2sgcmVsaWVzIG9uIHRo ZQpzcGVjaWFsIGNhc2UgKGFuZCBpbmRlZWQsIG9uIGJlaW5nIGEgUFYgZG9tYWluIGluIHRoZSBm aXJzdCBwbGFjZSkgdG8KY29ycmVjdGx5IGJ1aWxkIEhWTSBkb21haW5zLgoKRm9yIG5vdywgdGhl IGNvbnRyb2wgZG9tYWluIGlzIGxlZnQgYXMgYSBzcGVjaWFsIGNhc2UsIHVudGlsIGZ1dGhlciB3 b3JrIGNhbgpiZSBjb21wbGV0ZWQgdG8gcmVtb3ZlIHRoZSByZXN0cmljdGlvbi4KClNpZ25lZC1v ZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClJldmlld2Vk LWJ5OiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Ci0tLQp2MzoKICogRG9uJ3QgbGVh dmUgY3B1aWQgbWFza2luZy9mYXVsdGluZyBhY3RpdmUgZm9yIHRoZSBrZXhlYyBrZXJuZWwuCnYy OgogKiBTdHlsZSBmaXhlcy4KICogQVNTRVJUKCkgdGhhdCBmYXVsdGluZyBpcyBhdmFpbGFibGUg aW4gc2V0X2NwdWlkX2ZhdWx0aW5nKCkuCnY1OgogKiBGaXggdGhlIGJ1aWxkaW5nIG9mIEhWTSBk b21haW5zIGZyb20gaGFyZHdhcmUgd2l0aCBmYXVsdGluZyBhdmFpbGFibGUuCi0tLQogeGVuL2Fy Y2gveDg2L2NwdS9hbWQuYyAgICAgICAgICB8ICAzICsrKwogeGVuL2FyY2gveDg2L2NwdS9jb21t b24uYyAgICAgICB8ICA3ICsrKysrKysKIHhlbi9hcmNoL3g4Ni9jcHUvaW50ZWwuYyAgICAgICAg fCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiB4ZW4vYXJjaC94ODYv Y3Jhc2guYyAgICAgICAgICAgIHwgIDMgKysrCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAg ICAgIHwgIDQgKy0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCB8ICAyICstCiA2 IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKaW5k ZXggOTNhOGE1ZS4uM2UyZjRhOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9hbWQuYwor KysgYi94ZW4vYXJjaC94ODYvY3B1L2FtZC5jCkBAIC0zMzEsNiArMzMxLDkgQEAgc3RhdGljIHZv aWQgX19pbml0IG5vaW5saW5lIGFtZF9pbml0X2xldmVsbGluZyh2b2lkKQogCQkgICAgICAgKHVp bnQzMl90KWNwdWlkbWFza19kZWZhdWx0cy5fN2FiMCwKIAkJICAgICAgICh1aW50MzJfdCljcHVp ZG1hc2tfZGVmYXVsdHMuXzZjKTsKIAl9CisKKwlpZiAobGV2ZWxsaW5nX2NhcHMpCisJCWN0eHRf c3dpdGNoX2xldmVsbGluZyA9IGFtZF9jdHh0X3N3aXRjaF9sZXZlbGxpbmc7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jIGIveGVuL2FyY2gveDg2L2NwdS9j b21tb24uYwppbmRleCA3ZWY3NWIwLi5mZTZlYWI0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv Y3B1L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMKQEAgLTg4LDYgKzg4 LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY3B1X2RldiBkZWZhdWx0X2NwdSA9IHsKIH07CiBz dGF0aWMgY29uc3Qgc3RydWN0IGNwdV9kZXYgKnRoaXNfY3B1ID0gJmRlZmF1bHRfY3B1OwogCitz dGF0aWMgdm9pZCBkZWZhdWx0X2N0eHRfc3dpdGNoX2xldmVsbGluZyhjb25zdCBzdHJ1Y3QgZG9t YWluICpuZXh0ZCkKK3sKKwkvKiBOb3AgKi8KK30KK3ZvaWQgKCogX19yZWFkX21vc3RseSBjdHh0 X3N3aXRjaF9sZXZlbGxpbmcpKGNvbnN0IHN0cnVjdCBkb21haW4gKm5leHRkKSA9CisJZGVmYXVs dF9jdHh0X3N3aXRjaF9sZXZlbGxpbmc7CisKIGJvb2xfdCBvcHRfY3B1X2luZm87CiBib29sZWFu X3BhcmFtKCJjcHVpbmZvIiwgb3B0X2NwdV9pbmZvKTsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2NwdS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9pbnRlbC5jCmluZGV4IDZlMWZiYmIu LmUyMWMzMmQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvaW50ZWwuYworKysgYi94ZW4v YXJjaC94ODYvY3B1L2ludGVsLmMKQEAgLTMyLDEzICszMiwxNSBAQCBzdGF0aWMgYm9vbF90IF9f aW5pdCBwcm9iZV9pbnRlbF9jcHVpZF9mYXVsdGluZyh2b2lkKQogCXJldHVybiAxOwogfQogCi1z dGF0aWMgREVGSU5FX1BFUl9DUFUoYm9vbF90LCBjcHVpZF9mYXVsdGluZ19lbmFibGVkKTsKLXZv aWQgc2V0X2NwdWlkX2ZhdWx0aW5nKGJvb2xfdCBlbmFibGUpCitzdGF0aWMgdm9pZCBzZXRfY3B1 aWRfZmF1bHRpbmcoYm9vbF90IGVuYWJsZSkKIHsKKwlzdGF0aWMgREVGSU5FX1BFUl9DUFUoYm9v bF90LCBjcHVpZF9mYXVsdGluZ19lbmFibGVkKTsKKwlib29sX3QgKnRoaXNfZW5hYmxlZCA9ICZ0 aGlzX2NwdShjcHVpZF9mYXVsdGluZ19lbmFibGVkKTsKIAl1aW50MzJfdCBoaSwgbG87CiAKLQlp ZiAoIWNwdV9oYXNfY3B1aWRfZmF1bHRpbmcgfHwKLQkgICAgdGhpc19jcHUoY3B1aWRfZmF1bHRp bmdfZW5hYmxlZCkgPT0gZW5hYmxlICkKKwlBU1NFUlQoY3B1X2hhc19jcHVpZF9mYXVsdGluZyk7 CisKKwlpZiAoKnRoaXNfZW5hYmxlZCA9PSBlbmFibGUpCiAJCXJldHVybjsKIAogCXJkbXNyKE1T Ul9JTlRFTF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsIGxvLCBoaSk7CkBAIC00Nyw3ICs0OSw3IEBA IHZvaWQgc2V0X2NwdWlkX2ZhdWx0aW5nKGJvb2xfdCBlbmFibGUpCiAJCWxvIHw9IE1TUl9NSVND X0ZFQVRVUkVTX0NQVUlEX0ZBVUxUSU5HOwogCXdybXNyKE1TUl9JTlRFTF9NSVNDX0ZFQVRVUkVT X0VOQUJMRVMsIGxvLCBoaSk7CiAKLQl0aGlzX2NwdShjcHVpZF9mYXVsdGluZ19lbmFibGVkKSA9 IGVuYWJsZTsKKwkqdGhpc19lbmFibGVkID0gZW5hYmxlOwogfQogCiAvKgpAQCAtMTU0LDYgKzE1 NiwyOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jdHh0X3N3aXRjaF9sZXZlbGxpbmcoY29uc3Qgc3Ry dWN0IGRvbWFpbiAqbmV4dGQpCiAJc3RydWN0IGNwdWlkbWFza3MgKnRoZXNlX21hc2tzID0gJnRo aXNfY3B1KGNwdWlkbWFza3MpOwogCWNvbnN0IHN0cnVjdCBjcHVpZG1hc2tzICptYXNrcyA9ICZj cHVpZG1hc2tfZGVmYXVsdHM7CiAKKwlpZiAoY3B1X2hhc19jcHVpZF9mYXVsdGluZykgeworCQkv KgorCQkgKiBXZSAqc2hvdWxkKiBiZSBlbmFibGluZyBmYXVsdGluZyBmb3IgdGhlIGNvbnRyb2wg ZG9tYWluLgorCQkgKgorCQkgKiBVbmZvcnR1bmF0ZWx5LCB0aGUgZG9tYWluIGJ1aWxkZXIgKGhh dmluZyBvbmx5IGV2ZXIgYmVlbiBhCisJCSAqIFBWIGd1ZXN0KSBleHBlY3RzIHRvIGJlIGFibGUg dG8gc2VlIGhvc3QgY3B1aWQgc3RhdGUgaW4gYQorCQkgKiBuYXRpdmUgQ1BVSUQgaW5zdHJ1Y3Rp b24sIHRvIGNvcnJlY3RseSBidWlsZCBhIENQVUlEIHBvbGljeQorCQkgKiBmb3IgSFZNIGd1ZXN0 cyAobm90YWJseSB0aGUgeHN0YXRlIGxlYXZlcykuCisJCSAqCisJCSAqIFRoaXMgbG9naWMgaXMg ZnVuZGltZW50YWxseSBicm9rZW4gZm9yIEhWTSB0b29sc3RhY2sKKwkJICogZG9tYWlucywgYW5k IGZhdWx0aW5nIGNhdXNlcyBQViBndWVzdHMgdG8gYmVoYXZlIGxpa2UgSFZNCisJCSAqIGd1ZXN0 cyBmcm9tIHRoZWlyIHBvaW50IG9mIHZpZXcuCisJCSAqCisJCSAqIEZ1dHVyZSBkZXZlbG9wbWVu dCBwbGFucyB3aWxsIG1vdmUgcmVzcG9uc2liaWxpdHkgZm9yCisJCSAqIGdlbmVyYXRpbmcgdGhl IG1heGltdW0gZnVsbCBjcHVpZCBwb2xpY3kgaW50byBYZW4sIGF0IHdoaWNoCisJCSAqIHRoaXMg cHJvYmxlbSB3aWxsIGRpc2FwcGVhci4KKwkJICovCisJCXNldF9jcHVpZF9mYXVsdGluZyhuZXh0 ZCAmJiBpc19wdl9kb21haW4obmV4dGQpICYmCisJCQkJICAgIWlzX2NvbnRyb2xfZG9tYWluKG5l eHRkKSk7CisJCXJldHVybjsKKwl9CisKICNkZWZpbmUgTEFaWShtc3IsIGZpZWxkKQkJCQkJCVwK IAkoewkJCQkJCQkJXAogCQlpZiAodW5saWtlbHkodGhlc2VfbWFza3MtPmZpZWxkICE9IG1hc2tz LT5maWVsZCkgJiYJXApAQCAtMjI3LDYgKzI1MSw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBub2lu bGluZSBpbnRlbF9pbml0X2xldmVsbGluZyh2b2lkKQogCQkJICAgICAgICh1aW50MzJfdCljcHVp ZG1hc2tfZGVmYXVsdHMuZTFjZCwKIAkJCSAgICAgICAodWludDMyX3QpY3B1aWRtYXNrX2RlZmF1 bHRzLkRhMSk7CiAJfQorCisJaWYgKGxldmVsbGluZ19jYXBzKQorCQljdHh0X3N3aXRjaF9sZXZl bGxpbmcgPSBpbnRlbF9jdHh0X3N3aXRjaF9sZXZlbGxpbmc7CiB9CiAKIHN0YXRpYyB2b2lkIGVh cmx5X2luaXRfaW50ZWwoc3RydWN0IGNwdWluZm9feDg2ICpjKQpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2NyYXNoLmMgYi94ZW4vYXJjaC94ODYvY3Jhc2guYwppbmRleCA4ODhhMjE0Li5mMjhm NTI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3Jhc2guYworKysgYi94ZW4vYXJjaC94ODYv Y3Jhc2guYwpAQCAtMTg5LDYgKzE4OSw5IEBAIHZvaWQgbWFjaGluZV9jcmFzaF9zaHV0ZG93bih2 b2lkKQogCiAgICAgbm1pX3Nob290ZG93bl9jcHVzKCk7CiAKKyAgICAvKiBSZXNldCBDUFVJRCBt YXNraW5nIGFuZCBmYXVsdGluZyB0byB0aGUgaG9zdCdzIGRlZmF1bHQuICovCisgICAgY3R4dF9z d2l0Y2hfbGV2ZWxsaW5nKE5VTEwpOworCiAgICAgaW5mbyA9IGtleGVjX2NyYXNoX3NhdmVfaW5m bygpOwogICAgIGluZm8tPnhlbl9waHlzX3N0YXJ0ID0geGVuX3BoeXNfc3RhcnQ7CiAgICAgaW5m by0+ZG9tMF9wZm5fdG9fbWZuX2ZyYW1lX2xpc3RfbGlzdCA9CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggYTRmNmRiMi4uY2Jh NzdhMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9kb21haW4uYwpAQCAtMjA4Miw5ICsyMDgyLDcgQEAgdm9pZCBjb250ZXh0X3N3aXRjaChzdHJ1 Y3QgdmNwdSAqcHJldiwgc3RydWN0IHZjcHUgKm5leHQpCiAgICAgICAgICAgICBsb2FkX3NlZ21l bnRzKG5leHQpOwogICAgICAgICB9CiAKLSAgICAgICAgc2V0X2NwdWlkX2ZhdWx0aW5nKGlzX3B2 X2RvbWFpbihuZXh0ZCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb250cm9s X2RvbWFpbihuZXh0ZCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc19oYXJkd2Fy ZV9kb21haW4obmV4dGQpKTsKKyAgICAgICAgY3R4dF9zd2l0Y2hfbGV2ZWxsaW5nKG5leHRkKTsK ICAgICB9CiAKICAgICBjb250ZXh0X3NhdmVkKHByZXYpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgK aW5kZXggYTk1MDU1NC4uZjI5ZDM3MCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9w cm9jZXNzb3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCkBAIC0yMDks NyArMjA5LDcgQEAgZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBib290X2NwdV9kYXRhOwogZXh0 ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBjcHVfZGF0YVtdOwogI2RlZmluZSBjdXJyZW50X2NwdV9k YXRhIGNwdV9kYXRhW3NtcF9wcm9jZXNzb3JfaWQoKV0KIAotZXh0ZXJuIHZvaWQgc2V0X2NwdWlk X2ZhdWx0aW5nKGJvb2xfdCBlbmFibGUpOworZXh0ZXJuIHZvaWQgKCpjdHh0X3N3aXRjaF9sZXZl bGxpbmcpKGNvbnN0IHN0cnVjdCBkb21haW4gKm5leHRkKTsKIAogZXh0ZXJuIHU2NCBob3N0X3Bh dDsKIGV4dGVybiBib29sX3Qgb3B0X2NwdV9pbmZvOwotLSAKMi4xLjQKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=