From 6da9447929a88c05bc82a6ead0c967ce1e1e838c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:25:08 +0200 Subject: [PATCH 01/25] target/i386/hvf: Remove unused includes in 'hvf-i386.h' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The only non standard type -- CPUArchState -- is forward declared in "qemu/typedefs.h", so no particular header is required here. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Roman Bolshakov Tested-by: Roman Bolshakov Message-ID: <20231004092510.39498-2-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- target/i386/hvf/hvf-i386.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/target/i386/hvf/hvf-i386.h b/target/i386/hvf/hvf-i386.h index 95b47c1c2e..243bc111cc 100644 --- a/target/i386/hvf/hvf-i386.h +++ b/target/i386/hvf/hvf-i386.h @@ -16,12 +16,6 @@ #ifndef HVF_I386_H #define HVF_I386_H -#include "qemu/accel.h" -#include "sysemu/hvf.h" -#include "sysemu/hvf_int.h" -#include "cpu.h" -#include "x86.h" - void hvf_handle_io(CPUArchState *, uint16_t, void *, int, int, int); /* Host specific functions */ From 044431cfe7a9325cc5c22b5feb5a6116d0264e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:25:09 +0200 Subject: [PATCH 02/25] sysemu/kvm: Restrict hvf_get_supported_cpuid() to x86 targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hvf_get_supported_cpuid() is only defined for x86 targets (in target/i386/hvf/x86_cpuid.c). Its declaration is pointless on all other targets. All the calls to it in target/i386/cpu.c are guarded by a call on hvf_enabled(), so are elided when HVF is not built in. Therefore we can remove the unnecessary function stub. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004092510.39498-3-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- include/sysemu/hvf.h | 3 --- target/i386/cpu.c | 1 + target/i386/hvf/hvf-cpu.c | 1 + target/i386/hvf/hvf-i386.h | 2 ++ target/i386/hvf/x86_cpuid.c | 1 + 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/sysemu/hvf.h b/include/sysemu/hvf.h index 4037cd6a73..4a7c6af3a5 100644 --- a/include/sysemu/hvf.h +++ b/include/sysemu/hvf.h @@ -20,13 +20,10 @@ #include "cpu.h" #ifdef CONFIG_HVF -uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx, - int reg); extern bool hvf_allowed; #define hvf_enabled() (hvf_allowed) #else /* !CONFIG_HVF */ #define hvf_enabled() 0 -#define hvf_get_supported_cpuid(func, idx, reg) 0 #endif /* !CONFIG_HVF */ #endif /* NEED_CPU_H */ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 9fad31b8db..ac0ae502f5 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -26,6 +26,7 @@ #include "tcg/helper-tcg.h" #include "sysemu/reset.h" #include "sysemu/hvf.h" +#include "hvf/hvf-i386.h" #include "kvm/kvm_i386.h" #include "sev.h" #include "qapi/error.h" diff --git a/target/i386/hvf/hvf-cpu.c b/target/i386/hvf/hvf-cpu.c index bb0da3947a..ac617f17e7 100644 --- a/target/i386/hvf/hvf-cpu.c +++ b/target/i386/hvf/hvf-cpu.c @@ -15,6 +15,7 @@ #include "hw/boards.h" #include "sysemu/hvf.h" #include "hw/core/accel-cpu.h" +#include "hvf-i386.h" static void hvf_cpu_max_instance_init(X86CPU *cpu) { diff --git a/target/i386/hvf/hvf-i386.h b/target/i386/hvf/hvf-i386.h index 243bc111cc..e99c02cd4b 100644 --- a/target/i386/hvf/hvf-i386.h +++ b/target/i386/hvf/hvf-i386.h @@ -16,6 +16,8 @@ #ifndef HVF_I386_H #define HVF_I386_H +uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx, int reg); + void hvf_handle_io(CPUArchState *, uint16_t, void *, int, int, int); /* Host specific functions */ diff --git a/target/i386/hvf/x86_cpuid.c b/target/i386/hvf/x86_cpuid.c index 7323a7a94b..9380b90496 100644 --- a/target/i386/hvf/x86_cpuid.c +++ b/target/i386/hvf/x86_cpuid.c @@ -25,6 +25,7 @@ #include "x86.h" #include "vmx.h" #include "sysemu/hvf.h" +#include "hvf-i386.h" static bool xgetbv(uint32_t cpuid_ecx, uint32_t idx, uint64_t *xcr) { From f05142d511e86d8e97967d21f205d990dfc634de Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Wed, 4 Oct 2023 14:44:46 +0200 Subject: [PATCH 03/25] util/log: re-allow switching away from stderr log file Commit 59bde21374 ("util/log: do not close and reopen log files when flags are turned off") prevented switching away from stderr on a subsequent invocation of qemu_set_log_internal(). This prevented switching away from stderr with the 'logfile' monitor command as well as an invocation like > ./qemu-system-x86_64 -trace 'qemu_mutex_lock,file=log' from opening the specified log file. Fixes: 59bde21374 ("util/log: do not close and reopen log files when flags are turned off") Signed-off-by: Fiona Ebner Message-ID: <20231004124446.491481-1-f.ebner@proxmox.com> Signed-off-by: Paolo Bonzini --- util/log.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/log.c b/util/log.c index def88a9402..d36c98da0b 100644 --- a/util/log.c +++ b/util/log.c @@ -298,6 +298,8 @@ static bool qemu_set_log_internal(const char *filename, bool changed_name, r->fd = logfile; qatomic_rcu_set(&global_file, NULL); call_rcu(r, rcu_close_file, rcu); + } + if (changed_name) { logfile = NULL; } } From 1da389c5dba3efca5de6b983cf788054880de432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 10:22:39 +0200 Subject: [PATCH 04/25] target/i386: Check for USER_ONLY definition instead of SOFTMMU one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since we *might* have user emulation with softmmu, replace the system emulation check by !user emulation one. (target/ was cleaned from invalid CONFIG_SOFTMMU uses at commit cab35c73be, but these files were merged few days after, thus missed the cleanup.) Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004082239.27251-1-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 2 +- target/i386/tcg/misc_helper.c | 2 +- target/i386/tcg/translate.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index ac0ae502f5..cec5d2b7b6 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -719,7 +719,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1, CPUID_7_0_EBX_HLE CPUID_7_0_EBX_INVPCID, CPUID_7_0_EBX_RTM */ -#if defined CONFIG_SOFTMMU || defined CONFIG_LINUX +#if !defined CONFIG_USER_ONLY || defined CONFIG_LINUX #define TCG_7_0_ECX_RDPID CPUID_7_0_ECX_RDPID #else #define TCG_7_0_ECX_RDPID 0 diff --git a/target/i386/tcg/misc_helper.c b/target/i386/tcg/misc_helper.c index 868f36ab7f..babff06186 100644 --- a/target/i386/tcg/misc_helper.c +++ b/target/i386/tcg/misc_helper.c @@ -134,7 +134,7 @@ void helper_wrpkru(CPUX86State *env, uint32_t ecx, uint64_t val) target_ulong HELPER(rdpid)(CPUX86State *env) { -#if defined CONFIG_SOFTMMU +#if !defined CONFIG_USER_ONLY return env->tsc_aux; #elif defined CONFIG_LINUX && defined CONFIG_GETCPU unsigned cpu, node; diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4f1287311d..d2061ec44a 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -178,10 +178,10 @@ typedef struct DisasContext { #else #define CODE64(S) (((S)->flags & HF_CS64_MASK) != 0) #endif -#if defined(CONFIG_SOFTMMU) && !defined(TARGET_X86_64) -#define LMA(S) false -#else +#if defined(CONFIG_USER_ONLY) || defined(TARGET_X86_64) #define LMA(S) (((S)->flags & HF_LMA_MASK) != 0) +#else +#define LMA(S) false #endif #ifdef TARGET_X86_64 From fc78f56e2546bcf354193d9a380618067c15264b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:16 +0200 Subject: [PATCH 05/25] softmmu/trace-events: Fix a typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 8af3f5c6d6 ("softmmu: add trace point when bdrv_flush_all fails") added calls to trace_vm_stop_flush_all() in 'cpus.c'. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-2-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- softmmu/trace-events | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/softmmu/trace-events b/softmmu/trace-events index 22606dc27b..69c9044151 100644 --- a/softmmu/trace-events +++ b/softmmu/trace-events @@ -21,7 +21,7 @@ flatview_destroy(void *view, void *root) "%p (root %p)" flatview_destroy_rcu(void *view, void *root) "%p (root %p)" global_dirty_changed(unsigned int bitmask) "bitmask 0x%"PRIx32 -# softmmu.c +# cpus.c vm_stop_flush_all(int ret) "ret %d" # vl.c From 27703590316efc1be5ff1ad8f209d9c5e2f8304b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:17 +0200 Subject: [PATCH 06/25] travis-ci: Correct invalid mentions of 'softmmu' by 'system' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-3-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b958eca5de..76859d48da 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,7 @@ env: - BASE_CONFIG="--disable-docs --disable-tools" - TEST_BUILD_CMD="" - TEST_CMD="make check V=1" - # This is broadly a list of "mainline" softmmu targets which have support across the major distros + # This is broadly a list of "mainline" system targets which have support across the major distros - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime" - CCACHE_MAXSIZE=1G @@ -197,7 +197,7 @@ jobs: $(exit $BUILD_RC); fi - - name: "[s390x] GCC (other-softmmu)" + - name: "[s390x] GCC (other-system)" arch: s390x dist: focal addons: From 54b99122eb01eb78e2933da4c476d166e846d572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:18 +0200 Subject: [PATCH 07/25] cpu: Correct invalid mentions of 'softmmu' by 'system-mode' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-4-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- cpu-target.c | 2 +- hw/core/cpu-common.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cpu-target.c b/cpu-target.c index 658d179582..79363ae370 100644 --- a/cpu-target.c +++ b/cpu-target.c @@ -202,7 +202,7 @@ static Property cpu_common_props[] = { prctl_unalign_sigbus, false), #else /* - * Create a memory property for softmmu CPU object, so users can + * Create a memory property for system CPU object, so users can * wire up its memory. The default if no link is set up is to use * the system address space. */ diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 4d406995ab..bab8942c30 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -228,8 +228,8 @@ static void cpu_common_initfn(Object *obj) cpu->cpu_index = UNASSIGNED_CPU_INDEX; cpu->cluster_index = UNASSIGNED_CLUSTER_INDEX; cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs; - /* *-user doesn't have configurable SMP topology */ - /* the default value is changed by qemu_init_vcpu() for softmmu */ + /* user-mode doesn't have configurable SMP topology */ + /* the default value is changed by qemu_init_vcpu() for system-mode */ cpu->nr_cores = 1; cpu->nr_threads = 1; cpu->cflags_next_tb = -1; From c2646d49588d834c2bcc050539053074ac43d4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:19 +0200 Subject: [PATCH 08/25] fuzz: Correct invalid mentions of 'softmmu' by 'system' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alexander Bulekov Message-ID: <20231004090629.37473-5-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- softmmu/memory.c | 2 +- tests/qtest/fuzz/fuzz.c | 2 +- tests/qtest/fuzz/fuzz.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/softmmu/memory.c b/softmmu/memory.c index 234bd7b116..fa1c99f9ba 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -3638,7 +3638,7 @@ void memory_region_init_rom_device(MemoryRegion *mr, } /* - * Support softmmu builds with CONFIG_FUZZ using a weak symbol and a stub for + * Support system builds with CONFIG_FUZZ using a weak symbol and a stub for * the fuzz_dma_read_cb callback */ #ifdef CONFIG_FUZZ diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c index 3bedb81b32..9b9c9f9c36 100644 --- a/tests/qtest/fuzz/fuzz.c +++ b/tests/qtest/fuzz/fuzz.c @@ -207,7 +207,7 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char ***envp) fuzz_target->pre_vm_init(); } - /* Run QEMU's softmmu main with the fuzz-target dependent arguments */ + /* Run QEMU's system main with the fuzz-target dependent arguments */ cmd_line = fuzz_target->get_init_cmdline(fuzz_target); g_string_append_printf(cmd_line, " %s -qtest /dev/null ", getenv("QTEST_LOG") ? "" : "-qtest-log none"); diff --git a/tests/qtest/fuzz/fuzz.h b/tests/qtest/fuzz/fuzz.h index 21d1362d65..7da0bc3d7e 100644 --- a/tests/qtest/fuzz/fuzz.h +++ b/tests/qtest/fuzz/fuzz.h @@ -49,13 +49,13 @@ typedef struct FuzzTarget { /* - * Returns the arguments that are passed to qemu/softmmu init(). Freed by + * Returns the arguments that are passed to qemu/system init(). Freed by * the caller. */ GString *(*get_init_cmdline)(struct FuzzTarget *); /* - * will run once, prior to running qemu/softmmu init. + * will run once, prior to running qemu/system init. * eg: set up shared-memory for communication with the child-process * Can be NULL */ From 7893e42d5d9cafeeab30a114e8ec86517f8a1b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:20 +0200 Subject: [PATCH 09/25] tcg: Correct invalid mentions of 'softmmu' by 'system-mode' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-6-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- accel/tcg/user-exec.c | 2 +- docs/devel/testing.rst | 2 +- include/qemu/atomic128.h | 4 ++-- include/tcg/tcg-op-common.h | 2 +- target/riscv/vector_helper.c | 2 +- tcg/aarch64/tcg-target.c.inc | 4 ++-- tcg/arm/tcg-target.c.inc | 2 +- tcg/i386/tcg-target.c.inc | 2 +- tcg/loongarch64/tcg-target.c.inc | 4 ++-- tcg/meson.build | 6 +++--- tcg/mips/tcg-target.c.inc | 4 ++-- tcg/ppc/tcg-target.c.inc | 4 ++-- tcg/region.c | 4 ++-- tcg/riscv/tcg-target.c.inc | 4 ++-- tcg/s390x/tcg-target.c.inc | 4 ++-- tcg/sparc64/tcg-target.c.inc | 4 ++-- tcg/tcg.c | 11 ++++++----- tests/tcg/Makefile.target | 2 +- tests/tcg/multiarch/gdbstub/interrupt.py | 2 +- tests/tcg/multiarch/gdbstub/memory.py | 2 +- tests/tcg/multiarch/system/memory.c | 4 ++-- tests/tcg/s390x/pgm-specification-softmmu.S | 2 +- tests/tcg/s390x/pgm-specification.mak | 2 +- tests/tcg/s390x/softmmu.ld | 2 +- tests/tcg/xtensa/Makefile.softmmu-target | 2 +- tests/tcg/xtensaeb/Makefile.softmmu-target | 2 +- 26 files changed, 43 insertions(+), 42 deletions(-) diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 5bf2761bf4..68b252cb8e 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -940,7 +940,7 @@ void *page_get_target_data(target_ulong address) void page_reset_target_data(target_ulong start, target_ulong last) { } #endif /* TARGET_PAGE_DATA_SIZE */ -/* The softmmu versions of these helpers are in cputlb.c. */ +/* The system-mode versions of these helpers are in cputlb.c. */ static void *cpu_mmu_lookup(CPUState *cpu, vaddr addr, MemOp mop, uintptr_t ra, MMUAccessType type) diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst index 5d1fc0aa95..f3e2472189 100644 --- a/docs/devel/testing.rst +++ b/docs/devel/testing.rst @@ -1458,7 +1458,7 @@ TCG test dependencies ~~~~~~~~~~~~~~~~~~~~~ The TCG tests are deliberately very light on dependencies and are -either totally bare with minimal gcc lib support (for softmmu tests) +either totally bare with minimal gcc lib support (for system-mode tests) or just glibc (for linux-user tests). This is because getting a cross compiler to work with additional libraries can be challenging. diff --git a/include/qemu/atomic128.h b/include/qemu/atomic128.h index 34554bf0ac..88af6d4ea3 100644 --- a/include/qemu/atomic128.h +++ b/include/qemu/atomic128.h @@ -43,8 +43,8 @@ * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80878 * * This interpretation is not especially helpful for QEMU. - * For softmmu, all RAM is always read/write from the hypervisor. - * For user-only, if the guest doesn't implement such an __atomic_read + * For system-mode, all RAM is always read/write from the hypervisor. + * For user-mode, if the guest doesn't implement such an __atomic_read * then the host need not worry about it either. * * Moreover, using libatomic is not an option, because its interface is diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index a53b15933b..2048f92b5e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -265,7 +265,7 @@ void tcg_gen_exit_tb(const TranslationBlock *tb, unsigned idx); * * See tcg/README for more info about this TCG operation. * - * NOTE: In softmmu emulation, direct jumps with goto_tb are only safe within + * NOTE: In system emulation, direct jumps with goto_tb are only safe within * the pages this TB resides in because we don't take care of direct jumps when * address mapping changes, e.g. in tlb_flush(). In user mode, there's only a * static address translation, so the destination address is always valid, TBs diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index cba02c1320..c9b39fb67f 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -100,7 +100,7 @@ static inline target_ulong adjust_addr(CPURISCVState *env, target_ulong addr) /* * This function checks watchpoint before real load operation. * - * In softmmu mode, the TLB API probe_access is enough for watchpoint check. + * In system mode, the TLB API probe_access is enough for watchpoint check. * In user mode, there is no watchpoint support now. * * It will trigger an exception if there is no mapping in TLB diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 69f2daf2c2..3afb896a3a 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -1643,8 +1643,8 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *lb) #define MIN_TLB_MASK_TABLE_OFS -512 /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc index a2f60106af..0d9c2d157b 100644 --- a/tcg/arm/tcg-target.c.inc +++ b/tcg/arm/tcg-target.c.inc @@ -353,7 +353,7 @@ static bool patch_reloc(tcg_insn_unit *code_ptr, int type, #define ALL_VECTOR_REGS 0xffff0000u /* - * r0-r3 will be overwritten when reading the tlb entry (softmmu only); + * r0-r3 will be overwritten when reading the tlb entry (system-mode only); * r14 will be overwritten by the BLNE branching to the slow path. */ #ifdef CONFIG_SOFTMMU diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 4e47151241..788d608150 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -2276,7 +2276,7 @@ static void tcg_out_qemu_st_direct(TCGContext *s, TCGReg datalo, TCGReg datahi, int movop = OPC_MOVL_EvGv; /* - * Do big-endian stores with movbe or softmmu. + * Do big-endian stores with movbe or system-mode. * User-only without movbe will have its swapping done generically. */ if (memop & MO_BSWAP) { diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc index 8f7091002b..801302d85d 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -891,8 +891,8 @@ bool tcg_target_has_memory_bswap(MemOp memop) #define MIN_TLB_MASK_TABLE_OFS -(1 << 11) /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/meson.build b/tcg/meson.build index 4be4a616ca..895a11d3fa 100644 --- a/tcg/meson.build +++ b/tcg/meson.build @@ -34,12 +34,12 @@ tcg_user = declare_dependency(link_with: libtcg_user, dependencies: tcg_ss.dependencies()) user_ss.add(tcg_user) -libtcg_softmmu = static_library('tcg_softmmu', +libtcg_system = static_library('tcg_system', tcg_ss.sources() + genh, name_suffix: 'fa', c_args: '-DCONFIG_SOFTMMU', build_by_default: false) -tcg_softmmu = declare_dependency(link_with: libtcg_softmmu, +tcg_system = declare_dependency(link_with: libtcg_system, dependencies: tcg_ss.dependencies()) -system_ss.add(tcg_softmmu) +system_ss.add(tcg_system) diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc index f52bda4828..e2892edc6a 100644 --- a/tcg/mips/tcg-target.c.inc +++ b/tcg/mips/tcg-target.c.inc @@ -1258,8 +1258,8 @@ bool tcg_target_has_memory_bswap(MemOp memop) #define MIN_TLB_MASK_TABLE_OFS -32768 /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc index 90d76c2c2c..5c873b2161 100644 --- a/tcg/ppc/tcg-target.c.inc +++ b/tcg/ppc/tcg-target.c.inc @@ -2091,8 +2091,8 @@ bool tcg_target_has_memory_bswap(MemOp memop) #define MIN_TLB_MASK_TABLE_OFS -32768 /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/region.c b/tcg/region.c index a078899096..86692455c0 100644 --- a/tcg/region.c +++ b/tcg/region.c @@ -733,7 +733,7 @@ static int alloc_code_gen_buffer(size_t size, int splitwx, Error **errp) * and then assigning regions to TCG threads so that the threads can translate * code in parallel without synchronization. * - * In softmmu the number of TCG threads is bounded by max_cpus, so we use at + * In system-mode the number of TCG threads is bounded by max_cpus, so we use at * least max_cpus regions in MTTCG. In !MTTCG we use a single region. * Note that the TCG options from the command-line (i.e. -accel accel=tcg,[...]) * must have been parsed before calling this function, since it calls @@ -749,7 +749,7 @@ static int alloc_code_gen_buffer(size_t size, int splitwx, Error **errp) * * However, this user-mode limitation is unlikely to be a significant problem * in practice. Multi-threaded guests share most if not all of their translated - * code, which makes parallel code generation less appealing than in softmmu. + * code, which makes parallel code generation less appealing than in system-mode */ void tcg_region_init(size_t tb_size, int splitwx, unsigned max_cpus) { diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc index c2bcdea33f..d6dbcaf3cb 100644 --- a/tcg/riscv/tcg-target.c.inc +++ b/tcg/riscv/tcg-target.c.inc @@ -1227,8 +1227,8 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *l) #define MIN_TLB_MASK_TABLE_OFS -(1 << 11) /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc index 7552f63a05..4ef9ac3d5b 100644 --- a/tcg/s390x/tcg-target.c.inc +++ b/tcg/s390x/tcg-target.c.inc @@ -1750,8 +1750,8 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *lb) #define MIN_TLB_MASK_TABLE_OFS -(1 << 19) /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/sparc64/tcg-target.c.inc b/tcg/sparc64/tcg-target.c.inc index 01ac26c192..19d9df4a09 100644 --- a/tcg/sparc64/tcg-target.c.inc +++ b/tcg/sparc64/tcg-target.c.inc @@ -1033,8 +1033,8 @@ bool tcg_target_has_memory_bswap(MemOp memop) #define MIN_TLB_MASK_TABLE_OFS -(1 << 12) /* - * For softmmu, perform the TLB load and compare. - * For useronly, perform any required alignment tests. + * For system-mode, perform the TLB load and compare. + * For user-mode, perform any required alignment tests. * In both cases, return a TCGLabelQemuLdst structure if the slow path * is required and fill in @h with the host address for the fast path. */ diff --git a/tcg/tcg.c b/tcg/tcg.c index f664cf1484..637b9e6870 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -760,12 +760,13 @@ static void alloc_tcg_plugin_context(TCGContext *s) * In user-mode we just point tcg_ctx to tcg_init_ctx. See the documentation * of tcg_region_init() for the reasoning behind this. * - * In softmmu each caller registers its context in tcg_ctxs[]. Note that in - * softmmu tcg_ctxs[] does not track tcg_ctx_init, since the initial context + * In system-mode each caller registers its context in tcg_ctxs[]. Note that in + * system-mode tcg_ctxs[] does not track tcg_ctx_init, since the initial context * is not used anymore for translation once this function is called. * - * Not tracking tcg_init_ctx in tcg_ctxs[] in softmmu keeps code that iterates - * over the array (e.g. tcg_code_size() the same for both softmmu and user-mode. + * Not tracking tcg_init_ctx in tcg_ctxs[] in system-mode keeps code that + * iterates over the array (e.g. tcg_code_size() the same for both system/user + * modes. */ #ifdef CONFIG_USER_ONLY void tcg_register_thread(void) @@ -1349,7 +1350,7 @@ static void tcg_context_init(unsigned max_cpus) * In user-mode we simply share the init context among threads, since we * use a single region. See the documentation tcg_region_init() for the * reasoning behind this. - * In softmmu we will have at most max_cpus TCG threads. + * In system-mode we will have at most max_cpus TCG threads. */ #ifdef CONFIG_USER_ONLY tcg_ctxs = &tcg_ctx; diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target index 462289f47c..f3a189c9d4 100644 --- a/tests/tcg/Makefile.target +++ b/tests/tcg/Makefile.target @@ -120,7 +120,7 @@ endif %: %.S $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) else -# For softmmu targets we include a different Makefile fragment as the +# For system targets we include a different Makefile fragment as the # build options for bare programs are usually pretty different. They # are expected to provide their own build recipes. EXTRA_CFLAGS += -ffreestanding diff --git a/tests/tcg/multiarch/gdbstub/interrupt.py b/tests/tcg/multiarch/gdbstub/interrupt.py index e222ac94c5..c016e7afbb 100644 --- a/tests/tcg/multiarch/gdbstub/interrupt.py +++ b/tests/tcg/multiarch/gdbstub/interrupt.py @@ -1,6 +1,6 @@ from __future__ import print_function # -# Test some of the softmmu debug features with the multiarch memory +# Test some of the system debug features with the multiarch memory # test. It is a port of the original vmlinux focused test case but # using the "memory" test instead. # diff --git a/tests/tcg/multiarch/gdbstub/memory.py b/tests/tcg/multiarch/gdbstub/memory.py index dd25e72281..fb1d06b7bb 100644 --- a/tests/tcg/multiarch/gdbstub/memory.py +++ b/tests/tcg/multiarch/gdbstub/memory.py @@ -1,6 +1,6 @@ from __future__ import print_function # -# Test some of the softmmu debug features with the multiarch memory +# Test some of the system debug features with the multiarch memory # test. It is a port of the original vmlinux focused test case but # using the "memory" test instead. # diff --git a/tests/tcg/multiarch/system/memory.c b/tests/tcg/multiarch/system/memory.c index e29786ae55..6eb2eb16f7 100644 --- a/tests/tcg/multiarch/system/memory.c +++ b/tests/tcg/multiarch/system/memory.c @@ -1,14 +1,14 @@ /* * Memory Test * - * This is intended to test the softmmu code and ensure we properly + * This is intended to test the system-mode code and ensure we properly * behave across normal and unaligned accesses across several pages. * We are not replicating memory tests for stuck bits and other * hardware level failures but looking for issues with different size * accesses when access is: * * - unaligned at various sizes (if -DCHECK_UNALIGNED set) - * - spanning a (softmmu) page + * - spanning a (system) page * - sign extension when loading */ diff --git a/tests/tcg/s390x/pgm-specification-softmmu.S b/tests/tcg/s390x/pgm-specification-softmmu.S index d534f4e505..86c340aeef 100644 --- a/tests/tcg/s390x/pgm-specification-softmmu.S +++ b/tests/tcg/s390x/pgm-specification-softmmu.S @@ -1,5 +1,5 @@ /* - * Common softmmu code for specification exception testing. + * Common system code for specification exception testing. * * SPDX-License-Identifier: GPL-2.0-or-later */ diff --git a/tests/tcg/s390x/pgm-specification.mak b/tests/tcg/s390x/pgm-specification.mak index 2999aee26e..73dc47af0d 100644 --- a/tests/tcg/s390x/pgm-specification.mak +++ b/tests/tcg/s390x/pgm-specification.mak @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later # List of specification exception tests. -# Shared between the softmmu and the user makefiles. +# Shared between the system and the user makefiles. PGM_SPECIFICATION_TESTS = \ br-odd \ cgrl-unaligned \ diff --git a/tests/tcg/s390x/softmmu.ld b/tests/tcg/s390x/softmmu.ld index ea944eaa3c..c7a8864407 100644 --- a/tests/tcg/s390x/softmmu.ld +++ b/tests/tcg/s390x/softmmu.ld @@ -1,5 +1,5 @@ /* - * Linker script for the softmmu test kernels. + * Linker script for the system test kernels. * * SPDX-License-Identifier: GPL-2.0-or-later */ diff --git a/tests/tcg/xtensa/Makefile.softmmu-target b/tests/tcg/xtensa/Makefile.softmmu-target index 78bf72dfaa..a29571b367 100644 --- a/tests/tcg/xtensa/Makefile.softmmu-target +++ b/tests/tcg/xtensa/Makefile.softmmu-target @@ -1,5 +1,5 @@ # -# Xtensa softmmu tests +# Xtensa system tests # CORE=dc232b diff --git a/tests/tcg/xtensaeb/Makefile.softmmu-target b/tests/tcg/xtensaeb/Makefile.softmmu-target index 4204a96d53..95d0528c37 100644 --- a/tests/tcg/xtensaeb/Makefile.softmmu-target +++ b/tests/tcg/xtensaeb/Makefile.softmmu-target @@ -1,5 +1,5 @@ # -# Xtensa softmmu tests +# Xtensa system tests # include $(SRC_PATH)/tests/tcg/xtensa/Makefile.softmmu-target From 0017c64e1ce298796caee2d38bde9d7fc59a1510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:21 +0200 Subject: [PATCH 10/25] accel: Rename accel_softmmu* -> accel_system* MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename accel.softmmu -> accel.system in file paths and the register_types() method. Rename sysemu_stubs_ss -> system_stubs_ss in meson following the pattern used on other source set names. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-7-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- accel/{accel-softmmu.c => accel-system.c} | 6 +++--- accel/{accel-softmmu.h => accel-system.h} | 6 +++--- accel/accel-target.c | 2 +- accel/meson.build | 2 +- accel/stubs/meson.build | 10 +++++----- 5 files changed, 13 insertions(+), 13 deletions(-) rename accel/{accel-softmmu.c => accel-system.c} (96%) rename accel/{accel-softmmu.h => accel-system.h} (77%) diff --git a/accel/accel-softmmu.c b/accel/accel-system.c similarity index 96% rename from accel/accel-softmmu.c rename to accel/accel-system.c index 9c804ba9e3..fa8f43757c 100644 --- a/accel/accel-softmmu.c +++ b/accel/accel-system.c @@ -28,7 +28,7 @@ #include "hw/boards.h" #include "sysemu/cpus.h" #include "qemu/error-report.h" -#include "accel-softmmu.h" +#include "accel-system.h" int accel_init_machine(AccelState *accel, MachineState *ms) { @@ -99,8 +99,8 @@ static const TypeInfo accel_ops_type_info = { .class_size = sizeof(AccelOpsClass), }; -static void accel_softmmu_register_types(void) +static void accel_system_register_types(void) { type_register_static(&accel_ops_type_info); } -type_init(accel_softmmu_register_types); +type_init(accel_system_register_types); diff --git a/accel/accel-softmmu.h b/accel/accel-system.h similarity index 77% rename from accel/accel-softmmu.h rename to accel/accel-system.h index 5e192f1882..d41c62f21b 100644 --- a/accel/accel-softmmu.h +++ b/accel/accel-system.h @@ -7,9 +7,9 @@ * See the COPYING file in the top-level directory. */ -#ifndef ACCEL_SOFTMMU_H -#define ACCEL_SOFTMMU_H +#ifndef ACCEL_SYSTEM_H +#define ACCEL_SYSTEM_H void accel_init_ops_interfaces(AccelClass *ac); -#endif /* ACCEL_SOFTMMU_H */ +#endif /* ACCEL_SYSTEM_H */ diff --git a/accel/accel-target.c b/accel/accel-target.c index 11d74b4ad7..7e3cbde5df 100644 --- a/accel/accel-target.c +++ b/accel/accel-target.c @@ -30,7 +30,7 @@ #include "hw/core/accel-cpu.h" #ifndef CONFIG_USER_ONLY -#include "accel-softmmu.h" +#include "accel-system.h" #endif /* !CONFIG_USER_ONLY */ static const TypeInfo accel_type = { diff --git a/accel/meson.build b/accel/meson.build index fda3157a6e..5eaeb68338 100644 --- a/accel/meson.build +++ b/accel/meson.build @@ -1,5 +1,5 @@ specific_ss.add(files('accel-target.c')) -system_ss.add(files('accel-softmmu.c', 'accel-blocker.c')) +system_ss.add(files('accel-system.c', 'accel-blocker.c')) user_ss.add(files('accel-user.c')) subdir('tcg') diff --git a/accel/stubs/meson.build b/accel/stubs/meson.build index 6b0f200efe..91a2d21925 100644 --- a/accel/stubs/meson.build +++ b/accel/stubs/meson.build @@ -1,6 +1,6 @@ -sysemu_stubs_ss = ss.source_set() -sysemu_stubs_ss.add(when: 'CONFIG_XEN', if_false: files('xen-stub.c')) -sysemu_stubs_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c')) -sysemu_stubs_ss.add(when: 'CONFIG_TCG', if_false: files('tcg-stub.c')) +system_stubs_ss = ss.source_set() +system_stubs_ss.add(when: 'CONFIG_XEN', if_false: files('xen-stub.c')) +system_stubs_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c')) +system_stubs_ss.add(when: 'CONFIG_TCG', if_false: files('tcg-stub.c')) -specific_ss.add_all(when: ['CONFIG_SYSTEM_ONLY'], if_true: sysemu_stubs_ss) +specific_ss.add_all(when: ['CONFIG_SYSTEM_ONLY'], if_true: system_stubs_ss) From 3f7d1bdab0e98190245394875acf0d6d04b5de5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:22 +0200 Subject: [PATCH 11/25] gdbstub: Rename 'softmmu' -> 'system' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We have gdbstub/user.c for user emulation code, use gdbstub/system.c for system emulation part. Rename s/softmmu/system/ in meson and few comments. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-8-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- gdbstub/internals.h | 4 ++-- gdbstub/meson.build | 10 +++++----- gdbstub/{softmmu.c => system.c} | 2 +- gdbstub/trace-events | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) rename gdbstub/{softmmu.c => system.c} (99%) diff --git a/gdbstub/internals.h b/gdbstub/internals.h index fee243081f..f7fd1bede5 100644 --- a/gdbstub/internals.h +++ b/gdbstub/internals.h @@ -103,7 +103,7 @@ static inline int tohex(int v) } /* - * Connection helpers for both softmmu and user backends + * Connection helpers for both system and user backends */ void gdb_put_strbuf(void); @@ -229,7 +229,7 @@ void gdb_breakpoint_remove_all(CPUState *cs); * @is_write: is it a write operation * * This function is specialised depending on the mode we are running - * in. For softmmu guests we can switch the interpretation of the + * in. For system guests we can switch the interpretation of the * address to a physical address. */ int gdb_target_memory_rw_debug(CPUState *cs, hwaddr addr, diff --git a/gdbstub/meson.build b/gdbstub/meson.build index a5a1f4e433..e5bccba34e 100644 --- a/gdbstub/meson.build +++ b/gdbstub/meson.build @@ -1,6 +1,6 @@ # # The main gdbstub still relies on per-build definitions of various -# types. The bits pushed to softmmu/user.c try to use guest agnostic +# types. The bits pushed to system/user.c try to use guest agnostic # types such as hwaddr. # @@ -12,7 +12,7 @@ gdb_system_ss = ss.source_set() # We build two versions of gdbstub, one for each mode gdb_user_ss.add(files('gdbstub.c', 'user.c')) -gdb_system_ss.add(files('gdbstub.c', 'softmmu.c')) +gdb_system_ss.add(files('gdbstub.c', 'system.c')) gdb_user_ss = gdb_user_ss.apply(config_targetos, strict: false) gdb_system_ss = gdb_system_ss.apply(config_targetos, strict: false) @@ -23,15 +23,15 @@ libgdb_user = static_library('gdb_user', c_args: '-DCONFIG_USER_ONLY', build_by_default: false) -libgdb_softmmu = static_library('gdb_softmmu', +libgdb_system = static_library('gdb_system', gdb_system_ss.sources() + genh, name_suffix: 'fa', build_by_default: false) gdb_user = declare_dependency(link_whole: libgdb_user) user_ss.add(gdb_user) -gdb_softmmu = declare_dependency(link_whole: libgdb_softmmu) -system_ss.add(gdb_softmmu) +gdb_system = declare_dependency(link_whole: libgdb_system) +system_ss.add(gdb_system) common_ss.add(files('syscalls.c')) diff --git a/gdbstub/softmmu.c b/gdbstub/system.c similarity index 99% rename from gdbstub/softmmu.c rename to gdbstub/system.c index 9f0b8b5497..189975b1d6 100644 --- a/gdbstub/softmmu.c +++ b/gdbstub/system.c @@ -104,7 +104,7 @@ static void gdb_chr_event(void *opaque, QEMUChrEvent event) } /* - * In softmmu mode we stop the VM and wait to send the syscall packet + * In system-mode we stop the VM and wait to send the syscall packet * until notification that the CPU has stopped. This must be done * because if the packet is sent now the reply from the syscall * request could be received while the CPU is still in the running diff --git a/gdbstub/trace-events b/gdbstub/trace-events index 7bc79a73c4..4fd126a38c 100644 --- a/gdbstub/trace-events +++ b/gdbstub/trace-events @@ -28,5 +28,5 @@ gdbstub_err_checksum_invalid(uint8_t ch) "got invalid command checksum digit: 0x gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got) "got command packet with incorrect checksum, expected=0x%02x, received=0x%02x" gdbstub_err_unexpected_runpkt(uint8_t ch) "unexpected packet (0x%02x) while target running" -# softmmu.c +# system.c gdbstub_hit_watchpoint(const char *type, int cpu_gdb_index, uint64_t vaddr) "Watchpoint hit, type=\"%s\" cpu=%d, vaddr=0x%" PRIx64 "" From f14eced5ac9ae2db10a661e0fdef52a2f0316699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:23 +0200 Subject: [PATCH 12/25] semihosting: Rename softmmu_FOO_user() -> uaccess_FOO_user() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a check in 'softmmu-uaccess.h' that the header is only include in system emulation, and rename it as 'uaccess.h'. Rename the API methods: - softmmu_[un]lock_user*() -> uaccess_[un]lock_user*() - softmmu_strlen_user() -> uaccess_strlen_user(). Update a pair of comments. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-9-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- .../{softmmu-uaccess.h => uaccess.h} | 24 +++++++++++-------- semihosting/arm-compat-semi.c | 4 ++-- semihosting/config.c | 2 +- semihosting/guestfd.c | 2 +- semihosting/syscalls.c | 2 +- semihosting/uaccess.c | 14 +++++------ stubs/semihost.c | 4 ++-- target/m68k/m68k-semi.c | 2 +- target/mips/tcg/sysemu/mips-semi.c | 2 +- target/nios2/nios2-semi.c | 2 +- 10 files changed, 31 insertions(+), 27 deletions(-) rename include/semihosting/{softmmu-uaccess.h => uaccess.h} (75%) diff --git a/include/semihosting/softmmu-uaccess.h b/include/semihosting/uaccess.h similarity index 75% rename from include/semihosting/softmmu-uaccess.h rename to include/semihosting/uaccess.h index 4f08dfc098..3963eafc3e 100644 --- a/include/semihosting/softmmu-uaccess.h +++ b/include/semihosting/uaccess.h @@ -7,8 +7,12 @@ * This code is licensed under the GPL */ -#ifndef SEMIHOSTING_SOFTMMU_UACCESS_H -#define SEMIHOSTING_SOFTMMU_UACCESS_H +#ifndef SEMIHOSTING_UACCESS_H +#define SEMIHOSTING_UACCESS_H + +#ifdef CONFIG_USER_ONLY +#error Cannot include semihosting/uaccess.h from user emulation +#endif #include "cpu.h" @@ -42,18 +46,18 @@ #define put_user_ual(arg, p) put_user_u32(arg, p) -void *softmmu_lock_user(CPUArchState *env, target_ulong addr, +void *uaccess_lock_user(CPUArchState *env, target_ulong addr, target_ulong len, bool copy); -#define lock_user(type, p, len, copy) softmmu_lock_user(env, p, len, copy) +#define lock_user(type, p, len, copy) uaccess_lock_user(env, p, len, copy) -char *softmmu_lock_user_string(CPUArchState *env, target_ulong addr); -#define lock_user_string(p) softmmu_lock_user_string(env, p) +char *uaccess_lock_user_string(CPUArchState *env, target_ulong addr); +#define lock_user_string(p) uaccess_lock_user_string(env, p) -void softmmu_unlock_user(CPUArchState *env, void *p, +void uaccess_unlock_user(CPUArchState *env, void *p, target_ulong addr, target_ulong len); -#define unlock_user(s, args, len) softmmu_unlock_user(env, s, args, len) +#define unlock_user(s, args, len) uaccess_unlock_user(env, s, args, len) -ssize_t softmmu_strlen_user(CPUArchState *env, target_ulong addr); -#define target_strlen(p) softmmu_strlen_user(env, p) +ssize_t uaccess_strlen_user(CPUArchState *env, target_ulong addr); +#define target_strlen(p) uaccess_strlen_user(env, p) #endif /* SEMIHOSTING_SOFTMMU_UACCESS_H */ diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c index 29c5670fdf..d7a42a4da4 100644 --- a/semihosting/arm-compat-semi.c +++ b/semihosting/arm-compat-semi.c @@ -202,13 +202,13 @@ static LayoutInfo common_semi_find_bases(CPUState *cs) * The semihosting API has no concept of its errno being thread-safe, * as the API design predates SMP CPUs and was intended as a simple * real-hardware set of debug functionality. For QEMU, we make the - * errno be per-thread in linux-user mode; in softmmu it is a simple + * errno be per-thread in linux-user mode; in system-mode it is a simple * global, and we assume that the guest takes care of avoiding any races. */ #ifndef CONFIG_USER_ONLY static target_ulong syscall_err; -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #endif static inline uint32_t get_swi_errno(CPUState *cs) diff --git a/semihosting/config.c b/semihosting/config.c index 8ca569735d..61e4016fc5 100644 --- a/semihosting/config.c +++ b/semihosting/config.c @@ -12,7 +12,7 @@ * linux-user targets. However in that use case no configuration of * the outputs and command lines is supported. * - * The config module is common to all softmmu targets however as vl.c + * The config module is common to all system targets however as vl.c * needs to link against the helpers. * * SPDX-License-Identifier: GPL-2.0-or-later diff --git a/semihosting/guestfd.c b/semihosting/guestfd.c index acb86b50dd..955c2efbd0 100644 --- a/semihosting/guestfd.c +++ b/semihosting/guestfd.c @@ -15,7 +15,7 @@ #ifdef CONFIG_USER_ONLY #include "qemu.h" #else -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #include CONFIG_DEVICES #endif diff --git a/semihosting/syscalls.c b/semihosting/syscalls.c index 1ab4809567..c40348f996 100644 --- a/semihosting/syscalls.c +++ b/semihosting/syscalls.c @@ -15,7 +15,7 @@ #ifdef CONFIG_USER_ONLY #include "qemu.h" #else -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #endif diff --git a/semihosting/uaccess.c b/semihosting/uaccess.c index 7505eb6d1b..5d889f9263 100644 --- a/semihosting/uaccess.c +++ b/semihosting/uaccess.c @@ -9,9 +9,9 @@ #include "qemu/osdep.h" #include "exec/exec-all.h" -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" -void *softmmu_lock_user(CPUArchState *env, target_ulong addr, +void *uaccess_lock_user(CPUArchState *env, target_ulong addr, target_ulong len, bool copy) { void *p = malloc(len); @@ -24,7 +24,7 @@ void *softmmu_lock_user(CPUArchState *env, target_ulong addr, return p; } -ssize_t softmmu_strlen_user(CPUArchState *env, target_ulong addr) +ssize_t uaccess_strlen_user(CPUArchState *env, target_ulong addr) { int mmu_idx = cpu_mmu_index(env, false); size_t len = 0; @@ -72,16 +72,16 @@ ssize_t softmmu_strlen_user(CPUArchState *env, target_ulong addr) } } -char *softmmu_lock_user_string(CPUArchState *env, target_ulong addr) +char *uaccess_lock_user_string(CPUArchState *env, target_ulong addr) { - ssize_t len = softmmu_strlen_user(env, addr); + ssize_t len = uaccess_strlen_user(env, addr); if (len < 0) { return NULL; } - return softmmu_lock_user(env, addr, len + 1, true); + return uaccess_lock_user(env, addr, len + 1, true); } -void softmmu_unlock_user(CPUArchState *env, void *p, +void uaccess_unlock_user(CPUArchState *env, void *p, target_ulong addr, target_ulong len) { if (len) { diff --git a/stubs/semihost.c b/stubs/semihost.c index aad7a70353..9343d385d7 100644 --- a/stubs/semihost.c +++ b/stubs/semihost.c @@ -1,9 +1,9 @@ /* - * Semihosting Stubs for SoftMMU + * Semihosting Stubs for system emulation * * Copyright (c) 2019 Linaro Ltd * - * Stubs for SoftMMU targets that don't actually do semihosting. + * Stubs for system targets that don't actually do semihosting. * * SPDX-License-Identifier: GPL-2.0-or-later */ diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c index 80cd8d70db..b4ffb70f8b 100644 --- a/target/m68k/m68k-semi.c +++ b/target/m68k/m68k-semi.c @@ -27,7 +27,7 @@ #include "gdbstub/syscalls.h" #include "gdbstub/helpers.h" #include "semihosting/syscalls.h" -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #include "hw/boards.h" #include "qemu/log.h" diff --git a/target/mips/tcg/sysemu/mips-semi.c b/target/mips/tcg/sysemu/mips-semi.c index b3e4e49ff7..5ba06e9573 100644 --- a/target/mips/tcg/sysemu/mips-semi.c +++ b/target/mips/tcg/sysemu/mips-semi.c @@ -22,7 +22,7 @@ #include "qemu/log.h" #include "gdbstub/syscalls.h" #include "gdbstub/helpers.h" -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #include "semihosting/semihost.h" #include "semihosting/console.h" #include "semihosting/syscalls.h" diff --git a/target/nios2/nios2-semi.c b/target/nios2/nios2-semi.c index 9d0241c758..0b84fcb6b6 100644 --- a/target/nios2/nios2-semi.c +++ b/target/nios2/nios2-semi.c @@ -26,7 +26,7 @@ #include "gdbstub/syscalls.h" #include "gdbstub/helpers.h" #include "semihosting/syscalls.h" -#include "semihosting/softmmu-uaccess.h" +#include "semihosting/uaccess.h" #include "qemu/log.h" #define HOSTED_EXIT 0 From 5338977abdf952249db7ac77a7c3358895fa78b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:24 +0200 Subject: [PATCH 13/25] target/i386: Rename i386_softmmu_kvm_ss -> i386_kvm_ss MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Software MMU is TCG specific. Here 'softmmu' is misused for system emulation. Anyhow, since KVM is system emulation specific, just rename as 'i386_kvm_ss'. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-10-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- target/i386/kvm/meson.build | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/i386/kvm/meson.build b/target/i386/kvm/meson.build index 5d9174bbb5..84d9143e60 100644 --- a/target/i386/kvm/meson.build +++ b/target/i386/kvm/meson.build @@ -1,14 +1,14 @@ -i386_softmmu_kvm_ss = ss.source_set() +i386_kvm_ss = ss.source_set() -i386_softmmu_kvm_ss.add(files( +i386_kvm_ss.add(files( 'kvm.c', 'kvm-cpu.c', )) -i386_softmmu_kvm_ss.add(when: 'CONFIG_XEN_EMU', if_true: files('xen-emu.c')) +i386_kvm_ss.add(when: 'CONFIG_XEN_EMU', if_true: files('xen-emu.c')) -i386_softmmu_kvm_ss.add(when: 'CONFIG_SEV', if_false: files('sev-stub.c')) +i386_kvm_ss.add(when: 'CONFIG_SEV', if_false: files('sev-stub.c')) i386_system_ss.add(when: 'CONFIG_HYPERV', if_true: files('hyperv.c'), if_false: files('hyperv-stub.c')) -i386_system_ss.add_all(when: 'CONFIG_KVM', if_true: i386_softmmu_kvm_ss) +i386_system_ss.add_all(when: 'CONFIG_KVM', if_true: i386_kvm_ss) From 21d2140dd8a0e44cd24a640f0316d02e7927f603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:26 +0200 Subject: [PATCH 14/25] meson: Rename softmmu_mods -> system_mods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See commit de6cd7599b ("meson: Replace softmmu_ss -> system_ss") for rationale. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-12-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- meson.build | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index 3bb64b536c..54907c7fa9 100644 --- a/meson.build +++ b/meson.build @@ -3480,7 +3480,7 @@ modinfo_generate = find_program('scripts/modinfo-generate.py') modinfo_files = [] block_mods = [] -softmmu_mods = [] +system_mods = [] foreach d, list : modules if not (d == 'block' ? have_block : have_system) continue @@ -3494,7 +3494,7 @@ foreach d, list : modules if d == 'block' block_mods += sl else - softmmu_mods += sl + system_mods += sl endif if module_ss.sources() != [] # FIXME: Should use sl.extract_all_objects(recursive: true) as @@ -3538,7 +3538,7 @@ foreach d, list : target_modules include_directories: target_inc, c_args: c_args, pic: true) - softmmu_mods += sl + system_mods += sl # FIXME: Should use sl.extract_all_objects(recursive: true) too. modinfo_files += custom_target(module_name + '.modinfo', output: module_name + '.modinfo', @@ -3581,7 +3581,7 @@ block_syms = custom_target('block.syms', output: 'block.syms', capture: true, command: [undefsym, nm, '@INPUT@']) qemu_syms = custom_target('qemu.syms', output: 'qemu.syms', - input: [libqemuutil, softmmu_mods], + input: [libqemuutil, system_mods], capture: true, command: [undefsym, nm, '@INPUT@']) @@ -3666,7 +3666,7 @@ common_ss.add(hwcore) ########### emulator_modules = [] -foreach m : block_mods + softmmu_mods +foreach m : block_mods + system_mods emulator_modules += shared_module(m.name(), build_by_default: true, name_prefix: '', From 01c85e60a4d0675f0ad203fe1fe119381e7ad15b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:27 +0200 Subject: [PATCH 15/25] meson: Rename target_softmmu_arch -> target_system_arch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finish the convertion started with commit de6cd7599b ("meson: Replace softmmu_ss -> system_ss"). If the $target_type is 'system', then use the target_system_arch[] source set :) Mechanical change doing: $ sed -i -e s/target_softmmu_arch/target_system_arch/g \ $(git grep -l target_softmmu_arch) Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-13-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- docs/devel/build-system.rst | 4 ++-- meson.build | 4 ++-- target/alpha/meson.build | 2 +- target/arm/meson.build | 2 +- target/avr/meson.build | 2 +- target/cris/meson.build | 2 +- target/hppa/meson.build | 2 +- target/i386/meson.build | 2 +- target/loongarch/meson.build | 2 +- target/m68k/meson.build | 2 +- target/microblaze/meson.build | 2 +- target/mips/meson.build | 2 +- target/nios2/meson.build | 2 +- target/openrisc/meson.build | 2 +- target/ppc/meson.build | 2 +- target/riscv/meson.build | 2 +- target/rx/meson.build | 2 +- target/s390x/meson.build | 2 +- target/sh4/meson.build | 2 +- target/sparc/meson.build | 2 +- target/tricore/meson.build | 2 +- target/xtensa/meson.build | 2 +- 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/devel/build-system.rst b/docs/devel/build-system.rst index 0f990bb3e9..21f78da7d1 100644 --- a/docs/devel/build-system.rst +++ b/docs/devel/build-system.rst @@ -225,14 +225,14 @@ Target-dependent emulator sourcesets: The sourceset is only used for system emulators. Each subdirectory in ``target/`` instead should add one sourceset to each - of the ``target_arch`` and ``target_softmmu_arch``, which are used respectively + of the ``target_arch`` and ``target_system_arch``, which are used respectively for all emulators and for system emulators only. For example:: arm_ss = ss.source_set() arm_system_ss = ss.source_set() ... target_arch += {'arm': arm_ss} - target_softmmu_arch += {'arm': arm_system_ss} + target_system_arch += {'arm': arm_system_ss} Module sourcesets: There are two dictionaries for modules: ``modules`` is used for diff --git a/meson.build b/meson.build index 54907c7fa9..167cb70956 100644 --- a/meson.build +++ b/meson.build @@ -3198,7 +3198,7 @@ modules = {} target_modules = {} hw_arch = {} target_arch = {} -target_softmmu_arch = {} +target_system_arch = {} target_user_arch = {} ############### @@ -3718,7 +3718,7 @@ foreach target : target_dirs endif if target.endswith('-softmmu') target_type='system' - t = target_softmmu_arch[target_base_arch].apply(config_target, strict: false) + t = target_system_arch[target_base_arch].apply(config_target, strict: false) arch_srcs += t.sources() arch_deps += t.dependencies() diff --git a/target/alpha/meson.build b/target/alpha/meson.build index 3f5253c002..d3502dd823 100644 --- a/target/alpha/meson.build +++ b/target/alpha/meson.build @@ -15,4 +15,4 @@ alpha_system_ss = ss.source_set() alpha_system_ss.add(files('machine.c')) target_arch += {'alpha': alpha_ss} -target_softmmu_arch += {'alpha': alpha_system_ss} +target_system_arch += {'alpha': alpha_system_ss} diff --git a/target/arm/meson.build b/target/arm/meson.build index e645e456da..5d04a8e94f 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -35,4 +35,4 @@ else endif target_arch += {'arm': arm_ss} -target_softmmu_arch += {'arm': arm_system_ss} +target_system_arch += {'arm': arm_system_ss} diff --git a/target/avr/meson.build b/target/avr/meson.build index a24cf6d26d..3e172bde1c 100644 --- a/target/avr/meson.build +++ b/target/avr/meson.build @@ -17,4 +17,4 @@ avr_ss.add(files( avr_system_ss.add(files('machine.c')) target_arch += {'avr': avr_ss} -target_softmmu_arch += {'avr': avr_system_ss} +target_system_arch += {'avr': avr_system_ss} diff --git a/target/cris/meson.build b/target/cris/meson.build index 07dc3a5682..bbfcdf7f7a 100644 --- a/target/cris/meson.build +++ b/target/cris/meson.build @@ -14,4 +14,4 @@ cris_system_ss.add(files( )) target_arch += {'cris': cris_ss} -target_softmmu_arch += {'cris': cris_system_ss} +target_system_arch += {'cris': cris_system_ss} diff --git a/target/hppa/meson.build b/target/hppa/meson.build index 59b68e82e2..f47e54f5fa 100644 --- a/target/hppa/meson.build +++ b/target/hppa/meson.build @@ -20,4 +20,4 @@ hppa_system_ss.add(files( )) target_arch += {'hppa': hppa_ss} -target_softmmu_arch += {'hppa': hppa_system_ss} +target_system_arch += {'hppa': hppa_system_ss} diff --git a/target/i386/meson.build b/target/i386/meson.build index 6f1036d469..7c74bfa859 100644 --- a/target/i386/meson.build +++ b/target/i386/meson.build @@ -31,5 +31,5 @@ subdir('hvf') subdir('tcg') target_arch += {'i386': i386_ss} -target_softmmu_arch += {'i386': i386_system_ss} +target_system_arch += {'i386': i386_system_ss} target_user_arch += {'i386': i386_user_ss} diff --git a/target/loongarch/meson.build b/target/loongarch/meson.build index 7fbf045a5d..18e8191e2b 100644 --- a/target/loongarch/meson.build +++ b/target/loongarch/meson.build @@ -30,4 +30,4 @@ common_ss.add(when: 'CONFIG_LOONGARCH_DIS', if_true: [files('disas.c'), gen]) loongarch_ss.add_all(when: 'CONFIG_TCG', if_true: [loongarch_tcg_ss]) target_arch += {'loongarch': loongarch_ss} -target_softmmu_arch += {'loongarch': loongarch_system_ss} +target_system_arch += {'loongarch': loongarch_system_ss} diff --git a/target/m68k/meson.build b/target/m68k/meson.build index 355db26c6f..8d3f9ce288 100644 --- a/target/m68k/meson.build +++ b/target/m68k/meson.build @@ -16,4 +16,4 @@ m68k_system_ss.add(files( )) target_arch += {'m68k': m68k_ss} -target_softmmu_arch += {'m68k': m68k_system_ss} +target_system_arch += {'m68k': m68k_system_ss} diff --git a/target/microblaze/meson.build b/target/microblaze/meson.build index 50fd9ff378..3ed4fbb67a 100644 --- a/target/microblaze/meson.build +++ b/target/microblaze/meson.build @@ -17,4 +17,4 @@ microblaze_system_ss.add(files( )) target_arch += {'microblaze': microblaze_ss} -target_softmmu_arch += {'microblaze': microblaze_system_ss} +target_system_arch += {'microblaze': microblaze_system_ss} diff --git a/target/mips/meson.build b/target/mips/meson.build index f35e8f0eca..e57ef24ecf 100644 --- a/target/mips/meson.build +++ b/target/mips/meson.build @@ -19,5 +19,5 @@ endif mips_ss.add(when: 'CONFIG_KVM', if_true: files('kvm.c')) target_arch += {'mips': mips_ss} -target_softmmu_arch += {'mips': mips_system_ss} +target_system_arch += {'mips': mips_system_ss} target_user_arch += {'mips': mips_user_ss} diff --git a/target/nios2/meson.build b/target/nios2/meson.build index 8f0f9dc628..12d8abf0bd 100644 --- a/target/nios2/meson.build +++ b/target/nios2/meson.build @@ -14,4 +14,4 @@ nios2_system_ss.add(files( )) target_arch += {'nios2': nios2_ss} -target_softmmu_arch += {'nios2': nios2_system_ss} +target_system_arch += {'nios2': nios2_system_ss} diff --git a/target/openrisc/meson.build b/target/openrisc/meson.build index c1cd943f78..31608b6dc7 100644 --- a/target/openrisc/meson.build +++ b/target/openrisc/meson.build @@ -22,4 +22,4 @@ openrisc_system_ss.add(files( )) target_arch += {'openrisc': openrisc_ss} -target_softmmu_arch += {'openrisc': openrisc_system_ss} +target_system_arch += {'openrisc': openrisc_system_ss} diff --git a/target/ppc/meson.build b/target/ppc/meson.build index 4c2635039e..97ceb6e7c0 100644 --- a/target/ppc/meson.build +++ b/target/ppc/meson.build @@ -55,4 +55,4 @@ ppc_system_ss.add(when: 'TARGET_PPC64', if_true: files( )) target_arch += {'ppc': ppc_ss} -target_softmmu_arch += {'ppc': ppc_system_ss} +target_system_arch += {'ppc': ppc_system_ss} diff --git a/target/riscv/meson.build b/target/riscv/meson.build index 660078bda1..ff60b21d04 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -39,4 +39,4 @@ riscv_system_ss.add(files( )) target_arch += {'riscv': riscv_ss} -target_softmmu_arch += {'riscv': riscv_system_ss} +target_system_arch += {'riscv': riscv_system_ss} diff --git a/target/rx/meson.build b/target/rx/meson.build index 8de0ad49b9..d196737ce3 100644 --- a/target/rx/meson.build +++ b/target/rx/meson.build @@ -13,4 +13,4 @@ rx_ss.add(files( 'disas.c')) target_arch += {'rx': rx_ss} -target_softmmu_arch += {'rx': ss.source_set()} +target_system_arch += {'rx': ss.source_set()} diff --git a/target/s390x/meson.build b/target/s390x/meson.build index 42ed38942a..02ca43d9f0 100644 --- a/target/s390x/meson.build +++ b/target/s390x/meson.build @@ -40,5 +40,5 @@ subdir('tcg') subdir('kvm') target_arch += {'s390x': s390x_ss} -target_softmmu_arch += {'s390x': s390x_system_ss} +target_system_arch += {'s390x': s390x_system_ss} target_user_arch += {'s390x': s390x_user_ss} diff --git a/target/sh4/meson.build b/target/sh4/meson.build index a78e9ec7e4..fe09f96684 100644 --- a/target/sh4/meson.build +++ b/target/sh4/meson.build @@ -11,4 +11,4 @@ sh4_system_ss = ss.source_set() sh4_system_ss.add(files('monitor.c')) target_arch += {'sh4': sh4_ss} -target_softmmu_arch += {'sh4': sh4_system_ss} +target_system_arch += {'sh4': sh4_system_ss} diff --git a/target/sparc/meson.build b/target/sparc/meson.build index d32e67b287..48025cce76 100644 --- a/target/sparc/meson.build +++ b/target/sparc/meson.build @@ -20,4 +20,4 @@ sparc_system_ss.add(files( )) target_arch += {'sparc': sparc_ss} -target_softmmu_arch += {'sparc': sparc_system_ss} +target_system_arch += {'sparc': sparc_system_ss} diff --git a/target/tricore/meson.build b/target/tricore/meson.build index 34825b6048..45f49f0128 100644 --- a/target/tricore/meson.build +++ b/target/tricore/meson.build @@ -12,4 +12,4 @@ tricore_ss.add(zlib) tricore_system_ss = ss.source_set() target_arch += {'tricore': tricore_ss} -target_softmmu_arch += {'tricore': tricore_system_ss} +target_system_arch += {'tricore': tricore_system_ss} diff --git a/target/xtensa/meson.build b/target/xtensa/meson.build index 95692bd75f..f8d60101e3 100644 --- a/target/xtensa/meson.build +++ b/target/xtensa/meson.build @@ -24,4 +24,4 @@ xtensa_system_ss.add(files( )) target_arch += {'xtensa': xtensa_ss} -target_softmmu_arch += {'xtensa': xtensa_system_ss} +target_system_arch += {'xtensa': xtensa_system_ss} From 8d7f2e767d8cd058c817dbe31430b89f2e11535d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Wed, 4 Oct 2023 11:06:28 +0200 Subject: [PATCH 16/25] system: Rename softmmu/ directory as system/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The softmmu/ directory contains files specific to system emulation. Rename it as system/. Update meson rules, the MAINTAINERS file and all the documentation and comments. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20231004090629.37473-14-philmd@linaro.org> Signed-off-by: Paolo Bonzini --- MAINTAINERS | 42 +++++++++---------- accel/tcg/icount-common.c | 2 +- docs/devel/qtest.rst | 2 +- .../sysemu/cpu-timers-internal.h | 0 include/sysemu/runstate-action.h | 2 +- meson.build | 8 ++-- scripts/checkpatch.pl | 2 +- scripts/coverity-scan/COMPONENTS.md | 2 +- scripts/get_maintainer.pl | 2 +- scripts/oss-fuzz/build.sh | 6 +-- softmmu/trace.h | 1 - {softmmu => system}/arch_init.c | 0 {softmmu => system}/async-teardown.c | 0 {softmmu => system}/balloon.c | 0 {softmmu => system}/bootdevice.c | 0 {softmmu => system}/cpu-throttle.c | 0 {softmmu => system}/cpu-timers.c | 2 +- {softmmu => system}/cpus.c | 0 {softmmu => system}/datadir.c | 0 {softmmu => system}/device_tree.c | 0 {softmmu => system}/dirtylimit.c | 0 {softmmu => system}/dma-helpers.c | 0 {softmmu => system}/globals.c | 0 {softmmu => system}/ioport.c | 0 {softmmu => system}/main.c | 0 {softmmu => system}/memory.c | 0 {softmmu => system}/memory_mapping.c | 0 {softmmu => system}/meson.build | 0 {softmmu => system}/physmem.c | 6 ++- {softmmu => system}/qdev-monitor.c | 0 {softmmu => system}/qemu-seccomp.c | 0 {softmmu => system}/qtest.c | 0 {softmmu => system}/rtc.c | 0 {softmmu => system}/runstate-action.c | 0 {softmmu => system}/runstate-hmp-cmds.c | 0 {softmmu => system}/runstate.c | 0 {softmmu => system}/tpm-hmp-cmds.c | 0 {softmmu => system}/tpm.c | 0 {softmmu => system}/trace-events | 0 system/trace.h | 1 + {softmmu => system}/vl.c | 0 {softmmu => system}/watchpoint.c | 0 tests/unit/meson.build | 2 +- 43 files changed, 41 insertions(+), 39 deletions(-) rename softmmu/timers-state.h => include/sysemu/cpu-timers-internal.h (100%) delete mode 100644 softmmu/trace.h rename {softmmu => system}/arch_init.c (100%) rename {softmmu => system}/async-teardown.c (100%) rename {softmmu => system}/balloon.c (100%) rename {softmmu => system}/bootdevice.c (100%) rename {softmmu => system}/cpu-throttle.c (100%) rename {softmmu => system}/cpu-timers.c (99%) rename {softmmu => system}/cpus.c (100%) rename {softmmu => system}/datadir.c (100%) rename {softmmu => system}/device_tree.c (100%) rename {softmmu => system}/dirtylimit.c (100%) rename {softmmu => system}/dma-helpers.c (100%) rename {softmmu => system}/globals.c (100%) rename {softmmu => system}/ioport.c (100%) rename {softmmu => system}/main.c (100%) rename {softmmu => system}/memory.c (100%) rename {softmmu => system}/memory_mapping.c (100%) rename {softmmu => system}/meson.build (100%) rename {softmmu => system}/physmem.c (99%) rename {softmmu => system}/qdev-monitor.c (100%) rename {softmmu => system}/qemu-seccomp.c (100%) rename {softmmu => system}/qtest.c (100%) rename {softmmu => system}/rtc.c (100%) rename {softmmu => system}/runstate-action.c (100%) rename {softmmu => system}/runstate-hmp-cmds.c (100%) rename {softmmu => system}/runstate.c (100%) rename {softmmu => system}/tpm-hmp-cmds.c (100%) rename {softmmu => system}/tpm.c (100%) rename {softmmu => system}/trace-events (100%) create mode 100644 system/trace.h rename {softmmu => system}/vl.c (100%) rename {softmmu => system}/watchpoint.c (100%) diff --git a/MAINTAINERS b/MAINTAINERS index ea91f9e804..a5ce4c0856 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -137,8 +137,8 @@ Overall TCG CPUs M: Richard Henderson R: Paolo Bonzini S: Maintained -F: softmmu/cpus.c -F: softmmu/watchpoint.c +F: system/cpus.c +F: system/watchpoint.c F: cpu-common.c F: cpu-target.c F: page-vary-target.c @@ -2108,7 +2108,7 @@ S: Maintained F: docs/interop/virtio-balloon-stats.rst F: hw/virtio/virtio-balloon*.c F: include/hw/virtio/virtio-balloon.h -F: softmmu/balloon.c +F: system/balloon.c F: include/sysemu/balloon.h virtio-9p @@ -2795,7 +2795,7 @@ Device Tree M: Alistair Francis R: David Gibson S: Maintained -F: softmmu/device_tree.c +F: system/device_tree.c F: include/sysemu/device_tree.h Dump @@ -2851,11 +2851,11 @@ F: include/exec/memory.h F: include/exec/ram_addr.h F: include/exec/ramblock.h F: include/sysemu/memory_mapping.h -F: softmmu/dma-helpers.c -F: softmmu/ioport.c -F: softmmu/memory.c -F: softmmu/memory_mapping.c -F: softmmu/physmem.c +F: system/dma-helpers.c +F: system/ioport.c +F: system/memory.c +F: system/memory_mapping.c +F: system/physmem.c F: include/exec/memory-internal.h F: scripts/coccinelle/memory-region-housekeeping.cocci @@ -2908,12 +2908,12 @@ F: include/sysemu/runstate.h F: include/sysemu/runstate-action.h F: util/main-loop.c F: util/qemu-timer.c -F: softmmu/vl.c -F: softmmu/main.c -F: softmmu/cpus.c -F: softmmu/cpu-throttle.c -F: softmmu/cpu-timers.c -F: softmmu/runstate* +F: system/vl.c +F: system/main.c +F: system/cpus.c +F: system/cpu-throttle.c +F: system/cpu-timers.c +F: system/runstate* F: qapi/run-state.json Read, Copy, Update (RCU) @@ -3087,7 +3087,7 @@ F: qapi/qom.json F: qapi/qdev.json F: scripts/coccinelle/qom-parent-type.cocci F: scripts/qom-cast-macro-clean-cocci-gen.py -F: softmmu/qdev-monitor.c +F: system/qdev-monitor.c F: stubs/qdev.c F: qom/ F: tests/unit/check-qom-interface.c @@ -3121,7 +3121,7 @@ M: Thomas Huth M: Laurent Vivier R: Paolo Bonzini S: Maintained -F: softmmu/qtest.c +F: system/qtest.c F: accel/qtest/ F: tests/qtest/ F: docs/devel/qgraph.rst @@ -3197,7 +3197,7 @@ F: scripts/simpletrace.py TPM M: Stefan Berger S: Maintained -F: softmmu/tpm* +F: system/tpm* F: hw/tpm/* F: include/hw/acpi/tpm.h F: include/sysemu/tpm* @@ -3242,7 +3242,7 @@ F: migration/rdma* Migration dirty limit and dirty page rate M: Hyman Huang S: Maintained -F: softmmu/dirtylimit.c +F: system/dirtylimit.c F: include/sysemu/dirtylimit.h F: migration/dirtyrate.c F: migration/dirtyrate.h @@ -3266,7 +3266,7 @@ F: scripts/xml-preprocess* Seccomp M: Daniel P. Berrange S: Odd Fixes -F: softmmu/qemu-seccomp.c +F: system/qemu-seccomp.c F: include/sysemu/seccomp.h F: tests/unit/test-seccomp.c @@ -3685,7 +3685,7 @@ T: git https://github.com/stefanha/qemu.git block Bootdevice M: Gonglei S: Maintained -F: softmmu/bootdevice.c +F: system/bootdevice.c Quorum M: Alberto Garcia diff --git a/accel/tcg/icount-common.c b/accel/tcg/icount-common.c index 0bf5bb5e21..ec57192be8 100644 --- a/accel/tcg/icount-common.c +++ b/accel/tcg/icount-common.c @@ -37,7 +37,7 @@ #include "hw/core/cpu.h" #include "sysemu/cpu-timers.h" #include "sysemu/cpu-throttle.h" -#include "softmmu/timers-state.h" +#include "sysemu/cpu-timers-internal.h" /* * ICOUNT: Instruction Counter diff --git a/docs/devel/qtest.rst b/docs/devel/qtest.rst index 0455aa06ab..c5b8546b3e 100644 --- a/docs/devel/qtest.rst +++ b/docs/devel/qtest.rst @@ -81,7 +81,7 @@ which you can run manually. QTest Protocol -------------- -.. kernel-doc:: softmmu/qtest.c +.. kernel-doc:: system/qtest.c :doc: QTest Protocol diff --git a/softmmu/timers-state.h b/include/sysemu/cpu-timers-internal.h similarity index 100% rename from softmmu/timers-state.h rename to include/sysemu/cpu-timers-internal.h diff --git a/include/sysemu/runstate-action.h b/include/sysemu/runstate-action.h index cff45a047b..db4e3099ae 100644 --- a/include/sysemu/runstate-action.h +++ b/include/sysemu/runstate-action.h @@ -11,7 +11,7 @@ #include "qapi/qapi-commands-run-state.h" -/* in softmmu/runstate-action.c */ +/* in system/runstate-action.c */ extern RebootAction reboot_action; extern ShutdownAction shutdown_action; extern PanicAction panic_action; diff --git a/meson.build b/meson.build index 167cb70956..79aef19bdc 100644 --- a/meson.build +++ b/meson.build @@ -3291,7 +3291,7 @@ if have_system 'hw/gpio', 'migration', 'net', - 'softmmu', + 'system', 'ui', 'hw/remote', ] @@ -3418,7 +3418,7 @@ endif common_ss.add(files('cpu-common.c')) specific_ss.add(files('cpu-target.c')) -subdir('softmmu') +subdir('system') # Work around a gcc bug/misfeature wherein constant propagation looks # through an alias: @@ -3797,14 +3797,14 @@ foreach target : target_dirs execs = [{ 'name': 'qemu-system-' + target_name, 'win_subsystem': 'console', - 'sources': files('softmmu/main.c'), + 'sources': files('system/main.c'), 'dependencies': [] }] if targetos == 'windows' and (sdl.found() or gtk.found()) execs += [{ 'name': 'qemu-system-' + target_name + 'w', 'win_subsystem': 'windows', - 'sources': files('softmmu/main.c'), + 'sources': files('system/main.c'), 'dependencies': [] }] endif diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 1ad9ccb74b..6e4100d2a4 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -466,7 +466,7 @@ sub top_of_kernel_tree { my @tree_check = ( "COPYING", "MAINTAINERS", "Makefile", "README.rst", "docs", "VERSION", - "linux-user", "softmmu" + "linux-user", "system" ); foreach my $check (@tree_check) { diff --git a/scripts/coverity-scan/COMPONENTS.md b/scripts/coverity-scan/COMPONENTS.md index 883da95aff..0e62f10aad 100644 --- a/scripts/coverity-scan/COMPONENTS.md +++ b/scripts/coverity-scan/COMPONENTS.md @@ -148,7 +148,7 @@ tcg ~ (/qemu)?(/accel/tcg|/replay|/tcg)/.* sysemu - ~ (/qemu)?(/softmmu/.*|/accel/.*) + ~ (/qemu)?(/system/.*|/accel/.*) (headers) ~ (/qemu)?(/include/.*) diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl index e5499b94b4..02fa828100 100755 --- a/scripts/get_maintainer.pl +++ b/scripts/get_maintainer.pl @@ -796,7 +796,7 @@ sub top_of_tree { && (-d "${lk_path}docs") && (-f "${lk_path}VERSION") && (-d "${lk_path}linux-user/") - && (-d "${lk_path}softmmu/")) { + && (-d "${lk_path}system/")) { return 1; } return 0; diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh index 3bda0d72c7..5238f83343 100755 --- a/scripts/oss-fuzz/build.sh +++ b/scripts/oss-fuzz/build.sh @@ -43,10 +43,10 @@ EXTRA_CFLAGS="$CFLAGS -U __OPTIMIZE__" if ! { [ -e "./COPYING" ] && [ -e "./MAINTAINERS" ] && [ -e "./Makefile" ] && - [ -e "./docs" ] && + [ -d "./docs" ] && [ -e "./VERSION" ] && - [ -e "./linux-user" ] && - [ -e "./softmmu" ];} ; then + [ -d "./linux-user" ] && + [ -d "./system" ];} ; then fatal "Please run the script from the top of the QEMU tree" fi diff --git a/softmmu/trace.h b/softmmu/trace.h deleted file mode 100644 index 2ad1011572..0000000000 --- a/softmmu/trace.h +++ /dev/null @@ -1 +0,0 @@ -#include "trace/trace-softmmu.h" diff --git a/softmmu/arch_init.c b/system/arch_init.c similarity index 100% rename from softmmu/arch_init.c rename to system/arch_init.c diff --git a/softmmu/async-teardown.c b/system/async-teardown.c similarity index 100% rename from softmmu/async-teardown.c rename to system/async-teardown.c diff --git a/softmmu/balloon.c b/system/balloon.c similarity index 100% rename from softmmu/balloon.c rename to system/balloon.c diff --git a/softmmu/bootdevice.c b/system/bootdevice.c similarity index 100% rename from softmmu/bootdevice.c rename to system/bootdevice.c diff --git a/softmmu/cpu-throttle.c b/system/cpu-throttle.c similarity index 100% rename from softmmu/cpu-throttle.c rename to system/cpu-throttle.c diff --git a/softmmu/cpu-timers.c b/system/cpu-timers.c similarity index 99% rename from softmmu/cpu-timers.c rename to system/cpu-timers.c index 117408cb83..7452d97b67 100644 --- a/softmmu/cpu-timers.c +++ b/system/cpu-timers.c @@ -36,7 +36,7 @@ #include "hw/core/cpu.h" #include "sysemu/cpu-timers.h" #include "sysemu/cpu-throttle.h" -#include "timers-state.h" +#include "sysemu/cpu-timers-internal.h" /* clock and ticks */ diff --git a/softmmu/cpus.c b/system/cpus.c similarity index 100% rename from softmmu/cpus.c rename to system/cpus.c diff --git a/softmmu/datadir.c b/system/datadir.c similarity index 100% rename from softmmu/datadir.c rename to system/datadir.c diff --git a/softmmu/device_tree.c b/system/device_tree.c similarity index 100% rename from softmmu/device_tree.c rename to system/device_tree.c diff --git a/softmmu/dirtylimit.c b/system/dirtylimit.c similarity index 100% rename from softmmu/dirtylimit.c rename to system/dirtylimit.c diff --git a/softmmu/dma-helpers.c b/system/dma-helpers.c similarity index 100% rename from softmmu/dma-helpers.c rename to system/dma-helpers.c diff --git a/softmmu/globals.c b/system/globals.c similarity index 100% rename from softmmu/globals.c rename to system/globals.c diff --git a/softmmu/ioport.c b/system/ioport.c similarity index 100% rename from softmmu/ioport.c rename to system/ioport.c diff --git a/softmmu/main.c b/system/main.c similarity index 100% rename from softmmu/main.c rename to system/main.c diff --git a/softmmu/memory.c b/system/memory.c similarity index 100% rename from softmmu/memory.c rename to system/memory.c diff --git a/softmmu/memory_mapping.c b/system/memory_mapping.c similarity index 100% rename from softmmu/memory_mapping.c rename to system/memory_mapping.c diff --git a/softmmu/meson.build b/system/meson.build similarity index 100% rename from softmmu/meson.build rename to system/meson.build diff --git a/softmmu/physmem.c b/system/physmem.c similarity index 99% rename from softmmu/physmem.c rename to system/physmem.c index 309653c722..edc3ed8ab9 100644 --- a/softmmu/physmem.c +++ b/system/physmem.c @@ -2301,8 +2301,10 @@ RAMBlock *qemu_ram_block_by_name(const char *name) return NULL; } -/* Some of the softmmu routines need to translate from a host pointer - (typically a TLB entry) back to a ram offset. */ +/* + * Some of the system routines need to translate from a host pointer + * (typically a TLB entry) back to a ram offset. + */ ram_addr_t qemu_ram_addr_from_host(void *ptr) { RAMBlock *block; diff --git a/softmmu/qdev-monitor.c b/system/qdev-monitor.c similarity index 100% rename from softmmu/qdev-monitor.c rename to system/qdev-monitor.c diff --git a/softmmu/qemu-seccomp.c b/system/qemu-seccomp.c similarity index 100% rename from softmmu/qemu-seccomp.c rename to system/qemu-seccomp.c diff --git a/softmmu/qtest.c b/system/qtest.c similarity index 100% rename from softmmu/qtest.c rename to system/qtest.c diff --git a/softmmu/rtc.c b/system/rtc.c similarity index 100% rename from softmmu/rtc.c rename to system/rtc.c diff --git a/softmmu/runstate-action.c b/system/runstate-action.c similarity index 100% rename from softmmu/runstate-action.c rename to system/runstate-action.c diff --git a/softmmu/runstate-hmp-cmds.c b/system/runstate-hmp-cmds.c similarity index 100% rename from softmmu/runstate-hmp-cmds.c rename to system/runstate-hmp-cmds.c diff --git a/softmmu/runstate.c b/system/runstate.c similarity index 100% rename from softmmu/runstate.c rename to system/runstate.c diff --git a/softmmu/tpm-hmp-cmds.c b/system/tpm-hmp-cmds.c similarity index 100% rename from softmmu/tpm-hmp-cmds.c rename to system/tpm-hmp-cmds.c diff --git a/softmmu/tpm.c b/system/tpm.c similarity index 100% rename from softmmu/tpm.c rename to system/tpm.c diff --git a/softmmu/trace-events b/system/trace-events similarity index 100% rename from softmmu/trace-events rename to system/trace-events diff --git a/system/trace.h b/system/trace.h new file mode 100644 index 0000000000..cd0136dcdc --- /dev/null +++ b/system/trace.h @@ -0,0 +1 @@ +#include "trace/trace-system.h" diff --git a/softmmu/vl.c b/system/vl.c similarity index 100% rename from softmmu/vl.c rename to system/vl.c diff --git a/softmmu/watchpoint.c b/system/watchpoint.c similarity index 100% rename from softmmu/watchpoint.c rename to system/watchpoint.c diff --git a/tests/unit/meson.build b/tests/unit/meson.build index 1977b302e2..f33ae64b8d 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -59,7 +59,7 @@ if have_system or have_tools } if seccomp.found() - tests += {'test-seccomp': ['../../softmmu/qemu-seccomp.c', seccomp]} + tests += {'test-seccomp': ['../../system/qemu-seccomp.c', seccomp]} endif endif From 24f9c07ac0b6acc38b8790b101d32944a2b64739 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 4 Oct 2023 15:46:56 +0200 Subject: [PATCH 17/25] configure: change $softmmu to $system "softmmu" is a deprecated moniker, do the easy change matching the variable to the command line option. Signed-off-by: Paolo Bonzini --- configure | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configure b/configure index e08127045d..97a5e8de49 100755 --- a/configure +++ b/configure @@ -252,7 +252,7 @@ docs="auto" EXESUF="" prefix="/usr/local" qemu_suffix="qemu" -softmmu="yes" +system="yes" linux_user="" bsd_user="" plugins="$default_feature" @@ -740,9 +740,9 @@ for opt do ;; --enable-tcg) tcg="enabled" ;; - --disable-system) softmmu="no" + --disable-system) system="no" ;; - --enable-system) softmmu="yes" + --enable-system) system="yes" ;; --disable-user) linux_user="no" ; @@ -864,7 +864,7 @@ else error_exit "user mode emulation not supported on this architecture" fi fi -if [ "$softmmu" = "yes" ]; then +if [ "$system" = "yes" ]; then mak_wilds="${mak_wilds} $source_path/configs/targets/*-softmmu.mak" fi @@ -1756,7 +1756,7 @@ for target in $target_list; do case $target in xtensa*-linux-user) - # the toolchain is not complete with headers, only build softmmu tests + # the toolchain is not complete with headers, only build system tests continue ;; *-softmmu) From a492e287e5d5d2b888e5f2580b4e9e41b6057a05 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 14:48:50 +0200 Subject: [PATCH 18/25] cutils: squelch compiler warnings with custom paths Setting --bindir= to an absolute path that is shorter than the prefix causes GCC to complain about array accesses out of bounds. The code however is safe, so disable the warning and explain why we are doing so. Signed-off-by: Paolo Bonzini --- util/cutils.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/util/cutils.c b/util/cutils.c index 25373198ad..3856e304c5 100644 --- a/util/cutils.c +++ b/util/cutils.c @@ -1012,8 +1012,17 @@ int qemu_pstrcmp0(const char **str1, const char **str2) static inline bool starts_with_prefix(const char *dir) { size_t prefix_len = strlen(CONFIG_PREFIX); + /* + * dir[prefix_len] is only accessed if the length of dir is + * >= prefix_len, so no out of bounds access is possible. + */ +#pragma GCC diagnostic push +#if !defined(__clang__) || __has_warning("-Warray-bounds=") +#pragma GCC diagnostic ignored "-Warray-bounds=" +#endif return !memcmp(dir, CONFIG_PREFIX, prefix_len) && (!dir[prefix_len] || G_IS_DIR_SEPARATOR(dir[prefix_len])); +#pragma GCC diagnostic pop } /* Return the next path component in dir, and store its length in *p_len. */ From c7c5caeb1f314c5662a3b2985fe3befebf45b650 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 12:36:39 +0200 Subject: [PATCH 19/25] audio: error hints need a trailing \n Signed-off-by: Paolo Bonzini --- audio/audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/audio.c b/audio/audio.c index 730bf2498d..98621576d9 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1833,7 +1833,7 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) card->state = audio_init(NULL, errp); if (!card->state) { if (!QSIMPLEQ_EMPTY(&audiodevs)) { - error_append_hint(errp, "Perhaps you wanted to set audiodev=%s?", + error_append_hint(errp, "Perhaps you wanted to set audiodev=%s?\n", QSIMPLEQ_FIRST(&audiodevs)->dev->id); } return false; From c753bf479ab75fe245c2de6a414b60b9e25a2bd7 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 11:55:03 +0200 Subject: [PATCH 20/25] audio: disable default backends if -audio/-audiodev is used Match what is done for other options, for example -monitor, and also the behavior of QEMU 8.1 (see the "legacy_config" variable). Require the user to specify a backend if one is specified on the command line. Signed-off-by: Paolo Bonzini --- audio/audio.c | 9 +-------- audio/audio.h | 1 + docs/about/removed-features.rst | 3 +++ system/vl.c | 7 +++++++ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 98621576d9..67a7e25254 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1688,14 +1688,10 @@ static const VMStateDescription vmstate_audio = { static void audio_validate_opts(Audiodev *dev, Error **errp); -static void audio_create_default_audiodevs(void) +void audio_create_default_audiodevs(void) { const char *drvname = getenv("QEMU_AUDIO_DRV"); - if (!defaults_enabled()) { - return; - } - /* QEMU_AUDIO_DRV=none is used by libqtest. */ if (drvname && !g_str_equal(drvname, "none")) { error_report("Please use -audiodev instead of QEMU_AUDIO_*"); @@ -1827,9 +1823,6 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) } card->state = QTAILQ_FIRST(&audio_states); } else { - if (QSIMPLEQ_EMPTY(&default_audiodevs)) { - audio_create_default_audiodevs(); - } card->state = audio_init(NULL, errp); if (!card->state) { if (!QSIMPLEQ_EMPTY(&audiodevs)) { diff --git a/audio/audio.h b/audio/audio.h index 80f3f92124..53b1d7e622 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -170,6 +170,7 @@ void audio_sample_from_uint64(void *samples, int pos, void audio_define(Audiodev *audio); void audio_parse_option(const char *opt); +void audio_create_default_audiodevs(void); void audio_init_audiodevs(void); void audio_help(void); diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index e83ed087f6..8a0a8fe076 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -442,6 +442,9 @@ line using a ``secret`` object instance. The ``-audiodev`` and ``-audio`` command line options are now the only way to specify audio backend settings. +Note that the default audio backend must be configured on the command +line if the ``-nodefaults`` options is used. + Creating vnc without ``audiodev=`` property (removed in 8.2) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' diff --git a/system/vl.c b/system/vl.c index 98e071e63b..7ca92d4490 100644 --- a/system/vl.c +++ b/system/vl.c @@ -184,6 +184,7 @@ static const char *qtest_log; static bool opt_one_insn_per_tb; static int has_defaults = 1; +static int default_audio = 1; static int default_serial = 1; static int default_parallel = 1; static int default_monitor = 1; @@ -1327,6 +1328,7 @@ static void qemu_disable_default_devices(void) default_sdcard = 0; } if (!has_defaults) { + default_audio = 0; default_monitor = 0; default_net = 0; default_vga = 0; @@ -1963,6 +1965,9 @@ static void qemu_create_early_backends(void) */ configure_blockdev(&bdo_queue, machine_class, snapshot); audio_init_audiodevs(); + if (default_audio) { + audio_create_default_audiodevs(); + } } @@ -2925,6 +2930,7 @@ void qemu_init(int argc, char **argv) break; #endif case QEMU_OPTION_audiodev: + default_audio = 0; audio_parse_option(optarg); break; case QEMU_OPTION_audio: { @@ -2933,6 +2939,7 @@ void qemu_init(int argc, char **argv) Audiodev *dev = NULL; Visitor *v; QDict *dict = keyval_parse(optarg, "driver", &help, &error_fatal); + default_audio = 0; if (help || (qdict_haskey(dict, "driver") && is_help_option(qdict_get_str(dict, "driver")))) { audio_help(); From 8f527a3c0d2866df1affe8f0fb8ab73fbbb8ac52 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 12:17:28 +0200 Subject: [PATCH 21/25] audio: extract audio_define_default It will be used soon to define a default audio device from the command line. Signed-off-by: Paolo Bonzini --- audio/audio.c | 19 ++++++++++++------- audio/audio.h | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 67a7e25254..887219e0ce 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1686,8 +1686,6 @@ static const VMStateDescription vmstate_audio = { } }; -static void audio_validate_opts(Audiodev *dev, Error **errp); - void audio_create_default_audiodevs(void) { const char *drvname = getenv("QEMU_AUDIO_DRV"); @@ -1706,7 +1704,6 @@ void audio_create_default_audiodevs(void) if (audio_driver_lookup(audio_prio_list[i])) { QDict *dict = qdict_new(); Audiodev *dev = NULL; - AudiodevListEntry *e; Visitor *v; qdict_put_str(dict, "driver", audio_prio_list[i]); @@ -1717,10 +1714,7 @@ void audio_create_default_audiodevs(void) visit_type_Audiodev(v, NULL, &dev, &error_fatal); visit_free(v); - audio_validate_opts(dev, &error_abort); - e = g_new0(AudiodevListEntry, 1); - e->dev = dev; - QSIMPLEQ_INSERT_TAIL(&default_audiodevs, e, next); + audio_define_default(dev, &error_abort); } } } @@ -2165,6 +2159,17 @@ void audio_define(Audiodev *dev) QSIMPLEQ_INSERT_TAIL(&audiodevs, e, next); } +void audio_define_default(Audiodev *dev, Error **errp) +{ + AudiodevListEntry *e; + + audio_validate_opts(dev, errp); + + e = g_new0(AudiodevListEntry, 1); + e->dev = dev; + QSIMPLEQ_INSERT_TAIL(&default_audiodevs, e, next); +} + void audio_init_audiodevs(void) { AudiodevListEntry *e; diff --git a/audio/audio.h b/audio/audio.h index 53b1d7e622..6da5e8f6f0 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -169,6 +169,7 @@ void audio_sample_from_uint64(void *samples, int pos, uint64_t left, uint64_t right); void audio_define(Audiodev *audio); +void audio_define_default(Audiodev *dev, Error **errp); void audio_parse_option(const char *opt); void audio_create_default_audiodevs(void); void audio_init_audiodevs(void); From 1ebdbff4c37d820b6a97d4c6f24aa38dae302b51 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 21 Sep 2023 10:23:58 +0200 Subject: [PATCH 22/25] audio: extend -audio to allow creating a default backend If "-audio BACKEND" is used without a model, the resulting backend will be used whenever the audiodev property is not specified. Signed-off-by: Paolo Bonzini --- audio/audio.c | 2 +- qemu-options.hx | 29 +++++++++++++++++++++-------- system/vl.c | 27 +++++++++++++++------------ 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 887219e0ce..a5e6eb4952 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1820,7 +1820,7 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) card->state = audio_init(NULL, errp); if (!card->state) { if (!QSIMPLEQ_EMPTY(&audiodevs)) { - error_append_hint(errp, "Perhaps you wanted to set audiodev=%s?\n", + error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", QSIMPLEQ_FIRST(&audiodevs)->dev->id); } return false; diff --git a/qemu-options.hx b/qemu-options.hx index 840b83d237..54a7e94970 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -728,20 +728,22 @@ ERST DEF("audio", HAS_ARG, QEMU_OPTION_audio, + "-audio [driver=]driver[,prop[=value][,...]]\n" + " specifies default audio backend when `audiodev` is not\n" + " used to create a machine or sound device;" + " options are the same as for -audiodev\n" "-audio [driver=]driver,model=value[,prop[=value][,...]]\n" " specifies the audio backend and device to use;\n" " apart from 'model', options are the same as for -audiodev.\n" " use '-audio model=help' to show possible devices.\n", QEMU_ARCH_ALL) SRST -``-audio [driver=]driver,model=value[,prop[=value][,...]]`` - This option is a shortcut for configuring both the guest audio - hardware and the host audio backend in one go. - The driver option is the same as with the corresponding ``-audiodev`` option below. - The guest hardware model can be set with ``model=modelname``. - - Use ``driver=help`` to list the available drivers, - and ``model=help`` to list the available device types. +``-audio [driver=]driver[,model=value][,prop[=value][,...]]`` + If the ``model`` option is specified, ``-audio`` is a shortcut + for configuring both the guest audio hardware and the host audio + backend in one go. The guest hardware model can be set with + ``model=modelname``. Use ``model=help`` to list the available + device types. The following two example do exactly the same, to show how ``-audio`` can be used to shorten the command line length: @@ -750,6 +752,17 @@ SRST |qemu_system| -audiodev pa,id=pa -device sb16,audiodev=pa |qemu_system| -audio pa,model=sb16 + + If the ``model`` option is not specified, ``-audio`` is used to + configure a default audio backend that will be used whenever the + ``audiodev`` property is not set on a device or machine. In + particular, ``-audio none`` ensures that no audio is produced even + for machines that have embedded sound hardware. + + In both cases, the driver option is the same as with the corresponding + ``-audiodev`` option below. Use ``driver=help`` to list the available + drivers. + ERST DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev, diff --git a/system/vl.c b/system/vl.c index 7ca92d4490..72be5a4976 100644 --- a/system/vl.c +++ b/system/vl.c @@ -2935,7 +2935,7 @@ void qemu_init(int argc, char **argv) break; case QEMU_OPTION_audio: { bool help; - char *model; + char *model = NULL; Audiodev *dev = NULL; Visitor *v; QDict *dict = keyval_parse(optarg, "driver", &help, &error_fatal); @@ -2948,22 +2948,25 @@ void qemu_init(int argc, char **argv) if (!qdict_haskey(dict, "id")) { qdict_put_str(dict, "id", "audiodev0"); } - if (!qdict_haskey(dict, "model")) { - error_setg(&error_fatal, "Parameter 'model' is missing"); - } - model = g_strdup(qdict_get_str(dict, "model")); - qdict_del(dict, "model"); - if (is_help_option(model)) { - show_valid_soundhw(); - exit(0); + if (qdict_haskey(dict, "model")) { + model = g_strdup(qdict_get_str(dict, "model")); + qdict_del(dict, "model"); + if (is_help_option(model)) { + show_valid_soundhw(); + exit(0); + } } v = qobject_input_visitor_new_keyval(QOBJECT(dict)); qobject_unref(dict); visit_type_Audiodev(v, NULL, &dev, &error_fatal); visit_free(v); - audio_define(dev); - select_soundhw(model, dev->id); - g_free(model); + if (model) { + audio_define(dev); + select_soundhw(model, dev->id); + g_free(model); + } else { + audio_define_default(dev, &error_fatal); + } break; } case QEMU_OPTION_h: From 22f84d4f7882d881a5f8574430da62c7ce5a0731 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 17:09:36 +0200 Subject: [PATCH 23/25] audio: do not use first -audiodev as default audio device It is now possible to specify the options for the default audio device using -audio, so there is no need anymore to use a fake -audiodev option. Remove the fall back to QTAILQ_FIRST(&audio_states), instead remember the AudioState that was created from default_audiodevs and use that one. Signed-off-by: Paolo Bonzini --- audio/audio.c | 25 +++++++------------------ docs/about/deprecated.rst | 6 ------ docs/about/removed-features.rst | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index a5e6eb4952..bd4bcabcca 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -104,6 +104,7 @@ static audio_driver *audio_driver_lookup(const char *name) static QTAILQ_HEAD(AudioStateHead, AudioState) audio_states = QTAILQ_HEAD_INITIALIZER(audio_states); +static AudioState *default_audio_state; const struct mixeng_volume nominal_volume = { .mute = 0, @@ -1660,6 +1661,7 @@ static void free_audio_state(AudioState *s) void audio_cleanup(void) { + default_audio_state = NULL; while (!QTAILQ_EMPTY(&audio_states)) { AudioState *s = QTAILQ_FIRST(&audio_states); QTAILQ_REMOVE(&audio_states, s, list); @@ -1760,6 +1762,7 @@ static AudioState *audio_init(Audiodev *dev, Error **errp) goto out; } } else { + assert(!default_audio_state); for (;;) { AudiodevListEntry *e = QSIMPLEQ_FIRST(&default_audiodevs); if (!e) { @@ -1801,24 +1804,9 @@ out: bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) { if (!card->state) { - if (!QTAILQ_EMPTY(&audio_states)) { - /* - * FIXME: once it is possible to create an arbitrary - * default device via -audio DRIVER,OPT=VALUE (no "model"), - * replace this special case with the default AudioState*, - * storing it in a separate global. For now, keep the - * warning to encourage moving off magic use of the first - * -audiodev. - */ - if (QSIMPLEQ_EMPTY(&default_audiodevs)) { - dolog("Device %s: audiodev default parameter is deprecated, please " - "specify audiodev=%s\n", name, - QTAILQ_FIRST(&audio_states)->dev->id); - } - card->state = QTAILQ_FIRST(&audio_states); - } else { - card->state = audio_init(NULL, errp); - if (!card->state) { + if (!default_audio_state) { + default_audio_state = audio_init(NULL, errp); + if (!default_audio_state) { if (!QSIMPLEQ_EMPTY(&audiodevs)) { error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", QSIMPLEQ_FIRST(&audiodevs)->dev->id); @@ -1826,6 +1814,7 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) return false; } } + card->state = default_audio_state; } card->name = g_strdup (name); diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 3b074b9ed4..8b136320e2 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -23,12 +23,6 @@ deprecated. System emulator command line arguments -------------------------------------- -Creating sound card devices without ``audiodev=`` property (since 4.2) -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -When not using the deprecated legacy audio config, each sound card -should specify an ``audiodev=`` property. - Short-form boolean options (since 6.0) '''''''''''''''''''''''''''''''''''''' diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index 8a0a8fe076..ed94b4cd0c 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -442,6 +442,21 @@ line using a ``secret`` object instance. The ``-audiodev`` and ``-audio`` command line options are now the only way to specify audio backend settings. +Using ``-audiodev`` to define the default audio backend (removed in 8.2) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +If no audiodev property is specified, previous versions would use the +first ``-audiodev`` command line option as a fallback. Starting with +version 8.2, audio backends created with ``-audiodev`` will only be +used by clients (sound cards, machines with embedded sound hardware, VNC) +that refer to it in an ``audiodev=`` property. + +In order to configure a default audio backend, use the ``-audio`` +command line option without specifying a ``model``; while previous +versions of QEMU required a model, starting with version 8.2 +QEMU does not require a model and will not create any sound card +in this case. + Note that the default audio backend must be configured on the command line if the ``-nodefaults`` options is used. From 63a13c08055072e92129a1d0ffeeecdcac6ad3d4 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 18:42:54 +0200 Subject: [PATCH 24/25] audio: reintroduce default audio backend for VNC Make VNC use the default backend again if one is defined. The recently introduced support for disabling the VNC audio extension is still used, in case no default backend exists. Signed-off-by: Paolo Bonzini --- audio/audio.c | 28 ++++++++++++++++++---------- audio/audio.h | 1 + docs/about/removed-features.rst | 6 ------ ui/vnc.c | 2 ++ 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index bd4bcabcca..73b65dc3b9 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1801,20 +1801,28 @@ out: return NULL; } +AudioState *audio_get_default_audio_state(Error **errp) +{ + if (!default_audio_state) { + default_audio_state = audio_init(NULL, errp); + if (!default_audio_state) { + if (!QSIMPLEQ_EMPTY(&audiodevs)) { + error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", + QSIMPLEQ_FIRST(&audiodevs)->dev->id); + } + } + } + + return default_audio_state; +} + bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) { if (!card->state) { - if (!default_audio_state) { - default_audio_state = audio_init(NULL, errp); - if (!default_audio_state) { - if (!QSIMPLEQ_EMPTY(&audiodevs)) { - error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", - QSIMPLEQ_FIRST(&audiodevs)->dev->id); - } - return false; - } + card->state = audio_get_default_audio_state(errp); + if (!card->state) { + return false; } - card->state = default_audio_state; } card->name = g_strdup (name); diff --git a/audio/audio.h b/audio/audio.h index 6da5e8f6f0..fcc22307be 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -176,6 +176,7 @@ void audio_init_audiodevs(void); void audio_help(void); AudioState *audio_state_by_name(const char *name, Error **errp); +AudioState *audio_get_default_audio_state(Error **errp); const char *audio_get_id(QEMUSoundCard *card); #define DEFINE_AUDIO_PROPERTIES(_s, _f) \ diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index ed94b4cd0c..f04036987b 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -460,12 +460,6 @@ in this case. Note that the default audio backend must be configured on the command line if the ``-nodefaults`` options is used. -Creating vnc without ``audiodev=`` property (removed in 8.2) -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -When using vnc, you should specify an ``audiodev=`` property if -you plan to transmit audio through the VNC protocol. - QEMU Machine Protocol (QMP) commands ------------------------------------ diff --git a/ui/vnc.c b/ui/vnc.c index 6056028e49..4f23a0fa79 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -4185,6 +4185,8 @@ void vnc_display_open(const char *id, Error **errp) if (!vd->audio_state) { goto fail; } + } else { + vd->audio_state = audio_get_default_audio_state(NULL); } device_id = qemu_opt_get(opts, "display"); From 912eef205ae9ccfd477c343a51a7c2dcfae2ba43 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 5 Oct 2023 11:45:55 +0200 Subject: [PATCH 25/25] audio, qtest: get rid of QEMU_AUDIO_DRV Default audio devices can now be created with "-audio". Tests for soundcards were already using "-audiodev" if they want to specify a particular backend, for the others remove the last remnants of legacy audio configuration. Signed-off-by: Paolo Bonzini --- audio/audio.c | 12 ------------ tests/qtest/libqtest.c | 4 +--- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 73b65dc3b9..e9815d6812 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1690,19 +1690,7 @@ static const VMStateDescription vmstate_audio = { void audio_create_default_audiodevs(void) { - const char *drvname = getenv("QEMU_AUDIO_DRV"); - - /* QEMU_AUDIO_DRV=none is used by libqtest. */ - if (drvname && !g_str_equal(drvname, "none")) { - error_report("Please use -audiodev instead of QEMU_AUDIO_*"); - exit(1); - } - for (int i = 0; audio_prio_list[i]; i++) { - if (drvname && !g_str_equal(drvname, audio_prio_list[i])) { - continue; - } - if (audio_driver_lookup(audio_prio_list[i])) { QDict *dict = qdict_new(); Audiodev *dev = NULL; diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index b1eba71ffe..3f94a4f477 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -421,9 +421,6 @@ static QTestState *G_GNUC_PRINTF(1, 2) qtest_spawn_qemu(const char *fmt, ...) int sig = SIGKILL; procctl(P_PID, getpid(), PROC_PDEATHSIG_CTL, &sig); #endif /* __FreeBSD__ */ - if (!g_setenv("QEMU_AUDIO_DRV", "none", true)) { - exit(1); - } execlp("/bin/sh", "sh", "-c", command->str, NULL); exit(1); } @@ -464,6 +461,7 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args) "-chardev socket,path=%s,id=char0 " "-mon chardev=char0,mode=control " "-display none " + "-audio none " "%s" " -accel qtest", socket_path,