qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/5] memory: Add 'priority' property setter
@ 2021-03-27 14:34 Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.0 v3 1/5] memory: Fix memory_region 'priority' property sign Philippe Mathieu-Daudé
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

The first patch is an old fix, it would be nice to get it
merged eventually, but not a problem during years, so can
also wait 6.1.

The second patch add the memory_region_set_priority() helper
useful to memory controller devices.

The rest add the 'size'/'priority' object setters.

Supersedes: <20180405012241.25714-1-f4bug@amsat.org>
https://www.mail-archive.com/qemu-devel@nongnu.org/msg525635.html

Philippe Mathieu-Daudé (5):
  memory: Fix memory_region 'priority' property sign
  memory: Add memory_region_set_priority()
  memory: Rename MemoryRegion object getters
  memory: Add setter for MemoryRegion object 'size' property
  memory: Add setter for MemoryRegion object 'priority' property

 include/exec/memory.h | 10 ++++++++
 softmmu/memory.c      | 56 +++++++++++++++++++++++++++++++++++--------
 2 files changed, 56 insertions(+), 10 deletions(-)

-- 
2.26.2



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH-for-6.0 v3 1/5] memory: Fix memory_region 'priority' property sign
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
@ 2021-03-27 14:34 ` Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 2/5] memory: Add memory_region_set_priority() Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

Priorities can be negative, fix this limitation.

Fixes: d33382da9ab ("memory: MemoryRegion: Add may-overlap and priority props")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 softmmu/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/softmmu/memory.c b/softmmu/memory.c
index d4493ef9e43..4fbeee02dc7 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -1257,7 +1257,7 @@ static void memory_region_initfn(Object *obj)
 
     object_property_add_uint64_ptr(OBJECT(mr), "addr",
                                    &mr->addr, OBJ_PROP_FLAG_READ);
-    object_property_add(OBJECT(mr), "priority", "uint32",
+    object_property_add(OBJECT(mr), "priority", "int32",
                         memory_region_get_priority,
                         NULL, /* memory_region_set_priority */
                         NULL, NULL);
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH-for-6.1 v3 2/5] memory: Add memory_region_set_priority()
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.0 v3 1/5] memory: Fix memory_region 'priority' property sign Philippe Mathieu-Daudé
@ 2021-03-27 14:34 ` Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 3/5] memory: Rename MemoryRegion object getters Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

Add an helper to change the priority of a memory region at runtime.

Suggested-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 include/exec/memory.h | 10 ++++++++++
 softmmu/memory.c      | 11 +++++++++++
 2 files changed, 21 insertions(+)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index 5728a681b27..6ad9ff83457 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1983,6 +1983,16 @@ void memory_region_set_size(MemoryRegion *mr, uint64_t size);
 void memory_region_set_alias_offset(MemoryRegion *mr,
                                     hwaddr offset);
 
+/**
+ * memory_region_set_priority: dynamically update the priority of a region.
+ *
+ * Dynamically updates the priority of a region.
+ *
+ * @mr: the #MemoryRegion to be updated.
+ * @priority: priority of the region.
+ */
+void memory_region_set_priority(MemoryRegion *mr, int priority);
+
 /**
  * memory_region_present: checks if an address relative to a @container
  * translates into #MemoryRegion within @container
diff --git a/softmmu/memory.c b/softmmu/memory.c
index 4fbeee02dc7..fdba938f299 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -2504,6 +2504,17 @@ void memory_region_set_size(MemoryRegion *mr, uint64_t size)
     memory_region_transaction_commit();
 }
 
+void memory_region_set_priority(MemoryRegion *mr, int priority)
+{
+    if (priority == mr->priority) {
+        return;
+    }
+    memory_region_transaction_begin();
+    mr->priority = priority;
+    memory_region_update_pending = true;
+    memory_region_transaction_commit();
+}
+
 static void memory_region_readd_subregion(MemoryRegion *mr)
 {
     MemoryRegion *container = mr->container;
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH-for-6.1 v3 3/5] memory: Rename MemoryRegion object getters
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.0 v3 1/5] memory: Fix memory_region 'priority' property sign Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 2/5] memory: Add memory_region_set_priority() Philippe Mathieu-Daudé
@ 2021-03-27 14:34 ` Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 4/5] memory: Add setter for MemoryRegion object 'size' property Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

We want to add the corresponding object setters, but the
memory_region_set_size() / memory_region_set_priority()
functions already exist. Rename the getters so match with
the setters we are going to add in the next patches.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 softmmu/memory.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/softmmu/memory.c b/softmmu/memory.c
index fdba938f299..3f4cd4e85d7 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -1217,9 +1217,9 @@ static Object *memory_region_resolve_container(Object *obj, void *opaque,
     return OBJECT(mr->container);
 }
 
-static void memory_region_get_priority(Object *obj, Visitor *v,
-                                       const char *name, void *opaque,
-                                       Error **errp)
+static void memory_region_priority_getter(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     int32_t value = mr->priority;
@@ -1227,8 +1227,9 @@ static void memory_region_get_priority(Object *obj, Visitor *v,
     visit_type_int32(v, name, &value, errp);
 }
 
-static void memory_region_get_size(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+static void memory_region_size_getter(Object *obj, Visitor *v,
+                                      const char *name, void *opaque,
+                                      Error **errp)
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     uint64_t value = memory_region_size(mr);
@@ -1258,12 +1259,12 @@ static void memory_region_initfn(Object *obj)
     object_property_add_uint64_ptr(OBJECT(mr), "addr",
                                    &mr->addr, OBJ_PROP_FLAG_READ);
     object_property_add(OBJECT(mr), "priority", "int32",
-                        memory_region_get_priority,
-                        NULL, /* memory_region_set_priority */
+                        memory_region_priority_getter,
+                        NULL, /* memory_region_priority_setter */
                         NULL, NULL);
     object_property_add(OBJECT(mr), "size", "uint64",
-                        memory_region_get_size,
-                        NULL, /* memory_region_set_size, */
+                        memory_region_size_getter,
+                        NULL, /* memory_region_size_setter, */
                         NULL, NULL);
 }
 
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH-for-6.1 v3 4/5] memory: Add setter for MemoryRegion object 'size' property
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 3/5] memory: Rename MemoryRegion object getters Philippe Mathieu-Daudé
@ 2021-03-27 14:34 ` Philippe Mathieu-Daudé
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 5/5] memory: Add setter for MemoryRegion object 'priority' property Philippe Mathieu-Daudé
  2021-03-27 16:58 ` [PATCH v3 0/5] memory: Add 'priority' property setter Peter Maydell
  5 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 softmmu/memory.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/softmmu/memory.c b/softmmu/memory.c
index 3f4cd4e85d7..1a5b8a62eb9 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -1237,6 +1237,18 @@ static void memory_region_size_getter(Object *obj, Visitor *v,
     visit_type_uint64(v, name, &value, errp);
 }
 
+static void memory_region_size_setter(Object *obj, Visitor *v,
+                                      const char *name, void *opaque,
+                                      Error **errp)
+{
+    MemoryRegion *mr = MEMORY_REGION(obj);
+    uint64_t size;
+
+    if (visit_type_uint64(v, name, &size, errp)) {
+        memory_region_set_size(mr, size);
+    }
+}
+
 static void memory_region_initfn(Object *obj)
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
@@ -1264,7 +1276,7 @@ static void memory_region_initfn(Object *obj)
                         NULL, NULL);
     object_property_add(OBJECT(mr), "size", "uint64",
                         memory_region_size_getter,
-                        NULL, /* memory_region_size_setter, */
+                        memory_region_size_setter,
                         NULL, NULL);
 }
 
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH-for-6.1 v3 5/5] memory: Add setter for MemoryRegion object 'priority' property
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 4/5] memory: Add setter for MemoryRegion object 'size' property Philippe Mathieu-Daudé
@ 2021-03-27 14:34 ` Philippe Mathieu-Daudé
  2021-03-27 16:58 ` [PATCH v3 0/5] memory: Add 'priority' property setter Peter Maydell
  5 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 14:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic,
	Philippe Mathieu-Daudé,
	Peter Maydell

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 softmmu/memory.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/softmmu/memory.c b/softmmu/memory.c
index 1a5b8a62eb9..371e52b300e 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -1227,6 +1227,18 @@ static void memory_region_priority_getter(Object *obj, Visitor *v,
     visit_type_int32(v, name, &value, errp);
 }
 
+static void memory_region_priority_setter(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
+{
+    MemoryRegion *mr = MEMORY_REGION(obj);
+    int32_t priority;
+
+    if (visit_type_int32(v, name, &priority, errp)) {
+        memory_region_set_priority(mr, priority);
+    }
+}
+
 static void memory_region_size_getter(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
                                       Error **errp)
@@ -1272,7 +1284,7 @@ static void memory_region_initfn(Object *obj)
                                    &mr->addr, OBJ_PROP_FLAG_READ);
     object_property_add(OBJECT(mr), "priority", "int32",
                         memory_region_priority_getter,
-                        NULL, /* memory_region_priority_setter */
+                        memory_region_priority_setter,
                         NULL, NULL);
     object_property_add(OBJECT(mr), "size", "uint64",
                         memory_region_size_getter,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/5] memory: Add 'priority' property setter
  2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2021-03-27 14:34 ` [PATCH-for-6.1 v3 5/5] memory: Add setter for MemoryRegion object 'priority' property Philippe Mathieu-Daudé
@ 2021-03-27 16:58 ` Peter Maydell
  2021-03-27 18:44   ` Philippe Mathieu-Daudé
  5 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2021-03-27 16:58 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic, QEMU Developers

On Sat, 27 Mar 2021 at 14:34, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> The first patch is an old fix, it would be nice to get it
> merged eventually, but not a problem during years, so can
> also wait 6.1.
>
> The second patch add the memory_region_set_priority() helper
> useful to memory controller devices.
>
> The rest add the 'size'/'priority' object setters.

Do you have a series which makes use of these new APIs?

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/5] memory: Add 'priority' property setter
  2021-03-27 16:58 ` [PATCH v3 0/5] memory: Add 'priority' property setter Peter Maydell
@ 2021-03-27 18:44   ` Philippe Mathieu-Daudé
  2021-03-27 19:43     ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-03-27 18:44 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic, QEMU Developers

On 3/27/21 5:58 PM, Peter Maydell wrote:
> On Sat, 27 Mar 2021 at 14:34, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>>
>> The first patch is an old fix, it would be nice to get it
>> merged eventually, but not a problem during years, so can
>> also wait 6.1.
>>
>> The second patch add the memory_region_set_priority() helper
>> useful to memory controller devices.
>>
>> The rest add the 'size'/'priority' object setters.
> 
> Do you have a series which makes use of these new APIs?

Yes, new board / SoC, many patches, I'm trying to split to
have review because I don't expect many developers to review
a series adding 20+ devices... So far:

 87 files changed, 8805 insertions(+), 97 deletions(-)

Part of them already posted:

- hw/misc: Add support for interleaved memory accesses
https://www.mail-archive.com/qemu-devel@nongnu.org/msg730721.html

- memory_region_add_subregion_aliased() helper
https://www.mail-archive.com/qemu-devel@nongnu.org/msg795414.html

I can send an omnibus series if you prefer.

Thanks,

Phil.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3 0/5] memory: Add 'priority' property setter
  2021-03-27 18:44   ` Philippe Mathieu-Daudé
@ 2021-03-27 19:43     ` Peter Maydell
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2021-03-27 19:43 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Alexey Kardashevskiy, Paolo Bonzini, KONRAD Frederic, QEMU Developers

On Sat, 27 Mar 2021 at 18:44, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> On 3/27/21 5:58 PM, Peter Maydell wrote:
> > On Sat, 27 Mar 2021 at 14:34, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> >>
> >> The first patch is an old fix, it would be nice to get it
> >> merged eventually, but not a problem during years, so can
> >> also wait 6.1.
> >>
> >> The second patch add the memory_region_set_priority() helper
> >> useful to memory controller devices.
> >>
> >> The rest add the 'size'/'priority' object setters.
> >
> > Do you have a series which makes use of these new APIs?
>
> Yes, new board / SoC, many patches, I'm trying to split to
> have review because I don't expect many developers to review
> a series adding 20+ devices...

> I can send an omnibus series if you prefer.

No, you don't need to send a series, but a brief description
of the kind of device that would want to be able to dynamically set
MR size and priority would be helpful, I think.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-03-27 19:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-27 14:34 [PATCH v3 0/5] memory: Add 'priority' property setter Philippe Mathieu-Daudé
2021-03-27 14:34 ` [PATCH-for-6.0 v3 1/5] memory: Fix memory_region 'priority' property sign Philippe Mathieu-Daudé
2021-03-27 14:34 ` [PATCH-for-6.1 v3 2/5] memory: Add memory_region_set_priority() Philippe Mathieu-Daudé
2021-03-27 14:34 ` [PATCH-for-6.1 v3 3/5] memory: Rename MemoryRegion object getters Philippe Mathieu-Daudé
2021-03-27 14:34 ` [PATCH-for-6.1 v3 4/5] memory: Add setter for MemoryRegion object 'size' property Philippe Mathieu-Daudé
2021-03-27 14:34 ` [PATCH-for-6.1 v3 5/5] memory: Add setter for MemoryRegion object 'priority' property Philippe Mathieu-Daudé
2021-03-27 16:58 ` [PATCH v3 0/5] memory: Add 'priority' property setter Peter Maydell
2021-03-27 18:44   ` Philippe Mathieu-Daudé
2021-03-27 19:43     ` Peter Maydell

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).