|  | 
 | QEMU Standard VGA | 
 | ================= | 
 |  | 
 | Exists in two variants, for isa and pci. | 
 |  | 
 | command line switches: | 
 |  | 
 | ``-vga std`` | 
 |    picks isa for -M isapc, otherwise pci | 
 | ``-device VGA`` | 
 |    pci variant | 
 | ``-device isa-vga`` | 
 |    isa variant | 
 | ``-device secondary-vga`` | 
 |    legacy-free pci variant | 
 |  | 
 |  | 
 | PCI spec | 
 | -------- | 
 |  | 
 | Applies to the pci variant only for obvious reasons. | 
 |  | 
 | PCI ID | 
 |    ``1234:1111`` | 
 |  | 
 | PCI Region 0 | 
 |    Framebuffer memory, 16 MB in size (by default). | 
 |    Size is tunable via vga_mem_mb property. | 
 |  | 
 | PCI Region 1 | 
 |    Reserved (so we have the option to make the framebuffer bar 64bit). | 
 |  | 
 | PCI Region 2 | 
 |    MMIO bar, 4096 bytes in size (QEMU 1.3+) | 
 |  | 
 | PCI ROM Region | 
 |    Holds the vgabios (QEMU 0.14+). | 
 |  | 
 |  | 
 | The legacy-free variant has no ROM and has ``PCI_CLASS_DISPLAY_OTHER`` | 
 | instead of ``PCI_CLASS_DISPLAY_VGA``. | 
 |  | 
 |  | 
 | IO ports used | 
 | ------------- | 
 |  | 
 | Doesn't apply to the legacy-free pci variant, use the MMIO bar instead. | 
 |  | 
 | ``03c0 - 03df`` | 
 |    standard vga ports | 
 | ``01ce`` | 
 |    bochs vbe interface index port | 
 | ``01cf`` | 
 |    bochs vbe interface data port (x86 only) | 
 | ``01d0`` | 
 |    bochs vbe interface data port | 
 |  | 
 |  | 
 | Memory regions used | 
 | ------------------- | 
 |  | 
 | ``0xe0000000`` | 
 |   Framebuffer memory, isa variant only. | 
 |  | 
 | The pci variant used to mirror the framebuffer bar here, QEMU 0.14+ | 
 | stops doing that (except when in ``-M pc-$old`` compat mode). | 
 |  | 
 |  | 
 | MMIO area spec | 
 | -------------- | 
 |  | 
 | Likewise applies to the pci variant only for obvious reasons. | 
 |  | 
 | ``0000 - 03ff`` | 
 |   edid data blob. | 
 | ``0400 - 041f`` | 
 |   vga ioports (``0x3c0`` to ``0x3df``), remapped 1:1. Word access | 
 |   is supported, bytes are written in little endian order (aka index | 
 |   port first),  so indexed registers can be updated with a single | 
 |   mmio write (and thus only one vmexit). | 
 | ``0500 - 0515`` | 
 |   bochs dispi interface registers, mapped flat without index/data ports. | 
 |   Use ``(index << 1)`` as offset for (16bit) register access. | 
 | ``0600 - 0607`` | 
 |   QEMU extended registers.  QEMU 2.2+ only. | 
 |   The pci revision is 2 (or greater) when these registers are present. | 
 |   The registers are 32bit. | 
 | ``0600`` | 
 |   QEMU extended register region size, in bytes. | 
 | ``0604`` | 
 |   framebuffer endianness register. | 
 |   - ``0xbebebebe`` indicates big endian. | 
 |   - ``0x1e1e1e1e`` indicates little endian. |