Skip to content

Commit 2dbfb3f

Browse files
roygerjwrdegoede
authored andcommitted
platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when virtualized
The current logic in the Intel PMC driver will forcefully attach it when detecting any CPU on the intel_pmc_core_platform_ids array, even if the matching ACPI device is not present. There's no checking in pmc_core_probe() to assert that the PMC device is present, and hence on virtualized environments the PMC device probes successfully, even if the underlying registers are not present. Before commit 21ae435 ("platform/x86: intel_pmc_core: Substitute PCI with CPUID enumeration") the driver would check for the presence of a specific PCI device, and that prevented the driver from attaching when running virtualized. Fix by only forcefully attaching the PMC device when not running virtualized. Note that virtualized platforms can still get the device to load if the appropriate ACPI device is present on the tables provided to the VM. Make an exception for the Xen initial domain, which does have full hardware access, and hence can attach to the PMC if present. Fixes: 21ae435 ("platform/x86: intel_pmc_core: Substitute PCI with CPUID enumeration") Signed-off-by: Roger Pau Monné <[email protected]> Acked-by: David E. Box <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Hans de Goede <[email protected]> Signed-off-by: Hans de Goede <[email protected]>
1 parent 53e16a6 commit 2dbfb3f

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

drivers/platform/x86/intel/pmc/pltdrv.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include <asm/cpu_device_id.h>
1919
#include <asm/intel-family.h>
2020

21+
#include <xen/xen.h>
22+
2123
static void intel_pmc_core_release(struct device *dev)
2224
{
2325
kfree(dev);
@@ -53,6 +55,13 @@ static int __init pmc_core_platform_init(void)
5355
if (acpi_dev_present("INT33A1", NULL, -1))
5456
return -ENODEV;
5557

58+
/*
59+
* Skip forcefully attaching the device for VMs. Make an exception for
60+
* Xen dom0, which does have full hardware access.
61+
*/
62+
if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR) && !xen_initial_domain())
63+
return -ENODEV;
64+
5665
if (!x86_match_cpu(intel_pmc_core_platform_ids))
5766
return -ENODEV;
5867

0 commit comments

Comments
 (0)