x86/jailhouse: Enable PMTIMER

Jailhouse exposes the PMTIMER as only reference clock to all cells. Pick
up its address from the setup data. Allow to enable the Linux support of
it by relaxing its strict dependency on ACPI.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: jailhouse-dev@googlegroups.com
Link: https://lkml.kernel.org/r/6d5c3fadd801eb3fba9510e2d3db14a9c404a1a0.1511770314.git.jan.kiszka@siemens.com
This commit is contained in:
Jan Kiszka 2017-11-27 09:11:48 +01:00 committed by Thomas Gleixner
parent 11c8dc419b
commit 87e65d05bb
3 changed files with 21 additions and 16 deletions

View File

@ -799,6 +799,7 @@ config PARAVIRT_CLOCK
config JAILHOUSE_GUEST config JAILHOUSE_GUEST
bool "Jailhouse non-root cell support" bool "Jailhouse non-root cell support"
depends on X86_64 depends on X86_64
select X86_PM_TIMER
---help--- ---help---
This option allows to run Linux as guest in a Jailhouse non-root This option allows to run Linux as guest in a Jailhouse non-root
cell. You can leave this option disabled if you only want to start cell. You can leave this option disabled if you only want to start

View File

@ -8,6 +8,7 @@
* Jan Kiszka <jan.kiszka@siemens.com> * Jan Kiszka <jan.kiszka@siemens.com>
*/ */
#include <linux/acpi_pmtmr.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/cpu.h> #include <asm/cpu.h>
@ -91,6 +92,9 @@ static void __init jailhouse_init_platform(void)
if (setup_data.compatible_version > JAILHOUSE_SETUP_REQUIRED_VERSION) if (setup_data.compatible_version > JAILHOUSE_SETUP_REQUIRED_VERSION)
panic("Jailhouse: Unsupported setup data structure"); panic("Jailhouse: Unsupported setup data structure");
pmtmr_ioport = setup_data.pm_timer_address;
pr_debug("Jailhouse: PM-Timer IO Port: %#x\n", pmtmr_ioport);
} }
bool jailhouse_paravirt(void) bool jailhouse_paravirt(void)

View File

@ -361,22 +361,6 @@ config ACPI_PCI_SLOT
i.e., segment/bus/device/function tuples, with physical slots in i.e., segment/bus/device/function tuples, with physical slots in
the system. If you are unsure, say N. the system. If you are unsure, say N.
config X86_PM_TIMER
bool "Power Management Timer Support" if EXPERT
depends on X86
default y
help
The Power Management Timer is available on all ACPI-capable,
in most cases even if ACPI is unusable or blacklisted.
This timing source is not affected by power management features
like aggressive processor idling, throttling, frequency and/or
voltage scaling, unlike the commonly used Time Stamp Counter
(TSC) timing source.
You should nearly always say Y here because many modern
systems require this timer.
config ACPI_CONTAINER config ACPI_CONTAINER
bool "Container and Module Devices" bool "Container and Module Devices"
default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU) default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
@ -564,3 +548,19 @@ config TPS68470_PMIC_OPREGION
using this, are probed. using this, are probed.
endif # ACPI endif # ACPI
config X86_PM_TIMER
bool "Power Management Timer Support" if EXPERT
depends on X86 && (ACPI || JAILHOUSE_GUEST)
default y
help
The Power Management Timer is available on all ACPI-capable,
in most cases even if ACPI is unusable or blacklisted.
This timing source is not affected by power management features
like aggressive processor idling, throttling, frequency and/or
voltage scaling, unlike the commonly used Time Stamp Counter
(TSC) timing source.
You should nearly always say Y here because many modern
systems require this timer.