[PATCH] Core-for-CI:ICL_only Disable ACPI idle driver

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

 



There were system hung observed while running i915_pm_rpm test.
FDO https://bugs.freedesktop.org/show_bug.cgi?id=108840
Root cause is believed to due to page fault in ACPI idle (FDO comment 18)
driver, it has been suggested by Daniel to disable ACPI idle
driver for CI system, this patch only meant for ICL.

Cc: martin.peres@xxxxxxxxx
Cc: daniel.vetter@xxxxxxxxx

Signed-off-by: Anshuman Gupta <anshuman.gupta@xxxxxxxxx>
---
 drivers/acpi/processor_driver.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 9d6aff2..6e3ef2d 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -35,6 +35,9 @@
 
 #include <acpi/processor.h>
 
+#include <asm/cpu_device_id.h>
+#include <asm/intel-family.h>
+
 #include "internal.h"
 
 #define ACPI_PROCESSOR_NOTIFY_PERFORMANCE 0x80
@@ -58,6 +61,13 @@ static const struct acpi_device_id processor_device_ids[] = {
 };
 MODULE_DEVICE_TABLE(acpi, processor_device_ids);
 
+#define ICPU(model)	{ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
+static const struct x86_cpu_id intel_cpu_ids[] = {
+	ICPU(INTEL_FAM6_ICELAKE_MOBILE),	/* ICL */
+	{}
+};
+MODULE_DEVICE_TABLE(x86cpu, intel_pmc_core_ids);
+
 static struct device_driver acpi_processor_driver = {
 	.name = "processor",
 	.bus = &cpu_subsys,
@@ -226,6 +236,7 @@ static inline void acpi_pss_perf_exit(struct acpi_processor *pr,
 static int __acpi_processor_start(struct acpi_device *device)
 {
 	struct acpi_processor *pr = acpi_driver_data(device);
+	const struct x86_cpu_id *id;
 	acpi_status status;
 	int result = 0;
 
@@ -239,7 +250,9 @@ static int __acpi_processor_start(struct acpi_device *device)
 	if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS))
 		dev_dbg(&device->dev, "CPPC data invalid or not present\n");
 
-	if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
+	id = x86_match_cpu(intel_cpu_ids);
+	if (!id && (!cpuidle_get_driver() || cpuidle_get_driver() ==
+		&acpi_idle_driver))
 		acpi_processor_power_init(pr);
 
 	result = acpi_pss_perf_init(pr, device);
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux