[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [QEMU][RFC PATCH 3/6] memory: Add xen memory hook
On 03/26/2012 12:02 PM, Avi Kivity wrote: On 03/26/2012 01:01 PM, Stefano Stabellini wrote:On Sun, 25 Mar 2012, Avi Kivity wrote:On 03/23/2012 06:37 PM, Jan Kiszka wrote:On 2012-03-23 16:08, Julien Grall wrote:On 03/22/2012 05:44 PM, Jan Kiszka wrote:static void core_region_nop(MemoryListener *listener, diff --git a/ioport.c b/ioport.c index 78a3b89..073ed75 100644 --- a/ioport.c +++ b/ioport.c @@ -28,6 +28,7 @@ #include "ioport.h" #include "trace.h" #include "memory.h" +#include "hw/xen.h" /***********************************************************/ /* IO Port */ @@ -155,6 +156,11 @@ int register_ioport_read(pio_addr_t start, int length, int size, i); ioport_opaque[i] = opaque; } + + if (xen_enabled()) { + xen_map_iorange(start, length, 0); + } + return 0; } @@ -175,7 +181,13 @@ int register_ioport_write(pio_addr_t start, int length, int size, i); ioport_opaque[i] = opaque; } + + if (xen_enabled()) { + xen_map_iorange(start, length, 0); + } + return 0; + } static uint32_t ioport_readb_thunk(void *opaque, uint32_t addr) @@ -260,6 +272,11 @@ void isa_unassign_ioport(pio_addr_t start, int length) ioport_destructor_table[start](ioport_opaque[start]); ioport_destructor_table[start] = NULL; } + + if (xen_enabled()) { + xen_unmap_iorange(start, length, 0); + } + for(i = start; i< start + length; i++) { ioport_read_table[0][i] = NULL; ioport_read_table[1][i] = NULL;memory_listener_register(xen_hooks, system_io)?QEMU doesn't seem to call region_add/region_del for ioport. Moreover, some of ioport are directly register without using memory hook (for example cirrus vga). What is the best way to do it ?I haven't looked at details. Maybe it is just a combination of "use case not yet considered, but can easily be added" and "need to switch legacy code to new scheme". Then this still remains the better option than this hook. Avi?Just the second - region_add/del will be called, but only for ioports registered via the MemoryRegion APIs.It looks like there are quite a few register_ioport_read/write left around, especially in the following files: hw/acpi_piix4.c hw/cirrus_vga.c hw/serial.c hw/pckbd.c hw/pc.c I guess they should all be converted to memory_region_init_io, right?Right I will modify theses files and send a different patch series. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |