[coreboot] [PATCH]The resource allocator does not like zero-sized fixed resources

Myles Watson mylesgw at gmail.com
Wed Aug 19 19:08:56 CEST 2009


> 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





More information about the coreboot mailing list