Message ID | 20231114163123.74888-3-philmd@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/xen: Have ARM targets use common xen_memory_listener | expand |
On Tue, 14 Nov 2023 18:31, Philippe Mathieu-Daudé <philmd@linaro.org> wrote: >We are going to replace TARGET_PAGE_MASK by a >runtime variable. In order to reduce code duplication, >propagate TARGET_PAGE_MASK to get_physmapping() and >xen_phys_offset_to_gaddr(). > >Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >--- > hw/i386/xen/xen-hvm.c | 18 ++++++++++-------- > 1 file changed, 10 insertions(+), 8 deletions(-) > >diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c >index 8aa6a1ec3b..3b10425986 100644 >--- a/hw/i386/xen/xen-hvm.c >+++ b/hw/i386/xen/xen-hvm.c >@@ -174,11 +174,12 @@ static void xen_ram_init(PCMachineState *pcms, > } > } > >-static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size) >+static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size, >+ int page_mask) > { > XenPhysmap *physmap = NULL; > >- start_addr &= TARGET_PAGE_MASK; >+ start_addr &= page_mask; > > QLIST_FOREACH(physmap, &xen_physmap, list) { > if (range_covers_byte(physmap->start_addr, physmap->size, start_addr)) { >@@ -188,9 +189,10 @@ static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size) > return NULL; > } > >-static hwaddr xen_phys_offset_to_gaddr(hwaddr phys_offset, ram_addr_t size) >+static hwaddr xen_phys_offset_to_gaddr(hwaddr phys_offset, ram_addr_t size, >+ int page_mask) > { >- hwaddr addr = phys_offset & TARGET_PAGE_MASK; >+ hwaddr addr = phys_offset & page_mask; > XenPhysmap *physmap = NULL; > > QLIST_FOREACH(physmap, &xen_physmap, list) { >@@ -252,7 +254,7 @@ static int xen_add_to_physmap(XenIOState *state, > hwaddr phys_offset = memory_region_get_ram_addr(mr); > const char *mr_name; > >- if (get_physmapping(start_addr, size)) { >+ if (get_physmapping(start_addr, size, TARGET_PAGE_MASK)) { > return 0; > } > if (size <= 0) { >@@ -325,7 +327,7 @@ static int xen_remove_from_physmap(XenIOState *state, > XenPhysmap *physmap = NULL; > hwaddr phys_offset = 0; > >- physmap = get_physmapping(start_addr, size); >+ physmap = get_physmapping(start_addr, size, TARGET_PAGE_MASK); > if (physmap == NULL) { > return -1; > } >@@ -373,7 +375,7 @@ static void xen_sync_dirty_bitmap(XenIOState *state, > int rc, i, j; > const XenPhysmap *physmap = NULL; > >- physmap = get_physmapping(start_addr, size); >+ physmap = get_physmapping(start_addr, size, TARGET_PAGE_MASK); > if (physmap == NULL) { > /* not handled */ > return; >@@ -633,7 +635,7 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length) > int rc; > ram_addr_t start_pfn, nb_pages; > >- start = xen_phys_offset_to_gaddr(start, length); >+ start = xen_phys_offset_to_gaddr(start, length, TARGET_PAGE_MASK); > > if (length == 0) { > length = TARGET_PAGE_SIZE; >-- >2.41.0 > > Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index 8aa6a1ec3b..3b10425986 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -174,11 +174,12 @@ static void xen_ram_init(PCMachineState *pcms, } } -static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size) +static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size, + int page_mask) { XenPhysmap *physmap = NULL; - start_addr &= TARGET_PAGE_MASK; + start_addr &= page_mask; QLIST_FOREACH(physmap, &xen_physmap, list) { if (range_covers_byte(physmap->start_addr, physmap->size, start_addr)) { @@ -188,9 +189,10 @@ static XenPhysmap *get_physmapping(hwaddr start_addr, ram_addr_t size) return NULL; } -static hwaddr xen_phys_offset_to_gaddr(hwaddr phys_offset, ram_addr_t size) +static hwaddr xen_phys_offset_to_gaddr(hwaddr phys_offset, ram_addr_t size, + int page_mask) { - hwaddr addr = phys_offset & TARGET_PAGE_MASK; + hwaddr addr = phys_offset & page_mask; XenPhysmap *physmap = NULL; QLIST_FOREACH(physmap, &xen_physmap, list) { @@ -252,7 +254,7 @@ static int xen_add_to_physmap(XenIOState *state, hwaddr phys_offset = memory_region_get_ram_addr(mr); const char *mr_name; - if (get_physmapping(start_addr, size)) { + if (get_physmapping(start_addr, size, TARGET_PAGE_MASK)) { return 0; } if (size <= 0) { @@ -325,7 +327,7 @@ static int xen_remove_from_physmap(XenIOState *state, XenPhysmap *physmap = NULL; hwaddr phys_offset = 0; - physmap = get_physmapping(start_addr, size); + physmap = get_physmapping(start_addr, size, TARGET_PAGE_MASK); if (physmap == NULL) { return -1; } @@ -373,7 +375,7 @@ static void xen_sync_dirty_bitmap(XenIOState *state, int rc, i, j; const XenPhysmap *physmap = NULL; - physmap = get_physmapping(start_addr, size); + physmap = get_physmapping(start_addr, size, TARGET_PAGE_MASK); if (physmap == NULL) { /* not handled */ return; @@ -633,7 +635,7 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length) int rc; ram_addr_t start_pfn, nb_pages; - start = xen_phys_offset_to_gaddr(start, length); + start = xen_phys_offset_to_gaddr(start, length, TARGET_PAGE_MASK); if (length == 0) { length = TARGET_PAGE_SIZE;
We are going to replace TARGET_PAGE_MASK by a runtime variable. In order to reduce code duplication, propagate TARGET_PAGE_MASK to get_physmapping() and xen_phys_offset_to_gaddr(). Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/i386/xen/xen-hvm.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)