* [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw()
@ 2025-10-02 8:41 Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 01/17] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
` (17 more replies)
0 siblings, 18 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé
(Series fully reviewed)
Since v3:
- Do not describe flatview_translate()'s plen argument
- Use cpu->as instead of cpu_get_address_space(idx=0)
Since v2:
- Fixed vhost change
- Better describe cpu_physical_memory_rw() removal (thuth)
Since v1:
- Removed extra 'len' arg in address_space_is_io (rth)
---
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é (17):
docs/devel/loads-stores: Stop mentioning
cpu_physical_memory_write_rom()
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 | 11 +++++++
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 | 42 ++++++++++++++------------
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 | 7 +++--
15 files changed, 85 insertions(+), 88 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v4 01/17] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 02/17] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
` (16 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson
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] 21+ messages in thread
* [PATCH v4 02/17] system/memory: Factor address_space_is_io() out
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 01/17] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 03/17] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
` (15 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Thomas Huth, Richard Henderson, Paolo Bonzini, Peter Xu,
David Hildenbrand
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>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
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 aa85fc27a10..1b2b0e5ce1e 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -3029,6 +3029,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 225ab817883..c2829ab407a 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3358,6 +3358,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,
@@ -3754,15 +3765,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] 21+ messages in thread
* [PATCH v4 03/17] target/i386/arch_memory_mapping: Use address_space_memory_is_io()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 01/17] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 02/17] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
` (14 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Zhao Liu
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>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 03/17] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 14:06 ` Eric Farman
2025-10-02 8:41 ` [PATCH v4 05/17] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
` (13 subsequent siblings)
17 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Thomas Huth, Richard Henderson, Halil Pasic,
Christian Borntraeger, Jason Herne, Eric Farman, Matthew Rosato,
David Hildenbrand, Ilya Leoshkevich
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->as
points to &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>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
hw/s390x/sclp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 9718564fa42..16057356b11 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"
@@ -308,7 +309,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(CPU(cpu)->as, sccb)) {
return -PGM_ADDRESSING;
}
if ((sccb & ~0x1fffUL) == 0 || (sccb & ~0x1fffUL) == env->psa
--
2.51.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v4 05/17] system/physmem: Remove cpu_physical_memory_is_io()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 06/17] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
` (12 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Peter Xu, David Hildenbrand
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 c2829ab407a..4745aaacd8f 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3763,11 +3763,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] 21+ messages in thread
* [PATCH v4 06/17] system/physmem: Pass address space argument to cpu_flush_icache_range()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 05/17] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
` (11 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Peter Xu, David Hildenbrand
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 1b2b0e5ce1e..19c7ff393c4 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 4745aaacd8f..29ac80af887 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3214,7 +3214,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
@@ -3229,8 +3229,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] 21+ messages in thread
* [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 06/17] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 14:09 ` Eric Farman
2025-10-02 8:41 ` [PATCH v4 08/17] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
` (10 subsequent siblings)
17 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Thomas Huth, Richard Henderson, Halil Pasic,
Christian Borntraeger, Jason Herne, Eric Farman, Matthew Rosato,
David Hildenbrand, Ilya Leoshkevich
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>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
hw/s390x/sclp.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 16057356b11..d7cb99482b2 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -304,6 +304,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
SCLPDeviceClass *sclp_c = SCLP_GET_CLASS(sclp);
SCCBHeader header;
g_autofree SCCB *work_sccb = NULL;
+ AddressSpace *as = CPU(cpu)->as;
/* first some basic checks on program checks */
if (env->psw.mask & PSW_MASK_PSTATE) {
@@ -318,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)) {
@@ -331,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);
@@ -345,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] 21+ messages in thread
* [PATCH v4 08/17] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 09/17] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
` (9 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Thomas Huth, Richard Henderson, David Hildenbrand,
Ilya Leoshkevich
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->as
points to &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>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
target/s390x/mmu_helper.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
index 00946e9c0fe..7bcf1810bca 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"
@@ -542,11 +543,13 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uint8_t ar, void *hostbuf,
if (ret) {
trigger_access_exception(&cpu->env, ret, tec);
} else if (hostbuf != NULL) {
+ AddressSpace *as = CPU(cpu)->as;
+
/* 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] 21+ messages in thread
* [PATCH v4 09/17] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 08/17] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 10/17] target/i386/kvm: " Philippe Mathieu-Daudé
` (8 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Sunil Muthuswamy
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>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 10/17] target/i386/kvm: Replace legacy cpu_physical_memory_rw() call
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (8 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 09/17] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 11/17] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
` (7 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, David Woodhouse, Paul Durrant, Paolo Bonzini,
Marcelo Tosatti
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>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 11/17] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (9 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 10/17] target/i386/kvm: " Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 12/17] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
` (6 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Reinoud Zandijk
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 12/17] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (10 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 11/17] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 13/17] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
` (5 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Stefano Stabellini, Anthony PERARD,
Paul Durrant, Edgar E. Iglesias
cpu_physical_memory_rw() is legacy, replace by address_space_rw().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 13/17] system/physmem: Un-inline cpu_physical_memory_read/write()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (11 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 12/17] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 14/17] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
` (4 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Peter Xu, David Hildenbrand
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>
Reviewed-by: Richard Henderson <richard.henderson@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 29ac80af887..d5d320c8070 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3188,6 +3188,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] 21+ messages in thread
* [PATCH v4 14/17] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (12 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 13/17] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
@ 2025-10-02 8:41 ` Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 15/17] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
` (3 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:41 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Peter Xu, David Hildenbrand
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>
Reviewed-by: Richard Henderson <richard.henderson@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 d5d320c8070..23932b63d77 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3190,12 +3190,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] 21+ messages in thread
* [PATCH v4 15/17] system/physmem: Remove legacy cpu_physical_memory_rw()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (13 preceding siblings ...)
2025-10-02 8:41 ` [PATCH v4 14/17] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
@ 2025-10-02 8:42 ` Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 16/17] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
` (2 subsequent siblings)
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:42 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Paolo Bonzini, Peter Xu, David Hildenbrand
The legacy cpu_physical_memory_rw() method is no more used,
remove it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@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 23932b63d77..0ff7349fbbf 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3181,13 +3181,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] 21+ messages in thread
* [PATCH v4 16/17] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (14 preceding siblings ...)
2025-10-02 8:42 ` [PATCH v4 15/17] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
@ 2025-10-02 8:42 ` Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 17/17] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé
2025-10-03 20:42 ` [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:42 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Michael S. Tsirkin, Stefano Garzarella
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>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* [PATCH v4 17/17] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (15 preceding siblings ...)
2025-10-02 8:42 ` [PATCH v4 16/17] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
@ 2025-10-02 8:42 ` Philippe Mathieu-Daudé
2025-10-03 20:42 ` [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-02 8:42 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Philippe Mathieu-Daudé,
Richard Henderson, Michael S. Tsirkin
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>
Reviewed-by: Richard Henderson <richard.henderson@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] 21+ messages in thread
* Re: [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call()
2025-10-02 8:41 ` [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
@ 2025-10-02 14:06 ` Eric Farman
0 siblings, 0 replies; 21+ messages in thread
From: Eric Farman @ 2025-10-02 14:06 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Thomas Huth, Richard Henderson,
Halil Pasic, Christian Borntraeger, Jason Herne, Matthew Rosato,
David Hildenbrand, Ilya Leoshkevich
On Thu, 2025-10-02 at 10:41 +0200, Philippe Mathieu-Daudé wrote:
> 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->as
> points to &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>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> hw/s390x/sclp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
Reviewed-by: Eric Farman <farman@linux.ibm.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w()
2025-10-02 8:41 ` [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
@ 2025-10-02 14:09 ` Eric Farman
0 siblings, 0 replies; 21+ messages in thread
From: Eric Farman @ 2025-10-02 14:09 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: qemu-s390x, kvm, xen-devel, Thomas Huth, Richard Henderson,
Halil Pasic, Christian Borntraeger, Jason Herne, Matthew Rosato,
David Hildenbrand, Ilya Leoshkevich
On Thu, 2025-10-02 at 10:41 +0200, Philippe Mathieu-Daudé wrote:
> 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>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> hw/s390x/sclp.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
Reviewed-by: Eric Farman <farman@linux.ibm.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw()
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
` (16 preceding siblings ...)
2025-10-02 8:42 ` [PATCH v4 17/17] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé
@ 2025-10-03 20:42 ` Philippe Mathieu-Daudé
17 siblings, 0 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-03 20:42 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-s390x, kvm, xen-devel
On 2/10/25 10:41, Philippe Mathieu-Daudé wrote:
> Philippe Mathieu-Daudé (17):
> docs/devel/loads-stores: Stop mentioning
> cpu_physical_memory_write_rom()
> 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
Series queued, thanks.
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2025-10-03 20:42 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-02 8:41 [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 01/17] docs/devel/loads-stores: Stop mentioning cpu_physical_memory_write_rom() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 02/17] system/memory: Factor address_space_is_io() out Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 03/17] target/i386/arch_memory_mapping: Use address_space_memory_is_io() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 04/17] hw/s390x/sclp: Use address_space_memory_is_io() in sclp_service_call() Philippe Mathieu-Daudé
2025-10-02 14:06 ` Eric Farman
2025-10-02 8:41 ` [PATCH v4 05/17] system/physmem: Remove cpu_physical_memory_is_io() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 06/17] system/physmem: Pass address space argument to cpu_flush_icache_range() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 07/17] hw/s390x/sclp: Replace [cpu_physical_memory -> address_space]_r/w() Philippe Mathieu-Daudé
2025-10-02 14:09 ` Eric Farman
2025-10-02 8:41 ` [PATCH v4 08/17] target/s390x/mmu: Replace [cpu_physical_memory -> address_space]_rw() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 09/17] target/i386/whpx: Replace legacy cpu_physical_memory_rw() call Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 10/17] target/i386/kvm: " Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 11/17] target/i386/nvmm: Inline cpu_physical_memory_rw() in nvmm_mem_callback Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 12/17] hw/xen/hvm: Inline cpu_physical_memory_rw() in rw_phys_req_item() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 13/17] system/physmem: Un-inline cpu_physical_memory_read/write() Philippe Mathieu-Daudé
2025-10-02 8:41 ` [PATCH v4 14/17] system/physmem: Avoid cpu_physical_memory_rw when is_write is constant Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 15/17] system/physmem: Remove legacy cpu_physical_memory_rw() Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 16/17] hw/virtio/vhost: Replace legacy cpu_physical_memory_*map() calls Philippe Mathieu-Daudé
2025-10-02 8:42 ` [PATCH v4 17/17] hw/virtio/virtio: Replace legacy cpu_physical_memory_map() call Philippe Mathieu-Daudé
2025-10-03 20:42 ` [PATCH v4 00/17] system/physmem: Remove cpu_physical_memory _is_io() and _rw() 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).