Hi Alexandru, thanks for finding this issue. I think I ran into this before. We should not silently continue in this case, and not create a resource either. The problem is most likely caused by a faulty devicetree.cb or superio driver. Hence, I suggest to print an error instead. See patch. Can you test, please? It should tell you which device / index is causing the problem.
Stefan On Fri, Jan 28, 2011 at 2:14 AM, Alex G. <[email protected]> wrote: > Fix an infinite loop in pnp_get_ioresource(), which freezes coreboot if > a rare condition arises. > > Signed-off-by: Alexandru Gagniuc <[email protected]> > --- > > > -- > coreboot mailing list: [email protected] > http://www.coreboot.org/mailman/listinfo/coreboot > -- Stefan Reinauer Google Inc.
Fix an infinite loop in pnp_get_ioresource(), which freezes coreboot if a rare condition arises. Based on findings by Alexandru Gagniuc <[email protected]> Signed-off-by: Stefan Reinauer <[email protected]> diff --git a/src/devices/pnp_device.c b/src/devices/pnp_device.c index b2bca03..4a6d266 100644 --- a/src/devices/pnp_device.c +++ b/src/devices/pnp_device.c @@ -170,6 +170,12 @@ static void pnp_get_ioresource(device_t dev, u8 index, struct io_info *info) struct resource *resource; unsigned moving, gran, step; + if (!info->mask) { + printk(BIOS_ERR, "ERROR: device %s index %d has no mask.\n", + dev_path(dev), index); + return; + } + resource = new_resource(dev, index); /* Initilize the resource. */
-- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

