The function is now used by SEV code path. Move it to physmem.c rather
than hmp-cmds.c.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/monitor/monitor.h | 2 --
include/system/memory.h | 2 ++
monitor/hmp-cmds.c | 31 -------------------------------
system/physmem.c | 31 +++++++++++++++++++++++++++++++
4 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h
index 55649a86641..17182e626a7 100644
--- a/include/monitor/monitor.h
+++ b/include/monitor/monitor.h
@@ -42,8 +42,6 @@ int monitor_get_cpu_index(Monitor *mon);
int monitor_puts_locked(Monitor *mon, const char *str);
void monitor_flush_locked(Monitor *mon);
-void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, uint64_t size, Error **errp);
-
void monitor_read_command(MonitorHMP *mon, int show_prompt);
int monitor_read_password(MonitorHMP *mon, ReadLineFunc *readline_func,
void *opaque);
diff --git a/include/system/memory.h b/include/system/memory.h
index 1417132f6d9..e2724e38532 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -3063,4 +3063,6 @@ bool ram_block_discard_is_required(void);
void ram_block_add_cpr_blocker(RAMBlock *rb, Error **errp);
void ram_block_del_cpr_blocker(RAMBlock *rb);
+void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, uint64_t size, Error **errp);
+
#endif
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index 443b8c785dc..521ab8a641c 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -709,37 +709,6 @@ void hmp_physical_memory_dump(Monitor *mon, const QDict *qdict)
memory_dump(mon, count, format, size, addr, true);
}
-void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, uint64_t size, Error **errp)
-{
- Int128 gpa_region_size;
- MemoryRegionSection mrs = memory_region_find(get_system_memory(),
- addr, size);
-
- if (!mrs.mr) {
- error_setg(errp,
- "No memory is mapped at address 0x%" HWADDR_PRIx, addr);
- return NULL;
- }
-
- if (!memory_region_is_ram(mrs.mr) && !memory_region_is_romd(mrs.mr)) {
- error_setg(errp,
- "Memory at address 0x%" HWADDR_PRIx " is not RAM", addr);
- memory_region_unref(mrs.mr);
- return NULL;
- }
-
- gpa_region_size = int128_make64(size);
- if (int128_lt(mrs.size, gpa_region_size)) {
- error_setg(errp, "Size of memory region at 0x%" HWADDR_PRIx
- " exceeded.", addr);
- memory_region_unref(mrs.mr);
- return NULL;
- }
-
- *p_mr = mrs.mr;
- return qemu_map_ram_ptr(mrs.mr->ram_block, mrs.offset_within_region);
-}
-
void hmp_gpa2hva(Monitor *mon, const QDict *qdict)
{
hwaddr addr = qdict_get_int(qdict, "addr");
diff --git a/system/physmem.c b/system/physmem.c
index 7bcbf875736..90bf857c9df 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -4477,3 +4477,34 @@ void ram_block_del_cpr_blocker(RAMBlock *rb)
{
migrate_del_blocker(&rb->cpr_blocker);
}
+
+void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, uint64_t size, Error **errp)
+{
+ Int128 gpa_region_size;
+ MemoryRegionSection mrs = memory_region_find(get_system_memory(),
+ addr, size);
+
+ if (!mrs.mr) {
+ error_setg(errp,
+ "No memory is mapped at address 0x%" HWADDR_PRIx, addr);
+ return NULL;
+ }
+
+ if (!memory_region_is_ram(mrs.mr) && !memory_region_is_romd(mrs.mr)) {
+ error_setg(errp,
+ "Memory at address 0x%" HWADDR_PRIx " is not RAM", addr);
+ memory_region_unref(mrs.mr);
+ return NULL;
+ }
+
+ gpa_region_size = int128_make64(size);
+ if (int128_lt(mrs.size, gpa_region_size)) {
+ error_setg(errp, "Size of memory region at 0x%" HWADDR_PRIx
+ " exceeded.", addr);
+ memory_region_unref(mrs.mr);
+ return NULL;
+ }
+
+ *p_mr = mrs.mr;
+ return qemu_map_ram_ptr(mrs.mr->ram_block, mrs.offset_within_region);
+}
--
2.54.0