Here's the read_resources code from qemu after my latest patch.  Is this what people are thinking?  Notice that I explicitly allocate VGA space and APIC.  At the end of the code I'm pasting in a snippet of the log that shows the resources after they are assigned values.<br>
<br>Thanks,<br>Myles<br><br>static void i440bx_read_resources(struct device *dev)<br>{<br>    struct resource *res;<br>    u32 tolmk;        /* Top of low mem, Kbytes. */<br>    int idx;<br><br>    /* I/O resource. */<br>
    res = new_resource(dev, 0);<br>    res->base = 0x1000UL;<br>    res->limit = 0xFFFFUL;<br>    res->flags = IORESOURCE_IO | IORESOURCE_BRIDGE;<br><br>    /* read large mem memory descriptor<br>       for <16 MB read the more detailed small mem descriptor<br>
       all values in kbytes */<br>    tolmk = ((inb_cmos(0x35)<<8) |inb_cmos(0x34)) * 64;<br>    if (tolmk <= 16 * 1024) {<br>        tolmk = (inb_cmos(0x31)<<8) |inb_cmos(0x30);<br>    }<br><br>    printk(BIOS_WARNING, "Using CMOS settings of %d kB RAM.\n", tolmk);<br>
    idx = 10;<br><br>    /* 0 .. 640 kB */<br>    ram_resource(dev, idx++, 0, 640);<br><br>    /* Hole for VGA (0xA0000-0xAFFFF) graphics and text mode<br>     * graphics (0xB8000-0xBFFFF) */<br>    res = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0));<br>
    res->base = 0xA0000UL;<br>    res->size = 0x20000UL;<br>    res->limit = 0xBFFFUL;<br>    res->flags = IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE |<br>             IORESOURCE_ASSIGNED | IORESOURCE_FIXED;<br><br>
    /* 768 kB .. Systop (in KB) */<br>    ram_resource(dev, idx++, 768, tolmk - 768);<br>}<br><br>static void i440bx_domain_read_resources(struct device *dev)<br>{<br>    struct resource *res;<br><br>    /* Initialize the domain's I/O space constraints. */<br>
    res = new_resource(dev, 0);<br>    res->base = 0x1000UL;<br>    res->limit = 0xffffUL;<br>    res->flags = IORESOURCE_IO | IORESOURCE_BRIDGE;<br><br>    /* Initialize the system-wide memory resources constraints. */<br>
    res = new_resource(dev, 1);<br>    res->limit = 0xffffffffULL;<br>    res->flags = IORESOURCE_MEM | IORESOURCE_BRIDGE;<br><br>    /* Reserve space for the APIC. */<br>    res = new_resource(dev, 2);<br>    res->base = 0xfec00000UL;<br>
    res->size = 0x100000UL;<br>    res->limit = 0xffffffffULL;<br>    res->flags = IORESOURCE_MEM | IORESOURCE_FIXED | IORESOURCE_STORED;<br><br>    /* Reserve space for the APIC. */<br>    res = new_resource(dev, 2);<br>
    res->base = 0xfee00000UL;<br>    res->size = 0x10000UL;<br>    res->limit = 0xffffffffULL;<br>    res->flags = IORESOURCE_MEM | IORESOURCE_FIXED | IORESOURCE_STORED;<br>}<br><br>Show resources in subtree (root)...After assigning values.<br>
 Root Device links 1 child on link 0 cpus<br> Root Device resource base 1000 size 410 align 8 gran 0 limit ffff flags 80100 index 0<br> Root Device resource base fc000000 size 2001000 align 25 gran 0 limit ffffffff flags 40080200 index 1<br>
 Root Device resource base 0 size 0 align 0 gran 0 limit ffffffffffffffff flags 81200 index 2<br>  CPU: 00 links 0 child on link 0 NULL<br>  PCI_DOMAIN: 0000 links 1 child on link 0 domain_0_pci_0_0<br>  PCI_DOMAIN: 0000 resource base 1000 size 410 align 8 gran 0 limit ffff flags 40080100 index 0<br>
  PCI_DOMAIN: 0000 resource base fc000000 size 2001000 align 25 gran 0 limit ffffffff flags 40080200 index 1<br>  PCI_DOMAIN: 0000 resource base fee00000 size 10000 align 0 gran 0 limit ffffffff flags a0000200 index 2<br>
   PCI: 00:00.0 links 0 child on link 0 NULL<br>   PCI: 00:00.0 resource base 1000 size 0 align 0 gran 0 limit ffff flags 80100 index 0<br>   PCI: 00:00.0 resource base 0 size a0000 align 0 gran 0 limit 0 flags e0004200 index a<br>
   PCI: 00:00.0 resource base a0000 size 20000 align 0 gran 0 limit bfff flags c0040200 index 10000000<br>   PCI: 00:00.0 resource base c0000 size 6f40000 align 0 gran 0 limit 0 flags e0004200 index b<br>   PCI: 00:01.0 links 0 child on link 0 NULL<br>
   PCI: 00:01.1 links 0 child on link 0 NULL<br>   PCI: 00:01.1 resource base 1400 size 10 align 4 gran 4 limit ffff flags 40000100 index 20<br>   PCI: 00:01.3 links 0 child on link 0 NULL<br>   PCI: 00:02.0 links 0 child on link 0 NULL<br>
   PCI: 00:02.0 resource base fc000000 size 2000000 align 25 gran 25 limit ffffffff flags 40001200 index 10<br>   PCI: 00:02.0 resource base fe000000 size 1000 align 12 gran 12 limit ffffffff flags 40000200 index 14<br>   PCI: 00:03.0 links 0 child on link 0 NULL<br>
   PCI: 00:03.0 resource base 1000 size 100 align 8 gran 8 limit ffff flags 40000100 index 10<br>Phase 4: Setting resources...<br><br>