diff options
author | Corey Minyard <cminyard@mvista.com> | 2017-11-30 11:06:15 -0600 |
---|---|---|
committer | Corey Minyard <cminyard@mvista.com> | 2017-12-11 07:42:50 -0600 |
commit | 1ac8aa8d0568606485451ea860a6c6c3fad0d42d (patch) | |
tree | e457abb87a23505279f0dd74cf8268d9e9ece03b /drivers/char/ipmi/ipmi_si_pci.c | |
parent | 4f7f5551a760eb0124267be65763008169db7087 (diff) |
ipmi_si: Fix oops with PCI devices
When the IPMI PCI code was split out, some code was consolidated for
setting the io_setup field in the io structure. The PCI code needed
this set before registration to probe register spacing, though, so
restore the old code for that function.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=197999
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Tested-by: Meelis Roos <mroos@linux.ee>
Diffstat (limited to 'drivers/char/ipmi/ipmi_si_pci.c')
-rw-r--r-- | drivers/char/ipmi/ipmi_si_pci.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/ipmi/ipmi_si_pci.c b/drivers/char/ipmi/ipmi_si_pci.c index 99771f5cad07..27dd11c49d21 100644 --- a/drivers/char/ipmi/ipmi_si_pci.c +++ b/drivers/char/ipmi/ipmi_si_pci.c @@ -103,10 +103,13 @@ static int ipmi_pci_probe(struct pci_dev *pdev, io.addr_source_cleanup = ipmi_pci_cleanup; io.addr_source_data = pdev; - if (pci_resource_flags(pdev, 0) & IORESOURCE_IO) + if (pci_resource_flags(pdev, 0) & IORESOURCE_IO) { io.addr_type = IPMI_IO_ADDR_SPACE; - else + io.io_setup = ipmi_si_port_setup; + } else { io.addr_type = IPMI_MEM_ADDR_SPACE; + io.io_setup = ipmi_si_mem_setup; + } io.addr_data = pci_resource_start(pdev, 0); io.regspacing = ipmi_pci_probe_regspacing(&io); |