From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liu, Jinsong" Subject: [PATCH 2/2] Expose tsc deadline timer cpuid to guest Date: Wed, 28 Dec 2011 21:55:00 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_" Cc: Avi Kivity , Marcelo Tosatti , Alexey Zaytsev , kvm , "qemu-devel@nongnu.org" To: Jan Kiszka Return-path: Received: from mga14.intel.com ([143.182.124.37]:28763 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754586Ab1L1VzI (ORCPT ); Wed, 28 Dec 2011 16:55:08 -0500 Content-Language: en-US Sender: kvm-owner@vger.kernel.org List-ID: --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable >>From 3a78adf8006ec6189bfe2f55f7ae213e75bf3815 Mon Sep 17 00:00:00 2001 From: Liu Jinsong Date: Thu, 29 Dec 2011 05:28:12 +0800 Subject: [PATCH 2/2] Expose tsc deadline timer cpuid to guest Depend on several factors: 1. Considering live migration, user enable/disable tsc deadline timer; 2. If guest use kvm apic and kvm emulate tsc deadline timer, expose it; 3. If in the future qemu support tsc deadline timer emulation, and guest use qemu apic, add cpuid exposing case then. Signed-off-by: Liu, Jinsong --- target-i386/cpu.h | 2 ++ target-i386/cpuid.c | 7 ++++++- target-i386/kvm.c | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletions(-) diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 177d8aa..f2d0ad5 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -399,6 +399,7 @@ #define CPUID_EXT_X2APIC (1 << 21) #define CPUID_EXT_MOVBE (1 << 22) #define CPUID_EXT_POPCNT (1 << 23) +#define CPUID_EXT_TSC_DEADLINE_TIMER (1 << 24) #define CPUID_EXT_XSAVE (1 << 26) #define CPUID_EXT_OSXSAVE (1 << 27) #define CPUID_EXT_HYPERVISOR (1 << 31) @@ -693,6 +694,7 @@ typedef struct CPUX86State { =20 uint64_t tsc; uint64_t tsc_deadline; + bool tsc_deadline_timer_enabled; =20 uint64_t mcg_status; uint64_t msr_ia32_misc_enable; diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 0b3af90..fe749e0 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -48,7 +48,7 @@ static const char *ext_feature_name[] =3D { "fma", "cx16", "xtpr", "pdcm", NULL, NULL, "dca", "sse4.1|sse4_1", "sse4.2|sse4_2", "x2apic", "movbe", "popcnt", - NULL, "aes", "xsave", "osxsave", + "tsc_deadline", "aes", "xsave", "osxsave", "avx", NULL, NULL, "hypervisor", }; static const char *ext2_feature_name[] =3D { @@ -225,6 +225,7 @@ typedef struct x86_def_t { int model; int stepping; int tsc_khz; + bool tsc_deadline_timer_enabled; uint32_t features, ext_features, ext2_features, ext3_features; uint32_t kvm_features, svm_features; uint32_t xlevel; @@ -742,6 +743,9 @@ static int cpu_x86_find_by_name(x86_def_t *x86_cpu_def,= const char *cpu_model) x86_cpu_def->ext3_features &=3D ~minus_ext3_features; x86_cpu_def->kvm_features &=3D ~minus_kvm_features; x86_cpu_def->svm_features &=3D ~minus_svm_features; + /* Defaultly user don't against tsc_deadline_timer */ + x86_cpu_def->tsc_deadline_timer_enabled =3D + !(minus_ext_features & CPUID_EXT_TSC_DEADLINE_TIMER); if (check_cpuid) { if (check_features_against_host(x86_cpu_def) && enforce_cpuid) goto error; @@ -885,6 +889,7 @@ int cpu_x86_register (CPUX86State *env, const char *cpu= _model) env->cpuid_ext4_features =3D def->ext4_features; env->cpuid_xlevel2 =3D def->xlevel2; env->tsc_khz =3D def->tsc_khz; + env->tsc_deadline_timer_enabled =3D def->tsc_deadline_timer_enabled; if (!kvm_enabled()) { env->cpuid_features &=3D TCG_FEATURES; env->cpuid_ext_features &=3D TCG_EXT_FEATURES; diff --git a/target-i386/kvm.c b/target-i386/kvm.c index d50de90..79baf0b 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -370,6 +370,19 @@ int kvm_arch_init_vcpu(CPUState *env) i =3D env->cpuid_ext_features & CPUID_EXT_HYPERVISOR; env->cpuid_ext_features &=3D kvm_arch_get_supported_cpuid(s, 1, 0, R_E= CX); env->cpuid_ext_features |=3D i; + /* + * 1. Considering live migration, user enable/disable tsc deadline tim= er; + * 2. If guest use kvm apic and kvm emulate tsc deadline timer, expose= it; + * 3. If in the future qemu support tsc deadline timer emulation, + * and guest use qemu apic, add cpuid exposing case then. + */ + env->cpuid_ext_features &=3D ~CPUID_EXT_TSC_DEADLINE_TIMER; + if (env->tsc_deadline_timer_enabled) { + if (kvm_irqchip_in_kernel() && + kvm_check_extension(s, KVM_CAP_TSC_DEADLINE_TIMER)) { + env->cpuid_ext_features |=3D CPUID_EXT_TSC_DEADLINE_TIMER; + } + } =20 env->cpuid_ext2_features &=3D kvm_arch_get_supported_cpuid(s, 0x800000= 01, 0, R_EDX); --=20 1.6.5.6 --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_ Content-Type: application/octet-stream; name="0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch" Content-Description: 0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch Content-Disposition: attachment; filename="0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch"; size=4220; creation-date="Wed, 28 Dec 2011 21:50:18 GMT"; modification-date="Wed, 28 Dec 2011 21:35:28 GMT" Content-Transfer-Encoding: base64 RnJvbSAzYTc4YWRmODAwNmVjNjE4OWJmZTJmNTVmN2FlMjEzZTc1YmYzODE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSmluc29uZyA8amluc29uZy5saXVAaW50ZWwuY29tPgpE YXRlOiBUaHUsIDI5IERlYyAyMDExIDA1OjI4OjEyICswODAwClN1YmplY3Q6IFtQQVRDSCAyLzJd IEV4cG9zZSB0c2MgZGVhZGxpbmUgdGltZXIgY3B1aWQgdG8gZ3Vlc3QKCkRlcGVuZCBvbiBzZXZl cmFsIGZhY3RvcnM6CjEuIENvbnNpZGVyaW5nIGxpdmUgbWlncmF0aW9uLCB1c2VyIGVuYWJsZS9k aXNhYmxlIHRzYyBkZWFkbGluZSB0aW1lcjsKMi4gSWYgZ3Vlc3QgdXNlIGt2bSBhcGljIGFuZCBr dm0gZW11bGF0ZSB0c2MgZGVhZGxpbmUgdGltZXIsIGV4cG9zZSBpdDsKMy4gSWYgaW4gdGhlIGZ1 dHVyZSBxZW11IHN1cHBvcnQgdHNjIGRlYWRsaW5lIHRpbWVyIGVtdWxhdGlvbiwKICAgYW5kIGd1 ZXN0IHVzZSBxZW11IGFwaWMsIGFkZCBjcHVpZCBleHBvc2luZyBjYXNlIHRoZW4uCgpTaWduZWQt b2ZmLWJ5OiBMaXUsIEppbnNvbmcgPGppbnNvbmcubGl1QGludGVsLmNvbT4KLS0tCiB0YXJnZXQt aTM4Ni9jcHUuaCAgIHwgICAgMiArKwogdGFyZ2V0LWkzODYvY3B1aWQuYyB8ICAgIDcgKysrKysr LQogdGFyZ2V0LWkzODYva3ZtLmMgICB8ICAgMTMgKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rhcmdl dC1pMzg2L2NwdS5oIGIvdGFyZ2V0LWkzODYvY3B1LmgKaW5kZXggMTc3ZDhhYS4uZjJkMGFkNSAx MDA2NDQKLS0tIGEvdGFyZ2V0LWkzODYvY3B1LmgKKysrIGIvdGFyZ2V0LWkzODYvY3B1LmgKQEAg LTM5OSw2ICszOTksNyBAQAogI2RlZmluZSBDUFVJRF9FWFRfWDJBUElDICAgKDEgPDwgMjEpCiAj ZGVmaW5lIENQVUlEX0VYVF9NT1ZCRSAgICAoMSA8PCAyMikKICNkZWZpbmUgQ1BVSURfRVhUX1BP UENOVCAgICgxIDw8IDIzKQorI2RlZmluZSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSICgx IDw8IDI0KQogI2RlZmluZSBDUFVJRF9FWFRfWFNBVkUgICAgKDEgPDwgMjYpCiAjZGVmaW5lIENQ VUlEX0VYVF9PU1hTQVZFICAoMSA8PCAyNykKICNkZWZpbmUgQ1BVSURfRVhUX0hZUEVSVklTT1Ig ICgxIDw8IDMxKQpAQCAtNjkzLDYgKzY5NCw3IEBAIHR5cGVkZWYgc3RydWN0IENQVVg4NlN0YXRl IHsKIAogICAgIHVpbnQ2NF90IHRzYzsKICAgICB1aW50NjRfdCB0c2NfZGVhZGxpbmU7CisgICAg Ym9vbCB0c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKIAogICAgIHVpbnQ2NF90IG1jZ19zdGF0 dXM7CiAgICAgdWludDY0X3QgbXNyX2lhMzJfbWlzY19lbmFibGU7CmRpZmYgLS1naXQgYS90YXJn ZXQtaTM4Ni9jcHVpZC5jIGIvdGFyZ2V0LWkzODYvY3B1aWQuYwppbmRleCAwYjNhZjkwLi5mZTc0 OWUwIDEwMDY0NAotLS0gYS90YXJnZXQtaTM4Ni9jcHVpZC5jCisrKyBiL3RhcmdldC1pMzg2L2Nw dWlkLmMKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmV4dF9mZWF0dXJlX25h bWVbXSA9IHsKICAgICAiZm1hIiwgImN4MTYiLCAieHRwciIsICJwZGNtIiwKICAgICBOVUxMLCBO VUxMLCAiZGNhIiwgInNzZTQuMXxzc2U0XzEiLAogICAgICJzc2U0LjJ8c3NlNF8yIiwgIngyYXBp YyIsICJtb3ZiZSIsICJwb3BjbnQiLAotICAgIE5VTEwsICJhZXMiLCAieHNhdmUiLCAib3N4c2F2 ZSIsCisgICAgInRzY19kZWFkbGluZSIsICJhZXMiLCAieHNhdmUiLCAib3N4c2F2ZSIsCiAgICAg ImF2eCIsIE5VTEwsIE5VTEwsICJoeXBlcnZpc29yIiwKIH07CiBzdGF0aWMgY29uc3QgY2hhciAq ZXh0Ml9mZWF0dXJlX25hbWVbXSA9IHsKQEAgLTIyNSw2ICsyMjUsNyBAQCB0eXBlZGVmIHN0cnVj dCB4ODZfZGVmX3QgewogICAgIGludCBtb2RlbDsKICAgICBpbnQgc3RlcHBpbmc7CiAgICAgaW50 IHRzY19raHo7CisgICAgYm9vbCB0c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKICAgICB1aW50 MzJfdCBmZWF0dXJlcywgZXh0X2ZlYXR1cmVzLCBleHQyX2ZlYXR1cmVzLCBleHQzX2ZlYXR1cmVz OwogICAgIHVpbnQzMl90IGt2bV9mZWF0dXJlcywgc3ZtX2ZlYXR1cmVzOwogICAgIHVpbnQzMl90 IHhsZXZlbDsKQEAgLTc0Miw2ICs3NDMsOSBAQCBzdGF0aWMgaW50IGNwdV94ODZfZmluZF9ieV9u YW1lKHg4Nl9kZWZfdCAqeDg2X2NwdV9kZWYsIGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKICAgICB4 ODZfY3B1X2RlZi0+ZXh0M19mZWF0dXJlcyAmPSB+bWludXNfZXh0M19mZWF0dXJlczsKICAgICB4 ODZfY3B1X2RlZi0+a3ZtX2ZlYXR1cmVzICY9IH5taW51c19rdm1fZmVhdHVyZXM7CiAgICAgeDg2 X2NwdV9kZWYtPnN2bV9mZWF0dXJlcyAmPSB+bWludXNfc3ZtX2ZlYXR1cmVzOworICAgIC8qIERl ZmF1bHRseSB1c2VyIGRvbid0IGFnYWluc3QgdHNjX2RlYWRsaW5lX3RpbWVyICovCisgICAgeDg2 X2NwdV9kZWYtPnRzY19kZWFkbGluZV90aW1lcl9lbmFibGVkID0KKyAgICAgICAgIShtaW51c19l eHRfZmVhdHVyZXMgJiBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSKTsKICAgICBpZiAoY2hl Y2tfY3B1aWQpIHsKICAgICAgICAgaWYgKGNoZWNrX2ZlYXR1cmVzX2FnYWluc3RfaG9zdCh4ODZf Y3B1X2RlZikgJiYgZW5mb3JjZV9jcHVpZCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04 ODUsNiArODg5LDcgQEAgaW50IGNwdV94ODZfcmVnaXN0ZXIgKENQVVg4NlN0YXRlICplbnYsIGNv bnN0IGNoYXIgKmNwdV9tb2RlbCkKICAgICBlbnYtPmNwdWlkX2V4dDRfZmVhdHVyZXMgPSBkZWYt PmV4dDRfZmVhdHVyZXM7CiAgICAgZW52LT5jcHVpZF94bGV2ZWwyID0gZGVmLT54bGV2ZWwyOwog ICAgIGVudi0+dHNjX2toeiA9IGRlZi0+dHNjX2toejsKKyAgICBlbnYtPnRzY19kZWFkbGluZV90 aW1lcl9lbmFibGVkID0gZGVmLT50c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKICAgICBpZiAo IWt2bV9lbmFibGVkKCkpIHsKICAgICAgICAgZW52LT5jcHVpZF9mZWF0dXJlcyAmPSBUQ0dfRkVB VFVSRVM7CiAgICAgICAgIGVudi0+Y3B1aWRfZXh0X2ZlYXR1cmVzICY9IFRDR19FWFRfRkVBVFVS RVM7CmRpZmYgLS1naXQgYS90YXJnZXQtaTM4Ni9rdm0uYyBiL3RhcmdldC1pMzg2L2t2bS5jCmlu ZGV4IGQ1MGRlOTAuLjc5YmFmMGIgMTAwNjQ0Ci0tLSBhL3RhcmdldC1pMzg2L2t2bS5jCisrKyBi L3RhcmdldC1pMzg2L2t2bS5jCkBAIC0zNzAsNiArMzcwLDE5IEBAIGludCBrdm1fYXJjaF9pbml0 X3ZjcHUoQ1BVU3RhdGUgKmVudikKICAgICBpID0gZW52LT5jcHVpZF9leHRfZmVhdHVyZXMgJiBD UFVJRF9FWFRfSFlQRVJWSVNPUjsKICAgICBlbnYtPmNwdWlkX2V4dF9mZWF0dXJlcyAmPSBrdm1f YXJjaF9nZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDEsIDAsIFJfRUNYKTsKICAgICBlbnYtPmNwdWlk X2V4dF9mZWF0dXJlcyB8PSBpOworICAgIC8qCisgICAgICogMS4gQ29uc2lkZXJpbmcgbGl2ZSBt aWdyYXRpb24sIHVzZXIgZW5hYmxlL2Rpc2FibGUgdHNjIGRlYWRsaW5lIHRpbWVyOworICAgICAq IDIuIElmIGd1ZXN0IHVzZSBrdm0gYXBpYyBhbmQga3ZtIGVtdWxhdGUgdHNjIGRlYWRsaW5lIHRp bWVyLCBleHBvc2UgaXQ7CisgICAgICogMy4gSWYgaW4gdGhlIGZ1dHVyZSBxZW11IHN1cHBvcnQg dHNjIGRlYWRsaW5lIHRpbWVyIGVtdWxhdGlvbiwKKyAgICAgKiAgICBhbmQgZ3Vlc3QgdXNlIHFl bXUgYXBpYywgYWRkIGNwdWlkIGV4cG9zaW5nIGNhc2UgdGhlbi4KKyAgICAgKi8KKyAgICBlbnYt PmNwdWlkX2V4dF9mZWF0dXJlcyAmPSB+Q1BVSURfRVhUX1RTQ19ERUFETElORV9USU1FUjsKKyAg ICBpZiAoZW52LT50c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZCkgeworICAgICAgICBpZiAoa3Zt X2lycWNoaXBfaW5fa2VybmVsKCkgJiYKKyAgICAgICAgICAgIGt2bV9jaGVja19leHRlbnNpb24o cywgS1ZNX0NBUF9UU0NfREVBRExJTkVfVElNRVIpKSB7CisgICAgICAgICAgICBlbnYtPmNwdWlk X2V4dF9mZWF0dXJlcyB8PSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSOworICAgICAgICB9 CisgICAgfQogCiAgICAgZW52LT5jcHVpZF9leHQyX2ZlYXR1cmVzICY9IGt2bV9hcmNoX2dldF9z dXBwb3J0ZWRfY3B1aWQocywgMHg4MDAwMDAwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBSX0VEWCk7Ci0tIAoxLjYuNS42 Cgo= --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rg1So-0002CU-LK for qemu-devel@nongnu.org; Wed, 28 Dec 2011 16:55:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rg1Sn-0006qK-GB for qemu-devel@nongnu.org; Wed, 28 Dec 2011 16:55:10 -0500 Received: from mga03.intel.com ([143.182.124.21]:16456) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rg1Sm-0006pT-TP for qemu-devel@nongnu.org; Wed, 28 Dec 2011 16:55:09 -0500 From: "Liu, Jinsong" Date: Wed, 28 Dec 2011 21:55:00 +0000 Message-ID: Content-Language: en-US Content-Type: multipart/mixed; boundary="_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_" MIME-Version: 1.0 Subject: [Qemu-devel] [PATCH 2/2] Expose tsc deadline timer cpuid to guest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: "qemu-devel@nongnu.org" , Marcelo Tosatti , Avi Kivity , kvm , Alexey Zaytsev --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable >>From 3a78adf8006ec6189bfe2f55f7ae213e75bf3815 Mon Sep 17 00:00:00 2001 From: Liu Jinsong Date: Thu, 29 Dec 2011 05:28:12 +0800 Subject: [PATCH 2/2] Expose tsc deadline timer cpuid to guest Depend on several factors: 1. Considering live migration, user enable/disable tsc deadline timer; 2. If guest use kvm apic and kvm emulate tsc deadline timer, expose it; 3. If in the future qemu support tsc deadline timer emulation, and guest use qemu apic, add cpuid exposing case then. Signed-off-by: Liu, Jinsong --- target-i386/cpu.h | 2 ++ target-i386/cpuid.c | 7 ++++++- target-i386/kvm.c | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletions(-) diff --git a/target-i386/cpu.h b/target-i386/cpu.h index 177d8aa..f2d0ad5 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -399,6 +399,7 @@ #define CPUID_EXT_X2APIC (1 << 21) #define CPUID_EXT_MOVBE (1 << 22) #define CPUID_EXT_POPCNT (1 << 23) +#define CPUID_EXT_TSC_DEADLINE_TIMER (1 << 24) #define CPUID_EXT_XSAVE (1 << 26) #define CPUID_EXT_OSXSAVE (1 << 27) #define CPUID_EXT_HYPERVISOR (1 << 31) @@ -693,6 +694,7 @@ typedef struct CPUX86State { =20 uint64_t tsc; uint64_t tsc_deadline; + bool tsc_deadline_timer_enabled; =20 uint64_t mcg_status; uint64_t msr_ia32_misc_enable; diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 0b3af90..fe749e0 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -48,7 +48,7 @@ static const char *ext_feature_name[] =3D { "fma", "cx16", "xtpr", "pdcm", NULL, NULL, "dca", "sse4.1|sse4_1", "sse4.2|sse4_2", "x2apic", "movbe", "popcnt", - NULL, "aes", "xsave", "osxsave", + "tsc_deadline", "aes", "xsave", "osxsave", "avx", NULL, NULL, "hypervisor", }; static const char *ext2_feature_name[] =3D { @@ -225,6 +225,7 @@ typedef struct x86_def_t { int model; int stepping; int tsc_khz; + bool tsc_deadline_timer_enabled; uint32_t features, ext_features, ext2_features, ext3_features; uint32_t kvm_features, svm_features; uint32_t xlevel; @@ -742,6 +743,9 @@ static int cpu_x86_find_by_name(x86_def_t *x86_cpu_def,= const char *cpu_model) x86_cpu_def->ext3_features &=3D ~minus_ext3_features; x86_cpu_def->kvm_features &=3D ~minus_kvm_features; x86_cpu_def->svm_features &=3D ~minus_svm_features; + /* Defaultly user don't against tsc_deadline_timer */ + x86_cpu_def->tsc_deadline_timer_enabled =3D + !(minus_ext_features & CPUID_EXT_TSC_DEADLINE_TIMER); if (check_cpuid) { if (check_features_against_host(x86_cpu_def) && enforce_cpuid) goto error; @@ -885,6 +889,7 @@ int cpu_x86_register (CPUX86State *env, const char *cpu= _model) env->cpuid_ext4_features =3D def->ext4_features; env->cpuid_xlevel2 =3D def->xlevel2; env->tsc_khz =3D def->tsc_khz; + env->tsc_deadline_timer_enabled =3D def->tsc_deadline_timer_enabled; if (!kvm_enabled()) { env->cpuid_features &=3D TCG_FEATURES; env->cpuid_ext_features &=3D TCG_EXT_FEATURES; diff --git a/target-i386/kvm.c b/target-i386/kvm.c index d50de90..79baf0b 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -370,6 +370,19 @@ int kvm_arch_init_vcpu(CPUState *env) i =3D env->cpuid_ext_features & CPUID_EXT_HYPERVISOR; env->cpuid_ext_features &=3D kvm_arch_get_supported_cpuid(s, 1, 0, R_E= CX); env->cpuid_ext_features |=3D i; + /* + * 1. Considering live migration, user enable/disable tsc deadline tim= er; + * 2. If guest use kvm apic and kvm emulate tsc deadline timer, expose= it; + * 3. If in the future qemu support tsc deadline timer emulation, + * and guest use qemu apic, add cpuid exposing case then. + */ + env->cpuid_ext_features &=3D ~CPUID_EXT_TSC_DEADLINE_TIMER; + if (env->tsc_deadline_timer_enabled) { + if (kvm_irqchip_in_kernel() && + kvm_check_extension(s, KVM_CAP_TSC_DEADLINE_TIMER)) { + env->cpuid_ext_features |=3D CPUID_EXT_TSC_DEADLINE_TIMER; + } + } =20 env->cpuid_ext2_features &=3D kvm_arch_get_supported_cpuid(s, 0x800000= 01, 0, R_EDX); --=20 1.6.5.6 --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_ Content-Type: application/octet-stream; name="0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch" Content-Description: 0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch Content-Disposition: attachment; filename="0002-Expose-tsc-deadline-timer-cpuid-to-guest.patch"; size=4220; creation-date="Wed, 28 Dec 2011 21:50:18 GMT"; modification-date="Wed, 28 Dec 2011 21:35:28 GMT" Content-Transfer-Encoding: base64 RnJvbSAzYTc4YWRmODAwNmVjNjE4OWJmZTJmNTVmN2FlMjEzZTc1YmYzODE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSmluc29uZyA8amluc29uZy5saXVAaW50ZWwuY29tPgpE YXRlOiBUaHUsIDI5IERlYyAyMDExIDA1OjI4OjEyICswODAwClN1YmplY3Q6IFtQQVRDSCAyLzJd IEV4cG9zZSB0c2MgZGVhZGxpbmUgdGltZXIgY3B1aWQgdG8gZ3Vlc3QKCkRlcGVuZCBvbiBzZXZl cmFsIGZhY3RvcnM6CjEuIENvbnNpZGVyaW5nIGxpdmUgbWlncmF0aW9uLCB1c2VyIGVuYWJsZS9k aXNhYmxlIHRzYyBkZWFkbGluZSB0aW1lcjsKMi4gSWYgZ3Vlc3QgdXNlIGt2bSBhcGljIGFuZCBr dm0gZW11bGF0ZSB0c2MgZGVhZGxpbmUgdGltZXIsIGV4cG9zZSBpdDsKMy4gSWYgaW4gdGhlIGZ1 dHVyZSBxZW11IHN1cHBvcnQgdHNjIGRlYWRsaW5lIHRpbWVyIGVtdWxhdGlvbiwKICAgYW5kIGd1 ZXN0IHVzZSBxZW11IGFwaWMsIGFkZCBjcHVpZCBleHBvc2luZyBjYXNlIHRoZW4uCgpTaWduZWQt b2ZmLWJ5OiBMaXUsIEppbnNvbmcgPGppbnNvbmcubGl1QGludGVsLmNvbT4KLS0tCiB0YXJnZXQt aTM4Ni9jcHUuaCAgIHwgICAgMiArKwogdGFyZ2V0LWkzODYvY3B1aWQuYyB8ICAgIDcgKysrKysr LQogdGFyZ2V0LWkzODYva3ZtLmMgICB8ICAgMTMgKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rhcmdl dC1pMzg2L2NwdS5oIGIvdGFyZ2V0LWkzODYvY3B1LmgKaW5kZXggMTc3ZDhhYS4uZjJkMGFkNSAx MDA2NDQKLS0tIGEvdGFyZ2V0LWkzODYvY3B1LmgKKysrIGIvdGFyZ2V0LWkzODYvY3B1LmgKQEAg LTM5OSw2ICszOTksNyBAQAogI2RlZmluZSBDUFVJRF9FWFRfWDJBUElDICAgKDEgPDwgMjEpCiAj ZGVmaW5lIENQVUlEX0VYVF9NT1ZCRSAgICAoMSA8PCAyMikKICNkZWZpbmUgQ1BVSURfRVhUX1BP UENOVCAgICgxIDw8IDIzKQorI2RlZmluZSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSICgx IDw8IDI0KQogI2RlZmluZSBDUFVJRF9FWFRfWFNBVkUgICAgKDEgPDwgMjYpCiAjZGVmaW5lIENQ VUlEX0VYVF9PU1hTQVZFICAoMSA8PCAyNykKICNkZWZpbmUgQ1BVSURfRVhUX0hZUEVSVklTT1Ig ICgxIDw8IDMxKQpAQCAtNjkzLDYgKzY5NCw3IEBAIHR5cGVkZWYgc3RydWN0IENQVVg4NlN0YXRl IHsKIAogICAgIHVpbnQ2NF90IHRzYzsKICAgICB1aW50NjRfdCB0c2NfZGVhZGxpbmU7CisgICAg Ym9vbCB0c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKIAogICAgIHVpbnQ2NF90IG1jZ19zdGF0 dXM7CiAgICAgdWludDY0X3QgbXNyX2lhMzJfbWlzY19lbmFibGU7CmRpZmYgLS1naXQgYS90YXJn ZXQtaTM4Ni9jcHVpZC5jIGIvdGFyZ2V0LWkzODYvY3B1aWQuYwppbmRleCAwYjNhZjkwLi5mZTc0 OWUwIDEwMDY0NAotLS0gYS90YXJnZXQtaTM4Ni9jcHVpZC5jCisrKyBiL3RhcmdldC1pMzg2L2Nw dWlkLmMKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmV4dF9mZWF0dXJlX25h bWVbXSA9IHsKICAgICAiZm1hIiwgImN4MTYiLCAieHRwciIsICJwZGNtIiwKICAgICBOVUxMLCBO VUxMLCAiZGNhIiwgInNzZTQuMXxzc2U0XzEiLAogICAgICJzc2U0LjJ8c3NlNF8yIiwgIngyYXBp YyIsICJtb3ZiZSIsICJwb3BjbnQiLAotICAgIE5VTEwsICJhZXMiLCAieHNhdmUiLCAib3N4c2F2 ZSIsCisgICAgInRzY19kZWFkbGluZSIsICJhZXMiLCAieHNhdmUiLCAib3N4c2F2ZSIsCiAgICAg ImF2eCIsIE5VTEwsIE5VTEwsICJoeXBlcnZpc29yIiwKIH07CiBzdGF0aWMgY29uc3QgY2hhciAq ZXh0Ml9mZWF0dXJlX25hbWVbXSA9IHsKQEAgLTIyNSw2ICsyMjUsNyBAQCB0eXBlZGVmIHN0cnVj dCB4ODZfZGVmX3QgewogICAgIGludCBtb2RlbDsKICAgICBpbnQgc3RlcHBpbmc7CiAgICAgaW50 IHRzY19raHo7CisgICAgYm9vbCB0c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKICAgICB1aW50 MzJfdCBmZWF0dXJlcywgZXh0X2ZlYXR1cmVzLCBleHQyX2ZlYXR1cmVzLCBleHQzX2ZlYXR1cmVz OwogICAgIHVpbnQzMl90IGt2bV9mZWF0dXJlcywgc3ZtX2ZlYXR1cmVzOwogICAgIHVpbnQzMl90 IHhsZXZlbDsKQEAgLTc0Miw2ICs3NDMsOSBAQCBzdGF0aWMgaW50IGNwdV94ODZfZmluZF9ieV9u YW1lKHg4Nl9kZWZfdCAqeDg2X2NwdV9kZWYsIGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKICAgICB4 ODZfY3B1X2RlZi0+ZXh0M19mZWF0dXJlcyAmPSB+bWludXNfZXh0M19mZWF0dXJlczsKICAgICB4 ODZfY3B1X2RlZi0+a3ZtX2ZlYXR1cmVzICY9IH5taW51c19rdm1fZmVhdHVyZXM7CiAgICAgeDg2 X2NwdV9kZWYtPnN2bV9mZWF0dXJlcyAmPSB+bWludXNfc3ZtX2ZlYXR1cmVzOworICAgIC8qIERl ZmF1bHRseSB1c2VyIGRvbid0IGFnYWluc3QgdHNjX2RlYWRsaW5lX3RpbWVyICovCisgICAgeDg2 X2NwdV9kZWYtPnRzY19kZWFkbGluZV90aW1lcl9lbmFibGVkID0KKyAgICAgICAgIShtaW51c19l eHRfZmVhdHVyZXMgJiBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSKTsKICAgICBpZiAoY2hl Y2tfY3B1aWQpIHsKICAgICAgICAgaWYgKGNoZWNrX2ZlYXR1cmVzX2FnYWluc3RfaG9zdCh4ODZf Y3B1X2RlZikgJiYgZW5mb3JjZV9jcHVpZCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04 ODUsNiArODg5LDcgQEAgaW50IGNwdV94ODZfcmVnaXN0ZXIgKENQVVg4NlN0YXRlICplbnYsIGNv bnN0IGNoYXIgKmNwdV9tb2RlbCkKICAgICBlbnYtPmNwdWlkX2V4dDRfZmVhdHVyZXMgPSBkZWYt PmV4dDRfZmVhdHVyZXM7CiAgICAgZW52LT5jcHVpZF94bGV2ZWwyID0gZGVmLT54bGV2ZWwyOwog ICAgIGVudi0+dHNjX2toeiA9IGRlZi0+dHNjX2toejsKKyAgICBlbnYtPnRzY19kZWFkbGluZV90 aW1lcl9lbmFibGVkID0gZGVmLT50c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZDsKICAgICBpZiAo IWt2bV9lbmFibGVkKCkpIHsKICAgICAgICAgZW52LT5jcHVpZF9mZWF0dXJlcyAmPSBUQ0dfRkVB VFVSRVM7CiAgICAgICAgIGVudi0+Y3B1aWRfZXh0X2ZlYXR1cmVzICY9IFRDR19FWFRfRkVBVFVS RVM7CmRpZmYgLS1naXQgYS90YXJnZXQtaTM4Ni9rdm0uYyBiL3RhcmdldC1pMzg2L2t2bS5jCmlu ZGV4IGQ1MGRlOTAuLjc5YmFmMGIgMTAwNjQ0Ci0tLSBhL3RhcmdldC1pMzg2L2t2bS5jCisrKyBi L3RhcmdldC1pMzg2L2t2bS5jCkBAIC0zNzAsNiArMzcwLDE5IEBAIGludCBrdm1fYXJjaF9pbml0 X3ZjcHUoQ1BVU3RhdGUgKmVudikKICAgICBpID0gZW52LT5jcHVpZF9leHRfZmVhdHVyZXMgJiBD UFVJRF9FWFRfSFlQRVJWSVNPUjsKICAgICBlbnYtPmNwdWlkX2V4dF9mZWF0dXJlcyAmPSBrdm1f YXJjaF9nZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDEsIDAsIFJfRUNYKTsKICAgICBlbnYtPmNwdWlk X2V4dF9mZWF0dXJlcyB8PSBpOworICAgIC8qCisgICAgICogMS4gQ29uc2lkZXJpbmcgbGl2ZSBt aWdyYXRpb24sIHVzZXIgZW5hYmxlL2Rpc2FibGUgdHNjIGRlYWRsaW5lIHRpbWVyOworICAgICAq IDIuIElmIGd1ZXN0IHVzZSBrdm0gYXBpYyBhbmQga3ZtIGVtdWxhdGUgdHNjIGRlYWRsaW5lIHRp bWVyLCBleHBvc2UgaXQ7CisgICAgICogMy4gSWYgaW4gdGhlIGZ1dHVyZSBxZW11IHN1cHBvcnQg dHNjIGRlYWRsaW5lIHRpbWVyIGVtdWxhdGlvbiwKKyAgICAgKiAgICBhbmQgZ3Vlc3QgdXNlIHFl bXUgYXBpYywgYWRkIGNwdWlkIGV4cG9zaW5nIGNhc2UgdGhlbi4KKyAgICAgKi8KKyAgICBlbnYt PmNwdWlkX2V4dF9mZWF0dXJlcyAmPSB+Q1BVSURfRVhUX1RTQ19ERUFETElORV9USU1FUjsKKyAg ICBpZiAoZW52LT50c2NfZGVhZGxpbmVfdGltZXJfZW5hYmxlZCkgeworICAgICAgICBpZiAoa3Zt X2lycWNoaXBfaW5fa2VybmVsKCkgJiYKKyAgICAgICAgICAgIGt2bV9jaGVja19leHRlbnNpb24o cywgS1ZNX0NBUF9UU0NfREVBRExJTkVfVElNRVIpKSB7CisgICAgICAgICAgICBlbnYtPmNwdWlk X2V4dF9mZWF0dXJlcyB8PSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVSOworICAgICAgICB9 CisgICAgfQogCiAgICAgZW52LT5jcHVpZF9leHQyX2ZlYXR1cmVzICY9IGt2bV9hcmNoX2dldF9z dXBwb3J0ZWRfY3B1aWQocywgMHg4MDAwMDAwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBSX0VEWCk7Ci0tIAoxLjYuNS42 Cgo= --_002_DE8DF0795D48FD4CA783C40EC8292335F1B6SHSMSX101ccrcorpint_--