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

Reply via email to