Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
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, &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,
--
2.16.3
On 5/4/18 11:22 am, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> 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, &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
On 04/05/2018 03:22 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@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.
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,
>
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é <f4bug@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
© 2016 - 2026 Red Hat, Inc.