summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMyles Watson <mylesgw@gmail.com>2009-08-19 19:12:39 +0000
committerMyles Watson <mylesgw@gmail.com>2009-08-19 19:12:39 +0000
commitce9d8640b1cf14419783d839afc0c53184c70bbf (patch)
tree63f59161e0ab7e665103ae7b7d63fb24c36aa36b
parent6bd93f4753a32c097f0cb0d6245969b7fd643e49 (diff)
Add an error message if there is a zero-sized fixed resource. Fix the existing
example of one. Signed-off-by: Myles Watson <mylesgw@gmail.com> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4557 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--src/devices/device.c6
-rw-r--r--src/devices/pci_device.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/devices/device.c b/src/devices/device.c
index c0852f2fd3..58c247f212 100644
--- a/src/devices/device.c
+++ b/src/devices/device.c
@@ -556,8 +556,12 @@ static void constrain_resources(struct device *dev, struct constraints* limits)
/* 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 %s@%lx fixed resource, size=0!\n",
+ dev_path(dev), res->index);
continue;
+ }
if (!(res->flags & IORESOURCE_FIXED))
continue;
diff --git a/src/devices/pci_device.c b/src/devices/pci_device.c
index 7c8a758116..c872b01c38 100644
--- a/src/devices/pci_device.c
+++ b/src/devices/pci_device.c
@@ -332,6 +332,8 @@ static void pci_get_rom_resource(struct device *dev, unsigned long index)
* 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;
}