Am 19.08.2009 18:18, schrieb Myles Watson:
The problem is that they have bogus limits, not that they have no size.
A zero-sized resource with proper limits still fails. See:
/* Is it already outside the limits? */ if (res->size && (((res->base + res->size -1) < lim->base) || (res->base
lim->limit)))
continue;
You're right. It's obvious that I haven't been thinking about this much lately. So we can commit your patch that ignores fixed resources of size 0.
The example you gave in src/devices/pci_device.c was for the old way of specifying PCI ROM locations. Now that CBFS is going mainstream, that should disappear. If it doesn't, I think it should have a size. Even 1 would work, since no Option ROM can be smaller than that.
What other fixed resources have 0 size, especially on Kontron? I'd like to fix the root cause.
A resource with size == 0 is never "outside the limits". The code after these lines assumes that any resource that passes this test is inside the limits.
Even if you commit this fix, you should fix the incorrect limits. They are two different problems.
A fixed resource is supposed to have base+size=limit, with base and size of the right alignment and granularity, right?
No. limit = architectural limit. 0xffff or 0xffffffff usually.
Thanks, Myles