EISA/PCI: Init EISA early, before PNP
authorYinghai Lu <yinghai@kernel.org>
Thu, 28 Mar 2013 04:28:05 +0000 (21:28 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 1 Apr 2013 18:02:05 +0000 (12:02 -0600)
commitc5fb301ae83bec6892e54984e6ec765c47df8e10
treeb8b55517ba6a0ab9076cb5071fbc91becd2c61ec
parent2cfda637e29ce9e3df31b59f64516b2e571cc985
EISA/PCI: Init EISA early, before PNP

Matthew reported kernels fail the pci_eisa probe and are later successful
with the virtual_eisa_root_init force probe without slot0.

The reason for that is: PNP probing is before pci_eisa_init gets called
as pci_eisa_init is called via pci_driver.

pnp 00:0f has 0xc80 - 0xc84 reserved.
[    9.700409] pnp 00:0f: [io  0x0c80-0x0c84]

so eisa_probe will fail from pci_eisa_init
==>eisa_root_register
==>eisa_probe path.
as force_probe is not set in pci_eisa_root, it will bail early when
slot0 is not probed and initialized.

Try to use subsys_initcall_sync instead, and will keep following sequence:
pci_subsys_init
pci_eisa_init_early
pnpacpi_init/isapnp_init

After this patch EISA can be initialized properly, and PNP overlapping
resource will not be reserved.
[   10.104434] system 00:0f: [io  0x0c80-0x0c84] could not be reserved

Reported-by: Matthew Whitehead <mwhitehe@redhat.com>
Tested-by: Matthew Whitehead <mwhitehe@redhat.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org
drivers/eisa/pci_eisa.c