On 5/4/18 6:44 pm, KONRAD Frederic wrote: > > > On 04/05/2018 03:22 AM, Philippe Mathieu-Daudé wrote: >> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >> --- >> Sadly I'm missing something, this does not work. > > Hmmm is that supposed to work dynamically? > > If so I think you might need to call > memory_region_update_container_subregions(..) because it will > actually change the map? > > Take a look at how memory_add_subregion works.
Ah, right, I guess it should be: memory_region_transaction_begin(); mr->priority = priority; memory_region_update_pending = true; memory_region_transaction_commit(); as the priority may change the final layout of flatview. > > Thanks, > Fred > >> >> memory.c | 18 +++++++++++++++++- >> 1 file changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/memory.c b/memory.c >> index eaa5fa7f23..ae45ea7779 100644 >> --- a/memory.c >> +++ b/memory.c >> @@ -1225,6 +1225,22 @@ static void memory_region_get_priority(Object >> *obj, Visitor *v, >> visit_type_int32(v, name, &value, errp); >> } >> +static void memory_region_set_priority(Object *obj, Visitor *v, >> + const char *name, void *opaque, >> + Error **errp) >> +{ >> + MemoryRegion *mr = MEMORY_REGION(obj); >> + int32_t priority; >> + Error *local_err = NULL; >> + >> + visit_type_int32(v, name, &priority, &local_err); >> + if (local_err) { >> + error_propagate(errp, local_err); >> + return; >> + } >> + mr->priority = priority; >> +} >> + >> static void memory_region_get_size(Object *obj, Visitor *v, const char >> *name, >> void *opaque, Error **errp) >> { >> @@ -1260,7 +1276,7 @@ static void memory_region_initfn(Object *obj) >> NULL, NULL, &error_abort); >> object_property_add(OBJECT(mr), "priority", "int32", >> memory_region_get_priority, >> - NULL, /* memory_region_set_priority */ >> + memory_region_set_priority, >> NULL, NULL, &error_abort); >> object_property_add(OBJECT(mr), "size", "uint64", >> memory_region_get_size, >> -- Alexey