Re: [patch 2/7] x86/pci: Abort if legacy init fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[+cc linux-pci]

s|x86/pci: |x86/PCI: | for these three, to follow previous convention.

On Thu, Mar 16, 2017 at 10:50:04PM +0100, Thomas Gleixner wrote:
> If the legacy pci init fails, then there are no pci config space accesors
> available, but the code continues and tries to scan the busses, which fails
> due to the lack of config space accessors.

s/pci/PCI/ above.

> Return right away, if the last init fallback fails.
> 
> Switch the few printks to pr_info while at it.
> 
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
>  arch/x86/pci/legacy.c |   18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> --- a/arch/x86/pci/legacy.c
> +++ b/arch/x86/pci/legacy.c
> @@ -24,12 +24,10 @@ static void pcibios_fixup_peer_bridges(v
>  
>  int __init pci_legacy_init(void)
>  {
> -	if (!raw_pci_ops) {
> -		printk("PCI: System does not support PCI\n");
> -		return 0;
> -	}
> +	if (!raw_pci_ops)
> +		return 1;
>  
> -	printk("PCI: Probing PCI hardware\n");
> +	pr_info("PCI: Probing PCI hardware\n");
>  	pcibios_scan_root(0);
>  	return 0;
>  }
> @@ -46,7 +44,7 @@ void pcibios_scan_specific_bus(int busn)
>  		if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) &&
>  		    l != 0x0000 && l != 0xffff) {
>  			DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l);
> -			printk(KERN_INFO "PCI: Discovered peer bus %02x\n", busn);
> +			pr_info("PCI: Discovered peer bus %02x\n", busn);
>  			pcibios_scan_root(busn);
>  			return;
>  		}
> @@ -60,8 +58,12 @@ static int __init pci_subsys_init(void)
>  	 * The init function returns an non zero value when
>  	 * pci_legacy_init should be invoked.
>  	 */
> -	if (x86_init.pci.init())
> -		pci_legacy_init();
> +	if (x86_init.pci.init()) {
> +		if (pci_legacy_init()) {
> +			pr_info("PCI: System does not support PCI\n");
> +			return -ENODEV;
> +		}
> +	}
>  
>  	pcibios_fixup_peer_bridges();
>  	x86_init.pci.init_irq();
> 
> 



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux