Re: [Qemu-devel] [RFC PATCH v2 4/4] memory: Add memory_region_set_priority()
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é>> --- >> 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, , 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, , _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, _abort); >> object_property_add(OBJECT(mr), "priority", "int32", >> memory_region_get_priority, >> - NULL, /* memory_region_set_priority */ >> + memory_region_set_priority, >> NULL, NULL, _abort); >> object_property_add(OBJECT(mr), "size", "uint64", >> memory_region_get_size, >> -- Alexey
Re: [Qemu-devel] [RFC PATCH v2 4/4] memory: Add memory_region_set_priority()
On 04/05/2018 03:22 AM, Philippe Mathieu-Daudé wrote: Signed-off-by: Philippe Mathieu-Daudé--- 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. 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, , 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, , _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, _abort); object_property_add(OBJECT(mr), "priority", "int32", memory_region_get_priority, -NULL, /* memory_region_set_priority */ +memory_region_set_priority, NULL, NULL, _abort); object_property_add(OBJECT(mr), "size", "uint64", memory_region_get_size,
Re: [Qemu-devel] [RFC PATCH v2 4/4] memory: Add memory_region_set_priority()
On 5/4/18 11:22 am, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé> --- > Sadly I'm missing something, this does not work. What does not work precisely? memory_region_set_priority() is not called or visit_type_int32() does not return priority, etc? > > 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, , 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, , _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, _abort); > object_property_add(OBJECT(mr), "priority", "int32", > memory_region_get_priority, > -NULL, /* memory_region_set_priority */ > +memory_region_set_priority, > NULL, NULL, _abort); > object_property_add(OBJECT(mr), "size", "uint64", > memory_region_get_size, > -- Alexey
[Qemu-devel] [RFC PATCH v2 4/4] memory: Add memory_region_set_priority()
Signed-off-by: Philippe Mathieu-Daudé--- Sadly I'm missing something, this does not work. 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, , 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, , _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, _abort); object_property_add(OBJECT(mr), "priority", "int32", memory_region_get_priority, -NULL, /* memory_region_set_priority */ +memory_region_set_priority, NULL, NULL, _abort); object_property_add(OBJECT(mr), "size", "uint64", memory_region_get_size, -- 2.16.3