aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-06-25 09:07:17 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-07-19 11:58:21 -0400
commit19b0759e73cdf97db6f36ac04bbd37d3feb0657b (patch)
tree5dae456e361e0511038579acbde77529f7e818c3
parent64428b015e0bba23744e2a64a011be9738d05356 (diff)
intel_ips: blacklist HP ProBook laptops
commit 88ca518b0bb4161e5f20f8a1d9cc477cae294e54 upstream. intel_ips driver spews the warning message "ME failed to update for more than 1s, likely hung" at each second endlessly on HP ProBook laptops with IronLake. As this has never worked, better to blacklist the driver for now. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/platform/x86/intel_ips.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
index 5ffe7c39814..e66bbba9929 100644
--- a/drivers/platform/x86/intel_ips.c
+++ b/drivers/platform/x86/intel_ips.c
@@ -72,6 +72,7 @@
72#include <linux/string.h> 72#include <linux/string.h>
73#include <linux/tick.h> 73#include <linux/tick.h>
74#include <linux/timer.h> 74#include <linux/timer.h>
75#include <linux/dmi.h>
75#include <drm/i915_drm.h> 76#include <drm/i915_drm.h>
76#include <asm/msr.h> 77#include <asm/msr.h>
77#include <asm/processor.h> 78#include <asm/processor.h>
@@ -1505,6 +1506,24 @@ static DEFINE_PCI_DEVICE_TABLE(ips_id_table) = {
1505 1506
1506MODULE_DEVICE_TABLE(pci, ips_id_table); 1507MODULE_DEVICE_TABLE(pci, ips_id_table);
1507 1508
1509static int ips_blacklist_callback(const struct dmi_system_id *id)
1510{
1511 pr_info("Blacklisted intel_ips for %s\n", id->ident);
1512 return 1;
1513}
1514
1515static const struct dmi_system_id ips_blacklist[] = {
1516 {
1517 .callback = ips_blacklist_callback,
1518 .ident = "HP ProBook",
1519 .matches = {
1520 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
1521 DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"),
1522 },
1523 },
1524 { } /* terminating entry */
1525};
1526
1508static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) 1527static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)
1509{ 1528{
1510 u64 platform_info; 1529 u64 platform_info;
@@ -1514,6 +1533,9 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)
1514 u16 htshi, trc, trc_required_mask; 1533 u16 htshi, trc, trc_required_mask;
1515 u8 tse; 1534 u8 tse;
1516 1535
1536 if (dmi_check_system(ips_blacklist))
1537 return -ENODEV;
1538
1517 ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL); 1539 ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL);
1518 if (!ips) 1540 if (!ips)
1519 return -ENOMEM; 1541 return -ENOMEM;