From: Corey Minyard Date: Thu, 15 Feb 2018 22:58:26 +0000 (-0600) Subject: ipmi:pci: Blacklist a Realtek "IPMI" device X-Git-Tag: v4.17-rc1~151^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bc48fa1b9d3b04106055b27078da824cd209865a;p=thirdparty%2Fkernel%2Flinux.git ipmi:pci: Blacklist a Realtek "IPMI" device Realtek has some sort of "Virtual" IPMI device on the PCI bus as a KCS controller, but whatever it is, it's not one. Ignore it if seen. Reported-by: Chris Chiu Signed-off-by: Corey Minyard Tested-by: Daniel Drake --- diff --git a/drivers/char/ipmi/ipmi_si_pci.c b/drivers/char/ipmi/ipmi_si_pci.c index b1c055540b260..f54ca6869ed2c 100644 --- a/drivers/char/ipmi/ipmi_si_pci.c +++ b/drivers/char/ipmi/ipmi_si_pci.c @@ -62,12 +62,24 @@ static int ipmi_pci_probe_regspacing(struct si_sm_io *io) return DEFAULT_REGSPACING; } +static struct pci_device_id ipmi_pci_blacklist[] = { + /* + * This is a "Virtual IPMI device", whatever that is. It appears + * as a KCS device by the class, but it is not one. + */ + { PCI_VDEVICE(REALTEK, 0x816c) }, + { 0, } +}; + static int ipmi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { int rv; struct si_sm_io io; + if (pci_match_id(ipmi_pci_blacklist, pdev)) + return -ENODEV; + memset(&io, 0, sizeof(io)); io.addr_source = SI_PCI; dev_info(&pdev->dev, "probing via PCI");