From 9efc2d8d813b94fde0a2bad6c13850bef7636748 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 11 Sep 2013 13:14:25 +0200 Subject: qxl: define qxl operating on 4k pages Signed-off-by: Gerd Hoffmann --- hw/display/qxl.c | 5 +++-- hw/display/qxl.h | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'hw') diff --git a/hw/display/qxl.c b/hw/display/qxl.c index c50e285e21..f0bfd2cdf7 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -364,7 +364,7 @@ static void init_qxl_rom(PCIQXLDevice *d) num_pages = d->vga.vram_size; num_pages -= ram_header_size; num_pages -= surface0_area_size; - num_pages = num_pages / TARGET_PAGE_SIZE; + num_pages = num_pages / QXL_PAGE_SIZE; rom->draw_area_offset = cpu_to_le32(0); rom->surface0_area_size = cpu_to_le32(surface0_area_size); @@ -528,7 +528,8 @@ static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info) info->num_memslots = NUM_MEMSLOTS; info->num_memslots_groups = NUM_MEMSLOTS_GROUPS; info->internal_groupslot_id = 0; - info->qxl_ram_size = le32_to_cpu(qxl->shadow_rom.num_pages) << TARGET_PAGE_BITS; + info->qxl_ram_size = + le32_to_cpu(qxl->shadow_rom.num_pages) << QXL_PAGE_BITS; info->n_surfaces = qxl->ssd.num_surfaces; } diff --git a/hw/display/qxl.h b/hw/display/qxl.h index 8e9b0c299e..84f0182383 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -27,6 +27,9 @@ enum qxl_mode { #define QXL_NUM_DIRTY_RECTS 64 +#define QXL_PAGE_BITS 12 +#define QXL_PAGE_SIZE (1 << QXL_PAGE_BITS); + typedef struct PCIQXLDevice { PCIDevice pci; SimpleSpiceDisplay ssd; -- cgit v1.2.3 From 60b3b2a55f4b3fb72419ce7e4b44378dc56eed28 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 11 Sep 2013 13:08:49 +0200 Subject: qxl: simplify qxl_rom_size Nowdays rom size is fixed at 8192 for live migration compat reasons. So we can ditch the pointless math trying to calculate the size needed. Also make the size sanity check fail at compile time not runtime. Signed-off-by: Gerd Hoffmann --- hw/display/qxl.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'hw') diff --git a/hw/display/qxl.c b/hw/display/qxl.c index f0bfd2cdf7..bcbf97aceb 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -313,9 +313,7 @@ static ram_addr_t qxl_rom_size(void) sizeof(qxl_modes); uint32_t rom_size = 8192; /* two pages */ - required_rom_size = MAX(required_rom_size, TARGET_PAGE_SIZE); - required_rom_size = msb_mask(required_rom_size * 2 - 1); - assert(required_rom_size <= rom_size); + QEMU_BUILD_BUG_ON(required_rom_size > rom_size); return rom_size; } -- cgit v1.2.3 From b0297b4a82f5ba39f6e75c024f80bc4c20070d27 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 11 Sep 2013 13:15:48 +0200 Subject: qxl: simplify page dirtying No need to do target page size calculations here, memory_region_set_dirty will care for us. Signed-off-by: Gerd Hoffmann --- hw/display/qxl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'hw') diff --git a/hw/display/qxl.c b/hw/display/qxl.c index bcbf97aceb..ee2db0da1a 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -414,9 +414,8 @@ static void qxl_ram_set_dirty(PCIQXLDevice *qxl, void *ptr) intptr_t offset; offset = ptr - base; - offset &= ~(TARGET_PAGE_SIZE-1); assert(offset < qxl->vga.vram_size); - qxl_set_dirty(&qxl->vga.vram, offset, offset + TARGET_PAGE_SIZE); + qxl_set_dirty(&qxl->vga.vram, offset, offset + 3); } /* can be called from spice server thread context */ -- cgit v1.2.3 From 521e759cf1ca05fc59a8653e48f18f830edbda7e Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 11 Sep 2013 13:32:07 +0200 Subject: qxl: compile only once Signed-off-by: Gerd Hoffmann --- hw/display/Makefile.objs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'hw') diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index 6e9fb3b695..540df82600 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -31,5 +31,4 @@ obj-$(CONFIG_TCX) += tcx.o obj-$(CONFIG_VGA) += vga.o -common-obj-$(CONFIG_QXL) += qxl-logger.o qxl-render.o -obj-$(CONFIG_QXL) += qxl.o +common-obj-$(CONFIG_QXL) += qxl.o qxl-logger.o qxl-render.o -- cgit v1.2.3