The TOD in TCG is not handled correctly: - each CPU has its own TOD based on CPU creation time vs. a system TOD - TOD is not migrated - TOD timer is not restarted during migration - CKC interrupts/TOD timer is not cleared when resetting the CKC
This (and a cpu creation problem for single threaded TCG) currently made CPU hotplug under TCG not work. Now it's working :) The fist patch also refactors TOD handling for KVM (moved into a new TOD device). The cpu timer is in a similar bad shape, but this will require more work :( David Hildenbrand (7): s390x/tod: factor out TOD into separate device s390x/tcg: drop tod_basetime s390x/tcg: properly implement the TOD s390x/tcg: SET CLOCK COMPARATOR can clear CKC interrupts s390x/tcg: implement SET CLOCK s390x/tcg: rearm the CKC timer during migration s390x/tcg: fix CPU hotplug with single-threaded TCG hw/s390x/Makefile.objs | 3 + hw/s390x/s390-virtio-ccw.c | 57 +--------------- hw/s390x/tod-kvm.c | 64 ++++++++++++++++++ hw/s390x/tod-qemu.c | 84 ++++++++++++++++++++++++ hw/s390x/tod.c | 131 +++++++++++++++++++++++++++++++++++++ include/hw/s390x/tod.h | 65 ++++++++++++++++++ target/s390x/cpu.c | 52 ++------------- target/s390x/cpu.h | 9 +-- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 3 +- target/s390x/internal.h | 15 ----- target/s390x/kvm_s390x.h | 2 + target/s390x/machine.c | 7 ++ target/s390x/misc_helper.c | 59 +++++++++++++++-- target/s390x/translate.c | 9 +++ 15 files changed, 434 insertions(+), 127 deletions(-) create mode 100644 hw/s390x/tod-kvm.c create mode 100644 hw/s390x/tod-qemu.c create mode 100644 hw/s390x/tod.c create mode 100644 include/hw/s390x/tod.h -- 2.17.0