Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* util/log: re-allow switching away from stderr log file * finish audio configuration rework * cleanup HVF stubs * remove more mentions of softmmu # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmUi/kIUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroOXWwf/YW16QMzqdAPVHYRf9NcCneRF16El # t3lEod0q0sHhchPbh9e04aKbh+oBNeWu9sFyTl11Fwsi+DGmp/b28ziva75/4rfd # h5N9aX/z2jwPqy93IwPDu3soKXCCgTK+ywtD/5GLQwBGqxs7W2xUEEb7eCnVefHa # zwL3MOUqPICeqOnR1TNw9k3N3veF04D+rmchTwbAjAmx1f8EI+mK9VlGK9V8TUjP # 3HjpZYJluc0a92lR5VONJ7V25QfttsjLysTgpFwVAQPS6Frzatc/hWclfLYgw9vl # 2Irk83FV8gXPRl0XKNcqSDsv6h/yGP6TDFIB8QwRSRGBqIQi5aOlfBJzsQ== # =qbm7 # -----END PGP SIGNATURE----- # gpg: Signature made Sun 08 Oct 2023 15:08:50 EDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (25 commits) audio, qtest: get rid of QEMU_AUDIO_DRV audio: reintroduce default audio backend for VNC audio: do not use first -audiodev as default audio device audio: extend -audio to allow creating a default backend audio: extract audio_define_default audio: disable default backends if -audio/-audiodev is used audio: error hints need a trailing \n cutils: squelch compiler warnings with custom paths configure: change $softmmu to $system system: Rename softmmu/ directory as system/ meson: Rename target_softmmu_arch -> target_system_arch meson: Rename softmmu_mods -> system_mods target/i386: Rename i386_softmmu_kvm_ss -> i386_kvm_ss semihosting: Rename softmmu_FOO_user() -> uaccess_FOO_user() gdbstub: Rename 'softmmu' -> 'system' accel: Rename accel_softmmu* -> accel_system* tcg: Correct invalid mentions of 'softmmu' by 'system-mode' fuzz: Correct invalid mentions of 'softmmu' by 'system' cpu: Correct invalid mentions of 'softmmu' by 'system-mode' travis-ci: Correct invalid mentions of 'softmmu' by 'system' ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
1527c6b6fa
132 files changed
+305
-276
No files matched your search
+2
-2
@@ -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:
|
||||
|
||||
+21
-21
@@ -137,8 +137,8 @@ Overall TCG CPUs
|
||||
M: Richard Henderson <richard.henderson@linaro.org>
|
||||
R: Paolo Bonzini <pbonzini@redhat.com>
|
||||
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
|
||||
@@ -2114,7 +2114,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
|
||||
@@ -2801,7 +2801,7 @@ Device Tree
|
||||
M: Alistair Francis <alistair.francis@wdc.com>
|
||||
R: David Gibson <david@gibson.dropbear.id.au>
|
||||
S: Maintained
|
||||
F: softmmu/device_tree.c
|
||||
F: system/device_tree.c
|
||||
F: include/sysemu/device_tree.h
|
||||
|
||||
Dump
|
||||
@@ -2857,11 +2857,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
|
||||
|
||||
@@ -2914,12 +2914,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)
|
||||
@@ -3093,7 +3093,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
|
||||
@@ -3127,7 +3127,7 @@ M: Thomas Huth <thuth@redhat.com>
|
||||
M: Laurent Vivier <lvivier@redhat.com>
|
||||
R: Paolo Bonzini <pbonzini@redhat.com>
|
||||
S: Maintained
|
||||
F: softmmu/qtest.c
|
||||
F: system/qtest.c
|
||||
F: accel/qtest/
|
||||
F: tests/qtest/
|
||||
F: docs/devel/qgraph.rst
|
||||
@@ -3203,7 +3203,7 @@ F: scripts/simpletrace.py
|
||||
TPM
|
||||
M: Stefan Berger <stefanb@linux.ibm.com>
|
||||
S: Maintained
|
||||
F: softmmu/tpm*
|
||||
F: system/tpm*
|
||||
F: hw/tpm/*
|
||||
F: include/hw/acpi/tpm.h
|
||||
F: include/sysemu/tpm*
|
||||
@@ -3248,7 +3248,7 @@ F: migration/rdma*
|
||||
Migration dirty limit and dirty page rate
|
||||
M: Hyman Huang <yong.huang@smartx.com>
|
||||
S: Maintained
|
||||
F: softmmu/dirtylimit.c
|
||||
F: system/dirtylimit.c
|
||||
F: include/sysemu/dirtylimit.h
|
||||
F: migration/dirtyrate.c
|
||||
F: migration/dirtyrate.h
|
||||
@@ -3272,7 +3272,7 @@ F: scripts/xml-preprocess*
|
||||
Seccomp
|
||||
M: Daniel P. Berrange <berrange@redhat.com>
|
||||
S: Odd Fixes
|
||||
F: softmmu/qemu-seccomp.c
|
||||
F: system/qemu-seccomp.c
|
||||
F: include/sysemu/seccomp.h
|
||||
F: tests/unit/test-seccomp.c
|
||||
|
||||
@@ -3691,7 +3691,7 @@ T: git https://github.com/stefanha/qemu.git block
|
||||
Bootdevice
|
||||
M: Gonglei <arei.gonglei@huawei.com>
|
||||
S: Maintained
|
||||
F: softmmu/bootdevice.c
|
||||
F: system/bootdevice.c
|
||||
|
||||
Quorum
|
||||
M: Alberto Garcia <berto@igalia.com>
|
||||
|
||||
@@ -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);
|
||||
@@ -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 */
|
||||
@@ -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 = {
|
||||
|
||||
+1
-1
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
+34
-51
@@ -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);
|
||||
@@ -1686,31 +1688,12 @@ 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_*");
|
||||
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;
|
||||
AudiodevListEntry *e;
|
||||
Visitor *v;
|
||||
|
||||
qdict_put_str(dict, "driver", audio_prio_list[i]);
|
||||
@@ -1721,10 +1704,7 @@ static 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1770,6 +1750,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) {
|
||||
@@ -1808,36 +1789,27 @@ 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 (!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 {
|
||||
if (QSIMPLEQ_EMPTY(&default_audiodevs)) {
|
||||
audio_create_default_audiodevs();
|
||||
}
|
||||
card->state = audio_init(NULL, errp);
|
||||
if (!card->state) {
|
||||
if (!QSIMPLEQ_EMPTY(&audiodevs)) {
|
||||
error_append_hint(errp, "Perhaps you wanted to set audiodev=%s?",
|
||||
QSIMPLEQ_FIRST(&audiodevs)->dev->id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
card->state = audio_get_default_audio_state(errp);
|
||||
if (!card->state) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2172,6 +2144,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;
|
||||
|
||||
@@ -169,11 +169,14 @@ 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);
|
||||
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) \
|
||||
|
||||
@@ -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)
|
||||
|
||||
+1
-1
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
|
||||
@@ -442,11 +442,23 @@ line using a ``secret`` object instance.
|
||||
The ``-audiodev`` and ``-audio`` command line options are now the only
|
||||
way to specify audio backend settings.
|
||||
|
||||
Creating vnc without ``audiodev=`` property (removed in 8.2)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
Using ``-audiodev`` to define the default audio backend (removed in 8.2)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
When using vnc, you should specify an ``audiodev=`` property if
|
||||
you plan to transmit audio through the VNC protocol.
|
||||
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.
|
||||
|
||||
QEMU Machine Protocol (QMP) commands
|
||||
------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -81,7 +81,7 @@ which you can run manually.
|
||||
QTest Protocol
|
||||
--------------
|
||||
|
||||
.. kernel-doc:: softmmu/qtest.c
|
||||
.. kernel-doc:: system/qtest.c
|
||||
:doc: QTest Protocol
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
+2
-2
@@ -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,
|
||||
|
||||
+5
-5
@@ -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'))
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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 ""
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
File renamed without changes.
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
+11
-11
@@ -3198,7 +3198,7 @@ modules = {}
|
||||
target_modules = {}
|
||||
hw_arch = {}
|
||||
target_arch = {}
|
||||
target_softmmu_arch = {}
|
||||
target_system_arch = {}
|
||||
target_user_arch = {}
|
||||
|
||||
###############
|
||||
@@ -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:
|
||||
@@ -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: '',
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
+21
-8
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -148,7 +148,7 @@ tcg
|
||||
~ (/qemu)?(/accel/tcg|/replay|/tcg)/.*
|
||||
|
||||
sysemu
|
||||
~ (/qemu)?(/softmmu/.*|/accel/.*)
|
||||
~ (/qemu)?(/system/.*|/accel/.*)
|
||||
|
||||
(headers)
|
||||
~ (/qemu)?(/include/.*)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
#include "qemu.h"
|
||||
#else
|
||||
#include "semihosting/softmmu-uaccess.h"
|
||||
#include "semihosting/uaccess.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "trace/trace-softmmu.h"
|
||||
+2
-2
@@ -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
|
||||
*/
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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 */
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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
|
||||
File renamed without changes.
File renamed without changes.
@@ -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;
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
#include "trace/trace-system.h"
|
||||
+22
-12
@@ -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,14 +2930,16 @@ 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: {
|
||||
bool help;
|
||||
char *model;
|
||||
char *model = NULL;
|
||||
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();
|
||||
@@ -2941,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:
|
||||
File renamed without changes.
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
+2
-1
@@ -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"
|
||||
@@ -718,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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -16,11 +16,7 @@
|
||||
#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"
|
||||
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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
@@ -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}
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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"
|
||||
|
||||
@@ -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}
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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
|
||||
|
||||
@@ -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()}
|
||||
@@ -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}
|
||||
Loaded 100 of 132 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user