s390x/tcg: properly implement the TOD
commit7de3b1cdc67dcb572c1761c2051252e91a438b22
authorDavid Hildenbrand <david@redhat.com>
Wed, 27 Jun 2018 13:44:06 +0000 (27 15:44 +0200)
committerCornelia Huck <cohuck@redhat.com>
Mon, 2 Jul 2018 08:37:38 +0000 (2 10:37 +0200)
tree0c3045416a75bd11ecc4eac3c2743bea454b1cb1
parentf777b20544fe5db3de179a83374cbf9f1e454427
s390x/tcg: properly implement the TOD

Right now, each CPU has its own TOD. Especially, the TOD will differ
based on creation time of a CPU - e.g. when hotplugging a CPU the times
will differ quite a lot, resulting in stall warnings in the guest.

Let's use a single TOD by implementing our new TOD device. Prepare it
for TOD-clock epoch extension.

Most importantly, whenever we set the TOD, we have to update the CKC
timer.

Introduce "tcg_s390x.h" just like "kvm_s390x.h" for tcg specific
function declarations that should not go into cpu.h.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20180627134410.4901-6-david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
hw/s390x/tod-qemu.c
hw/s390x/tod.c
include/hw/s390x/tod.h
target/s390x/cpu.c
target/s390x/cpu.h
target/s390x/internal.h
target/s390x/misc_helper.c
target/s390x/tcg_s390x.h [new file with mode: 0644]