From 2c1a72635d7bb8dd52b1a80d4504c8dcca0f8209 Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Wed, 21 Feb 2018 08:00:50 -0500 Subject: [PATCH] memory: Implement memory_region_get_ram_addr with mr->ram_block Backports commit 7ebb2745acbb8d910eab07dc5f0aa01a4457703c from qemu --- qemu/aarch64.h | 1 + qemu/aarch64eb.h | 1 + qemu/arm.h | 1 + qemu/armeb.h | 1 + qemu/header_gen.py | 1 + qemu/include/exec/memory.h | 8 +------- qemu/m68k.h | 1 + qemu/memory.c | 5 +++++ qemu/mips.h | 1 + qemu/mips64.h | 1 + qemu/mips64el.h | 1 + qemu/mipsel.h | 1 + qemu/powerpc.h | 1 + qemu/sparc.h | 1 + qemu/sparc64.h | 1 + qemu/x86_64.h | 1 + 16 files changed, 20 insertions(+), 7 deletions(-) diff --git a/qemu/aarch64.h b/qemu/aarch64.h index 882cae6a..19420156 100644 --- a/qemu/aarch64.h +++ b/qemu/aarch64.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_aarch64 #define memory_region_get_may_overlap memory_region_get_may_overlap_aarch64 #define memory_region_get_priority memory_region_get_priority_aarch64 +#define memory_region_get_ram_addr memory_region_get_ram_addr_aarch64 #define memory_region_get_ram_ptr memory_region_get_ram_ptr_aarch64 #define memory_region_get_size memory_region_get_size_aarch64 #define memory_region_info memory_region_info_aarch64 diff --git a/qemu/aarch64eb.h b/qemu/aarch64eb.h index cfa84e39..a3290735 100644 --- a/qemu/aarch64eb.h +++ b/qemu/aarch64eb.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_aarch64eb #define memory_region_get_may_overlap memory_region_get_may_overlap_aarch64eb #define memory_region_get_priority memory_region_get_priority_aarch64eb +#define memory_region_get_ram_addr memory_region_get_ram_addr_aarch64eb #define memory_region_get_ram_ptr memory_region_get_ram_ptr_aarch64eb #define memory_region_get_size memory_region_get_size_aarch64eb #define memory_region_info memory_region_info_aarch64eb diff --git a/qemu/arm.h b/qemu/arm.h index c35783ec..6d59db10 100644 --- a/qemu/arm.h +++ b/qemu/arm.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_arm #define memory_region_get_may_overlap memory_region_get_may_overlap_arm #define memory_region_get_priority memory_region_get_priority_arm +#define memory_region_get_ram_addr memory_region_get_ram_addr_arm #define memory_region_get_ram_ptr memory_region_get_ram_ptr_arm #define memory_region_get_size memory_region_get_size_arm #define memory_region_info memory_region_info_arm diff --git a/qemu/armeb.h b/qemu/armeb.h index ece6834c..50bdd348 100644 --- a/qemu/armeb.h +++ b/qemu/armeb.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_armeb #define memory_region_get_may_overlap memory_region_get_may_overlap_armeb #define memory_region_get_priority memory_region_get_priority_armeb +#define memory_region_get_ram_addr memory_region_get_ram_addr_armeb #define memory_region_get_ram_ptr memory_region_get_ram_ptr_armeb #define memory_region_get_size memory_region_get_size_armeb #define memory_region_info memory_region_info_armeb diff --git a/qemu/header_gen.py b/qemu/header_gen.py index eacbe7b0..894e0329 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -2090,6 +2090,7 @@ symbols = ( 'memory_region_get_fd', 'memory_region_get_may_overlap', 'memory_region_get_priority', + 'memory_region_get_ram_addr', 'memory_region_get_ram_ptr', 'memory_region_get_size', 'memory_region_info', diff --git a/qemu/include/exec/memory.h b/qemu/include/exec/memory.h index f314503e..252d69a7 100644 --- a/qemu/include/exec/memory.h +++ b/qemu/include/exec/memory.h @@ -710,14 +710,8 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr, /** * memory_region_get_ram_addr: Get the ram address associated with a memory * region - * - * DO NOT USE THIS FUNCTION. This is a temporary workaround while the Xen - * code is being reworked. */ -static inline ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr) -{ - return mr->ram_addr; -} +ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr); uint64_t memory_region_get_alignment(const MemoryRegion *mr); diff --git a/qemu/m68k.h b/qemu/m68k.h index c6240bf4..387bc0f7 100644 --- a/qemu/m68k.h +++ b/qemu/m68k.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_m68k #define memory_region_get_may_overlap memory_region_get_may_overlap_m68k #define memory_region_get_priority memory_region_get_priority_m68k +#define memory_region_get_ram_addr memory_region_get_ram_addr_m68k #define memory_region_get_ram_ptr memory_region_get_ram_ptr_m68k #define memory_region_get_size memory_region_get_size_m68k #define memory_region_info memory_region_info_m68k diff --git a/qemu/memory.c b/qemu/memory.c index 24414d72..206c6842 100644 --- a/qemu/memory.c +++ b/qemu/memory.c @@ -1396,6 +1396,11 @@ void *memory_region_get_ram_ptr(MemoryRegion *mr) return ptr + offset; } +ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr) +{ + return mr->ram_block ? mr->ram_block->offset : RAM_ADDR_INVALID; +} + bool memory_region_test_and_clear_dirty(MemoryRegion *mr, hwaddr addr, hwaddr size, unsigned client) { diff --git a/qemu/mips.h b/qemu/mips.h index a6ae37e3..f15a2155 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_mips #define memory_region_get_may_overlap memory_region_get_may_overlap_mips #define memory_region_get_priority memory_region_get_priority_mips +#define memory_region_get_ram_addr memory_region_get_ram_addr_mips #define memory_region_get_ram_ptr memory_region_get_ram_ptr_mips #define memory_region_get_size memory_region_get_size_mips #define memory_region_info memory_region_info_mips diff --git a/qemu/mips64.h b/qemu/mips64.h index 60b95bfb..338c4e63 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_mips64 #define memory_region_get_may_overlap memory_region_get_may_overlap_mips64 #define memory_region_get_priority memory_region_get_priority_mips64 +#define memory_region_get_ram_addr memory_region_get_ram_addr_mips64 #define memory_region_get_ram_ptr memory_region_get_ram_ptr_mips64 #define memory_region_get_size memory_region_get_size_mips64 #define memory_region_info memory_region_info_mips64 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index bb5c169f..63870683 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_mips64el #define memory_region_get_may_overlap memory_region_get_may_overlap_mips64el #define memory_region_get_priority memory_region_get_priority_mips64el +#define memory_region_get_ram_addr memory_region_get_ram_addr_mips64el #define memory_region_get_ram_ptr memory_region_get_ram_ptr_mips64el #define memory_region_get_size memory_region_get_size_mips64el #define memory_region_info memory_region_info_mips64el diff --git a/qemu/mipsel.h b/qemu/mipsel.h index 6a355da4..a4d13d34 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_mipsel #define memory_region_get_may_overlap memory_region_get_may_overlap_mipsel #define memory_region_get_priority memory_region_get_priority_mipsel +#define memory_region_get_ram_addr memory_region_get_ram_addr_mipsel #define memory_region_get_ram_ptr memory_region_get_ram_ptr_mipsel #define memory_region_get_size memory_region_get_size_mipsel #define memory_region_info memory_region_info_mipsel diff --git a/qemu/powerpc.h b/qemu/powerpc.h index 315ac04a..d71acf13 100644 --- a/qemu/powerpc.h +++ b/qemu/powerpc.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_powerpc #define memory_region_get_may_overlap memory_region_get_may_overlap_powerpc #define memory_region_get_priority memory_region_get_priority_powerpc +#define memory_region_get_ram_addr memory_region_get_ram_addr_powerpc #define memory_region_get_ram_ptr memory_region_get_ram_ptr_powerpc #define memory_region_get_size memory_region_get_size_powerpc #define memory_region_info memory_region_info_powerpc diff --git a/qemu/sparc.h b/qemu/sparc.h index a87aa634..b5f911da 100644 --- a/qemu/sparc.h +++ b/qemu/sparc.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_sparc #define memory_region_get_may_overlap memory_region_get_may_overlap_sparc #define memory_region_get_priority memory_region_get_priority_sparc +#define memory_region_get_ram_addr memory_region_get_ram_addr_sparc #define memory_region_get_ram_ptr memory_region_get_ram_ptr_sparc #define memory_region_get_size memory_region_get_size_sparc #define memory_region_info memory_region_info_sparc diff --git a/qemu/sparc64.h b/qemu/sparc64.h index 12be936b..1910c724 100644 --- a/qemu/sparc64.h +++ b/qemu/sparc64.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_sparc64 #define memory_region_get_may_overlap memory_region_get_may_overlap_sparc64 #define memory_region_get_priority memory_region_get_priority_sparc64 +#define memory_region_get_ram_addr memory_region_get_ram_addr_sparc64 #define memory_region_get_ram_ptr memory_region_get_ram_ptr_sparc64 #define memory_region_get_size memory_region_get_size_sparc64 #define memory_region_info memory_region_info_sparc64 diff --git a/qemu/x86_64.h b/qemu/x86_64.h index dc06ce7f..71b2d3ab 100644 --- a/qemu/x86_64.h +++ b/qemu/x86_64.h @@ -2084,6 +2084,7 @@ #define memory_region_get_fd memory_region_get_fd_x86_64 #define memory_region_get_may_overlap memory_region_get_may_overlap_x86_64 #define memory_region_get_priority memory_region_get_priority_x86_64 +#define memory_region_get_ram_addr memory_region_get_ram_addr_x86_64 #define memory_region_get_ram_ptr memory_region_get_ram_ptr_x86_64 #define memory_region_get_size memory_region_get_size_x86_64 #define memory_region_info memory_region_info_x86_64