• Yinghai Lu's avatar
    EISA/PCI: Init EISA early, before PNP · c5fb301a
    Yinghai Lu authored
    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: default avatarMatthew Whitehead <mwhitehe@redhat.com>
    Tested-by: default avatarMatthew Whitehead <mwhitehe@redhat.com>
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org
    c5fb301a
pci_eisa.c 2.41 KB