Re: Linux 2.6.27-rc5: System boot regression caused by commit a2bd7274b47124d2fc4dfdb8c0591f545ba749dd

Yinghai Lu
2008-08-31T00:50:29Z

On Sat, Aug 30, 2008 at 5:27 PM, Yinghai Lu <yhlu.kernel@gmail.com> wrote:
> On Sat, Aug 30, 2008 at 4:39 PM, Yinghai Lu <yhlu.kernel@gmail.com> wrote:
>> On Sat, Aug 30, 2008 at 4:28 PM, Linus Torvalds
>> <torvalds@linux-foundation.org> wrote:
>>>
>>>
>>> On Sat, 30 Aug 2008, Yinghai Lu wrote:
>>>>
>>>> wait, THAT BAR is 64BIT capable, So kernel should assign 64bit range to it...
>>>> it request_resource fails...
>>>
>>> I don't think we've ever done new allocations in 64 bits. Although looking
>>> for it, I have to admit that I don't see what would limit us right now.
>>> There used to be some paths that weren't 64-bit clean, but I think we
>>> fixed all of those.
>>
>> would be some corner case...
>>
>
> pci_assign_unassigned_resources==>pci_bus_assign_resources==>pbus_assign_resources_sorted(struct
>
> static void pbus_assign_resources_sorted(struct pci_bus *bus)
> {
> struct pci_dev *dev;
> struct resource *res;
> struct resource_list head, *list, *tmp;
> int idx;
>
> head.next = NULL;
> list_for_each_entry(dev, &bus->devices, bus_list) {
> u16 class = dev->class >> 8;
>
> /* Don't touch classless devices or host bridges or ioapics. */
> if (class == PCI_CLASS_NOT_DEFINED ||
> class == PCI_CLASS_BRIDGE_HOST)
> continue;
>
>
> it skips the host bridge...

what's story for not touching host bridges?

YH