Statistics
| Branch: | Revision:

root / target-i386 @ 38c8894f

# Date Author Comment
c1399112 07/29/2013 04:29 pm Eduardo Habkost

target-i386: Pass X86CPU object to cpu_x86_find_by_name()

This will help us change the initialization code to not require carrying
some intermediate values in a x86_def_t struct (and eventually kill the
x86_def_t struct entirely).

Signed-off-by: Eduardo Habkost <>...

9337e3b6 07/29/2013 04:29 pm Eduardo Habkost

target-i386: Disable PMU CPUID leaf by default

Bug description: QEMU currently gets all bits from GET_SUPPORTED_CPUID
for CPUID leaf 0xA and passes them directly to the guest. This makes
the guest ABI depend on host kernel and host CPU capabilities, and
breaks live migration if we migrate between hosts with different...

14a10fc3 07/29/2013 04:29 pm Andreas Färber

cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState"

Commit c643bed99 moved qemu_init_vcpu() calls to common CPUState code.
This causes x86 cpu-add to fail with "KVM: setting VAPIC address failed".

The reason for the failure is that CPUClass::kvm_fd is not yet...

986a2998 07/27/2013 01:04 am Andreas Färber

gdbstub: Replace GET_REG*() macros with gdb_get_reg*() functions

This avoids polluting the global namespace with a non-prefixed macro and
makes it obvious in the call sites that we return.

Semi-automatic conversion using, e.g.,
sed i 's/GET_REGL(/return gdb_get_regl(mem_buf, /g' target*/gdbstub.c...

5b50e790 07/27/2013 01:04 am Andreas Färber

cpu: Introduce CPUClass::gdb_{read,write}_register()

Completes migration of target-specific code to new target-*/gdbstub.c.

Acked-by: Michael Walle <> (for lm32)
Acked-by: Max Filippov <> (for xtensa)
Signed-off-by: Andreas Färber <>

f20f9df0 07/27/2013 12:24 am Andreas Färber

target-i386: Move cpu_gdb_{read,write}_register()

Signed-off-by: Andreas Färber <>

a0e372f0 07/27/2013 12:23 am Andreas Färber

cpu: Introduce CPUState::gdb_num_regs and CPUClass::gdb_num_core_regs

CPUState::gdb_num_regs replaces num_g_regs.
CPUClass::gdb_num_core_regs replaces NUM_CORE_REGS.

Allows building gdb_register_coprocessor() for xtensa, too.

As a side effect this should fix coprocessor register numbering for SMP....

38e478ec 07/27/2013 12:05 am Stefan Weil

kvm: Change prototype of kvm_update_guest_debug()

Passing a CPUState pointer instead of a CPUArchState pointer eliminates
the last target dependent data type in sysemu/kvm.h.

It also simplifies the code.

Signed-off-by: Stefan Weil <>
Acked-by: Paolo Bonzini <>...

f03d07d4 07/23/2013 06:57 pm Anthony Liguori

Merge remote-tracking branch 'quintela/migration.next' into staging

  1. By Michael R. Hines (8) and others
  2. Via Juan Quintela
    • quintela/migration.next:
      migration: add autoconvergence documentation
      Fix real mode guest segments dpl value in savevm
      Fix real mode guest migration...
444ba679 07/23/2013 03:36 pm Orit Wasserman

Fix real mode guest migration

Older KVM versions save CS dpl value to an invalid value for real mode guests
(0x3). This patch detect this situation when loading CPU state and set all the
segments dpl to zero.
This will allow migration from older KVM on host without unrestricted guest...

3e47c249 07/23/2013 03:36 pm Orit Wasserman

Fix real mode guest segments dpl value in savevm

Older KVM version put invalid value in the segments registers dpl field for
real mode guests (0x3).
This breaks migration from those hosts to hosts with unrestricted guest support.
We detect it by checking CS dpl value for real mode guest and fix the dpl values...

00b941e5 07/23/2013 03:41 am Andreas Färber

cpu: Turn cpu_get_phys_page_debug() into a CPUClass hook

Change breakpoint_invalidate() argument to CPUState alongside.

Since all targets now assign a softmmu-only field, we can drop helpers
cpu_class_set_{do_unassigned_access,vmsd}() and device_class_set_vmsd()....

f17ec444 07/23/2013 03:41 am Andreas Färber

exec: Change cpu_memory_rw_debug() argument to CPUState

Propagate X86CPU in kvmvapic for simplicity.

Signed-off-by: Andreas Färber <>

bdf7ae5b 07/23/2013 03:41 am Andreas Färber

cpu: Introduce CPUClass::synchronize_from_tb() for cpu_pc_from_tb()

Where no extra implementation is needed, fall back to CPUClass::set_pc().

Acked-by: Michael Walle <> (for lm32)
Signed-off-by: Andreas Färber <>

ed2803da 07/23/2013 03:41 am Andreas Färber

cpu: Move singlestep_enabled field from CPU_COMMON to CPUState

Prepares for changing cpu_single_step() argument to CPUState.

Acked-by: Michael Walle <> (for lm32)
Signed-off-by: Andreas Färber <>

f45748f1 07/23/2013 03:41 am Andreas Färber

cpu: Introduce CPUClass::set_pc() for gdb_set_cpu_pc()

This moves setting the Program Counter from gdbstub into target code.
Use vaddr type as upper-bound replacement for target_ulong.

Signed-off-by: Andreas Färber <>

51455c59 07/10/2013 06:54 pm Anthony Liguori

Merge remote-tracking branch 'afaerber/tags/qom-cpu-for-anthony' into staging

QOM CPUState refactorings

  • Fix for OpenRISCCPU subclasses
  • Fix for gdbstub CPU selection
  • Move linux-user CPU functions into new header
  • CPUState part 10 refactoring: first_cpu, next_cpu, cpu_single_env et al....
ca4c810a 07/09/2013 10:33 pm Andreas Färber

target-i386: Change do_interrupt_all() argument to X86CPU

Prepares for log_cpu_state() changing argument to CPUState.

Signed-off-by: Andreas Färber <>

518e9d7d 07/09/2013 10:33 pm Andreas Färber

target-i386: Change do_smm_enter() argument to X86CPU

Prepares for log_cpu_state_mask() changing argument to CPUState.

Signed-off-by: Andreas Färber <>

a0762859 07/09/2013 10:33 pm Andreas Färber

log: Change log_cpu_state[_mask]() argument to CPUState

Since commit 878096eeb278a8ac1ccd6667af73e026f29b4cf5 (cpu: Turn
cpu_dump_{state,statistics}() into CPUState hooks) CPUArchState is no
longer needed.

Add documentation and make the functions available through qemu/log.h...

8995b7a0 07/09/2013 10:33 pm Andreas Färber

target-i386: Change LOG_PCALL_STATE() argument to CPUState

Since log_cpu_state_mask() argument was changed to CPUState,
CPUArchState is no longer needed.

Choose CPUState rather than X86CPU to not hide type mismatches with CPU.

Signed-off-by: Andreas Färber <>

91b1df8c 07/09/2013 10:33 pm Andreas Färber

cpu: Move reset logging to CPUState

x86 was using additional CPU_DUMP_* flags, so make that configurable in
CPUClass::reset_dump_flags.

This adds reset logging for alpha, unicore32 and xtensa.

Acked-by: Michael Walle <> (for lm32)
Reviewed-by: Richard Henderson <>...

467215c2 07/09/2013 10:33 pm Andreas Färber

target-i386: Change gen_intermediate_code_internal() argument to X86CPU

Also use bool type while at it.

Prepares for moving singlestep_enabled field to CPUState.

Reviewed-by: Richard Henderson <>
Signed-off-by: Andreas Färber <>

369ff018 07/09/2013 10:33 pm Andreas Färber

target-i386: Don't overuse CPUArchState

Use CPUX86State instead in dump support code.

Signed-off-by: Andreas Färber <>

182735ef 07/09/2013 10:32 pm Andreas Färber

cpu: Make first_cpu and next_cpu CPUState

Move next_cpu from CPU_COMMON to CPUState.
Move first_cpu variable to qom/cpu.h.

gdbstub needs to use CPUState::env_ptr for now.
cpu_copy() no longer needs to save and restore cpu_next.

Acked-by: Paolo Bonzini <>...

6291ad77 07/09/2013 10:20 pm Peter Maydell

linux-user: Move cpu_clone_regs() and cpu_set_tls() into linux-user

The functions cpu_clone_regs() and cpu_set_tls() are not purely CPU
related -- they are specific to the TLS ABI for a a particular OS.
Move them into the linux-user/ tree where they belong....

6e42be7c 07/09/2013 10:20 pm Andreas Färber

cpu: Drop unnecessary dynamic casts in *_env_get_cpu()

A transition from CPUFooState to FooCPU can be considered safe,
just like FooCPU::env access in the opposite direction.
The only benefit of the FOO_CPU() casts would be protection against
bogus CPUFooState pointers, but then surrounding code would likely...

36ad0e94 07/09/2013 09:38 pm Markus Armbruster

Fix -machine options accel, kernel_irqchip, kvm_shadow_mem

Multiple -machine options with the same ID are merged. All but the
one without an ID are to be silently ignored.

In most places, we query these options with a null ID. This is
correct.

In some places, we instead query whatever options come first in the...

1b5ec234 07/04/2013 06:42 pm Paolo Bonzini

memory: return MemoryRegion from qemu_ram_addr_from_host

It will be needed in the next patch.

Reviewed-by: Jan Kiszka <>
Signed-off-by: Paolo Bonzini <>

c643bed9 06/28/2013 02:25 pm Andreas Färber

cpu: Change qemu_init_vcpu() argument to CPUState

This allows to move the call into CPUState's realizefn.
Therefore move the stub into libqemustub.a.

Reviewed-by: Richard Henderson <>
Signed-off-by: Andreas Färber <>

dd1750d7 06/28/2013 02:25 pm Andreas Färber

kvm: Change kvm_cpu_synchronize_state() argument to CPUState

It no longer relies on CPUArchState since 20d695a.

Reviewed-by: liguang <>
Acked-by: Paolo Bonzini <>
Reviewed-by: Richard Henderson <>...

cb446eca 06/28/2013 02:25 pm Andreas Färber

kvm: Change cpu_synchronize_state() argument to CPUState

Change Monitor::mon_cpu to CPUState as well.

Reviewed-by: liguang <>
Acked-by: Paolo Bonzini <>
Signed-off-by: Andreas Färber <>

878096ee 06/28/2013 02:25 pm Andreas Färber

cpu: Turn cpu_dump_{state,statistics}() into CPUState hooks

Make cpustats monitor command available unconditionally.

Prepares for changing kvm_handle_internal_error() and kvm_cpu_exec()
arguments to CPUState.

Signed-off-by: Andreas Färber <>

90a2541b 06/15/2013 08:50 pm liguang

target-i386: fix over 80 chars warnings

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

0bc60a8a 06/15/2013 08:50 pm liguang

target-i386/helper: remove redundant env->eip assignment

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

80cf2c81 06/15/2013 08:50 pm liguang

target-i386/helper: remove DF macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

a78d0eab 06/15/2013 08:50 pm liguang

target-i386/helper: remove EIP macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

cf75c597 06/15/2013 08:50 pm liguang

target-i386/helper: remove EDI macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

78c3c6d3 06/15/2013 08:49 pm liguang

target-i386/helper: remove ESI macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

08b3ded6 06/15/2013 08:49 pm liguang

target-i386/helper: remove ESP macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

c12dddd7 06/15/2013 08:49 pm liguang

target-i386/helper: remove EBP macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

00f5e6f2 06/15/2013 08:49 pm liguang

target-i386/helper: remove EDX macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

a4165610 06/15/2013 08:48 pm liguang

target-i386/helper: remove ECX macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

70b51365 06/15/2013 08:48 pm liguang

target-i386/helper: remove EBX macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

4b34e3ad 06/15/2013 08:48 pm liguang

target-i386/helper: remove EAX macro

Signed-off-by: liguang <>
Reviewed-by: Andreas Färber <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

a23bbfda 06/11/2013 07:03 pm Andreas Färber

cpu: Turn cpu_get_memory_mapping() into a CPUState hook

Change error reporting from return value to Error argument.

Reviewed-by: Jens Freimann <>
Reviewed-by: Luiz Capitulino <>
[AF: Fixed cpu_get_memory_mapping() documentation]...

444d5590 06/11/2013 06:50 pm Andreas Färber

cpu: Turn cpu_paging_enabled() into a CPUState hook

Relocate assignment of x86 get_arch_id to have all hooks in one place.

Reviewed-by: Jens Freimann <>
Reviewed-by: Luiz Capitulino <>
Signed-off-by: Andreas Färber <>

31ccdde2 06/11/2013 12:33 am Igor Mammedov

target-i386: cpu: Fix potential buffer overrun in get_register_name_32()

Spotted by Coverity,
x86_reg_info_32[] is CPU_NB_REGS32 elements long, so accessing
x86_reg_info_32[CPU_NB_REGS32] will be one element off array.

Signed-off-by: Igor Mammedov <>...

ffce9ebb 06/11/2013 12:33 am Eduardo Habkost

target-i386: Update model values on Conroe/Penryn/Nehalem CPU models

The CPUID model values on Conroe, Penryn, and Nehalem are too
conservative and don't reflect the values found on real Conroe, Penryn,
and Nehalem CPUs.

This causes at least one known problems: Windows XP disables sysenter...

6b11322e 06/11/2013 12:33 am Eduardo Habkost

target-i386: Set level=4 on Conroe/Penryn/Nehalem

The CPUID level value on Conroe, Penryn, and Nehalem are too low. This
causes at least one known problem: the -smp "threads" option doesn't
work as expect if level is < 4, because thread count information is...

dec3fc96 05/31/2013 08:51 pm Richard Henderson

target-i386: Fix aflag logic for CODE64 and the 0x67 prefix

The code reorganization in commit 4a6fd938 broke handling of PREFIX_ADR.
While fixing this, tidy and comment the code so that it's more obvious
what's going on in setting both aflag and dflag.

The TARGET_X86_64 ifdef can be eliminated because CODE64 expands to the...

bff63471 05/31/2013 04:02 pm Qiao Nuohan

target-i386: Fix mask of pte index in memory mapping

Function walk_pte() needs pte index to calculate virtual address.
However, pte index of PAE paging or IA-32e paging is 9 bit, so the mask
should be 0x1ff.

Signed-off-by: Qiao Nuohan <>...

fbc2ed95 05/31/2013 04:02 pm Luiz Capitulino

target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses

The code used to walk IA-32e page-tables, and possibly PAE page-tables,
uses the bit mask ~0xfff to get the next PML4E/PDPTE/PDE/PTE address.

However, as we use a uint64_t to store the resulting address, that mask...

38ebb396 05/10/2013 08:59 pm Aurelien Jarno

target-i386: ROR r8/r16 imm instruction fix

Fix EFLAGS corruption by ROR r8/r16 imm instruction located at the end
of the TB, similarly to commit 089305ac for the non-immediate case.

Reported-by: Hervé Poussineau <>
Reviewed-by: Richard Henderson <>...

4458c236 05/06/2013 11:27 pm Borislav Petkov

target-i386: n270 can MOVBE

The Atom core (cpu name "n270" in QEMU speak) supports MOVBE. This is
needed when booting 3.8 and later linux kernels built with the MATOM
target because we require MOVBE in order to boot properly now.

Signed-off-by: Borislav Petkov <>...

0668af54 05/06/2013 11:14 pm Eduardo Habkost

target-i386: Introduce generic CPUID feature compat function

Introduce x86_cpu_compat_set_features(), that can be used to set/unset
feature bits on specific CPU models for machine-type compatibility.

Signed-off-by: Eduardo Habkost <>
Signed-off-by: Andreas Färber <>

b2a856d9 05/06/2013 08:55 pm Andreas Färber

target-i386: Change CPUID model of 486 to 8

This changes the model number of 486 to 8 (DX4) which matches the
feature set presented, and actually has the CPUID instruction.

This adds a compatibility property, to keep model=0 on pc-*-1.4 and older.

Signed-off-by: H. Peter Anvin <>...

ba2bc7a4 05/06/2013 08:55 pm Andreas Färber

target-i386: Emulate X86CPU subclasses for global properties

After initializing the object from its x86_def_t and before setting any
additional cpu arguments, set any global properties for the designated
subclass <name>
{i386,x86_64}-cpu.

Reviewed-by: Eduardo Habkost <>...

034acf4a 05/06/2013 08:16 pm Eduardo Habkost

target-i386: Introduce X86CPU::filtered_features field

This field will contain the feature bits that were filtered out because
of missing host support.

Signed-off-by: Eduardo Habkost <>
Reviewed-by: Eric Blake <>
Signed-off-by: Andreas Färber <>

7e5292b5 05/06/2013 08:16 pm Eduardo Habkost

target-i386: Add "filtered-features" property to X86CPU

This property will contain all the features that were removed from the
CPU because they are not supported by the host.

This way, libvirt or other management tools can emulate the
check/enforce behavior by checking if filtered-properties is all zeroes,...

8e8aba50 05/06/2013 08:16 pm Eduardo Habkost

target-i386: Add "feature-words" property to X86CPU

This property will be useful for libvirt, as libvirt already has logic
based on low-level feature bits (not feature names), so it will be
really easy to convert the current libvirt logic to something using the...

bd87d2a2 05/06/2013 06:53 pm Eduardo Habkost

target-i386: Use FeatureWord loop on filter_features_for_kvm()

Instead of open-coding the filtering code for each feature word, change
the existing code to use the feature_word_info array, that has exactly
the same CPUID eax/ecx/register values for each feature word....

04d104b6 05/06/2013 06:53 pm Eduardo Habkost

target-i386: Add ECX information to FeatureWordInfo

FEAT_7_0_EBX uses ECX as input, so we have to take that into account
when reporting feature word values.

Signed-off-by: Eduardo Habkost <>
Signed-off-by: Andreas Färber <>

0514ef2f 05/02/2013 01:27 am Eduardo Habkost

target-i386: Replace cpuid_*features fields with a feature word array

This replaces the feature-bit fields on both X86CPU and x86_def_t
structs with an array.

With this, we will be able to simplify code that simply does the same
operation on all feature words (e.g. kvm_check_features_against_host(),...

27861ecc 05/02/2013 01:21 am Eduardo Habkost

target-i386: Break CPUID feature definition lines

Break lines on kvm_check_features_against_host(), kvm_cpu_fill_host(),
and builtin_x86_defs, so they don't get too long once the *_features
fields are replaced by an array.

Signed-off-by: Eduardo Habkost <>...

fc7a504c 05/02/2013 12:21 am Eduardo Habkost

target-i386/kvm.c: Code formatting changes

Add appropriate spaces around operators, and break line where it needs
to be broken to allow feature-words array to be introduced without
having too-long lines.

Signed-off-by: Eduardo Habkost <>...

90e4b0c3 05/02/2013 12:21 am Eduardo Habkost

target-i386: Group together level, xlevel, xlevel2 fields

Consolidate level, xlevel, xlevel2 fields in x86_def_t and CPUX86State.

Signed-off-by: Eduardo Habkost <>
Reviewed-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

53a89e26 05/01/2013 02:06 pm Igor Mammedov

target-i386: Move APIC to ICC bus

It allows APIC to be hotplugged.

  • map APIC's mmio at board level if it is present
  • do not register mmio region for each APIC, since
    only one is used/mapped

Signed-off-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

62fc403f 05/01/2013 02:06 pm Igor Mammedov

target-i386: Attach ICC bus to CPU on its creation

X86CPU should have parent bus so it could provide bus for child APIC.

Signed-off-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

baaeda08 05/01/2013 02:04 pm Igor Mammedov

target-i386: Replace MSI_SPACE_SIZE with APIC_SPACE_SIZE

Put APIC_SPACE_SIZE in a public header so that it can be
reused elsewhere later.

Signed-off-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

c72bf468 05/01/2013 02:04 pm Jens Freimann

cpu: Move cpu_write_elfXX_note() functions to CPUState

Convert cpu_write_elfXX_note() functions to CPUClass methods and pass
CPUState as argument. Update target-i386 accordingly.

Signed-off-by: Jens Freimann <>
[AF: Retain stubs as CPUClass' default method implementation; style changes]...

997395d3 05/01/2013 02:04 pm Igor Mammedov

cpu: Introduce get_arch_id() method and override it for X86CPU

get_arch_id() adds possibility for generic code to get a guest-visible
CPU ID without accessing CPUArchState.
If derived classes don't override it, it will return cpu_index.

Override it on target-i386 in X86CPU to return the APIC ID....

72ac2e87 05/01/2013 02:04 pm Igor Mammedov

target-i386: Introduce feat2prop() for CPU properties

This helper replaces '_' with '-' in a uniform way.
As a side effect, even custom mappings must use '-' now.

Signed-off-by: Igor Mammedov <>
[AF: Split off; operate on NUL-terminated string rather than '=' delimiter]...

31050930 05/01/2013 02:04 pm Igor Mammedov

target-i386: Introduce apic-id CPU property

The property is used from board level to set APIC ID for CPUs it
creates. Do so in a new pc_new_cpu() helper, to be reused for hot-plug.

Signed-off-by: Igor Mammedov <>
Reviewed-by: Eduardo Habkost <>...

8d6d4980 05/01/2013 02:04 pm Igor Mammedov

target-i386: Do not allow to set apic-id once CPU is realized

Signed-off-by: Igor Mammedov <>
Reviewed-by: Eduardo Habkost <>
Signed-off-by: Andreas Färber <>

089305ac 04/20/2013 10:27 pm Pavel Dovgaluk

i386 ROR r8/r16 instruction fix

Fixed EFLAGS corruption by ROR r8/r16 instruction located at the end of the TB.

Signed-off-by: Pavel Dovgalyuk <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

917367aa 04/18/2013 05:27 am Marcelo Tosatti

target-i386: kvm: save/restore steal time MSR

Read and write steal time MSR, so that reporting is functional across
migration.

Signed-off-by: Marcelo Tosatti <>
Signed-off-by: Gleb Natapov <>

21ad7789 04/16/2013 02:19 am Jan Kiszka

target-i386: Fix including "host" in -cpu ? output

kvm_enabled() cannot be true at this point because accelerators are
initialized much later during init. Also, hiding this makes it very hard
to discover for users. Simply dump unconditionally if CONFIG_KVM is set....

3af60be2 04/16/2013 02:19 am Jan Kiszka

target-i386: Improve -cpu ? features output

We were missing a bunch of feature lists. Fix this by simply dumping
the meta list feature_word_info.

Signed-off-by: Jan Kiszka <>
Reviewed-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

4dc1f449 04/16/2013 02:19 am Igor Mammedov

target-i386: Consolidate error propagation in x86_cpu_realizefn()

Signed-off-by: Igor Mammedov <>
Reviewed-by: Paolo Bonzini <>
Reviewed-by: Eduardo Habkost <>
Signed-off-by: Andreas Färber <>

d3c64d6a 04/16/2013 02:19 am Igor Mammedov

target-i386: Split APIC creation from initialization in x86_cpu_realizefn()

When APIC is hotplugged during CPU hotplug, device_set_realized()
calls device_reset() on it. And if QEMU runs in KVM mode, following
call chain will fail:
apic_reset_common()...

dd13e088 04/16/2013 02:19 am Eduardo Habkost

target-i386/cpu.c: Coding style fixes

  • Add braces to 'if' statements;
  • Remove last TAB character from the source.

Signed-off-by: Eduardo Habkost <>
[AF: Changed whitespace]
Reviewed-by: Igor Mammedov <>
Signed-off-by: Andreas Färber <>

7f833247 04/16/2013 02:19 am Igor Mammedov

target-i386: Split out CPU creation and features parsing

Move CPU creation and features parsing into a separate cpu_x86_create()
function, so that board would be able to set board-specific CPU
properties before CPU is realized.

Keep cpu_x86_init() for compatibility with the code that uses cpu_init()...

d640045a 04/13/2013 02:51 pm Aurelien Jarno

target-i386: add AES-NI instructions

Reviewed-by: Edgar E. Iglesias <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

e71827bc 04/13/2013 02:51 pm Aurelien Jarno

target-i386: add pclmulqdq instruction

Reviewed-by: Richard Henderson <>
Reviewed-by: Edgar E. Iglesias <>
Signed-off-by: Aurelien Jarno <>

41cb383f 04/13/2013 02:51 pm Aurelien Jarno

target-i386: enable PCLMULQDQ on Westmere CPU

The PCLMULQDQ instruction has been introduced on the Westmere CPU.

Reviewed-by: Richard Henderson <>
Reviewed-by: Edgar E. Iglesias <>
Signed-off-by: Aurelien Jarno <>

0d09e41a 04/08/2013 07:13 pm Paolo Bonzini

hw: move headers to include/

Many of these should be cleaned up with proper qdev-/QOM-ification.
Right now there are many catch-all headers in include/hw/ARCH depending
on cpu.h, and this makes it necessary to compile these files per-target.
However, fixing this does not belong in these patches....

dab86234 04/05/2013 03:23 am Laszlo Ersek

extract/unify the constant 0xfee00000 as APIC_DEFAULT_ADDRESS

A common dependency of the constant's current users:
- hw/apic_common.c
- hw/i386/kvmvapic.c
- target-i386/cpu.c
is "target-i386/cpu.h".

Signed-off-by: Laszlo Ersek <>
Reviewed-by: Anthony Liguori <>...

4d8b3c63 04/05/2013 03:23 am Laszlo Ersek

strip some whitespace

Signed-off-by: Laszlo Ersek <>
Reviewed-by: Anthony Liguori <>
Message-id:
Signed-off-by: Anthony Liguori <>

a509d632 04/03/2013 11:06 pm Eduardo Habkost

target-i386: Check for host features before filter_features_for_kvm()

commit 5ec01c2e96910e1588d1a0de8609b9dda7618c7f broke "-cpu ..,enforce",
as it has moved kvm_check_features_against_host() after the
filter_features_for_kvm() call. filter_features_for_kvm() removes all...

c334a388 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: use clz32/ctz32 instead of reinventing the wheel

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

649ad05e 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstrX instructions in "Ranges" mode

Fix the order of the of the comparisons to match the "Intel 64 and
IA-32 Architectures Software Developer's Manual".

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

b27a6cac 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstrX instructions in "Equal each" mode

pcmpXstrX instructions in "Equal each" mode force both invalid element
pair to true. It means (upper - MAX) bits should be set
to 1, not (upper - MAX + 1)....

75c9527e 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstrX instructions in "Equal ordered" mode

The inner loop should only change the current bit of the result, instead
of the whole result.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

e4eba27e 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstrX instructions with "Masked(-)" polarity

valids can equals to -1 if the reg/mem string is empty. Change the
expression to have an empty xor mask in that case.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

83f7dc28 04/01/2013 07:49 pm Aurelien Jarno

target-i386: enable SSE4.1 and SSE4.2 in TCG mode

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

34c6addd 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.1: fix pinsrb instruction

gen_op_mov_TN_reg() loads the value in cpu_T0, so this temporary should
be used instead of cpu_tmp0.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

da5156cd 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpgtq instruction

The "Intel 64 and IA-32 Architectures Software Developer's Manual" (at
least recent versions) clearly says that the comparison is signed.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>

93e3c0ae 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstri instructions

ffs1 returns the first bit set to one starting counting from the most
significant bit.

pcmpXstri returns the most significant bit set to one, starting counting
from the least significant bit.

Reviewed-by: Richard Henderson <>...

2b8d7e9d 04/01/2013 07:49 pm Aurelien Jarno

target-i386: SSE4.2: fix pcmpXstrm instructions

pcmpXstrm instructions returns their result in the XMM0 register and
not in the first operand.

Reviewed-by: Richard Henderson <>
Signed-off-by: Aurelien Jarno <>