ramblock: add new hmp command "info ramblock"
To dump information about ramblocks. It looks like: (qemu) info ramblock Block Name PSize Offset Used Total /objects/mem 2 MiB 0x0000000000000000 0x0000000080000000 0x0000000080000000 vga.vram 4 KiB 0x0000000080060000 0x0000000001000000 0x0000000001000000 /rom@etc/acpi/tables 4 KiB 0x00000000810b0000 0x0000000000020000 0x0000000000200000 pc.bios 4 KiB 0x0000000080000000 0x0000000000040000 0x0000000000040000 0000:00:03.0/e1000.rom 4 KiB 0x0000000081070000 0x0000000000040000 0x0000000000040000 pc.rom 4 KiB 0x0000000080040000 0x0000000000020000 0x0000000000020000 0000:00:02.0/vga.rom 4 KiB 0x0000000081060000 0x0000000000010000 0x0000000000010000 /rom@etc/table-loader 4 KiB 0x00000000812b0000 0x0000000000001000 0x0000000000001000 /rom@etc/acpi/rsdp 4 KiB 0x00000000812b1000 0x0000000000001000 0x0000000000001000 Ramblock is something hidden internally in QEMU implementation, and this command should only be used by mostly QEMU developers on RAM stuff. It is not a command suitable for QMP interface. So only HMP interface is provided for it. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1494562661-9063-4-git-send-email-peterx@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
22951aaaeb
commit
be9b23c4a5
22
exec.c
22
exec.c
@ -71,6 +71,8 @@
|
||||
#include "qemu/mmap-alloc.h"
|
||||
#endif
|
||||
|
||||
#include "monitor/monitor.h"
|
||||
|
||||
//#define DEBUG_SUBPAGE
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
@ -1333,6 +1335,26 @@ void qemu_mutex_unlock_ramlist(void)
|
||||
qemu_mutex_unlock(&ram_list.mutex);
|
||||
}
|
||||
|
||||
void ram_block_dump(Monitor *mon)
|
||||
{
|
||||
RAMBlock *block;
|
||||
char *psize;
|
||||
|
||||
rcu_read_lock();
|
||||
monitor_printf(mon, "%24s %8s %18s %18s %18s\n",
|
||||
"Block Name", "PSize", "Offset", "Used", "Total");
|
||||
RAMBLOCK_FOREACH(block) {
|
||||
psize = size_to_str(block->page_size);
|
||||
monitor_printf(mon, "%24s %8s 0x%016" PRIx64 " 0x%016" PRIx64
|
||||
" 0x%016" PRIx64 "\n", block->idstr, psize,
|
||||
(uint64_t)block->offset,
|
||||
(uint64_t)block->used_length,
|
||||
(uint64_t)block->max_length);
|
||||
g_free(psize);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
/*
|
||||
* FIXME TOCTTOU: this iterates over memory backends' mem-path, which
|
||||
|
@ -785,6 +785,20 @@ STEXI
|
||||
@item info dump
|
||||
@findex dump
|
||||
Display the latest dump status.
|
||||
ETEXI
|
||||
|
||||
{
|
||||
.name = "ramblock",
|
||||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "Display system ramblock information",
|
||||
.cmd = hmp_info_ramblock,
|
||||
},
|
||||
|
||||
STEXI
|
||||
@item info ramblock
|
||||
@findex ramblock
|
||||
Dump all the ramblocks of the system.
|
||||
ETEXI
|
||||
|
||||
{
|
||||
|
6
hmp.c
6
hmp.c
@ -39,6 +39,7 @@
|
||||
#include "qemu-io.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "exec/ramlist.h"
|
||||
#include "hw/intc/intc.h"
|
||||
|
||||
#ifdef CONFIG_SPICE
|
||||
@ -2738,6 +2739,11 @@ void hmp_info_dump(Monitor *mon, const QDict *qdict)
|
||||
qapi_free_DumpQueryResult(result);
|
||||
}
|
||||
|
||||
void hmp_info_ramblock(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
ram_block_dump(mon);
|
||||
}
|
||||
|
||||
void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
Error *err = NULL;
|
||||
|
1
hmp.h
1
hmp.h
@ -140,6 +140,7 @@ void hmp_rocker_ports(Monitor *mon, const QDict *qdict);
|
||||
void hmp_rocker_of_dpa_flows(Monitor *mon, const QDict *qdict);
|
||||
void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_dump(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_ramblock(Monitor *mon, const QDict *qdict);
|
||||
void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict);
|
||||
|
||||
|
@ -73,5 +73,6 @@ void ram_block_notifier_remove(RAMBlockNotifier *n);
|
||||
void ram_block_notify_add(void *host, size_t size);
|
||||
void ram_block_notify_remove(void *host, size_t size);
|
||||
|
||||
void ram_block_dump(Monitor *mon);
|
||||
|
||||
#endif /* RAMLIST_H */
|
||||
|
Loading…
Reference in New Issue
Block a user