--- hw/pc.c.orig 2009-03-04 22:54:45.000000000 +0000 +++ hw/pc.c 2009-03-17 07:47:58.120091474 +0000 @@ -938,7 +941,7 @@ if (pci_enabled) { pci_bus = i440fx_init(&i440fx_state, i8259); - piix3_devfn = piix3_init(pci_bus, -1); + piix3_devfn = piix4_init(pci_bus, 7 << 3); } else { pci_bus = NULL; } @@ -1031,7 +1034,7 @@ } if (pci_enabled) { - pci_piix3_ide_init(pci_bus, hd, piix3_devfn + 1, i8259); + pci_piix4_ide_init(pci_bus, hd, piix3_devfn + 1, i8259); } else { for(i = 0; i < MAX_IDE_BUS; i++) { isa_ide_init(ide_iobase[i], ide_iobase2[i], i8259[ide_irq[i]], @@ -1057,7 +1060,7 @@ cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device, hd); if (pci_enabled && usb_enabled) { - usb_uhci_piix3_init(pci_bus, piix3_devfn + 2); + usb_uhci_piix4_init(pci_bus, piix3_devfn + 2); } if (pci_enabled && acpi_enabled) { --- hw/pci.h.orig 2009-03-17 15:45:59.809589980 +0000 +++ hw/pci.h 2009-03-17 15:46:27.931350921 +0000 @@ -104,6 +104,7 @@ #define PCI_VENDOR_ID_INTEL 0x8086 #define PCI_DEVICE_ID_INTEL_82441 0x1237 +#define PCI_DEVICE_ID_INTEL_82443 0x7190 #define PCI_DEVICE_ID_INTEL_82801AA_5 0x2415 #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 #define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010 --- hw/piix_pci.c.orig 2009-03-05 00:54:45.000000000 +0200 +++ hw/piix_pci.c 2009-03-17 23:29:57.059459122 +0200 @@ -193,7 +193,7 @@ NULL, i440fx_write_config); pci_config_set_vendor_id(d->config, PCI_VENDOR_ID_INTEL); - pci_config_set_device_id(d->config, PCI_DEVICE_ID_INTEL_82441); + pci_config_set_device_id(d->config, PCI_DEVICE_ID_INTEL_82443); d->config[0x08] = 0x02; // revision pci_config_set_class(d->config, PCI_CLASS_BRIDGE_HOST); d->config[0x0e] = 0x00; // header_type @@ -221,13 +221,13 @@ /* now we change the pic irq level according to the piix irq mappings */ /* XXX: optimize */ - pic_irq = piix3_dev->config[0x60 + irq_num]; + pic_irq = piix4_dev->config[0x60 + irq_num]; if (pic_irq < 16) { /* The pic level is the logical OR of all the PCI irqs mapped to it */ pic_level = 0; for (i = 0; i < 4; i++) { - if (pic_irq == piix3_dev->config[0x60 + i]) + if (pic_irq == piix4_dev->config[0x60 + i]) pic_level |= pci_irq_levels[i]; } qemu_set_irq(pic[pic_irq], pic_level);