From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Eduardo Habkost" <ehabkost@redhat.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: [Qemu-devel] [PULL for-2.0-rc0 15/58] target-i386: Make kvm_default_features an array
Date: Thu, 13 Mar 2014 15:54:18 +0100 [thread overview]
Message-ID: <1394722501-32326-16-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1394722501-32326-1-git-send-email-afaerber@suse.de>
From: Eduardo Habkost <ehabkost@redhat.com>
We will later make the KVM-specific code affect other feature words,
too.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
target-i386/cpu.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index b32baf0..17fe45e 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -358,17 +358,22 @@ typedef struct model_features_t {
FeatureWord feat_word;
} model_features_t;
-static uint32_t kvm_default_features = (1 << KVM_FEATURE_CLOCKSOURCE) |
+/* KVM-specific features that are automatically added to all CPU models
+ * when KVM is enabled.
+ */
+static uint32_t kvm_default_features[FEATURE_WORDS] = {
+ [FEAT_KVM] = (1 << KVM_FEATURE_CLOCKSOURCE) |
(1 << KVM_FEATURE_NOP_IO_DELAY) |
(1 << KVM_FEATURE_CLOCKSOURCE2) |
(1 << KVM_FEATURE_ASYNC_PF) |
(1 << KVM_FEATURE_STEAL_TIME) |
(1 << KVM_FEATURE_PV_EOI) |
- (1 << KVM_FEATURE_CLOCKSOURCE_STABLE_BIT);
+ (1 << KVM_FEATURE_CLOCKSOURCE_STABLE_BIT),
+};
void disable_kvm_pv_eoi(void)
{
- kvm_default_features &= ~(1UL << KVM_FEATURE_PV_EOI);
+ kvm_default_features[FEAT_KVM] &= ~(1UL << KVM_FEATURE_PV_EOI);
}
void host_cpuid(uint32_t function, uint32_t count,
@@ -1853,8 +1858,12 @@ static void x86_cpu_load_def(X86CPU *cpu, const char *name, Error **errp)
/* Special cases not set in the X86CPUDefinition structs: */
if (kvm_enabled()) {
- env->features[FEAT_KVM] |= kvm_default_features;
+ FeatureWord w;
+ for (w = 0; w < FEATURE_WORDS; w++) {
+ env->features[w] |= kvm_default_features[w];
+ }
}
+
env->features[FEAT_1_ECX] |= CPUID_EXT_HYPERVISOR;
/* sysenter isn't supported in compatibility mode on AMD,
--
1.8.4.5
next prev parent reply other threads:[~2014-03-13 14:55 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-13 14:54 [Qemu-devel] [PULL for-2.0-rc0 00/58] QOM CPUState patch queue 2014-03-13 Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 01/58] cpu: Don't clear cpu->exit_request on reset Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 02/58] target-alpha: Clean up ENV_GET_CPU() usage Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 03/58] target-arm: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 04/58] target-i386: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 05/58] target-ppc: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 06/58] target-s390x: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 07/58] target-sparc: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 08/58] target-unicore32: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 09/58] target-xtensa: " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 10/58] cpu: Turn cpu_has_work() into a CPUClass hook Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 11/58] target-i386: Rename cpu_x86_register() to x86_cpu_load_def() Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 12/58] target-i386: Call x86_cpu_load_def() earlier Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 13/58] target-i386: Rename x86_def_t to X86CPUDefinition Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 14/58] target-i386: Don't declare variables in the middle of blocks Andreas Färber
2014-03-13 14:54 ` Andreas Färber [this message]
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 16/58] target-i386: Introduce x86_cpu_compat_disable_kvm_features() Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 17/58] target-i386: Enable x2apic by default on KVM Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 18/58] target-i386: Prepare CPUClass::class_by_name for X86CPU Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 19/58] target-i386: X86CPU model subclasses Andreas Färber
2014-03-13 18:19 ` Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 20/58] cpu: Introduce CPUClass::parse_features() hook Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 21/58] target-sparc: Use error_report() for CPU error reporting Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 22/58] target-sparc: Implement CPUClass::parse_features() for SPARCCPU Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 23/58] target-sparc: Defer SPARCCPU feature inference to QOM realize Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 24/58] cpu: Implement CPUClass::parse_features() for the rest of CPUs Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 25/58] cpu: Factor out cpu_generic_init() Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 26/58] target-m68k: Remove custom qemu_assert() function Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 27/58] cpu: Turn cpu_handle_mmu_fault() into a CPUClass hook Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 28/58] cpu: Move mem_io_{pc, vaddr} fields from CPU_COMMON to CPUState Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 29/58] cpu: Move can_do_io field " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 30/58] cpu: Move icount_extra " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 31/58] cpu: Move icount_decr " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 32/58] cpu: Move tb_jmp_cache " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 33/58] cpu: Move jmp_env " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 34/58] cpu: Move exception_index " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 35/58] cpu: Move opaque " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 36/58] cpu: Move watchpoint fields " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 37/58] cpu: Move breakpoints field " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 38/58] exec: Change tlb_fill() argument " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 39/58] cpu-exec: Change cpu_loop_exit() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 40/58] translate-all: Change cpu_restore_state() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 41/58] translate-all: Change cpu_restore_state_from_tb() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 42/58] translate-all: Change tb_check_watchpoint() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 43/58] translate-all: Change cpu_io_recompile() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 44/58] translate-all: Change tb_gen_code() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 45/58] translate-all: Change tb_flush_jmp_cache() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 46/58] target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 47/58] exec: Change cpu_watchpoint_{insert, remove{, _by_ref, _all}} argument Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 48/58] exec: Change cpu_breakpoint_{insert, " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 49/58] cpu-exec: Change cpu_resume_from_signal() argument to CPUState Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 50/58] cputlb: Change tlb_unprotect_code_phys() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 51/58] exec: Change memory_region_section_get_iotlb() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 52/58] exec: Change cpu_abort() " Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 53/58] target-cris: Replace DisasContext::env field with CRISCPU Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 54/58] target-microblaze: Replace DisasContext::env field with MicroBlazeCPU Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 55/58] cputlb: Change tlb_flush_page() argument to CPUState Andreas Färber
2014-03-13 14:54 ` [Qemu-devel] [PULL for-2.0-rc0 56/58] cputlb: Change tlb_flush() " Andreas Färber
2014-03-17 16:13 ` [Qemu-devel] [PATCH]: exec: fix cpu rework fallout (was cputlb: Change tlb_flush() argument to CPUState) Christian Borntraeger
2014-03-17 19:37 ` Andreas Färber
2014-03-13 14:55 ` [Qemu-devel] [PULL for-2.0-rc0 57/58] cputlb: Change tlb_set_page() argument to CPUState Andreas Färber
2014-03-13 14:55 ` [Qemu-devel] [PULL for-2.0-rc0 58/58] user-exec: Change exception_action() " Andreas Färber
2014-03-13 15:29 ` [Qemu-devel] [PULL for-2.0-rc0 00/58] QOM CPUState patch queue 2014-03-13 Christian Borntraeger
2014-03-13 17:10 ` Peter Maydell
2014-03-13 18:44 ` Andreas Färber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1394722501-32326-16-git-send-email-afaerber@suse.de \
--to=afaerber@suse.de \
--cc=ehabkost@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).