mirror of
https://github.com/qemu/qemu.git
synced 2024-12-01 07:43:35 +08:00
d46b40fce2
This patch adds edid support to the qemu stdvga. It is turned off by default and can be enabled with the new edid property. The patch also adds xres and yres properties to specify the video mode you want the guest use. Works only with edid enabled and updated guest driver. The mmio bar of the stdvga has some unused address space at the start. It was reserved just in case it'll be needed for virtio, but it turned out to not be needed for that. So let's use that region to place the EDID data block there. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20180925075646.25114-6-kraxel@redhat.com
82 lines
2.3 KiB
Plaintext
82 lines
2.3 KiB
Plaintext
|
|
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 -> 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.
|
|
|
|
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.
|