I noticed this problem, if certian devices are disabled (like onboard vga for example). The other enabled devices try to use 0xfec00000 for memory allocation, causing APIC to fail. I think the above code looks good :-) Have you done up a patch?
yes, I just made a patch:
Index: src/devices/device.c =================================================================== --- src/devices/device.c (revision 3254) +++ src/devices/device.c (working copy) @@ -305,11 +305,6 @@ * return them. Some resources must be set even when they have * no size. PCI bridge resources are a good example of this. */ - /* Propogate the resource alignment to the bridge register */ - if (resource->align > bridge->align) { - bridge->align = resource->align; - } - /* Make certain we are dealing with a good minimum size */ size = resource->size; align = resource->align; @@ -317,6 +312,11 @@ align = min_align; }
+ /* Propogate the resource alignment to the bridge register */ + if (align > bridge->align) { + bridge->align = align; + } + if (resource->flags & IORESOURCE_FIXED) { continue; }
First time to send an attachment, not sure if it works, so I pasted the code in this mail ;-)