On Mon, Mar 11, 2019 at 04:31:11PM +0300, Sergey Miroshnichenko wrote:
> Allow matching them to non-prefetchable windows, as it is done for movable
> resources.

Please make the commit log complete in itself, without requiring the
subject.  It's OK if you have to repeat the subject.

IIUC, this is actually a bug fix and is not strictly related to
movable resources.  We should be able to have a IORESOURCE_PCI_FIXED
prefetchable BAR in a non-prefetchable window.

I suppose movable windows exposes this case because as currently
implemented, it marks many more BARs as IORESOURCE_PCI_FIXED.  I think
we should use something other than IORESOURCE_PCI_FIXED for that case,
so maybe this patch will end up being unnecessary?

> Signed-off-by: Sergey Miroshnichenko <s.miroshniche...@yadro.com>
> ---
>  drivers/pci/setup-bus.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
> index 3644feb13179..be7d4e6d7b65 100644
> --- a/drivers/pci/setup-bus.c
> +++ b/drivers/pci/setup-bus.c
> @@ -1301,15 +1301,20 @@ static void assign_fixed_resource_on_bus(struct 
> pci_bus *b, struct resource *r)
>  {
>       int i;
>       struct resource *parent_r;
> -     unsigned long mask = IORESOURCE_IO | IORESOURCE_MEM |
> -                          IORESOURCE_PREFETCH;
> +     unsigned long mask = IORESOURCE_TYPE_BITS;
>  
>       pci_bus_for_each_resource(b, parent_r, i) {
>               if (!parent_r)
>                       continue;
>  
> -             if ((r->flags & mask) == (parent_r->flags & mask) &&
> -                 resource_contains(parent_r, r))
> +             if ((r->flags & mask) != (parent_r->flags & mask))
> +                     continue;
> +
> +             if (parent_r->flags & IORESOURCE_PREFETCH &&
> +                 !(r->flags & IORESOURCE_PREFETCH))
> +                     continue;
> +
> +             if (resource_contains(parent_r, r))
>                       request_resource(parent_r, r);
>       }
>  }
> -- 
> 2.20.1
> 

Reply via email to