From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH 03/24] hw/vmware_vga.c: add tracepoints for mmio reads+writes
Date: Thu, 4 Apr 2013 09:28:45 +0200 [thread overview]
Message-ID: <1365060546-24638-4-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1365060546-24638-1-git-send-email-kraxel@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/vmware_vga.c | 112 +++++++++++++++++++++++++++++++++++++++----------------
trace-events | 6 +++
2 files changed, 86 insertions(+), 32 deletions(-)
diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index c0aac31..2dfab75 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -721,61 +721,79 @@ static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
uint32_t caps;
struct vmsvga_state_s *s = opaque;
DisplaySurface *surface = qemu_console_surface(s->vga.con);
+ uint32_t ret;
switch (s->index) {
case SVGA_REG_ID:
- return s->svgaid;
+ ret = s->svgaid;
+ break;
case SVGA_REG_ENABLE:
- return s->enable;
+ ret = s->enable;
+ break;
case SVGA_REG_WIDTH:
- return surface_width(surface);
+ ret = surface_width(surface);
+ break;
case SVGA_REG_HEIGHT:
- return surface_height(surface);
+ ret = surface_height(surface);
+ break;
case SVGA_REG_MAX_WIDTH:
- return SVGA_MAX_WIDTH;
+ ret = SVGA_MAX_WIDTH;
+ break;
case SVGA_REG_MAX_HEIGHT:
- return SVGA_MAX_HEIGHT;
+ ret = SVGA_MAX_HEIGHT;
+ break;
case SVGA_REG_DEPTH:
- return s->depth;
+ ret = s->depth;
+ break;
case SVGA_REG_BITS_PER_PIXEL:
- return (s->depth + 7) & ~7;
+ ret = (s->depth + 7) & ~7;
+ break;
case SVGA_REG_PSEUDOCOLOR:
- return 0x0;
+ ret = 0x0;
+ break;
case SVGA_REG_RED_MASK:
- return surface->pf.rmask;
+ ret = surface->pf.rmask;
+ break;
case SVGA_REG_GREEN_MASK:
- return surface->pf.gmask;
+ ret = surface->pf.gmask;
+ break;
case SVGA_REG_BLUE_MASK:
- return surface->pf.bmask;
+ ret = surface->pf.bmask;
+ break;
case SVGA_REG_BYTES_PER_LINE:
- return s->bypp * s->new_width;
+ ret = s->bypp * s->new_width;
+ break;
case SVGA_REG_FB_START: {
struct pci_vmsvga_state_s *pci_vmsvga
= container_of(s, struct pci_vmsvga_state_s, chip);
- return pci_get_bar_addr(&pci_vmsvga->card, 1);
+ ret = pci_get_bar_addr(&pci_vmsvga->card, 1);
+ break;
}
case SVGA_REG_FB_OFFSET:
- return 0x0;
+ ret = 0x0;
+ break;
case SVGA_REG_VRAM_SIZE:
- return s->vga.vram_size; /* No physical VRAM besides the framebuffer */
+ ret = s->vga.vram_size; /* No physical VRAM besides the framebuffer */
+ break;
case SVGA_REG_FB_SIZE:
- return s->vga.vram_size;
+ ret = s->vga.vram_size;
+ break;
case SVGA_REG_CAPABILITIES:
caps = SVGA_CAP_NONE;
@@ -791,66 +809,96 @@ static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
SVGA_CAP_CURSOR_BYPASS;
}
#endif
- return caps;
+ ret = caps;
+ break;
case SVGA_REG_MEM_START: {
struct pci_vmsvga_state_s *pci_vmsvga
= container_of(s, struct pci_vmsvga_state_s, chip);
- return pci_get_bar_addr(&pci_vmsvga->card, 2);
+ ret = pci_get_bar_addr(&pci_vmsvga->card, 2);
+ break;
}
case SVGA_REG_MEM_SIZE:
- return s->fifo_size;
+ ret = s->fifo_size;
+ break;
case SVGA_REG_CONFIG_DONE:
- return s->config;
+ ret = s->config;
+ break;
case SVGA_REG_SYNC:
case SVGA_REG_BUSY:
- return s->syncing;
+ ret = s->syncing;
+ break;
case SVGA_REG_GUEST_ID:
- return s->guest;
+ ret = s->guest;
+ break;
case SVGA_REG_CURSOR_ID:
- return s->cursor.id;
+ ret = s->cursor.id;
+ break;
case SVGA_REG_CURSOR_X:
- return s->cursor.x;
+ ret = s->cursor.x;
+ break;
case SVGA_REG_CURSOR_Y:
- return s->cursor.x;
+ ret = s->cursor.x;
+ break;
case SVGA_REG_CURSOR_ON:
- return s->cursor.on;
+ ret = s->cursor.on;
+ break;
case SVGA_REG_HOST_BITS_PER_PIXEL:
- return (s->depth + 7) & ~7;
+ ret = (s->depth + 7) & ~7;
+ break;
case SVGA_REG_SCRATCH_SIZE:
- return s->scratch_size;
+ ret = s->scratch_size;
+ break;
case SVGA_REG_MEM_REGS:
case SVGA_REG_NUM_DISPLAYS:
case SVGA_REG_PITCHLOCK:
case SVGA_PALETTE_BASE ... SVGA_PALETTE_END:
- return 0;
+ ret = 0;
+ break;
default:
if (s->index >= SVGA_SCRATCH_BASE &&
s->index < SVGA_SCRATCH_BASE + s->scratch_size) {
- return s->scratch[s->index - SVGA_SCRATCH_BASE];
+ ret = s->scratch[s->index - SVGA_SCRATCH_BASE];
+ break;
}
printf("%s: Bad register %02x\n", __func__, s->index);
+ ret = 0;
+ break;
}
- return 0;
+ if (s->index >= SVGA_SCRATCH_BASE) {
+ trace_vmware_scratch_read(s->index, ret);
+ } else if (s->index >= SVGA_PALETTE_BASE) {
+ trace_vmware_palette_read(s->index, ret);
+ } else {
+ trace_vmware_value_read(s->index, ret);
+ }
+ return ret;
}
static void vmsvga_value_write(void *opaque, uint32_t address, uint32_t value)
{
struct vmsvga_state_s *s = opaque;
+ if (s->index >= SVGA_SCRATCH_BASE) {
+ trace_vmware_scratch_write(s->index, value);
+ } else if (s->index >= SVGA_PALETTE_BASE) {
+ trace_vmware_palette_write(s->index, value);
+ } else {
+ trace_vmware_value_write(s->index, value);
+ }
switch (s->index) {
case SVGA_REG_ID:
if (value == SVGA_ID_2 || value == SVGA_ID_1 || value == SVGA_ID_0) {
diff --git a/trace-events b/trace-events
index 7f34112..030ab70 100644
--- a/trace-events
+++ b/trace-events
@@ -969,6 +969,12 @@ displaychangelistener_unregister(void *dcl, const char *name) "%p [ %s ]"
# vga.c
ppm_save(const char *filename, void *display_surface) "%s surface=%p"
+vmware_value_read(uint32_t index, uint32_t value) "index %d, value 0x%x"
+vmware_value_write(uint32_t index, uint32_t value) "index %d, value 0x%x"
+vmware_palette_read(uint32_t index, uint32_t value) "index %d, value 0x%x"
+vmware_palette_write(uint32_t index, uint32_t value) "index %d, value 0x%x"
+vmware_scratch_read(uint32_t index, uint32_t value) "index %d, value 0x%x"
+vmware_scratch_write(uint32_t index, uint32_t value) "index %d, value 0x%x"
# savevm.c
--
1.7.9.7
next prev parent reply other threads:[~2013-04-04 7:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-04 7:28 [Qemu-devel] [PATCH v3 00/24] console: console overhaul continued Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 01/24] exynos4210_fimd.c: fix display resize bug introduced after console revamp Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 02/24] hw/vmware_vga.c: fix screen " Gerd Hoffmann
2013-04-05 11:21 ` Alexandru Damian
2013-04-04 7:28 ` Gerd Hoffmann [this message]
2013-04-04 7:28 ` [Qemu-devel] [PATCH 04/24] hw/vmware_vga.c: various vmware vga fixes Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 05/24] pixman: add qemu_pixman_color() Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 06/24] pixman: render vgafont glyphs into pixman images Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 07/24] console: use pixman for fill+blit Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 08/24] console: use pixman for font rendering Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 09/24] console: switch color_table_rgb to pixman_color_t Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 10/24] console: add trace events Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 11/24] console: displaystate init revamp Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 12/24] console: rename vga_hw_*, add QemuConsole param Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 13/24] console: give each QemuConsole its own DisplaySurface Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 14/24] console: simplify screendump Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 15/24] console: zap g_width + g_height Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 16/24] console: move gui_update+gui_setup_refresh from vl.c into console.c Gerd Hoffmann
2013-04-04 7:28 ` [Qemu-devel] [PATCH 17/24] console: make DisplayState private to console.c Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 18/24] console: add GraphicHwOps Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 19/24] console: gui timer fixes Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 20/24] xen: re-enable refresh interval reporting for xenfb Gerd Hoffmann
2013-04-04 17:06 ` Stefano Stabellini
2013-04-05 7:28 ` Gerd Hoffmann
2013-04-05 10:07 ` Stefano Stabellini
2013-04-04 7:29 ` [Qemu-devel] [PATCH 21/24] console: add qemu_console_is_* Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 22/24] console: allow pinning displaychangelisteners to consoles Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 23/24] gtk: custom cursor support Gerd Hoffmann
2013-04-04 7:29 ` [Qemu-devel] [PATCH 24/24] qxl: register QemuConsole for secondary cards Gerd Hoffmann
-- strict thread matches above, loose matches on Subject: below --
2013-04-16 9:39 [Qemu-devel] [PULL v4 00/24] console: console overhaul continued Gerd Hoffmann
2013-04-16 9:39 ` [Qemu-devel] [PATCH 03/24] hw/vmware_vga.c: add tracepoints for mmio reads+writes Gerd Hoffmann
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=1365060546-24638-4-git-send-email-kraxel@redhat.com \
--to=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).