linux/arch/powerpc
Paul Mackerras 5855564c8a KVM: PPC: Book3S HV: Enable migration of decrementer register
This adds a register identifier for use with the one_reg interface
to allow the decrementer expiry time to be read and written by
userspace.  The decrementer expiry time is in guest timebase units
and is equal to the sum of the decrementer and the guest timebase.
(The expiry time is used rather than the decrementer value itself
because the expiry time is not constantly changing, though the
decrementer value is, while the guest vcpu is not running.)

Without this, a guest vcpu migrated to a new host will see its
decrementer set to some random value.  On POWER8 and earlier, the
decrementer is 32 bits wide and counts down at 512MHz, so the
guest vcpu will potentially see no decrementer interrupts for up
to about 4 seconds, which will lead to a stall.  With POWER9, the
decrementer is now 56 bits side, so the stall can be much longer
(up to 2.23 years) and more noticeable.

To help work around the problem in cases where userspace has not been
updated to migrate the decrementer expiry time, we now set the
default decrementer expiry at vcpu creation time to the current time
rather than the maximum possible value.  This should mean an
immediate decrementer interrupt when a migrated vcpu starts
running.  In cases where the decrementer is 32 bits wide and more
than 4 seconds elapse between the creation of the vcpu and when it
first runs, the decrementer would have wrapped around to positive
values and there may still be a stall - but this is no worse than
the current situation.  In the large-decrementer case, we are sure
to get an immediate decrementer interrupt (assuming the time from
vcpu creation to first run is less than 2.23 years) and we thus
avoid a very long stall.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2018-01-16 11:54:45 +11:00
..
boot powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
configs powerpc/configs: Enable I2C_CHARDEV for pseries and powernv 2017-10-22 12:08:31 +02:00
crypto License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
include KVM: PPC: Book3S HV: Enable migration of decrementer register 2018-01-16 11:54:45 +11:00
kernel First batch of KVM changes for 4.15 2017-11-16 13:00:24 -08:00
kvm KVM: PPC: Book3S HV: Enable migration of decrementer register 2018-01-16 11:54:45 +11:00
lib powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
math-emu License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mm powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
net powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
oprofile powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
perf powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
platforms powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
purgatory License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sysdev powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
tools License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xmon powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
Kconfig powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
Kconfig.debug powerpc updates for 4.15 2017-11-16 12:47:46 -08:00
Makefile Merge branch 'fixes' into next 2017-08-23 22:20:10 +10:00
Makefile.postlink License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00