Features/Q35: Difference between revisions

From QEMU
No edit summary
No edit summary
Line 1: Line 1:
== Summary ==
Add emulation of the ICH9 host chipset as an alternative to the current I440FX emulation.  This will allow for better support of PCI-E passthrough since ICH9 uses a PCI-E bus whereas the I440FX only supports a PCI bus.
== Owner ==
* '''Name:''' [[User:AnthonyLiguori|Anthony Liguori]]
* '''Email:''' anthony@codemonkey.ws
== Challenges ==
The QEMU support for the PC machine type is fairly poor today.  Most platform devices are modelled as ISA devices whereas the ICH9 does not actually have an ISA bus.  Below is a diagram of what the I440FX architecture looks like:
[[File:QEMU-PC.png]]
The main bus of the I440FX is PCI and the SuperIO chipset contains an integrated IDE controller, USB controller, and PCI-ISA bridge.  The SuperIO chipset (the PIIX4) contains many common devices such as the RTC, PIT, PICs, etc.  In addition, there's an special bus (X-Bus) for connecting the PC Keyboard controller and I/O APIC since these require special signals.
Despite how we currently model this in QEMU, the only devices that actually exist on the ISA bus are the Serial controller, Parrellel Port controller, and the Floppy controller.
Compare this to the ICH9 diagram from the Intel ICH9 specification:
[[File:QEMU-ICH9.png]]
The ICH9 has an integrated AHCI controller, USB controller, network adapter, audio adapter, PCI-E and PCI bus, and LPC bus for the SuperIO devices.
* QEMU pci-e/q35 device model
* QEMU pci-e/q35 device model
   * refactor PC machine, i440fx and piix3 to take advantage of QOM
   * refactor PC machine, i440fx and piix3 to take advantage of QOM

Revision as of 18:59, 14 June 2012

Summary

Add emulation of the ICH9 host chipset as an alternative to the current I440FX emulation. This will allow for better support of PCI-E passthrough since ICH9 uses a PCI-E bus whereas the I440FX only supports a PCI bus.

Owner

Challenges

The QEMU support for the PC machine type is fairly poor today. Most platform devices are modelled as ISA devices whereas the ICH9 does not actually have an ISA bus. Below is a diagram of what the I440FX architecture looks like:

QEMU-PC.png

The main bus of the I440FX is PCI and the SuperIO chipset contains an integrated IDE controller, USB controller, and PCI-ISA bridge. The SuperIO chipset (the PIIX4) contains many common devices such as the RTC, PIT, PICs, etc. In addition, there's an special bus (X-Bus) for connecting the PC Keyboard controller and I/O APIC since these require special signals.

Despite how we currently model this in QEMU, the only devices that actually exist on the ISA bus are the Serial controller, Parrellel Port controller, and the Floppy controller.

Compare this to the ICH9 diagram from the Intel ICH9 specification:

QEMU-ICH9.png

The ICH9 has an integrated AHCI controller, USB controller, network adapter, audio adapter, PCI-E and PCI bus, and LPC bus for the SuperIO devices.

  • QEMU pci-e/q35 device model
 * refactor PC machine, i440fx and piix3 to take advantage of QOM
 * piix3: create all child devices as proper QOM children
   * qom: convert BusState to QOM
 * Refactor i440fx to create i440fx-pmc class
   * qom: convert BusState to QOM
 * ich9: model ICH9 Super I/O chip
   * piix3: create all child devices as proper QOM children
 * ich9: make i440fx-pmc a generic PCNorthBridge class and add support for ich9 northbridge
   * Refactor i440fx to create i440fx-pmc class
 * ich9: implement PM interface
 * ich9: introduce support for having a new machine based on the Q35 chipset
   * ich9: model ICH9 Super I/O chip
   * ich9: make i440fx-pmc a generic PCNorthBridge class and add support for ich9 northbridge
   * ich9: implement PM interface