Merge tag 'pull-loongarch-20241016' of https://gitlab.com/gaosong/qemu into staging
[qemu/armbru.git] / docs / specs / standard-vga.rst
blob992f429ced1beb83ea94c474a8f691ec08c74f6c
2 QEMU Standard VGA
3 =================
5 Exists in two variants, for isa and pci.
7 command line switches:
9 ``-vga std``
10    picks isa for -M isapc, otherwise pci
11 ``-device VGA``
12    pci variant
13 ``-device isa-vga``
14    isa variant
15 ``-device secondary-vga``
16    legacy-free pci variant
19 PCI spec
20 --------
22 Applies to the pci variant only for obvious reasons.
24 PCI ID
25    ``1234:1111``
27 PCI Region 0
28    Framebuffer memory, 16 MB in size (by default).
29    Size is tunable via vga_mem_mb property.
31 PCI Region 1
32    Reserved (so we have the option to make the framebuffer bar 64bit).
34 PCI Region 2
35    MMIO bar, 4096 bytes in size (QEMU 1.3+)
37 PCI ROM Region
38    Holds the vgabios (QEMU 0.14+).
41 The legacy-free variant has no ROM and has ``PCI_CLASS_DISPLAY_OTHER``
42 instead of ``PCI_CLASS_DISPLAY_VGA``.
45 IO ports used
46 -------------
48 Doesn't apply to the legacy-free pci variant, use the MMIO bar instead.
50 ``03c0 - 03df``
51    standard vga ports
52 ``01ce``
53    bochs vbe interface index port
54 ``01cf``
55    bochs vbe interface data port (x86 only)
56 ``01d0``
57    bochs vbe interface data port
60 Memory regions used
61 -------------------
63 ``0xe0000000``
64   Framebuffer memory, isa variant only.
66 The pci variant used to mirror the framebuffer bar here, QEMU 0.14+
67 stops doing that (except when in ``-M pc-$old`` compat mode).
70 MMIO area spec
71 --------------
73 Likewise applies to the pci variant only for obvious reasons.
75 ``0000 - 03ff``
76   edid data blob.
77 ``0400 - 041f``
78   vga ioports (``0x3c0`` to ``0x3df``), remapped 1:1. Word access
79   is supported, bytes are written in little endian order (aka index
80   port first),  so indexed registers can be updated with a single
81   mmio write (and thus only one vmexit).
82 ``0500 - 0515``
83   bochs dispi interface registers, mapped flat without index/data ports.
84   Use ``(index << 1)`` as offset for (16bit) register access.
85 ``0600 - 0607``
86   QEMU extended registers.  QEMU 2.2+ only.
87   The pci revision is 2 (or greater) when these registers are present.
88   The registers are 32bit.
89 ``0600``
90   QEMU extended register region size, in bytes.
91 ``0604``
92   framebuffer endianness register.
93   - ``0xbebebebe`` indicates big endian.
94   - ``0x1e1e1e1e`` indicates little endian.