mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'pull-request-2023-05-15v2' of https://gitlab.com/thuth/qemu into staging
* Various small test updates * Some small doc updates * Introduce replacement for -async-teardown that shows up in the QAPI * Make machine-qmp-cmds.c and xilinx_ethlite.c target-independent * Fix s390x LDER instruction * Fix s390x EXECUTE instruction with relative branches # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmRjagURHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbVyPxAAhlqIbVWir264DQkpLKM/4CVWPxVPwBxh # OPvSG42wM7+uCNefnIWYr4qT1+Iz14w8OYBCEON2u8Pwfgxrjf2ZkS2C79iL3FHG # 37NsFGkxhLLeexzYyCpSg3FNikZql+RNg9I9um4NRPH0lgu4L3aQk58WyXFyBHU2 # mxvbAEOyiSbGr8bp6ZcU7k1UryRZ6qQoBUzFvMQpUD7jlo88MVUu5D+4xZclH6EV # R6WerbyKUWnfY0rFWxA8RGt785aUVq9iD8tIkPkPhQ/UjvzZKosCHIpjF0qCkd6P # 42Ahz6kP7Ce/XlTcS/Q3gIEzKViCFJtZiZIG/N2sBAWqisTkaSKDeQMrM6vAmmBr # ju44CUk2tupZSG20G/Gz7a09ZKr3S7+6BpJ+tUdnK2W9PSU7CycesZ6s9hqKJL8W # QUOMKyEMF/+W+pubdfYJNvUha6hYPoaR9vTNAhC50NiahhhIxIRcyRtpteVgsjwW # lxHMeIz8PUHxp+tvl3CzLZyDWF0maq5/JzhkCoUhvzVUAh+tDYAfWOKxIxEVNPVt # E1Igj6N4TYvkrXltSyxMxs9uHWhNi4ObETbB+7greYOWFVhtKhphnG78wt0uu81O # iZIqdLzWFeqaH5/Li3VnuVhLDnhSfpDiWUNqaVvWu6V5WrXDuIGQoe7pxAhRvZTB # zsOUpGdprPo= # =sWOT # -----END PGP SIGNATURE----- # gpg: Signature made Tue 16 May 2023 04:33:25 AM PDT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [undefined] # gpg: aka "Thomas Huth <thuth@redhat.com>" [undefined] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2023-05-15v2' of https://gitlab.com/thuth/qemu: (21 commits) tests/tcg/s390x: Test EXECUTE of relative branches target/s390x: Fix EXECUTE of relative branches tests/tcg/s390x: Enable the multiarch system tests tests/tcg/multiarch: Make the system memory test work on big-endian s390x/tcg: Fix LDER instruction format hw/net: Move xilinx_ethlite.c to the target-independent source set hw/core: Move machine-qmp-cmds.c into the target independent source set cpu: Introduce a wrapper for being able to use TARGET_NAME in common code hw/core: Use a callback for target specific query-cpus-fast information docs/about/emulation: fix typo docs/devel: remind developers to run CI container pipeline when updating images s390x/pv: Fix spurious warning with asynchronous teardown util/async-teardown: wire up query-command-line-options tests/lcitool: Add mtools and xorriso and remove genisoimage as dependencies tests: libvirt-ci: Update to commit 'c8971e90ac' to pull in mformat and xorriso Add information how to fix common build error on Windows in symlink-install-tree hw/pci-bridge: Fix release ordering by embedding PCIBridgeWindows within PCIBridge tests/qtest: replace qmp_discard_response with qtest_qmp_assert_success net: stream: test reconnect option with an unix socket sysemu/kvm: Remove unused headers ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
@@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PACKAGING_COMMAND='pkg'
|
||||
PIP3='/usr/local/bin/pip-3.8'
|
||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 zstd'
|
||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson mtools ncurses nettle ninja opencv pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 xorriso zstd'
|
||||
PYPI_PKGS=''
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
|
||||
@@ -11,6 +11,6 @@ MAKE='/opt/homebrew/bin/gmake'
|
||||
NINJA='/opt/homebrew/bin/ninja'
|
||||
PACKAGING_COMMAND='brew'
|
||||
PIP3='/opt/homebrew/bin/pip3'
|
||||
PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol tesseract usbredir vde vte3 zlib zstd'
|
||||
PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson mtools ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol tesseract usbredir vde vte3 xorriso zlib zstd'
|
||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme'
|
||||
PYTHON='/opt/homebrew/bin/python3'
|
||||
|
||||
@@ -427,6 +427,11 @@ bool target_words_bigendian(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *target_name(void)
|
||||
{
|
||||
return TARGET_NAME;
|
||||
}
|
||||
|
||||
void page_size_init(void)
|
||||
{
|
||||
/* NOTE: we can always suppose that qemu_host_page_size >=
|
||||
|
||||
@@ -111,6 +111,11 @@ Use ``-machine acpi=off`` instead.
|
||||
The HAXM project has been retired (see https://github.com/intel/haxm#status).
|
||||
Use "whpx" (on Windows) or "hvf" (on macOS) instead.
|
||||
|
||||
``-async-teardown`` (since 8.1)
|
||||
'''''''''''''''''''''''''''''''
|
||||
|
||||
Use ``-run-with async-teardown=on`` instead.
|
||||
|
||||
``-singlestep`` (since 8.1)
|
||||
'''''''''''''''''''''''''''
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ depending on the guest architecture.
|
||||
- Yes
|
||||
- A configurable 32 bit soft core now owned by Cadence
|
||||
|
||||
A number of features are are only available when running under
|
||||
A number of features are only available when running under
|
||||
emulation including :ref:`Record/Replay<replay>` and :ref:`TCG Plugins`.
|
||||
|
||||
.. _Semihosting:
|
||||
|
||||
@@ -479,6 +479,12 @@ first to contribute the mapping to the ``libvirt-ci`` project:
|
||||
contains the ``mappings.yml`` update. Then add the prerequisite and
|
||||
run ``make lcitool-refresh``.
|
||||
|
||||
* Please also trigger gitlab container generation pipelines on your change
|
||||
for as many OS distros as practical to make sure that there are no
|
||||
obvious breakages when adding the new pre-requisite. Please see
|
||||
`CI <https://www.qemu.org/docs/master/devel/ci.html>`__ documentation
|
||||
page on how to trigger gitlab CI pipelines on your change.
|
||||
|
||||
For enterprise distros that default to old, end-of-life versions of the
|
||||
Python runtime, QEMU uses a separate set of mappings that work with more
|
||||
recent versions. These can be found in ``tests/lcitool/mappings.yml``.
|
||||
|
||||
@@ -28,18 +28,6 @@
|
||||
#include "sysemu/runstate.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
|
||||
static void cpustate_to_cpuinfo_s390(CpuInfoS390 *info, const CPUState *cpu)
|
||||
{
|
||||
#ifdef TARGET_S390X
|
||||
S390CPU *s390_cpu = S390_CPU(cpu);
|
||||
CPUS390XState *env = &s390_cpu->env;
|
||||
|
||||
info->cpu_state = env->cpu_state;
|
||||
#else
|
||||
abort();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* fast means: we NEVER interrupt vCPU threads to retrieve
|
||||
* information from KVM.
|
||||
@@ -49,7 +37,7 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp)
|
||||
MachineState *ms = MACHINE(qdev_get_machine());
|
||||
MachineClass *mc = MACHINE_GET_CLASS(ms);
|
||||
CpuInfoFastList *head = NULL, **tail = &head;
|
||||
SysEmuTarget target = qapi_enum_parse(&SysEmuTarget_lookup, TARGET_NAME,
|
||||
SysEmuTarget target = qapi_enum_parse(&SysEmuTarget_lookup, target_name(),
|
||||
-1, &error_abort);
|
||||
CPUState *cpu;
|
||||
|
||||
@@ -68,8 +56,8 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp)
|
||||
}
|
||||
|
||||
value->target = target;
|
||||
if (target == SYS_EMU_TARGET_S390X) {
|
||||
cpustate_to_cpuinfo_s390(&value->u.s390x, cpu);
|
||||
if (cpu->cc->query_cpu_fast) {
|
||||
cpu->cc->query_cpu_fast(cpu, value);
|
||||
}
|
||||
|
||||
QAPI_LIST_APPEND(tail, value);
|
||||
@@ -129,7 +117,7 @@ TargetInfo *qmp_query_target(Error **errp)
|
||||
{
|
||||
TargetInfo *info = g_malloc0(sizeof(*info));
|
||||
|
||||
info->arch = qapi_enum_parse(&SysEmuTarget_lookup, TARGET_NAME, -1,
|
||||
info->arch = qapi_enum_parse(&SysEmuTarget_lookup, target_name(), -1,
|
||||
&error_abort);
|
||||
|
||||
return info;
|
||||
|
||||
+1
-4
@@ -41,6 +41,7 @@ softmmu_ss.add(files(
|
||||
'gpio.c',
|
||||
'loader.c',
|
||||
'machine-hmp-cmds.c',
|
||||
'machine-qmp-cmds.c',
|
||||
'machine.c',
|
||||
'nmi.c',
|
||||
'null-machine.c',
|
||||
@@ -51,7 +52,3 @@ softmmu_ss.add(files(
|
||||
'vm-change-state-handler.c',
|
||||
'clock-vmstate.c',
|
||||
))
|
||||
|
||||
specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files(
|
||||
'machine-qmp-cmds.c',
|
||||
))
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ softmmu_ss.add(when: 'CONFIG_NPCM7XX', if_true: files('npcm7xx_emc.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_ETRAXFS', if_true: files('etraxfs_eth.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_COLDFIRE', if_true: files('mcf_fec.c'))
|
||||
specific_ss.add(when: 'CONFIG_PSERIES', if_true: files('spapr_llan.c'))
|
||||
specific_ss.add(when: 'CONFIG_XILINX_ETHLITE', if_true: files('xilinx_ethlite.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_XILINX_ETHLITE', if_true: files('xilinx_ethlite.c'))
|
||||
|
||||
softmmu_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('net_rx_pkt.c'))
|
||||
specific_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('virtio-net.c'))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/module.h"
|
||||
#include "qom/object.h"
|
||||
#include "cpu.h" /* FIXME should not use tswap* */
|
||||
#include "exec/tswap.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/irq.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
|
||||
+8
-11
@@ -184,11 +184,11 @@ static void pci_bridge_init_vga_aliases(PCIBridge *br, PCIBus *parent,
|
||||
}
|
||||
}
|
||||
|
||||
static PCIBridgeWindows *pci_bridge_region_init(PCIBridge *br)
|
||||
static void pci_bridge_region_init(PCIBridge *br)
|
||||
{
|
||||
PCIDevice *pd = PCI_DEVICE(br);
|
||||
PCIBus *parent = pci_get_bus(pd);
|
||||
PCIBridgeWindows *w = g_new(PCIBridgeWindows, 1);
|
||||
PCIBridgeWindows *w = &br->windows;
|
||||
uint16_t cmd = pci_get_word(pd->config + PCI_COMMAND);
|
||||
|
||||
pci_bridge_init_alias(br, &w->alias_pref_mem,
|
||||
@@ -211,8 +211,6 @@ static PCIBridgeWindows *pci_bridge_region_init(PCIBridge *br)
|
||||
cmd & PCI_COMMAND_IO);
|
||||
|
||||
pci_bridge_init_vga_aliases(br, parent, w->alias_vga);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
static void pci_bridge_region_del(PCIBridge *br, PCIBridgeWindows *w)
|
||||
@@ -234,19 +232,18 @@ static void pci_bridge_region_cleanup(PCIBridge *br, PCIBridgeWindows *w)
|
||||
object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_IO_LO]));
|
||||
object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_IO_HI]));
|
||||
object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_MEM]));
|
||||
g_free(w);
|
||||
}
|
||||
|
||||
void pci_bridge_update_mappings(PCIBridge *br)
|
||||
{
|
||||
PCIBridgeWindows *w = br->windows;
|
||||
PCIBridgeWindows *w = &br->windows;
|
||||
|
||||
/* Make updates atomic to: handle the case of one VCPU updating the bridge
|
||||
* while another accesses an unaffected region. */
|
||||
memory_region_transaction_begin();
|
||||
pci_bridge_region_del(br, br->windows);
|
||||
pci_bridge_region_del(br, w);
|
||||
pci_bridge_region_cleanup(br, w);
|
||||
br->windows = pci_bridge_region_init(br);
|
||||
pci_bridge_region_init(br);
|
||||
memory_region_transaction_commit();
|
||||
}
|
||||
|
||||
@@ -385,7 +382,7 @@ void pci_bridge_initfn(PCIDevice *dev, const char *typename)
|
||||
sec_bus->address_space_io = &br->address_space_io;
|
||||
memory_region_init(&br->address_space_io, OBJECT(br), "pci_bridge_io",
|
||||
4 * GiB);
|
||||
br->windows = pci_bridge_region_init(br);
|
||||
pci_bridge_region_init(br);
|
||||
QLIST_INIT(&sec_bus->child);
|
||||
QLIST_INSERT_HEAD(&parent->child, sec_bus, sibling);
|
||||
}
|
||||
@@ -396,8 +393,8 @@ void pci_bridge_exitfn(PCIDevice *pci_dev)
|
||||
PCIBridge *s = PCI_BRIDGE(pci_dev);
|
||||
assert(QLIST_EMPTY(&s->sec_bus.child));
|
||||
QLIST_REMOVE(&s->sec_bus, sibling);
|
||||
pci_bridge_region_del(s, s->windows);
|
||||
pci_bridge_region_cleanup(s, s->windows);
|
||||
pci_bridge_region_del(s, &s->windows);
|
||||
pci_bridge_region_cleanup(s, &s->windows);
|
||||
/* object_unparent() is called automatically during device deletion */
|
||||
}
|
||||
|
||||
|
||||
+8
-2
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <linux/kvm.h>
|
||||
|
||||
#include "qemu/units.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "sysemu/kvm.h"
|
||||
@@ -115,7 +116,7 @@ static void *s390_pv_do_unprot_async_fn(void *p)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool s390_pv_vm_try_disable_async(void)
|
||||
bool s390_pv_vm_try_disable_async(S390CcwMachineState *ms)
|
||||
{
|
||||
/*
|
||||
* t is only needed to create the thread; once qemu_thread_create
|
||||
@@ -123,7 +124,12 @@ bool s390_pv_vm_try_disable_async(void)
|
||||
*/
|
||||
QemuThread t;
|
||||
|
||||
if (!kvm_check_extension(kvm_state, KVM_CAP_S390_PROTECTED_ASYNC_DISABLE)) {
|
||||
/*
|
||||
* If the feature is not present or if the VM is not larger than 2 GiB,
|
||||
* KVM_PV_ASYNC_CLEANUP_PREPARE fill fail; no point in attempting it.
|
||||
*/
|
||||
if ((MACHINE(ms)->maxram_size <= 2 * GiB) ||
|
||||
!kvm_check_extension(kvm_state, KVM_CAP_S390_PROTECTED_ASYNC_DISABLE)) {
|
||||
return false;
|
||||
}
|
||||
if (s390_pv_cmd(KVM_PV_ASYNC_CLEANUP_PREPARE, NULL) != 0) {
|
||||
|
||||
@@ -330,7 +330,7 @@ static inline void s390_do_cpu_ipl(CPUState *cs, run_on_cpu_data arg)
|
||||
|
||||
static void s390_machine_unprotect(S390CcwMachineState *ms)
|
||||
{
|
||||
if (!s390_pv_vm_try_disable_async()) {
|
||||
if (!s390_pv_vm_try_disable_async(ms)) {
|
||||
s390_pv_vm_disable();
|
||||
}
|
||||
ms->pv = false;
|
||||
|
||||
@@ -106,6 +106,9 @@ struct SysemuCPUOps;
|
||||
* @has_work: Callback for checking if there is work to do.
|
||||
* @memory_rw_debug: Callback for GDB memory access.
|
||||
* @dump_state: Callback for dumping state.
|
||||
* @query_cpu_fast:
|
||||
* Fill in target specific information for the "query-cpus-fast"
|
||||
* QAPI call.
|
||||
* @get_arch_id: Callback for getting architecture-dependent CPU ID.
|
||||
* @set_pc: Callback for setting the Program Counter register. This
|
||||
* should have the semantics used by the target architecture when
|
||||
@@ -151,6 +154,7 @@ struct CPUClass {
|
||||
int (*memory_rw_debug)(CPUState *cpu, vaddr addr,
|
||||
uint8_t *buf, int len, bool is_write);
|
||||
void (*dump_state)(CPUState *cpu, FILE *, int flags);
|
||||
void (*query_cpu_fast)(CPUState *cpu, CpuInfoFast *value);
|
||||
int64_t (*get_arch_id)(CPUState *cpu);
|
||||
void (*set_pc)(CPUState *cpu, vaddr value);
|
||||
vaddr (*get_pc)(CPUState *cpu);
|
||||
@@ -1009,6 +1013,8 @@ void cpu_exec_unrealizefn(CPUState *cpu);
|
||||
*/
|
||||
bool target_words_bigendian(void);
|
||||
|
||||
const char *target_name(void);
|
||||
|
||||
void page_size_init(void);
|
||||
|
||||
#ifdef NEED_CPU_H
|
||||
|
||||
@@ -73,7 +73,7 @@ struct PCIBridge {
|
||||
MemoryRegion address_space_mem;
|
||||
MemoryRegion address_space_io;
|
||||
|
||||
PCIBridgeWindows *windows;
|
||||
PCIBridgeWindows windows;
|
||||
|
||||
pci_map_irq_fn map_irq;
|
||||
const char *bus_name;
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
|
||||
#include "qapi/error.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "hw/s390x/s390-virtio-ccw.h"
|
||||
|
||||
#ifdef CONFIG_KVM
|
||||
#include "cpu.h"
|
||||
#include "hw/s390x/s390-virtio-ccw.h"
|
||||
|
||||
static inline bool s390_is_pv(void)
|
||||
{
|
||||
@@ -41,7 +41,7 @@ static inline bool s390_is_pv(void)
|
||||
int s390_pv_query_info(void);
|
||||
int s390_pv_vm_enable(void);
|
||||
void s390_pv_vm_disable(void);
|
||||
bool s390_pv_vm_try_disable_async(void);
|
||||
bool s390_pv_vm_try_disable_async(S390CcwMachineState *ms);
|
||||
int s390_pv_set_sec_parms(uint64_t origin, uint64_t length);
|
||||
int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak);
|
||||
void s390_pv_prep_reset(void);
|
||||
@@ -61,7 +61,7 @@ static inline bool s390_is_pv(void) { return false; }
|
||||
static inline int s390_pv_query_info(void) { return 0; }
|
||||
static inline int s390_pv_vm_enable(void) { return 0; }
|
||||
static inline void s390_pv_vm_disable(void) {}
|
||||
static inline bool s390_pv_vm_try_disable_async(void) { return false; }
|
||||
static inline bool s390_pv_vm_try_disable_async(S390CcwMachineState *ms) { return false; }
|
||||
static inline int s390_pv_set_sec_parms(uint64_t origin, uint64_t length) { return 0; }
|
||||
static inline int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak) { return 0; }
|
||||
static inline void s390_pv_prep_reset(void) {}
|
||||
|
||||
@@ -41,6 +41,7 @@ typedef struct CompatProperty CompatProperty;
|
||||
typedef struct ConfidentialGuestSupport ConfidentialGuestSupport;
|
||||
typedef struct CPUAddressSpace CPUAddressSpace;
|
||||
typedef struct CPUArchState CPUArchState;
|
||||
typedef struct CpuInfoFast CpuInfoFast;
|
||||
typedef struct CPUJumpCache CPUJumpCache;
|
||||
typedef struct CPUState CPUState;
|
||||
typedef struct CPUTLBEntryFull CPUTLBEntryFull;
|
||||
|
||||
@@ -14,9 +14,6 @@
|
||||
#ifndef QEMU_KVM_H
|
||||
#define QEMU_KVM_H
|
||||
|
||||
#include "qemu/queue.h"
|
||||
#include "hw/core/cpu.h"
|
||||
#include "exec/memattrs.h"
|
||||
#include "qemu/accel.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include <zlib.h>
|
||||
#include "hw/core/cpu.h"
|
||||
#include "qapi/error.h"
|
||||
#include "exec/ramblock.h"
|
||||
#include "exec/target_page.h"
|
||||
|
||||
+14
@@ -36,6 +36,8 @@
|
||||
#include "qemu/log.h"
|
||||
#include "sysemu/runstate.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "qemu/config-file.h"
|
||||
#include "qemu/option.h"
|
||||
|
||||
#ifdef CONFIG_LINUX
|
||||
#include <sys/prctl.h>
|
||||
@@ -152,9 +154,21 @@ int os_parse_cmd_args(int index, const char *optarg)
|
||||
daemonize = 1;
|
||||
break;
|
||||
#if defined(CONFIG_LINUX)
|
||||
/* deprecated */
|
||||
case QEMU_OPTION_asyncteardown:
|
||||
init_async_teardown();
|
||||
break;
|
||||
case QEMU_OPTION_run_with: {
|
||||
QemuOpts *opts = qemu_opts_parse_noisily(qemu_find_opts("run-with"),
|
||||
optarg, false);
|
||||
if (!opts) {
|
||||
exit(1);
|
||||
}
|
||||
if (qemu_opt_get_bool(opts, "async-teardown", false)) {
|
||||
init_async_teardown();
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return -1;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user