From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC 20/44] x86/smp: Allocate a percpu linear range for the IDT Date: Thu, 4 Jan 2018 20:21:45 +0000 Message-ID: <1515097329-31902-21-git-send-email-andrew.cooper3@citrix.com> References: <1515097329-31902-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: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhpcyBjaGFuZ2UgYWxzbyBpbnRyb2R1Y2VzIF9hbHRlcl9wZXJjcHVfbWFwcGluZ3MoKSwgYSBo ZWxwZXIgZm9yIGNyZWF0aW5nCmFuZCBtb2RpZnlpbmcgcGVyY3B1IG1hcHBpbmdzLiAgVGhlIGNv ZGUgd2lsbCBiZSBleHRlbmRlZCB3aXRoIGV4dHJhIGFjdGlvbnMKaW4gbGF0ZXIgcGF0Y2hlcy4K ClRoZSBleGlzdGluZyBJRFQgaGVhcCBhbGxvY2F0aW9uIGFuZCBpZHRfdGFibGVzW10gYXJyYXkg YXJlIGtlcHQsIGFsdGhvdWdoIHRoZQphbGxvY2F0aW9uIGxvZ2ljIGlzIHNpbXBsaWZpZWQgYXMg YW4gSURUIGlzIHN0cmljdGx5IG9uZSBzaW5nbGUgcGFnZS4KCmlkdF90YWJsZVtdLCB1c2VkIGJ5 IENQVTAsIG5vdyBuZWVkcyB0byBiZSBzdHJpY3RseSBwYWdlIGFsaWduZWQsIHNvIGlzIG1vdmVk CmludG8gLmJzcy5wYWdlX2FsaWduZWQuCgpOb3RoaW5nIHdyaXRlcyB0byB0aGUgSURUIHZpYSBp dHMgcGVyY3B1IG1hcHBpbmdzLCBzbyB0aGUgb3Bwb3J0dW5pdHkgaXMgdGFrZW4KdG8gbWFrZSB0 aGUgbWFwcGluZyByZWFkLW9ubHkuICBUaGlzIHByb3ZpZGVzIGV4dHJhIGRlZmVuY2UtaW4tZGVw dGgsIGFzIGFuCmF0dGFja2VyIGNhbid0IHVzZSB0aGUgcG9pbnRlciBvYnRhaW5lZCBmcm9tIFNJ RFQgdG8gbW9kaWZ5IHRoZSBhY3RpdmUgSURUIGFzCnBhcnQgb2YgYSBwcml2aWxlZ2UgZXNjYWxh dGlvbiBhdHRlbXB0LgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvc21wYm9vdC5jICAgICAgIHwgMTAzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIHhlbi9hcmNoL3g4Ni90 cmFwcy5jICAgICAgICAgfCAgIDMgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmggfCAg IDMgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NtcGJvb3QuYyBiL3hlbi9hcmNoL3g4Ni9zbXBi b290LmMKaW5kZXggMWY5MjgzMS4uNGRmNzc3NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Nt cGJvb3QuYworKysgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCkBAIC02MzksNiArNjM5LDk0IEBA IHZvaWQgY3B1X2V4aXRfY2xlYXIodW5zaWduZWQgaW50IGNwdSkKICAgICBzZXRfY3B1X3N0YXRl KENQVV9TVEFURV9ERUFEKTsKIH0KIAorLyoKKyAqIE1ha2UgYW4gYWx0ZXJhdGlvbiB0byBhIENQ VXMgcGVyY3B1IGxpbmVhciBtYXBwaW5ncy4gIFRoZSBhY3Rpb24gcGFyYW1ldGVyCisgKiBkZXRl cm1pbmVzIGhvdyAqKnBhZ2UgYW5kIGZsYWdzIGdldCB1c2VkLgorICovCitlbnVtIHBlcmNwdV9h bHRlcl9hY3Rpb24geworICAgIFBFUkNQVV9NQVAsIC8qIE1hcCBleGlzdGluZyBmcmFtZTogcGFn ZSBhbmQgZmxhZ3MgYXJlIGlucHV0IHBhcmFtZXRlcnMuICovCit9Oworc3RhdGljIGludCBfYWx0 ZXJfcGVyY3B1X21hcHBpbmdzKAorICAgIHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcg bGluZWFyLAorICAgIGVudW0gcGVyY3B1X2FsdGVyX2FjdGlvbiBhY3Rpb24sCisgICAgc3RydWN0 IHBhZ2VfaW5mbyAqKnBhZ2UsIHVuc2lnbmVkIGludCBmbGFncykKK3sKKyAgICB1bnNpZ25lZCBp bnQgbWVtZmxhZ3MgPSAwOworICAgIG5vZGVpZF90IG5vZGUgPSBjcHVfdG9fbm9kZShjcHUpOwor ICAgIGw0X3BnZW50cnlfdCBtYXBwaW5ncyA9IHBlcl9jcHUocGVyY3B1X21hcHBpbmdzLCBjcHUp OworICAgIGwzX3BnZW50cnlfdCAqbDN0ID0gTlVMTDsKKyAgICBsMl9wZ2VudHJ5X3QgKmwydCA9 IE5VTEw7CisgICAgbDFfcGdlbnRyeV90ICpsMXQgPSBOVUxMOworICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnBnOworICAgIGludCByYyA9IC1FTk9NRU07CisKKyAgICBBU1NFUlQobDRlX2dldF9mbGFn cyhtYXBwaW5ncykgJiBfUEFHRV9QUkVTRU5UKTsKKyAgICBBU1NFUlQobGluZWFyID49IFBFUkNQ VV9MSU5FQVJfU1RBUlQgJiYgbGluZWFyIDwgIFBFUkNQVV9MSU5FQVJfRU5EKTsKKworICAgIGlm ICggbm9kZSAhPSBOVU1BX05PX05PREUgKQorICAgICAgICBtZW1mbGFncyA9IE1FTUZfbm9kZShu b2RlKTsKKworICAgIGwzdCA9IG1hcF9sM3RfZnJvbV9sNGUobWFwcGluZ3MpOworCisgICAgLyog QWxsb2NhdGUgb3IgbWFwIHRoZSBsMiB0YWJsZSBmb3IgbGluZWFyLiAqLworICAgIGlmICggIShs M2VfZ2V0X2ZsYWdzKGwzdFtsM190YWJsZV9vZmZzZXQobGluZWFyKV0pICYgX1BBR0VfUFJFU0VO VCkgKQorICAgIHsKKyAgICAgICAgcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgbWVtZmxh Z3MpOworICAgICAgICBpZiAoICFwZyApCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAg bDJ0ID0gX19tYXBfZG9tYWluX3BhZ2UocGcpOworICAgICAgICBjbGVhcl9wYWdlKGwydCk7CisK KyAgICAgICAgbDN0W2wzX3RhYmxlX29mZnNldChsaW5lYXIpXSA9IGwzZV9mcm9tX3BhZ2UocGcs IF9fUEFHRV9IWVBFUlZJU09SKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBsMnQgPSBtYXBf bDJ0X2Zyb21fbDNlKGwzdFtsM190YWJsZV9vZmZzZXQobGluZWFyKV0pOworCisgICAgLyogQWxs b2NhdGUgb3IgbWFwIHRoZSBsMSB0YWJsZSBmb3IgbGluZWFyLiAqLworICAgIGlmICggIShsMmVf Z2V0X2ZsYWdzKGwydFtsMl90YWJsZV9vZmZzZXQobGluZWFyKV0pICYgX1BBR0VfUFJFU0VOVCkg KQorICAgIHsKKyAgICAgICAgcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgbWVtZmxhZ3Mp OworICAgICAgICBpZiAoICFwZyApCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgbDF0 ID0gX19tYXBfZG9tYWluX3BhZ2UocGcpOworICAgICAgICBjbGVhcl9wYWdlKGwxdCk7CisKKyAg ICAgICAgbDJ0W2wyX3RhYmxlX29mZnNldChsaW5lYXIpXSA9IGwyZV9mcm9tX3BhZ2UocGcsIF9f UEFHRV9IWVBFUlZJU09SKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBsMXQgPSBtYXBfbDF0 X2Zyb21fbDJlKGwydFtsMl90YWJsZV9vZmZzZXQobGluZWFyKV0pOworCisgICAgc3dpdGNoICgg YWN0aW9uICkKKyAgICB7CisgICAgY2FzZSBQRVJDUFVfTUFQOgorICAgICAgICBBU1NFUlQoKnBh Z2UpOworICAgICAgICBsMXRbbDFfdGFibGVfb2Zmc2V0KGxpbmVhcildID0gbDFlX2Zyb21fcGFn ZSgqcGFnZSwgZmxhZ3MpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAg IEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGdv dG8gb3V0OworICAgIH0KKworICAgIHJjID0gMDsgLyogU3VjY2VzcyAqLworCisgb3V0OgorICAg IGlmICggbDF0ICkKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDF0KTsKKyAgICBpZiAoIGwy dCApCisgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwydCk7CisgICAgdW5tYXBfZG9tYWluX3Bh Z2UobDN0KTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCBwZXJjcHVfbWFwX2Zy YW1lKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbGluZWFyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHVuc2lnbmVkIGludCBmbGFn cykKK3sKKyAgICByZXR1cm4gX2FsdGVyX3BlcmNwdV9tYXBwaW5ncyhjcHUsIGxpbmVhciwgUEVS Q1BVX01BUCwgJnBhZ2UsIGZsYWdzKTsKK30KKwogLyogQWxsb2NhdGUgZGF0YSBjb21tb24gYmV0 d2VlbiB0aGUgQlNQIGFuZCBBUHMuICovCiBzdGF0aWMgaW50IGNwdV9zbXBib290X2FsbG9jX2Nv bW1vbih1bnNpZ25lZCBpbnQgY3B1KQogewpAQCAtNjc2LDYgKzc2NCwxMiBAQCBzdGF0aWMgaW50 IGNwdV9zbXBib290X2FsbG9jX2NvbW1vbih1bnNpZ25lZCBpbnQgY3B1KQogICAgIHBlcl9jcHUo cGVyY3B1X21hcHBpbmdzLCBjcHUpID0gbDR0W2w0X3RhYmxlX29mZnNldChQRVJDUFVfTElORUFS X1NUQVJUKV0gPQogICAgICAgICBsNGVfZnJvbV9wYWdlKHBnLCBfX1BBR0VfSFlQRVJWSVNPUik7 CiAKKyAgICAvKiBNYXAgdGhlIElEVC4gKi8KKyAgICByYyA9IHBlcmNwdV9tYXBfZnJhbWUoY3B1 LCBQRVJDUFVfSURUX01BUFBJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnRfdG9f cGFnZShpZHRfdGFibGVzW2NwdV0pLCBQQUdFX0hZUEVSVklTT1JfUk8pOworICAgIGlmICggcmMg KQorICAgICAgICBnb3RvIG91dDsKKwogICAgIHJjID0gMDsgLyogU3VjY2VzcyAqLwogCiAgb3V0 OgpAQCAtODA1LDggKzg5OSw3IEBAIHN0YXRpYyB2b2lkIGNwdV9zbXBib290X2ZyZWUodW5zaWdu ZWQgaW50IGNwdSkKIAogICAgIGZyZWVfeGVuaGVhcF9wYWdlcyhwZXJfY3B1KGNvbXBhdF9nZHRf dGFibGUsIGNwdSksIG9yZGVyKTsKIAotICAgIG9yZGVyID0gZ2V0X29yZGVyX2Zyb21fYnl0ZXMo SURUX0VOVFJJRVMgKiBzaXplb2YoaWR0X2VudHJ5X3QpKTsKLSAgICBmcmVlX3hlbmhlYXBfcGFn ZXMoaWR0X3RhYmxlc1tjcHVdLCBvcmRlcik7CisgICAgZnJlZV94ZW5oZWFwX3BhZ2UoaWR0X3Rh Ymxlc1tjcHVdKTsKICAgICBpZHRfdGFibGVzW2NwdV0gPSBOVUxMOwogCiAgICAgaWYgKCBzdGFj a19iYXNlW2NwdV0gIT0gTlVMTCApCkBAIC04NTYsMTEgKzk0OSwxMSBAQCBzdGF0aWMgaW50IGNw dV9zbXBib290X2FsbG9jKHVuc2lnbmVkIGludCBjcHUpCiAgICAgbWVtY3B5KGdkdCwgYm9vdF9j cHVfY29tcGF0X2dkdF90YWJsZSwgTlJfUkVTRVJWRURfR0RUX1BBR0VTICogUEFHRV9TSVpFKTsK ICAgICBnZHRbUEVSX0NQVV9HRFRfRU5UUlkgLSBGSVJTVF9SRVNFUlZFRF9HRFRfRU5UUlldLmEg PSBjcHU7CiAKLSAgICBvcmRlciA9IGdldF9vcmRlcl9mcm9tX2J5dGVzKElEVF9FTlRSSUVTICog c2l6ZW9mKGlkdF9lbnRyeV90KSk7Ci0gICAgaWR0X3RhYmxlc1tjcHVdID0gYWxsb2NfeGVuaGVh cF9wYWdlcyhvcmRlciwgbWVtZmxhZ3MpOworICAgIEJVSUxEX0JVR19PTihJRFRfRU5UUklFUyAq IHNpemVvZihpZHRfZW50cnlfdCkgIT0gUEFHRV9TSVpFKTsKKyAgICBpZHRfdGFibGVzW2NwdV0g PSBhbGxvY194ZW5oZWFwX3BhZ2VzKDAsIG1lbWZsYWdzKTsKICAgICBpZiAoIGlkdF90YWJsZXNb Y3B1XSA9PSBOVUxMICkKICAgICAgICAgZ290byBvdXQ7Ci0gICAgbWVtY3B5KGlkdF90YWJsZXNb Y3B1XSwgaWR0X3RhYmxlLCBJRFRfRU5UUklFUyAqIHNpemVvZihpZHRfZW50cnlfdCkpOworICAg IG1lbWNweShpZHRfdGFibGVzW2NwdV0sIGlkdF90YWJsZSwgUEFHRV9TSVpFKTsKICAgICBkaXNh YmxlX2VhY2hfaXN0KGlkdF90YWJsZXNbY3B1XSk7CiAKICAgICBmb3IgKCBzdHViX3BhZ2UgPSAw LCBpID0gY3B1ICYgfihTVFVCU19QRVJfUEFHRSAtIDEpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwppbmRleCAzZWFiNmQzLi5lZjk0NjRi IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYvdHJh cHMuYwpAQCAtMTAyLDcgKzEwMiw4IEBAIERFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKHN0cnVj dCBkZXNjX3N0cnVjdCAqLCBnZHRfdGFibGUpOwogREVGSU5FX1BFUl9DUFVfUkVBRF9NT1NUTFko c3RydWN0IGRlc2Nfc3RydWN0ICosIGNvbXBhdF9nZHRfdGFibGUpOwogCiAvKiBNYXN0ZXIgdGFi bGUsIHVzZWQgYnkgQ1BVMC4gKi8KLWlkdF9lbnRyeV90IGlkdF90YWJsZVtJRFRfRU5UUklFU107 CitpZHRfZW50cnlfdCBpZHRfdGFibGVbSURUX0VOVFJJRVNdCitfX3NlY3Rpb24oIi5ic3MucGFn ZV9hbGlnbmVkIikgX19hbGlnbmVkKFBBR0VfU0laRSk7CiAKIC8qIFBvaW50ZXIgdG8gdGhlIElE VCBvZiBldmVyeSBDUFUuICovCiBpZHRfZW50cnlfdCAqaWR0X3RhYmxlc1tOUl9DUFVTXSBfX3Jl YWRfbW9zdGx5OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmgKaW5kZXggYmFmOTczYS4uY2RkZmM0ZSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L2NvbmZpZy5oCkBAIC0yOTMsNiArMjkzLDkgQEAgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYm9v dF9lZGlkX2luZm9bMTI4XTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIHhlbl9waHlzX3N0YXJ0Owog I2VuZGlmCiAKKy8qIE1hcHBpbmdzIGluIHRoZSBwZXJjcHUgYXJlYTogKi8KKyNkZWZpbmUgUEVS Q1BVX0lEVF9NQVBQSU5HICAgICAgIChQRVJDUFVfTElORUFSX1NUQVJUICsgS0IoNCkpCisKIC8q IEdEVC9MRFQgc2hhZG93IG1hcHBpbmcgYXJlYS4gVGhlIGZpcnN0IHBlci1kb21haW4tbWFwcGlu ZyBzdWItYXJlYS4gKi8KICNkZWZpbmUgR0RUX0xEVF9WQ1BVX1NISUZUICAgICAgIDUKICNkZWZp bmUgR0RUX0xEVF9WQ1BVX1ZBX1NISUZUICAgIChHRFRfTERUX1ZDUFVfU0hJRlQgKyBQQUdFX1NI SUZUKQotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs