[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [RFC 0/4] target-ppc: handle KVM timebase migration
From: |
Mark Cave-Ayland |
Subject: |
[Qemu-ppc] [RFC 0/4] target-ppc: handle KVM timebase migration |
Date: |
Thu, 7 Apr 2016 16:23:10 +0100 |
This RFC series follows on from discussions in the "Migrating decrementer"
thread relating to handling migration of the timebase and decrementer
registers for both TCG and KVM. The aim is to provide a consistent virtual
clock when migrating PPC machines TCG-TCG (already handled) and
KVM-KVM with both paused and live VMs in a unified manner for all PPC
machine types.
The existing code to handle timebase migration on PPC has a few issues:
1) It uses cpu_get_host_ticks() which doesn't work correctly on TCG with
different host architectures
2) tb_offset is calculated from the difference in the host clock between
source and destination. Thus if the guest is paused then the resulting
offset is calculated incorrectly since the host clock still runs, regardless
of the state of the virtual clock.
3) Due to a typo in the existing implementation (MIN instead of MAX) then
guest_tb never takes migration_duration_tb into account
Patches 1-2 introduce a new PPCMachineClass and derive all the PPC machine
classes from it, not dissimilar to x86's PCMachineClass.
Patch 3 adds a VM state change hook into PCMachineClass and updates the
tb_offset from the host when the machine (re)starts as discussed in the
thread. Note that it may be possible to add the hook to specific machine
types, however using PPCMachineClass allows all PPC machines to pick up
this functionality automatically.
Patch 4 temporarily disables the existing timebase migration code to allow
testing.
Note that this has only been compile-tested on x86 as I have no KVM PPC
hardware and so it's really an RFC to determine whether this approach can
work, and to invite testing and discussion from existing KVM PPC users.
Signed-off-by: Mark Cave-Ayland <address@hidden>
Mark Cave-Ayland (4):
target-ppc: introduce PPCMachineClass and PPCMachineState
target-ppc: derive all PPC machine classes to have PPCMachineClass as
their superclass
target-ppc: synchronise tb_offset with KVM host on machine start
target-ppc: hack to remove existing timebase migration code for
testing
hw/ppc/e500plat.c | 7 +++-
hw/ppc/mac_newworld.c | 17 ++------
hw/ppc/mac_oldworld.c | 6 ++-
hw/ppc/mpc8544ds.c | 7 +++-
hw/ppc/ppc.c | 100 +++++++++++++++++++++++++++++------------------
hw/ppc/ppc405_boards.c | 28 +++----------
hw/ppc/ppc440_bamboo.c | 6 ++-
hw/ppc/prep.c | 6 ++-
hw/ppc/spapr.c | 2 +-
hw/ppc/virtex_ml507.c | 6 ++-
include/hw/ppc/ppc.h | 35 +++++++++++++++++
include/qemu/typedefs.h | 2 +
12 files changed, 135 insertions(+), 87 deletions(-)
--
1.7.10.4
- [Qemu-ppc] [RFC 0/4] target-ppc: handle KVM timebase migration,
Mark Cave-Ayland <=
- [Qemu-ppc] [RFC 3/4] target-ppc: synchronise tb_offset with KVM host on machine start, Mark Cave-Ayland, 2016/04/07
- [Qemu-ppc] [RFC 2/4] target-ppc: derive all PPC machine classes to have PPCMachineClass as their superclass, Mark Cave-Ayland, 2016/04/07
- [Qemu-ppc] [RFC 4/4] target-ppc: hack to remove existing timebase migration code for testing, Mark Cave-Ayland, 2016/04/07
- [Qemu-ppc] [RFC 1/4] target-ppc: introduce PPCMachineClass and PPCMachineState, Mark Cave-Ayland, 2016/04/07
- Re: [Qemu-ppc] [RFC 0/4] target-ppc: handle KVM timebase migration, David Gibson, 2016/04/15