Re: [PATCH v2] checks: drop warning for missing PCI bridge bus-range

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



On Fri, Apr 20, 2018 at 08:08:23AM -0500, Rob Herring wrote:
> Having a 'bus-range' property for PCI bridges should not be required,
> so remove the warning when missing. There was some confusion with the
> Linux kernel printing a message that no property is present and the OS
> assigned the bus number. This message was intended to be informational
> rather than a warning.
> 
> When the firmware doesn't enumerate the PCI bus and leaves it up to the
> OS to do, then it is perfectly fine for the OS to assign bus numbers
> and bus-range is not necessary.
> 
> There are a few cases where bus-range is needed or useful as Arnd
> Bergmann summarized:
> 
> - Traditionally Linux avoided using multiple PCI domains, but instead
>   configured separate PCI host bridges to have non-overlapping
>   bus ranges so we can present them to user space as a single
>   domain, and run the kernel without CONFIG_PCI_DOMAINS.
>   Specifying the bus ranges this way would and give stable bus
>   numbers across boots when the probe order is not fixed.
> 
> - On certain ARM64 systems, we must only use the first
>   128 bus numbers based on the way the IOMMU identifies
>   the device with truncated bus/dev/fn number. There are probably
>   others like this, with various limitations.
> 
> - To leave some room for hotplugged devices, each slot on
>   a host bridge can in theory get a range of bus numbers
>   that are available when assigning bus numbers at boot time
> 
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>

Merged, thanks.

> ---
> v2:
>  - expand the commit message about when bus-range is used or not
> 
>  checks.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/checks.c b/checks.c
> index 1e6a88c81a99..261c57557ad2 100644
> --- a/checks.c
> +++ b/checks.c
> @@ -792,10 +792,9 @@ static void check_pci_bridge(struct check *c, struct dt_info *dti, struct node *
>  		FAIL(c, dti, node, "incorrect #size-cells for PCI bridge");
>  
>  	prop = get_property(node, "bus-range");
> -	if (!prop) {
> -		FAIL(c, dti, node, "missing bus-range for PCI bridge");
> +	if (!prop)
>  		return;
> -	}
> +
>  	if (prop->val.len != (sizeof(cell_t) * 2)) {
>  		FAIL_PROP(c, dti, node, prop, "value must be 2 cells");
>  		return;

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux