* [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification
@ 2014-08-15 6:53 Peter Crosthwaite
2014-08-15 6:53 ` [Qemu-devel] [PATCH memory v1 1/5] loader: Abstract away ref to memory region names Peter Crosthwaite
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:53 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Hi Paolo,
Another piece to the Memory Region QOMification puzzle. This series gets
rid of the name field of MemoryRegion and converts all users to the QOM
managed Object name.
Regards,
Peter
Peter Crosthwaite (5):
loader: Abstract away ref to memory region names
exec: Abstract away ref to memory region names
memory: constify memory_region_name
memory: Use memory_region_name for name access
memory: Use canonical path component as the name
exec.c | 4 ++--
hw/core/loader.c | 2 +-
include/exec/memory.h | 3 +--
memory.c | 14 ++++++--------
4 files changed, 10 insertions(+), 13 deletions(-)
--
2.0.1.1.gfbfc394
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH memory v1 1/5] loader: Abstract away ref to memory region names
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
@ 2014-08-15 6:53 ` Peter Crosthwaite
2014-08-15 6:54 ` [Qemu-devel] [PATCH memory v1 2/5] exec: " Peter Crosthwaite
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:53 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Use the function provided rather than spying on the struct.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/core/loader.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 2bf6b8f..1a53f0f 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -955,7 +955,7 @@ void do_info_roms(Monitor *mon, const QDict *qdict)
if (rom->mr) {
monitor_printf(mon, "%s"
" size=0x%06zx name=\"%s\"\n",
- rom->mr->name,
+ memory_region_name(rom->mr),
rom->romsize,
rom->name);
} else if (!rom->fw_file) {
--
2.0.1.1.gfbfc394
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH memory v1 2/5] exec: Abstract away ref to memory region names
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
2014-08-15 6:53 ` [Qemu-devel] [PATCH memory v1 1/5] loader: Abstract away ref to memory region names Peter Crosthwaite
@ 2014-08-15 6:54 ` Peter Crosthwaite
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 3/5] memory: constify memory_region_name Peter Crosthwaite
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:54 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Use the function provided rather than spying on the struct.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
exec.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/exec.c b/exec.c
index 765bd94..5f9857c 100644
--- a/exec.c
+++ b/exec.c
@@ -1044,7 +1044,7 @@ static void *file_ram_alloc(RAMBlock *block,
}
/* Make name safe to use with mkstemp by replacing '/' with '_'. */
- sanitized_name = g_strdup(block->mr->name);
+ sanitized_name = g_strdup(memory_region_name(block->mr));
for (c = sanitized_name; *c != '\0'; c++) {
if (*c == '/')
*c = '_';
@@ -1242,7 +1242,7 @@ static ram_addr_t ram_block_add(RAMBlock *new_block)
new_block->host = phys_mem_alloc(new_block->length);
if (!new_block->host) {
fprintf(stderr, "Cannot set up guest memory '%s': %s\n",
- new_block->mr->name, strerror(errno));
+ memory_region_name(new_block->mr), strerror(errno));
exit(1);
}
memory_try_enable_merging(new_block->host, new_block->length);
--
2.0.1.1.gfbfc394
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH memory v1 3/5] memory: constify memory_region_name
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
2014-08-15 6:53 ` [Qemu-devel] [PATCH memory v1 1/5] loader: Abstract away ref to memory region names Peter Crosthwaite
2014-08-15 6:54 ` [Qemu-devel] [PATCH memory v1 2/5] exec: " Peter Crosthwaite
@ 2014-08-15 6:55 ` Peter Crosthwaite
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 4/5] memory: Use memory_region_name for name access Peter Crosthwaite
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:55 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
It doesn't change the MR and some prospective call sites will have
const MRs at hand.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
include/exec/memory.h | 2 +-
memory.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index e2c8e3e..081f85b 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -520,7 +520,7 @@ void memory_region_unregister_iommu_notifier(Notifier *n);
*
* @mr: the memory region being queried
*/
-const char *memory_region_name(MemoryRegion *mr);
+const char *memory_region_name(const MemoryRegion *mr);
/**
* memory_region_is_logging: return whether a memory region is logging writes
diff --git a/memory.c b/memory.c
index 64d7176..8d88cc4 100644
--- a/memory.c
+++ b/memory.c
@@ -1314,7 +1314,7 @@ uint64_t memory_region_size(MemoryRegion *mr)
return int128_get64(mr->size);
}
-const char *memory_region_name(MemoryRegion *mr)
+const char *memory_region_name(const MemoryRegion *mr)
{
return mr->name;
}
--
2.0.1.1.gfbfc394
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH memory v1 4/5] memory: Use memory_region_name for name access
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
` (2 preceding siblings ...)
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 3/5] memory: constify memory_region_name Peter Crosthwaite
@ 2014-08-15 6:55 ` Peter Crosthwaite
2014-08-15 6:56 ` [Qemu-devel] [PATCH memory v1 5/5] memory: Use canonical path component as the name Peter Crosthwaite
2014-08-17 20:43 ` [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Paolo Bonzini
5 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:55 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Despite being local to memory.c, use the helper function. This prepares
support for fully QOMifiying the name field of MR (which will remove
this state from MR completely).
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
memory.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/memory.c b/memory.c
index 8d88cc4..e3ee338 100644
--- a/memory.c
+++ b/memory.c
@@ -2033,8 +2033,8 @@ static void mtree_print_mr(fprintf_function mon_printf, void *f,
mr->romd_mode ? 'R' : '-',
!mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
: '-',
- mr->name,
- mr->alias->name,
+ memory_region_name(mr),
+ memory_region_name(mr->alias),
mr->alias_offset,
mr->alias_offset
+ (int128_nz(mr->size) ?
@@ -2052,7 +2052,7 @@ static void mtree_print_mr(fprintf_function mon_printf, void *f,
mr->romd_mode ? 'R' : '-',
!mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
: '-',
- mr->name);
+ memory_region_name(mr));
}
QTAILQ_INIT(&submr_print_queue);
@@ -2101,7 +2101,7 @@ void mtree_info(fprintf_function mon_printf, void *f)
/* print aliased regions */
QTAILQ_FOREACH(ml, &ml_head, queue) {
if (!ml->printed) {
- mon_printf(f, "%s\n", ml->mr->name);
+ mon_printf(f, "%s\n", memory_region_name(ml->mr));
mtree_print_mr(mon_printf, f, ml->mr, 0, 0, &ml_head);
}
}
--
2.0.1.1.gfbfc394
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH memory v1 5/5] memory: Use canonical path component as the name
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
` (3 preceding siblings ...)
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 4/5] memory: Use memory_region_name for name access Peter Crosthwaite
@ 2014-08-15 6:56 ` Peter Crosthwaite
2014-08-17 20:43 ` [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Paolo Bonzini
5 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2014-08-15 6:56 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Rather than having the name as separate state. This prepares support
for creating a MemoryRegion dynamically (i.e. without
memory_region_init() and friends) and the MemoryRegion still getting
a usable name.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
include/exec/memory.h | 1 -
memory.c | 4 +---
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 081f85b..9b3e6f7 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -162,7 +162,6 @@ struct MemoryRegion {
QTAILQ_HEAD(subregions, MemoryRegion) subregions;
QTAILQ_ENTRY(MemoryRegion) subregions_link;
QTAILQ_HEAD(coalesced_ranges, CoalescedMemoryRange) coalesced;
- const char *name;
uint8_t dirty_log_mask;
unsigned ioeventfd_nb;
MemoryRegionIoeventfd *ioeventfds;
diff --git a/memory.c b/memory.c
index e3ee338..d4de571 100644
--- a/memory.c
+++ b/memory.c
@@ -915,7 +915,6 @@ void memory_region_init(MemoryRegion *mr,
if (size == UINT64_MAX) {
mr->size = int128_2_64();
}
- mr->name = g_strdup(name);
if (name) {
object_property_add_child_array(owner, name, OBJECT(mr));
@@ -1260,7 +1259,6 @@ static void memory_region_finalize(Object *obj)
assert(memory_region_transaction_depth == 0);
mr->destructor(mr);
memory_region_clear_coalescing(mr);
- g_free((char *)mr->name);
g_free(mr->ioeventfds);
}
@@ -1316,7 +1314,7 @@ uint64_t memory_region_size(MemoryRegion *mr)
const char *memory_region_name(const MemoryRegion *mr)
{
- return mr->name;
+ return object_get_canonical_path_component(OBJECT(mr));
}
bool memory_region_is_ram(MemoryRegion *mr)
--
2.0.1.1.gfbfc394
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
` (4 preceding siblings ...)
2014-08-15 6:56 ` [Qemu-devel] [PATCH memory v1 5/5] memory: Use canonical path component as the name Peter Crosthwaite
@ 2014-08-17 20:43 ` Paolo Bonzini
5 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2014-08-17 20:43 UTC (permalink / raw)
To: Peter Crosthwaite, qemu-devel
Il 15/08/2014 08:53, Peter Crosthwaite ha scritto:
> Hi Paolo,
>
> Another piece to the Memory Region QOMification puzzle. This series gets
> rid of the name field of MemoryRegion and converts all users to the QOM
> managed Object name.
>
> Regards,
> Peter
>
>
> Peter Crosthwaite (5):
> loader: Abstract away ref to memory region names
> exec: Abstract away ref to memory region names
> memory: constify memory_region_name
> memory: Use memory_region_name for name access
> memory: Use canonical path component as the name
>
> exec.c | 4 ++--
> hw/core/loader.c | 2 +-
> include/exec/memory.h | 3 +--
> memory.c | 14 ++++++--------
> 4 files changed, 10 insertions(+), 13 deletions(-)
>
Thanks, applied all to memory branch.
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-08-17 20:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-15 6:53 [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Peter Crosthwaite
2014-08-15 6:53 ` [Qemu-devel] [PATCH memory v1 1/5] loader: Abstract away ref to memory region names Peter Crosthwaite
2014-08-15 6:54 ` [Qemu-devel] [PATCH memory v1 2/5] exec: " Peter Crosthwaite
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 3/5] memory: constify memory_region_name Peter Crosthwaite
2014-08-15 6:55 ` [Qemu-devel] [PATCH memory v1 4/5] memory: Use memory_region_name for name access Peter Crosthwaite
2014-08-15 6:56 ` [Qemu-devel] [PATCH memory v1 5/5] memory: Use canonical path component as the name Peter Crosthwaite
2014-08-17 20:43 ` [Qemu-devel] [PATCH memory v1 0/5] MemoryRegion Name QOMification Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).