Accel patches for 2026-06-18
Subsystems (5)
The following changes since commit c7cf7c810153d6f5f31aa2d5c0dee9087f6b4dff:
Merge tag 'firmware-20260617-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-06-17 10:17:29 -0400)
are available in the Git repository at:
https://github.com/philmd/qemu.git tags/accel-20260618
for you to fetch changes up to 1eaae985d4dec2aa0b187e362db50be46968d117:
accel/tcg: Restrict headers being TCG specific (2026-06-18 14:27:21 +0200)
----------------------------------------------------------------
Accelerators patches queue
- Avoid double hv_vcpu_destroy() call during teardown on HVF ARM
- Constify various AddressSpace/MemoryRegionCache arguments
- Clarify physical_memory_*() API in "system/physmem.h"
- Extract "accel/tcg/cpu-loop.h" out of "exec/cpu-common.h"
- Restrict few TCG-specific code
- Remove pre-C11 check
- Various header cleanups
----------------------------------------------------------------
Akihiko Odaki (1):
ui/cocoa: Use qemu_input_map_osx_to_linux
Bin Guo (1):
util/cutils: drop qemu_strnlen() in favor of strnlen()
Emmanuel Blot (1):
meson: build macOS signed binary as part of the default target
Matheus Tavares Bernardino (1):
accel/hvf: fix double hv_vcpu_destroy() causing teardown error on ARM
Matt Jacobson (1):
configure: honor --extra-ldflags when forced to use objc_LINKER
Osama Abdelkader (1):
accel/tcg: remove duplicate include
Philippe Mathieu-Daudé (42):
system/cpu: Reset vCPU %exception_index before resuming it system/memory: Constify various AddressSpace arguments (checks) system/memory: Constify various AddressSpace arguments (flat-range) system/memory: Constify various AddressSpace arguments (notify) system/memory: Constify various AddressSpace arguments (cache) system/memory: Constify various AddressSpace arguments (access) system/memory: Constify various MemoryRegionCache arguments
system: Document cpu_physical_memory_*() declarations accel/kvm: Replace legacy cpu_physical_memory_write() call gdbstub/system: Replace legacy cpu_physical_memory_read/write() calls target/s390x: Factor common s390_ipl_read/write() helpers target/s390x: Replace legacy cpu_physical_memory_read/write() calls
system: Move cpu_physical_memory_*() declarations to
'system/physmem.h'
hw/xen/interface: Remove pre-C99 checks
qom/object: Remove pre-C11 check
tcg: Include missing 'qemu/bitops.h' header in tcg-gvec-desc.h target/i386: Report TPR accesses to HVF
target/arm: Only set CPU_INTERRUPT_EXITTB for TCG target/arm: Remove vcpu_dirty=true assigments in
hvf_handle_exception()
target/arm: Better describe PMU depends on TCG or HVF target/arm/ptw: Restrict PMSAv8 code to TCG
target/arm: Restrict TCG specific headers
target/ppc: Restrict TCGTBCPUState to TCG target/loongarch: Remove unused 'accel/accel-cpu-target.h' header target/sparc: Include missing 'accel/tcg/cpu-ops.h' header in cpu.c accel/hvf: Reduce hvf_kernel_irqchip_override scope accel/tcg: Restrict IOMMU declarations
exec/cpu-common.h: Include missing 'qemu/thread.h' header exec/cpu-common.h: Avoid including unused 'exec/vaddr.h' header exec/cpu-common.h: Avoid including unused 'tcg/debug-assert.h' header exec/cpu-common.h: Avoid including unused exec/page-protection.h
header
system/memory: Remove unnecessary CONFIG_USER_ONLY guards system/memory: Rename cpu_exec_init_all() -> machine_memory_init() hw/s390x/ipl: Remove TCG dependency in handle_diag_308() accel/tcg: Remove cpu_loop_exit() stub
accel/tcg: Move cpu_exec() out of 'exec/cpu-common.h' accel/tcg: Move cpu_exec_step_atomic() out of 'exec/cpu-common.h' accel/tcg: Move cpu_unwind_state_data() out of 'exec/cpu-common.h' accel/tcg: Move cpu_restore_state() out of 'exec/cpu-common.h' accel/tcg: Have cpu_loop_exit_requested() take const @cpu argument accel/tcg: Move cpu_loop_exit_*() out of 'exec/cpu-common.h' accel/tcg: Restrict headers being TCG specific
docs/devel/loads-stores.rst | 18 ++-- docs/devel/style.rst | 1 - configure | 1 + meson.build | 1 + scripts/coccinelle/exec_rw_const.cocci | 16 +-- bsd-user/freebsd/os-proc.h | 1 + hw/xtensa/bootparam.h | 6 +- include/accel/tcg/cpu-loop.h | 76 ++++++++++++++ include/accel/tcg/cpu-mmu-index.h | 4 + include/accel/tcg/cpu-ops.h | 4 + include/accel/tcg/getpc.h | 4 + include/accel/tcg/helper-retaddr.h | 4 + include/accel/tcg/iommu.h | 7 ++ include/accel/tcg/probe.h | 4 + include/accel/tcg/tb-cpu-state.h | 4 + include/exec/cpu-common.h | 54 +--------- include/hw/xen/interface/physdev.h | 2 +- include/hw/xen/interface/version.h | 5 +- include/hw/xen/interface/xen-compat.h | 2 - include/hw/xen/interface/xen.h | 14 --- include/qemu/cutils.h | 17 +-- include/system/hvf_int.h | 1 - include/system/memory.h | 18 ++-- include/system/memory_cached.h | 20 ++-- include/system/physmem.h | 50 +++++++++ include/tcg/tcg-gvec-desc.h | 2 + include/user/cpu_loop.h | 2 +- linux-user/qemu.h | 1 + system/memory-internal.h | 4 +- target/arm/internals.h | 4 +- target/ppc/internal.h | 5 +- target/ppc/mmu-hash32.h | 1 + target/s390x/s390x-internal.h | 3 +- include/system/memory_ldst_cached.h.inc | 15 +-- accel/hvf/hvf-all.c | 2 +- accel/kvm/kvm-all.c | 12 +-- accel/stubs/tcg-stub.c | 19 ---- accel/tcg/cpu-exec-common.c | 1 + accel/tcg/cpu-exec.c | 5 +- accel/tcg/cputlb.c | 2 +- accel/tcg/tb-maint.c | 2 +- accel/tcg/tcg-accel-ops-mttcg.c | 1 + accel/tcg/tcg-accel-ops-rr.c | 1 + accel/tcg/tcg-accel-ops.c | 1 + accel/tcg/tcg-runtime.c | 1 + accel/tcg/translate-all.c | 2 +- accel/tcg/user-exec.c | 1 + accel/tcg/watchpoint.c | 1 + bsd-user/main.c | 1 + bsd-user/uaccess.c | 4 +- dump/dump.c | 3 +- dump/win_dump-x86.c | 5 +- gdbstub/system.c | 11 +- hw/acpi/ghes.c | 24 ++--- hw/acpi/nvdimm.c | 13 +-- hw/acpi/vmgenid.c | 3 +- hw/audio/marvell_88w8618.c | 3 +- hw/char/riscv_htif.c | 5 +- hw/display/exynos4210_fimd.c | 7 +- hw/display/omap_lcdc.c | 5 +- hw/display/ramfb.c | 7 +- hw/dma/i8257.c | 9 +- hw/dma/omap_dma.c | 6 +- hw/dma/rc4030.c | 3 +- hw/dma/sifive_pdma.c | 9 +- hw/hyperv/hyperv.c | 25 ++--- hw/hyperv/syndbg.c | 13 +-- hw/hyperv/vmbus.c | 9 +- hw/i386/kvm/clock.c | 3 +- hw/i386/vapic.c | 21 ++-- hw/intc/apic.c | 3 +- hw/intc/xive2.c | 3 +- hw/m68k/next-cube.c | 3 +- hw/microblaze/boot.c | 3 +- hw/misc/mips_itu.c | 1 + hw/misc/pc-testdev.c | 5 +- hw/net/fsl_etsec/rings.c | 13 +-- hw/net/mcf_fec.c | 11 +- hw/net/opencores_eth.c | 9 +- hw/nvram/spapr_nvram.c | 9 +- hw/ppc/amigaone.c | 5 +- hw/ppc/e500.c | 3 +- hw/ppc/pegasos.c | 11 +- hw/ppc/pnv.c | 5 +- hw/ppc/ppc440_uc.c | 9 +- hw/ppc/ppc_booke.c | 1 + hw/ppc/spapr.c | 3 +- hw/ppc/spapr_drc.c | 3 +- hw/ppc/spapr_events.c | 9 +- hw/ppc/spapr_hcall.c | 17 +-- hw/ppc/spapr_rtas.c | 5 +- hw/ppc/spapr_tpm_proxy.c | 5 +- hw/ppc/virtex_ml507.c | 3 +- hw/s390x/css.c | 5 +- hw/s390x/ipl.c | 14 +-- hw/s390x/s390-pci-bus.c | 5 +- hw/s390x/virtio-ccw.c | 5 +- hw/scsi/vmw_pvscsi.c | 12 +-- hw/xen/xen_pt_graphics.c | 4 +- hw/xtensa/xtfpga.c | 5 +- linux-user/arm/elfload.c | 1 + linux-user/hppa/elfload.c | 1 + linux-user/uaccess.c | 2 +- linux-user/x86_64/elfload.c | 1 + plugins/api.c | 1 + qom/object.c | 14 +-- semihosting/console.c | 1 + system/cpus.c | 4 +- system/memory.c | 16 +-- system/physmem.c | 44 ++++---- system/vl.c | 3 +- target/alpha/helper.c | 1 + target/alpha/mem_helper.c | 1 + target/arm/cpu-irq.c | 3 +- target/arm/cpu.c | 2 +- target/arm/helper.c | 2 +- target/arm/hvf/hvf.c | 11 +- target/arm/machine.c | 10 +- target/arm/ptw.c | 20 +++- target/arm/tcg/cpregs-at.c | 1 + target/arm/tcg/helper-a64.c | 1 + target/arm/tcg/op_helper.c | 1 + target/arm/tcg/tlb_helper.c | 1 + target/avr/helper.c | 1 + target/hexagon/op_helper.c | 1 + target/hppa/cpu.c | 1 + target/hppa/mem_helper.c | 1 + target/hppa/op_helper.c | 1 + target/i386/helper.c | 3 +- target/i386/tcg/excp_helper.c | 1 + target/i386/tcg/misc_helper.c | 1 + target/i386/tcg/system/bpt_helper.c | 1 + target/i386/tcg/system/misc_helper.c | 1 + target/i386/tcg/system/svm_helper.c | 1 + target/i386/tcg/user/excp_helper.c | 1 + target/i386/tcg/user/seg_helper.c | 1 + target/loongarch/cpu_helper.c | 1 + target/loongarch/tcg/tcg_cpu.c | 3 +- target/loongarch/tcg/tlb_helper.c | 1 + target/m68k/helper.c | 1 + target/m68k/op_helper.c | 1 + target/microblaze/helper.c | 1 + target/microblaze/op_helper.c | 1 + target/mips/tcg/exception.c | 1 + target/mips/tcg/system/tlb_helper.c | 1 + target/or1k/exception.c | 1 + target/or1k/exception_helper.c | 1 + target/or1k/fpu_helper.c | 1 + target/or1k/mmu.c | 1 + target/or1k/sys_helper.c | 1 + target/ppc/cpu_init.c | 1 + target/ppc/helper_regs.c | 3 +- target/ppc/tcg-excp_helper.c | 1 + target/ppc/user_only_helper.c | 1 + target/riscv/cpu_helper.c | 1 + target/riscv/csr.c | 1 + target/riscv/op_helper.c | 1 + target/rx/op_helper.c | 1 + target/s390x/diag.c | 75 ++++++++------ target/s390x/mmu_helper.c | 3 + target/s390x/tcg/cc_helper.c | 1 + target/s390x/tcg/debug.c | 1 + target/s390x/tcg/excp_helper.c | 1 + target/s390x/tcg/mem_helper.c | 1 + target/s390x/tcg/misc_helper.c | 6 +- target/sh4/helper.c | 1 + target/sh4/op_helper.c | 1 + target/sparc/cpu.c | 1 + target/sparc/helper.c | 1 + target/sparc/mmu_helper.c | 1 + target/tricore/helper.c | 1 + target/tricore/op_helper.c | 1 + target/xtensa/exc_helper.c | 1 + target/xtensa/helper.c | 1 + util/cutils.c | 15 +-- accel/stubs/meson.build | 1 - ui/cocoa.m | 131 +----------------------- 177 files changed, 644 insertions(+), 583 deletions(-) create mode 100644 include/accel/tcg/cpu-loop.h delete mode 100644 accel/stubs/tcg-stub.c
Signature · 1 line
2.53.0
[PULL 01/48] system/cpu: Reset vCPU %exception_index before resuming it
From: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>
--- system/cpus.c | 1 + 1 file changed, 1 insertion(+)
system/cpus.c +1 -0
@@ -621,6 +621,7 @@ void cpu_pause(CPUState *cpu)void cpu_resume (CPUState *cpu) { + cpu->exception_index =-1 ; cpu->stop = false; cpu->stopped = false;qemu_cpu_kick (cpu);
Signature · 1 line
2.53.0
[PULL 02/48] system/memory: Constify various AddressSpace arguments (checks)
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the AddressSpace structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- include/system/memory.h | 3 ++- system/physmem.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)
include/system/memory.h +2 -1
@@ -2850,7 +2850,8 @@ static inline MemoryRegion *address_space_translate(AddressSpace *as,* @is_write: indicates the transfer direction * @attrs: memory attributes */ -bool address_space_access_valid (AddressSpace *as,hwaddr addr,hwaddr len, +bool address_space_access_valid (const AddressSpace *as, +hwaddr addr,hwaddr len,bool is_write,MemTxAttrs attrs);/**
system/physmem.c +1 -1
@@ -3646,7 +3646,7 @@ static bool flatview_access_valid(FlatView *fv, hwaddr addr, hwaddr len,return true; } -bool address_space_access_valid (AddressSpace *as,hwaddr addr, +bool address_space_access_valid (const AddressSpace *as,hwaddr addr,hwaddr len,bool is_write,MemTxAttrs attrs) {
Signature · 1 line
2.53.0
[PULL 03/48] system/memory: Constify various AddressSpace arguments (flat-range)
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the AddressSpace structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- system/memory.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
system/memory.c +6 -4
@@ -889,7 +889,8 @@ static void address_space_update_ioeventfds(AddressSpace *as)* range `cmr'. Only the part that has intersection of the specified * FlatRange will be sent. */ -static void flat_range_coalesced_io_notify (FlatRange *fr,AddressSpace *as, +static void flat_range_coalesced_io_notify (FlatRange *fr, +const AddressSpace *as,CoalescedMemoryRange *cmr,bool add) {AddrRange tmp;
@@ -913,7 +914,7 @@ static void flat_range_coalesced_io_notify(FlatRange *fr, AddressSpace *as, } } -static void flat_range_coalesced_io_del (FlatRange *fr,AddressSpace *as) +static void flat_range_coalesced_io_del (FlatRange *fr,const AddressSpace *as) {CoalescedMemoryRange *cmr;
@@ -922,7 +923,7 @@ static void flat_range_coalesced_io_del(FlatRange *fr, AddressSpace *as) } } -static void flat_range_coalesced_io_add (FlatRange *fr,AddressSpace *as) +static void flat_range_coalesced_io_add (FlatRange *fr,const AddressSpace *as) {MemoryRegion *mr = fr->mr;CoalescedMemoryRange *cmr;
@@ -940,7 +941,8 @@ static voidflat_range_coalesced_io_notify_listener_add_del (FlatRange *fr, MemoryRegionSection *mrs, MemoryListener *listener, - AddressSpace *as, bool add) + const AddressSpace *as, + bool add) {CoalescedMemoryRange *cmr;MemoryRegion *mr = fr->mr;
Signature · 1 line
2.53.0
[PULL 04/48] system/memory: Constify various AddressSpace arguments (notify)
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the AddressSpace structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- include/system/memory.h | 2 +- system/memory.c | 6 +++--- system/physmem.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
include/system/memory.h +1 -1
@@ -2703,7 +2703,7 @@ void address_space_destroy_free(AddressSpace *as);* * @as: an initialized #AddressSpace */ -void address_space_remove_listeners (AddressSpace *as); +void address_space_remove_listeners (const AddressSpace *as);/** * address_space_rw: read from or write to an address space.
system/memory.c +3 -3
@@ -3009,7 +3009,7 @@ void memory_global_dirty_log_stop(unsigned int flags) }static void listener_add_address_space (MemoryListener *listener, -AddressSpace *as) +const AddressSpace *as) {unsigned i;FlatView *view;
@@ -3074,7 +3074,7 @@ static void listener_add_address_space(MemoryListener *listener, }static void listener_del_address_space (MemoryListener *listener, -AddressSpace *as) +const AddressSpace *as) {unsigned i;FlatView *view;
@@ -3179,7 +3179,7 @@ void memory_listener_unregister(MemoryListener *listener) listener->address_space =NULL ; } -void address_space_remove_listeners (AddressSpace *as) +void address_space_remove_listeners (const AddressSpace *as) {while (!QTAILQ_EMPTY (&as->listeners)) {memory_listener_unregister (QTAILQ_FIRST (&as->listeners));
system/physmem.c +1 -1
@@ -3565,7 +3565,7 @@ address_space_unregister_map_client_do(AddressSpaceMapClient *client)g_free (client); } -static void address_space_notify_map_clients_locked (AddressSpace *as) +static void address_space_notify_map_clients_locked (const AddressSpace *as) {AddressSpaceMapClient *client;
Signature · 1 line
2.53.0
[PULL 07/48] system/memory: Constify various MemoryRegionCache arguments
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the MemoryRegionCache structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- include/system/memory_cached.h | 18 +++++++++--------- include/system/memory_ldst_cached.h.inc | 15 +++++++++------ system/physmem.c | 10 +++++----- 3 files changed, 23 insertions(+), 20 deletions(-)
include/system/memory_cached.h +9 -9
@@ -51,12 +51,12 @@ struct MemoryRegionCache {#define SUFFIX _cached_slow#define ARG1 cache -#define ARG1_DECL MemoryRegionCache *cache +#define ARG1_DECL const MemoryRegionCache *cache#include "system/memory_ldst.h.inc" /* Inline fast path for direct RAM access. */ static inline -uint8_t address_space_ldub_cached (MemoryRegionCache *cache,hwaddr addr, +uint8_t address_space_ldub_cached (const MemoryRegionCache *cache,hwaddr addr,MemTxAttrs attrs,MemTxResult *result) {assert (addr < cache->len);
@@ -68,7 +68,7 @@ uint8_t address_space_ldub_cached(MemoryRegionCache *cache, hwaddr addr, }static inline -void address_space_stb_cached (MemoryRegionCache *cache, +void address_space_stb_cached (const MemoryRegionCache *cache,hwaddr addr,uint8_t val,MemTxAttrs attrs,MemTxResult *result) {
@@ -93,7 +93,7 @@ void address_space_stb_cached(MemoryRegionCache *cache,#define SUFFIX _cached#define ARG1 cache -#define ARG1_DECL MemoryRegionCache *cache +#define ARG1_DECL const MemoryRegionCache *cache#include "system/memory_ldst_phys.h.inc" /**
@@ -145,7 +145,7 @@ static inline void address_space_cache_init_empty(MemoryRegionCache *cache)* address that was passed to @address_space_cache_init. * @access_len: The number of bytes that were written starting at @addr. */ -void address_space_cache_invalidate (MemoryRegionCache *cache, +void address_space_cache_invalidate (const MemoryRegionCache *cache,hwaddr addr,hwaddr access_len);
@@ -160,9 +160,9 @@ void address_space_cache_destroy(MemoryRegionCache *cache);* Internal functions, part of the implementation of address_space_read_cached * and address_space_write_cached. */ -MemTxResult address_space_read_cached_slow (MemoryRegionCache *cache, +MemTxResult address_space_read_cached_slow (const MemoryRegionCache *cache,hwaddr addr,void *buf,hwaddr len); -MemTxResult address_space_write_cached_slow (MemoryRegionCache *cache, +MemTxResult address_space_write_cached_slow (const MemoryRegionCache *cache,hwaddr addr,const void *buf,hwaddr len);
@@ -175,7 +175,7 @@ MemTxResult address_space_write_cached_slow(MemoryRegionCache *cache,* @len: length of the data transferred */ static inline MemTxResult -address_space_read_cached (MemoryRegionCache *cache,hwaddr addr, +address_space_read_cached (const MemoryRegionCache *cache,hwaddr addr,void *buf,hwaddr len) {assert (addr < cache->len && len <= cache->len - addr);
@@ -197,7 +197,7 @@ address_space_read_cached(MemoryRegionCache *cache, hwaddr addr,* @len: length of the data transferred */ static inline MemTxResult -address_space_write_cached (MemoryRegionCache *cache,hwaddr addr, +address_space_write_cached (const MemoryRegionCache *cache,hwaddr addr,const void *buf,hwaddr len) {assert (addr < cache->len && len <= cache->len - addr);
include/system/memory_ldst_cached.h.inc +9 -6
@@ -24,7 +24,8 @@ #define LD_P(size) \ glue(glue(ld, size), glue(ENDIANNESS, _p)) -static inline uint16_t ADDRESS_SPACE_LD_CACHED(uw)(MemoryRegionCache *cache, +static inline +uint16_t ADDRESS_SPACE_LD_CACHED(uw)(const MemoryRegionCache *cache, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 2 <= cache->len - addr);
@@ -36,7 +37,8 @@ static inline uint16_t ADDRESS_SPACE_LD_CACHED(uw)(MemoryRegionCache *cache, } } -static inline uint32_t ADDRESS_SPACE_LD_CACHED(l)(MemoryRegionCache *cache, +static inline +uint32_t ADDRESS_SPACE_LD_CACHED(l)(const MemoryRegionCache *cache, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 4 <= cache->len - addr);
@@ -48,7 +50,8 @@ static inline uint32_t ADDRESS_SPACE_LD_CACHED(l)(MemoryRegionCache *cache, } } -static inline uint64_t ADDRESS_SPACE_LD_CACHED(q)(MemoryRegionCache *cache, +static inline +uint64_t ADDRESS_SPACE_LD_CACHED(q)(const MemoryRegionCache *cache, hwaddr addr, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 8 <= cache->len - addr);
@@ -71,7 +74,7 @@ static inline uint64_t ADDRESS_SPACE_LD_CACHED(q)(MemoryRegionCache *cache, #define ST_P(size) \ glue(glue(st, size), glue(ENDIANNESS, _p)) -static inline void ADDRESS_SPACE_ST_CACHED(w)(MemoryRegionCache *cache, +static inline void ADDRESS_SPACE_ST_CACHED(w)(const MemoryRegionCache *cache, hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 2 <= cache->len - addr);
@@ -82,7 +85,7 @@ static inline void ADDRESS_SPACE_ST_CACHED(w)(MemoryRegionCache *cache, } } -static inline void ADDRESS_SPACE_ST_CACHED(l)(MemoryRegionCache *cache, +static inline void ADDRESS_SPACE_ST_CACHED(l)(const MemoryRegionCache *cache, hwaddr addr, uint32_t val, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 4 <= cache->len - addr);
@@ -93,7 +96,7 @@ static inline void ADDRESS_SPACE_ST_CACHED(l)(MemoryRegionCache *cache, } } -static inline void ADDRESS_SPACE_ST_CACHED(q)(MemoryRegionCache *cache, +static inline void ADDRESS_SPACE_ST_CACHED(q)(const MemoryRegionCache *cache, hwaddr addr, uint64_t val, MemTxAttrs attrs, MemTxResult *result) { assert(addr < cache->len && 8 <= cache->len - addr);
system/physmem.c +5 -5
@@ -3878,7 +3878,7 @@ int64_t address_space_cache_init(MemoryRegionCache *cache,return l; } -void address_space_cache_invalidate (MemoryRegionCache *cache, +void address_space_cache_invalidate (const MemoryRegionCache *cache,hwaddr addr,hwaddr access_len) {
@@ -3909,7 +3909,7 @@ void address_space_cache_destroy(MemoryRegionCache *cache)* address_space_cache_init. */ static inline MemoryRegion *address_space_translate_cached ( -MemoryRegionCache *cache,hwaddr addr,hwaddr *xlat, +const MemoryRegionCache *cache,hwaddr addr,hwaddr *xlat,hwaddr *plen,bool is_write,MemTxAttrs attrs) {MemoryRegionSection section;
@@ -3990,7 +3990,7 @@ static MemTxResult address_space_read_continue_cached(MemTxAttrs attrs,* out of line function when the target is an MMIO or IOMMU region. */ MemTxResult -address_space_read_cached_slow (MemoryRegionCache *cache,hwaddr addr, +address_space_read_cached_slow (const MemoryRegionCache *cache,hwaddr addr,void *buf,hwaddr len) {hwaddr mr_addr, l;
@@ -4007,7 +4007,7 @@ address_space_read_cached_slow(MemoryRegionCache *cache, hwaddr addr,* out of line function when the target is an MMIO or IOMMU region. */ MemTxResult -address_space_write_cached_slow (MemoryRegionCache *cache,hwaddr addr, +address_space_write_cached_slow (const MemoryRegionCache *cache,hwaddr addr,const void *buf,hwaddr len) {hwaddr mr_addr, l;
@@ -4020,7 +4020,7 @@ address_space_write_cached_slow(MemoryRegionCache *cache, hwaddr addr, buf, len, mr_addr, l, mr); } -#define ARG1_DECL MemoryRegionCache *cache +#define ARG1_DECL const MemoryRegionCache *cache#define ARG1 cache#define SUFFIX _cached_slow#define TRANSLATE (...) address_space_translate_cached(cache, __VA_ARGS__)
Signature · 1 line
2.53.0
[PULL 05/48] system/memory: Constify various AddressSpace arguments (cache)
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the AddressSpace structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- include/system/memory_cached.h | 2 +- system/physmem.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
include/system/memory_cached.h +1 -1
@@ -117,7 +117,7 @@ void address_space_stb_cached(MemoryRegionCache *cache,* are relative to @addr. */ int64_t address_space_cache_init (MemoryRegionCache *cache, -AddressSpace *as, +const AddressSpace *as,hwaddr addr,hwaddr len,bool is_write);
system/physmem.c +1 -1
@@ -3829,7 +3829,7 @@ void cpu_physical_memory_unmap(void *buffer, hwaddr len,#include "memory_ldst.c.inc" int64_t address_space_cache_init (MemoryRegionCache *cache, -AddressSpace *as, +const AddressSpace *as,hwaddr addr,hwaddr len,bool is_write)
Signature · 1 line
2.53.0
[PULL 06/48] system/memory: Constify various AddressSpace arguments (access)
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Mark the AddressSpace structure const when it is only accessed read-only.
Message-Id: <[email protected]>
--- include/system/memory.h | 13 +++++++------ system/physmem.c | 14 ++++++++------ 2 files changed, 15 insertions(+), 12 deletions(-)
include/system/memory.h +7 -6
@@ -2719,7 +2719,7 @@ void address_space_remove_listeners(const AddressSpace *as);* @len: the number of bytes to read or write * @is_write: indicates the transfer direction */ -MemTxResult address_space_rw (AddressSpace *as,hwaddr addr, +MemTxResult address_space_rw (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,void *buf,hwaddr len,bool is_write);
@@ -2736,7 +2736,7 @@ MemTxResult address_space_rw(AddressSpace *as, hwaddr addr,* @buf: buffer with the data transferred * @len: the number of bytes to write */ -MemTxResult address_space_write (AddressSpace *as,hwaddr addr, +MemTxResult address_space_write (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,const void *buf,hwaddr len);
@@ -2799,7 +2799,8 @@ MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,#include "system/memory_ldst_phys.h.inc" #endif -void address_space_flush_icache_range (AddressSpace *as,hwaddr addr,hwaddr len); +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.
@@ -2919,7 +2920,7 @@ void address_space_register_map_client(AddressSpace *as, QEMUBH *bh);void address_space_unregister_map_client (AddressSpace *as,QEMUBH *bh);/* Internal functions, part of the implementation of address_space_read. */ -MemTxResult address_space_read_full (AddressSpace *as,hwaddr addr, +MemTxResult address_space_read_full (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,void *buf,hwaddr len); MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr, MemTxAttrs attrs, void *buf,
@@ -2974,7 +2975,7 @@ static inline bool memory_access_is_direct(const MemoryRegion *mr,* @len: length of the data transferred */ static inline __attribute__((__always_inline__)) -MemTxResult address_space_read (AddressSpace *as,hwaddr addr, +MemTxResult address_space_read (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,void *buf,hwaddr len) {
@@ -3017,7 +3018,7 @@ MemTxResult address_space_read(AddressSpace *as, hwaddr addr,* @len: the number of bytes to fill with the constant byte * @attrs: memory transaction attributes */ -MemTxResult address_space_set (AddressSpace *as,hwaddr addr, +MemTxResult address_space_set (const AddressSpace *as,hwaddr addr,uint8_t c,hwaddr len,MemTxAttrs attrs);/* Coalesced MMIO regions are areas where write operations can be reordered.
system/physmem.c +8 -6
@@ -3416,7 +3416,7 @@ static MemTxResult flatview_read(FlatView *fv, hwaddr addr, mr_addr, l, mr); } -MemTxResult address_space_read_full (AddressSpace *as,hwaddr addr, +MemTxResult address_space_read_full (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,void *buf,hwaddr len) {MemTxResult result =MEMTX_OK ;
@@ -3431,7 +3431,7 @@ MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,return result; } -MemTxResult address_space_write (AddressSpace *as,hwaddr addr, +MemTxResult address_space_write (const AddressSpace *as,hwaddr addr,MemTxAttrs attrs,const void *buf,hwaddr len) {
@@ -3447,8 +3447,9 @@ MemTxResult address_space_write(AddressSpace *as, hwaddr addr,return result; } -MemTxResult address_space_rw (AddressSpace *as,hwaddr addr,MemTxAttrs attrs, -void *buf,hwaddr len,bool is_write) +MemTxResult address_space_rw (const AddressSpace *as,hwaddr addr, +MemTxAttrs attrs,void *buf, +hwaddr len,bool is_write) {if (is_write) {return address_space_write (as, addr, attrs, buf, len);
@@ -3457,7 +3458,7 @@ MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs, } } -MemTxResult address_space_set (AddressSpace *as,hwaddr addr, +MemTxResult address_space_set (const AddressSpace *as,hwaddr addr,uint8_t c,hwaddr len,MemTxAttrs attrs) {#define FILLBUF_SIZE 512
@@ -3514,7 +3515,8 @@ MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,return MEMTX_OK ; } -void address_space_flush_icache_range (AddressSpace *as,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
Signature · 1 line
2.53.0
[PULL 12/48] target/s390x: Replace legacy cpu_physical_memory_read/write() calls
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
cpu_physical_memory_read() and cpu_physical_memory_write() are legacy (see commit b7ecba0f6f6), replace by address_space_read() and address_space_write() respectively, accessing the per-vCPU address space instead of the global &address_space_memory one.
Message-Id: <[email protected]>
--- target/s390x/diag.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
target/s390x/diag.c +4 -2
@@ -79,7 +79,8 @@ static void s390_ipl_read(CPUS390XState *env, uint64_t addr,if (s390_is_pv ()) {s390_cpu_pv_mem_read (env_archcpu (env),0 , iplb, size); }else { -cpu_physical_memory_read (addr, iplb, size); +address_space_read (cpu_get_address_space (env_cpu (env),0 ), addr, +MEMTXATTRS_UNSPECIFIED , iplb, size); } }
@@ -89,7 +90,8 @@ static void s390_ipl_write(CPUS390XState *env, uint64_t addr,if (s390_is_pv ()) {s390_cpu_pv_mem_write (env_archcpu (env),0 , iplb, size); }else { -cpu_physical_memory_write (addr, iplb, size); +address_space_write (cpu_get_address_space (env_cpu (env),0 ), addr, +MEMTXATTRS_UNSPECIFIED , iplb, size); } }
Signature · 1 line
2.53.0
[PULL 16/48] tcg: Include missing 'qemu/bitops.h' header in tcg-gvec-desc.h
In reply to Philippe Mathieu-DaudéInclude the missing 'qemu/bitops.h' header to avoid when refactoring unrelated headers:
In file included from target/arm/internals.h:34:
include/tcg/tcg-gvec-desc.h:48:12: error: call to undeclared function 'extract32'
48 | return extract32(desc, SIMD_MAXSZ_SHIFT, SIMD_MAXSZ_BITS) * 8 + 8;
| ^Message-Id: <[email protected]>
--- include/tcg/tcg-gvec-desc.h | 2 ++ 1 file changed, 2 insertions(+)
include/tcg/tcg-gvec-desc.h +2 -0
@@ -20,6 +20,8 @@#ifndef TCG_TCG_GVEC_DESC_H #define TCG_TCG_GVEC_DESC_H +#include "qemu/bitops.h" +/* * This configuration allows MAXSZ to represent 2048 bytes, and * OPRSZ to match MAXSZ, or represent the smaller values 8, 16, or 32.
Signature · 1 line
2.53.0
[PULL 10/48] gdbstub/system: Replace legacy cpu_physical_memory_read/write() calls
In reply to Philippe Mathieu-Daudécpu_physical_memory_read() and cpu_physical_memory_write() are legacy (see commit b7ecba0f6f6), replace the two calls by a single one to address_space_rw(). So far there is no logical change, but stop ignoring these functions returned value and propagate it, respecting the *memory_rw_debug() family error path. Thus this is effectively a logical change.
Message-Id: <[email protected]>
--- gdbstub/system.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)
gdbstub/system.c +5 -6
@@ -20,6 +20,7 @@#include "exec/hwaddr.h" #include "accel/accel-ops.h" #include "accel/accel-cpu-ops.h" +#include "system/address-spaces.h" #include "system/cpus.h" #include "system/runstate.h" #include "system/replay.h"
@@ -453,12 +454,10 @@ int gdb_target_memory_rw_debug(CPUState *cpu, hwaddr addr, uint8_t *buf, int len, bool is_write) { if (phy_memory_mode) { - if (is_write) { -cpu_physical_memory_write (addr ,buf ,len ); - } else { -cpu_physical_memory_read (addr, buf, len); - } -return 0 ; + MemTxResult res = address_space_rw(&address_space_memory, addr, +MEMTXATTRS_UNSPECIFIED , buf, len, + is_write); +return res ==MEMTX_OK ?0 :-1 ; }if (cpu->cc->memory_rw_debug) {
Signature · 1 line
2.53.0
[PULL 18/48] target/arm: Only set CPU_INTERRUPT_EXITTB for TCG
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Commit 34c45d53026 ("target-arm: kvm - re-inject guest debug exceptions") removed CPU_INTERRUPT_EXITTB from KVM, but it also appears on HVF. Better to restrict it to TCG.
Message-Id: <[email protected]>
--- target/arm/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
target/arm/helper.c +1 -1
@@ -9633,7 +9633,7 @@ void arm_cpu_do_interrupt(CPUState *cs)arm_call_el_change_hook (cpu); -if (!kvm_enabled ()) { +if (tcg_enabled ()) {cpu_set_interrupt (cs,CPU_INTERRUPT_EXITTB ); }
Signature · 1 line
2.53.0
[PULL 15/48] qom/object: Remove pre-C11 check
In reply to Philippe Mathieu-DaudéWe mandate a compiler supporting C11 since 2021-06-15 in commit d22797ce36a ("configure: Use -std=gnu11"), thus the max_align_t type definition exists. Remove what is now dead code.
Note, C11 provides aligned_alloc(). Using it is left as a future cleanup step.
Message-Id: <[email protected]>
--- qom/object.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-)
qom/object.c +1 -13
@@ -675,18 +675,6 @@ static void object_finalize(void *data) } } -/* Find the minimum alignment guaranteed by the system malloc. */ -#if __STDC_VERSION__ >=201112L -typedef max_align_t qemu_max_align_t ; -#else -typedef union { -long l; -void *p; -double d; -long double ld; -}qemu_max_align_t ; -#endif -static Object *object_new_with_type (Type type) {Object *obj;
@@ -703,7 +691,7 @@ static Object *object_new_with_type(Type type)* Do not use qemu_memalign unless required. Depending on the * implementation, extra alignment implies extra overhead. */ -if (likely (align <= __alignof__(qemu_max_align_t ))) { +if (likely (align <= __alignof__(max_align_t ))) { obj =g_malloc (size); obj_free = g_free; }else {
Signature · 1 line
2.53.0
[PULL 19/48] target/arm: Remove vcpu_dirty=true assigments in hvf_handle_exception()
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Commit 2a425aae0b5 ("target/arm: ensure PSCI register updates are flushed") manually sets %vcpu_dirty in hvf_handle_exception(), but these calls follow calls to cpu_synchronize_state() which itself sets %vcpu_dirty. Better have the generic CPU API handle this, but add a pair of assertions when serializing the accelerator state to be safe.
Message-ID: <[email protected]>
--- target/arm/hvf/hvf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
target/arm/hvf/hvf.c +4 -2
@@ -794,6 +794,8 @@ int hvf_arch_get_registers(CPUState *cpu)hv_simd_fp_uchar16_t fpval;int i, n; +assert (!cpu->vcpu_dirty); +for (i =0 ; i <ARRAY_SIZE (hvf_reg_match); i++) { ret =hv_vcpu_get_reg (cpu->accel->fd, hvf_reg_match[i].reg, &val); *(uint64_t *)((void *)env + hvf_reg_match[i].offset) = val;
@@ -945,6 +947,8 @@ int hvf_arch_put_registers(CPUState *cpu)hv_simd_fp_uchar16_t fpval;int i, n; +assert (cpu->vcpu_dirty); +/* * Set SVCR first because changing it will zero out Z/P (including NEON) * regs
@@ -2498,7 +2502,6 @@ static int hvf_handle_exception(CPUState *cpu, hv_vcpu_exit_exception_t *excp)/* SMCCC 1.3 section 5.2 says every unknown SMCCC call returns -1 */ env->xregs[0 ] =-1 ; } - cpu->vcpu_dirty = true; }else {trace_hvf_unknown_hvc (env->pc, env->xregs[0 ]);hvf_raise_exception (cpu,EXCP_UDEF ,syn_uncategorized (),1 );
@@ -2515,7 +2518,6 @@ static int hvf_handle_exception(CPUState *cpu, hv_vcpu_exit_exception_t *excp)/* SMCCC 1.3 section 5.2 says every unknown SMCCC call returns -1 */ env->xregs[0 ] =-1 ; } - cpu->vcpu_dirty = true; }else {trace_hvf_unknown_smc (env->xregs[0 ]);hvf_raise_exception (cpu,EXCP_UDEF ,syn_uncategorized (),1 );
Signature · 1 line
2.53.0
[PULL 11/48] target/s390x: Factor common s390_ipl_read/write() helpers
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
Prevent duplication factoring common helpers.
Message-Id: <[email protected]>
--- target/s390x/diag.c | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)
target/s390x/diag.c +23 -18
@@ -73,11 +73,30 @@ static int diag308_parm_check(CPUS390XState *env, uint64_t r1, uint64_t addr,return 0 ; } +static void s390_ipl_read (CPUS390XState *env,uint64_t addr, +IplParameterBlock *iplb,size_t size) +{ +if (s390_is_pv ()) { +s390_cpu_pv_mem_read (env_archcpu (env),0 , iplb, size); + }else { +cpu_physical_memory_read (addr, iplb, size); + } +} + +static void s390_ipl_write (CPUS390XState *env,uint64_t addr, +IplParameterBlock *iplb,size_t size) +{ +if (s390_is_pv ()) { +s390_cpu_pv_mem_write (env_archcpu (env),0 , iplb, size); + }else { +cpu_physical_memory_write (addr, iplb, size); + } +} +void handle_diag_308 (CPUS390XState *env,uint64_t r1,uint64_t r3,uintptr_t ra) {bool valid;CPUState *cs =env_cpu (env); -S390CPU *cpu =env_archcpu (env);uint64_t addr = env->regs[r1];uint64_t subcode = env->regs[r3];IplParameterBlock *iplb;
@@ -114,22 +133,12 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, uint64_t r3, uintptr_t ra)return ; } iplb =g_new0 (IplParameterBlock,1 ); -if (!s390_is_pv ()) { -cpu_physical_memory_read (addr, iplb,sizeof (iplb->len)); - }else { -s390_cpu_pv_mem_read (cpu,0 , iplb,sizeof (iplb->len)); - } - +s390_ipl_read (env, addr, iplb,sizeof (iplb->len));if (!iplb_valid_len (iplb)) { env->regs[r1 +1 ] =DIAG_308_RC_INVALID ; goto out; } - -if (!s390_is_pv ()) { -cpu_physical_memory_read (addr, iplb,be32_to_cpu (iplb->len)); - }else { -s390_cpu_pv_mem_read (cpu,0 , iplb,be32_to_cpu (iplb->len)); - } +s390_ipl_read (env, addr, iplb,be32_to_cpu (iplb->len)); valid = subcode ==DIAG308_PV_SET ?iplb_valid_pv (iplb) :iplb_valid (iplb);if (!valid) {
@@ -164,11 +173,7 @@ out:return ; } -if (!s390_is_pv ()) { -cpu_physical_memory_write (addr, iplb,be32_to_cpu (iplb->len)); - }else { -s390_cpu_pv_mem_write (cpu,0 , iplb,be32_to_cpu (iplb->len)); - } +s390_ipl_write (env, addr, iplb,be32_to_cpu (iplb->len)); env->regs[r1 +1 ] =DIAG_308_RC_OK ;return ;case DIAG308_PV_START :
Signature · 1 line
2.53.0
[PULL 23/48] target/ppc: Restrict TCGTBCPUState to TCG
In reply to Philippe Mathieu-DaudéTCGTBCPUState is a structure used during TCG translation, therefore not needed when TCG is not available.
Message-Id: <[email protected]>
--- target/ppc/internal.h | 5 ++++- target/ppc/helper_regs.c | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-)
target/ppc/internal.h +4 -1
@@ -22,7 +22,6 @@#include "exec/memop.h" #include "hw/core/registerfields.h" #include "exec/page-protection.h" -#include "accel/tcg/tb-cpu-state.h" static inline bool ppc_env_is_little_endian (const CPUPPCState *env) {
@@ -326,6 +325,10 @@ static inline int ger_pack_masks(int pmsk, int ymsk, int xmsk) return msk; } +#ifdef CONFIG_TCG +#include "accel/tcg/tb-cpu-state.h" +TCGTBCPUState ppc_get_tb_cpu_state (CPUState *cs); +#endif #endif /* PPC_INTERNAL_H */
target/ppc/helper_regs.c +2 -1
@@ -27,7 +27,6 @@#include "power8-pmu.h" #include "cpu-models.h" #include "spr_common.h" -#include "accel/tcg/cpu-ops.h" #include "internal.h" /* Swap temporary saved registers with GPRs */
@@ -261,6 +260,7 @@ void hreg_update_pmu_hflags(CPUPPCState *env) env->hflags |=hreg_compute_pmu_hflags_value (env); } +#ifdef CONFIG_TCG TCGTBCPUState ppc_get_tb_cpu_state (CPUState *cs) {CPUPPCState *env =cpu_env (cs);
@@ -277,6 +277,7 @@ TCGTBCPUState ppc_get_tb_cpu_state(CPUState *cs) return (TCGTBCPUState){ .pc = env->nip, .flags = hflags_current }; } +#endif /* CONFIG_TCG */ #ifndef CONFIG_USER_ONLY void cpu_interrupt_exittb (CPUState *cs)
Signature · 1 line
2.53.0
[PULL 27/48] accel/hvf: Reduce hvf_kernel_irqchip_override scope
In reply to Philippe Mathieu-Daudéhvf_kernel_irqchip_override is only used within the accel/hvf/hvf-all.c file, no need to expose the symbol.
Message-Id: <[email protected]>
--- include/system/hvf_int.h | 1 - accel/hvf/hvf-all.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)
include/system/hvf_int.h +0 -1
@@ -113,5 +113,4 @@ bool hvf_arch_cpu_realize(CPUState *cpu, Error **errp);uint32_t hvf_arch_get_default_ipa_bit_size (void );uint32_t hvf_arch_get_max_ipa_bit_size (void ); -extern bool hvf_kernel_irqchip_override;#endif
accel/hvf/hvf-all.c +1 -1
@@ -25,7 +25,7 @@bool hvf_allowed;bool hvf_kernel_irqchip;bool hvf_nested_virt; -bool hvf_kernel_irqchip_override; +static bool hvf_kernel_irqchip_override;void hvf_nested_virt_enable (bool nested_virt) {
Signature · 1 line
2.53.0
[PULL 14/48] hw/xen/interface: Remove pre-C99 checks
In reply to Philippe Mathieu-DaudéWe mandate a compiler supporting C99 since 2019-01-17 in commit 7be41675f7c ("configure: Force the C standard to gnu99"), thus supporting flexible array members [*]. Remove what is now dead code.
[*] https://www.gnu.org/software/c-intro-and-ref/manual/html_node/Flexible-Array-Fields.html
Message-Id: <[email protected]>
--- include/hw/xen/interface/physdev.h | 2 +- include/hw/xen/interface/version.h | 5 ++--- include/hw/xen/interface/xen-compat.h | 2 -- include/hw/xen/interface/xen.h | 14 -------------- 4 files changed, 3 insertions(+), 20 deletions(-)
include/hw/xen/interface/physdev.h +1 -1
@@ -283,7 +283,7 @@ struct physdev_pci_device_add {* First element ([0]) is PXM domain associated with the device (if * XEN_PCI_DEV_PXM is set) */ -uint32_t optarr[XEN_FLEX_ARRAY_DIM ]; +uint32_t optarr[]; };typedef struct physdev_pci_device_add physdev_pci_device_add_t ;DEFINE_XEN_GUEST_HANDLE (physdev_pci_device_add_t);
include/hw/xen/interface/version.h +2 -3
@@ -77,9 +77,8 @@ typedef char xen_commandline_t[1024];*/ #define XENVER_build_id 10struct xen_build_id { -uint32_t len;/* IN: size of buf[]. */ -unsigned char buf[XEN_FLEX_ARRAY_DIM ]; -/* OUT: Variable length buffer with build_id. */ +uint32_t len;/* IN: size of buf[]. */ +unsigned char buf[];/* OUT: Variable length buffer with build_id. */ };typedef struct xen_build_id xen_build_id_t ;
include/hw/xen/interface/xen-compat.h +0 -2
@@ -24,6 +24,4 @@#error "These header files do not support the requested interface version."#endif -#define COMPAT_FLEX_ARRAY_DIM XEN_FLEX_ARRAY_DIM -#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
include/hw/xen/interface/xen.h +0 -14
@@ -36,15 +36,6 @@ DEFINE_XEN_GUEST_HANDLE(uint64_t);DEFINE_XEN_GUEST_HANDLE (xen_pfn_t);DEFINE_XEN_GUEST_HANDLE (xen_ulong_t); -/* Define a variable length array (depends on compiler). */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >=199901L -#define XEN_FLEX_ARRAY_DIM -#elif defined(__GNUC__) -#define XEN_FLEX_ARRAY_DIM 0 -#else -#define XEN_FLEX_ARRAY_DIM 1/* variable size */ -#endif -/* Turn a plain number into a C unsigned (long (long)) constant. */ #define __xen_mk_uint (x) x ## U#define __xen_mk_ulong (x) x ## UL
@@ -986,13 +977,8 @@ typedef struct { ((d) >> 8) & 0xFF, ((d) >> 0) & 0xFF, \ e1, e2, e3, e4, e5, e6}} -#if defined(__STDC_VERSION__) ? __STDC_VERSION__ >= 199901L : defined(__GNUC__)#define XEN_DEFINE_UUID (a, b, c, d, e1, e2, e3, e4, e5, e6) \ ((xen_uuid_t)XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6)) -#else -#define XEN_DEFINE_UUID (a, b, c, d, e1, e2, e3, e4, e5, e6) \ - XEN_DEFINE_UUID_(a, b, c, d, e1, e2, e3, e4, e5, e6) -#endif /* __STDC_VERSION__ / __GNUC__ */ #endif /* !__ASSEMBLY__ */
Signature · 1 line
2.53.0
[PULL 30/48] meson: build macOS signed binary as part of the default target
In reply to Philippe Mathieu-DaudéFrom: Emmanuel Blot <[email protected]>
Message-ID: <[email protected]>
--- meson.build | 1 + 1 file changed, 1 insertion(+)
meson.build +1 -0
@@ -4453,6 +4453,7 @@ foreach target : target_dirs emulators += {exe['name'] : custom_target(exe['name'], input: build_input, output: exe['name'], + build_by_default: true, command: [entitlement, '@OUTPUT@', '@INPUT@']) }
Signature · 1 line
2.53.0
[PULL 20/48] target/arm: Better describe PMU depends on TCG or HVF
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
PMU is supported by TCG / HVF but not KVM. Make it explicit rewriting '!KVM' as 'TCG || HVF' (ignoring QTest, because vCPUs are not available there).
Message-Id: <[email protected]>
--- target/arm/cpu.c | 2 +- target/arm/machine.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-)
target/arm/cpu.c +1 -1
@@ -2183,7 +2183,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)if (arm_feature (env,ARM_FEATURE_PMU )) {pmu_init (cpu); -if (!kvm_enabled ()) { +if (tcg_enabled () ||hvf_enabled ()) {arm_register_pre_el_change_hook (cpu, &pmu_pre_el_change,0 );arm_register_el_change_hook (cpu, &pmu_post_el_change,0 ); }
target/arm/machine.c +5 -5
@@ -3,7 +3,7 @@#include "cpregs.h" #include "trace.h" #include "qemu/error-report.h" -#include "system/kvm.h" +#include "system/hvf.h" #include "system/tcg.h" #include "kvm_arm.h" #include "internals.h"
@@ -983,7 +983,7 @@ static int cpu_pre_save(void *opaque) {ARMCPU *cpu = opaque; -if (!kvm_enabled ()) { +if (tcg_enabled () ||hvf_enabled ()) {pmu_op_start (&cpu->env); }
@@ -1021,7 +1021,7 @@ static void cpu_post_save(void *opaque) {ARMCPU *cpu = opaque; -if (!kvm_enabled ()) { +if (tcg_enabled () ||hvf_enabled ()) {pmu_op_finish (&cpu->env); }
@@ -1055,7 +1055,7 @@ static int cpu_pre_load(void *opaque)*/ env->irq_line_state =UINT32_MAX ; -if (!kvm_enabled ()) { +if (tcg_enabled () ||hvf_enabled ()) {pmu_op_start (env); }
@@ -1234,7 +1234,7 @@ static int cpu_post_load(void *opaque, int version_id) } } -if (!kvm_enabled ()) { +if (tcg_enabled () ||hvf_enabled ()) {pmu_op_finish (env); }
Signature · 1 line
2.53.0
[PULL 26/48] accel/hvf: fix double hv_vcpu_destroy() causing teardown error on ARM
In reply to Philippe Mathieu-DaudéFrom: Matheus Tavares Bernardino <[email protected]>
The following callstack causes hv_vcpu_destroy() to be called twice, producing HV_BAD_ARGUMENT on the already-destroyed handler:
hvf_vcpu_destroy
|
|_ hv_vcpu_destroy
|
|_ hvf_arch_vcpu_destroy
|
|_ hv_vcpu_destroyThe first hv_vcpu_destroy call covers both x86 and arm. Let's remove the second one, as it is redundant.
This reverts commit feee55d36a1c5d494ee73812d279b439bb05137c.
Message-ID: <ee6f642af1dab29aaf99f86ac9254ddd25765bf8.1776172276.git.matheus.bernardino@oss.qualcomm.com>
--- target/arm/hvf/hvf.c | 5 ----- 1 file changed, 5 deletions(-)
target/arm/hvf/hvf.c +0 -5
@@ -1301,15 +1301,10 @@ void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu)void hvf_arch_vcpu_destroy (CPUState *cpu) { -hv_return_t ret; -if (!hvf_irqchip_in_kernel ()) {timer_free (cpu->accel->wfi_timer); cpu->accel->wfi_timer =NULL ; } - - ret =hv_vcpu_destroy (cpu->accel->fd); -assert_hvf_ok (ret); }static bool hvf_arm_el2_supported (void )
Signature · 1 line
2.53.0
[PULL 34/48] exec/cpu-common.h: Include missing 'qemu/thread.h' header
In reply to Philippe Mathieu-DaudéUnfortunately we need to include "qemu/thread.h" -- which is currently indirectly pulled in -- to get the QemuMutex type definition:
extern QemuMutex qemu_cpu_list_lock;
Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 1 + 1 file changed, 1 insertion(+)
include/exec/cpu-common.h +1 -0
@@ -8,6 +8,7 @@#ifndef CPU_COMMON_H #define CPU_COMMON_H +#include "qemu/thread.h" #include "exec/vaddr.h" #include "hw/core/cpu.h" #include "tcg/debug-assert.h"
Signature · 1 line
2.53.0
[PULL 17/48] target/i386: Report TPR accesses to HVF
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
HVF should be able to handle task priority register accesses.
Message-Id: <[email protected]>
--- target/i386/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
target/i386/helper.c +1 -1
@@ -566,7 +566,7 @@ void cpu_report_tpr_access(CPUX86State *env, TPRAccess access)X86CPU *cpu =env_archcpu (env);CPUState *cs =env_cpu (env); -if (kvm_enabled () ||whpx_enabled () ||nvmm_enabled ()) { +if (kvm_enabled () ||whpx_enabled () ||nvmm_enabled () ||hvf_enabled ()) { env->tpr_access_type = access;cpu_interrupt (cs,CPU_INTERRUPT_TPR );
Signature · 1 line
2.53.0
[PULL 32/48] util/cutils: drop qemu_strnlen() in favor of strnlen()
In reply to Philippe Mathieu-DaudéFrom: Bin Guo <[email protected]>
There are only three call sites, and strnlen() is available on all supported platforms (POSIX.1-2008, Windows via UCRT, MinGW). Remove the hand-rolled wrapper and use the standard function directly.
While here, align bsd-user/uaccess.c to use size_t for max_len/len, matching linux-user/uaccess.c and eliminating a signed/unsigned mismatch.
Also remove the stale qemu_strnlen() entry from docs/devel/style.rst.
Message-ID: <[email protected]>
--- docs/devel/style.rst | 1 - include/qemu/cutils.h | 17 +---------------- bsd-user/uaccess.c | 4 ++-- linux-user/uaccess.c | 2 +- util/cutils.c | 15 +-------------- 5 files changed, 5 insertions(+), 34 deletions(-)
docs/devel/style.rst +0 -1
@@ -519,7 +519,6 @@ QEMU provides other useful string functions: int strstart(const char *str, const char *val, const char **ptr) int stristart(const char *str, const char *val, const char **ptr) - int qemu_strnlen(const char *s, int max_len) There are also replacement character processing macros for isxyz and toxyz, so instead of e.g. isalnum you should use qemu_isalnum.
include/qemu/cutils.h +1 -16
@@ -101,22 +101,7 @@ int strstart(const char *str, const char *val, const char **ptr);* false otherwise. */ int stristart (const char *str,const char *val,const char **ptr); -/** -* qemu_strnlen: -* @s: string -* @max_len: maximum number of bytes in @s to scan -* -* Return the length of the string @s, like strlen(), but do not -* examine more than @max_len bytes of the memory pointed to by @s. -* If no NUL terminator is found within @max_len bytes, then return -* @max_len instead. -* -* This function has the same behaviour as the POSIX strnlen() -* function. -* -* Returns: length of @s in bytes, or @max_len, whichever is smaller. -*/ -int qemu_strnlen (const char *s,int max_len); +/** * qemu_strsep: * @input: pointer to string to parse
bsd-user/uaccess.c +2 -2
@@ -43,7 +43,7 @@ abi_long target_strlen(abi_ulong guest_addr1) {uint8_t *ptr;abi_ulong guest_addr; -int max_len, len; +size_t max_len, len; guest_addr = guest_addr1;for (;;) {
@@ -51,7 +51,7 @@ abi_long target_strlen(abi_ulong guest_addr1) ptr =lock_user (VERIFY_READ , guest_addr, max_len,1 );if (!ptr)return -TARGET_EFAULT ; - len =qemu_strnlen ((const char *)ptr, max_len); + len =strnlen ((const char *)ptr, max_len);unlock_user (ptr, guest_addr,0 ); guest_addr += len;/* we don't allow wrapping or integer overflow */
linux-user/uaccess.c +1 -1
@@ -99,7 +99,7 @@ ssize_t target_strlen(abi_ulong guest_addr1) ptr =lock_user (VERIFY_READ , guest_addr, max_len,1 );if (!ptr)return -TARGET_EFAULT ; - len =qemu_strnlen ((const char *)ptr, max_len); + len =strnlen ((const char *)ptr, max_len);unlock_user (ptr, guest_addr,0 ); guest_addr += len;/* we don't allow wrapping or integer overflow */
util/cutils.c +1 -14
@@ -54,7 +54,7 @@void strpadcpy (char *buf,int buf_size,const char *str,char pad) { -int len =qemu_strnlen (str, buf_size); +size_t len =strnlen (str, buf_size);memcpy (buf, str, len);memset (buf + len, pad, buf_size - len); }
@@ -118,19 +118,6 @@ int stristart(const char *str, const char *val, const char **ptr)return 1 ; } -/* XXX: use host strnlen if available ? */ -int qemu_strnlen (const char *s,int max_len) -{ -int i; - -for (i =0 ; i < max_len; i++) { -if (s[i] =='\0' ) { -break ; - } - } -return i; -} -char *qemu_strsep (char **input,const char *delim) {char *result = *input;
Signature · 1 line
2.53.0
[PULL 21/48] target/arm/ptw: Restrict PMSAv8 code to TCG
In reply to Philippe Mathieu-DaudéArmv8-M Protected Memory System Architecture can only be emulated, therefore restrict it to TCG to avoid compiling it on hardware accelerators.
Message-Id: <[email protected]>
--- target/arm/ptw.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
target/arm/ptw.c +19 -1
@@ -13,11 +13,13 @@#include "exec/page-protection.h" #include "exec/target_page.h" #include "exec/tlb-flags.h" +#ifdef CONFIG_TCG #include "accel/tcg/probe.h" +#include "target/arm/tcg/idau.h" +#endif #include "cpu.h" #include "internals.h" #include "cpu-features.h" -#include "target/arm/tcg/idau.h" typedef struct S1Translate { /*
@@ -2818,6 +2820,8 @@ static bool get_phys_addr_pmsav7(CPUARMState *env,return (ptw->in_prot_check & ~result->f.prot) ==0 ; } +#ifdef CONFIG_TCG +static uint32_t *regime_rbar (CPUARMState *env,ARMMMUIdx mmu_idx,uint32_t secure) {
@@ -3247,6 +3251,20 @@ static bool get_phys_addr_pmsav8(CPUARMState *env, return ret; } +#else /* !CONFIG_TCG */ + +static bool get_phys_addr_pmsav8 (CPUARMState *env, +S1Translate *ptw, +uint32_t address, +MMUAccessType access_type, +GetPhysAddrResult *result, +ARMMMUFaultInfo *fi) +{ +g_assert_not_reached (); +} + +#endif /* !CONFIG_TCG */ +/* * Translate from the 4-bit stage 2 representation of * memory attributes (without cache-allocation hints) to
Signature · 1 line
2.53.0
[PULL 29/48] accel/tcg: Restrict IOMMU declarations
In reply to Philippe Mathieu-DaudéMove the two TCG-specific IOMMU method declarations from the generic "exec/cpu-common.h" header to "accel/tcg/iommu.h".
Message-Id: <[email protected]>
--- include/accel/tcg/iommu.h | 7 +++++++ include/exec/cpu-common.h | 3 --- accel/tcg/cpu-exec.c | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-)
include/accel/tcg/iommu.h +7 -0
@@ -7,6 +7,10 @@#ifndef ACCEL_TCG_IOMMU_H #define ACCEL_TCG_IOMMU_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +#ifdef CONFIG_USER_ONLY #error Cannot include accel/tcg/iommu.h from user emulation#endif
@@ -14,6 +18,9 @@#include "exec/hwaddr.h" #include "exec/memattrs.h" +void tcg_iommu_init_notifier_list (CPUState *cpu); +void tcg_iommu_free_notifier_list (CPUState *cpu); + MemoryRegionSection *address_space_translate_for_iotlb(CPUState *cpu, int asidx, hwaddr addr,
include/exec/cpu-common.h +0 -3
@@ -34,9 +34,6 @@ unsigned int cpu_list_generation_id_get(void);int cpu_get_free_index (void ); -void tcg_iommu_init_notifier_list (CPUState *cpu); -void tcg_iommu_free_notifier_list (CPUState *cpu); -/** * cpu_address_space_init: * @cpu: CPU to add this address space to
accel/tcg/cpu-exec.c +3 -1
@@ -26,7 +26,6 @@#include "accel/tcg/helper-retaddr.h" #include "trace.h" #include "disas/disas.h" -#include "exec/cpu-common.h" #include "exec/cpu-interrupt.h" #include "exec/page-protection.h" #include "exec/mmap-lock.h"
@@ -46,6 +45,9 @@#include "tb-context.h" #include "tb-internal.h" #include "internal-common.h" +#if !defined(CONFIG_USER_ONLY ) +#include "accel/tcg/iommu.h" +#endif /* -icount align implementation. */
Signature · 1 line
2.53.0
[PULL 35/48] exec/cpu-common.h: Avoid including unused 'exec/vaddr.h' header
In reply to Philippe Mathieu-DaudéWe neglected to remove the "exec/vaddr.h" header when moving cpu_memory_rw_debug() around in commit e9048f099b3 ("exec/cpu:
Declare cpu_memory_rw_debug() in 'hw/core/cpu.h' and document").
Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 1 - 1 file changed, 1 deletion(-)
include/exec/cpu-common.h +0 -1
@@ -9,7 +9,6 @@#define CPU_COMMON_H #include "qemu/thread.h" -#include "exec/vaddr.h" #include "hw/core/cpu.h" #include "tcg/debug-assert.h" #include "exec/page-protection.h"
Signature · 1 line
2.53.0
[PULL 28/48] accel/tcg: remove duplicate include
In reply to Philippe Mathieu-DaudéFrom: Osama Abdelkader <[email protected]>
tb-internal.h is included twice
Message-ID: <[email protected]>
--- accel/tcg/cputlb.c | 1 - accel/tcg/tb-maint.c | 1 - accel/tcg/translate-all.c | 1 - 3 files changed, 3 deletions(-)
accel/tcg/cputlb.c +0 -1
@@ -44,7 +44,6 @@#include "tb-internal.h" #include "trace.h" #include "tb-hash.h" -#include "tb-internal.h" #include "tlb-bounds.h" #include "internal-common.h" #ifdef CONFIG_PLUGIN
accel/tcg/tb-maint.c +0 -1
@@ -32,7 +32,6 @@#include "tcg/tcg.h" #include "tb-hash.h" #include "tb-context.h" -#include "tb-internal.h" #include "internal-common.h" #ifdef CONFIG_USER_ONLY #include "user/page-protection.h"
accel/tcg/translate-all.c +0 -1
@@ -33,7 +33,6 @@#include "tb-jmp-cache.h" #include "tb-hash.h" #include "tb-context.h" -#include "tb-internal.h" #include "internal-common.h" #include "tcg/perf.h" #include "tcg/insn-start-words.h"
Signature · 1 line
2.53.0
[PULL 36/48] exec/cpu-common.h: Avoid including unused 'tcg/debug-assert.h' header
In reply to Philippe Mathieu-DaudéSince commit efe25c260cd ("include/exec: Split out accel/tcg/cpu-mmu-index.h") the "exec/cpu-common.h" isn't using anything defined in "tcg/debug-assert.h".
Include it in target/loongarch/tcg/tcg_cpu.c however, where it is required but included indirectly, otherwise we'd get:
target/loongarch/tcg/tcg_cpu.c:291:5: error: call to undeclared function 'tcg_debug_assert'
291 | tcg_debug_assert(!tcg_cflags_has(cs, CF_PCREL));
| ^Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 1 - target/loongarch/tcg/tcg_cpu.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-)
include/exec/cpu-common.h +0 -1
@@ -10,7 +10,6 @@#include "qemu/thread.h" #include "hw/core/cpu.h" -#include "tcg/debug-assert.h" #include "exec/page-protection.h" #define EXCP_INTERRUPT 0x10000/* async interruption */
target/loongarch/tcg/tcg_cpu.c +1 -0
@@ -13,6 +13,7 @@#include "accel/tcg/cpu-ops.h" #include "exec/translation-block.h" #include "exec/target_page.h" +#include "tcg/debug-assert.h" #include "tcg_loongarch.h" #include "internals.h"
Signature · 1 line
2.53.0
[PULL 31/48] configure: honor --extra-ldflags when forced to use objc_LINKER
In reply to Philippe Mathieu-DaudéFrom: Matt Jacobson <[email protected]>
3220b38a8d had the side effect of making the individual target link steps use objc_LINKER on macOS, because coreaudio.m became visible to Meson as a source file. (The preexisting presence of cocoa.m is masked by the fact that it gets built into libsystem and then extracted back out as an object file.)
configure correctly passes $EXTRA_LDFLAGS to the "C linker" and "C++ linker", but it neglected to do so for the "Objective-C linker". Fix that.
Message-ID: <[email protected]>
--- configure | 1 + 1 file changed, 1 insertion(+)
configure +1 -0
@@ -1849,6 +1849,7 @@ if test "$skip_meson" = no; then test -n "$objcc" && echo "objc_args = [$(meson_quote $OBJCFLAGS $EXTRA_OBJCFLAGS)]" >> $cross echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross + test -n "$objcc" && echo "objc_link_args = [$(meson_quote $OBJCFLAGS $LDFLAGS $EXTRA_OBJCFLAGS $EXTRA_LDFLAGS)]" >> $cross # Only enable by default for git builds and on select OSes echo "# environment defaults, can still be overridden on " >> $cross
Signature · 1 line
2.53.0
[PULL 38/48] system/memory: Remove unnecessary CONFIG_USER_ONLY guards
In reply to Philippe Mathieu-DaudéThis header is only used when building system units, checking for CONFIG_USER_ONLY is pointless.
Message-Id: <[email protected]>
--- system/memory-internal.h | 2 -- 1 file changed, 2 deletions(-)
system/memory-internal.h +0 -2
@@ -14,7 +14,6 @@#ifndef MEMORY_INTERNAL_H #define MEMORY_INTERNAL_H -#ifndef CONFIG_USER_ONLYstatic inline AddressSpaceDispatch *flatview_to_dispatch (FlatView *fv) {return fv->dispatch;
@@ -57,4 +56,3 @@ static inline MemOp devend_memop(enum device_endian end) }#endif -#endif
Signature · 1 line
2.53.0
[PULL 33/48] ui/cocoa: Use qemu_input_map_osx_to_linux
In reply to Philippe Mathieu-DaudéFrom: Akihiko Odaki <[email protected]>
ui/cocoa used to have a conversion table from macOS keycode to Linux key code. It is an unnecessary redundancy as ui/input-keymap.c already has such a table. Worse, I added an incorrect mapping of kVK_JIS_Eisu and kVK_JIS_Kana with commit 708b72557ff5 ("ui/cocoa: Support unique keys of JIS keyboards").
According to the following documentations, the definitions in ui/keycodemapdb/keymaps.csv, which ui/input-keymap.c uses, are correct:
https://developer.apple.com/documentation/uikit/uikeyboardhidusage/uikeyboardhidusagekeyboardlang1?language=objc
https://developer.apple.com/documentation/uikit/uikeyboardhidusage/uikeyboardhidusagekeyboardlang2?language=objc
https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/keyboard-japan-ime
Use qemu_input_map_osx_to_linux to eliminate the redundancy and incorrect mappings.
Message-ID: <[email protected]>
--- ui/cocoa.m | 131 ++--------------------------------------------------- 1 file changed, 3 insertions(+), 128 deletions(-)
ui/cocoa.m +3 -128
@@ -141,138 +141,13 @@ static bool bool_with_bql(BoolCodeBlock block) return val; } -// Mac to Linux conversion -static const unsigned int mac_to_linux_map[] = { - [kVK_ANSI_A] = KEY_A, - [kVK_ANSI_B] = KEY_B, - [kVK_ANSI_C] = KEY_C, - [kVK_ANSI_D] = KEY_D, - [kVK_ANSI_E] = KEY_E, - [kVK_ANSI_F] = KEY_F, - [kVK_ANSI_G] = KEY_G, - [kVK_ANSI_H] = KEY_H, - [kVK_ANSI_I] = KEY_I, - [kVK_ANSI_J] = KEY_J, - [kVK_ANSI_K] = KEY_K, - [kVK_ANSI_L] = KEY_L, - [kVK_ANSI_M] = KEY_M, - [kVK_ANSI_N] = KEY_N, - [kVK_ANSI_O] = KEY_O, - [kVK_ANSI_P] = KEY_P, - [kVK_ANSI_Q] = KEY_Q, - [kVK_ANSI_R] = KEY_R, - [kVK_ANSI_S] = KEY_S, - [kVK_ANSI_T] = KEY_T, - [kVK_ANSI_U] = KEY_U, - [kVK_ANSI_V] = KEY_V, - [kVK_ANSI_W] = KEY_W, - [kVK_ANSI_X] = KEY_X, - [kVK_ANSI_Y] = KEY_Y, - [kVK_ANSI_Z] = KEY_Z, - - [kVK_ANSI_0] = KEY_0, - [kVK_ANSI_1] = KEY_1, - [kVK_ANSI_2] = KEY_2, - [kVK_ANSI_3] = KEY_3, - [kVK_ANSI_4] = KEY_4, - [kVK_ANSI_5] = KEY_5, - [kVK_ANSI_6] = KEY_6, - [kVK_ANSI_7] = KEY_7, - [kVK_ANSI_8] = KEY_8, - [kVK_ANSI_9] = KEY_9, - - [kVK_ANSI_Grave] = KEY_GRAVE, - [kVK_ANSI_Minus] = KEY_MINUS, - [kVK_ANSI_Equal] = KEY_EQUAL, - [kVK_Delete] = KEY_BACKSPACE, - [kVK_CapsLock] = KEY_CAPSLOCK, - [kVK_Tab] = KEY_TAB, - [kVK_Return] = KEY_ENTER, - [kVK_ANSI_LeftBracket] = KEY_LEFTBRACE, - [kVK_ANSI_RightBracket] = KEY_RIGHTBRACE, - [kVK_ANSI_Backslash] = KEY_BACKSLASH, - [kVK_ANSI_Semicolon] = KEY_SEMICOLON, - [kVK_ANSI_Quote] = KEY_APOSTROPHE, - [kVK_ANSI_Comma] = KEY_COMMA, - [kVK_ANSI_Period] = KEY_DOT, - [kVK_ANSI_Slash] = KEY_SLASH, - [kVK_Space] = KEY_SPACE, - - [kVK_ANSI_Keypad0] = KEY_KP0, - [kVK_ANSI_Keypad1] = KEY_KP1, - [kVK_ANSI_Keypad2] = KEY_KP2, - [kVK_ANSI_Keypad3] = KEY_KP3, - [kVK_ANSI_Keypad4] = KEY_KP4, - [kVK_ANSI_Keypad5] = KEY_KP5, - [kVK_ANSI_Keypad6] = KEY_KP6, - [kVK_ANSI_Keypad7] = KEY_KP7, - [kVK_ANSI_Keypad8] = KEY_KP8, - [kVK_ANSI_Keypad9] = KEY_KP9, - [kVK_ANSI_KeypadDecimal] = KEY_KPDOT, - [kVK_ANSI_KeypadEnter] = KEY_KPENTER, - [kVK_ANSI_KeypadPlus] = KEY_KPPLUS, - [kVK_ANSI_KeypadMinus] = KEY_KPMINUS, - [kVK_ANSI_KeypadMultiply] = KEY_KPASTERISK, - [kVK_ANSI_KeypadDivide] = KEY_KPSLASH, - [kVK_ANSI_KeypadEquals] = KEY_KPEQUAL, - [kVK_ANSI_KeypadClear] = KEY_NUMLOCK, - - [kVK_UpArrow] = KEY_UP, - [kVK_DownArrow] = KEY_DOWN, - [kVK_LeftArrow] = KEY_LEFT, - [kVK_RightArrow] = KEY_RIGHT, - - [kVK_Help] = KEY_INSERT, - [kVK_Home] = KEY_HOME, - [kVK_PageUp] = KEY_PAGEUP, - [kVK_PageDown] = KEY_PAGEDOWN, - [kVK_End] = KEY_END, - [kVK_ForwardDelete] = KEY_DELETE, - - [kVK_Escape] = KEY_ESC, - - /* The Power key can't be used directly because the operating system uses - * it. This key can be emulated by using it in place of another key such as - * F1. Don't forget to disable the real key binding. - */ - /* [kVK_F1] = KEY_POWER, */ - - [kVK_F1] = KEY_F1, - [kVK_F2] = KEY_F2, - [kVK_F3] = KEY_F3, - [kVK_F4] = KEY_F4, - [kVK_F5] = KEY_F5, - [kVK_F6] = KEY_F6, - [kVK_F7] = KEY_F7, - [kVK_F8] = KEY_F8, - [kVK_F9] = KEY_F9, - [kVK_F10] = KEY_F10, - [kVK_F11] = KEY_F11, - [kVK_F12] = KEY_F12, - [kVK_F13] = KEY_SYSRQ, - [kVK_F14] = KEY_SCROLLLOCK, - [kVK_F15] = KEY_PAUSE, - - // JIS keyboards only - [kVK_JIS_Yen] = KEY_YEN, - [kVK_JIS_Underscore] = KEY_RO, - [kVK_JIS_KeypadComma] = KEY_KPCOMMA, - [kVK_JIS_Eisu] = KEY_MUHENKAN, - [kVK_JIS_Kana] = KEY_HENKAN, - - /* - * The eject and volume keys can't be used here because they are handled at - * a lower level than what an Application can see. - */ -}; - -static unsigned int cocoa_keycode_to_linux(int keycode) +static int cocoa_keycode_to_linux(int keycode) { - if (ARRAY_SIZE(mac_to_linux_map) <= keycode) { + if (qemu_input_map_osx_to_linux_len <= keycode) { error_report("(cocoa) warning unknown keycode 0x%x", keycode); return 0; } - return mac_to_linux_map[keycode]; + return qemu_input_map_osx_to_linux[keycode]; } /* Displays an alert dialog box with the specified message */
Signature · 1 line
2.53.0
[PULL 37/48] exec/cpu-common.h: Avoid including unused exec/page-protection.h header
In reply to Philippe Mathieu-DaudéSince commit e74781c0888e ("exec/cpu: Extract page-protection definitions to page-protection.h") the "exec/cpu-common.h" isn't using anything defined in "exec/page-protection.h"; remove it.
Include it in few files where it is currently pulled in indirectly, otherwise we'd get:
linux-user/qemu.h:182:22: error: ‘PAGE_READ’ undeclared
182 | #define VERIFY_READ PAGE_READ
| ^~~~~~~~~
target/loongarch/cpu_helper.c:329:25: error: use of undeclared identifier 'PAGE_READ'
329 | context->prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
| ^
target/loongarch/cpu_helper.c:329:37: error: use of undeclared identifier 'PAGE_WRITE'
329 | context->prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
| ^
target/loongarch/cpu_helper.c:329:50: error: use of undeclared identifier 'PAGE_EXEC'
329 | context->prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
| ^
target/ppc/mmu-hash32.h:98:20: error: use of undeclared identifier 'PAGE_READ'
98 | prot = PAGE_READ | PAGE_WRITE;
| ^
target/ppc/mmu-hash32.h:98:32: error: use of undeclared identifier 'PAGE_WRITE'
98 | prot = PAGE_READ | PAGE_WRITE;
| ^
hw/ppc/ppc_booke.c:39:17: error: use of undeclared identifier 'PAGE_RWX'
39 | tlb->prot = PAGE_RWX << 4 | PAGE_VALID;
| ^
hw/ppc/ppc_booke.c:39:33: error: use of undeclared identifier 'PAGE_VALID'
39 | tlb->prot = PAGE_RWX << 4 | PAGE_VALID;
| ^Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 1 - linux-user/qemu.h | 1 + target/ppc/mmu-hash32.h | 1 + hw/ppc/ppc_booke.c | 1 + linux-user/arm/elfload.c | 1 + linux-user/hppa/elfload.c | 1 + linux-user/x86_64/elfload.c | 1 + target/arm/tcg/cpregs-at.c | 1 + target/loongarch/cpu_helper.c | 1 + target/ppc/cpu_init.c | 1 + 10 files changed, 9 insertions(+), 1 deletion(-)
include/exec/cpu-common.h +0 -1
@@ -10,7 +10,6 @@#include "qemu/thread.h" #include "hw/core/cpu.h" -#include "exec/page-protection.h" #define EXCP_INTERRUPT 0x10000/* async interruption */ #define EXCP_HLT 0x10001/* hlt instruction reached */
linux-user/qemu.h +1 -0
@@ -6,6 +6,7 @@#include "user/abitypes.h" #include "user/page-protection.h" +#include "exec/page-protection.h" #include "syscall_defs.h" #include "target_syscall.h"
target/ppc/mmu-hash32.h +1 -0
@@ -3,6 +3,7 @@#ifndef CONFIG_USER_ONLY +#include "exec/page-protection.h" #include "system/memory.h" bool ppc_hash32_xlate(PowerPCCPU *cpu, vaddr eaddr, MMUAccessType access_type,
hw/ppc/ppc_booke.c +1 -0
@@ -24,6 +24,7 @@#include "qemu/osdep.h" #include "target/ppc/cpu.h" +#include "exec/page-protection.h" #include "exec/target_page.h" #include "hw/ppc/ppc.h" #include "qemu/timer.h"
linux-user/arm/elfload.c +1 -0
@@ -2,6 +2,7 @@#include "qemu/osdep.h" #include "qemu.h" +#include "exec/page-protection.h" #include "loader.h" #include "user-internals.h" #include "target_elf.h"
linux-user/hppa/elfload.c +1 -0
@@ -1,6 +1,7 @@/* SPDX-License-Identifier: GPL-2.0-or-later */ #include "qemu/osdep.h" +#include "exec/page-protection.h" #include "qemu.h" #include "loader.h" #include "target_elf.h"
linux-user/x86_64/elfload.c +1 -0
@@ -2,6 +2,7 @@#include "qemu/osdep.h" #include "qemu/error-report.h" +#include "exec/page-protection.h" #include "qemu.h" #include "loader.h" #include "target_elf.h"
target/arm/tcg/cpregs-at.c +1 -0
@@ -4,6 +4,7 @@*/ #include "qemu/osdep.h" +#include "exec/page-protection.h" #include "cpu.h" #include "cpu-features.h" #include "internals.h"
target/loongarch/cpu_helper.c +1 -0
@@ -11,6 +11,7 @@#include "system/tcg.h" #include "cpu.h" #include "accel/tcg/cpu-mmu-index.h" +#include "exec/page-protection.h" #include "exec/target_page.h" #include "internals.h" #include "cpu-csr.h"
target/ppc/cpu_init.c +1 -0
@@ -40,6 +40,7 @@#include "qemu/cutils.h" #include "disas/capstone.h" #include "fpu/softfloat.h" +#include "exec/page-protection.h" #include "exec/watchpoint.h" #include "helper_regs.h" #include "internal.h"
Signature · 1 line
2.53.0
[PULL 41/48] accel/tcg: Remove cpu_loop_exit() stub
In reply to Philippe Mathieu-DaudéLast commit removed the last non-TCG use of cpu_loop_exit(). This method is now only called within TCG files, so we can remove its stub for non-TCG accelerators.
Message-Id: <[email protected]>
--- accel/stubs/tcg-stub.c | 19 ------------------- accel/stubs/meson.build | 1 - 2 files changed, 20 deletions(-) delete mode 100644 accel/stubs/tcg-stub.c
accel/stubs/tcg-stub.c deleted +0 -19
@@ -1,19 +0,0 @@ -/* -* QEMU TCG accelerator stub -* -* Copyright Red Hat, Inc. 2013 -* -* Author: Paolo Bonzini <[email protected]> -* -* This work is licensed under the terms of the GNU GPL, version 2 or later. -* See the COPYING file in the top-level directory. -* -*/ - -#include "qemu/osdep.h" -#include "exec/cpu-common.h" - -G_NORETURN void cpu_loop_exit(CPUState *cpu) -{ -g_assert_not_reached (); -}
accel/stubs/meson.build +0 -1
@@ -4,7 +4,6 @@ stub_ss.add(files( 'nitro-stub.c', 'mshv-stub.c', 'nvmm-stub.c', - 'tcg-stub.c', 'whpx-stub.c', 'xen-stub.c', ))
Signature · 1 line
2.53.0
[PULL 42/48] accel/tcg: Move cpu_exec() out of 'exec/cpu-common.h'
In reply to Philippe Mathieu-DaudéIn order to keep TCG-specific functions under a TCG API namespace, add the "accel/tcg/cpu-loop.h" header and move cpu_exec() declaration to it. Add a bit of documentation.
Include "accel/tcg/cpu-loop.h" where appropriate.
Message-Id: <[email protected]>
--- bsd-user/freebsd/os-proc.h | 1 + include/accel/tcg/cpu-loop.h | 21 +++++++++++++++++++++ include/exec/cpu-common.h | 3 --- include/user/cpu_loop.h | 2 +- accel/tcg/cpu-exec.c | 1 + accel/tcg/tcg-accel-ops.c | 1 + bsd-user/main.c | 1 + 7 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 include/accel/tcg/cpu-loop.h
bsd-user/freebsd/os-proc.h +1 -0
@@ -14,6 +14,7 @@#include <sys/procdesc.h> #include <sys/wait.h> +#include "accel/tcg/cpu-loop.h" #include "target_arch_cpu.h" pid_t safe_wait4 (pid_t wpid,int *status,int options,struct rusage *rusage);
include/accel/tcg/cpu-loop.h new file +21 -0
@@ -0,0 +1,21 @@ +/* +* QEMU TCG CPU loop API +* +* SPDX-License-Identifier: GPL-2.0-or-later +*/ +#ifndef ACCEL_TCG_CPU_LOOP_COMMON_H +#define ACCEL_TCG_CPU_LOOP_COMMON_H + +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif + +/** +* cpu_exec: +* @cpu: the cpu context +* +* Returns one of the EXCP_* definitions (see "exec/cpu-common.h"). +*/ +int cpu_exec (CPUState *cpu); + +#endif
include/exec/cpu-common.h +0 -3
@@ -111,9 +111,6 @@ G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc);#endif /* CONFIG_TCG */ G_NORETURN void cpu_loop_exit(CPUState *cpu); -/* accel/tcg/cpu-exec.c */ -int cpu_exec (CPUState *cpu); -/** * env_archcpu(env) * @env: The architecture environment
include/user/cpu_loop.h +1 -1
@@ -22,7 +22,7 @@#include "exec/vaddr.h" #include "exec/mmu-access-type.h" - +#include "accel/tcg/cpu-loop.h" /** * adjust_signal_pc:
accel/tcg/cpu-exec.c +1 -0
@@ -22,6 +22,7 @@#include "qapi/error.h" #include "qapi/type-helpers.h" #include "hw/core/cpu.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "accel/tcg/helper-retaddr.h" #include "trace.h"
accel/tcg/tcg-accel-ops.c +1 -0
@@ -28,6 +28,7 @@#include "qemu/osdep.h" #include "accel/accel-ops.h" #include "accel/accel-cpu-ops.h" +#include "accel/tcg/cpu-loop.h" #include "system/tcg.h" #include "system/replay.h" #include "exec/icount.h"
bsd-user/main.c +1 -0
@@ -39,6 +39,7 @@#include "user/guest-base.h" #include "user/page-protection.h" #include "accel/accel-ops.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/startup.h" #include "qemu/timer.h" #include "qemu/envlist.h"
Signature · 1 line
2.53.0
[PULL 25/48] target/sparc: Include missing 'accel/tcg/cpu-ops.h' header in cpu.c
In reply to Philippe Mathieu-Daudétarget/sparc/cpu.c implement a TCGCPUOps structure, which is defined in "accel/tcg/cpu-ops.h":
1040 static const TCGCPUOps sparc_tcg_ops = {
...While this header is currently included indirectly, make the inclusion explicit to avoid issue when refactoring unrelated headers.
Message-Id: <[email protected]>
--- target/sparc/cpu.c | 1 + 1 file changed, 1 insertion(+)
target/sparc/cpu.c +1 -0
@@ -23,6 +23,7 @@#include "qemu/module.h" #include "qemu/qemu-print.h" #include "accel/tcg/cpu-mmu-index.h" +#include "accel/tcg/cpu-ops.h" #include "exec/translation-block.h" #include "hw/core/qdev-properties.h" #include "qapi/visitor.h"
Signature · 1 line
2.53.0
[PULL 40/48] hw/s390x/ipl: Remove TCG dependency in handle_diag_308()
In reply to Philippe Mathieu-DaudéRather than calling a TCG specific method in s390_ipl_reset_request(), have handle_diag_308() return whether a vCPU reset is pending, and use that in the TCG DIAG helper to return to the main loop.
Message-Id: <[email protected]>
--- target/s390x/s390x-internal.h | 3 ++- hw/s390x/ipl.c | 5 ----- target/s390x/diag.c | 32 ++++++++++++++++---------------- target/s390x/tcg/misc_helper.c | 5 ++++- 4 files changed, 22 insertions(+), 23 deletions(-)
target/s390x/s390x-internal.h +2 -1
@@ -385,7 +385,8 @@ int mmu_translate_real(CPUS390XState *env, hwaddr raddr, int rw,/* misc_helper.c */ int handle_diag_288 (CPUS390XState *env,uint64_t r1,uint64_t r3); -void handle_diag_308 (CPUS390XState *env,uint64_t r1,uint64_t r3, +/* Return whether a CPU reset is pending */ +bool handle_diag_308 (CPUS390XState *env,uint64_t r1,uint64_t r3,uintptr_t ra);
hw/s390x/ipl.c +0 -5
@@ -18,7 +18,6 @@#include "system/physmem.h" #include "system/reset.h" #include "system/runstate.h" -#include "system/tcg.h" #include "elf.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h"
@@ -690,10 +689,6 @@ void s390_ipl_reset_request(CPUState *cs, enum s390_reset reset_type) }else {qemu_system_reset_request (SHUTDOWN_CAUSE_GUEST_RESET ); } -/* as this is triggered by a CPU, make sure to exit the loop */ -if (tcg_enabled ()) { -cpu_loop_exit (cs); - } }void s390_ipl_get_reset_request (CPUState **cs,enum s390_reset *reset_type)
target/s390x/diag.c +16 -16
@@ -95,7 +95,7 @@ static void s390_ipl_write(CPUS390XState *env, uint64_t addr, } } -void handle_diag_308 (CPUS390XState *env,uint64_t r1,uint64_t r3,uintptr_t ra) +bool handle_diag_308 (CPUS390XState *env,uint64_t r1,uint64_t r3,uintptr_t ra) {bool valid;CPUState *cs =env_cpu (env);
@@ -105,34 +105,34 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, uint64_t r3, uintptr_t ra)if (env->psw.mask &PSW_MASK_PSTATE ) {s390_program_interrupt (env,PGM_PRIVILEGED , ra); -return ; +return false; }if (subcode & ~0x0ffffULL ) {s390_program_interrupt (env,PGM_SPECIFICATION , ra); -return ; +return false; }if (subcode >=DIAG308_PV_SET && !s390_has_feat (S390_FEAT_UNPACK )) {s390_program_interrupt (env,PGM_SPECIFICATION , ra); -return ; +return false; }switch (subcode) {case DIAG308_RESET_MOD_CLR :s390_ipl_reset_request (cs,S390_RESET_MODIFIED_CLEAR ); -break ; +return true;case DIAG308_RESET_LOAD_NORM :s390_ipl_reset_request (cs,S390_RESET_LOAD_NORMAL ); -break ; +return true;case DIAG308_LOAD_CLEAR :/* Well we still lack the clearing bit... */ s390_ipl_reset_request (cs,S390_RESET_REIPL ); -break ; +return true;case DIAG308_SET :case DIAG308_PV_SET :if (diag308_parm_check (env, r1, addr, ra, false)) { -return ; +return false; } iplb =g_new0 (IplParameterBlock,1 );s390_ipl_read (env, addr, iplb,sizeof (iplb->len));
@@ -159,11 +159,11 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, uint64_t r3, uintptr_t ra) env->regs[r1 +1 ] =DIAG_308_RC_OK ; out:g_free (iplb); -return ; +return false;case DIAG308_STORE :case DIAG308_PV_STORE :if (diag308_parm_check (env, r1, addr, ra, true)) { -return ; +return false; }if (subcode ==DIAG308_PV_STORE ) { iplb =s390_ipl_get_iplb_pv ();
@@ -172,30 +172,30 @@ out: }if (!iplb) { env->regs[r1 +1 ] =DIAG_308_RC_NO_CONF ; -return ; +return false; }s390_ipl_write (env, addr, iplb,be32_to_cpu (iplb->len)); env->regs[r1 +1 ] =DIAG_308_RC_OK ; -return ; +return false;case DIAG308_PV_START : iplb =s390_ipl_get_iplb_pv ();if (!iplb) { env->regs[r1 +1 ] =DIAG_308_RC_NO_PV_CONF ; -return ; +return false; }if (kvm_enabled () &&kvm_s390_get_hpage_1m ()) {error_report ("Protected VMs can currently not be backed with " "huge pages" ); env->regs[r1 +1 ] =DIAG_308_RC_INVAL_FOR_PV ; -return ; +return false; }s390_ipl_reset_request (cs,S390_RESET_PV ); -break ; +return true;default :s390_program_interrupt (env,PGM_SPECIFICATION , ra); -break ; +return false; } }
target/s390x/tcg/misc_helper.c +4 -1
@@ -135,7 +135,10 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num)case 0x308 :/* ipl */ bql_lock (); -handle_diag_308 (env, r1, r3,GETPC ()); +if (handle_diag_308 (env, r1, r3,GETPC ())) { +/* As reset is triggered by the CPU, make sure to exit the loop */ +cpu_loop_exit (CPU (env_archcpu (env))); + }bql_unlock (); r =0 ;break ;
Signature · 1 line
2.53.0
[PULL 22/48] target/arm: Restrict TCG specific headers
In reply to Philippe Mathieu-DaudéAvoid including TCG-specific headers in non-TCG builds.
Message-Id: <[email protected]>
--- target/arm/internals.h | 4 +++- target/arm/cpu-irq.c | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-)
target/arm/internals.h +3 -1
@@ -29,9 +29,11 @@#include "exec/vaddr.h" #include "exec/breakpoint.h" #include "exec/memop.h" +#ifdef CONFIG_TCG #include "accel/tcg/tb-cpu-state.h" -#include "hw/core/registerfields.h" #include "tcg/tcg-gvec-desc.h" +#endif +#include "hw/core/registerfields.h" #include "system/memory.h" #include "syndrome.h" #include "cpu-features.h"
target/arm/cpu-irq.c +2 -1
@@ -8,10 +8,11 @@#include "qemu/osdep.h" #include "cpu.h" -#include "accel/tcg/cpu-ops.h" #include "internals.h" #ifdef CONFIG_TCG +#include "accel/tcg/cpu-ops.h" + static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx, unsigned int target_el, unsigned int cur_el, bool secure,
Signature · 1 line
2.53.0
[PULL 39/48] system/memory: Rename cpu_exec_init_all() -> machine_memory_init()
In reply to Philippe Mathieu-Daudécpu_exec_init_all() is system specific: it initializes globals for the memory subsystem. Rename it as machine_memory_init() and restrict its declaration to 'system/' namespace.
Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 1 - system/memory-internal.h | 2 ++ system/physmem.c | 2 +- system/vl.c | 3 ++- 4 files changed, 5 insertions(+), 3 deletions(-)
include/exec/cpu-common.h +0 -1
@@ -18,7 +18,6 @@#define EXCP_YIELD 0x10004/* cpu wants to yield timeslice to another */ #define EXCP_ATOMIC 0x10005/* stop-the-world and emulate atomic */ -void cpu_exec_init_all (void );void cpu_exec_step_atomic (CPUState *cpu);#define REAL_HOST_PAGE_ALIGN (addr) ROUND_UP((addr), qemu_real_host_page_size())
system/memory-internal.h +2 -0
@@ -14,6 +14,8 @@#ifndef MEMORY_INTERNAL_H #define MEMORY_INTERNAL_H +void machine_memory_init (void ); +static inline AddressSpaceDispatch *flatview_to_dispatch (FlatView *fv) {return fv->dispatch;
system/physmem.c +1 -1
@@ -3592,7 +3592,7 @@ void address_space_register_map_client(AddressSpace *as, QEMUBH *bh) } } -void cpu_exec_init_all (void ) +void machine_memory_init (void ) {qemu_mutex_init (&ram_list.mutex);/* The data structures we set up here depend on knowing the page size,
system/vl.c +2 -1
@@ -143,6 +143,7 @@#include "system/iothread.h" #include "qemu/guest-random.h" #include "qemu/keyval.h" +#include "memory-internal.h" #define MAX_VIRTIO_CONSOLES 1
@@ -2217,7 +2218,7 @@ static void qemu_create_machine(QDict *qdict) } } -cpu_exec_init_all (); +machine_memory_init ();/* * Get the default machine options from the machine if it is not already
Signature · 1 line
2.53.0
[PULL 44/48] accel/tcg: Move cpu_unwind_state_data() out of 'exec/cpu-common.h'
In reply to Philippe Mathieu-DaudéMove the TCG-specific cpu_unwind_state_data() declaration out of the generic "exec/cpu-common.h" header, to the recently created "accel/tcg/cpu-loop.h" one.
Include "accel/tcg/cpu-loop.h" where appropriate.
Message-Id: <[email protected]>
--- include/accel/tcg/cpu-loop.h | 13 +++++++++++++ include/exec/cpu-common.h | 13 ------------- accel/tcg/translate-all.c | 1 + target/i386/helper.c | 1 + target/or1k/sys_helper.c | 1 + target/riscv/csr.c | 1 + 6 files changed, 17 insertions(+), 13 deletions(-)
include/accel/tcg/cpu-loop.h +13 -0
@@ -20,4 +20,17 @@ int cpu_exec(CPUState *cpu);void cpu_exec_step_atomic (CPUState *cpu); +/** +* cpu_unwind_state_data: +* @cpu: the cpu context +* @host_pc: the host pc within the translation +* @data: output data +* +* Attempt to load the unwind state for a host pc occurring in +* translated code. If @host_pc is not in translated code, the +* function returns false; otherwise @data is loaded. +* This is the same unwind info as given to restore_state_to_opc. +*/ +bool cpu_unwind_state_data (CPUState *cpu,uintptr_t host_pc,uint64_t *data); +#endif
include/exec/cpu-common.h +0 -13
@@ -61,19 +61,6 @@ void list_cpus(void);#ifdef CONFIG_TCG #include "qemu/atomic.h" -/** -* cpu_unwind_state_data: -* @cpu: the cpu context -* @host_pc: the host pc within the translation -* @data: output data -* -* Attempt to load the unwind state for a host pc occurring in -* translated code. If @host_pc is not in translated code, the -* function returns false; otherwise @data is loaded. -* This is the same unwind info as given to restore_state_to_opc. -*/ -bool cpu_unwind_state_data (CPUState *cpu,uintptr_t host_pc,uint64_t *data); -/** * cpu_restore_state: * @cpu: the cpu context
accel/tcg/translate-all.c +1 -0
@@ -29,6 +29,7 @@#include "qemu/target-info.h" #include "exec/log.h" #include "exec/icount.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "tb-jmp-cache.h" #include "tb-hash.h"
target/i386/helper.c +1 -0
@@ -32,6 +32,7 @@#endif #include "qemu/log.h" #ifdef CONFIG_TCG +#include "accel/tcg/cpu-loop.h" #include "tcg/insn-start-words.h" #endif
target/or1k/sys_helper.c +1 -0
@@ -23,6 +23,7 @@#include "exec/cputlb.h" #include "exec/target_page.h" #include "exec/helper-proto.h" +#include "accel/tcg/cpu-loop.h" #include "exception.h" #ifndef CONFIG_USER_ONLY #include "hw/core/boards.h"
target/riscv/csr.c +1 -0
@@ -27,6 +27,7 @@#include "time_helper.h" #include "exec/cputlb.h" #include "exec/icount.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/getpc.h" #include "qemu/guest-random.h" #include "qapi/error.h"
Signature · 1 line
2.53.0
[PULL 45/48] accel/tcg: Move cpu_restore_state() out of 'exec/cpu-common.h'
In reply to Philippe Mathieu-DaudéMove the TCG-specific cpu_restore_state() declaration out of the generic "exec/cpu-common.h" header, to the recently created "accel/tcg/cpu-loop.h" one.
Include "accel/tcg/cpu-loop.h" where appropriate.
Message-Id: <[email protected]>
--- include/accel/tcg/cpu-loop.h | 12 ++++++++++++ include/exec/cpu-common.h | 12 ------------ accel/tcg/cpu-exec-common.c | 1 + accel/tcg/user-exec.c | 1 + target/alpha/helper.c | 1 + target/alpha/mem_helper.c | 1 + target/arm/tcg/op_helper.c | 1 + target/arm/tcg/tlb_helper.c | 1 + target/hppa/cpu.c | 1 + target/hppa/mem_helper.c | 1 + target/hppa/op_helper.c | 1 + target/i386/tcg/system/svm_helper.c | 1 + target/m68k/op_helper.c | 1 + target/microblaze/helper.c | 1 + target/ppc/tcg-excp_helper.c | 1 + target/s390x/tcg/excp_helper.c | 1 + target/sh4/op_helper.c | 1 + target/tricore/op_helper.c | 1 + target/xtensa/helper.c | 1 + 19 files changed, 29 insertions(+), 12 deletions(-)
include/accel/tcg/cpu-loop.h +12 -0
@@ -33,4 +33,16 @@ void cpu_exec_step_atomic(CPUState *cpu);*/ bool cpu_unwind_state_data (CPUState *cpu,uintptr_t host_pc,uint64_t *data); +/** +* cpu_restore_state: +* @cpu: the cpu context +* @host_pc: the host pc within the translation +* @return: true if state was restored, false otherwise +* +* Attempt to restore the state for a fault occurring in translated +* code. If @host_pc is not in translated code no state is +* restored and the function returns false. +*/ +bool cpu_restore_state (CPUState *cpu,uintptr_t host_pc); +#endif
include/exec/cpu-common.h +0 -12
@@ -61,18 +61,6 @@ void list_cpus(void);#ifdef CONFIG_TCG #include "qemu/atomic.h" -/** -* cpu_restore_state: -* @cpu: the cpu context -* @host_pc: the host pc within the translation -* @return: true if state was restored, false otherwise -* -* Attempt to restore the state for a fault occurring in translated -* code. If @host_pc is not in translated code no state is -* restored and the function returns false. -*/ -bool cpu_restore_state (CPUState *cpu,uintptr_t host_pc); -/** * cpu_loop_exit_requested: * @cpu: The CPU state to be tested
accel/tcg/cpu-exec-common.c +1 -0
@@ -21,6 +21,7 @@#include "exec/log.h" #include "system/tcg.h" #include "qemu/plugin.h" +#include "accel/tcg/cpu-loop.h" #include "internal-common.h" bool tcg_allowed;
accel/tcg/user-exec.c +1 -0
@@ -25,6 +25,7 @@#include "qemu/bitops.h" #include "qemu/rcu.h" #include "accel/tcg/cpu-ldst-common.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/helper-retaddr.h" #include "accel/tcg/probe.h" #include "user/cpu_loop.h"
target/alpha/helper.c +1 -0
@@ -28,6 +28,7 @@#include "exec/helper-proto.h" #include "qemu/qemu-print.h" #include "system/memory.h" +#include "accel/tcg/cpu-loop.h" #include "qemu/plugin.h"
target/alpha/mem_helper.c +1 -0
@@ -21,6 +21,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" static void do_unaligned_access (CPUAlphaState *env,vaddr addr,uintptr_t retaddr) {
target/arm/tcg/op_helper.c +1 -0
@@ -23,6 +23,7 @@#include "helper.h" #include "internals.h" #include "cpu-features.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/probe.h" #include "cpregs.h"
target/arm/tcg/tlb_helper.c +1 -0
@@ -8,6 +8,7 @@#include "qemu/osdep.h" #include "cpu.h" #include "helper.h" +#include "accel/tcg/cpu-loop.h" #include "internals.h" #include "cpu-features.h" #include "hw/intc/armv7m_nvic.h"
target/hppa/cpu.c +1 -0
@@ -29,6 +29,7 @@#include "fpu/softfloat.h" #include "tcg/tcg.h" #include "hw/hppa/hppa_hardware.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" static void hppa_cpu_set_pc (CPUState *cs,vaddr value)
target/hppa/mem_helper.c +1 -0
@@ -21,6 +21,7 @@#include "qemu/log.h" #include "cpu.h" #include "exec/cputlb.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-mmu-index.h" #include "accel/tcg/probe.h" #include "exec/page-protection.h"
target/hppa/op_helper.c +1 -0
@@ -22,6 +22,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/probe.h" #include "qemu/timer.h" #include "trace.h"
target/i386/tcg/system/svm_helper.c +1 -0
@@ -23,6 +23,7 @@#include "exec/helper-proto.h" #include "exec/cputlb.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/helper-tcg.h" /* Secure Virtual Machine helpers */
target/m68k/op_helper.c +1 -0
@@ -21,6 +21,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "semihosting/semihost.h" #include "qemu/plugin.h"
target/microblaze/helper.c +1 -0
@@ -21,6 +21,7 @@#include "qemu/osdep.h" #include "cpu.h" #include "exec/cputlb.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-mmu-index.h" #include "exec/page-protection.h" #include "exec/target_page.h"
target/ppc/tcg-excp_helper.c +1 -0
@@ -21,6 +21,7 @@#include "qemu/log.h" #include "target/ppc/cpu.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "exec/helper-proto.h" #include "system/runstate.h"
target/s390x/tcg/excp_helper.c +1 -0
@@ -24,6 +24,7 @@#include "exec/helper-proto.h" #include "exec/cputlb.h" #include "exec/target_page.h" +#include "accel/tcg/cpu-loop.h" #include "s390x-internal.h" #include "tcg_s390x.h" #ifndef CONFIG_USER_ONLY
target/sh4/op_helper.c +1 -0
@@ -20,6 +20,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "fpu/softfloat.h" #ifndef CONFIG_USER_ONLY
target/tricore/op_helper.c +1 -0
@@ -19,6 +19,7 @@#include "qemu/host-utils.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "qemu/plugin.h" #include <zlib.h> /* for crc32 */
target/xtensa/helper.c +1 -0
@@ -32,6 +32,7 @@#include "exec/target_page.h" #include "gdbstub/helpers.h" #include "exec/helper-proto.h" +#include "accel/tcg/cpu-loop.h" #include "qemu/error-report.h" #include "qemu/qemu-print.h" #include "qemu/host-utils.h"
Signature · 1 line
2.53.0
[PULL 24/48] target/loongarch: Remove unused 'accel/accel-cpu-target.h' header
In reply to Philippe Mathieu-DaudéFrom: Philippe Mathieu-Daudé <[email protected]>
"accel/accel-cpu-target.h" is to register accelerator target specific hooks via TypeInfo::ACCEL_CPU_NAME(), which LoongArch TCG frontend does not. Remove as unused header.
Message-Id: <[email protected]>
--- target/loongarch/tcg/tcg_cpu.c | 1 - 1 file changed, 1 deletion(-)
target/loongarch/tcg/tcg_cpu.c +0 -1
@@ -9,7 +9,6 @@#include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/plugin.h" -#include "accel/accel-cpu-target.h" #include "accel/tcg/cpu-ldst.h" #include "accel/tcg/cpu-ops.h" #include "exec/translation-block.h"
Signature · 1 line
2.53.0
[PULL 47/48] accel/tcg: Move cpu_loop_exit_*() out of 'exec/cpu-common.h'
In reply to Philippe Mathieu-DaudéMove the following TCG-specific cpu_loop_exit_*() declarations out of the generic "exec/cpu-common.h" header, to the recently created "accel/tcg/cpu-loop.h" one, documenting them:
- cpu_loop_exit_noexc()
- cpu_loop_exit_atomic()
- cpu_loop_exit_restore()
- cpu_loop_exit()
Include "accel/tcg/cpu-loop.h" where appropriate.
Message-Id: <[email protected]>
--- include/accel/tcg/cpu-loop.h | 28 ++++++++++++++++++++++++++++ include/exec/cpu-common.h | 5 ----- accel/tcg/cputlb.c | 1 + accel/tcg/tb-maint.c | 1 + accel/tcg/tcg-runtime.c | 1 + accel/tcg/watchpoint.c | 1 + hw/misc/mips_itu.c | 1 + plugins/api.c | 1 + semihosting/console.c | 1 + target/arm/tcg/helper-a64.c | 1 + target/avr/helper.c | 1 + target/hexagon/op_helper.c | 1 + target/i386/tcg/excp_helper.c | 1 + target/i386/tcg/misc_helper.c | 1 + target/i386/tcg/system/bpt_helper.c | 1 + target/i386/tcg/system/misc_helper.c | 1 + target/i386/tcg/user/excp_helper.c | 1 + target/i386/tcg/user/seg_helper.c | 1 + target/loongarch/tcg/tcg_cpu.c | 1 + target/loongarch/tcg/tlb_helper.c | 1 + target/m68k/helper.c | 1 + target/microblaze/op_helper.c | 1 + target/mips/tcg/exception.c | 1 + target/mips/tcg/system/tlb_helper.c | 1 + target/or1k/exception.c | 1 + target/or1k/exception_helper.c | 1 + target/or1k/fpu_helper.c | 1 + target/or1k/mmu.c | 1 + target/ppc/user_only_helper.c | 1 + target/riscv/cpu_helper.c | 1 + target/riscv/op_helper.c | 1 + target/rx/op_helper.c | 1 + target/s390x/mmu_helper.c | 3 +++ target/s390x/tcg/cc_helper.c | 1 + target/s390x/tcg/debug.c | 1 + target/s390x/tcg/mem_helper.c | 1 + target/s390x/tcg/misc_helper.c | 1 + target/sh4/helper.c | 1 + target/sparc/helper.c | 1 + target/sparc/mmu_helper.c | 1 + target/tricore/helper.c | 1 + target/xtensa/exc_helper.c | 1 + 42 files changed, 70 insertions(+), 5 deletions(-)
include/accel/tcg/cpu-loop.h +28 -0
@@ -45,4 +45,32 @@ bool cpu_unwind_state_data(CPUState *cpu, uintptr_t host_pc, uint64_t *data);*/ bool cpu_restore_state (CPUState *cpu,uintptr_t host_pc); +/** +* cpu_loop_exit_noexc: +* @cpu: the cpu context +* +* Exit the current TB, but without causing any exception to be raised. +*/ +G_NORETURN void cpu_loop_exit_noexc(CPUState *cpu); + +/** +* cpu_loop_exit_restore: +* @cpu: the cpu context +* @host_pc: the host pc within the translation +* +* Attempt to restore the state for a fault occurring in translated +* code. If @host_pc is not in translated code no state is +* restored. Finally, exit the current TB. +*/ +G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t host_pc); +G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t host_pc); + +/** +* cpu_loop_exit: +* @cpu: the cpu context +* +* Exit the current TB. +*/ +G_NORETURN void cpu_loop_exit(CPUState *cpu); +#endif
include/exec/cpu-common.h +0 -5
@@ -77,12 +77,7 @@ static inline bool cpu_loop_exit_requested(const CPUState *cpu) {return (int32_t )qatomic_read (&cpu->neg.icount_decr.u32) <0 ; } - -G_NORETURN void cpu_loop_exit_noexc(CPUState *cpu); -G_NORETURN void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc); -G_NORETURN void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc);#endif /* CONFIG_TCG */ -G_NORETURN void cpu_loop_exit(CPUState *cpu);/** * env_archcpu(env)
accel/tcg/cputlb.c +1 -0
@@ -20,6 +20,7 @@#include "qemu/osdep.h" #include "qemu/main-loop.h" #include "qemu/target-info.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "accel/tcg/iommu.h" #include "accel/tcg/probe.h"
accel/tcg/tb-maint.c +1 -0
@@ -26,6 +26,7 @@#include "exec/mmap-lock.h" #include "exec/tb-flush.h" #include "exec/target_page.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "tb-internal.h" #include "system/tcg.h"
accel/tcg/tcg-runtime.c +1 -0
@@ -25,6 +25,7 @@#include "qemu/host-utils.h" #include "exec/cpu-common.h" #include "exec/helper-proto-common.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/getpc.h" #define HELPER_H "accel/tcg/tcg-runtime.h"
accel/tcg/watchpoint.c +1 -0
@@ -25,6 +25,7 @@#include "exec/translation-block.h" #include "system/tcg.h" #include "system/replay.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "hw/core/cpu.h" #include "internal-common.h"
hw/misc/mips_itu.c +1 -0
@@ -25,6 +25,7 @@#include "hw/core/cpu.h" #include "hw/misc/mips_itu.h" #include "hw/core/qdev-properties.h" +#include "accel/tcg/cpu-loop.h" #include "target/mips/cpu.h" #define ITC_TAG_ADDRSPACE_SZ (ITC_ADDRESSMAP_NUM * 8)
plugins/api.c +1 -0
@@ -40,6 +40,7 @@#include "qemu/plugin.h" #include "qemu/log.h" #include "system/memory.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/tcg.h" #include "exec/cpu-common.h" #include "exec/gdbstub.h"
semihosting/console.c +1 -0
@@ -18,6 +18,7 @@#include "qemu/osdep.h" #include "semihosting/semihost.h" #include "semihosting/console.h" +#include "accel/tcg/cpu-loop.h" #include "exec/cpu-common.h" #include "exec/gdbstub.h" #include "qemu/log.h"
target/arm/tcg/helper-a64.c +1 -0
@@ -31,6 +31,7 @@#include "qemu/crc32c.h" #include "exec/cpu-common.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/helper-retaddr.h" #include "accel/tcg/probe.h" #include "exec/target_page.h"
target/avr/helper.c +1 -0
@@ -23,6 +23,7 @@#include "qemu/error-report.h" #include "cpu.h" #include "accel/tcg/cpu-ops.h" +#include "accel/tcg/cpu-loop.h" #include "exec/cputlb.h" #include "exec/page-protection.h" #include "exec/target_page.h"
target/hexagon/op_helper.c +1 -0
@@ -18,6 +18,7 @@#include "qemu/osdep.h" #include "qemu/log.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/probe.h" #include "exec/helper-proto.h" #include "fpu/softfloat.h"
target/i386/tcg/excp_helper.c +1 -0
@@ -18,6 +18,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "qemu/log.h" #include "system/runstate.h"
target/i386/tcg/misc_helper.c +1 -0
@@ -19,6 +19,7 @@#include "qemu/osdep.h" #include "qemu/log.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "exec/cputlb.h"
target/i386/tcg/system/bpt_helper.c +1 -0
@@ -18,6 +18,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "exec/watchpoint.h"
target/i386/tcg/system/misc_helper.c +1 -0
@@ -22,6 +22,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "system/address-spaces.h" #include "system/memory.h" #include "exec/cputlb.h"
target/i386/tcg/user/excp_helper.c +1 -0
@@ -18,6 +18,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "tcg/helper-tcg.h"
target/i386/tcg/user/seg_helper.c +1 -0
@@ -22,6 +22,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/helper-tcg.h" #include "tcg/seg_helper.h"
target/loongarch/tcg/tcg_cpu.c +1 -0
@@ -10,6 +10,7 @@#include "qemu/log.h" #include "qemu/plugin.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "exec/translation-block.h" #include "exec/target_page.h"
target/loongarch/tcg/tlb_helper.c +1 -0
@@ -17,6 +17,7 @@#include "exec/page-protection.h" #include "exec/target_page.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "exec/log.h" #include "cpu-csr.h" #include "tcg/tcg_loongarch.h"
target/m68k/helper.c +1 -0
@@ -25,6 +25,7 @@#include "exec/target_page.h" #include "exec/gdbstub.h" #include "exec/helper-proto.h" +#include "accel/tcg/cpu-loop.h" #include "system/memory.h" #include "gdbstub/helpers.h" #include "fpu/softfloat.h"
target/microblaze/op_helper.c +1 -0
@@ -24,6 +24,7 @@#include "exec/helper-proto.h" #include "qemu/host-utils.h" #include "accel/tcg/cpu-ldst-common.h" +#include "accel/tcg/cpu-loop.h" #include "fpu/softfloat.h" void helper_put (uint32_t id,uint32_t ctrl,uint32_t data)
target/mips/tcg/exception.c +1 -0
@@ -24,6 +24,7 @@#include "internal.h" #include "exec/helper-proto.h" #include "exec/translation-block.h" +#include "accel/tcg/cpu-loop.h" target_ulong exception_resume_pc (CPUMIPSState *env) {
target/mips/tcg/system/tlb_helper.c +1 -0
@@ -26,6 +26,7 @@#include "exec/page-protection.h" #include "exec/target_page.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "exec/log.h" #include "exec/helper-proto.h"
target/or1k/exception.c +1 -0
@@ -18,6 +18,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "exception.h"
target/or1k/exception_helper.c +1 -0
@@ -19,6 +19,7 @@#include "qemu/osdep.h" #include "cpu.h" +#include "accel/tcg/cpu-loop.h" #include "exec/helper-proto.h" #include "exception.h"
target/or1k/fpu_helper.c +1 -0
@@ -19,6 +19,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "fpu/softfloat.h"
target/or1k/mmu.c +1 -0
@@ -24,6 +24,7 @@#include "exec/cputlb.h" #include "exec/page-protection.h" #include "exec/target_page.h" +#include "accel/tcg/cpu-loop.h" #include "qemu/host-utils.h" #include "hw/core/loader.h"
target/ppc/user_only_helper.c +1 -0
@@ -19,6 +19,7 @@*/ #include "qemu/osdep.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "internal.h"
target/riscv/cpu_helper.c +1 -0
@@ -29,6 +29,7 @@#include "system/memory.h" #include "instmap.h" #include "tcg/tcg-op.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-ops.h" #include "trace.h" #include "semihosting/common-semi.h"
target/riscv/op_helper.c +1 -0
@@ -24,6 +24,7 @@#include "internals.h" #include "exec/cputlb.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/probe.h" #include "exec/helper-proto.h" #include "exec/tlb-flags.h"
target/rx/op_helper.c +1 -0
@@ -21,6 +21,7 @@#include "cpu.h" #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "fpu/softfloat.h" #include "tcg/debug-assert.h"
target/s390x/mmu_helper.c +3 -0
@@ -24,6 +24,9 @@#include "system/kvm.h" #include "system/tcg.h" #include "system/memory.h" +#ifdef CONFIG_TCG +#include "accel/tcg/cpu-loop.h" +#endif #include "exec/page-protection.h" #include "exec/target_page.h" #include "hw/core/hw-error.h"
target/s390x/tcg/cc_helper.c +1 -0
@@ -20,6 +20,7 @@#include "qemu/osdep.h" #include "cpu.h" +#include "accel/tcg/cpu-loop.h" #include "s390x-internal.h" #include "tcg_s390x.h" #include "exec/helper-proto.h"
target/s390x/tcg/debug.c +1 -0
@@ -7,6 +7,7 @@#include "qemu/osdep.h" #include "exec/breakpoint.h" #include "exec/watchpoint.h" +#include "accel/tcg/cpu-loop.h" #include "target/s390x/cpu.h" #include "target/s390x/s390x-internal.h" #include "tcg_s390x.h"
target/s390x/tcg/mem_helper.c +1 -0
@@ -28,6 +28,7 @@#include "exec/cputlb.h" #include "exec/page-protection.h" #include "accel/tcg/cpu-ldst.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/probe.h" #include "exec/target_page.h" #include "exec/tlb-flags.h"
target/s390x/tcg/misc_helper.c +1 -0
@@ -28,6 +28,7 @@#include "qemu/timer.h" #include "exec/cputlb.h" #include "accel/tcg/cpu-ldst-common.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-mmu-index.h" #include "exec/target_page.h" #include "qapi/error.h"
target/sh4/helper.c +1 -0
@@ -24,6 +24,7 @@#include "exec/page-protection.h" #include "exec/target_page.h" #include "exec/log.h" +#include "accel/tcg/cpu-loop.h" #include "qemu/plugin.h" #if !defined(CONFIG_USER_ONLY )
target/sparc/helper.c +1 -0
@@ -21,6 +21,7 @@#include "cpu.h" #include "qemu/timer.h" #include "qemu/host-utils.h" +#include "accel/tcg/cpu-loop.h" #include "exec/cpu-common.h" #include "exec/helper-proto.h"
target/sparc/mmu_helper.c +1 -0
@@ -21,6 +21,7 @@#include "qemu/log.h" #include "cpu.h" #include "exec/cputlb.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-mmu-index.h" #include "exec/page-protection.h" #include "exec/target_page.h"
target/tricore/helper.c +1 -0
@@ -20,6 +20,7 @@#include "hw/core/registerfields.h" #include "cpu.h" #include "exec/cputlb.h" +#include "accel/tcg/cpu-loop.h" #include "accel/tcg/cpu-mmu-index.h" #include "exec/page-protection.h" #include "exec/target_page.h"
target/xtensa/exc_helper.c +1 -0
@@ -28,6 +28,7 @@#include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/main-loop.h" +#include "accel/tcg/cpu-loop.h" #include "cpu.h" #include "exec/helper-proto.h" #include "qemu/host-utils.h"
Signature · 1 line
2.53.0
[PULL 13/48] system: Move cpu_physical_memory_*() declarations to 'system/physmem.h'
In reply to Philippe Mathieu-DaudéThe following cpu_physical_memory_*() methods do not involve any vCPU but only access physical memory:
- cpu_physical_memory_read()
- cpu_physical_memory_write()
- cpu_physical_memory_map()
- cpu_physical_memory_unmap()
Rename them removing the 'cpu_' prefix, and move then to the "system/physmem.h" header with the other methods involved in global physical address space.
Mechanical change using sed, then adding missing headers manually.
No logical change intended.
Message-Id: <[email protected]>
--- docs/devel/loads-stores.rst | 8 ++--- scripts/coccinelle/exec_rw_const.cocci | 16 ++++----- hw/xtensa/bootparam.h | 6 ++-- include/exec/cpu-common.h | 50 -------------------------- include/system/physmem.h | 50 ++++++++++++++++++++++++++ dump/dump.c | 3 +- dump/win_dump-x86.c | 5 +-- hw/acpi/ghes.c | 24 ++++++------- hw/acpi/nvdimm.c | 13 +++---- hw/acpi/vmgenid.c | 3 +- hw/audio/marvell_88w8618.c | 3 +- hw/char/riscv_htif.c | 5 +-- hw/display/exynos4210_fimd.c | 7 ++-- hw/display/omap_lcdc.c | 5 +-- hw/display/ramfb.c | 7 ++-- hw/dma/i8257.c | 9 ++--- hw/dma/omap_dma.c | 6 ++-- hw/dma/rc4030.c | 3 +- hw/dma/sifive_pdma.c | 9 ++--- hw/hyperv/hyperv.c | 25 ++++++------- hw/hyperv/syndbg.c | 13 +++---- hw/hyperv/vmbus.c | 9 ++--- hw/i386/kvm/clock.c | 3 +- hw/i386/vapic.c | 21 +++++------ hw/intc/apic.c | 3 +- hw/intc/xive2.c | 3 +- hw/m68k/next-cube.c | 3 +- hw/microblaze/boot.c | 3 +- hw/misc/pc-testdev.c | 5 +-- hw/net/fsl_etsec/rings.c | 13 +++---- hw/net/mcf_fec.c | 11 +++--- hw/net/opencores_eth.c | 9 ++--- hw/nvram/spapr_nvram.c | 9 ++--- hw/ppc/amigaone.c | 5 +-- hw/ppc/e500.c | 3 +- hw/ppc/pegasos.c | 11 +++--- hw/ppc/pnv.c | 5 +-- hw/ppc/ppc440_uc.c | 9 ++--- hw/ppc/spapr.c | 3 +- hw/ppc/spapr_drc.c | 3 +- hw/ppc/spapr_events.c | 9 ++--- hw/ppc/spapr_hcall.c | 17 ++++----- hw/ppc/spapr_rtas.c | 5 +-- hw/ppc/spapr_tpm_proxy.c | 5 +-- hw/ppc/virtex_ml507.c | 3 +- hw/s390x/css.c | 5 +-- hw/s390x/ipl.c | 9 ++--- hw/s390x/s390-pci-bus.c | 5 +-- hw/s390x/virtio-ccw.c | 5 +-- hw/scsi/vmw_pvscsi.c | 12 +++---- hw/xen/xen_pt_graphics.c | 4 +-- hw/xtensa/xtfpga.c | 5 +-- system/cpus.c | 3 +- system/physmem.c | 12 +++---- 54 files changed, 270 insertions(+), 230 deletions(-)
docs/devel/loads-stores.rst +4 -4
@@ -439,7 +439,7 @@ Regexes for git grep: - ``\<ldu\?[bwlq]\(_[bl]e\)\?_phys\>`` - ``\<st[bwlq]\(_[bl]e\)\?_phys\>`` -``cpu_physical_memory_*`` +``physical_memory_*`` ~~~~~~~~~~~~~~~~~~~~~~~~~ These are convenience functions which are identical to
@@ -455,12 +455,12 @@ users are hardware device models. For new code they are better avoided: rather than using the system address space * some machines do not use this global address space at all -``cpu_physical_memory_read`` +``physical_memory_read`` -``cpu_physical_memory_write`` +``physical_memory_write`` Regexes for git grep: - - ``\<cpu_physical_memory_\(read\|write\)\>`` + - ``\<physical_memory_\(read\|write\)\>`` ``cpu_memory_rw_debug`` ~~~~~~~~~~~~~~~~~~~~~~~
scripts/coccinelle/exec_rw_const.cocci +8 -8
@@ -21,11 +21,11 @@ expression E1, E2, E3, E4, E5; + address_space_rw(E1, E2, E3, E4, E5, true) | -- cpu_physical_memory_map(E1, E2, 0) -+ cpu_physical_memory_map(E1, E2, false) +- physical_memory_map(E1, E2, 0) ++ physical_memory_map(E1, E2, false) | -- cpu_physical_memory_map(E1, E2, 1) -+ cpu_physical_memory_map(E1, E2, true) +- physical_memory_map(E1, E2, 1) ++ physical_memory_map(E1, E2, true) ) // Use address_space_write instead of casting to non-const
@@ -74,11 +74,11 @@ type T; + address_space_write_rom(E1, E2, E3, E4, E5) | -- cpu_physical_memory_read(E1, (T *)(E2), E3) -+ cpu_physical_memory_read(E1, E2, E3) +- physical_memory_read(E1, (T *)(E2), E3) ++ physical_memory_read(E1, E2, E3) | -- cpu_physical_memory_write(E1, (T *)(E2), E3) -+ cpu_physical_memory_write(E1, E2, E3) +- physical_memory_write(E1, (T *)(E2), E3) ++ physical_memory_write(E1, E2, E3) | - dma_memory_read(E1, E2, (T *)(E3), E4)
hw/xtensa/bootparam.h +3 -3
@@ -1,8 +1,8 @@#ifndef HW_XTENSA_BOOTPARAM_H #define HW_XTENSA_BOOTPARAM_H -#include "exec/cpu-common.h" #include "exec/tswap.h" +#include "system/physmem.h" #define BP_TAG_COMMAND_LINE 0x1001/* command line (0-terminated string)*/ #define BP_TAG_INITRD 0x1002/* ramdisk addr and size (bp_meminfo) */
@@ -41,9 +41,9 @@ static inline ram_addr_t put_tag(ram_addr_t addr, uint16_t tag, .size = tswap16((size + 3) & ~3), }; -cpu_physical_memory_write (addr, &bp_tag,sizeof (bp_tag)); +physical_memory_write (addr, &bp_tag,sizeof (bp_tag)); addr +=sizeof (bp_tag); -cpu_physical_memory_write (addr, data, size); +physical_memory_write (addr, data, size); addr += (size +3 ) & ~3 ;return addr;
include/exec/cpu-common.h +0 -50
62 lines not on this page · raw message
include/system/physmem.h +50 -0
56 lines not on this page · raw message
dump/dump.c +2 -1
@@ -21,6 +21,7 @@#include "system/dump.h" #include "system/runstate.h" #include "system/cpus.h" +#include "system/physmem.h" #include "qapi/error.h" #include "qapi/qapi-commands-dump.h" #include "qapi/qapi-events-dump.h"
@@ -1892,7 +1893,7 @@ static void dump_init(DumpState *s, int fd, bool has_format,warn_report ("guest note format is unsupported: %" PRIu16, guest_format); }else { s->guest_note =g_malloc (size +1 );/* +1 for adding \0 */ -cpu_physical_memory_read (addr, s->guest_note, size); +physical_memory_read (addr, s->guest_note, size);get_note_sizes (s, s->guest_note,NULL , &name_size, &desc_size); s->guest_note_size = ELF_NOTE_SIZE(note_head_size, name_size,
dump/win_dump-x86.c +3 -2
@@ -10,6 +10,7 @@#include "qemu/osdep.h" #include "system/dump.h" +#include "system/physmem.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "exec/cpu-defs.h"
@@ -55,7 +56,7 @@ static size_t write_run(uint64_t base_page, uint64_t page_count,while (size) { len = size; - buf =cpu_physical_memory_map (addr, &len, false); + buf =physical_memory_map (addr, &len, false);if (!buf) {error_setg (errp,"win-dump: failed to map physical range" " 0x%016" PRIx64"-0x%016" PRIx64, addr, addr + size -1 );
@@ -64,7 +65,7 @@ static size_t write_run(uint64_t base_page, uint64_t page_count, l =qemu_write_full (fd, buf, len); eno = errno; -cpu_physical_memory_unmap (buf, addr, false, len); +physical_memory_unmap (buf, addr, false, len);if (l != len) {error_setg_errno (errp, eno,"win-dump: failed to save memory" );return 0 ;
hw/acpi/ghes.c +11 -13
@@ -28,6 +28,7 @@#include "hw/nvram/fw_cfg.h" #include "qemu/uuid.h" #include "exec/cpu-common.h" +#include "system/physmem.h" #define ACPI_HW_ERROR_FW_CFG_FILE "etc/hardware_errors"#define ACPI_HW_ERROR_ADDR_FW_CFG_FILE "etc/hardware_errors_addr"
@@ -432,9 +433,7 @@ static void get_hw_error_offsets(uint64_t ghes_addr,* the source ID, as it is stored inside the HEST table. */ -cpu_physical_memory_read (ghes_addr, cper_addr, -sizeof (*cper_addr)); - +physical_memory_read (ghes_addr, cper_addr,sizeof (*cper_addr)); *cper_addr =le64_to_cpu (*cper_addr);/*
@@ -456,8 +455,7 @@ static bool get_ghes_source_offsets(uint16_t source_id, hest_addr +=ACPI_DESC_HEADER_OFFSET ; -cpu_physical_memory_read (hest_addr, &num_sources, -sizeof (num_sources)); +physical_memory_read (hest_addr, &num_sources,sizeof (num_sources)); num_sources =le32_to_cpu (num_sources); err_source_entry = hest_addr +sizeof (num_sources);
@@ -469,7 +467,7 @@ static bool get_ghes_source_offsets(uint16_t source_id,uint64_t addr = err_source_entry;uint16_t type, src_id; -cpu_physical_memory_read (addr, &type,sizeof (type)); +physical_memory_read (addr, &type,sizeof (type)); type =le16_to_cpu (type);/* For now, we only know the size of GHESv2 table */
@@ -480,7 +478,7 @@ static bool get_ghes_source_offsets(uint16_t source_id,/* Compare CPER source ID at the GHESv2 structure */ addr +=sizeof (type); -cpu_physical_memory_read (addr, &src_id,sizeof (src_id)); +physical_memory_read (addr, &src_id,sizeof (src_id));if (le16_to_cpu (src_id) == source_id) {break ; }
@@ -496,17 +494,17 @@ static bool get_ghes_source_offsets(uint16_t source_id, hest_err_block_addr = err_source_entry +GHES_ERR_STATUS_ADDR_OFF +GAS_ADDR_OFFSET ; -cpu_physical_memory_read (hest_err_block_addr, &error_block_addr, +physical_memory_read (hest_err_block_addr, &error_block_addr,sizeof (error_block_addr)); error_block_addr =le64_to_cpu (error_block_addr); -cpu_physical_memory_read (error_block_addr, cper_addr, +physical_memory_read (error_block_addr, cper_addr,sizeof (*cper_addr)); *cper_addr =le64_to_cpu (*cper_addr); hest_read_ack_addr = err_source_entry +GHES_READ_ACK_ADDR_OFF +GAS_ADDR_OFFSET ; -cpu_physical_memory_read (hest_read_ack_addr, read_ack_start_addr, +physical_memory_read (hest_read_ack_addr, read_ack_start_addr,sizeof (*read_ack_start_addr)); *read_ack_start_addr =le64_to_cpu (*read_ack_start_addr);
@@ -535,7 +533,7 @@ bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,return false; } -cpu_physical_memory_read (read_ack_register_addr, +physical_memory_read (read_ack_register_addr, &read_ack_register,sizeof (read_ack_register));/* zero means OSPM does not acknowledge the error */
@@ -551,11 +549,11 @@ bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,* Clear the Read Ack Register, OSPM will write 1 to this register when * it acknowledges the error. */ -cpu_physical_memory_write (read_ack_register_addr, +physical_memory_write (read_ack_register_addr, &read_ack_register,sizeof (uint64_t ));/* Write the generic error data entry into guest memory */ -cpu_physical_memory_write (cper_addr, cper, len); +physical_memory_write (cper_addr, cper, len);notifier_list_notify (&acpi_generic_error_notifiers, &source_id);
hw/acpi/nvdimm.c +7 -6
@@ -35,6 +35,7 @@#include "hw/nvram/fw_cfg.h" #include "hw/mem/nvdimm.h" #include "qemu/nvdimm-utils.h" +#include "system/physmem.h" #include "trace.h" #include "exec/cpu-common.h"
@@ -515,7 +516,7 @@ nvdimm_dsm_function0(uint32_t supported_func, hwaddr dsm_mem_addr) .len = cpu_to_le32(sizeof(func0)), .supported_func = cpu_to_le32(supported_func), }; -cpu_physical_memory_write (dsm_mem_addr, &func0,sizeof (func0)); +physical_memory_write (dsm_mem_addr, &func0,sizeof (func0)); } static void
@@ -525,7 +526,7 @@ nvdimm_dsm_no_payload(uint32_t func_ret_status, hwaddr dsm_mem_addr) .len = cpu_to_le32(sizeof(out)), .func_ret_status = cpu_to_le32(func_ret_status), }; -cpu_physical_memory_write (dsm_mem_addr, &out,sizeof (out)); +physical_memory_write (dsm_mem_addr, &out,sizeof (out)); }#define NVDIMM_DSM_RET_STATUS_SUCCESS 0/* Success */
@@ -580,7 +581,7 @@ exit: read_fit_out->func_ret_status =cpu_to_le32 (func_ret_status);memcpy (read_fit_out->fit, fit->data + read_fit->offset, read_len); -cpu_physical_memory_write (dsm_mem_addr, read_fit_out, size); +physical_memory_write (dsm_mem_addr, read_fit_out, size);g_free (read_fit_out); }
@@ -666,7 +667,7 @@ static void nvdimm_dsm_label_size(NVDIMMDevice *nvdimm, hwaddr dsm_mem_addr) label_size_out.label_size =cpu_to_le32 (label_size); label_size_out.max_xfer =cpu_to_le32 (mxfer); -cpu_physical_memory_write (dsm_mem_addr, &label_size_out, +physical_memory_write (dsm_mem_addr, &label_size_out,sizeof (label_size_out)); }
@@ -735,7 +736,7 @@ static void nvdimm_dsm_get_label_data(NVDIMMDevice *nvdimm, NvdimmDsmIn *in, nvc->read_label_data (nvdimm, get_label_data_out->out_buf, get_label_data->length, get_label_data->offset); -cpu_physical_memory_write (dsm_mem_addr, get_label_data_out, size); +physical_memory_write (dsm_mem_addr, get_label_data_out, size);g_free (get_label_data_out); }
@@ -845,7 +846,7 @@ nvdimm_dsm_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)* this by copying DSM memory to QEMU local memory. */ in =g_new (NvdimmDsmIn,1 ); -cpu_physical_memory_read (dsm_mem_addr, in,sizeof (*in)); +physical_memory_read (dsm_mem_addr, in,sizeof (*in)); in->revision =le32_to_cpu (in->revision); in->function =le32_to_cpu (in->function);
hw/acpi/vmgenid.c +2 -1
@@ -20,6 +20,7 @@#include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" +#include "system/physmem.h" #include "system/reset.h" #include "exec/cpu-common.h"
@@ -156,7 +157,7 @@ static void vmgenid_update_guest(VmGenIdState *vms)* in order to implement the "OVMF SDT Header probe suppressor" * see docs/specs/vmgenid.rst for more details. */ -cpu_physical_memory_write (vmgenid_addr, guid_le.data, +physical_memory_write (vmgenid_addr, guid_le.data,sizeof (guid_le.data));/* Send _GPE.E05 event */ acpi_send_event (DEVICE (obj),ACPI_VMGENID_CHANGE_STATUS );
hw/audio/marvell_88w8618.c +2 -1
@@ -21,6 +21,7 @@#include "qapi/error.h" #include "qemu/module.h" #include "qom/object.h" +#include "system/physmem.h" #define MP_AUDIO_SIZE 0x00001000
@@ -87,7 +88,7 @@ static void mv88w8618_audio_callback(void *opaque, int free_out, int free_in)if (block_size >4096 ) {return ; } -cpu_physical_memory_read (s->target_buffer + s->play_pos, buf, block_size); +physical_memory_read (s->target_buffer + s->play_pos, buf, block_size); mem_buffer = buf;if (s->playback_mode &MP_AUDIO_16BIT_SAMPLE ) {if (s->playback_mode &MP_AUDIO_MONO ) {
hw/char/riscv_htif.c +3 -2
@@ -30,6 +30,7 @@#include "qemu/error-report.h" #include "system/address-spaces.h" #include "system/dma.h" +#include "system/physmem.h" #include "system/runstate.h" #include "exec/cpu-common.h" #include "trace.h"
@@ -209,12 +210,12 @@ static void htif_handle_tohost_write(HTIFState *s, uint64_t val_written)return ; }else {uint64_t syscall[8 ]; -cpu_physical_memory_read (payload, syscall,sizeof (syscall)); +physical_memory_read (payload, syscall,sizeof (syscall));if (le64_to_cpu (syscall[0 ]) ==PK_SYS_WRITE &&le64_to_cpu (syscall[1 ]) ==HTIF_DEV_CONSOLE &&le64_to_cpu (syscall[3 ]) ==HTIF_CONSOLE_CMD_PUTC ) {uint8_t ch; -cpu_physical_memory_read (le64_to_cpu (syscall[2 ]), &ch,1 ); +physical_memory_read (le64_to_cpu (syscall[2 ]), &ch,1 );/* * XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks
hw/display/exynos4210_fimd.c +4 -3
@@ -28,6 +28,7 @@#include "hw/core/sysbus.h" #include "exec/cpu-common.h" #include "migration/vmstate.h" +#include "system/physmem.h" #include "ui/console.h" #include "ui/pixel_ops.h" #include "qemu/bswap.h"
@@ -1076,7 +1077,7 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win) }if (w->host_fb_addr) { -cpu_physical_memory_unmap (w->host_fb_addr, w->fb_len,0 ,0 ); +physical_memory_unmap (w->host_fb_addr, w->fb_len,0 ,0 ); w->host_fb_addr =NULL ; w->fb_len =0 ; }
@@ -1115,7 +1116,7 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win) goto error_return; } - w->host_fb_addr =cpu_physical_memory_map (fb_start_addr, &fb_mapped_len, + w->host_fb_addr =physical_memory_map (fb_start_addr, &fb_mapped_len, false);if (!w->host_fb_addr) { qemu_log_mask(LOG_GUEST_ERROR,
@@ -1127,7 +1128,7 @@ static void fimd_update_memory_section(Exynos4210fimdState *s, unsigned win)qemu_log_mask (LOG_GUEST_ERROR ,"FIMD: Window %u mapped framebuffer length is less than " "expected\n" , win); -cpu_physical_memory_unmap (w->host_fb_addr, fb_mapped_len,0 ,0 ); +physical_memory_unmap (w->host_fb_addr, fb_mapped_len,0 ,0 ); goto error_return; }memory_region_set_log (w->mem_section.mr, true,DIRTY_MEMORY_VGA );
hw/display/omap_lcdc.c +3 -2
@@ -24,6 +24,7 @@#include "framebuffer.h" #include "ui/pixel_ops.h" #include "exec/cpu-common.h" +#include "system/physmem.h" struct omap_lcd_panel_s {MemoryRegion *sysmem;
@@ -217,7 +218,7 @@ static bool omap_update_display(void *opaque) frame_offset =0 ;if (omap_lcd->plm !=2 ) { -cpu_physical_memory_read ( +physical_memory_read ( omap_lcd->dma->phys_framebuffer[omap_lcd->dma->current_frame], omap_lcd->palette,0x200 );switch (omap_lcd->palette[0 ] >>12 &7 ) {
@@ -371,7 +372,7 @@ static void omap_lcd_update(struct omap_lcd_panel_s *s) { s->dma->phys_framebuffer[1 ] = s->dma->src_f2_top;if (s->plm !=2 && !s->palette_done) { -cpu_physical_memory_read ( +physical_memory_read ( s->dma->phys_framebuffer[s->dma->current_frame], s->palette,0x200 ); s->palette_done =1 ;
hw/display/ramfb.c +4 -3
@@ -17,6 +17,7 @@#include "hw/display/ramfb.h" #include "hw/display/bochs-vbe.h" /* for limits */ #include "ui/console.h" +#include "system/physmem.h" #include "system/reset.h" #include "exec/cpu-common.h"
@@ -42,7 +43,7 @@ static void ramfb_unmap_display_surface(pixman_image_t *image, void *unused)void *data =pixman_image_get_data (image);uint32_t size =pixman_image_get_stride (image) *pixman_image_get_height (image); -cpu_physical_memory_unmap (data, size,0 ,0 ); +physical_memory_unmap (data, size,0 ,0 ); } static DisplaySurface *ramfb_create_display_surface(int width, int height,
@@ -64,9 +65,9 @@ static DisplaySurface *ramfb_create_display_surface(int width, int height, } mapsize = size = stride * (height -1 ) + linesize; - data =cpu_physical_memory_map (addr, &mapsize, false); + data =physical_memory_map (addr, &mapsize, false);if (size != mapsize) { -cpu_physical_memory_unmap (data, mapsize,0 ,0 ); +physical_memory_unmap (data, mapsize,0 ,0 );return NULL ; }
hw/dma/i8257.c +5 -4
@@ -28,6 +28,7 @@#include "migration/vmstate.h" #include "hw/dma/i8257.h" #include "exec/cpu-common.h" +#include "system/physmem.h" #include "qapi/error.h" #include "qemu/main-loop.h" #include "qemu/module.h"
@@ -414,7 +415,7 @@ static int i8257_dma_read_memory(IsaDma *obj, int nchan, void *buf, int pos,int i;uint8_t *p = buf; -cpu_physical_memory_read (addr - pos - len, buf, len); +physical_memory_read (addr - pos - len, buf, len);/* What about 16bit transfers? */ for (i =0 ; i < len >>1 ; i++) {uint8_t b = p[len - i -1 ];
@@ -422,7 +423,7 @@ static int i8257_dma_read_memory(IsaDma *obj, int nchan, void *buf, int pos, } }else -cpu_physical_memory_read (addr + pos, buf, len); +physical_memory_read (addr + pos, buf, len);return len; }
@@ -442,7 +443,7 @@ static int i8257_dma_write_memory(IsaDma *obj, int nchan, void *buf, int pos,int i;uint8_t *p = buf; -cpu_physical_memory_write (addr - pos - len, buf, len); +physical_memory_write (addr - pos - len, buf, len);/* What about 16bit transfers? */ for (i =0 ; i < len; i++) {uint8_t b = p[len - i -1 ];
@@ -450,7 +451,7 @@ static int i8257_dma_write_memory(IsaDma *obj, int nchan, void *buf, int pos, } }else -cpu_physical_memory_write (addr + pos, buf, len); +physical_memory_write (addr + pos, buf, len);return len; }
hw/dma/omap_dma.c +3 -3
@@ -23,7 +23,7 @@#include "hw/arm/omap.h" #include "hw/core/irq.h" #include "hw/arm/soc_dma.h" -#include "exec/cpu-common.h" +#include "system/physmem.h" struct omap_dma_channel_s {/* transfer data */
@@ -348,12 +348,12 @@ static void omap_dma_transfer_generic(struct soc_dma_ch_s *dma)/* Transfer a single element */ /* FIXME: check the endianness */ if (!ch->constant_fill) -cpu_physical_memory_read (a->src, value, ch->data_type); +physical_memory_read (a->src, value, ch->data_type);else *(uint32_t *) value = ch->color;if (!ch->transparent_copy || *(uint32_t *) value != ch->color) -cpu_physical_memory_write (a->dest, value, ch->data_type); +physical_memory_write (a->dest, value, ch->data_type); a->src += a->elem_delta[0 ]; a->dest += a->elem_delta[1 ];
hw/dma/rc4030.c +2 -1
@@ -34,6 +34,7 @@#include "qemu/log.h" #include "qemu/module.h" #include "system/address-spaces.h" +#include "system/physmem.h" #include "trace.h" #include "qom/object.h"
@@ -303,7 +304,7 @@ static void rc4030_write(void *opaque, hwaddr addr, uint64_t data,if (s->cache_ltag ==0x80000001 && s->cache_bmask ==0xf0f0f0f ) {hwaddr dest = s->cache_ptag & ~0x1 ; dest += (s->cache_maint &0x3 ) <<3 ; -cpu_physical_memory_write (dest, &val,4 ); +physical_memory_write (dest, &val,4 ); }break ;/* Remote Speed Registers */
hw/dma/sifive_pdma.c +5 -4
@@ -30,6 +30,7 @@#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "system/dma.h" +#include "system/physmem.h" #include "hw/dma/sifive_pdma.h" #define DMA_CONTROL 0x000
@@ -121,16 +122,16 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) s->chan[ch].exec_src = src;for (n =0 ; n < bytes / size; n++) { -cpu_physical_memory_read (s->chan[ch].exec_src, buf, size); -cpu_physical_memory_write (s->chan[ch].exec_dst, buf, size); +physical_memory_read (s->chan[ch].exec_src, buf, size); +physical_memory_write (s->chan[ch].exec_dst, buf, size); s->chan[ch].exec_src += size; s->chan[ch].exec_dst += size; s->chan[ch].exec_bytes -= size; }if (remainder) { -cpu_physical_memory_read (s->chan[ch].exec_src, buf, remainder); -cpu_physical_memory_write (s->chan[ch].exec_dst, buf, remainder); +physical_memory_read (s->chan[ch].exec_src, buf, remainder); +physical_memory_write (s->chan[ch].exec_dst, buf, remainder); s->chan[ch].exec_src += remainder; s->chan[ch].exec_dst += remainder; s->chan[ch].exec_bytes -= remainder;
hw/hyperv/hyperv.c +13 -12
@@ -17,6 +17,7 @@#include "exec/cpu-common.h" #include "linux/kvm.h" #include "system/kvm.h" +#include "system/physmem.h" #include "qemu/bitops.h" #include "qemu/error-report.h" #include "qemu/lockable.h"
@@ -622,7 +623,7 @@ uint16_t hyperv_hcall_post_message(uint64_t param, bool fast) } len =sizeof (*msg); - msg =cpu_physical_memory_map (param, &len,0 ); + msg =physical_memory_map (param, &len,0 );if (len <sizeof (*msg)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto unmap;
@@ -643,7 +644,7 @@ uint16_t hyperv_hcall_post_message(uint64_t param, bool fast) } unmap: -cpu_physical_memory_unmap (msg, len,0 ,0 ); +physical_memory_unmap (msg, len,0 ,0 );return ret; }
@@ -766,7 +767,7 @@ uint16_t hyperv_hcall_reset_dbg_session(uint64_t outgpa) } len =sizeof (*reset_dbg_session); - reset_dbg_session =cpu_physical_memory_map (outgpa, &len,1 ); + reset_dbg_session =physical_memory_map (outgpa, &len,1 );if (!reset_dbg_session || len <sizeof (*reset_dbg_session)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup;
@@ -789,7 +790,7 @@ uint16_t hyperv_hcall_reset_dbg_session(uint64_t outgpa) sizeof(reset_dbg_session->target_mac)); cleanup:if (reset_dbg_session) { -cpu_physical_memory_unmap (reset_dbg_session, +physical_memory_unmap (reset_dbg_session,sizeof (*reset_dbg_session),1 , len); }
@@ -811,14 +812,14 @@ uint16_t hyperv_hcall_retreive_dbg_data(uint64_t ingpa, uint64_t outgpa, } in_len =sizeof (*debug_data_in); - debug_data_in =cpu_physical_memory_map (ingpa, &in_len,0 ); + debug_data_in =physical_memory_map (ingpa, &in_len,0 );if (!debug_data_in || in_len <sizeof (*debug_data_in)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup; } out_len =sizeof (*debug_data_out); - debug_data_out =cpu_physical_memory_map (outgpa, &out_len,1 ); + debug_data_out =physical_memory_map (outgpa, &out_len,1 );if (!debug_data_out || out_len <sizeof (*debug_data_out)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup;
@@ -844,12 +845,12 @@ uint16_t hyperv_hcall_retreive_dbg_data(uint64_t ingpa, uint64_t outgpa, debug_data_in->count - msg.u.recv.retrieved_count; cleanup:if (debug_data_out) { -cpu_physical_memory_unmap (debug_data_out,sizeof (*debug_data_out),1 , +physical_memory_unmap (debug_data_out,sizeof (*debug_data_out),1 , out_len); }if (debug_data_in) { -cpu_physical_memory_unmap (debug_data_in,sizeof (*debug_data_in),0 , +physical_memory_unmap (debug_data_in,sizeof (*debug_data_in),0 , in_len); }
@@ -870,7 +871,7 @@ uint16_t hyperv_hcall_post_dbg_data(uint64_t ingpa, uint64_t outgpa, bool fast) } in_len =sizeof (*post_data_in); - post_data_in =cpu_physical_memory_map (ingpa, &in_len,0 ); + post_data_in =physical_memory_map (ingpa, &in_len,0 );if (!post_data_in || in_len <sizeof (*post_data_in)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup;
@@ -882,7 +883,7 @@ uint16_t hyperv_hcall_post_dbg_data(uint64_t ingpa, uint64_t outgpa, bool fast) } out_len =sizeof (*post_data_out); - post_data_out =cpu_physical_memory_map (outgpa, &out_len,1 ); + post_data_out =physical_memory_map (outgpa, &out_len,1 );if (!post_data_out || out_len <sizeof (*post_data_out)) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup;
@@ -902,12 +903,12 @@ uint16_t hyperv_hcall_post_dbg_data(uint64_t ingpa, uint64_t outgpa, bool fast)HV_STATUS_SUCCESS ; cleanup:if (post_data_out) { -cpu_physical_memory_unmap (post_data_out, +physical_memory_unmap (post_data_out,sizeof (*post_data_out),1 , out_len); }if (post_data_in) { -cpu_physical_memory_unmap (post_data_in, +physical_memory_unmap (post_data_in,sizeof (*post_data_in),0 , in_len); }
hw/hyperv/syndbg.c +7 -6
@@ -20,6 +20,7 @@#include "hw/hyperv/vmbus-bridge.h" #include "hw/hyperv/hyperv-proto.h" #include "exec/cpu-common.h" +#include "system/physmem.h" #include "net/net.h" #include "net/eth.h" #include "net/checksum.h"
@@ -62,10 +63,10 @@ static void set_pending_state(HvSynDbg *syndbg, bool has_pending) } out_len =1 ; - out_data =cpu_physical_memory_map (syndbg->pending_page_gpa, &out_len,1 ); + out_data =physical_memory_map (syndbg->pending_page_gpa, &out_len,1 );if (out_data) { *(uint8_t *)out_data = !!has_pending; -cpu_physical_memory_unmap (out_data, out_len,1 , out_len); +physical_memory_unmap (out_data, out_len,1 , out_len); } }
@@ -110,7 +111,7 @@ static uint16_t handle_send_msg(HvSynDbg *syndbg, uint64_t ingpa,int sent_count; data_len = count; - debug_data =cpu_physical_memory_map (ingpa, &data_len,0 ); + debug_data =physical_memory_map (ingpa, &data_len,0 );if (!debug_data || data_len < count) { ret =HV_STATUS_INSUFFICIENT_MEMORY ; goto cleanup;
@@ -135,7 +136,7 @@ static uint16_t handle_send_msg(HvSynDbg *syndbg, uint64_t ingpa, ret =HV_STATUS_SUCCESS ; cleanup:if (debug_data) { -cpu_physical_memory_unmap (debug_data, count,0 , data_len); +physical_memory_unmap (debug_data, count,0 , data_len); }return ret;
@@ -224,7 +225,7 @@ static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, out_len +=UDP_PKT_HEADER_SIZE ; } out_requested_len = out_len; - out_data =cpu_physical_memory_map (outgpa, &out_len,1 ); + out_data =physical_memory_map (outgpa, &out_len,1 ); ret =HV_STATUS_INSUFFICIENT_MEMORY ;if (!out_data || out_len < out_requested_len) { goto cleanup_out_data;
@@ -243,7 +244,7 @@ static uint16_t handle_recv_msg(HvSynDbg *syndbg, uint64_t outgpa, cleanup_out_data:if (out_data) { -cpu_physical_memory_unmap (out_data, out_len,1 , out_len); +physical_memory_unmap (out_data, out_len,1 , out_len); }return ret; }
hw/hyperv/vmbus.c +5 -4
@@ -21,6 +21,7 @@#include "hw/core/sysbus.h" #include "exec/cpu-common.h" #include "system/kvm.h" +#include "system/physmem.h" #include "trace.h" enum {
@@ -750,7 +751,7 @@ static int vmbus_channel_notify_guest(VMBusChannel *chan)return hyperv_set_event_flag (chan->notify_route, chan->id); } - int_map =cpu_physical_memory_map (addr, &len,1 ); + int_map =physical_memory_map (addr, &len,1 );if (len !=TARGET_PAGE_SIZE /2 ) { res = -ENXIO ; goto unmap;
@@ -764,7 +765,7 @@ static int vmbus_channel_notify_guest(VMBusChannel *chan) } unmap: -cpu_physical_memory_unmap (int_map, len,1 , dirty); +physical_memory_unmap (int_map, len,1 , dirty);return res; }
@@ -2249,7 +2250,7 @@ static void vmbus_signal_event(EventNotifier *e) addr = vmbus->int_page_gpa +TARGET_PAGE_SIZE /2 ; len =TARGET_PAGE_SIZE /2 ; - int_map =cpu_physical_memory_map (addr, &len,1 ); + int_map =physical_memory_map (addr, &len,1 );if (len !=TARGET_PAGE_SIZE /2 ) { goto unmap; }
@@ -2265,7 +2266,7 @@ static void vmbus_signal_event(EventNotifier *e) } unmap: -cpu_physical_memory_unmap (int_map, len,1 , is_dirty); +physical_memory_unmap (int_map, len,1 , is_dirty); }static void vmbus_dev_realize (DeviceState *dev,Error **errp)
hw/i386/kvm/clock.c +2 -1
@@ -19,6 +19,7 @@#include "system/kvm.h" #include "system/runstate.h" #include "system/hw_accel.h" +#include "system/physmem.h" #include "kvm/kvm_i386.h" #include "migration/vmstate.h" #include "hw/core/sysbus.h"
@@ -85,7 +86,7 @@ static uint64_t kvmclock_current_nsec(KVMClockState *s) } kvmclock_struct_pa = env->system_time_msr & ~1ULL ; -cpu_physical_memory_read (kvmclock_struct_pa, &time,sizeof (time)); +physical_memory_read (kvmclock_struct_pa, &time,sizeof (time));assert (time.tsc_timestamp <= migration_tsc); delta = migration_tsc - time.tsc_timestamp;
hw/i386/vapic.c +11 -10
@@ -19,6 +19,7 @@#include "system/whpx.h" #include "system/runstate.h" #include "system/address-spaces.h" +#include "system/physmem.h" #include "hw/i386/apic_internal.h" #include "hw/core/sysbus.h" #include "hw/core/boards.h"
@@ -138,13 +139,13 @@ static const TPRInstruction tpr_instr[] = {static void read_guest_rom_state (VAPICROMState *s) { -cpu_physical_memory_read (s->rom_state_paddr, &s->rom_state, +physical_memory_read (s->rom_state_paddr, &s->rom_state,sizeof (GuestROMState)); }static void write_guest_rom_state (VAPICROMState *s) { -cpu_physical_memory_write (s->rom_state_paddr, &s->rom_state, +physical_memory_write (s->rom_state_paddr, &s->rom_state,sizeof (GuestROMState)); }
@@ -327,14 +328,14 @@ static int update_rom_mapping(VAPICROMState *s, CPUX86State *env, target_ulong ifor (pos =le32_to_cpu (s->rom_state.fixup_start); pos <le32_to_cpu (s->rom_state.fixup_end); pos +=4 ) { -cpu_physical_memory_read (paddr + pos - s->rom_state.vaddr, +physical_memory_read (paddr + pos - s->rom_state.vaddr, &offset,sizeof (offset)); offset =le32_to_cpu (offset); -cpu_physical_memory_read (paddr + offset, &patch,sizeof (patch)); +physical_memory_read (paddr + offset, &patch,sizeof (patch)); patch =le32_to_cpu (patch); patch += rom_state_vaddr -le32_to_cpu (s->rom_state.vaddr); patch =cpu_to_le32 (patch); -cpu_physical_memory_write (paddr + offset, &patch,sizeof (patch)); +physical_memory_write (paddr + offset, &patch,sizeof (patch)); }read_guest_rom_state (s); s->vapic_paddr = paddr + le32_to_cpu(s->rom_state.vapic_vaddr) -
@@ -378,7 +379,7 @@ static int vapic_enable(VAPICROMState *s, X86CPU *cpu) } vapic_paddr = s->vapic_paddr + (((hwaddr )cpu_number) <<VAPIC_CPU_SHIFT ); -cpu_physical_memory_write (vapic_paddr + offsetof(VAPICState , enabled), +physical_memory_write (vapic_paddr + offsetof(VAPICState , enabled), &enabled,sizeof (enabled));apic_enable_vapic (cpu->apic_state, vapic_paddr);
@@ -549,7 +550,7 @@ static int patch_hypercalls(VAPICROMState *s)uint8_t *rom; rom =g_malloc (s->rom_size); -cpu_physical_memory_read (rom_paddr, rom, s->rom_size); +physical_memory_read (rom_paddr, rom, s->rom_size);for (pos =0 ; pos < s->rom_size -sizeof (vmcall_pattern); pos++) {if (kvm_enabled () &&kvm_irqchip_in_kernel ()) {
@@ -565,7 +566,7 @@ static int patch_hypercalls(VAPICROMState *s) }if (memcmp (rom + pos, pattern,7 ) ==0 && (rom[pos +7 ] == alternates[0 ] || rom[pos +7 ] == alternates[1 ])) { -cpu_physical_memory_write (rom_paddr + pos +5 , patch,3 ); +physical_memory_write (rom_paddr + pos +5 , patch,3 );/* * Don't flush the tb here. Under ordinary conditions, the patched * calls are miles away from the current IP. Under malicious
@@ -755,7 +756,7 @@ static void do_vapic_enable(CPUState *cs, run_on_cpu_data data)X86CPU *cpu =X86_CPU (cs);static const uint8_t enabled =1 ; -cpu_physical_memory_write (s->vapic_paddr + offsetof(VAPICState , enabled), +physical_memory_write (s->vapic_paddr + offsetof(VAPICState , enabled), &enabled,sizeof (enabled));apic_enable_vapic (cpu->apic_state, s->vapic_paddr); s->state =VAPIC_ACTIVE ;
@@ -776,7 +777,7 @@ static void vapic_vm_state_change(void *opaque, bool running, RunState state)run_on_cpu (first_cpu, do_vapic_enable,RUN_ON_CPU_HOST_PTR (s)); }else { zero =g_malloc0 (s->rom_state.vapic_size); -cpu_physical_memory_write (s->vapic_paddr, zero, +physical_memory_write (s->vapic_paddr, zero, s->rom_state.vapic_size);g_free (zero); }
hw/intc/apic.c +2 -1
@@ -28,6 +28,7 @@#include "qemu/host-utils.h" #include "system/kvm.h" #include "system/mshv.h" +#include "system/physmem.h" #include "trace.h" #include "hw/i386/apic-msidef.h" #include "exec/cpu-common.h"
@@ -107,7 +108,7 @@ static void apic_sync_vapic(APICCommonState *s, int sync_type)return ; }if (sync_type &SYNC_FROM_VAPIC ) { -cpu_physical_memory_read (s->vapic_paddr, &vapic_state, +physical_memory_read (s->vapic_paddr, &vapic_state,sizeof (vapic_state)); s->tpr = vapic_state.tpr; }
hw/intc/xive2.c +2 -1
@@ -13,6 +13,7 @@#include "target/ppc/cpu.h" #include "system/cpus.h" #include "system/dma.h" +#include "system/physmem.h" #include "hw/core/qdev-properties.h" #include "hw/ppc/xive.h" #include "hw/ppc/xive2.h"
@@ -1170,7 +1171,7 @@ static void xive2_tctx_accept_el(XivePresenter *xptr, XiveTCTX *tctx, report_data[0 ] = (rd >>8 ) &0xff ; report_data[1 ] = rd &0xff ; } -cpu_physical_memory_write (phys_addr, report_data,REPORT_LINE_GEN1_SIZE ); +physical_memory_write (phys_addr, report_data,REPORT_LINE_GEN1_SIZE ); } void xive2_tm_ack_os_el(XivePresenter *xptr, XiveTCTX *tctx,
hw/m68k/next-cube.c +2 -1
@@ -14,6 +14,7 @@#include "exec/hwaddr.h" #include "exec/cpu-common.h" #include "exec/cpu-interrupt.h" +#include "system/physmem.h" #include "system/system.h" #include "system/qtest.h" #include "hw/core/irq.h"
@@ -585,7 +586,7 @@ static void nextdma_write(void *opaque, uint8_t *buf, int size, int type) base_addr = next_state->dma[type].next_initbuf; } -cpu_physical_memory_write (base_addr, buf, size); +physical_memory_write (base_addr, buf, size); next_state->dma[type].next_initbuf =0 ;
hw/microblaze/boot.c +2 -1
@@ -32,6 +32,7 @@#include "qemu/error-report.h" #include "qemu/guest-random.h" #include "system/device_tree.h" +#include "system/physmem.h" #include "system/reset.h" #include "exec/cpu-common.h" #include "hw/core/boards.h"
@@ -106,7 +107,7 @@ static int microblaze_load_dtb(hwaddr addr, initrd_end); } -cpu_physical_memory_write (addr, fdt, fdt_size); +physical_memory_write (addr, fdt, fdt_size);g_free (fdt);return fdt_size; }
hw/misc/pc-testdev.c +3 -2
@@ -40,6 +40,7 @@#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "exec/cpu-common.h" +#include "system/physmem.h" #include "qom/object.h" #define IOMEM_LEN 0x10000
@@ -126,7 +127,7 @@ static void test_flush_page_write(void *opaque, hwaddr addr, uint64_t data, unsigned len) {hwaddr page =4096 ; -void *a =cpu_physical_memory_map (data & ~0xffful , &page, false); +void *a =physical_memory_map (data & ~0xffful , &page, false);/* We might not be able to get the full page, only mprotect what we actually have mapped */
@@ -134,7 +135,7 @@ static void test_flush_page_write(void *opaque, hwaddr addr, uint64_t data,mprotect (a, page,PROT_NONE );mprotect (a, page,PROT_READ |PROT_WRITE );#endif -cpu_physical_memory_unmap (a, page,0 ,0 ); +physical_memory_unmap (a, page,0 ,0 ); }static const MemoryRegionOps test_flush_ops = {
hw/net/fsl_etsec/rings.c +7 -6
@@ -26,6 +26,7 @@#include "qemu/log.h" #include "etsec.h" #include "registers.h" +#include "system/physmem.h" #include "exec/cpu-common.h" /* #define ETSEC_RING_DEBUG */
@@ -111,7 +112,7 @@ static void read_buffer_descriptor(eTSEC *etsec,assert (bd !=NULL );RING_DEBUG ("READ Buffer Descriptor @ 0x" HWADDR_FMT_plx"\n" , addr); -cpu_physical_memory_read (addr, +physical_memory_read (addr, bd,sizeof (eTSEC_rxtx_bd));
@@ -143,7 +144,7 @@ static void write_buffer_descriptor(eTSEC *etsec, }RING_DEBUG ("Write Buffer Descriptor @ 0x" HWADDR_FMT_plx"\n" , addr); -cpu_physical_memory_write (addr, +physical_memory_write (addr, bd,sizeof (eTSEC_rxtx_bd)); }
@@ -240,7 +241,7 @@ static void process_tx_bd(eTSEC *etsec, etsec->tx_buffer =g_realloc (etsec->tx_buffer, etsec->tx_buffer_len + bd->length); tmp_buff = etsec->tx_buffer + etsec->tx_buffer_len; -cpu_physical_memory_read (bd->bufptr + tbdbth, tmp_buff, bd->length); +physical_memory_read (bd->bufptr + tbdbth, tmp_buff, bd->length);/* Update buffer length */ etsec->tx_buffer_len += bd->length;
@@ -401,7 +402,7 @@ static void fill_rx_bd(eTSEC *etsec,/* This operation will only write FCB */ if (etsec->rx_fcb_size !=0 ) { -cpu_physical_memory_write (bufptr, etsec->rx_fcb, etsec->rx_fcb_size); +physical_memory_write (bufptr, etsec->rx_fcb, etsec->rx_fcb_size); bufptr += etsec->rx_fcb_size; bd->length += etsec->rx_fcb_size;
@@ -417,7 +418,7 @@ static void fill_rx_bd(eTSEC *etsec,/* This operation can only write packet data and no padding */ if (to_write >0 ) { -cpu_physical_memory_write (bufptr, *buf, to_write); +physical_memory_write (bufptr, *buf, to_write); *buf += to_write; bufptr += to_write;
@@ -439,7 +440,7 @@ static void fill_rx_bd(eTSEC *etsec, etsec->rx_padding -= rem; *size -= rem; bd->length += rem; -cpu_physical_memory_write (bufptr, padd, rem); +physical_memory_write (bufptr, padd, rem); } } }
hw/net/mcf_fec.c +6 -5
@@ -8,6 +8,7 @@#include "qemu/osdep.h" #include "qemu/log.h" +#include "system/physmem.h" #include "hw/core/irq.h" #include "net/net.h" #include "qemu/module.h"
@@ -175,7 +176,7 @@ typedef struct {static void mcf_fec_read_bd (mcf_fec_bd *bd,uint32_t addr) { -cpu_physical_memory_read (addr, bd,sizeof (*bd)); +physical_memory_read (addr, bd,sizeof (*bd));be16_to_cpus (&bd->flags);be16_to_cpus (&bd->length);be32_to_cpus (&bd->data);
@@ -187,7 +188,7 @@ static void mcf_fec_write_bd(mcf_fec_bd *bd, uint32_t addr) tmp.flags =cpu_to_be16 (bd->flags); tmp.length =cpu_to_be16 (bd->length); tmp.data =cpu_to_be32 (bd->data); -cpu_physical_memory_write (addr, &tmp,sizeof (tmp)); +physical_memory_write (addr, &tmp,sizeof (tmp)); }static void mcf_fec_update (mcf_fec_state *s)
@@ -260,7 +261,7 @@ static void mcf_fec_do_tx(mcf_fec_state *s) len =FEC_MAX_FRAME_SIZE - frame_size; s->eir |=FEC_INT_BABT ; } -cpu_physical_memory_read (bd.data, ptr, len); +physical_memory_read (bd.data, ptr, len); ptr += len; frame_size += len;if (bd.flags &FEC_BD_L ) {
@@ -596,10 +597,10 @@ static ssize_t mcf_fec_receive(NetClientState *nc, const uint8_t *buf, size_t siif (size <4 ) buf_len += size -4 ; buf_addr = bd.data; -cpu_physical_memory_write (buf_addr, buf, buf_len); +physical_memory_write (buf_addr, buf, buf_len); buf += buf_len;if (size <4 ) { -cpu_physical_memory_write (buf_addr + buf_len, crc_ptr,4 - size); +physical_memory_write (buf_addr + buf_len, crc_ptr,4 - size); crc_ptr +=4 - size; } bd.flags &= ~FEC_BD_E ;
hw/net/opencores_eth.c +5 -4
@@ -32,6 +32,7 @@*/ #include "qemu/osdep.h" +#include "system/physmem.h" #include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/core/qdev-properties.h"
@@ -431,7 +432,7 @@ static ssize_t open_eth_receive(NetClientState *nc, }#endif -cpu_physical_memory_write (desc->buf_ptr, buf, copy_size); +physical_memory_write (desc->buf_ptr, buf, copy_size);if (GET_REGBIT (s,MODER ,PAD ) && copy_size < minfl) {if (minfl - copy_size > fcsl) {
@@ -443,7 +444,7 @@ static ssize_t open_eth_receive(NetClientState *nc,size_t zero_sz = minfl - copy_size <sizeof (zero) ? minfl - copy_size :sizeof (zero); -cpu_physical_memory_write (desc->buf_ptr + copy_size, +physical_memory_write (desc->buf_ptr + copy_size, zero, zero_sz); copy_size += zero_sz; }
@@ -453,7 +454,7 @@ static ssize_t open_eth_receive(NetClientState *nc,* Don't do it if the frame is cut at the MAXFL or padded with 4 or * more bytes to the MINFL. */ -cpu_physical_memory_write (desc->buf_ptr + copy_size, zero, fcsl); +physical_memory_write (desc->buf_ptr + copy_size, zero, fcsl); copy_size += fcsl;SET_FIELD (desc->len_flags,RXD_LEN , copy_size);
@@ -509,7 +510,7 @@ static void open_eth_start_xmit(OpenEthState *s, desc *tx)if (len > tx_len) { len = tx_len; } -cpu_physical_memory_read (tx->buf_ptr, buf, len); +physical_memory_read (tx->buf_ptr, buf, len);if (tx_len > len) {memset (buf + len,0 , tx_len - len); }
hw/nvram/spapr_nvram.c +5 -4
@@ -30,6 +30,7 @@#include "system/block-backend.h" #include "system/device_tree.h" +#include "system/physmem.h" #include "system/system.h" #include "system/runstate.h" #include "migration/vmstate.h"
@@ -89,9 +90,9 @@ static void rtas_nvram_fetch(PowerPCCPU *cpu, SpaprMachineState *spapr,assert (nvram->buf); - membuf =cpu_physical_memory_map (buffer, &len, true); + membuf =physical_memory_map (buffer, &len, true);memcpy (membuf, nvram->buf + offset, len); -cpu_physical_memory_unmap (membuf, len,1 , len); +physical_memory_unmap (membuf, len,1 , len);rtas_st (rets,0 ,RTAS_OUT_SUCCESS );rtas_st (rets,1 , len);
@@ -127,7 +128,7 @@ static void rtas_nvram_store(PowerPCCPU *cpu, SpaprMachineState *spapr,return ; } - membuf =cpu_physical_memory_map (buffer, &len, false); + membuf =physical_memory_map (buffer, &len, false); ret =0 ;if (nvram->blk) {
@@ -137,7 +138,7 @@ static void rtas_nvram_store(PowerPCCPU *cpu, SpaprMachineState *spapr,assert (nvram->buf);memcpy (nvram->buf + offset, membuf, len); -cpu_physical_memory_unmap (membuf, len,0 , len); +physical_memory_unmap (membuf, len,0 , len);rtas_st (rets,0 , (ret <0 ) ?RTAS_OUT_HW_ERROR :RTAS_OUT_SUCCESS );rtas_st (rets,1 , (ret <0 ) ?0 : len);
hw/ppc/amigaone.c +3 -2
@@ -22,6 +22,7 @@#include "hw/i2c/smbus_eeprom.h" #include "exec/cpu-common.h" #include "system/block-backend.h" +#include "system/physmem.h" #include "system/qtest.h" #include "system/reset.h" #include "kvm_ppc.h"
@@ -231,7 +232,7 @@ static void create_bd_info(hwaddr addr, ram_addr_t ram_size) bd->bi_busfreq =cpu_to_be32 (BUS_FREQ_HZ ); bd->bi_baudrate =cpu_to_be32 (115200 ); -cpu_physical_memory_write (addr, bd,sizeof (*bd)); +physical_memory_write (addr, bd,sizeof (*bd)); }static void amigaone_cpu_reset (void *opaque)
@@ -386,7 +387,7 @@ static void amigaone_init(MachineState *machine)size_t len =strlen (machine->kernel_cmdline); loadaddr = bi->bd_info +1 * MiB; -cpu_physical_memory_write (loadaddr, machine->kernel_cmdline, len +1 ); +physical_memory_write (loadaddr, machine->kernel_cmdline, len +1 ); bi->cmdline_start = loadaddr; bi->cmdline_end = loadaddr + len +1 ;/* including terminating '\0' */ }
hw/ppc/e500.c +2 -1
@@ -29,6 +29,7 @@#include "hw/char/serial-mm.h" #include "hw/pci/pci.h" #include "system/block-backend-io.h" +#include "system/physmem.h" #include "system/system.h" #include "system/kvm.h" #include "system/reset.h"
@@ -661,7 +662,7 @@ static int ppce500_load_device_tree(PPCE500MachineState *pms, done:if (!dry_run) { -cpu_physical_memory_write (addr, fdt, fdt_size); +physical_memory_write (addr, fdt, fdt_size);/* Set machine->fdt for 'dumpdtb' QMP/HMP command */ g_free (machine->fdt);
hw/ppc/pegasos.c +6 -5
@@ -21,6 +21,7 @@#include "hw/ide/pci.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/core/qdev-properties.h" +#include "system/physmem.h" #include "system/reset.h" #include "system/runstate.h" #include "system/qtest.h"
@@ -314,22 +315,22 @@ static void pegasos_init(MachineState *machine)static void pegasos_superio_write (uint8_t addr,uint8_t val) { -cpu_physical_memory_write (0xfe0003f0 , &addr,1 ); -cpu_physical_memory_write (0xfe0003f1 , &val,1 ); +physical_memory_write (0xfe0003f0 , &addr,1 ); +physical_memory_write (0xfe0003f1 , &val,1 ); }static void pegasos1_pci_config_write (PegasosMachineState *pm,int bus,uint32_t addr,uint32_t len,uint32_t val) { addr |=BIT (31 ); -cpu_physical_memory_write (0xfec00cf8 , &addr,4 ); -cpu_physical_memory_write (0xfee00cfc , &val, len); +physical_memory_write (0xfec00cf8 , &addr,4 ); +physical_memory_write (0xfee00cfc , &val, len); }static void pegasos1_chipset_reset (PegasosMachineState *pm) {uint8_t elcr =0x2e ; -cpu_physical_memory_write (0xfe0004d1 , &elcr,sizeof (elcr)); +physical_memory_write (0xfe0004d1 , &elcr,sizeof (elcr));pegasos1_pci_config_write (pm,0 ,PCI_COMMAND ,2 ,PCI_COMMAND_IO |PCI_COMMAND_MEMORY |PCI_COMMAND_MASTER );
hw/ppc/pnv.c +3 -2
@@ -25,6 +25,7 @@#include "qemu/units.h" #include "qemu/cutils.h" #include "qapi/error.h" +#include "system/physmem.h" #include "system/qtest.h" #include "system/system.h" #include "system/numa.h"
@@ -843,11 +844,11 @@ static void pnv_reset(MachineState *machine, ResetType type) .thread_size = cpu_to_be32(sizeof(MpiplPreservedCPUState)), }; -cpu_physical_memory_write (PROC_DUMP_AREA_OFF , &proc_area, +physical_memory_write (PROC_DUMP_AREA_OFF , &proc_area,sizeof (proc_area)); } -cpu_physical_memory_write (PNV_FDT_ADDR , fdt,fdt_totalsize (fdt)); +physical_memory_write (PNV_FDT_ADDR , fdt,fdt_totalsize (fdt));/* Free previous device tree set by pnv_init/reset/machine_init_done */ g_free (machine->fdt);
hw/ppc/ppc440_uc.c +5 -4
@@ -18,6 +18,7 @@#include "hw/core/qdev-properties.h" #include "hw/pci/pci.h" #include "exec/cpu-common.h" +#include "system/physmem.h" #include "system/reset.h" #include "target/ppc/cpu.h" #include "ppc440.h"
@@ -606,9 +607,9 @@ static void dcr_write_dma(void *opaque, int dcrn, uint32_t val) width =1 << ((val &DMA0_CR_PW ) >>25 ); xferlen = count * width; wlen = rlen = xferlen; - rptr =cpu_physical_memory_map (dma->ch[chnl].sa, &rlen, + rptr =physical_memory_map (dma->ch[chnl].sa, &rlen, false); - wptr =cpu_physical_memory_map (dma->ch[chnl].da, &wlen, + wptr =physical_memory_map (dma->ch[chnl].da, &wlen, true);if (rptr && rlen == xferlen && wptr && wlen == xferlen) { if (!(val & DMA0_CR_DEC) &&
@@ -631,10 +632,10 @@ static void dcr_write_dma(void *opaque, int dcrn, uint32_t val) } }if (wptr) { -cpu_physical_memory_unmap (wptr, wlen,1 , didx); +physical_memory_unmap (wptr, wlen,1 , didx); }if (rptr) { -cpu_physical_memory_unmap (rptr, rlen,0 , sidx); +physical_memory_unmap (rptr, rlen,0 , sidx); } } }
hw/ppc/spapr.c +2 -1
@@ -38,6 +38,7 @@#include "system/system.h" #include "system/hostmem.h" #include "system/numa.h" +#include "system/physmem.h" #include "system/tcg.h" #include "system/qtest.h" #include "system/reset.h"
@@ -1858,7 +1859,7 @@ static void spapr_machine_reset(MachineState *machine, ResetType type)spapr_cpu_set_entry_state (first_ppc_cpu,SPAPR_ENTRY_POINT ,0 , fdt_addr,0 ); -cpu_physical_memory_write (fdt_addr, fdt,fdt_totalsize (fdt)); +physical_memory_write (fdt_addr, fdt,fdt_totalsize (fdt)); }g_free (spapr->fdt_blob);
hw/ppc/spapr_drc.c +2 -1
@@ -25,6 +25,7 @@#include "hw/ppc/spapr_nvdimm.h" #include "exec/cpu-common.h" #include "system/device_tree.h" +#include "system/physmem.h" #include "system/reset.h" #include "trace.h"
@@ -1150,7 +1151,7 @@ out:static void configure_connector_st (target_ulong addr,target_ulong offset,const void *buf,size_t len) { -cpu_physical_memory_write (ppc64_phys_to_real (addr + offset), +physical_memory_write (ppc64_phys_to_real (addr + offset), buf,MIN (len,CC_WA_LEN - offset)); }
hw/ppc/spapr_events.c +5 -4
@@ -28,6 +28,7 @@#include "qemu/osdep.h" #include "qapi/error.h" #include "system/device_tree.h" +#include "system/physmem.h" #include "system/runstate.h" #include "hw/ppc/fdt.h"
@@ -855,9 +856,9 @@ static void spapr_mce_dispatch_elog(SpaprMachineState *spapr, PowerPCCPU *cpu,stq_be_phys (&address_space_memory, rtas_addr +RTAS_ERROR_LOG_OFFSET , env->gpr[3 ]); -cpu_physical_memory_write (rtas_addr +RTAS_ERROR_LOG_OFFSET + +physical_memory_write (rtas_addr +RTAS_ERROR_LOG_OFFSET +sizeof (env->gpr[3 ]), &log,sizeof (log)); -cpu_physical_memory_write (rtas_addr +RTAS_ERROR_LOG_OFFSET + +physical_memory_write (rtas_addr +RTAS_ERROR_LOG_OFFSET +sizeof (env->gpr[3 ]) +sizeof (log), ext_elog,sizeof (*ext_elog));g_free (ext_elog);
@@ -964,8 +965,8 @@ static void check_exception(PowerPCCPU *cpu, SpaprMachineState *spapr, header.summary =cpu_to_be32 (event->summary); header.extended_length =cpu_to_be32 (event->extended_length); -cpu_physical_memory_write (buf, &header,sizeof (header)); -cpu_physical_memory_write (buf +sizeof (header), event->extended_log, +physical_memory_write (buf, &header,sizeof (header)); +physical_memory_write (buf +sizeof (header), event->extended_log, event->extended_length);rtas_st (rets,0 ,RTAS_OUT_SUCCESS );g_free (event->extended_log);
hw/ppc/spapr_hcall.c +9 -8
@@ -2,6 +2,7 @@#include "qemu/cutils.h" #include "qapi/error.h" #include "system/hw_accel.h" +#include "system/physmem.h" #include "system/runstate.h" #include "system/tcg.h" #include "qemu/log.h"
@@ -273,7 +274,7 @@ static target_ulong h_page_init(PowerPCCPU *cpu, SpaprMachineState *spapr,if (!is_ram_address (spapr, dst) || (dst & ~TARGET_PAGE_MASK ) !=0 ) {return H_PARAMETER ; } - pdst =cpu_physical_memory_map (dst, &len, true); + pdst =physical_memory_map (dst, &len, true);if (!pdst || len !=TARGET_PAGE_SIZE ) {return H_PARAMETER ; }
@@ -284,13 +285,13 @@ static target_ulong h_page_init(PowerPCCPU *cpu, SpaprMachineState *spapr, ret =H_PARAMETER ; goto unmap_out; } - psrc =cpu_physical_memory_map (src, &len, false); + psrc =physical_memory_map (src, &len, false);if (!psrc || len !=TARGET_PAGE_SIZE ) { ret =H_PARAMETER ; goto unmap_out; }memcpy (pdst, psrc, len); -cpu_physical_memory_unmap (psrc, len,0 , len); +physical_memory_unmap (psrc, len,0 , len); }else if (flags &H_ZERO_PAGE ) {memset (pdst,0 , len);/* Just clear the destination page */ }
@@ -309,7 +310,7 @@ static target_ulong h_page_init(PowerPCCPU *cpu, SpaprMachineState *spapr, } unmap_out: -cpu_physical_memory_unmap (pdst,TARGET_PAGE_SIZE ,1 , len); +physical_memory_unmap (pdst,TARGET_PAGE_SIZE ,1 , len);return ret; }
@@ -1382,8 +1383,8 @@ static target_ulong h_client_architecture_support(PowerPCCPU *cpu, spapr->fdt_size =fdt_totalsize (spapr->fdt_blob); spapr->fdt_initial_size = spapr->fdt_size; -cpu_physical_memory_write (fdt_buf, &hdr,sizeof (hdr)); -cpu_physical_memory_write (fdt_buf +sizeof (hdr), spapr->fdt_blob, +physical_memory_write (fdt_buf, &hdr,sizeof (hdr)); +physical_memory_write (fdt_buf +sizeof (hdr), spapr->fdt_blob, spapr->fdt_size);trace_spapr_cas_continue (spapr->fdt_size +sizeof (hdr)); }
@@ -1487,7 +1488,7 @@ static target_ulong h_update_dt(PowerPCCPU *cpu, SpaprMachineState *spapr,unsigned cb;void *fdt; -cpu_physical_memory_read (dt, &hdr,sizeof (hdr)); +physical_memory_read (dt, &hdr,sizeof (hdr)); cb =fdt32_to_cpu (hdr.totalsize);/* Check that the fdt did not grow out of proportion */
@@ -1498,7 +1499,7 @@ static target_ulong h_update_dt(PowerPCCPU *cpu, SpaprMachineState *spapr, } fdt =g_malloc0 (cb); -cpu_physical_memory_read (dt, fdt, cb); +physical_memory_read (dt, fdt, cb);/* Check the fdt consistency */ if (fdt_check_full (fdt, cb)) {
hw/ppc/spapr_rtas.c +3 -2
@@ -32,6 +32,7 @@#include "system/device_tree.h" #include "system/cpus.h" #include "system/hw_accel.h" +#include "system/physmem.h" #include "system/runstate.h" #include "system/qtest.h" #include "kvm_ppc.h"
@@ -279,7 +280,7 @@ static inline int sysparm_st(target_ulong addr, target_ulong len,return RTAS_OUT_SYSPARM_PARAM_ERROR ; }stw_be_phys (&address_space_memory, phys, vallen); -cpu_physical_memory_write (phys +2 , val,MIN (len -2 , vallen)); +physical_memory_write (phys +2 , val,MIN (len -2 , vallen));return RTAS_OUT_SUCCESS ; }
@@ -441,7 +442,7 @@ static void rtas_ibm_os_term(PowerPCCPU *cpu,return trigger_fadump_boot (spapr, rets); } -cpu_physical_memory_read (msgaddr, msg,sizeof (msg) -1 ); +physical_memory_read (msgaddr, msg,sizeof (msg) -1 ); msg[sizeof (msg) -1 ] =0 ;error_report ("OS terminated: %s" , msg);
hw/ppc/spapr_tpm_proxy.c +3 -2
@@ -13,6 +13,7 @@#include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "system/physmem.h" #include "system/reset.h" #include "hw/ppc/spapr.h" #include "hw/core/qdev-properties.h"
@@ -69,7 +70,7 @@ static ssize_t tpm_execute(SpaprTpmProxy *tpm_proxy, target_ulong *args) } } -cpu_physical_memory_read (data_in, buf_in, data_in_size); +physical_memory_read (data_in, buf_in, data_in_size); do { ret = write(tpm_proxy->host_fd, buf_in, data_in_size);
@@ -94,7 +95,7 @@ static ssize_t tpm_execute(SpaprTpmProxy *tpm_proxy, target_ulong *args)return H_RESOURCE ; } -cpu_physical_memory_write (data_out, buf_out, ret); +physical_memory_write (data_out, buf_out, ret); args[0 ] = ret;return H_SUCCESS ;
hw/ppc/virtex_ml507.c +2 -1
@@ -30,6 +30,7 @@#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/block/flash.h" +#include "system/physmem.h" #include "system/system.h" #include "system/reset.h" #include "hw/core/boards.h"
@@ -174,7 +175,7 @@ static int xilinx_load_device_tree(MachineState *machine, machine->kernel_cmdline);if (r <0 )fprintf (stderr,"couldn't set /chosen/bootargs\n" ); -cpu_physical_memory_write (addr, fdt, fdt_size); +physical_memory_write (addr, fdt, fdt_size);/* Set machine->fdt for 'dumpdtb' QMP/HMP command */ machine->fdt = fdt;
hw/s390x/css.c +3 -2
@@ -15,6 +15,7 @@#include "qemu/bitops.h" #include "qemu/error-report.h" #include "system/address-spaces.h" +#include "system/physmem.h" #include "hw/s390x/ioinst.h" #include "hw/core/qdev-properties.h" #include "hw/s390x/css.h"
@@ -755,13 +756,13 @@ static CCW1 copy_ccw_from_guest(hwaddr addr, bool fmt1)CCW1 ret;if (fmt1) { -cpu_physical_memory_read (addr, &tmp1,sizeof (tmp1)); +physical_memory_read (addr, &tmp1,sizeof (tmp1)); ret.cmd_code = tmp1.cmd_code; ret.flags = tmp1.flags; ret.count =be16_to_cpu (tmp1.count); ret.cda =be32_to_cpu (tmp1.cda); }else { -cpu_physical_memory_read (addr, &tmp0,sizeof (tmp0)); +physical_memory_read (addr, &tmp0,sizeof (tmp0));if ((tmp0.cmd_code &0x0f ) ==CCW_CMD_TIC ) { ret.cmd_code =CCW_CMD_TIC ; ret.flags =0 ;
hw/s390x/ipl.c +5 -4
@@ -15,6 +15,7 @@#include "qemu/osdep.h" #include "qemu/datadir.h" #include "qapi/error.h" +#include "system/physmem.h" #include "system/reset.h" #include "system/runstate.h" #include "system/tcg.h"
@@ -431,7 +432,7 @@ static uint64_t s390_ipl_map_iplb_chain(IplParameterBlock *iplb_chain)uint64_t len =sizeof (IplParameterBlock) * count;uint64_t chain_addr =find_iplb_chain_addr (ipl->bios_start_addr, count); -cpu_physical_memory_write (chain_addr, iplb_chain, len); +physical_memory_write (chain_addr, iplb_chain, len);return chain_addr; }
@@ -722,13 +723,13 @@ static void s390_ipl_prepare_qipl(S390CPU *cpu)uint8_t *addr;uint64_t len =4096 ; - addr =cpu_physical_memory_map (cpu->env.psa, &len, true); + addr =physical_memory_map (cpu->env.psa, &len, true);if (!addr || len <QIPL_ADDRESS +sizeof (QemuIplParameters)) {error_report ("Cannot set QEMU IPL parameters" );return ; }memcpy (addr +QIPL_ADDRESS , &ipl->qipl,sizeof (QemuIplParameters)); -cpu_physical_memory_unmap (addr, len,1 , len); +physical_memory_unmap (addr, len,1 , len); }int s390_ipl_prepare_pv_header (struct S390PVResponse *pv_resp,Error **errp)
@@ -738,7 +739,7 @@ int s390_ipl_prepare_pv_header(struct S390PVResponse *pv_resp, Error **errp)void *hdr =g_malloc (ipib_pv->pv_header_len);int rc; -cpu_physical_memory_read (ipib_pv->pv_header_addr, hdr, +physical_memory_read (ipib_pv->pv_header_addr, hdr, ipib_pv->pv_header_len); rc =s390_pv_set_sec_parms ((uintptr_t )hdr, ipib_pv->pv_header_len, pv_resp, errp);
hw/s390x/s390-pci-bus.c +3 -2
@@ -28,6 +28,7 @@#include "exec/cpu-common.h" #include "qemu/error-report.h" #include "qemu/module.h" +#include "system/physmem.h" #include "system/reset.h" #include "system/runstate.h"
@@ -668,7 +669,7 @@ static bool set_ind_bit_atomic(uint64_t ind_loc, uint8_t to_be_set)/* avoid multiple fetches */ uint8_t volatile *ind_addr; - ind_addr =cpu_physical_memory_map (ind_loc, &len, true); + ind_addr =physical_memory_map (ind_loc, &len, true);if (!ind_addr) {s390_pci_generate_error_event (ERR_EVENT_AIRERR ,0 ,0 ,0 ,0 );return false;
@@ -678,7 +679,7 @@ static bool set_ind_bit_atomic(uint64_t ind_loc, uint8_t to_be_set) expected = actual; actual =qatomic_cmpxchg (ind_addr, expected, expected | to_be_set); }while (actual != expected); -cpu_physical_memory_unmap ((void *)ind_addr, len,1 , len); +physical_memory_unmap ((void *)ind_addr, len,1 , len);return (actual & to_be_set) ? false : true; }
hw/s390x/virtio-ccw.c +3 -2
@@ -14,6 +14,7 @@#include "qapi/error.h" #include "system/address-spaces.h" #include "system/kvm.h" +#include "system/physmem.h" #include "net/net.h" #include "hw/virtio/virtio.h" #include "migration/qemu-file-types.h"
@@ -834,7 +835,7 @@ static uint8_t virtio_set_ind_atomic(SubchDev *sch, uint64_t ind_loc,/* avoid multiple fetches */ uint8_t volatile *ind_addr; - ind_addr =cpu_physical_memory_map (ind_loc, &len, true); + ind_addr =physical_memory_map (ind_loc, &len, true);if (!ind_addr) {error_report ("%s(%x.%x.%04x): unable to access indicator" , __func__, sch->cssid, sch->ssid, sch->schid);
@@ -846,7 +847,7 @@ static uint8_t virtio_set_ind_atomic(SubchDev *sch, uint64_t ind_loc, actual =qatomic_cmpxchg (ind_addr, expected, expected | to_be_set); }while (actual != expected);trace_virtio_ccw_set_ind (ind_loc, actual, actual | to_be_set); -cpu_physical_memory_unmap ((void *)ind_addr, len,1 , len); +physical_memory_unmap ((void *)ind_addr, len,1 , len);return actual; }
hw/scsi/vmw_pvscsi.c +6 -6
@@ -34,7 +34,7 @@#include "scsi/constants.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" -#include "exec/cpu-common.h" +#include "system/physmem.h" #include "vmw_pvscsi.h" #include "trace.h" #include "qom/object.h"
@@ -395,7 +395,7 @@ pvscsi_cmp_ring_put(PVSCSIState *s, struct PVSCSIRingCmpDesc *cmp_desc) cmp_descr_pa =pvscsi_ring_pop_cmp_descr (&s->rings);trace_pvscsi_cmp_ring_put (cmp_descr_pa); -cpu_physical_memory_write (cmp_descr_pa, cmp_desc,sizeof (*cmp_desc)); +physical_memory_write (cmp_descr_pa, cmp_desc,sizeof (*cmp_desc)); } static void
@@ -405,7 +405,7 @@ pvscsi_msg_ring_put(PVSCSIState *s, struct PVSCSIRingMsgDesc *msg_desc) msg_descr_pa =pvscsi_ring_pop_msg_descr (&s->rings);trace_pvscsi_msg_ring_put (msg_descr_pa); -cpu_physical_memory_write (msg_descr_pa, msg_desc,sizeof (*msg_desc)); +physical_memory_write (msg_descr_pa, msg_desc,sizeof (*msg_desc)); } static void
@@ -480,7 +480,7 @@ pvscsi_get_next_sg_elem(PVSCSISGState *sg) {struct PVSCSISGElement elem; -cpu_physical_memory_read (sg->elemAddr, &elem,sizeof (elem)); +physical_memory_read (sg->elemAddr, &elem,sizeof (elem));if ((elem.flags & ~PVSCSI_KNOWN_FLAGS ) !=0 ) {/* * There is PVSCSI_SGE_FLAG_CHAIN_ELEMENT flag described in
@@ -501,7 +501,7 @@ pvscsi_write_sense(PVSCSIRequest *r, uint8_t *sense, int len) { r->cmp.senseLen =MIN (r->req.senseLen, len); r->sense_key = sense[(sense[0 ] &2 ) ?1 :2 ]; -cpu_physical_memory_write (r->req.senseAddr, sense, r->cmp.senseLen); +physical_memory_write (r->req.senseAddr, sense, r->cmp.senseLen); } static void
@@ -758,7 +758,7 @@ pvscsi_process_io(PVSCSIState *s)smp_rmb ();trace_pvscsi_process_io (next_descr_pa); -cpu_physical_memory_read (next_descr_pa, &descr,sizeof (descr)); +physical_memory_read (next_descr_pa, &descr,sizeof (descr));pvscsi_process_request_descriptor (s, &descr); }
hw/xen/xen_pt_graphics.c +2 -2
@@ -5,8 +5,8 @@#include "qapi/error.h" #include "hw/xen/xen_pt.h" #include "hw/xen/xen_igd.h" -#include "exec/cpu-common.h" #include "xen-host-pci-device.h" +#include "system/physmem.h" static unsigned long igd_guest_opregion;static unsigned long igd_host_opregion;
@@ -223,7 +223,7 @@ void xen_pt_setup_vga(XenPCIPassthroughState *s, XenHostPCIDevice *dev, }/* Currently we fixed this address as a primary for legacy BIOS. */ -cpu_physical_memory_write (0xc0000 , bios, bios_size); +physical_memory_write (0xc0000 , bios, bios_size); }uint32_t igd_read_opregion (XenPCIPassthroughState *s)
hw/xtensa/xtfpga.c +3 -2
@@ -35,6 +35,7 @@#include "hw/core/qdev-properties.h" #include "elf.h" #include "system/memory.h" +#include "system/physmem.h" #include "exec/tswap.h" #include "hw/char/serial-mm.h" #include "net/net.h"
@@ -370,7 +371,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)exit (EXIT_FAILURE ); } -cpu_physical_memory_write (cur_lowmem, fdt, fdt_size); +physical_memory_write (cur_lowmem, fdt, fdt_size); cur_tagptr =put_tag (cur_tagptr,BP_TAG_FDT ,sizeof (dtb_addr), &dtb_addr); cur_lowmem =QEMU_ALIGN_UP (cur_lowmem + fdt_size,4 * KiB);
@@ -449,7 +450,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)memcpy (boot +4 , &entry_pc,sizeof (entry_pc));memcpy (boot +8 , &entry_a2,sizeof (entry_a2)); -cpu_physical_memory_write (env->pc, boot, boot_sz); +physical_memory_write (env->pc, boot, boot_sz); } }else {if (flash) {
system/cpus.c +2 -1
@@ -40,6 +40,7 @@#include "system/cpus.h" #include "qemu/guest-random.h" #include "hw/core/nmi.h" +#include "system/physmem.h" #include "system/replay.h" #include "system/runstate.h" #include "system/cpu-timers.h"
@@ -898,7 +899,7 @@ void qmp_pmemsave(uint64_t addr, uint64_t size, const char *filename, l =sizeof (buf);if (l > size) l = size; -cpu_physical_memory_read (addr, buf, l); +physical_memory_read (addr, buf, l);if (fwrite (buf,1 , l, f) != l) {error_setg (errp,"writing memory to '%s' failed" , filename);
system/physmem.c +5 -7
@@ -3477,13 +3477,13 @@ MemTxResult address_space_set(const AddressSpace *as, hwaddr addr,return error; } -void cpu_physical_memory_read (hwaddr addr,void *buf,hwaddr len) +void physical_memory_read (hwaddr addr,void *buf,hwaddr len) {address_space_read (&address_space_memory, addr,MEMTXATTRS_UNSPECIFIED , buf, len); } -void cpu_physical_memory_write (hwaddr addr,const void *buf,hwaddr len) +void physical_memory_write (hwaddr addr,const void *buf,hwaddr len) {address_space_write (&address_space_memory, addr,MEMTXATTRS_UNSPECIFIED , buf, len);
@@ -3808,16 +3808,14 @@ void address_space_unmap(AddressSpace *as, void *buffer, hwaddr len,address_space_notify_map_clients (as); } -void *cpu_physical_memory_map (hwaddr addr, -hwaddr *plen, -bool is_write) +void *physical_memory_map (hwaddr addr,hwaddr *plen,bool is_write) {return address_space_map (&address_space_memory, addr, plen, is_write,MEMTXATTRS_UNSPECIFIED ); } -void cpu_physical_memory_unmap (void *buffer,hwaddr len, -bool is_write,hwaddr access_len) +void physical_memory_unmap (void *buffer,hwaddr len, +bool is_write,hwaddr access_len) {return address_space_unmap (&address_space_memory, buffer, len, is_write, access_len); }
Signature · 1 line
2.53.0
[PULL 46/48] accel/tcg: Have cpu_loop_exit_requested() take const @cpu argument
In reply to Philippe Mathieu-DaudéSince the CPUState argument is simply read-only accessed, make it const.
Message-Id: <[email protected]>
--- include/exec/cpu-common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/exec/cpu-common.h +1 -1
@@ -73,7 +73,7 @@ void list_cpus(void);* call can be used to check if it makes sense to return to the main loop * or to continue executing the interruptible instruction. */ -static inline bool cpu_loop_exit_requested (CPUState *cpu) +static inline bool cpu_loop_exit_requested (const CPUState *cpu) {return (int32_t )qatomic_read (&cpu->neg.icount_decr.u32) <0 ; }
Signature · 1 line
2.53.0
[PULL 09/48] accel/kvm: Replace legacy cpu_physical_memory_write() call
In reply to Philippe Mathieu-Daudécpu_physical_memory_write() is legacy (see commit b7ecba0f6f6), replace it by address_space_write(). Both if() ladders only differ in the address space argument: rework to have a single address_space_write() call. No logical change intended.
Message-Id: <[email protected]>
--- accel/kvm/kvm-all.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
accel/kvm/kvm-all.c +4 -8
@@ -3178,16 +3178,12 @@ void kvm_flush_coalesced_mmio_buffer(void)struct kvm_coalesced_mmio_ring *ring = s->coalesced_mmio_ring;while (ring->first != ring->last) {struct kvm_coalesced_mmio *ent; +const AddressSpace *as; ent = &ring->coalesced_mmio[ring->first]; - -if (ent->pio ==1 ) { -address_space_write (&address_space_io, ent->phys_addr, -MEMTXATTRS_UNSPECIFIED , ent->data, - ent->len); - }else { -cpu_physical_memory_write (ent->phys_addr, ent->data, ent->len); - } + as = ent->pio ==1 ? &address_space_io : &address_space_memory; +address_space_write (as, ent->phys_addr,MEMTXATTRS_UNSPECIFIED , + ent->data, ent->len);smp_wmb (); ring->first = (ring->first +1 ) %KVM_COALESCED_MMIO_MAX ; }
Signature · 1 line
2.53.0
[PULL 43/48] accel/tcg: Move cpu_exec_step_atomic() out of 'exec/cpu-common.h'
In reply to Philippe Mathieu-DaudéMove the TCG-specific cpu_exec_step_atomic() declaration out of the generic "exec/cpu-common.h" header, to the recently created "accel/tcg/cpu-loop.h" one.
Include "accel/tcg/cpu-loop.h" where appropriate.
Message-Id: <[email protected]>
--- include/accel/tcg/cpu-loop.h | 2 ++ include/exec/cpu-common.h | 2 -- accel/tcg/tcg-accel-ops-mttcg.c | 1 + accel/tcg/tcg-accel-ops-rr.c | 1 + 4 files changed, 4 insertions(+), 2 deletions(-)
include/accel/tcg/cpu-loop.h +2 -0
@@ -18,4 +18,6 @@*/ int cpu_exec (CPUState *cpu); +void cpu_exec_step_atomic (CPUState *cpu); +#endif
include/exec/cpu-common.h +0 -2
@@ -18,8 +18,6 @@#define EXCP_YIELD 0x10004/* cpu wants to yield timeslice to another */ #define EXCP_ATOMIC 0x10005/* stop-the-world and emulate atomic */ -void cpu_exec_step_atomic (CPUState *cpu); -#define REAL_HOST_PAGE_ALIGN (addr) ROUND_UP((addr), qemu_real_host_page_size())/* The CPU list lock nests outside page_(un)lock or mmap_(un)lock */
accel/tcg/tcg-accel-ops-mttcg.c +1 -0
@@ -32,6 +32,7 @@#include "qemu/notify.h" #include "qemu/guest-random.h" #include "hw/core/boards.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/startup.h" #include "tcg-accel-ops.h" #include "tcg-accel-ops-mttcg.h"
accel/tcg/tcg-accel-ops-rr.c +1 -0
@@ -32,6 +32,7 @@#include "qemu/notify.h" #include "qemu/guest-random.h" #include "exec/cpu-common.h" +#include "accel/tcg/cpu-loop.h" #include "tcg/startup.h" #include "tcg-accel-ops.h" #include "tcg-accel-ops-rr.h"
Signature · 1 line
2.53.0
[PULL 48/48] accel/tcg: Restrict headers being TCG specific
In reply to Philippe Mathieu-DaudéForbid including TCG-specific headers in non-TCG builds.
Message-Id: <[email protected]>
--- include/accel/tcg/cpu-mmu-index.h | 4 ++++ include/accel/tcg/cpu-ops.h | 4 ++++ include/accel/tcg/getpc.h | 4 ++++ include/accel/tcg/helper-retaddr.h | 4 ++++ include/accel/tcg/probe.h | 4 ++++ include/accel/tcg/tb-cpu-state.h | 4 ++++ 6 files changed, 24 insertions(+)
include/accel/tcg/cpu-mmu-index.h +4 -0
@@ -9,6 +9,10 @@#ifndef ACCEL_TCG_CPU_MMU_INDEX_H #define ACCEL_TCG_CPU_MMU_INDEX_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +#include "hw/core/cpu.h" #include "accel/tcg/cpu-ops.h" #include "tcg/debug-assert.h"
include/accel/tcg/cpu-ops.h +4 -0
@@ -10,6 +10,10 @@#ifndef TCG_CPU_OPS_H #define TCG_CPU_OPS_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +#include "exec/breakpoint.h" #include "exec/hwaddr.h" #include "exec/memattrs.h"
include/accel/tcg/getpc.h +4 -0
@@ -8,6 +8,10 @@#ifndef ACCEL_TCG_GETPC_H #define ACCEL_TCG_GETPC_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +/* GETPC is the true target of the return instruction that we'll execute. */ #ifdef CONFIG_TCG_INTERPRETER extern __threaduintptr_t tci_tb_ptr;
include/accel/tcg/helper-retaddr.h +4 -0
@@ -6,6 +6,10 @@#ifndef ACCEL_TCG_HELPER_RETADDR_H #define ACCEL_TCG_HELPER_RETADDR_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +/* * For user-only, helpers that use guest to host address translation * must protect the actual host memory access by recording 'retaddr'
include/accel/tcg/probe.h +4 -0
@@ -7,6 +7,10 @@#ifndef ACCEL_TCG_PROBE_H #define ACCEL_TCG_PROBE_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif +#include "exec/mmu-access-type.h" #include "exec/vaddr.h"
include/accel/tcg/tb-cpu-state.h +4 -0
@@ -6,6 +6,10 @@ #ifndef EXEC_TB_CPU_STATE_H #define EXEC_TB_CPU_STATE_H +#ifndef CONFIG_TCG +#error Can only include this header with TCG +#endif + #include "exec/vaddr.h" typedef struct TCGTBCPUState {
Signature · 1 line
2.53.0
[PULL 08/48] system: Document cpu_physical_memory_*() declarations
In reply to Philippe Mathieu-DaudéDocument the following methods use the global address space and discard success/failure access information:
- cpu_physical_memory_read()
- cpu_physical_memory_write()
- cpu_physical_memory_map()
- cpu_physical_memory_unmap()
Message-Id: <[email protected]>
--- docs/devel/loads-stores.rst | 10 +++++---- include/exec/cpu-common.h | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 4 deletions(-)
docs/devel/loads-stores.rst +6 -4
@@ -443,15 +443,17 @@ Regexes for git grep: ~~~~~~~~~~~~~~~~~~~~~~~~~ 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: +``address_space_*`` but operate specifically on the legacy global +``&address_space_memory`` address space (which might not be used by all +machines), always pass a ``MEMTXATTRS_UNSPECIFIED`` set of memory attributes +and ignore whether the memory transaction succeeded or failed. Expected +users are hardware device models. For new code they are better avoided: * there is likely to be behaviour you need to model correctly for a failed read or write operation * a device should usually perform operations on its own AddressSpace rather than using the system address space +* some machines do not use this global address space at all ``cpu_physical_memory_read``
include/exec/cpu-common.h +41 -0
52 lines not on this page · raw message
Signature · 1 line
2.53.0
Stefan Hajnoczi
AppliedApplied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/11.1 for any user-visible changes.