From: Alexander Graf <agraf@suse.de>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Avi Kivity <avi@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
andreas.faerber@web.de, qemu-devel <qemu-devel@nongnu.org>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 5/6] vga: Use linear mapping + dirty logging in chain 4 memory access mode
Date: Mon, 12 Sep 2011 17:20:09 +0200 [thread overview]
Message-ID: <4E6E2329.9050109@suse.de> (raw)
In-Reply-To: <3d9d904a1e4939a147f8954c9e0d4cdaf3d44c31.1314033132.git.jan.kiszka@siemens.com>
Jan Kiszka wrote:
> Most VGA memory access modes require MMIO handling as they demand weird
> logic to get a byte from or into the video RAM. However, there is one
> exception: chain 4 mode with all memory planes enabled for writing. This
> mode actually allows lineary mapping, which can then be combined with
> dirty logging to accelerate KVM.
>
> This patch accelerates specifically VBE accesses like they are used by
> grub in graphical mode. Not only the standard VGA adapter benefits from
> this, also vmware and spice in VGA mode.
>
> CC: Gerd Hoffmann <kraxel@redhat.com>
> CC: Avi Kivity <avi@redhat.com>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>
[...]
> +static void vga_update_memory_access(VGACommonState *s)
> +{
> + MemoryRegion *region, *old_region = s->chain4_alias;
> + target_phys_addr_t base, offset, size;
> +
> + s->chain4_alias = NULL;
> +
> + if ((s->sr[0x02] & 0xf) == 0xf && s->sr[0x04] & 0x08) {
> + offset = 0;
> + switch ((s->gr[6] >> 2) & 3) {
> + case 0:
> + base = 0xa0000;
> + size = 0x20000;
> + break;
> + case 1:
> + base = 0xa0000;
> + size = 0x10000;
> + offset = s->bank_offset;
> + break;
> + case 2:
> + base = 0xb0000;
> + size = 0x8000;
> + break;
> + case 3:
> + base = 0xb8000;
> + size = 0x8000;
> + break;
> + }
> + region = g_malloc(sizeof(*region));
> + memory_region_init_alias(region, "vga.chain4", &s->vram, offset, size);
> + memory_region_add_subregion_overlap(s->legacy_address_space, base,
> + region, 2);
>
This one eventually gives me the following in info mtree with -M g3beige
on qemu-system-ppc:
(qemu) info mtree
memory
system addr 00000000 off 00000000 size 7fffffffffffffff
-vga.chain4 addr 000a0000 off 00000000 size 10000
-macio addr 80880000 off 00000000 size 80000
--macio-nvram addr 00060000 off 00000000 size 20000
--pmac-ide addr 00020000 off 00000000 size 1000
--cuda addr 00016000 off 00000000 size 2000
--escc-bar addr 00013000 off 00000000 size 40
--dbdma addr 00008000 off 00000000 size 1000
--heathrow-pic addr 00000000 off 00000000 size 1000
-vga.rom addr 80800000 off 00000000 size 10000
-vga.vram addr 80000000 off 00000000 size 800000
-vga-lowmem addr 800a0000 off 00000000 size 20000
-escc addr 80013000 off 00000000 size 40
-isa-mmio addr fe000000 off 00000000 size 200000
I/O
io addr 00000000 off 00000000 size 10000
-cmd646-bmdma addr 00000700 off 00000000 size 10
--cmd646-bmdma-ioport addr 0000000c off 00000000 size 4
--cmd646-bmdma-bus addr 00000008 off 00000000 size 4
--cmd646-bmdma-ioport addr 00000004 off 00000000 size 4
--cmd646-bmdma-bus addr 00000000 off 00000000 size 4
-cmd646-cmd addr 00000680 off 00000000 size 4
-cmd646-data addr 00000600 off 00000000 size 8
-cmd646-cmd addr 00000580 off 00000000 size 4
-cmd646-data addr 00000500 off 00000000 size 8
-ne2000 addr 00000400 off 00000000 size 100
This ends up overmapping 0xa0000, effectively overwriting kernel data.
If I #if 0 the offending chunk out, everything is fine. I would assume
that chain4 really needs to be inside of lowmem? No idea about VGA, but
I'm sure you know what's going on :).
Alex
next prev parent reply other threads:[~2011-09-12 15:19 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-22 17:12 [Qemu-devel] [PATCH v3 0/6] vga: dirty log cleanup, more linear mapping Jan Kiszka
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 1/6] vmware-vga: Register reset service Jan Kiszka
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 2/6] vmware-vga: Disable verbose mode Jan Kiszka
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 3/6] vmware-vga: Remove dead DIRECT_VRAM mode Jan Kiszka
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 4/6] vmware-vga: Eliminate vga_dirty_log_restart Jan Kiszka
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 5/6] vga: Use linear mapping + dirty logging in chain 4 memory access mode Jan Kiszka
2011-08-25 7:19 ` Avi Kivity
2011-08-25 9:07 ` Jan Kiszka
2011-08-25 9:16 ` Avi Kivity
2011-08-25 9:21 ` Jan Kiszka
2011-08-25 10:45 ` Avi Kivity
2011-08-25 10:51 ` Jan Kiszka
2011-08-25 11:19 ` Avi Kivity
2011-08-25 11:28 ` Jan Kiszka
2011-09-12 15:20 ` Alexander Graf [this message]
2011-09-12 15:33 ` Jan Kiszka
2011-09-12 15:45 ` Andreas Färber
2011-09-12 15:49 ` Jan Kiszka
2011-09-12 15:57 ` Jan Kiszka
2011-09-13 7:39 ` Alexander Graf
2011-09-13 8:14 ` Jan Kiszka
2011-09-13 8:17 ` Alexander Graf
2011-09-13 8:19 ` Andreas Färber
2011-09-13 8:40 ` Alexander Graf
2011-09-13 9:00 ` Jan Kiszka
2011-09-13 9:42 ` Alexander Graf
2011-09-13 11:34 ` Jan Kiszka
2011-09-13 19:39 ` Blue Swirl
2011-09-14 7:11 ` Avi Kivity
2011-09-14 7:42 ` Alexander Graf
2011-09-14 8:02 ` Jan Kiszka
2011-09-14 8:17 ` Avi Kivity
2011-09-14 8:20 ` Jan Kiszka
2011-09-14 8:22 ` Avi Kivity
2011-09-14 8:24 ` Jan Kiszka
2011-09-14 8:27 ` Alexander Graf
2011-09-14 8:33 ` Jan Kiszka
2011-09-14 8:35 ` Avi Kivity
2011-09-14 20:06 ` Blue Swirl
2011-09-14 20:14 ` Alexander Graf
2011-09-14 20:16 ` Avi Kivity
2011-09-14 20:35 ` Alexander Graf
2011-09-14 20:42 ` Richard Henderson
2011-09-14 21:27 ` Andreas Färber
2011-09-14 21:41 ` Alexander Graf
2011-09-15 1:24 ` Benjamin Herrenschmidt
2011-09-15 7:32 ` Avi Kivity
2011-09-15 7:35 ` Alexander Graf
2011-09-15 10:01 ` Benjamin Herrenschmidt
2011-09-15 11:31 ` Avi Kivity
2011-09-17 21:40 ` Blue Swirl
2011-09-18 11:28 ` Avi Kivity
2011-09-19 9:15 ` Alexander Graf
2011-09-19 9:22 ` Avi Kivity
2011-09-19 9:36 ` Alexander Graf
2011-09-19 9:48 ` Avi Kivity
2011-09-14 20:15 ` Avi Kivity
2011-09-14 20:25 ` Blue Swirl
2011-09-15 7:30 ` Avi Kivity
2011-09-13 9:43 ` Andreas Färber
2011-09-12 20:21 ` Blue Swirl
2011-09-13 6:54 ` Alexander Graf
2011-09-13 7:51 ` Avi Kivity
2011-09-13 7:54 ` Alexander Graf
2011-09-13 8:10 ` Avi Kivity
2011-08-22 17:12 ` [Qemu-devel] [PATCH v3 6/6] vga: Drop some unused fields Jan Kiszka
2011-08-22 20:18 ` [Qemu-devel] [PATCH v3 0/6] vga: dirty log cleanup, more linear mapping Anthony Liguori
2011-08-22 20:36 ` Jan Kiszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E6E2329.9050109@suse.de \
--to=agraf@suse.de \
--cc=aliguori@us.ibm.com \
--cc=andreas.faerber@web.de \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.