display: enable DIRTY_MEMORY_VGA tracking explicitly
This will be required soon by the memory core. Tested-by: Aurelien Jarno <aurelien@aurel32.net> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
086f90e890
commit
74259ae55b
@ -309,6 +309,7 @@ static void cg3_realizefn(DeviceState *dev, Error **errp)
|
|||||||
|
|
||||||
memory_region_init_ram(&s->vram_mem, NULL, "cg3.vram", s->vram_size,
|
memory_region_init_ram(&s->vram_mem, NULL, "cg3.vram", s->vram_size,
|
||||||
&error_abort);
|
&error_abort);
|
||||||
|
memory_region_set_log(&s->vram_mem, true, DIRTY_MEMORY_VGA);
|
||||||
vmstate_register_ram_global(&s->vram_mem);
|
vmstate_register_ram_global(&s->vram_mem);
|
||||||
sysbus_init_mmio(sbd, &s->vram_mem);
|
sysbus_init_mmio(sbd, &s->vram_mem);
|
||||||
|
|
||||||
|
@ -1109,6 +1109,12 @@ static inline int fimd_get_buffer_id(Exynos4210fimdWindow *w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void exynos4210_fimd_invalidate(void *opaque)
|
||||||
|
{
|
||||||
|
Exynos4210fimdState *s = (Exynos4210fimdState *)opaque;
|
||||||
|
s->invalidate = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Updates specified window's MemorySection based on values of WINCON,
|
/* Updates specified window's MemorySection based on values of WINCON,
|
||||||
* VIDOSDA, VIDOSDB, VIDWADDx and SHADOWCON registers */
|
* VIDOSDA, VIDOSDB, VIDWADDx and SHADOWCON registers */
|
||||||
static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)
|
static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)
|
||||||
@ -1136,7 +1142,11 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)
|
|||||||
/* TODO: add .exit and unref the region there. Not needed yet since sysbus
|
/* TODO: add .exit and unref the region there. Not needed yet since sysbus
|
||||||
* does not support hot-unplug.
|
* does not support hot-unplug.
|
||||||
*/
|
*/
|
||||||
memory_region_unref(w->mem_section.mr);
|
if (w->mem_section.mr) {
|
||||||
|
memory_region_set_log(w->mem_section.mr, false, DIRTY_MEMORY_VGA);
|
||||||
|
memory_region_unref(w->mem_section.mr);
|
||||||
|
}
|
||||||
|
|
||||||
w->mem_section = memory_region_find(sysbus_address_space(sbd),
|
w->mem_section = memory_region_find(sysbus_address_space(sbd),
|
||||||
fb_start_addr, w->fb_len);
|
fb_start_addr, w->fb_len);
|
||||||
assert(w->mem_section.mr);
|
assert(w->mem_section.mr);
|
||||||
@ -1162,6 +1172,8 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)
|
|||||||
cpu_physical_memory_unmap(w->host_fb_addr, fb_mapped_len, 0, 0);
|
cpu_physical_memory_unmap(w->host_fb_addr, fb_mapped_len, 0, 0);
|
||||||
goto error_return;
|
goto error_return;
|
||||||
}
|
}
|
||||||
|
memory_region_set_log(w->mem_section.mr, true, DIRTY_MEMORY_VGA);
|
||||||
|
exynos4210_fimd_invalidate(s);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error_return:
|
error_return:
|
||||||
@ -1224,12 +1236,6 @@ static void exynos4210_fimd_update_irq(Exynos4210fimdState *s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exynos4210_fimd_invalidate(void *opaque)
|
|
||||||
{
|
|
||||||
Exynos4210fimdState *s = (Exynos4210fimdState *)opaque;
|
|
||||||
s->invalidate = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void exynos4210_update_resolution(Exynos4210fimdState *s)
|
static void exynos4210_update_resolution(Exynos4210fimdState *s)
|
||||||
{
|
{
|
||||||
DisplaySurface *surface = qemu_console_surface(s->console);
|
DisplaySurface *surface = qemu_console_surface(s->console);
|
||||||
|
@ -489,6 +489,7 @@ static void g364fb_init(DeviceState *dev, G364State *s)
|
|||||||
memory_region_init_ram_ptr(&s->mem_vram, NULL, "vram",
|
memory_region_init_ram_ptr(&s->mem_vram, NULL, "vram",
|
||||||
s->vram_size, s->vram);
|
s->vram_size, s->vram);
|
||||||
vmstate_register_ram(&s->mem_vram, dev);
|
vmstate_register_ram(&s->mem_vram, dev);
|
||||||
|
memory_region_set_log(&s->mem_vram, true, DIRTY_MEMORY_VGA);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TYPE_G364 "sysbus-g364"
|
#define TYPE_G364 "sysbus-g364"
|
||||||
|
@ -1412,6 +1412,7 @@ void sm501_init(MemoryRegion *address_space_mem, uint32_t base,
|
|||||||
memory_region_init_ram(&s->local_mem_region, NULL, "sm501.local",
|
memory_region_init_ram(&s->local_mem_region, NULL, "sm501.local",
|
||||||
local_mem_bytes, &error_abort);
|
local_mem_bytes, &error_abort);
|
||||||
vmstate_register_ram_global(&s->local_mem_region);
|
vmstate_register_ram_global(&s->local_mem_region);
|
||||||
|
memory_region_set_log(&s->local_mem_region, true, DIRTY_MEMORY_VGA);
|
||||||
s->local_mem = memory_region_get_ram_ptr(&s->local_mem_region);
|
s->local_mem = memory_region_get_ram_ptr(&s->local_mem_region);
|
||||||
memory_region_add_subregion(address_space_mem, base, &s->local_mem_region);
|
memory_region_add_subregion(address_space_mem, base, &s->local_mem_region);
|
||||||
|
|
||||||
|
@ -1006,6 +1006,7 @@ static void tcx_realizefn(DeviceState *dev, Error **errp)
|
|||||||
memory_region_init_ram(&s->vram_mem, OBJECT(s), "tcx.vram",
|
memory_region_init_ram(&s->vram_mem, OBJECT(s), "tcx.vram",
|
||||||
s->vram_size * (1 + 4 + 4), &error_abort);
|
s->vram_size * (1 + 4 + 4), &error_abort);
|
||||||
vmstate_register_ram_global(&s->vram_mem);
|
vmstate_register_ram_global(&s->vram_mem);
|
||||||
|
memory_region_set_log(&s->vram_mem, true, DIRTY_MEMORY_VGA);
|
||||||
vram_base = memory_region_get_ram_ptr(&s->vram_mem);
|
vram_base = memory_region_get_ram_ptr(&s->vram_mem);
|
||||||
|
|
||||||
/* 10/ROM : FCode ROM */
|
/* 10/ROM : FCode ROM */
|
||||||
|
Loading…
Reference in New Issue
Block a user