Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
[qemu.git] / docs / specs / standard-vga.txt
1
2 QEMU Standard VGA
3 =================
4
5 Exists in two variants, for isa and pci.
6
7 command line switches:
8     -vga std            [ picks isa for -M isapc, otherwise pci ]
9     -device VGA         [ pci variant ]
10     -device isa-vga     [ isa variant ]
11
12
13 PCI spec
14 --------
15
16 Applies to the pci variant only for obvious reasons.
17
18 PCI ID: 1234:1111
19
20 PCI Region 0:
21    Framebuffer memory, 16 MB in size (by default).
22    Size is tunable via vga_mem_mb property.
23
24 PCI Region 1:
25    Reserved (so we have the option to make the framebuffer bar 64bit).
26
27 PCI Region 2:
28    MMIO bar, 4096 bytes in size (qemu 1.3+)
29
30 PCI ROM Region:
31    Holds the vgabios (qemu 0.14+).
32
33
34 IO ports used
35 -------------
36
37 03c0 - 03df : standard vga ports
38 01ce        : bochs vbe interface index port
39 01cf        : bochs vbe interface data port (x86 only)
40 01d0        : bochs vbe interface data port
41
42
43 Memory regions used
44 -------------------
45
46 0xe0000000 : Framebuffer memory, isa variant only.
47
48 The pci variant used to mirror the framebuffer bar here, qemu 0.14+
49 stops doing that (except when in -M pc-$old compat mode).
50
51
52 MMIO area spec
53 --------------
54
55 Likewise applies to the pci variant only for obvious reasons.
56
57 0000 - 03ff : reserved, for possible virtio extension.
58 0400 - 041f : vga ioports (0x3c0 -> 0x3df), remapped 1:1.
59               word access is supported, bytes are written
60               in little endia order (aka index port first),
61               so indexed registers can be updated with a
62               single mmio write (and thus only one vmexit).
63 0500 - 0515 : bochs dispi interface registers, mapped flat
64               without index/data ports.  Use (index << 1)
65               as offset for (16bit) register access.