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.miroshnichenko@xxxxxxxxx> > --- > 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 >