diff options
author | Corey Minyard <cminyard@mvista.com> | 2018-02-15 16:58:26 -0600 |
---|---|---|
committer | Corey Minyard <cminyard@mvista.com> | 2018-03-13 06:58:47 -0500 |
commit | bc48fa1b9d3b04106055b27078da824cd209865a (patch) | |
tree | 68b48c746f9291aeb10600a6c777b7eec38d51d3 /drivers/char | |
parent | 4876234acc5441e325f262eec48672ee7f4a0cc6 (diff) | |
download | lwn-bc48fa1b9d3b04106055b27078da824cd209865a.tar.gz lwn-bc48fa1b9d3b04106055b27078da824cd209865a.zip |
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 <chiu@endlessm.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Tested-by: Daniel Drake <drake@endlessm.com>
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/ipmi/ipmi_si_pci.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/char/ipmi/ipmi_si_pci.c b/drivers/char/ipmi/ipmi_si_pci.c index b1c055540b26..f54ca6869ed2 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"); |