Re: [PATCH 9/9] pci: set PCI_PREF_RANGE_TYPE_64 in pci_bridge_check_ranges

Alex Chiang
2010-01-21T21:32:29Z

* Yinghai Lu <yinghai@kernel.org>:
> make pci_bridge_check_ranges() to store the
> PCI_PREF_RANGE_TYPE_64 in addition to IORESOURCE_MEM_64. just
> like pci_read_bridge_bases()
>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> ---
> drivers/pci/setup-bus.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
> index a9c4f9e..8fafe73 100644
> --- a/drivers/pci/setup-bus.c
> +++ b/drivers/pci/setup-bus.c
> @@ -359,8 +359,11 @@ static void pci_bridge_check_ranges(struct pci_bus *bus)
> }
> if (pmem) {
> b_res[2].flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH;
> - if ((pmem & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64)
> + if ((pmem & PCI_PREF_RANGE_TYPE_MASK) ==
> + PCI_PREF_RANGE_TYPE_64) {
> b_res[2].flags |= IORESOURCE_MEM_64;
> + b_res[2].flags |= PCI_PREF_RANGE_TYPE_64;
> + }
> }

My copy of pci_read_bridge_bases() in jbarnes's linux-next tree
doesn't do anything like that.

284 void __devinit pci_read_bridge_bases(struct pci_bus *child)
285 {
...
369 if (base <= limit) {
370 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
371 IORESOURCE_MEM | IORESOURCE_PREFETCH;
372 if (res->flags & PCI_PREF_RANGE_TYPE_64)
373 res->flags |= IORESOURCE_MEM_64;
374 res->start = base;
375 res->end = limit + 0xfffff;
376 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
377 }

What's going on?

/ac