Statistics
| Branch: | Revision:

root / target-i386 @ 73f5e313

# Date Author Comment
45009a30 11/29/2011 12:20 am Markus Armbruster

x86/cpuid: Tighten parsing of tsc_freq=FREQ

cpu_x86_find_by_name() uses strtosz_suffix_unit(), but screws up the
error checking. It detects some failures, but not all. Undetected
failures result in a zero tsc_khz value (error value -1 divided by
1000), which means "no tsc_freq set"....

a1fd24af 11/28/2011 04:42 pm Anthony Liguori

Revert "i386: derive '-cpu host' from KVM_GET_SUPPORTED_CPUID"

This reverts commit 66e3dd9282141b5ae75637c9676002cf3ceeb988.

From Avi,

"Anthony, I think we should revert that commit and refactor cpuid for
1.1. The logic is spread over too many places which makes it hard to...
1571b6cb 11/21/2011 10:36 pm Anthony Liguori

Merge remote-tracking branch 'origin/master' into staging

bc426899 11/19/2011 03:51 pm Blue Swirl

x86: fix pcmpestrm and pcmpistrm

Fix obvious typos (decrement and off-by-one error) in pcmpestrm and pcmpistrm
which resulted in infinite loop. Reported by Frank Mehnert,
spotted also by Coverity (bug 84752853).

Reported-by: Frank Mehnert <>...

12619721 11/17/2011 02:57 pm Vagrant Cascadian

Fix typo: runnning -> running

One n too many for running, need we say more.

Signed-Off-By: Vagrant Cascadian <>

Signed-off-by: Stefan Hajnoczi <>

d3c481b3 11/10/2011 02:29 pm Markus Armbruster

x86/cpuid: Convert remaining strdup() to g_strdup()

Fixes missing error checking.

Signed-off-by: Markus Armbruster <>
Signed-off-by: Stefan Hajnoczi <>

99e1dec0 11/10/2011 02:29 pm Markus Armbruster

x86/cpuid: Plug memory leak in cpudef_setfield()

To reproduce the leak, put two name options into the same [cpudef]
section of target-x86_64.conf.

Signed-off-by: Markus Armbruster <>
Signed-off-by: Stefan Hajnoczi <>

04c5b17a 11/10/2011 02:29 pm Markus Armbruster

x86/cpuid: Fix crash on -cpu ""

Spotted by Coverity.

Signed-off-by: Markus Armbruster <>
Signed-off-by: Stefan Hajnoczi <>

66e3dd92 11/09/2011 08:06 pm Avi Kivity

i386: derive '-cpu host' from KVM_GET_SUPPORTED_CPUID

The fact that a host cpu supports a feature doesn't mean that QEMU and KVM
will also support it, yet -cpuid host brings host features wholesale.

We need to whitelist each feature separately to make sure we support it....

f2209eb8 11/02/2011 02:55 pm Bharata B Rao

Fix X86 CPU topology in KVM mode

apic id returned to guest kernel in ebx for cpuid(function=1) depends on
CPUX86State->cpuid_apic_id which gets populated after the cpuid information
is cached in the host kernel. This results in broken CPU topology in guest....

21e87c46 10/25/2011 02:33 am Avi Kivity

i386: wire up MSR_IA32_MISC_ENABLE

It's needed for its default value - bit 0 specifies that "rep movs" is
good enough for memcpy, and Linux may use a slower memcpu if it is not set,
depending on cpu family/model.

Signed-off-by: Avi Kivity <>...

aa82ba54 10/25/2011 02:29 am Liu, Jinsong

kvm: support TSC deadline MSR with subsection

KVM add emulation of lapic tsc deadline timer for guest.
This patch is co-operation work at qemu side.

Use subsections to save/restore the field (mtosatti).

Signed-off-by: Liu, Jinsong <>...

38d2c27e 10/25/2011 02:27 am Marcelo Tosatti

Revert "kvm: support TSC deadline MSR"

This reverts commit bfc2455ddbb41148494a084d15777e6bed7533c3.
New patch with subsections will follow.

Signed-off-by: Marcelo Tosatti <>

bfc2455d 10/03/2011 07:53 pm Liu, Jinsong

kvm: support TSC deadline MSR

KVM add emulation of lapic tsc deadline timer for guest.
This patch is co-operation work at qemu side.

Signed-off-by: Liu, Jinsong <>
Signed-off-by: Marcelo Tosatti <>

bccd9ec5 10/01/2011 12:31 pm Blue Swirl

softmmu_header: pass CPUState to tlb_fill

Pass CPUState pointer to tlb_fill() instead of architecture local
cpu_single_env hacks.

Signed-off-by: Blue Swirl <>

86ce7a5e 10/01/2011 09:21 am Jan Kiszka

target-i386: Remove redundant word mask in port out instructions

T0 was already masked to 16 bits when loading it.

Signed-off-by: Jan Kiszka <>
Reviewed-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

782ea2c7 09/21/2011 12:49 pm Stefan Weil

target-i386: Remove data type CCTable

Remove also two assert statements which were the last remaining users.

Signed-off-by: Stefan Weil <>
Signed-off-by: Stefan Hajnoczi <>

7f67d892 09/20/2011 11:16 pm Anthony Liguori

Merge remote-tracking branch 'qmp/queue/qmp' into staging

5c6562c2 09/17/2011 08:13 pm Max Reitz

target-i386: Fix several SSE3 instructions.

haddp[sd], hsubp[sd] and addsubp[sd] operate on floats, thus it is
necessary to use the appropriate floating point calculation functions.
If this is not done, those functions operate merely on integers, which
is not correct....

1dfb4dd9 09/15/2011 10:39 pm Luiz Capitulino

Replace the VMSTOP macros with a proper state type

Today, when notifying a VM state change with vm_state_notify(),
we pass a VMSTOP macro as the 'reason' argument. This is not ideal
because the VMSTOP macros tell why qemu stopped and not exactly
what the current VM state is....

1354869c 09/15/2011 10:39 pm Luiz Capitulino

Drop the vm_running global variable

Use runstate_is_running() instead, which is introduced by this commit.

Signed-off-by: Luiz Capitulino <>

6115c0a8 09/10/2011 05:50 pm Blue Swirl

kvm: remove unnecessary assignments

Avoid these warnings from clang analyzer:
/src/qemu/target-i386/kvm.c:772:5: warning: Value stored to 'cwd' is never read
cwd = swd = twd = 0;
/src/qemu/target-i386/kvm.c:772:11: warning: Although the value stored to 'swd' is used in the enclosing expression, the value is never actually read from 'swd'...

07ff2c44 09/08/2011 05:25 pm Anthony Liguori

Merge remote-tracking branch 'origin/master' into staging

82786041 09/08/2011 05:10 pm Richard Henderson

target-i386: Compute all flag data inside %cl != 0 test.

The (x << (cl - 1)) quantity is only used if CL != 0. Move the
computation of that quantity nearer its use.

This avoids the creation of undefined TCG operations when the
constant propagation optimization proves that CL == 0, and thus...

9d0baba1 09/08/2011 04:59 pm Anthony Liguori

Merge remote-tracking branch 'stefanha/trivial-patches' into staging

541dc0d4 09/03/2011 01:45 pm Stefan Weil

Use new macro QEMU_PACKED for packed structures

Most changes were made using these commands:

git grep -la '__attribute__((packed))'|xargs perl -pi -e 's/__attribute__\(\(packed\)\)/QEMU_PACKED/'
git grep -la '__attribute__ ((packed))'|xargs perl -pi -e 's/__attribute__ \(\(packed\)\)/QEMU_PACKED/'...

c6bfc164 09/02/2011 01:08 pm Boris Figovsky

x86: fix daa opcode for al register values higher than 0xf9

The second if statement should consider the original al register value,
and not the new one.

Signed-off-by: Boris Figovsky <>
Reviewed-by: Peter Maydell <>...

fdc9c41a 08/25/2011 11:21 am Jan Kiszka

Fix up some style nits of last uq/master merge

Signed-off-by: Jan Kiszka <>
Signed-off-by: Stefan Hajnoczi <>

7267c094 08/21/2011 07:01 am Anthony Liguori

Use glib memory allocation and free functions

qemu_malloc/qemu_free no longer exist after this commit.

Signed-off-by: Anthony Liguori <>

986563b1 08/08/2011 10:38 pm Anthony Liguori

Merge remote-tracking branch 'qemu-kvm/uq/master' into staging

97b348e7 08/07/2011 12:32 pm Blue Swirl

Remove unused is_softmmu parameter from cpu_handle_mmu_fault

Parameter is_softmmu (and its evil mutant twin brother is_softmuu)
is not used in cpu_*_handle_mmu_fault() functions, remove them
and adjust callers.

Acked-by: Richard Henderson <>...

d5ab9713 08/05/2011 06:57 pm Jan Kiszka

Avoid allocating TCG resources in non-TCG mode

Do not allocate TCG-only resources like the translation buffer when
running over KVM or XEN. Saves a "few" bytes in the qemu address space
and is also conceptually cleaner.

Signed-off-by: Jan Kiszka <>...

ac363c90 08/05/2011 06:10 pm Marcelo Tosatti

Remove #ifdef KVM_CAP_TSC_CONTROL

Signed-off-by: Marcelo Tosatti <>

b862d1fe 08/05/2011 06:04 pm Joerg Roedel

qemu-x86: Add tsc_freq option to -cpu

To let the user configure the desired tsc frequency for the
guest if running in KVM.

Signed-off-by: Joerg Roedel <>
Signed-off-by: Marcelo Tosatti <>

e7429073 08/05/2011 06:04 pm Joerg Roedel

qemu-x86: Set tsc_khz in kvm when supported

Make use of the KVM_TSC_CONTROL feature if available.

Signed-off-by: Joerg Roedel <>
Signed-off-by: Marcelo Tosatti <>

3e457172 07/30/2011 12:41 pm Blue Swirl

exec.h cleanup

Move softmmu_exec.h include directives from target-*/exec.h to
target-*/op_helper.c. Move also various other stuff only used in
op_helper.c there.

Define global env in dyngen-exec.h.

For i386, move wrappers for segment and FPU helpers from user-exec.c...

2b41f10e 06/26/2011 09:25 pm Blue Swirl

Remove exec-all.h include directives

Most exec-all.h include directives are now useless, remove them.

Signed-off-by: Blue Swirl <>

f081c76c 06/26/2011 09:25 pm Blue Swirl

Move cpu_has_work and cpu_pc_from_tb to cpu.h

Move functions cpu_has_work() and cpu_pc_from_tb() from exec.h to cpu.h. This is
needed by later patches.

Signed-off-by: Blue Swirl <>

f3e27037 06/26/2011 09:25 pm Blue Swirl

exec.h: fix coding style and change cpu_has_work to return bool

Before the next patch, fix coding style of the areas affected.

Change the type of the return value from cpu_has_work() and
qemu_cpu_has_work() to bool.

Signed-off-by: Blue Swirl <>

e694d4e2 06/26/2011 09:25 pm Blue Swirl

x86: use caller supplied CPUState for interrupt related stuff

Several x86 specific functions are called from cpu-exec.c with the
assumption that global env register is valid. This will be changed
later, so make the functions use caller supplied CPUState parameter....

1162c041 06/26/2011 09:25 pm Blue Swirl

cpu_loop_exit: avoid using AREG0

Make cpu_loop_exit() take a parameter for CPUState instead of relying
on global env.

Signed-off-by: Blue Swirl <>

ca98557a 06/21/2011 07:53 pm Marcelo Tosatti

kvm: fix FPU state subsection

There is no need to specify version on the subsection fields.

Signed-off-by: Marcelo Tosatti <>

31e8c696 06/20/2011 09:26 pm Andre Przywara

KVM: Fix XSAVE feature bit enumeration

When iterating through the XSAVE feature enumeration CPUID leaf (0xD)
we should not stop at the first zero EAX, but instead keep scanning
since there are gaps in the enumeration (ECX=1 for instance).
This fixes the proper usage of AVX in KVM guests....

ba9bc59e 06/20/2011 09:24 pm Jan Kiszka

kvm: x86: Pass KVMState to kvm_arch_get_supported_cpuid

kvm_arch_get_supported_cpuid checks for global cpuid restrictions, it
does not require any CPUState reference. Changing its interface allows
to call it before any VCPU is initialized.

CC: Eduardo Habkost <>...

e56ff191 06/20/2011 09:19 pm Jan Kiszka

kvm: x86: Drop KVM_CAP build dependencies

No longer needed with accompanied kernel headers.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

5802e066 06/20/2011 09:16 pm Jan Kiszka

kvm: Drop CONFIG_KVM_PARA

The kvm_para.h header is now always available.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

42cc8fa6 06/19/2011 03:57 pm Jan Kiszka

kvm: x86: Save/restore FPU OP, IP and DP

These FPU states are properly maintained by KVM but not yet by TCG. So
far we unconditionally set them to 0 in the guest which may cause
state corruptions, though not with modern guests.

To avoid breaking backward migration, use a conditional subsection that...

b3baa152 06/14/2011 05:34 pm brillywu@viatech.com.cn

kvm: Add CPUID support for VIA CPU

When KVM is running on VIA CPU with host cpu's model, the
feautures of VIA CPU will be passed into kvm guest by calling
the CPUID instruction for Centaur.

Signed-off-by: BrillyWu<>
Signed-off-by: KaryJin<>...

f7911686 06/14/2011 05:34 pm Yang, Wei Y

kvm: Enable CPU SMEP feature

This patchset enables a new CPU feature SMEP (Supervisor Mode Execution
Protection) in QEMU-KVM. SMEP prevents kernel from executing code in application.
Updated Intel SDM describes this CPU feature. The document will be published soon....

9bf0960a 06/08/2011 11:04 am Alexandre Raymond

Fix compilation warning due to missing header for sigaction (followup)

This patch removes all references to signal.h when qemu-common.h is included
as they become redundant.

Signed-off-by: Alexandre Raymond <>
Signed-off-by: Stefan Hajnoczi <>

8001c294 06/08/2011 11:04 am Martin Simmons

target-i386: Make x86 mfence and lfence illegal without SSE2

While trying to use qemu -cpu pentium3 to test for incorrect uses of certain
SSE2 instructions, I found that QEMU allowed the mfence and lfence
instructions to be executed even though Pentium 3 doesn't support them....

66fcf8ff 06/03/2011 05:07 pm Aurelien Jarno

target-i386: use floatx80 constants in helper_fld*_ST0()

Instead of using a table which doesn't correspond to anything from
physical in the CPU, use directly the constants in helper_fld*_ST0().

Cc: Andreas Färber <>
Reviewed-by: Peter Maydell <>...

c31da136 06/03/2011 05:07 pm Aurelien Jarno

target-i386: remove old code handling float64

Now that target-i386 uses softfloat, floatx80 is always available and
there is no need anymore to have code handling both float64 and floax80.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

85097db6 05/08/2011 07:55 pm Richard Henderson

irq: Privatize CPU_INTERRUPT_NMI.

This interrupt name is used by i386, CRIS, and MicroBlaze.
Copy the name into each target.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

00a152b4 05/08/2011 07:55 pm Richard Henderson

target-i386: Privatize some i386-specific interrupt names.

SMI, VIRQ, INIT, SIPI, and MCE are all only used by the i386 port.

Signed-off-by: Richard Henderson <>
Signed-off-by: Blue Swirl <>

4a043713 05/02/2011 03:51 pm Paolo Bonzini

kvm: use qemu_free consistently

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Marcelo Tosatti <>

e41e0fc6 05/02/2011 03:38 pm Jan Kiszka

x86: Allow multiple cpu feature matches of lookup_feature

kvmclock is represented by two feature bits. Therefore, lookup_feature
needs to continue its search even after the first match. Enhance it
accordingly and switch to a bool return type at this chance....

642258c6 05/02/2011 03:38 pm Glauber Costa

kvm: add kvmclock to its second bit

We have two bits that can represent kvmclock in cpuid.
They signal the guest which msr set to use. When we tweak flags
involving this value - specially when we use "-", we have to act on both.

Signed-off-by: Glauber Costa <>...

0c31b744 05/02/2011 02:24 pm Glauber Costa

kvm: use kernel-provided para_features instead of statically coming up with new capabilities

Use the features provided by KVM_GET_SUPPORTED_CPUID directly to
mask out features from guest-visible cpuid.

The old get_para_features() mechanism is kept for older kernels that do not implement it....

be1c17c7 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fscale() wrt softfloat

Use the scalbn softfloat function to implement helper_fscale(). This
fixes corner cases (e.g. NaN) and makes a few more GNU libc math tests
to pass.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

788e7336 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fbld_ST0() wrt softfloat

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

c9ad19c5 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fxtract() wrt softfloat

With softfloat it's not possible to play with the overflow of an
unsigned value to get the 0 case partially correct. Use a special case
for that. Using a division to generate an infinity is the easiest way
that works for both softfloat and softfloat-native....

13822781 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fdiv() wrt softfloat

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

fec05e42 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fsqrt() wrt softfloat

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

c2ef9a83 04/25/2011 12:18 pm Aurelien Jarno

target-i386: replace approx_rsqrt and approx_rcp by softfloat ops

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

47c0143c 04/25/2011 12:18 pm Aurelien Jarno

target-i386: add CPU86_LDouble <-> double conversion functions

Add functions to convert CPU86_LDouble to double and vice versa. They
are going to be used to implement logarithmic and trigonometric function
until softfloat implement them.

Reviewed-by: Peter Maydell <>...

a2c9ed3c 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix logarithmic and trigonometric helpers wrt softfloat

Use the new CPU86_LDouble <-> double conversion functions to make logarithmic
and trigonometric helpers working with softfloat.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

bcb5fec5 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix helper_fprem() and helper_fprem1() wrt softfloat

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

a1d8db07 04/25/2011 12:18 pm Aurelien Jarno

target-i386: fix constants wrt softfloat

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

618ba8e6 04/20/2011 11:37 am Stefan Weil

Remove unused function parameter from cpu_restore_state

The previous patch removed the need for parameter puc.
Is is now unused, so remove it.

Cc: Aurelien Jarno <>
Reviewed-by: Peter Maydell <>
Signed-off-by: Stefan Weil <>

e87b7cb0 04/20/2011 11:33 am Stefan Weil

Remove unused function parameters from gen_pc_load and rename the function

Function gen_pc_load was introduced in commit
d2856f1ad4c259e5766847c49acbb4e390731bd4.
The only reason for parameter searched_pc was
a debug statement in target-i386/translate.c....

1ffd41ee 04/17/2011 09:32 pm Aurelien Jarno

target-i386: use CPU_LDoubleU instead of a private union

Use CPU_LDoubleU in cpu_dump_state() instead of redefining a union for
doing the conversion.

Based on a patch from Laurent Vivier <>.

Cc: Laurent Vivier <>
Reviewed-by: Peter Maydell <>...

c4137223 04/17/2011 09:32 pm Aurelien Jarno

target-i386: use float unions from cpu-all.h

Use float unions from cpu-all.h instead of redefining new (wrong for arm)
ones in target-i386. This also allows building cpu-exec.o with softfloat.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

67dd64bf 04/17/2011 09:32 pm Aurelien Jarno

target-i386: add floatx_{add,mul,sub} and use them

Add floatx_{add,mul,sub} defines, and use them instead of using direct
C operations.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

e0b29ce1 04/17/2011 09:32 pm Aurelien Jarno

target-i386: fix CMPUNORDPS/D and CMPORDPS/D instructions

SSE instructions CMPUNORDPS/D and CMPORDPS/D do not trigger an invalid
exception if operands are qNANs.

Reviewed-by: Peter Maydell <>
Signed-off-by: Aurelien Jarno <>

211315fb 04/17/2011 09:32 pm Aurelien Jarno

softfloat: rename float*_eq() into float*_eq_quiet()

float*_eq functions have a different semantics than other comparison
functions. Fix that by first renaming float*_quiet() into float*_eq_quiet().

Note that it is purely mechanical, and the behaviour should be unchanged....

4b4a72e5 04/10/2011 01:45 am Stefan Weil

Fix conversions from pointer to tcg_target_long

tcg_gen_exit_tb takes a parameter of type tcg_target_long,
so the type casts of pointer to long should be replaced by
type casts of pointer to tcg_target_long (suggested by Blue Swirl).

These changes are needed for build environments where...

4ac8e585 03/23/2011 02:05 am Anthony Liguori

Revert "x86: Save/restore PAT MSR"

This reverts commit c995b495b9d6e60ab1e390bd398a22425d0b3c8c.

From Jan Kiszka:

Ouch, indeed. Moreover, CPU_SAVE_VERSION was not updated (likely the
reason for the breakage). Thanks for debugging this!
Anthony (or whoever), please revert this unneeded commit in qemu.git....
bb4ea393 03/16/2011 10:11 pm Jan Kiszka

kvm: Align kvm_arch_handle_exit to kvm_cpu_exec changes

Make the return code of kvm_arch_handle_exit directly usable for
kvm_cpu_exec. This is straightforward for x86 and ppc, just s390
would require more work. Avoid this for now by pushing the return code...

2a4dac83 03/16/2011 10:11 pm Jan Kiszka

kvm: x86: Reorder functions in kvm.c

Required for next patch which will access guest debug services from
kvm_arch_handle_exit. No functional changes.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

f2574737 03/16/2011 10:11 pm Jan Kiszka

kvm: x86: Push kvm_arch_debug to kvm_arch_handle_exit

There are no generic bits remaining in the handling of KVM_EXIT_DEBUG.
So push its logic completely into arch hands, i.e. only x86 so far.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

4601f7b0 03/16/2011 10:11 pm Jan Kiszka

kvm: x86: Do not leave halt if interrupts are disabled

When an external interrupt is pending but IF is cleared, we must not
leave the halt state prematurely.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

ebda377f 03/16/2011 10:11 pm Jan Kiszka

x86: Properly reset PAT MSR

Conforming to the Intel spec, set the power-on value of PAT also on
reset, but save it across INIT.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

c995b495 03/16/2011 10:11 pm Jan Kiszka

x86: Save/restore PAT MSR

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

0c03266a 03/16/2011 10:11 pm Jan Kiszka

kvm: x86: Synchronize PAT MSR with the kernel

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

c34d440a 03/15/2011 06:19 am Jan Kiszka

kvm: x86: Consolidate TCG and KVM MCE injection code

This switches KVM's MCE injection path to cpu_x86_inject_mce, both for
SIGBUS and monitor initiated events. This means we prepare the MCA MSRs
in the VCPUState also for KVM.

We have to drop the MSRs writeback restrictions for this purpose which...

32a42024 03/15/2011 06:19 am Jan Kiszka

kvm: x86: Clean up kvm_setup_mce

There is nothing to abstract here. Fold kvm_setup_mce into its caller
and fix up the error reporting (return code of kvm_vcpu_ioctl holds the
error value).

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>...

75d49497 03/15/2011 06:19 am Jan Kiszka

kvm: x86: Fail kvm_arch_init_vcpu if MCE initialization fails

There is no reason to continue if the kernel claims to support MCE but
then fails to process our request.

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>...

3c85e74f 03/15/2011 06:19 am Huang Ying

KVM, MCE, unpoison memory address across reboot

In Linux kernel HWPoison processing implementation, the virtual
address in processes mapping the error physical memory page is marked
as HWPoison. So that, the further accessing to the virtual
address will kill corresponding processes with SIGBUS....

ac098781 03/15/2011 06:19 am Jan Kiszka

x86: Account for MCE in cpu_has_work

MCEs can be injected asynchronously, so they can also terminate the halt
state.

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>
CC: Hidetoshi Seto <>...

18559232 03/15/2011 06:19 am Jan Kiszka

x86: Perform implicit mcg_status reset

Reorder mcg_status in CPUState to achieve automatic clearing on reset.

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>
CC: Hidetoshi Seto <>
CC: Jin Dongming <>...

2fa11da0 03/15/2011 06:19 am Jan Kiszka

x86: Small cleanups of MCE helpers

Fix some code style issues, use proper headers, and align to cpu_x86
naming scheme. No functional changes.

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>
CC: Hidetoshi Seto <>...

316378e4 03/15/2011 06:19 am Jan Kiszka

x86: Refine error reporting of MCE injection services

As this service is used by the human monitor, make sure that errors get
reported to the right channel, and also raise the verbosity.

This requires to move Monitor typedef in qemu-common.h to resolve the...

747461c7 03/15/2011 06:19 am Jan Kiszka

x86: Optionally avoid injecting AO MCEs while others are pending

Allow to tell cpu_x86_inject_mce that it should ignore Action Optional
MCE events when the target VCPU is still processing another one. This
will be used by KVM soon.

Signed-off-by: Jan Kiszka <>...

419fb20a 03/15/2011 06:19 am Jan Kiszka

kvm: x86: Move MCE functions together

Pure function suffling to avoid multiple #ifdef KVM_CAP_MCE sections,
no functional changes. While at it, annotate some #ifdef sections.

Signed-off-by: Jan Kiszka <>
CC: Huang Ying <>...

99036865 03/15/2011 06:19 am Jan Kiszka

kvm: Rename kvm_arch_process_irqchip_events to async_events

We will broaden the scope of this function on x86 beyond irqchip events.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

ab443475 03/15/2011 06:19 am Jan Kiszka

kvm: x86: Inject pending MCE events on state writeback

The current way of injecting MCE events without updating of and
synchronizing with the CPUState is broken and causes spurious
corruptions of the MCE-related parts of the CPUState.

As a first step towards a fix, enhance the state writeback code with...

d5bfda33 03/15/2011 06:19 am Jan Kiszka

x86: Run qemu_inject_x86_mce on target VCPU

We will use the current TCG-only MCE injection path for KVM as well, and
then this read-modify-write of the target VCPU state has to be performed
synchronously in the corresponding thread.

Signed-off-by: Jan Kiszka <>...

b7680cb6 03/13/2011 04:44 pm Jan Kiszka

Refactor thread retrieval and check

We have qemu_cpu_self and qemu_thread_self. The latter is retrieving the
current thread, the former is checking for equality (using CPUState). We
also have qemu_thread_equal which is only used like qemu_cpu_self.

This refactors the interfaces, creating qemu_cpu_is_self and...

eda48c34 03/13/2011 04:44 pm Paolo Bonzini

inline cpu_halted into sole caller

All implementations are now the same, and there is only one caller,
so inline the function there.

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Blue Swirl <>