Statistics
| Branch: | Revision:

root / target-i386 / machine.c @ ea375f9a

History | View | Annotate | Download (13.4 kB)

# Date Author Comment
ea375f9a 03/04/2010 05:29 am Jan Kiszka

KVM: Rework VCPU state writeback API

This grand cleanup drops all reset and vmsave/load related
synchronization points in favor of four(!) generic hooks:

- cpu_synchronize_all_states in qemu_savevm_state_complete
(initial sync from kernel before vmsave)...

acb6685f 12/18/2009 07:26 pm Anthony Liguori

Revert "kvm: x86: Save/restore exception_index"

This reverts commit ebbc8a3d8e76d0402f8a08c10c0f32e24715d41d.

As suggested by Jan Kiszka,

"It was obsoleted by d1793b836f8f123b961c613de1bb1c0c185c84cc and now
saves/restores a useless field."

Signed-off-by: Anthony Liguori <>

31827373 12/18/2009 07:26 pm Jan Kiszka

kvm: x86: Use separate exception_injected CPUState field

Marcelo correctly remarked that there are usage conflicts between QEMU
core code and KVM /wrt exception_index. So spend a separate field and
also save/restore it properly.

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

1a03675d 12/12/2009 03:59 pm Glauber Costa

v2: properly save kvm system time msr registers

Currently, the msrs involved in setting up pvclock are not saved over
migration and/or save/restore. This patch puts their value in special
fields in our CPUState, and deal with them using vmstate.

kvm also has to account for it, by including them in the msr list...

4d6e3ac5 12/12/2009 03:59 pm Jan Kiszka

kvm: x86: Save/restore exception_index

As KVM now makes use of exception_index to keep pending exceptions, we
have to save&restore this field as well.

NOTE: We have to nail the arch-independent exception_index down to a
certain bit width for proper vmstate processing, namely to 32 bit....

a0fb002c 12/03/2009 11:25 pm Jan Kiszka

kvm: x86: Add support for VCPU event states

This patch extends the qemu-kvm state sync logic with support for
KVM_GET/SET_VCPU_EVENTS, giving access to yet missing exception,
interrupt and NMI states.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Anthony Liguori <>

0e607a80 11/17/2009 04:49 pm Jan Kiszka

kvm: x86: Refactor use of interrupt_bitmap

Drop interrupt_bitmap from the cpustate and solely rely on the integer
interupt_injected. This prepares us for the new injected-interrupt
interface, which will deprecate the bitmap, while preserving
compatibility....

d4829d49 10/27/2009 07:28 pm Juan Quintela

vmstate: Add version arg to VMSTATE_SINGLE_TEST()

This allows to define VMSTATE_SINGLE with VMSTATE_SINGLE_TEST
Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

976b2037 10/18/2009 05:51 pm Blue Swirl

x86: add 'static' to please Sparse

Signed-off-by: Blue Swirl <>

1e7fbc6d 10/05/2009 10:01 pm Juan Quintela

x86: fix miss merge

There was a missmerge, and then we got a tail recursive call to cpu_post_load
without case base :)

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

3c8ce630 10/05/2009 05:32 pm Juan Quintela

x86: factor out cpu_get/put_fpreg()

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

0cb892aa 10/05/2009 05:32 pm Juan Quintela

x86: port cpu to vmstate

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

e5cc6429 10/05/2009 05:32 pm Juan Quintela

x86: mcg_cap is never 0

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

66e6d55b 10/05/2009 05:32 pm Juan Quintela

x86: port segments to vmstate

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

c4c38c8c 10/05/2009 05:32 pm Juan Quintela

x86: factor out cpu_pre_save()

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

468f6581 10/05/2009 05:32 pm Juan Quintela

x86: factor out cpu_pre/post_load()

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

fc3b0aa2 10/05/2009 05:32 pm Juan Quintela

x86: factor out cpu_get/put_xmm_reg()

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

216c07c3 10/05/2009 05:32 pm Juan Quintela

x86: factor out cpu_get/put_mttr_var()

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

60a902f1 10/05/2009 05:32 pm Juan Quintela

x86: add fpregs_format_vmstate

Don't even ask, being able to load/save between 64<->80bit floats should be forbidden

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

ac74d0f1 10/05/2009 05:32 pm Juan Quintela

x86: mce_banks always have the same size

mce_banks is always MCE_BANKS_DEF * 4 in size, value never change

CC: Huang Ying <>
Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

496eb021 10/05/2009 05:32 pm Juan Quintela

x86: send mce_banks as an array

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

eb831623 10/05/2009 05:32 pm Juan Quintela

x86: fpuc is uint16_t not unsigned int

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

67b8f419 10/05/2009 05:32 pm Juan Quintela

x86: fpus is uint16_t not unsigned int

We save more that fpus on that 16 bits (fpstt), we need an additional field

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

cdc0c58f 10/05/2009 05:32 pm Juan Quintela

x86: add fptag_vmstate to the state

It is needed to store fptags

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

bfc179b6 10/05/2009 05:32 pm Juan Quintela

x86: add pending_irq_vmstate to the state

It is needed to save the interrupt_bitmap

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

1f76b9b9 10/05/2009 05:32 pm Juan Quintela

x86: hflags is not modified at all, just save it directly

Signed-off-by: Juan Quintela <>
Signed-off-by: Anthony Liguori <>

5ee0ffaa 10/05/2009 05:32 pm Juan Quintela

x86: make a20_mask int32_t

This makes the savevm code correct, and sign extensins gives us exactly
what we need (namely, sign extend to 64 bits when used with 64bit addresess.

Once there, change 0x100000 for 1 << 20, that maks all a20 use the same syntax....

1b050077 10/04/2009 03:46 pm Andre Przywara

target-i386: add RDTSCP support

RDTSCP reads the time stamp counter and atomically also the content
of a 32-bit MSR, which can be freely set by the OS. This allows CPU
local data to be queried by userspace.
Linux uses this to allow a fast implementation of the getcpu()...

4c0960c0 08/28/2009 04:35 am Avi Kivity

kvm: Simplify cpu_synchronize_state()

cpu_synchronize_state() is a little unreadable since the 'modified'
argument isn't self-explanatory. Simplify it by making it always
synchronize the kernel state into qemu, and automatically flush the
registers back to the kernel if they've been synchronized on this...

79c4f6b0 07/10/2009 12:04 am Huang Ying

QEMU: MCE: Add MCE simulation to qemu/tcg

- MCE features are initialized when VCPU is intialized according to CPUID.
- A monitor command "mce" is added to inject a MCE.
- A new interrupt mask: CPU_INTERRUPT_MCE is added to inject the MCE.

aliguori: fix build for linux-user...

6ad8702a 07/02/2009 08:07 pm Jan Kiszka

Use ctz64 in favor of ffsll

Not all host platforms support ffsll.

Signed-off-by: Jan Kiszka <>

059b8b1e 06/29/2009 10:18 pm Jan Kiszka

KVM: x86: Refactor persistent CPU state

This patch aligns the KVM-related layout and encoding of the CPU state
to be saved to disk or migrated with qemu-kvm. The major differences are
reordering of fields and a compressed interrupt_bitmap into a single
number as there can be no more than one pending IRQ at a time....

f8d926e9 05/22/2009 06:50 pm Jan Kiszka

kvm: x86: Save/restore KVM-specific CPU states

Save and restore all so far neglected KVM-specific CPU states. Handling
the TSC stabilizes migration in KVM mode. The interrupt_bitmap and
mp_state are currently unused, but will become relevant for in-kernel...

b0a46a33 05/22/2009 06:50 pm Jan Kiszka

kvm: Add missing bits to support live migration

This patch adds the missing hooks to allow live migration in KVM mode.
It adds proper synchronization before/after saving/restoring the VCPU
states (note: PPC is untested), hooks into
cpu_physical_memory_set_dirty_tracking() to enable dirty memory logging...

f80f9ec9 05/21/2009 04:47 pm Anthony Liguori

Convert machine registration to use module init functions

This cleans up quite a lot of #ifdefs, extern variables, and other ugliness.

Signed-off-by: Anthony Liguori <>

e37630ca 04/22/2009 06:19 pm aliguori

xen: groundwork for xen support (Gerd Hoffmann)

- configure script and build system changes.
- wind up new machine type.
- add xen* command line options.

Signed-off-by: Gerd Hoffmann <>
Signed-off-by: Anthony Liguori <>...

dd5e3b17 01/29/2009 07:02 pm aliguori

MTRR support on x86, part 2 (Carl-Daniel Hailfinger)

Load and save MTRR state together with machine state.

Add support for the MTRRcap MSR which is used by the latest Bochs BIOS
and some operating systems.

Fix a typo in ext2_feature_name.

With this patch, MTRR emulation should be good enough to not trigger any...

01df040b 11/18/2008 11:08 pm aliguori

x86: Debug register emulation (Jan Kiszka)

Built on top of previously enhanced breakpoint/watchpoint support, this
patch adds full debug register emulation for the x86 architecture.

Many corner cases were considered, and the result was successfully
tested inside a Linux guest with gdb, but I won't be surprised if one...

e5ceb244 10/29/2008 04:16 pm aliguori

Fix restore of older snapshots for target-i386 on big endian hosts

A target_ulong may be 64-bit. Passing it to a function expecting a 32-bit
pointer is wrong and unfortunately happens to work for x86. It won't work on
big endian hosts though. Change the code to work properly on all hosts....

b6c4f71f 10/02/2008 10:14 pm blueswir1

Resurrect the safe part of r5274

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5401 c046a42c-6fe2-441c-8c8c-71466251a162

f5049756 09/29/2008 07:09 pm aliguori

Fix save/restore regression introduced by r5318

sysenter_cs is a u32 and is loaded as a u32.

Signed-off-by: Anthony Liguori <>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5351 c046a42c-6fe2-441c-8c8c-71466251a162

2ca83a8d 09/25/2008 11:24 pm blueswir1

Revert r5274 which breaks savevm/loadvm

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5321 c046a42c-6fe2-441c-8c8c-71466251a162

2436b61a 09/25/2008 09:16 pm balrog

SYSENTER/SYSEXIT IA-32e implementation (Alexander Graf).

On Intel CPUs, sysenter and sysexit are valid in 64-bit mode. This patch
makes both 64-bit aware and enables them for Intel CPUs.
Add cpu save/load for 64-bit wide sysenter variables.

Signed-off-by: Alexander Graf <>...

67d8cec3 09/20/2008 11:04 am blueswir1

Add signed versions of save/load functions

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5274 c046a42c-6fe2-441c-8c8c-71466251a162

9656f324 07/01/2008 11:01 pm pbrook

Move interrupt_request and user_mode_only to common cpu state.
Save and restore env->interrupt_request and env->halted.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4817 c046a42c-6fe2-441c-8c8c-71466251a162

5cc1d1e6 06/04/2008 09:29 pm bellard

save more CPU state

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4669 c046a42c-6fe2-441c-8c8c-71466251a162

7caa33f7 05/04/2008 11:11 pm aurel32

Correctly save and restore env->a20_mask now that it is a 64-bit
variable. Noticed by Erik de Castro Lopo.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4334 c046a42c-6fe2-441c-8c8c-71466251a162

8dd3dca3 05/04/2008 04:11 pm aurel32

remove target ifdefs from vl.c

(Glauber Costa)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4327 c046a42c-6fe2-441c-8c8c-71466251a162