2012-10-15 08:02:56 +02:00
|
|
|
|
|
|
|
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 ]
|
|
|
|
|
|
|
|
|
|
|
|
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+).
|
|
|
|
|
|
|
|
|
|
|
|
IO ports used
|
|
|
|
-------------
|
|
|
|
|
|
|
|
03c0 - 03df : standard vga ports
|
|
|
|
01ce : bochs vbe interface index port
|
2012-11-12 12:40:46 +01:00
|
|
|
01cf : bochs vbe interface data port (x86 only)
|
|
|
|
01d0 : bochs vbe interface data port
|
2012-10-15 08:02:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
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 : reserved, for possible virtio extension.
|
|
|
|
0400 - 041f : vga ioports (0x3c0 -> 0x3df), remapped 1:1.
|
|
|
|
word access is supported, bytes are written
|
|
|
|
in little endia 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.
|