Skip to content

Commit

Permalink
x86/jailhouse: Enable PMTIMER
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Thomas Gleixner <[email protected]>
Cc: [email protected]
Link: https://lkml.kernel.org/r/6d5c3fadd801eb3fba9510e2d3db14a9c404a1a0.1511770314.git.jan.kiszka@siemens.com
  • Loading branch information
jan-kiszka authored and KAGA-KOKO committed Jan 14, 2018
1 parent 11c8dc4 commit 87e65d0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 16 deletions.
1 change: 1 addition & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -799,6 +799,7 @@ config PARAVIRT_CLOCK
config JAILHOUSE_GUEST
bool "Jailhouse non-root cell support"
depends on X86_64
select X86_PM_TIMER
---help---
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
Expand Down
4 changes: 4 additions & 0 deletions arch/x86/kernel/jailhouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* Jan Kiszka <[email protected]>
*/

#include <linux/acpi_pmtmr.h>
#include <linux/kernel.h>
#include <asm/apic.h>
#include <asm/cpu.h>
Expand Down Expand Up @@ -91,6 +92,9 @@ static void __init jailhouse_init_platform(void)

if (setup_data.compatible_version > JAILHOUSE_SETUP_REQUIRED_VERSION)
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)
Expand Down
32 changes: 16 additions & 16 deletions drivers/acpi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -361,22 +361,6 @@ config ACPI_PCI_SLOT
i.e., segment/bus/device/function tuples, with physical slots in
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
bool "Container and Module Devices"
default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
Expand Down Expand Up @@ -564,3 +548,19 @@ config TPS68470_PMIC_OPREGION
using this, are probed.

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.

0 comments on commit 87e65d0

Please sign in to comment.