From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 04/24] x86: refactor psr: implement CPU init and free flow. Date: Wed, 18 Jan 2017 10:02:27 +0800 Message-ID: <1484704967-5609-5-git-send-email-yi.y.sun@linux.intel.com> References: <1484704967-5609-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cTfbb-0005UV-Tc for xen-devel@lists.xenproject.org; Wed, 18 Jan 2017 02:04:08 +0000 In-Reply-To: <1484704967-5609-1-git-send-email-yi.y.sun@linux.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.xenproject.org Cc: wei.liu2@citrix.com, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGlu ZyBMMyBDQVQKaW5pdGlhbGl6YXRpb24gYW5kIGZlYXR1cmUgbGlzdCBmcmVlLgoKU2lnbmVkLW9m Zi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2 L3Bzci5jIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5j CmluZGV4IGY3ZmYzZmMuLmU5ZGMwN2EgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYwor KysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTM1LDYgKzM1LDkgQEAKICNkZWZpbmUgUFNSX0NB VCAgICAgICAgKDE8PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisjZGVmaW5l IENBVF9DQk1fTEVOX01BU0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgor CiAvKgogICogUGVyIFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3k6IENh Y2hlIE1hc2sgQ29uZmlndXJhdGlvbicsCiAgKiB0aGUgTVNScyByYW5nZSBmcm9tIDBDOTBIIHRo cm91Z2ggMEQwRkggKGluY2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKQEAgLTEyNyw2ICsx MzAsMTMgQEAgc3RydWN0IGZlYXRfbm9kZSB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owog fTsKIAorc3RydWN0IGNwdWlkX2xlYWZfcmVncyB7CisgICAgdW5zaWduZWQgaW50IGVheDsKKyAg ICB1bnNpZ25lZCBpbnQgZWJ4OworICAgIHVuc2lnbmVkIGludCBlY3g7CisgICAgdW5zaWduZWQg aW50IGVkeDsKK307CisKIHN0cnVjdCBwc3JfYXNzb2MgewogICAgIHVpbnQ2NF90IHZhbDsKICAg ICB1aW50NjRfdCBjb3NfbWFzazsKQEAgLTEzNCwxMSArMTQ0LDc2IEBAIHN0cnVjdCBwc3JfYXNz b2MgewogCiBzdHJ1Y3QgcHNyX2NtdCAqX19yZWFkX21vc3RseSBwc3JfY210OwogCitzdGF0aWMg c3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqX19yZWFkX21vc3RseSBzb2NrZXRfaW5mbzsKKwogc3Rh dGljIHVuc2lnbmVkIGludCBvcHRfcHNyOwogc3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRh IG9wdF9ybWlkX21heCA9IDI1NTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBv cHRfY29zX21heCA9IE1BWF9DT1NfUkVHX0NOVDsKIHN0YXRpYyB1aW50NjRfdCBybWlkX21hc2s7 CiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKIAor LyoKKyAqIERlY2xhcmUgZ2xvYmFsIGZlYXR1cmUgbGlzdCBlbnRyeSBmb3IgZXZlcnkgZmVhdHVy ZSB0byBmYWNpbGl0YXRlIHRoZQorICogZmVhdHVyZSBsaXN0IGNyZWF0aW9uLiBJdCB3aWxsIGJl IGFsbG9jYXRlZCBpbiBwc3JfY3B1X3ByZXBhcmUoKSBhbmQKKyAqIGluc2VydGVkIGludG8gZmVh dHVyZSBsaXN0IGluIGNwdV9pbml0X3dvcmsoKS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25v ZGUgKmZlYXRfbDNfY2F0OworCisvKiBDb21tb24gZnVuY3Rpb25zLiAqLworc3RhdGljIHZvaWQg ZnJlZV9mZWF0dXJlKHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0 IGZlYXRfbm9kZSAqZmVhdCwgKm5leHQ7CisKKyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0 dXJuOworCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZlYXQsIG5leHQsICZpbmZvLT5m ZWF0X2xpc3QsIGxpc3QpCisgICAgeworICAgICAgICBjbGVhcl9iaXQoZmVhdC0+ZmVhdHVyZSwg JmluZm8tPmZlYXRfbWFzayk7CisgICAgICAgIGxpc3RfZGVsKCZmZWF0LT5saXN0KTsKKyAgICAg ICAgeGZyZWUoZmVhdCk7CisgICAgfQorfQorCisvKiBMMyBDQVQgZnVuY3Rpb25zIGltcGxlbWVu dGF0aW9uLiAqLworc3RhdGljIHZvaWQgbDNfY2F0X2luaXRfZmVhdHVyZShzdHJ1Y3QgY3B1aWRf bGVhZl9yZWdzIHJlZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBm ZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBw c3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0IHBzcl9jYXRfaHdfaW5mbyBsM19j YXQ7CisgICAgdW5zaWduZWQgaW50IHNvY2tldDsKKworICAgIC8qIE5vIHZhbGlkIHZhbHVlIHNv IGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLmVheCB8fCAhcmVncy5l ZHggKQorICAgICAgICByZXR1cm47CisKKyAgICBsM19jYXQuY2JtX2xlbiA9IChyZWdzLmVheCAm IENBVF9DQk1fTEVOX01BU0spICsgMTsKKyAgICBsM19jYXQuY29zX21heCA9IG1pbihvcHRfY29z X21heCwgcmVncy5lZHggJiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAgIC8qIGNvcz0wIGlzIHJl c2VydmVkIGFzIGRlZmF1bHQgY2JtKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8K KyAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9ICgxdWxsIDw8IGwzX2NhdC5jYm1fbGVuKSAtIDE7 CisKKyAgICBmZWF0LT5mZWF0dXJlID0gUFNSX1NPQ0tFVF9MM19DQVQ7CisgICAgX19zZXRfYml0 KFBTUl9TT0NLRVRfTDNfQ0FULCAmaW5mby0+ZmVhdF9tYXNrKTsKKworICAgIGZlYXQtPmluZm8u bDNfY2F0X2luZm8gPSBsM19jYXQ7CisKKyAgICBpbmZvLT5ucl9mZWF0Kys7CisKKyAgICAvKiBB ZGQgdGhpcyBmZWF0dXJlIGludG8gbGlzdC4gKi8KKyAgICBsaXN0X2FkZF90YWlsKCZmZWF0LT5s aXN0LCAmaW5mby0+ZmVhdF9saXN0KTsKKworICAgIHNvY2tldCA9IGNwdV90b19zb2NrZXQoc21w X3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICBpZiAoIG9wdF9jcHVfaW5mbyApCisgICAgICAgIHByaW50 ayhYRU5MT0dfSU5GTworICAgICAgICAgICAiTDMgQ0FUOiBlbmFibGVkIG9uIHNvY2tldCAldSwg Y29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKKyAgICAgICAgICAgc29ja2V0LCBmZWF0LT5pbmZv LmwzX2NhdF9pbmZvLmNvc19tYXgsCisgICAgICAgICAgIGZlYXQtPmluZm8ubDNfY2F0X2luZm8u Y2JtX2xlbik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNfY2F0X29wcyA9 IHsKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFyICpzLCBjaGFy ICp2YWx1ZSwgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbWFzaykKIHsKQEAgLTE3OCw2ICsyNTMsOSBAQCBzdGF0aWMgdm9pZCBf X2luaXQgcGFyc2VfcHNyX3BhcmFtKGNoYXIgKnMpCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAh c3RyY21wKHMsICJybWlkX21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBs ZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOwogCisgICAgICAgIGlmICggdmFsX3N0ciAmJiAh c3RyY21wKHMsICJjb3NfbWF4IikgKQorICAgICAgICAgICAgb3B0X2Nvc19tYXggPSBzaW1wbGVf c3RydG91bCh2YWxfc3RyLCBOVUxMLCAwKTsKKwogICAgICAgICBzID0gc3MgKyAxOwogICAgIH0g d2hpbGUgKCBzcyApOwogfQpAQCAtMzMzLDE4ICs0MTEsMTA4IEBAIHZvaWQgcHNyX2RvbWFpbl9m cmVlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcHNyX2ZyZWVfcm1pZChkKTsKIH0KIAorc3RhdGlj IHZvaWQgY3B1X2luaXRfd29yayh2b2lkKQoreworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8g KmluZm87CisgICAgdW5zaWduZWQgaW50IHNvY2tldDsKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0g c21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CisgICAgc3Ry dWN0IGNwdWlkX2xlYWZfcmVncyByZWdzOworCisgICAgaWYgKCAhY3B1X2hhcygmY3VycmVudF9j cHVfZGF0YSwgWDg2X0ZFQVRVUkVfUFFFKSApCisgICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlm ICggY3VycmVudF9jcHVfZGF0YS5jcHVpZF9sZXZlbCA8IFBTUl9DUFVJRF9MRVZFTF9DQVQgKQor ICAgIHsKKyAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BRRSwgY3VycmVudF9jcHVfZGF0 YS54ODZfY2FwYWJpbGl0eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrZXQg PSBjcHVfdG9fc29ja2V0KGNwdSk7CisgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0Owor ICAgIGlmICggaW5mby0+ZmVhdF9tYXNrICkKKyAgICAgICAgcmV0dXJuOworCisgICAgSU5JVF9M SVNUX0hFQUQoJmluZm8tPmZlYXRfbGlzdCk7CisgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJl Zl9sb2NrKTsKKworICAgIGNwdWlkX2NvdW50KFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsCisgICAg ICAgICAgICAgICAgJnJlZ3MuZWF4LCAmcmVncy5lYngsICZyZWdzLmVjeCwgJnJlZ3MuZWR4KTsK KyAgICBpZiAoIHJlZ3MuZWJ4ICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHsKKyAgICAg ICAgY3B1aWRfY291bnQoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMSwKKyAgICAgICAgICAgICAgICAg ICAgJnJlZ3MuZWF4LCAmcmVncy5lYngsICZyZWdzLmVjeCwgJnJlZ3MuZWR4KTsKKworICAgICAg ICBmZWF0ID0gZmVhdF9sM19jYXQ7CisgICAgICAgIGZlYXRfbDNfY2F0ID0gTlVMTDsKKyAgICAg ICAgZmVhdC0+b3BzID0gbDNfY2F0X29wczsKKworICAgICAgICBsM19jYXRfaW5pdF9mZWF0dXJl KHJlZ3MsIGZlYXQsIGluZm8pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3B1X2Zpbmlfd29y ayh1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9f c29ja2V0KGNwdSk7CisKKyAgICBpZiAoICFzb2NrZXRfY3B1bWFza1tzb2NrZXRdIHx8IGNwdW1h c2tfZW1wdHkoc29ja2V0X2NwdW1hc2tbc29ja2V0XSkgKQorICAgIHsKKyAgICAgICAgZnJlZV9m ZWF0dXJlKHNvY2tldF9pbmZvICsgc29ja2V0KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9f aW5pdCBpbml0X3Bzcih2b2lkKQoreworICAgIGlmICggb3B0X2Nvc19tYXggPCAxICkKKyAgICB7 CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQ0FUOiBkaXNhYmxlZCwgY29zX21heCBpcyB0 b28gc21hbGxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc29ja2V0X2luZm8g PSB4emFsbG9jX2FycmF5KHN0cnVjdCBwc3Jfc29ja2V0X2luZm8sIG5yX3NvY2tldHMpOworCisg ICAgaWYgKCAhc29ja2V0X2luZm8gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZP ICJGYWlsIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9 Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAgIHVuc2lnbmVk IGludCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9zb2NrZXRzOyBpKysgKQorICAgICAg ICBmcmVlX2ZlYXR1cmUoJnNvY2tldF9pbmZvW2ldKTsKKworICAgIHhmcmVlKHNvY2tldF9pbmZv KTsKKyAgICBzb2NrZXRfaW5mbyA9IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgcHNyX2NwdV9wcmVw YXJlKHVuc2lnbmVkIGludCBjcHUpCiB7CisgICAgaWYgKCAhc29ja2V0X2luZm8gKQorICAgICAg ICByZXR1cm4gMDsKKworICAgIC8qIE1hbGxvYyBtZW1vcnkgZm9yIHRoZSBnbG9iYWwgZmVhdHVy ZSBoZWFkIGhlcmUuICovCisgICAgaWYgKCBmZWF0X2wzX2NhdCA9PSBOVUxMICYmCisgICAgICAg ICAoZmVhdF9sM19jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBOVUxMICkKKyAg ICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQg cHNyX2NwdV9pbml0KHZvaWQpCiB7CisgICAgaWYgKCBzb2NrZXRfaW5mbyApCisgICAgICAgIGNw dV9pbml0X3dvcmsoKTsKKwogICAgIHBzcl9hc3NvY19pbml0KCk7CiB9CiAKIHN0YXRpYyB2b2lk IHBzcl9jcHVfZmluaSh1bnNpZ25lZCBpbnQgY3B1KQogeworICAgIGlmICggc29ja2V0X2luZm8g KQorICAgICAgICBjcHVfZmluaV93b3JrKGNwdSk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0zODYs MTAgKzU1NCwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAg ICBpZiAoIChvcHRfcHNyICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5p dF9wc3JfY210KG9wdF9ybWlkX21heCk7CiAKLSAgICBwc3JfY3B1X3ByZXBhcmUoMCk7CisgICAg aWYgKCBvcHRfcHNyICYgUFNSX0NBVCApCisgICAgICAgIGluaXRfcHNyKCk7CisKKyAgICBpZiAo IHBzcl9jcHVfcHJlcGFyZSgwKSApCisgICAgICAgIHBzcl9mcmVlKCk7CiAKICAgICBwc3JfY3B1 X2luaXQoKTsKLSAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpICkKKyAgICBpZiAoIHBzcl9jbXRf ZW5hYmxlZCgpIHx8IHNvY2tldF9pbmZvICkKICAgICAgICAgcmVnaXN0ZXJfY3B1X25vdGlmaWVy KCZjcHVfbmZiKTsKIAogICAgIHJldHVybiAwOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK