diff options
Diffstat (limited to 'drivers/platform/x86/intel_ips.c')
| -rw-r--r-- | drivers/platform/x86/intel_ips.c | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c index 0ffdb3cde2b..9af4257d490 100644 --- a/drivers/platform/x86/intel_ips.c +++ b/drivers/platform/x86/intel_ips.c @@ -72,6 +72,7 @@  #include <linux/string.h>  #include <linux/tick.h>  #include <linux/timer.h> +#include <linux/dmi.h>  #include <drm/i915_drm.h>  #include <asm/msr.h>  #include <asm/processor.h> @@ -1485,6 +1486,24 @@ static DEFINE_PCI_DEVICE_TABLE(ips_id_table) = {  MODULE_DEVICE_TABLE(pci, ips_id_table); +static int ips_blacklist_callback(const struct dmi_system_id *id) +{ +	pr_info("Blacklisted intel_ips for %s\n", id->ident); +	return 1; +} + +static const struct dmi_system_id ips_blacklist[] = { +	{ +		.callback = ips_blacklist_callback, +		.ident = "HP ProBook", +		.matches = { +			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), +			DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"), +		}, +	}, +	{ }	/* terminating entry */ +}; +  static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)  {  	u64 platform_info; @@ -1494,6 +1513,9 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id)  	u16 htshi, trc, trc_required_mask;  	u8 tse; +	if (dmi_check_system(ips_blacklist)) +		return -ENODEV; +  	ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL);  	if (!ips)  		return -ENOMEM;  |