From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH] x86/debug: Make debugger_trap_entry() safe during early boot Date: Thu, 4 Aug 2016 12:57:13 +0100 Message-ID: <1470311833-31148-1-git-send-email-andrew.cooper3@citrix.com> References: <1470244085-1389-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: <1470244085-1389-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org ZGVidWdnZXJfdHJhcF9lbnRyeSgpIGlzIHJlYWNoYWJsZSBkdXJpbmcgZWFybHkgYm9vdCB3aGVy ZSBpdHMgdW5jb25kaXRpb25hbAp1c2Ugb2YgY3VycmVudCBpcyB1bnNhZmUuICBBZGQgYSB3YXJu aW5nIHRvIHRoZSBmdW5jdGlvbiB0byB0aGlzIGVmZmVjdC4KClBlcmZvcm0gdGhlIHZlY3RvciBj aGVjayBmaXJzdCwgYXMgdGhpcyBhbGxvd3MgdGhlIGNvbXBpbGVyIHRvIGVsaWRlIHRoZSBvdGhl cgpjb250ZW50IGZyb20gbW9zdCBvZiBpdHMgY2FsbHNpdGVzLiAgQ2hlY2sgZ3Vlc3RfbW9kZShy ZWdzKSBiZWZvcmUgdXNpbmcKY3VycmVudCwgd2hpY2ggbWFrZXMgdGhlIHBhdGggc2FmZSBvbiBl YXJseSBib290LgoKV2hpbGUgZWRpdGluZyB0aGlzIGFyZWEsIGRyb3AgREVCVUdHRVJfdHJhcF97 ZW50cnksZmF0YWx9LCBhcyBoaWRpbmcgYSByZXR1cm4Kc3RhdGVtZW50IGluIGEgZnVuY3Rpb24t bGlrZSBtYWNybyBpcyB2ZXJ5IGFudGlzb2NpYWwgcHJvZ3JhbW1pbmc7IHNob3cgdGhlCnJlYWwg Y29udHJvbCBmbG93IGF0IGVhY2ggb2YgdGhlIGNhbGxzaXRlcy4gIEZpbmFsbHksIHN3aXRjaApk ZWJ1Z2dlcl90cmFwX3tlbnRyeSxmYXRhbH0gdG8gaGF2aW5nIGJvb2xlYW4gcmV0dXJuIHR5cGVz LCB0byBtYXRjaCB0aGVpcgpzZW1hbnRpY3MuCgpObyBiZWhhdmlvdXJhbCBjaGFuZ2UuCgpTaWdu ZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0K Q0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvdHJh cHMuYyAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvZGVidWdnZXIuaCB8IDMwICsrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAyNyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhcHMuYyBiL3hlbi9hcmNoL3g4 Ni90cmFwcy5jCmluZGV4IDc2N2QwYjAuLmIwNDI5NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jCkBAIC03MzYsNyArNzM2LDkgQEAg dm9pZCBkb19yZXNlcnZlZF90cmFwKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAg IHVuc2lnbmVkIGludCB0cmFwbnIgPSByZWdzLT5lbnRyeV92ZWN0b3I7CiAKLSAgICBERUJVR0dF Ul90cmFwX2ZhdGFsKHRyYXBuciwgcmVncyk7CisgICAgaWYgKCBkZWJ1Z2dlcl90cmFwX2ZhdGFs KHRyYXBuciwgcmVncykgKQorICAgICAgICByZXR1cm47CisKICAgICBzaG93X2V4ZWN1dGlvbl9z dGF0ZShyZWdzKTsKICAgICBwYW5pYygiRkFUQUwgUkVTRVJWRUQgVFJBUCAlI3g6ICVzIiwgdHJh cG5yLCB0cmFwc3RyKHRyYXBucikpOwogfQpAQCAtNzUwLDcgKzc1Miw4IEBAIHN0YXRpYyB2b2lk IGRvX3RyYXAoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCB1c2VfZXJyb3JfY29kZSkK ICAgICBpZiAoIHJlZ3MtPmVycm9yX2NvZGUgJiBYODZfWEVDX0VYVCApCiAgICAgICAgIGdvdG8g aGFyZHdhcmVfdHJhcDsKIAotICAgIERFQlVHR0VSX3RyYXBfZW50cnkodHJhcG5yLCByZWdzKTsK KyAgICBpZiAoIGRlYnVnZ2VyX3RyYXBfZW50cnkodHJhcG5yLCByZWdzKSApCisgICAgICAgIHJl dHVybjsKIAogICAgIGlmICggZ3Vlc3RfbW9kZShyZWdzKSApCiAgICAgewpAQCAtNzc3LDcgKzc4 MCw4IEBAIHN0YXRpYyB2b2lkIGRvX3RyYXAoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGlu dCB1c2VfZXJyb3JfY29kZSkKICAgICB9CiAKICBoYXJkd2FyZV90cmFwOgotICAgIERFQlVHR0VS X3RyYXBfZmF0YWwodHJhcG5yLCByZWdzKTsKKyAgICBpZiAoIGRlYnVnZ2VyX3RyYXBfZmF0YWwo dHJhcG5yLCByZWdzKSApCisgICAgICAgIHJldHVybjsKIAogICAgIHNob3dfZXhlY3V0aW9uX3N0 YXRlKHJlZ3MpOwogICAgIHBhbmljKCJGQVRBTCBUUkFQOiB2ZWN0b3IgPSAlZCAoJXMpXG4iCkBA IC0xMzA3LDcgKzEzMTEsOCBAQCB2b2lkIGRvX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiAgICAgaW50IGlkID0gLTEsIGxpbmVubzsKICAgICBjb25zdCBzdHJ1Y3Qgdmly dHVhbF9yZWdpb24gKnJlZ2lvbjsKIAotICAgIERFQlVHR0VSX3RyYXBfZW50cnkoVFJBUF9pbnZh bGlkX29wLCByZWdzKTsKKyAgICBpZiAoIGRlYnVnZ2VyX3RyYXBfZW50cnkoVFJBUF9pbnZhbGlk X29wLCByZWdzKSApCisgICAgICAgIHJldHVybjsKIAogICAgIGlmICggbGlrZWx5KGd1ZXN0X21v ZGUocmVncykpICkKICAgICB7CkBAIC0xMzc3LDcgKzEzODIsMTAgQEAgdm9pZCBkb19pbnZhbGlk X29wKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogCiAgICAgY2FzZSBCVUdGUkFNRV9idWc6 CiAgICAgICAgIHByaW50aygiWGVuIEJVRyBhdCAlcyVzOiVkXG4iLCBwcmVmaXgsIGZpbGVuYW1l LCBsaW5lbm8pOwotICAgICAgICBERUJVR0dFUl90cmFwX2ZhdGFsKFRSQVBfaW52YWxpZF9vcCwg cmVncyk7CisKKyAgICAgICAgaWYgKCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKFRSQVBfaW52YWxpZF9v cCwgcmVncykgKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHNob3dfZXhlY3V0aW9u X3N0YXRlKHJlZ3MpOwogICAgICAgICBwYW5pYygiWGVuIEJVRyBhdCAlcyVzOiVkIiwgcHJlZml4 LCBmaWxlbmFtZSwgbGluZW5vKTsKIApAQCAtMTM4OSw3ICsxMzk3LDEwIEBAIHZvaWQgZG9faW52 YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogICAgICAgICBwcmludGsoIkFz c2VydGlvbiAnJXMnIGZhaWxlZCBhdCAlcyVzOiVkXG4iLAogICAgICAgICAgICAgICAgcHJlZGlj YXRlLCBwcmVmaXgsIGZpbGVuYW1lLCBsaW5lbm8pOwotICAgICAgICBERUJVR0dFUl90cmFwX2Zh dGFsKFRSQVBfaW52YWxpZF9vcCwgcmVncyk7CisKKyAgICAgICAgaWYgKCBkZWJ1Z2dlcl90cmFw X2ZhdGFsKFRSQVBfaW52YWxpZF9vcCwgcmVncykgKQorICAgICAgICAgICAgcmV0dXJuOworCiAg ICAgICAgIHNob3dfZXhlY3V0aW9uX3N0YXRlKHJlZ3MpOwogICAgICAgICBwYW5pYygiQXNzZXJ0 aW9uICclcycgZmFpbGVkIGF0ICVzJXM6JWQiLAogICAgICAgICAgICAgICBwcmVkaWNhdGUsIHBy ZWZpeCwgZmlsZW5hbWUsIGxpbmVubyk7CkBAIC0xNDAyLDE0ICsxNDEzLDE4IEBAIHZvaWQgZG9f aW52YWxpZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgcmVncy0+ZWlw ID0gZml4dXA7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgREVCVUdHRVJfdHJhcF9mYXRh bChUUkFQX2ludmFsaWRfb3AsIHJlZ3MpOworCisgICAgaWYgKCBkZWJ1Z2dlcl90cmFwX2ZhdGFs KFRSQVBfaW52YWxpZF9vcCwgcmVncykgKQorICAgICAgICByZXR1cm47CisKICAgICBzaG93X2V4 ZWN1dGlvbl9zdGF0ZShyZWdzKTsKICAgICBwYW5pYygiRkFUQUwgVFJBUDogdmVjdG9yID0gJWQg KGludmFsaWQgb3Bjb2RlKSIsIFRSQVBfaW52YWxpZF9vcCk7CiB9CiAKIHZvaWQgZG9faW50Myhz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKLSAgICBERUJVR0dFUl90cmFwX2VudHJ5KFRS QVBfaW50MywgcmVncyk7CisgICAgaWYgKCBkZWJ1Z2dlcl90cmFwX2VudHJ5KFRSQVBfaW50Mywg cmVncykgKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAoICFndWVzdF9tb2RlKHJlZ3MpICkK ICAgICB7CkBAIC0xNzQ0LDcgKzE3NTksOCBAQCB2b2lkIGRvX3BhZ2VfZmF1bHQoc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgLyogZml4dXBfcGFnZV9mYXVsdCgpIG1pZ2h0IGNoYW5n ZSByZWdzLT5lcnJvcl9jb2RlLCBzbyBjYWNoZSBpdCBoZXJlLiAqLwogICAgIGVycm9yX2NvZGUg PSByZWdzLT5lcnJvcl9jb2RlOwogCi0gICAgREVCVUdHRVJfdHJhcF9lbnRyeShUUkFQX3BhZ2Vf ZmF1bHQsIHJlZ3MpOworICAgIGlmICggZGVidWdnZXJfdHJhcF9lbnRyeShUUkFQX3BhZ2VfZmF1 bHQsIHJlZ3MpICkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgcGVyZmNfaW5jcihwYWdlX2ZhdWx0 cyk7CiAKQEAgLTE3NzQsNyArMTc5MCw4IEBAIHZvaWQgZG9fcGFnZV9mYXVsdChzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg ICAgIERFQlVHR0VSX3RyYXBfZmF0YWwoVFJBUF9wYWdlX2ZhdWx0LCByZWdzKTsKKyAgICAgICAg aWYgKCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKFRSQVBfcGFnZV9mYXVsdCwgcmVncykgKQorICAgICAg ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHNob3dfZXhlY3V0aW9uX3N0YXRlKHJlZ3MpOwogICAg ICAgICBzaG93X3BhZ2Vfd2FsayhhZGRyKTsKQEAgLTM0NzEsNyArMzQ4OCw4IEBAIHZvaWQgZG9f Z2VuZXJhbF9wcm90ZWN0aW9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIHN0cnVj dCB2Y3B1ICp2ID0gY3VycmVudDsKICAgICB1bnNpZ25lZCBsb25nIGZpeHVwOwogCi0gICAgREVC VUdHRVJfdHJhcF9lbnRyeShUUkFQX2dwX2ZhdWx0LCByZWdzKTsKKyAgICBpZiAoIGRlYnVnZ2Vy X3RyYXBfZW50cnkoVFJBUF9ncF9mYXVsdCwgcmVncykgKQorICAgICAgICByZXR1cm47CiAKICAg ICBpZiAoIHJlZ3MtPmVycm9yX2NvZGUgJiBYODZfWEVDX0VYVCApCiAgICAgICAgIGdvdG8gaGFy ZHdhcmVfZ3A7CkBAIC0zNTQzLDcgKzM1NjEsOCBAQCB2b2lkIGRvX2dlbmVyYWxfcHJvdGVjdGlv bihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICB9CiAKICBoYXJkd2FyZV9ncDoKLSAg ICBERUJVR0dFUl90cmFwX2ZhdGFsKFRSQVBfZ3BfZmF1bHQsIHJlZ3MpOworICAgIGlmICggZGVi dWdnZXJfdHJhcF9mYXRhbChUUkFQX2dwX2ZhdWx0LCByZWdzKSApCisgICAgICAgIHJldHVybjsK IAogICAgIHNob3dfZXhlY3V0aW9uX3N0YXRlKHJlZ3MpOwogICAgIHBhbmljKCJHRU5FUkFMIFBS T1RFQ1RJT04gRkFVTFRcbltlcnJvcl9jb2RlPSUwNHhdIiwgcmVncy0+ZXJyb3JfY29kZSk7CkBA IC0zNzc4LDcgKzM3OTcsOCBAQCB2b2lkIGRvX2RlYnVnKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQogewogICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKIAotICAgIERFQlVHR0VSX3Ry YXBfZW50cnkoVFJBUF9kZWJ1ZywgcmVncyk7CisgICAgaWYgKCBkZWJ1Z2dlcl90cmFwX2VudHJ5 KFRSQVBfZGVidWcsIHJlZ3MpICkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCAhZ3Vlc3Rf bW9kZShyZWdzKSApCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kZWJ1 Z2dlci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kZWJ1Z2dlci5oCmluZGV4IDI3MWNiYWEuLjgy ZTNkYzkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZGVidWdnZXIuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2RlYnVnZ2VyLmgKQEAgLTMzLDE3ICszMywxMSBAQAogI2luY2x1 ZGUgPGFzbS9yZWdzLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogCi0vKiBUaGUgbWFp biB0cmFwIGhhbmRsZXJzIHVzZSB0aGVzZSBoZWxwZXIgbWFjcm9zIHdoaWNoIGluY2x1ZGUgZWFy bHkgYmFpbC4gKi8KLSNkZWZpbmUgREVCVUdHRVJfdHJhcF9lbnRyeShfdiwgX3IpIFwKLSAgICBp ZiAoIGRlYnVnZ2VyX3RyYXBfZW50cnkoX3YsIF9yKSApIHJldHVybjsKLSNkZWZpbmUgREVCVUdH RVJfdHJhcF9mYXRhbChfdiwgX3IpIFwKLSAgICBpZiAoIGRlYnVnZ2VyX3RyYXBfZmF0YWwoX3Ys IF9yKSApIHJldHVybjsKLQogI2lmZGVmIENPTkZJR19DUkFTSF9ERUJVRwogCiAjaW5jbHVkZSA8 eGVuL2dkYnN0dWIuaD4KIAotc3RhdGljIGlubGluZSBpbnQgZGVidWdnZXJfdHJhcF9mYXRhbCgK K3N0YXRpYyBpbmxpbmUgYm9vbCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKAogICAgIHVuc2lnbmVkIGlu dCB2ZWN0b3IsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIGludCByYyA9IF9f dHJhcF90b19nZGIocmVncywgdmVjdG9yKTsKQEAgLTU1LDMxICs0OSwzOSBAQCBzdGF0aWMgaW5s aW5lIGludCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKAogCiAjZWxzZQogCi1zdGF0aWMgaW5saW5lIGlu dCBkZWJ1Z2dlcl90cmFwX2ZhdGFsKAorc3RhdGljIGlubGluZSBib29sIGRlYnVnZ2VyX3RyYXBf ZmF0YWwoCiAgICAgdW5zaWduZWQgaW50IHZlY3Rvciwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAjZGVmaW5lIGRl YnVnZ2VyX3RyYXBfaW1tZWRpYXRlKCkgKCh2b2lkKTApCiAKICNlbmRpZgogCi1zdGF0aWMgaW5s aW5lIGludCBkZWJ1Z2dlcl90cmFwX2VudHJ5KAorc3RhdGljIGlubGluZSBib29sIGRlYnVnZ2Vy X3RyYXBfZW50cnkoCiAgICAgdW5zaWduZWQgaW50IHZlY3Rvciwgc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiB7CisgICAgLyoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZv cmUgYW55IGNoZWNrcyBhcmUgbWFkZS4gIEFtb25nc3Qgb3RoZXIKKyAgICAgKiB0aGluZ3MsIGJl IGF3YXJlIHRoYXQgZHVyaW5nIGVhcmx5IGJvb3QsIGN1cnJlbnQgaXMgbm90IGEgc2FmZSBwb2lu dGVyCisgICAgICogdG8gZm9sbG93LgorICAgICAqLwogICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3Vy cmVudDsKIAotICAgIGlmICggZ3Vlc3Rfa2VybmVsX21vZGUodiwgcmVncykgJiYgdi0+ZG9tYWlu LT5kZWJ1Z2dlcl9hdHRhY2hlZCAmJgotICAgICAgICAgKCh2ZWN0b3IgPT0gVFJBUF9pbnQzKSB8 fCAodmVjdG9yID09IFRSQVBfZGVidWcpKSApCisgICAgaWYgKCB2ZWN0b3IgIT0gVFJBUF9pbnQz ICYmIHZlY3RvciAhPSBUUkFQX2RlYnVnICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg aWYgKCBndWVzdF9tb2RlKHJlZ3MpICYmIGd1ZXN0X2tlcm5lbF9tb2RlKHYsIHJlZ3MpICYmCisg ICAgICAgICB2LT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVkICApCiAgICAgewogICAgICAgICBp ZiAoIHZlY3RvciAhPSBUUkFQX2RlYnVnICkgLyogZG9tYWluIHBhdXNlIGlzIGdvb2QgZW5vdWdo ICovCiAgICAgICAgICAgICBjdXJyZW50LT5hcmNoLmdkYnN4X3ZjcHVfZXZlbnQgPSB2ZWN0b3I7 CiAgICAgICAgIGRvbWFpbl9wYXVzZV9mb3JfZGVidWdnZXIoKTsKLSAgICAgICAgcmV0dXJuIDE7 CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVy biBmYWxzZTsKIH0KIAogdW5zaWduZWQgaW50IGRiZ19yd19tZW0odm9pZCAqIF9fdXNlciBhZGRy LCB2b2lkICogX191c2VyIGJ1ZiwKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==