Patch "platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when virtualized" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when virtualized

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     platform-x86-intel-pmc-don-t-unconditionally-attach-.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit ca04541cd816a689e3f093ffbec3ac5f1c41c4f9
Author: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Date:   Thu Nov 10 17:31:44 2022 +0100

    platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when virtualized
    
    [ Upstream commit 2dbfb3f33350e1e868d3d7ed4c176d8777150878 ]
    
    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 21ae43570940 ("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: 21ae43570940 ("platform/x86: intel_pmc_core: Substitute PCI with CPUID enumeration")
    Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Acked-by: David E. Box <david.e.box@xxxxxxxxxxxxxxx>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20221110163145.80374-1-roger.pau@xxxxxxxxxx
    Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/platform/x86/intel/pmc/pltdrv.c b/drivers/platform/x86/intel/pmc/pltdrv.c
index 15ca8afdd973..ddfba38c2104 100644
--- a/drivers/platform/x86/intel/pmc/pltdrv.c
+++ b/drivers/platform/x86/intel/pmc/pltdrv.c
@@ -18,6 +18,8 @@
 #include <asm/cpu_device_id.h>
 #include <asm/intel-family.h>
 
+#include <xen/xen.h>
+
 static void intel_pmc_core_release(struct device *dev)
 {
 	kfree(dev);
@@ -53,6 +55,13 @@ static int __init pmc_core_platform_init(void)
 	if (acpi_dev_present("INT33A1", NULL, -1))
 		return -ENODEV;
 
+	/*
+	 * Skip forcefully attaching the device for VMs. Make an exception for
+	 * Xen dom0, which does have full hardware access.
+	 */
+	if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR) && !xen_initial_domain())
+		return -ENODEV;
+
 	if (!x86_match_cpu(intel_pmc_core_platform_ids))
 		return -ENODEV;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux