On Fri, 25 May 2018 13:37:04 +0200 David Hildenbrand <da...@redhat.com> wrote:
> 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. > > Signed-off-by: David Hildenbrand <da...@redhat.com> > --- > hw/s390x/tod-qemu.c | 45 ++++++++++++++++++++++++++++++++++---- > hw/s390x/tod.c | 11 ++++++++++ > include/hw/s390x/tod.h | 19 ++++++++++++++++ > target/s390x/cpu.c | 8 +------ > target/s390x/cpu.h | 6 ++++- > target/s390x/internal.h | 15 ------------- > target/s390x/misc_helper.c | 32 ++++++++++++++++++++++----- > 7 files changed, 103 insertions(+), 33 deletions(-) > diff --git a/include/hw/s390x/tod.h b/include/hw/s390x/tod.h > index 43ed71600f..5491245b86 100644 > --- a/include/hw/s390x/tod.h > +++ b/include/hw/s390x/tod.h > @@ -30,6 +30,9 @@ typedef struct S390TOD { > typedef struct S390TODState { > /* private */ > DeviceState parent_obj; > + > + /* unused by KVM implementation */ > + S390TOD base; Does this need some kind of migration handling? > } S390TODState; > > typedef struct S390TODClass {