xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw()
@ 2025-09-30  8:21 Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 01/18] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
                   ` (17 more replies)
  0 siblings, 18 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Since v1:
- Removed extra 'len' arg in address_space_is_io (rth)
Since v2:
- Fixed vhost change
- Better describe cpu_physical_memory_rw() removal (thuth)

---

The cpu_physical_memory API is legacy (see commit b7ecba0f6f6):

  ``cpu_physical_memory_*``
  ~~~~~~~~~~~~~~~~~~~~~~~~~

  These are convenience functions which are identical to
  ``address_space_*`` but operate specifically on the system address space,
  always pass a ``MEMTXATTRS_UNSPECIFIED`` set of memory attributes and
  ignore whether the memory transaction succeeded or failed.
  For new code they are better avoided:
  ...

This series removes:
  - cpu_physical_memory_is_io()
  - cpu_physical_memory_rw()
and start converting some
  - cpu_physical_memory_map()
  - cpu_physical_memory_unmap()
calls.

Based-on: <20250922192940.2908002-1-richard.henderson@linaro.org>
          "system/memory: Split address_space_write_rom_internal"

Philippe Mathieu-Daudé (18):
  docs/devel/loads-stores: Stop mentioning
    cpu_physical_memory_write_rom()
  system/memory: Better describe @plen argument of flatview_translate()
  system/memory: Factor address_space_is_io() out
  target/i386/arch_memory_mapping: Use address_space_memory_is_io()
  hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call()
  system/physmem: Remove cpu_physical_memory_is_io()
  system/physmem: Pass address space argument to
    cpu_flush_icache_range()
  hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w()
  target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw()
  target/i386/whpx: Replace legacy cpu_physical_memory_rw() call
  target/i386/kvm: Replace legacy cpu_physical_memory_rw() call
  target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback
  hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item()
  system/physmem: Un-inline cpu_physical_memory_read/write()
  system/physmem: Avoid cpu_physical_memory_rw when is_write is constant
  system/physmem: Remove legacy cpu_physical_memory_rw()
  hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls
  hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call

 docs/devel/loads-stores.rst            |  6 +--
 scripts/coccinelle/exec_rw_const.cocci | 22 -----------
 include/exec/cpu-common.h              | 18 +--------
 include/system/memory.h                | 16 +++++++-
 hw/core/loader.c                       |  2 +-
 hw/s390x/sclp.c                        | 14 ++++---
 hw/virtio/vhost.c                      |  7 +++-
 hw/virtio/virtio.c                     | 10 +++--
 hw/xen/xen-hvm-common.c                |  8 ++--
 system/physmem.c                       | 51 ++++++++++++++------------
 target/i386/arch_memory_mapping.c      | 10 ++---
 target/i386/kvm/xen-emu.c              |  4 +-
 target/i386/nvmm/nvmm-all.c            |  5 ++-
 target/i386/whpx/whpx-all.c            |  7 +++-
 target/s390x/mmu_helper.c              |  6 ++-
 15 files changed, 92 insertions(+), 94 deletions(-)

-- 
2.51.0



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

* [PATCH v3 01/18] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate() Philippe Mathieu-Daudé
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Update the documentation after commit 3c8133f9737 ("Rename
cpu_physical_memory_write_rom() to address_space_write_rom()").

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 docs/devel/loads-stores.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/devel/loads-stores.rst b/docs/devel/loads-stores.rst
index 9471bac8599..f9b565da57a 100644
--- a/docs/devel/loads-stores.rst
+++ b/docs/devel/loads-stores.rst
@@ -474,7 +474,7 @@ This function is intended for use by the GDB stub and similar code.
 It takes a virtual address, converts it to a physical address via
 an MMU lookup using the current settings of the specified CPU,
 and then performs the access (using ``address_space_rw`` for
-reads or ``cpu_physical_memory_write_rom`` for writes).
+reads or ``address_space_write_rom`` for writes).
 This means that if the access is a write to a ROM then this
 function will modify the contents (whereas a normal guest CPU access
 would ignore the write attempt).
-- 
2.51.0



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

* [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 01/18] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:24   ` Thomas Huth
  2025-09-30  8:21 ` [PATCH v3 03/18] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

flatview_translate()'s @plen argument is output-only and can be NULL.

When Xen is enabled, only update @plen_out when non-NULL.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/system/memory.h | 5 +++--
 system/physmem.c        | 9 +++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/include/system/memory.h b/include/system/memory.h
index aa85fc27a10..3e5bf3ef05e 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -2992,13 +2992,14 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
  * @addr: address within that address space
  * @xlat: pointer to address within the returned memory region section's
  * #MemoryRegion.
- * @len: pointer to length
+ * @plen_out: pointer to valid read/write length of the translated address.
+ *            It can be @NULL when we don't care about it.
  * @is_write: indicates the transfer direction
  * @attrs: memory attributes
  */
 MemoryRegion *flatview_translate(FlatView *fv,
                                  hwaddr addr, hwaddr *xlat,
-                                 hwaddr *len, bool is_write,
+                                 hwaddr *plen_out, bool is_write,
                                  MemTxAttrs attrs);
 
 static inline MemoryRegion *address_space_translate(AddressSpace *as,
diff --git a/system/physmem.c b/system/physmem.c
index 8a8be3a80e2..86422f294e2 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -566,7 +566,7 @@ iotlb_fail:
 
 /* Called from RCU critical section */
 MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
-                                 hwaddr *plen, bool is_write,
+                                 hwaddr *plen_out, bool is_write,
                                  MemTxAttrs attrs)
 {
     MemoryRegion *mr;
@@ -574,13 +574,14 @@ MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
     AddressSpace *as = NULL;
 
     /* This can be MMIO, so setup MMIO bit. */
-    section = flatview_do_translate(fv, addr, xlat, plen, NULL,
+    section = flatview_do_translate(fv, addr, xlat, plen_out, NULL,
                                     is_write, true, &as, attrs);
     mr = section.mr;
 
-    if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) {
+    if (xen_enabled() && plen_out && memory_access_is_direct(mr, is_write,
+                                                             attrs)) {
         hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - addr;
-        *plen = MIN(page, *plen);
+        *plen_out = MIN(page, *plen_out);
     }
 
     return mr;
-- 
2.51.0



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

* [PATCH v3 03/18] system/memory: Factor address_space_is_io() out
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 01/18] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 04/18] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Factor address_space_is_io() out of cpu_physical_memory_is_io().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 include/system/memory.h |  9 +++++++++
 system/physmem.c        | 21 ++++++++++++---------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/include/system/memory.h b/include/system/memory.h
index 3e5bf3ef05e..546c643961d 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -3030,6 +3030,15 @@ static inline MemoryRegion *address_space_translate(AddressSpace *as,
 bool address_space_access_valid(AddressSpace *as, hwaddr addr, hwaddr len,
                                 bool is_write, MemTxAttrs attrs);
 
+/**
+ * address_space_is_io: check whether an guest physical addresses
+ *                      whithin an address space is I/O memory.
+ *
+ * @as: #AddressSpace to be accessed
+ * @addr: address within that address space
+ */
+bool address_space_is_io(AddressSpace *as, hwaddr addr);
+
 /* address_space_map: map a physical memory region into a host virtual address
  *
  * May map a subset of the requested range, given by and returned in @plen.
diff --git a/system/physmem.c b/system/physmem.c
index 86422f294e2..84d7754ccab 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3359,6 +3359,17 @@ bool address_space_access_valid(AddressSpace *as, hwaddr addr,
     return flatview_access_valid(fv, addr, len, is_write, attrs);
 }
 
+bool address_space_is_io(AddressSpace *as, hwaddr addr)
+{
+    MemoryRegion *mr;
+
+    RCU_READ_LOCK_GUARD();
+    mr = address_space_translate(as, addr, &addr, NULL, false,
+                                 MEMTXATTRS_UNSPECIFIED);
+
+    return !(memory_region_is_ram(mr) || memory_region_is_romd(mr));
+}
+
 static hwaddr
 flatview_extend_translation(FlatView *fv, hwaddr addr,
                             hwaddr target_len,
@@ -3755,15 +3766,7 @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,
 
 bool cpu_physical_memory_is_io(hwaddr phys_addr)
 {
-    MemoryRegion*mr;
-    hwaddr l = 1;
-
-    RCU_READ_LOCK_GUARD();
-    mr = address_space_translate(&address_space_memory,
-                                 phys_addr, &phys_addr, &l, false,
-                                 MEMTXATTRS_UNSPECIFIED);
-
-    return !(memory_region_is_ram(mr) || memory_region_is_romd(mr));
+    return address_space_is_io(&address_space_memory, phys_addr);
 }
 
 int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque)
-- 
2.51.0



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

* [PATCH v3 04/18] target/i386/arch_memory_mapping: Use address_space_memory_is_io()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 03/18] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 05/18] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Since all functions have an address space argument, it is
trivial to replace cpu_physical_memory_is_io() by
address_space_memory_is_io().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/arch_memory_mapping.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_mapping.c
index a2398c21732..560f4689abc 100644
--- a/target/i386/arch_memory_mapping.c
+++ b/target/i386/arch_memory_mapping.c
@@ -35,7 +35,7 @@ static void walk_pte(MemoryMappingList *list, AddressSpace *as,
         }
 
         start_paddr = (pte & ~0xfff) & ~(0x1ULL << 63);
-        if (cpu_physical_memory_is_io(start_paddr)) {
+        if (address_space_is_io(as, start_paddr)) {
             /* I/O region */
             continue;
         }
@@ -65,7 +65,7 @@ static void walk_pte2(MemoryMappingList *list, AddressSpace *as,
         }
 
         start_paddr = pte & ~0xfff;
-        if (cpu_physical_memory_is_io(start_paddr)) {
+        if (address_space_is_io(as, start_paddr)) {
             /* I/O region */
             continue;
         }
@@ -100,7 +100,7 @@ static void walk_pde(MemoryMappingList *list, AddressSpace *as,
         if (pde & PG_PSE_MASK) {
             /* 2 MB page */
             start_paddr = (pde & ~0x1fffff) & ~(0x1ULL << 63);
-            if (cpu_physical_memory_is_io(start_paddr)) {
+            if (address_space_is_io(as, start_paddr)) {
                 /* I/O region */
                 continue;
             }
@@ -142,7 +142,7 @@ static void walk_pde2(MemoryMappingList *list, AddressSpace *as,
              */
             high_paddr = ((hwaddr)(pde & 0x1fe000) << 19);
             start_paddr = (pde & ~0x3fffff) | high_paddr;
-            if (cpu_physical_memory_is_io(start_paddr)) {
+            if (address_space_is_io(as, start_paddr)) {
                 /* I/O region */
                 continue;
             }
@@ -203,7 +203,7 @@ static void walk_pdpe(MemoryMappingList *list, AddressSpace *as,
         if (pdpe & PG_PSE_MASK) {
             /* 1 GB page */
             start_paddr = (pdpe & ~0x3fffffff) & ~(0x1ULL << 63);
-            if (cpu_physical_memory_is_io(start_paddr)) {
+            if (address_space_is_io(as, start_paddr)) {
                 /* I/O region */
                 continue;
             }
-- 
2.51.0



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

* [PATCH v3 05/18] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 04/18] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 06/18] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

When cpu_address_space_init() isn't called during vCPU creation,
its single address space is the global &address_space_memory.

As s390x boards don't call cpu_address_space_init(),
cpu_get_address_space(CPU(cpu), 0) returns &address_space_memory.

We can then replace cpu_physical_memory_is_io() by the semantically
equivalent address_space_memory_is_io() call.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/s390x/sclp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 9718564fa42..f507b36cd91 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -16,6 +16,7 @@
 #include "qemu/units.h"
 #include "qapi/error.h"
 #include "hw/boards.h"
+#include "system/memory.h"
 #include "hw/s390x/sclp.h"
 #include "hw/s390x/event-facility.h"
 #include "hw/s390x/s390-pci-bus.h"
@@ -301,6 +302,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
     CPUS390XState *env = &cpu->env;
     SCLPDevice *sclp = get_sclp_device();
     SCLPDeviceClass *sclp_c = SCLP_GET_CLASS(sclp);
+    AddressSpace *as = cpu_get_address_space(CPU(cpu), 0);
     SCCBHeader header;
     g_autofree SCCB *work_sccb = NULL;
 
@@ -308,7 +310,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
     if (env->psw.mask & PSW_MASK_PSTATE) {
         return -PGM_PRIVILEGED;
     }
-    if (cpu_physical_memory_is_io(sccb)) {
+    if (address_space_is_io(as, sccb)) {
         return -PGM_ADDRESSING;
     }
     if ((sccb & ~0x1fffUL) == 0 || (sccb & ~0x1fffUL) == env->psa
-- 
2.51.0



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

* [PATCH v3 06/18] system/physmem: Remove cpu_physical_memory_is_io()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 05/18] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 07/18] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

There are no more uses of the legacy cpu_physical_memory_is_io()
method. Remove it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/exec/cpu-common.h | 2 --
 system/physmem.c          | 5 -----
 2 files changed, 7 deletions(-)

diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index e413d8b3079..a73463a7038 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -149,8 +149,6 @@ void *cpu_physical_memory_map(hwaddr addr,
 void cpu_physical_memory_unmap(void *buffer, hwaddr len,
                                bool is_write, hwaddr access_len);
 
-bool cpu_physical_memory_is_io(hwaddr phys_addr);
-
 /* Coalesced MMIO regions are areas where write operations can be reordered.
  * This usually implies that write operations are side-effect free.  This allows
  * batching which can make a major impact on performance when using
diff --git a/system/physmem.c b/system/physmem.c
index 84d7754ccab..dff8bd5bab7 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3764,11 +3764,6 @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,
     return 0;
 }
 
-bool cpu_physical_memory_is_io(hwaddr phys_addr)
-{
-    return address_space_is_io(&address_space_memory, phys_addr);
-}
-
 int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque)
 {
     RAMBlock *block;
-- 
2.51.0



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

* [PATCH v3 07/18] system/physmem: Pass address space argument to cpu_flush_icache_range()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 06/18] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 08/18] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Rename cpu_flush_icache_range() as address_space_flush_icache_range(),
passing an address space by argument. The single caller, rom_reset(),
already operates on an address space. Use it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/exec/cpu-common.h | 2 --
 include/system/memory.h   | 2 ++
 hw/core/loader.c          | 2 +-
 system/physmem.c          | 5 ++---
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index a73463a7038..6c7d84aacb4 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -156,8 +156,6 @@ void cpu_physical_memory_unmap(void *buffer, hwaddr len,
  */
 void qemu_flush_coalesced_mmio_buffer(void);
 
-void cpu_flush_icache_range(hwaddr start, hwaddr len);
-
 typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaque);
 
 int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque);
diff --git a/include/system/memory.h b/include/system/memory.h
index 546c643961d..dfea90c4d6b 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -2977,6 +2977,8 @@ void address_space_cache_invalidate(MemoryRegionCache *cache,
  */
 void address_space_cache_destroy(MemoryRegionCache *cache);
 
+void address_space_flush_icache_range(AddressSpace *as, hwaddr addr, hwaddr len);
+
 /* address_space_get_iotlb_entry: translate an address into an IOTLB
  * entry. Should be called from an RCU critical section.
  */
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 524af6f14a0..477661a0255 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -1242,7 +1242,7 @@ static void rom_reset(void *unused)
          * that the instruction cache for that new region is clear, so that the
          * CPU definitely fetches its instructions from the just written data.
          */
-        cpu_flush_icache_range(rom->addr, rom->datasize);
+        address_space_flush_icache_range(rom->as, rom->addr, rom->datasize);
 
         trace_loader_write_rom(rom->name, rom->addr, rom->datasize, rom->isrom);
     }
diff --git a/system/physmem.c b/system/physmem.c
index dff8bd5bab7..e0c2962251a 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3215,7 +3215,7 @@ MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,
     return MEMTX_OK;
 }
 
-void cpu_flush_icache_range(hwaddr addr, hwaddr len)
+void address_space_flush_icache_range(AddressSpace *as, hwaddr addr, hwaddr len)
 {
     /*
      * This function should do the same thing as an icache flush that was
@@ -3230,8 +3230,7 @@ void cpu_flush_icache_range(hwaddr addr, hwaddr len)
     RCU_READ_LOCK_GUARD();
     while (len > 0) {
         hwaddr addr1, l = len;
-        MemoryRegion *mr = address_space_translate(&address_space_memory,
-                                                   addr, &addr1, &l, true,
+        MemoryRegion *mr = address_space_translate(as, addr, &addr1, &l, true,
                                                    MEMTXATTRS_UNSPECIFIED);
 
         if (!memory_region_supports_direct_access(mr)) {
-- 
2.51.0



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

* [PATCH v3 08/18] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 07/18] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 09/18] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

cpu_physical_memory_read() and cpu_physical_memory_write() are
legacy (see commit b7ecba0f6f6), replace by address_space_read()
and address_space_write().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/s390x/sclp.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index f507b36cd91..152c773d1b4 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -319,7 +319,8 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
     }
 
     /* the header contains the actual length of the sccb */
-    cpu_physical_memory_read(sccb, &header, sizeof(SCCBHeader));
+    address_space_read(as, sccb, MEMTXATTRS_UNSPECIFIED,
+                       &header, sizeof(SCCBHeader));
 
     /* Valid sccb sizes */
     if (be16_to_cpu(header.length) < sizeof(SCCBHeader)) {
@@ -332,7 +333,8 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
      * the host has checked the values
      */
     work_sccb = g_malloc0(be16_to_cpu(header.length));
-    cpu_physical_memory_read(sccb, work_sccb, be16_to_cpu(header.length));
+    address_space_read(as, sccb, MEMTXATTRS_UNSPECIFIED,
+                       work_sccb, be16_to_cpu(header.length));
 
     if (!sclp_command_code_valid(code)) {
         work_sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
@@ -346,8 +348,8 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
 
     sclp_c->execute(sclp, work_sccb, code);
 out_write:
-    cpu_physical_memory_write(sccb, work_sccb,
-                              be16_to_cpu(work_sccb->h.length));
+    address_space_write(as, sccb, MEMTXATTRS_UNSPECIFIED,
+                        work_sccb, be16_to_cpu(header.length));
 
     sclp_c->service_interrupt(sclp, sccb);
 
-- 
2.51.0



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

* [PATCH v3 09/18] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (7 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 08/18] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 10/18] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

When cpu_address_space_init() isn't called during vCPU creation,
its single address space is the global &address_space_memory.

As s390x boards don't call cpu_address_space_init(),
cpu_get_address_space(CPU(cpu), 0) returns &address_space_memory.

We can then replace cpu_physical_memory_rw() by the semantically
equivalent address_space_rw() call.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/mmu_helper.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
index 00946e9c0fe..4e2f31dc763 100644
--- a/target/s390x/mmu_helper.c
+++ b/target/s390x/mmu_helper.c
@@ -23,6 +23,7 @@
 #include "kvm/kvm_s390x.h"
 #include "system/kvm.h"
 #include "system/tcg.h"
+#include "system/memory.h"
 #include "exec/page-protection.h"
 #include "exec/target_page.h"
 #include "hw/hw.h"
@@ -522,6 +523,7 @@ int s390_cpu_pv_mem_rw(S390CPU *cpu, unsigned int offset, void *hostbuf,
 int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uint8_t ar, void *hostbuf,
                          int len, bool is_write)
 {
+    AddressSpace *as = cpu_get_address_space(CPU(cpu), 0);
     int currlen, nr_pages, i;
     target_ulong *pages;
     uint64_t tec;
@@ -545,8 +547,8 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uint8_t ar, void *hostbuf,
         /* Copy data by stepping through the area page by page */
         for (i = 0; i < nr_pages; i++) {
             currlen = MIN(len, TARGET_PAGE_SIZE - (laddr % TARGET_PAGE_SIZE));
-            cpu_physical_memory_rw(pages[i] | (laddr & ~TARGET_PAGE_MASK),
-                                   hostbuf, currlen, is_write);
+            address_space_rw(as, pages[i] | (laddr & ~TARGET_PAGE_MASK),
+                             MEMTXATTRS_UNSPECIFIED, hostbuf, currlen, is_write);
             laddr += currlen;
             hostbuf += currlen;
             len -= currlen;
-- 
2.51.0



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

* [PATCH v3 10/18] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (8 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 09/18] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 11/18] target/i386/kvm: " Philippe Mathieu-Daudé
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Get the vCPU address space and convert the legacy
cpu_physical_memory_rw() by address_space_rw().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/whpx/whpx-all.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
index 2a85168ed51..82ba177c4a5 100644
--- a/target/i386/whpx/whpx-all.c
+++ b/target/i386/whpx/whpx-all.c
@@ -788,8 +788,11 @@ static HRESULT CALLBACK whpx_emu_mmio_callback(
     void *ctx,
     WHV_EMULATOR_MEMORY_ACCESS_INFO *ma)
 {
-    cpu_physical_memory_rw(ma->GpaAddress, ma->Data, ma->AccessSize,
-                           ma->Direction);
+    CPUState *cpu = (CPUState *)ctx;
+    AddressSpace *as = cpu_addressspace(cs, MEMTXATTRS_UNSPECIFIED);
+
+    address_space_rw(as, ma->GpaAddress, MEMTXATTRS_UNSPECIFIED,
+                     ma->Data, ma->AccessSize, ma->Direction);
     return S_OK;
 }
 
-- 
2.51.0



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

* [PATCH v3 11/18] target/i386/kvm: Replace legacy cpu_physical_memory_rw() call
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (9 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 10/18] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 12/18] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Get the vCPU address space and convert the legacy
cpu_physical_memory_rw() by address_space_rw().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/kvm/xen-emu.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index 284c5ef6f68..52de0198343 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -21,6 +21,7 @@
 #include "system/address-spaces.h"
 #include "xen-emu.h"
 #include "trace.h"
+#include "system/memory.h"
 #include "system/runstate.h"
 
 #include "hw/pci/msi.h"
@@ -75,6 +76,7 @@ static bool kvm_gva_to_gpa(CPUState *cs, uint64_t gva, uint64_t *gpa,
 static int kvm_gva_rw(CPUState *cs, uint64_t gva, void *_buf, size_t sz,
                       bool is_write)
 {
+    AddressSpace *as = cpu_addressspace(cs, MEMTXATTRS_UNSPECIFIED);
     uint8_t *buf = (uint8_t *)_buf;
     uint64_t gpa;
     size_t len;
@@ -87,7 +89,7 @@ static int kvm_gva_rw(CPUState *cs, uint64_t gva, void *_buf, size_t sz,
             len = sz;
         }
 
-        cpu_physical_memory_rw(gpa, buf, len, is_write);
+        address_space_rw(as, gpa, MEMTXATTRS_UNSPECIFIED, buf, len, is_write);
 
         buf += len;
         sz -= len;
-- 
2.51.0



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

* [PATCH v3 12/18] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (10 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 11/18] target/i386/kvm: " Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 13/18] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/nvmm/nvmm-all.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
index ed424251673..2e442baf4b7 100644
--- a/target/i386/nvmm/nvmm-all.c
+++ b/target/i386/nvmm/nvmm-all.c
@@ -15,6 +15,7 @@
 #include "accel/accel-ops.h"
 #include "system/nvmm.h"
 #include "system/cpus.h"
+#include "system/memory.h"
 #include "system/runstate.h"
 #include "qemu/main-loop.h"
 #include "qemu/error-report.h"
@@ -516,7 +517,9 @@ nvmm_io_callback(struct nvmm_io *io)
 static void
 nvmm_mem_callback(struct nvmm_mem *mem)
 {
-    cpu_physical_memory_rw(mem->gpa, mem->data, mem->size, mem->write);
+    /* TODO: Get CPUState via mem->vcpu? */
+    address_space_rw(&address_space_memory, mem->gpa, MEMTXATTRS_UNSPECIFIED,
+                     mem->data, mem->size, mem->write);
 
     /* Needed, otherwise infinite loop. */
     current_cpu->vcpu_dirty = false;
-- 
2.51.0



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

* [PATCH v3 13/18] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (11 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 12/18] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

cpu_physical_memory_rw() is legacy, replace by address_space_rw().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/xen/xen-hvm-common.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 78e0bc8f644..52e2cce397a 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -12,6 +12,7 @@
 #include "hw/xen/xen-bus.h"
 #include "hw/boards.h"
 #include "hw/xen/arch_hvm.h"
+#include "system/memory.h"
 #include "system/runstate.h"
 #include "system/system.h"
 #include "system/xen.h"
@@ -279,8 +280,8 @@ static void do_outp(uint32_t addr,
  * memory, as part of the implementation of an ioreq.
  *
  * Equivalent to
- *   cpu_physical_memory_rw(addr + (req->df ? -1 : +1) * req->size * i,
- *                          val, req->size, 0/1)
+ *   address_space_rw(as, addr + (req->df ? -1 : +1) * req->size * i,
+ *                    attrs, val, req->size, 0/1)
  * except without the integer overflow problems.
  */
 static void rw_phys_req_item(hwaddr addr,
@@ -295,7 +296,8 @@ static void rw_phys_req_item(hwaddr addr,
     } else {
         addr += offset;
     }
-    cpu_physical_memory_rw(addr, val, req->size, rw);
+    address_space_rw(&address_space_memory, addr, MEMTXATTRS_UNSPECIFIED,
+                     val, req->size, rw);
 }
 
 static inline void read_phys_req_item(hwaddr addr,
-- 
2.51.0



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

* [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (12 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 13/18] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30 20:27   ` Richard Henderson
  2025-09-30  8:21 ` [PATCH v3 15/18] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  17 siblings, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

In order to remove cpu_physical_memory_rw() in a pair of commits,
and due to a cyclic dependency between "exec/cpu-common.h" and
"system/memory.h", un-inline cpu_physical_memory_read() and
cpu_physical_memory_write() as a prerequired step.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/exec/cpu-common.h | 12 ++----------
 system/physmem.c          | 10 ++++++++++
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 6c7d84aacb4..6e8cb530f6e 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -133,16 +133,8 @@ void cpu_address_space_destroy(CPUState *cpu, int asidx);
 
 void cpu_physical_memory_rw(hwaddr addr, void *buf,
                             hwaddr len, bool is_write);
-static inline void cpu_physical_memory_read(hwaddr addr,
-                                            void *buf, hwaddr len)
-{
-    cpu_physical_memory_rw(addr, buf, len, false);
-}
-static inline void cpu_physical_memory_write(hwaddr addr,
-                                             const void *buf, hwaddr len)
-{
-    cpu_physical_memory_rw(addr, (void *)buf, len, true);
-}
+void cpu_physical_memory_read(hwaddr addr, void *buf, hwaddr len);
+void cpu_physical_memory_write(hwaddr addr, const void *buf, hwaddr len);
 void *cpu_physical_memory_map(hwaddr addr,
                               hwaddr *plen,
                               bool is_write);
diff --git a/system/physmem.c b/system/physmem.c
index e0c2962251a..033285fe812 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3189,6 +3189,16 @@ void cpu_physical_memory_rw(hwaddr addr, void *buf,
                      buf, len, is_write);
 }
 
+void cpu_physical_memory_read(hwaddr addr, void *buf, hwaddr len)
+{
+    cpu_physical_memory_rw(addr, buf, len, false);
+}
+
+void cpu_physical_memory_write(hwaddr addr, const void *buf, hwaddr len)
+{
+    cpu_physical_memory_rw(addr, (void *)buf, len, true);
+}
+
 /* used for ROM loading : can write in RAM and ROM */
 MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,
                                     MemTxAttrs attrs,
-- 
2.51.0



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

* [PATCH v3 15/18] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (13 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 16/18] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Following the mechanical changes of commit adeefe01671 ("Avoid
cpu_physical_memory_rw() with a constant is_write argument"),
replace:

 - cpu_physical_memory_rw(, is_write=false) -> address_space_read()
 - cpu_physical_memory_rw(, is_write=true)  -> address_space_write()

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 scripts/coccinelle/exec_rw_const.cocci | 12 ------------
 system/physmem.c                       |  6 ++++--
 2 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/scripts/coccinelle/exec_rw_const.cocci b/scripts/coccinelle/exec_rw_const.cocci
index 1a202969519..35ab79e6d74 100644
--- a/scripts/coccinelle/exec_rw_const.cocci
+++ b/scripts/coccinelle/exec_rw_const.cocci
@@ -62,18 +62,6 @@ symbol true, false;
 + address_space_write(E1, E2, E3, E4, E5)
 )
 
-// Avoid uses of cpu_physical_memory_rw() with a constant is_write argument.
-@@
-expression E1, E2, E3;
-@@
-(
-- cpu_physical_memory_rw(E1, E2, E3, false)
-+ cpu_physical_memory_read(E1, E2, E3)
-|
-- cpu_physical_memory_rw(E1, E2, E3, true)
-+ cpu_physical_memory_write(E1, E2, E3)
-)
-
 // Remove useless cast
 @@
 expression E1, E2, E3, E4, E5, E6;
diff --git a/system/physmem.c b/system/physmem.c
index 033285fe812..51abc4cae96 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3191,12 +3191,14 @@ void cpu_physical_memory_rw(hwaddr addr, void *buf,
 
 void cpu_physical_memory_read(hwaddr addr, void *buf, hwaddr len)
 {
-    cpu_physical_memory_rw(addr, buf, len, false);
+    address_space_read(&address_space_memory, addr,
+                       MEMTXATTRS_UNSPECIFIED, buf, len);
 }
 
 void cpu_physical_memory_write(hwaddr addr, const void *buf, hwaddr len)
 {
-    cpu_physical_memory_rw(addr, (void *)buf, len, true);
+    address_space_write(&address_space_memory, addr,
+                        MEMTXATTRS_UNSPECIFIED, buf, len);
 }
 
 /* used for ROM loading : can write in RAM and ROM */
-- 
2.51.0



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

* [PATCH v3 16/18] system/physmem: Remove legacy cpu_physical_memory_rw()
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (14 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 15/18] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 17/18] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 18/18] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

The legacy cpu_physical_memory_rw() method is no more used,
remove it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 docs/devel/loads-stores.rst            |  4 +---
 scripts/coccinelle/exec_rw_const.cocci | 10 ----------
 include/exec/cpu-common.h              |  2 --
 system/physmem.c                       |  7 -------
 4 files changed, 1 insertion(+), 22 deletions(-)

diff --git a/docs/devel/loads-stores.rst b/docs/devel/loads-stores.rst
index f9b565da57a..c906c6509ee 100644
--- a/docs/devel/loads-stores.rst
+++ b/docs/devel/loads-stores.rst
@@ -460,10 +460,8 @@ For new code they are better avoided:
 
 ``cpu_physical_memory_write``
 
-``cpu_physical_memory_rw``
-
 Regexes for git grep:
- - ``\<cpu_physical_memory_\(read\|write\|rw\)\>``
+ - ``\<cpu_physical_memory_\(read\|write\)\>``
 
 ``cpu_memory_rw_debug``
 ~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/scripts/coccinelle/exec_rw_const.cocci b/scripts/coccinelle/exec_rw_const.cocci
index 35ab79e6d74..4c02c94e04e 100644
--- a/scripts/coccinelle/exec_rw_const.cocci
+++ b/scripts/coccinelle/exec_rw_const.cocci
@@ -21,13 +21,6 @@ expression E1, E2, E3, E4, E5;
 + address_space_rw(E1, E2, E3, E4, E5, true)
 |
 
-- cpu_physical_memory_rw(E1, E2, E3, 0)
-+ cpu_physical_memory_rw(E1, E2, E3, false)
-|
-- cpu_physical_memory_rw(E1, E2, E3, 1)
-+ cpu_physical_memory_rw(E1, E2, E3, true)
-|
-
 - cpu_physical_memory_map(E1, E2, 0)
 + cpu_physical_memory_map(E1, E2, false)
 |
@@ -81,9 +74,6 @@ type T;
 + address_space_write_rom(E1, E2, E3, E4, E5)
 |
 
-- cpu_physical_memory_rw(E1, (T *)(E2), E3, E4)
-+ cpu_physical_memory_rw(E1, E2, E3, E4)
-|
 - cpu_physical_memory_read(E1, (T *)(E2), E3)
 + cpu_physical_memory_read(E1, E2, E3)
 |
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 6e8cb530f6e..910e1c2afb9 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -131,8 +131,6 @@ void cpu_address_space_init(CPUState *cpu, int asidx,
  */
 void cpu_address_space_destroy(CPUState *cpu, int asidx);
 
-void cpu_physical_memory_rw(hwaddr addr, void *buf,
-                            hwaddr len, bool is_write);
 void cpu_physical_memory_read(hwaddr addr, void *buf, hwaddr len);
 void cpu_physical_memory_write(hwaddr addr, const void *buf, hwaddr len);
 void *cpu_physical_memory_map(hwaddr addr,
diff --git a/system/physmem.c b/system/physmem.c
index 51abc4cae96..000bde90c2e 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3182,13 +3182,6 @@ MemTxResult address_space_set(AddressSpace *as, hwaddr addr,
     return error;
 }
 
-void cpu_physical_memory_rw(hwaddr addr, void *buf,
-                            hwaddr len, bool is_write)
-{
-    address_space_rw(&address_space_memory, addr, MEMTXATTRS_UNSPECIFIED,
-                     buf, len, is_write);
-}
-
 void cpu_physical_memory_read(hwaddr addr, void *buf, hwaddr len)
 {
     address_space_read(&address_space_memory, addr,
-- 
2.51.0



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

* [PATCH v3 17/18] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (15 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 16/18] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  2025-09-30  8:21 ` [PATCH v3 18/18] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Use VirtIODevice::dma_as address space to convert the legacy
cpu_physical_memory_[un]map() calls to address_space_[un]map().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/virtio/vhost.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 6557c58d12a..efa24aee609 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -27,6 +27,7 @@
 #include "migration/blocker.h"
 #include "migration/qemu-file-types.h"
 #include "system/dma.h"
+#include "system/memory.h"
 #include "trace.h"
 
 /* enabled until disconnected backend stabilizes */
@@ -455,7 +456,8 @@ static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr,
                               hwaddr *plen, bool is_write)
 {
     if (!vhost_dev_has_iommu(dev)) {
-        return cpu_physical_memory_map(addr, plen, is_write);
+        return address_space_map(dev->vdev->dma_as, addr, plen, is_write,
+                                 MEMTXATTRS_UNSPECIFIED);
     } else {
         return (void *)(uintptr_t)addr;
     }
@@ -466,7 +468,8 @@ static void vhost_memory_unmap(struct vhost_dev *dev, void *buffer,
                                hwaddr access_len)
 {
     if (!vhost_dev_has_iommu(dev)) {
-        cpu_physical_memory_unmap(buffer, len, is_write, access_len);
+        address_space_unmap(dev->vdev->dma_as, buffer, len, is_write,
+                            access_len);
     }
 }
 
-- 
2.51.0



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

* [PATCH v3 18/18] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call
  2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
                   ` (16 preceding siblings ...)
  2025-09-30  8:21 ` [PATCH v3 17/18] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
@ 2025-09-30  8:21 ` Philippe Mathieu-Daudé
  17 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:21 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Philippe Mathieu-Daudé, Zhao Liu, David Hildenbrand,
	Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Thomas Huth,
	Eric Farman

Propagate VirtIODevice::dma_as to virtqueue_undo_map_desc()
in order to replace the legacy cpu_physical_memory_unmap()
call by address_space_unmap().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/virtio/virtio.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 9a81ad912e0..1ed3aa6abab 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -31,6 +31,7 @@
 #include "hw/qdev-properties.h"
 #include "hw/virtio/virtio-access.h"
 #include "system/dma.h"
+#include "system/memory.h"
 #include "system/runstate.h"
 #include "virtio-qmp.h"
 
@@ -1622,7 +1623,8 @@ out:
  * virtqueue_unmap_sg() can't be used).  Assumes buffers weren't written to
  * yet.
  */
-static void virtqueue_undo_map_desc(unsigned int out_num, unsigned int in_num,
+static void virtqueue_undo_map_desc(AddressSpace *as,
+                                    unsigned int out_num, unsigned int in_num,
                                     struct iovec *iov)
 {
     unsigned int i;
@@ -1630,7 +1632,7 @@ static void virtqueue_undo_map_desc(unsigned int out_num, unsigned int in_num,
     for (i = 0; i < out_num + in_num; i++) {
         int is_write = i >= out_num;
 
-        cpu_physical_memory_unmap(iov->iov_base, iov->iov_len, is_write, 0);
+        address_space_unmap(as, iov->iov_base, iov->iov_len, is_write, 0);
         iov++;
     }
 }
@@ -1832,7 +1834,7 @@ done:
     return elem;
 
 err_undo_map:
-    virtqueue_undo_map_desc(out_num, in_num, iov);
+    virtqueue_undo_map_desc(vdev->dma_as, out_num, in_num, iov);
     goto done;
 }
 
@@ -1982,7 +1984,7 @@ done:
     return elem;
 
 err_undo_map:
-    virtqueue_undo_map_desc(out_num, in_num, iov);
+    virtqueue_undo_map_desc(vdev->dma_as, out_num, in_num, iov);
     goto done;
 }
 
-- 
2.51.0



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

* Re: [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate()
  2025-09-30  8:21 ` [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate() Philippe Mathieu-Daudé
@ 2025-09-30  8:24   ` Thomas Huth
  2025-09-30  8:31     ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 24+ messages in thread
From: Thomas Huth @ 2025-09-30  8:24 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Zhao Liu, David Hildenbrand, Halil Pasic, kvm, Edgar E. Iglesias,
	xen-devel, Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Eric Farman

On 30/09/2025 10.21, Philippe Mathieu-Daudé wrote:
> flatview_translate()'s @plen argument is output-only and can be NULL.
> 
> When Xen is enabled, only update @plen_out when non-NULL.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   include/system/memory.h | 5 +++--
>   system/physmem.c        | 9 +++++----
>   2 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/include/system/memory.h b/include/system/memory.h
> index aa85fc27a10..3e5bf3ef05e 100644
> --- a/include/system/memory.h
> +++ b/include/system/memory.h
> @@ -2992,13 +2992,14 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
>    * @addr: address within that address space
>    * @xlat: pointer to address within the returned memory region section's
>    * #MemoryRegion.
> - * @len: pointer to length
> + * @plen_out: pointer to valid read/write length of the translated address.
> + *            It can be @NULL when we don't care about it.
>    * @is_write: indicates the transfer direction
>    * @attrs: memory attributes
>    */
>   MemoryRegion *flatview_translate(FlatView *fv,
>                                    hwaddr addr, hwaddr *xlat,
> -                                 hwaddr *len, bool is_write,
> +                                 hwaddr *plen_out, bool is_write,
>                                    MemTxAttrs attrs);
>   
>   static inline MemoryRegion *address_space_translate(AddressSpace *as,
> diff --git a/system/physmem.c b/system/physmem.c
> index 8a8be3a80e2..86422f294e2 100644
> --- a/system/physmem.c
> +++ b/system/physmem.c
> @@ -566,7 +566,7 @@ iotlb_fail:
>   
>   /* Called from RCU critical section */
>   MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
> -                                 hwaddr *plen, bool is_write,
> +                                 hwaddr *plen_out, bool is_write,
>                                    MemTxAttrs attrs)
>   {
>       MemoryRegion *mr;
> @@ -574,13 +574,14 @@ MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
>       AddressSpace *as = NULL;
>   
>       /* This can be MMIO, so setup MMIO bit. */
> -    section = flatview_do_translate(fv, addr, xlat, plen, NULL,
> +    section = flatview_do_translate(fv, addr, xlat, plen_out, NULL,
>                                       is_write, true, &as, attrs);
>       mr = section.mr;
>   
> -    if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) {
> +    if (xen_enabled() && plen_out && memory_access_is_direct(mr, is_write,
> +                                                             attrs)) {
>           hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - addr;
> -        *plen = MIN(page, *plen);
> +        *plen_out = MIN(page, *plen_out);
>       }

My question from the previous version is still unanswered:

https://lore.kernel.org/qemu-devel/22ff756a-51a2-43f4-8fe1-05f17ff4a371@redhat.com/

  Thomas



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

* Re: [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate()
  2025-09-30  8:24   ` Thomas Huth
@ 2025-09-30  8:31     ` Philippe Mathieu-Daudé
  2025-09-30  9:18       ` Thomas Huth
  0 siblings, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30  8:31 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel, Peter Maydell, Peter Xu
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Zhao Liu,
	David Hildenbrand, Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Eric Farman

Hi Thomas,

On 30/9/25 10:24, Thomas Huth wrote:
> On 30/09/2025 10.21, Philippe Mathieu-Daudé wrote:
>> flatview_translate()'s @plen argument is output-only and can be NULL.
>>
>> When Xen is enabled, only update @plen_out when non-NULL.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>   include/system/memory.h | 5 +++--
>>   system/physmem.c        | 9 +++++----
>>   2 files changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/include/system/memory.h b/include/system/memory.h
>> index aa85fc27a10..3e5bf3ef05e 100644
>> --- a/include/system/memory.h
>> +++ b/include/system/memory.h
>> @@ -2992,13 +2992,14 @@ IOMMUTLBEntry 
>> address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
>>    * @addr: address within that address space
>>    * @xlat: pointer to address within the returned memory region 
>> section's
>>    * #MemoryRegion.
>> - * @len: pointer to length
>> + * @plen_out: pointer to valid read/write length of the translated 
>> address.
>> + *            It can be @NULL when we don't care about it.
>>    * @is_write: indicates the transfer direction
>>    * @attrs: memory attributes
>>    */
>>   MemoryRegion *flatview_translate(FlatView *fv,
>>                                    hwaddr addr, hwaddr *xlat,
>> -                                 hwaddr *len, bool is_write,
>> +                                 hwaddr *plen_out, bool is_write,
>>                                    MemTxAttrs attrs);
>>   static inline MemoryRegion *address_space_translate(AddressSpace *as,
>> diff --git a/system/physmem.c b/system/physmem.c
>> index 8a8be3a80e2..86422f294e2 100644
>> --- a/system/physmem.c
>> +++ b/system/physmem.c
>> @@ -566,7 +566,7 @@ iotlb_fail:
>>   /* Called from RCU critical section */
>>   MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr 
>> *xlat,
>> -                                 hwaddr *plen, bool is_write,
>> +                                 hwaddr *plen_out, bool is_write,
>>                                    MemTxAttrs attrs)
>>   {
>>       MemoryRegion *mr;
>> @@ -574,13 +574,14 @@ MemoryRegion *flatview_translate(FlatView *fv, 
>> hwaddr addr, hwaddr *xlat,
>>       AddressSpace *as = NULL;
>>       /* This can be MMIO, so setup MMIO bit. */
>> -    section = flatview_do_translate(fv, addr, xlat, plen, NULL,
>> +    section = flatview_do_translate(fv, addr, xlat, plen_out, NULL,
>>                                       is_write, true, &as, attrs);
>>       mr = section.mr;
>> -    if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) {
>> +    if (xen_enabled() && plen_out && memory_access_is_direct(mr, 
>> is_write,
>> +                                                             attrs)) {
>>           hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) 
>> - addr;
>> -        *plen = MIN(page, *plen);
>> +        *plen_out = MIN(page, *plen_out);
>>       }
> 
> My question from the previous version is still unanswered:
> 
> https://lore.kernel.org/qemu- 
> devel/22ff756a-51a2-43f4-8fe1-05f17ff4a371@redhat.com/

This patches
- checks for plen not being NULL
- describes it as
   "When Xen is enabled, only update @plen_out when non-NULL."
- mention that in the updated flatview_translate() documentation
   "It can be @NULL when we don't care about it." as documented for
   the flatview_do_translate() callee in commit d5e5fafd11b ("exec:
   add page_mask for flatview_do_translate")

before:

   it was not clear whether we can pass plen=NULL without having
   to look at the code.

after:

   no change when plen is not NULL, we can pass plen=NULL safely
   (it is documented).

I shouldn't be understanding your original question, do you mind
rewording it?

Thanks,

Phil.


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

* Re: [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate()
  2025-09-30  8:31     ` Philippe Mathieu-Daudé
@ 2025-09-30  9:18       ` Thomas Huth
  2025-09-30 10:13         ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 24+ messages in thread
From: Thomas Huth @ 2025-09-30  9:18 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel, Peter Maydell, Peter Xu
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Zhao Liu,
	David Hildenbrand, Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Eric Farman

On 30/09/2025 10.31, Philippe Mathieu-Daudé wrote:
> Hi Thomas,
> 
> On 30/9/25 10:24, Thomas Huth wrote:
>> On 30/09/2025 10.21, Philippe Mathieu-Daudé wrote:
>>> flatview_translate()'s @plen argument is output-only and can be NULL.
>>>
>>> When Xen is enabled, only update @plen_out when non-NULL.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>>   include/system/memory.h | 5 +++--
>>>   system/physmem.c        | 9 +++++----
>>>   2 files changed, 8 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/include/system/memory.h b/include/system/memory.h
>>> index aa85fc27a10..3e5bf3ef05e 100644
>>> --- a/include/system/memory.h
>>> +++ b/include/system/memory.h
>>> @@ -2992,13 +2992,14 @@ IOMMUTLBEntry 
>>> address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
>>>    * @addr: address within that address space
>>>    * @xlat: pointer to address within the returned memory region section's
>>>    * #MemoryRegion.
>>> - * @len: pointer to length
>>> + * @plen_out: pointer to valid read/write length of the translated address.
>>> + *            It can be @NULL when we don't care about it.
>>>    * @is_write: indicates the transfer direction
>>>    * @attrs: memory attributes
>>>    */
>>>   MemoryRegion *flatview_translate(FlatView *fv,
>>>                                    hwaddr addr, hwaddr *xlat,
>>> -                                 hwaddr *len, bool is_write,
>>> +                                 hwaddr *plen_out, bool is_write,
>>>                                    MemTxAttrs attrs);
>>>   static inline MemoryRegion *address_space_translate(AddressSpace *as,
>>> diff --git a/system/physmem.c b/system/physmem.c
>>> index 8a8be3a80e2..86422f294e2 100644
>>> --- a/system/physmem.c
>>> +++ b/system/physmem.c
>>> @@ -566,7 +566,7 @@ iotlb_fail:
>>>   /* Called from RCU critical section */
>>>   MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr *xlat,
>>> -                                 hwaddr *plen, bool is_write,
>>> +                                 hwaddr *plen_out, bool is_write,
>>>                                    MemTxAttrs attrs)
>>>   {
>>>       MemoryRegion *mr;
>>> @@ -574,13 +574,14 @@ MemoryRegion *flatview_translate(FlatView *fv, 
>>> hwaddr addr, hwaddr *xlat,
>>>       AddressSpace *as = NULL;
>>>       /* This can be MMIO, so setup MMIO bit. */
>>> -    section = flatview_do_translate(fv, addr, xlat, plen, NULL,
>>> +    section = flatview_do_translate(fv, addr, xlat, plen_out, NULL,
>>>                                       is_write, true, &as, attrs);
>>>       mr = section.mr;
>>> -    if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) {
>>> +    if (xen_enabled() && plen_out && memory_access_is_direct(mr, is_write,
>>> +                                                             attrs)) {
>>>           hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - 
>>> addr;
>>> -        *plen = MIN(page, *plen);
>>> +        *plen_out = MIN(page, *plen_out);
>>>       }
>>
>> My question from the previous version is still unanswered:
>>
>> https://lore.kernel.org/qemu- 
>> devel/22ff756a-51a2-43f4-8fe1-05f17ff4a371@redhat.com/
> 
> This patches
> - checks for plen not being NULL
> - describes it as
>    "When Xen is enabled, only update @plen_out when non-NULL."
> - mention that in the updated flatview_translate() documentation
>    "It can be @NULL when we don't care about it." as documented for
>    the flatview_do_translate() callee in commit d5e5fafd11b ("exec:
>    add page_mask for flatview_do_translate")
> 
> before:
> 
>    it was not clear whether we can pass plen=NULL without having
>    to look at the code.
> 
> after:
> 
>    no change when plen is not NULL, we can pass plen=NULL safely
>    (it is documented).
> 
> I shouldn't be understanding your original question, do you mind
> rewording it?

Ah, you've updated the patch in v3 to include a check for plen_out in the 
if-statement! It was not there in v2. Ok, this should be fine now:

Reviewed-by: Thomas Huth <thuth@redhat.com>

I just re-complained since you did not respond to my mail in v2, and when I 
looked at the changelog in your v3 cover letter, you did not mention the 
modification here, so I blindly assumed that this patch was unchanged.

  Thomas



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

* Re: [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate()
  2025-09-30  9:18       ` Thomas Huth
@ 2025-09-30 10:13         ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-09-30 10:13 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel, Peter Maydell, Peter Xu
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Zhao Liu,
	David Hildenbrand, Halil Pasic, kvm, Edgar E. Iglesias, xen-devel,
	Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Richard Henderson, Stefano Stabellini, Matthew Rosato, qemu-s390x,
	Paul Durrant, Michael S. Tsirkin, Christian Borntraeger,
	Anthony PERARD, Jason Herne, Paolo Bonzini, Eric Farman

On 30/9/25 11:18, Thomas Huth wrote:
> On 30/09/2025 10.31, Philippe Mathieu-Daudé wrote:
>> Hi Thomas,
>>
>> On 30/9/25 10:24, Thomas Huth wrote:
>>> On 30/09/2025 10.21, Philippe Mathieu-Daudé wrote:
>>>> flatview_translate()'s @plen argument is output-only and can be NULL.
>>>>
>>>> When Xen is enabled, only update @plen_out when non-NULL.
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>> ---
>>>>   include/system/memory.h | 5 +++--
>>>>   system/physmem.c        | 9 +++++----
>>>>   2 files changed, 8 insertions(+), 6 deletions(-)
>>>>
>>>> diff --git a/include/system/memory.h b/include/system/memory.h
>>>> index aa85fc27a10..3e5bf3ef05e 100644
>>>> --- a/include/system/memory.h
>>>> +++ b/include/system/memory.h
>>>> @@ -2992,13 +2992,14 @@ IOMMUTLBEntry 
>>>> address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
>>>>    * @addr: address within that address space
>>>>    * @xlat: pointer to address within the returned memory region 
>>>> section's
>>>>    * #MemoryRegion.
>>>> - * @len: pointer to length
>>>> + * @plen_out: pointer to valid read/write length of the translated 
>>>> address.
>>>> + *            It can be @NULL when we don't care about it.
>>>>    * @is_write: indicates the transfer direction
>>>>    * @attrs: memory attributes
>>>>    */
>>>>   MemoryRegion *flatview_translate(FlatView *fv,
>>>>                                    hwaddr addr, hwaddr *xlat,
>>>> -                                 hwaddr *len, bool is_write,
>>>> +                                 hwaddr *plen_out, bool is_write,
>>>>                                    MemTxAttrs attrs);
>>>>   static inline MemoryRegion *address_space_translate(AddressSpace *as,
>>>> diff --git a/system/physmem.c b/system/physmem.c
>>>> index 8a8be3a80e2..86422f294e2 100644
>>>> --- a/system/physmem.c
>>>> +++ b/system/physmem.c
>>>> @@ -566,7 +566,7 @@ iotlb_fail:
>>>>   /* Called from RCU critical section */
>>>>   MemoryRegion *flatview_translate(FlatView *fv, hwaddr addr, hwaddr 
>>>> *xlat,
>>>> -                                 hwaddr *plen, bool is_write,
>>>> +                                 hwaddr *plen_out, bool is_write,
>>>>                                    MemTxAttrs attrs)
>>>>   {
>>>>       MemoryRegion *mr;
>>>> @@ -574,13 +574,14 @@ MemoryRegion *flatview_translate(FlatView *fv, 
>>>> hwaddr addr, hwaddr *xlat,
>>>>       AddressSpace *as = NULL;
>>>>       /* This can be MMIO, so setup MMIO bit. */
>>>> -    section = flatview_do_translate(fv, addr, xlat, plen, NULL,
>>>> +    section = flatview_do_translate(fv, addr, xlat, plen_out, NULL,
>>>>                                       is_write, true, &as, attrs);
>>>>       mr = section.mr;
>>>> -    if (xen_enabled() && memory_access_is_direct(mr, is_write, 
>>>> attrs)) {
>>>> +    if (xen_enabled() && plen_out && memory_access_is_direct(mr, 
>>>> is_write,
>>>> +                                                             attrs)) {
>>>>           hwaddr page = ((addr & TARGET_PAGE_MASK) + 
>>>> TARGET_PAGE_SIZE) - addr;
>>>> -        *plen = MIN(page, *plen);
>>>> +        *plen_out = MIN(page, *plen_out);
>>>>       }
>>>
>>> My question from the previous version is still unanswered:
>>>
>>> https://lore.kernel.org/qemu- 
>>> devel/22ff756a-51a2-43f4-8fe1-05f17ff4a371@redhat.com/
>>
>> This patches
>> - checks for plen not being NULL
>> - describes it as
>>    "When Xen is enabled, only update @plen_out when non-NULL."
>> - mention that in the updated flatview_translate() documentation
>>    "It can be @NULL when we don't care about it." as documented for
>>    the flatview_do_translate() callee in commit d5e5fafd11b ("exec:
>>    add page_mask for flatview_do_translate")
>>
>> before:
>>
>>    it was not clear whether we can pass plen=NULL without having
>>    to look at the code.
>>
>> after:
>>
>>    no change when plen is not NULL, we can pass plen=NULL safely
>>    (it is documented).
>>
>> I shouldn't be understanding your original question, do you mind
>> rewording it?
> 
> Ah, you've updated the patch in v3 to include a check for plen_out in 
> the if-statement! It was not there in v2. Ok, this should be fine now:
> 
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> 
> I just re-complained since you did not respond to my mail in v2, and 
> when I looked at the changelog in your v3 cover letter, you did not 
> mention the modification here, so I blindly assumed that this patch was 
> unchanged.

Ah I see... OK I'll try to be more explicit in my respins.

Thanks for your review!

Phil.


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

* Re: [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write()
  2025-09-30  8:21 ` [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
@ 2025-09-30 20:27   ` Richard Henderson
  0 siblings, 0 replies; 24+ messages in thread
From: Richard Henderson @ 2025-09-30 20:27 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel, Peter Maydell
  Cc: Marcelo Tosatti, Ilya Leoshkevich, Reinoud Zandijk, Peter Xu,
	Zhao Liu, David Hildenbrand, Halil Pasic, kvm, Edgar E. Iglesias,
	xen-devel, Stefano Garzarella, David Woodhouse, Sunil Muthuswamy,
	Stefano Stabellini, Matthew Rosato, qemu-s390x, Paul Durrant,
	Michael S. Tsirkin, Christian Borntraeger, Anthony PERARD,
	Jason Herne, Paolo Bonzini, Thomas Huth, Eric Farman

On 9/30/25 01:21, Philippe Mathieu-Daudé wrote:
> In order to remove cpu_physical_memory_rw() in a pair of commits,
> and due to a cyclic dependency between "exec/cpu-common.h" and
> "system/memory.h", un-inline cpu_physical_memory_read() and
> cpu_physical_memory_write() as a prerequired step.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   include/exec/cpu-common.h | 12 ++----------
>   system/physmem.c          | 10 ++++++++++
>   2 files changed, 12 insertions(+), 10 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


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

end of thread, other threads:[~2025-09-30 20:28 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-30  8:21 [PATCH v3 00/18] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 01/18] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 02/18] system/memory: Better describe @plen argument of flatview_translate() Philippe Mathieu-Daudé
2025-09-30  8:24   ` Thomas Huth
2025-09-30  8:31     ` Philippe Mathieu-Daudé
2025-09-30  9:18       ` Thomas Huth
2025-09-30 10:13         ` Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 03/18] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 04/18] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 05/18] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 06/18] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 07/18] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 08/18] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 09/18] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 10/18] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 11/18] target/i386/kvm: " Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 12/18] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 13/18] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 14/18] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
2025-09-30 20:27   ` Richard Henderson
2025-09-30  8:21 ` [PATCH v3 15/18] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 16/18] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 17/18] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
2025-09-30  8:21 ` [PATCH v3 18/18] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé

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