From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH RESEND v5 04/24] x86: refactor psr: implement CPU init and free flow. Date: Thu, 19 Jan 2017 14:01:06 +0800 Message-ID: <1484805686-7249-5-git-send-email-yi.y.sun@linux.intel.com> References: <1484805686-7249-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 1cU5oG-0006pK-HI for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 06:02:56 +0000 In-Reply-To: <1484805686-7249-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+Ci0tLQp2NToKICAgIC0gbW9k aWZ5IGNvbW1pdCBtZXNzYWdlIGJlYWN1c2Ugb2YgY29kZSBjaGFuZ2VzLgogICAgLSBhZGQgJ3N0 cnVjdCBjcHVpZF9sZWFmX3JlZ3MnIHRvIHNhdmUgY3B1IHJlZ2lzdGVycyB2YWx1ZSB0byByZWR1 Y2UKICAgICAgcGFyYW1ldGVycyBvZiBpbml0X2ZlYXR1cmUgZnVuY3Rpb24uCiAgICAtIG1vZGlm eSBjb21tZW50cyB0byBtYWtlIHRoZW0gYWNjdXJhdGUuCiAgICAtIG1vZGlmeSB2YXJpYWJsZXMg bmFtZXMgdG8gbWFrZSB0aGVtIGJldHRlciwgZS5nLiAnZmVhdF90bXAnIHRvICdmZWF0Jy4KICAg IC0gdXNlICdsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUnIHdoZW4gZnJlZSBmZWF0dXJlcy4KICAg IC0gZG8gbm90IGRlbGV0ZSAnZmVhdF9sM19jYXQnIHRvIG1ha2UgaXQgY2FuIGJlIHJldXNlZCB3 aGVuIGNwdSBvbmxpbmUuCiAgICAtIHVzZSAnY3VycmVudF9jcHVfZGF0YScuCiAgICAtIGNsZWFy ICdYODZfRkVBVFVSRV9QUUUnIGlmIGNwdWlkX2xldmVsIGlzIG5vdCByaWdodC4KICAgIC0gUHJp bnQgc29ja2V0IGluZm8gd2hlbiAnb3B0X2NwdV9pbmZvJyBpcyB0cnVlLgogICAgLSByZW1vdmUg J2NwdV9wcmVwYXJlX3dvcmsnIGZ1bmN0aW9uIGFuZCBtb3ZlIGNvbnRlbnRzIG9mIGl0IGludG8K ICAgICAgJ3Bzcl9jcHVfcHJlcGFyZScuCi0tLQogeGVuL2FyY2gveDg2L3Bzci5jIHwgMTc2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZp bGUgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IGY3ZmYzZmMu LmU5ZGMwN2EgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94 ODYvcHNyLmMKQEAgLTM1LDYgKzM1LDkgQEAKICNkZWZpbmUgUFNSX0NBVCAgICAgICAgKDE8PDEp CiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisjZGVmaW5lIENBVF9DQk1fTEVOX01B U0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgorCiAvKgogICogUGVyIFNE TSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3k6IENhY2hlIE1hc2sgQ29uZmln dXJhdGlvbicsCiAgKiB0aGUgTVNScyByYW5nZSBmcm9tIDBDOTBIIHRocm91Z2ggMEQwRkggKGlu Y2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKQEAgLTEyNyw2ICsxMzAsMTMgQEAgc3RydWN0 IGZlYXRfbm9kZSB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogfTsKIAorc3RydWN0IGNw dWlkX2xlYWZfcmVncyB7CisgICAgdW5zaWduZWQgaW50IGVheDsKKyAgICB1bnNpZ25lZCBpbnQg ZWJ4OworICAgIHVuc2lnbmVkIGludCBlY3g7CisgICAgdW5zaWduZWQgaW50IGVkeDsKK307CisK IHN0cnVjdCBwc3JfYXNzb2MgewogICAgIHVpbnQ2NF90IHZhbDsKICAgICB1aW50NjRfdCBjb3Nf bWFzazsKQEAgLTEzNCwxMSArMTQ0LDc2IEBAIHN0cnVjdCBwc3JfYXNzb2MgewogCiBzdHJ1Y3Qg cHNyX2NtdCAqX19yZWFkX21vc3RseSBwc3JfY210OwogCitzdGF0aWMgc3RydWN0IHBzcl9zb2Nr ZXRfaW5mbyAqX19yZWFkX21vc3RseSBzb2NrZXRfaW5mbzsKKwogc3RhdGljIHVuc2lnbmVkIGlu dCBvcHRfcHNyOwogc3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRhIG9wdF9ybWlkX21heCA9 IDI1NTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBvcHRfY29zX21heCA9IE1B WF9DT1NfUkVHX0NOVDsKIHN0YXRpYyB1aW50NjRfdCBybWlkX21hc2s7CiBzdGF0aWMgREVGSU5F X1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKIAorLyoKKyAqIERlY2xhcmUg Z2xvYmFsIGZlYXR1cmUgbGlzdCBlbnRyeSBmb3IgZXZlcnkgZmVhdHVyZSB0byBmYWNpbGl0YXRl IHRoZQorICogZmVhdHVyZSBsaXN0IGNyZWF0aW9uLiBJdCB3aWxsIGJlIGFsbG9jYXRlZCBpbiBw c3JfY3B1X3ByZXBhcmUoKSBhbmQKKyAqIGluc2VydGVkIGludG8gZmVhdHVyZSBsaXN0IGluIGNw dV9pbml0X3dvcmsoKS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDNfY2F0 OworCisvKiBDb21tb24gZnVuY3Rpb25zLiAqLworc3RhdGljIHZvaWQgZnJlZV9mZWF0dXJlKHN0 cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwgKm5leHQ7CisKKyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZlYXQsIG5leHQsICZpbmZvLT5mZWF0X2xpc3QsIGxpc3Qp CisgICAgeworICAgICAgICBjbGVhcl9iaXQoZmVhdC0+ZmVhdHVyZSwgJmluZm8tPmZlYXRfbWFz ayk7CisgICAgICAgIGxpc3RfZGVsKCZmZWF0LT5saXN0KTsKKyAgICAgICAgeGZyZWUoZmVhdCk7 CisgICAgfQorfQorCisvKiBMMyBDQVQgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLworc3Rh dGljIHZvaWQgbDNfY2F0X2luaXRfZmVhdHVyZShzdHJ1Y3QgY3B1aWRfbGVhZl9yZWdzIHJlZ3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8g KmluZm8pCit7CisgICAgc3RydWN0IHBzcl9jYXRfaHdfaW5mbyBsM19jYXQ7CisgICAgdW5zaWdu ZWQgaW50IHNvY2tldDsKKworICAgIC8qIE5vIHZhbGlkIHZhbHVlIHNvIGRvIG5vdCBlbmFibGUg ZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLmVheCB8fCAhcmVncy5lZHggKQorICAgICAgICBy ZXR1cm47CisKKyAgICBsM19jYXQuY2JtX2xlbiA9IChyZWdzLmVheCAmIENBVF9DQk1fTEVOX01B U0spICsgMTsKKyAgICBsM19jYXQuY29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy5lZHgg JiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAgIC8qIGNvcz0wIGlzIHJlc2VydmVkIGFzIGRlZmF1 bHQgY2JtKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KKyAgICBmZWF0LT5jb3Nf cmVnX3ZhbFswXSA9ICgxdWxsIDw8IGwzX2NhdC5jYm1fbGVuKSAtIDE7CisKKyAgICBmZWF0LT5m ZWF0dXJlID0gUFNSX1NPQ0tFVF9MM19DQVQ7CisgICAgX19zZXRfYml0KFBTUl9TT0NLRVRfTDNf Q0FULCAmaW5mby0+ZmVhdF9tYXNrKTsKKworICAgIGZlYXQtPmluZm8ubDNfY2F0X2luZm8gPSBs M19jYXQ7CisKKyAgICBpbmZvLT5ucl9mZWF0Kys7CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJl IGludG8gbGlzdC4gKi8KKyAgICBsaXN0X2FkZF90YWlsKCZmZWF0LT5saXN0LCAmaW5mby0+ZmVh dF9saXN0KTsKKworICAgIHNvY2tldCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgp KTsKKyAgICBpZiAoIG9wdF9jcHVfaW5mbyApCisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTwor ICAgICAgICAgICAiTDMgQ0FUOiBlbmFibGVkIG9uIHNvY2tldCAldSwgY29zX21heDoldSwgY2Jt X2xlbjoldVxuIiwKKyAgICAgICAgICAgc29ja2V0LCBmZWF0LT5pbmZvLmwzX2NhdF9pbmZvLmNv c19tYXgsCisgICAgICAgICAgIGZlYXQtPmluZm8ubDNfY2F0X2luZm8uY2JtX2xlbik7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNfY2F0X29wcyA9IHsKK307CisKIHN0YXRp YyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFyICpzLCBjaGFyICp2YWx1ZSwgY2hhciAq ZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bWFzaykKIHsKQEAgLTE3OCw2ICsyNTMsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNy X3BhcmFtKGNoYXIgKnMpCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJybWlk X21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBsZV9zdHJ0b3VsKHZhbF9z dHIsIE5VTEwsIDApOwogCisgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJjb3Nf bWF4IikgKQorICAgICAgICAgICAgb3B0X2Nvc19tYXggPSBzaW1wbGVfc3RydG91bCh2YWxfc3Ry LCBOVUxMLCAwKTsKKwogICAgICAgICBzID0gc3MgKyAxOwogICAgIH0gd2hpbGUgKCBzcyApOwog fQpAQCAtMzMzLDE4ICs0MTEsMTA4IEBAIHZvaWQgcHNyX2RvbWFpbl9mcmVlKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgcHNyX2ZyZWVfcm1pZChkKTsKIH0KIAorc3RhdGljIHZvaWQgY3B1X2luaXRf d29yayh2b2lkKQoreworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm87CisgICAgdW5z aWduZWQgaW50IHNvY2tldDsKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9p ZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CisgICAgc3RydWN0IGNwdWlkX2xlYWZf cmVncyByZWdzOworCisgICAgaWYgKCAhY3B1X2hhcygmY3VycmVudF9jcHVfZGF0YSwgWDg2X0ZF QVRVUkVfUFFFKSApCisgICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlmICggY3VycmVudF9jcHVf ZGF0YS5jcHVpZF9sZXZlbCA8IFBTUl9DUFVJRF9MRVZFTF9DQVQgKQorICAgIHsKKyAgICAgICAg Y2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BRRSwgY3VycmVudF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0 eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0 KGNwdSk7CisgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgIGlmICggaW5mby0+ ZmVhdF9tYXNrICkKKyAgICAgICAgcmV0dXJuOworCisgICAgSU5JVF9MSVNUX0hFQUQoJmluZm8t PmZlYXRfbGlzdCk7CisgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJlZl9sb2NrKTsKKworICAg IGNwdWlkX2NvdW50KFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsCisgICAgICAgICAgICAgICAgJnJl Z3MuZWF4LCAmcmVncy5lYngsICZyZWdzLmVjeCwgJnJlZ3MuZWR4KTsKKyAgICBpZiAoIHJlZ3Mu ZWJ4ICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHsKKyAgICAgICAgY3B1aWRfY291bnQo UFNSX0NQVUlEX0xFVkVMX0NBVCwgMSwKKyAgICAgICAgICAgICAgICAgICAgJnJlZ3MuZWF4LCAm cmVncy5lYngsICZyZWdzLmVjeCwgJnJlZ3MuZWR4KTsKKworICAgICAgICBmZWF0ID0gZmVhdF9s M19jYXQ7CisgICAgICAgIGZlYXRfbDNfY2F0ID0gTlVMTDsKKyAgICAgICAgZmVhdC0+b3BzID0g bDNfY2F0X29wczsKKworICAgICAgICBsM19jYXRfaW5pdF9mZWF0dXJlKHJlZ3MsIGZlYXQsIGlu Zm8pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3B1X2Zpbmlfd29yayh1bnNpZ25lZCBpbnQg Y3B1KQoreworICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KGNwdSk7CisK KyAgICBpZiAoICFzb2NrZXRfY3B1bWFza1tzb2NrZXRdIHx8IGNwdW1hc2tfZW1wdHkoc29ja2V0 X2NwdW1hc2tbc29ja2V0XSkgKQorICAgIHsKKyAgICAgICAgZnJlZV9mZWF0dXJlKHNvY2tldF9p bmZvICsgc29ja2V0KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBpbml0X3Bzcih2 b2lkKQoreworICAgIGlmICggb3B0X2Nvc19tYXggPCAxICkKKyAgICB7CisgICAgICAgIHByaW50 ayhYRU5MT0dfSU5GTyAiQ0FUOiBkaXNhYmxlZCwgY29zX21heCBpcyB0b28gc21hbGxcbiIpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc29ja2V0X2luZm8gPSB4emFsbG9jX2FycmF5 KHN0cnVjdCBwc3Jfc29ja2V0X2luZm8sIG5yX3NvY2tldHMpOworCisgICAgaWYgKCAhc29ja2V0 X2luZm8gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJGYWlsIHRvIGFsbG9j IHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyB2 b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAg Zm9yICggaSA9IDA7IGkgPCBucl9zb2NrZXRzOyBpKysgKQorICAgICAgICBmcmVlX2ZlYXR1cmUo JnNvY2tldF9pbmZvW2ldKTsKKworICAgIHhmcmVlKHNvY2tldF9pbmZvKTsKKyAgICBzb2NrZXRf aW5mbyA9IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHVuc2lnbmVkIGlu dCBjcHUpCiB7CisgICAgaWYgKCAhc29ja2V0X2luZm8gKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIC8qIE1hbGxvYyBtZW1vcnkgZm9yIHRoZSBnbG9iYWwgZmVhdHVyZSBoZWFkIGhlcmUuICov CisgICAgaWYgKCBmZWF0X2wzX2NhdCA9PSBOVUxMICYmCisgICAgICAgICAoZmVhdF9sM19jYXQg PSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1F Tk9NRU07CisKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZv aWQpCiB7CisgICAgaWYgKCBzb2NrZXRfaW5mbyApCisgICAgICAgIGNwdV9pbml0X3dvcmsoKTsK KwogICAgIHBzcl9hc3NvY19pbml0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBzcl9jcHVfZmluaSh1 bnNpZ25lZCBpbnQgY3B1KQogeworICAgIGlmICggc29ja2V0X2luZm8gKQorICAgICAgICBjcHVf ZmluaV93b3JrKGNwdSk7CiAgICAgcmV0dXJuOwogfQogCkBAIC0zODYsMTAgKzU1NCwxNCBAQCBz dGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAgICBpZiAoIChvcHRfcHNy ICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5pdF9wc3JfY210KG9wdF9y bWlkX21heCk7CiAKLSAgICBwc3JfY3B1X3ByZXBhcmUoMCk7CisgICAgaWYgKCBvcHRfcHNyICYg UFNSX0NBVCApCisgICAgICAgIGluaXRfcHNyKCk7CisKKyAgICBpZiAoIHBzcl9jcHVfcHJlcGFy ZSgwKSApCisgICAgICAgIHBzcl9mcmVlKCk7CiAKICAgICBwc3JfY3B1X2luaXQoKTsKLSAgICBp ZiAoIHBzcl9jbXRfZW5hYmxlZCgpICkKKyAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpIHx8IHNv Y2tldF9pbmZvICkKICAgICAgICAgcmVnaXN0ZXJfY3B1X25vdGlmaWVyKCZjcHVfbmZiKTsKIAog ICAgIHJldHVybiAwOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK