Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 1 | |
| 2 | QEMU Standard VGA |
| 3 | ================= |
| 4 | |
| 5 | Exists in two variants, for isa and pci. |
| 6 | |
| 7 | command line switches: |
Gerd Hoffmann | 63e3e24 | 2012-11-12 14:29:47 +0100 | [diff] [blame] | 8 | -vga std [ picks isa for -M isapc, otherwise pci ] |
| 9 | -device VGA [ pci variant ] |
| 10 | -device isa-vga [ isa variant ] |
| 11 | -device secondary-vga [ legacy-free pci variant ] |
Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 12 | |
| 13 | |
| 14 | PCI spec |
| 15 | -------- |
| 16 | |
| 17 | Applies to the pci variant only for obvious reasons. |
| 18 | |
| 19 | PCI ID: 1234:1111 |
| 20 | |
| 21 | PCI Region 0: |
| 22 | Framebuffer memory, 16 MB in size (by default). |
| 23 | Size is tunable via vga_mem_mb property. |
| 24 | |
| 25 | PCI Region 1: |
| 26 | Reserved (so we have the option to make the framebuffer bar 64bit). |
| 27 | |
| 28 | PCI Region 2: |
| 29 | MMIO bar, 4096 bytes in size (qemu 1.3+) |
| 30 | |
| 31 | PCI ROM Region: |
| 32 | Holds the vgabios (qemu 0.14+). |
| 33 | |
| 34 | |
Gerd Hoffmann | 63e3e24 | 2012-11-12 14:29:47 +0100 | [diff] [blame] | 35 | The legacy-free variant has no ROM and has PCI_CLASS_DISPLAY_OTHER |
| 36 | instead of PCI_CLASS_DISPLAY_VGA. |
| 37 | |
| 38 | |
Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 39 | IO ports used |
| 40 | ------------- |
| 41 | |
Gerd Hoffmann | 63e3e24 | 2012-11-12 14:29:47 +0100 | [diff] [blame] | 42 | Doesn't apply to the legacy-free pci variant, use the MMIO bar instead. |
| 43 | |
Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 44 | 03c0 - 03df : standard vga ports |
| 45 | 01ce : bochs vbe interface index port |
Gerd Hoffmann | df9ffb7 | 2012-11-12 12:40:46 +0100 | [diff] [blame] | 46 | 01cf : bochs vbe interface data port (x86 only) |
| 47 | 01d0 : bochs vbe interface data port |
Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 48 | |
| 49 | |
| 50 | Memory regions used |
| 51 | ------------------- |
| 52 | |
| 53 | 0xe0000000 : Framebuffer memory, isa variant only. |
| 54 | |
| 55 | The pci variant used to mirror the framebuffer bar here, qemu 0.14+ |
| 56 | stops doing that (except when in -M pc-$old compat mode). |
| 57 | |
| 58 | |
| 59 | MMIO area spec |
| 60 | -------------- |
| 61 | |
| 62 | Likewise applies to the pci variant only for obvious reasons. |
| 63 | |
Gerd Hoffmann | d46b40f | 2018-09-25 09:56:46 +0200 | [diff] [blame] | 64 | 0000 - 03ff : edid data blob. |
Gerd Hoffmann | cc22824 | 2012-10-15 08:02:56 +0200 | [diff] [blame] | 65 | 0400 - 041f : vga ioports (0x3c0 -> 0x3df), remapped 1:1. |
| 66 | word access is supported, bytes are written |
| 67 | in little endia order (aka index port first), |
| 68 | so indexed registers can be updated with a |
| 69 | single mmio write (and thus only one vmexit). |
| 70 | 0500 - 0515 : bochs dispi interface registers, mapped flat |
| 71 | without index/data ports. Use (index << 1) |
| 72 | as offset for (16bit) register access. |
Gerd Hoffmann | b5682aa | 2014-09-23 12:45:56 +0200 | [diff] [blame] | 73 | |
| 74 | 0600 - 0607 : qemu extended registers. qemu 2.2+ only. |
| 75 | The pci revision is 2 (or greater) when |
| 76 | these registers are present. The registers |
| 77 | are 32bit. |
| 78 | 0600 : qemu extended register region size, in bytes. |
| 79 | 0604 : framebuffer endianness register. |
| 80 | - 0xbebebebe indicates big endian. |
| 81 | - 0x1e1e1e1e indicates little endian. |