On Wed, Aug 19, 2009 at 11:32 AM, Patrick Georgi<[email protected]> wrote:
> Am 19.08.2009 19:08, schrieb Myles Watson:
>>
>> 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.
>>
>
> I'd love to get rid of the rom_address thing once we drop the pre-cbfs way
> of doing things (which will take quite some time, still), but I'm not sure
> if there isn't some need for it left.
OK.
>> What other fixed resources have 0 size, especially on Kontron? I'd like
>> to
>> fix the root cause.
>>
>
> That's the only one on Kontron. I just wanted to have proper behaviour even
> with such weird entries.
Let's add something like this patch. I'm happy to have the wording
changed, but I think it's important that we don't silently fail to
avoid fixed resources.
Signed-off-by: Myles Watson <[email protected]>
Thanks,
Myles
Index: svn/src/devices/device.c
===================================================================
--- svn.orig/src/devices/device.c
+++ svn/src/devices/device.c
@@ -556,8 +556,12 @@ static void constrain_resources(struct d
/* Constrain limits based on the fixed resources of this device. */
for (i = 0; i < dev->resources; i++) {
res = &dev->resource[i];
- if (!res->size)
+ if (!res->size) {
+ /* It makes no sense to have 0-sized, fixed resources.*/
+ printk_err("skipping %...@%lx fixed resource, size=0!\n",
+ dev_path(dev), res->index);
continue;
+ }
if (!(res->flags & IORESOURCE_FIXED))
continue;
Index: svn/src/devices/pci_device.c
===================================================================
--- svn.orig/src/devices/pci_device.c
+++ svn/src/devices/pci_device.c
@@ -332,6 +332,8 @@ static void pci_get_rom_resource(struct
* inited by driver_pci_onboard_ops::enable_dev() */
if ((dev->on_mainboard) && (dev->rom_address != 0)) {
resource->base = dev->rom_address;
+ /* The resource allocator needs the size to be non-zero. */
+ resource->size = 0x100;
resource->flags |= IORESOURCE_MEM | IORESOURCE_READONLY |
IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
}
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot