mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/stsquad/tags/pull-6.0-rc0-fixed-240321-1' into staging
Various fixes for 6.0: - include kernel-doc API reference for plugins - fix semihosting SYS_HEAPINFO - various tweaks to improve CI runtime - more stroz fixes - fix iotest CI regressions # gpg: Signature made Wed 24 Mar 2021 14:28:24 GMT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full] # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * remotes/stsquad/tags/pull-6.0-rc0-fixed-240321-1: (22 commits) gitlab: default to not building the documentation iotests: iothreads need ioeventfd iotests: test m68k with the virt machine iotests: Revert "iotests: use -ccw on s390x for 040, 139, and 182" blockdev: with -drive if=virtio, use generic virtio-blk m68k: add the virtio devices aliases qdev: define list of archs with virtio-pci or virtio-ccw gitlab: extend timeouts for CFI builds utils: Work around mingw strto*l bug with 0x utils: Tighter tests for qemu_strtosz cirrus.yml: Update the FreeBSD task to version 12.2 configure: Don't use the __atomic_*_16 functions for testing 128-bit support gitlab-ci.yml: Merge the trace-backend testing into other jobs tests/tcg: add HeapInfo checking to semihosting test linux-user/riscv: initialise the TaskState heap/stack info semihosting/arm-compat-semi: don't use SET_ARG to report SYS_HEAPINFO semihosting/arm-compat-semi: unify GET/SET_ARG helpers semihosting: move semihosting tests to multiarch tools/virtiofsd: include --socket-group in help docs/devel: expand style section of memory management ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
+5
-2
@@ -3,7 +3,7 @@ env:
|
||||
|
||||
freebsd_12_task:
|
||||
freebsd_instance:
|
||||
image_family: freebsd-12-1
|
||||
image_family: freebsd-12-2
|
||||
cpu: 8
|
||||
memory: 8G
|
||||
install_script:
|
||||
@@ -13,7 +13,10 @@ freebsd_12_task:
|
||||
script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --enable-werror || { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
# TODO: Enable gnutls again once FreeBSD's libtasn1 got fixed
|
||||
# See: https://gitlab.com/gnutls/libtasn1/-/merge_requests/71
|
||||
- ../configure --enable-werror --disable-gnutls
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- gmake -j$(sysctl -n hw.ncpu)
|
||||
- gmake -j$(sysctl -n hw.ncpu) check V=1
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
- mkdir build
|
||||
- cd build
|
||||
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
||||
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-user
|
||||
--target-list-exclude="arm-softmmu cris-softmmu i386-softmmu
|
||||
microblaze-softmmu mips-softmmu mipsel-softmmu mips64-softmmu
|
||||
ppc-softmmu sh4-softmmu xtensa-softmmu"
|
||||
../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
||||
--disable-user --target-list-exclude="arm-softmmu cris-softmmu
|
||||
i386-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu
|
||||
mips64-softmmu ppc-softmmu sh4-softmmu xtensa-softmmu"
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
|
||||
# Job to cross-build specific accelerators.
|
||||
@@ -25,8 +25,8 @@
|
||||
- mkdir build
|
||||
- cd build
|
||||
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
||||
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-tools
|
||||
--enable-${ACCEL:-kvm} $ACCEL_CONFIGURE_OPTS
|
||||
../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
||||
--disable-tools --enable-${ACCEL:-kvm} $ACCEL_CONFIGURE_OPTS
|
||||
- make -j$(expr $(nproc) + 1) all check-build
|
||||
|
||||
.cross_user_build_job:
|
||||
@@ -36,7 +36,8 @@
|
||||
- mkdir build
|
||||
- cd build
|
||||
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
|
||||
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-system
|
||||
../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
||||
--disable-system
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
|
||||
cross-armel-system:
|
||||
|
||||
+11
-32
@@ -23,9 +23,9 @@ include:
|
||||
- cd build
|
||||
- if test -n "$TARGETS";
|
||||
then
|
||||
../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
|
||||
../configure --enable-werror --disable-docs $CONFIGURE_ARGS --target-list="$TARGETS" ;
|
||||
else
|
||||
../configure --enable-werror $CONFIGURE_ARGS ;
|
||||
../configure --enable-werror --disable-docs $CONFIGURE_ARGS ;
|
||||
fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
|
||||
- if test -n "$LD_JOBS";
|
||||
then
|
||||
@@ -87,7 +87,7 @@ build-system-alpine:
|
||||
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
|
||||
moxie-softmmu microblazeel-softmmu mips64el-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
CONFIGURE_ARGS: --enable-docs
|
||||
CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@@ -119,7 +119,7 @@ build-system-ubuntu:
|
||||
job: amd64-ubuntu2004-container
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-fdt=system --enable-slirp=system
|
||||
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
|
||||
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
|
||||
moxie-softmmu microblazeel-softmmu mips64el-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
@@ -502,6 +502,7 @@ build-cfi-aarch64:
|
||||
--enable-safe-stack --enable-slirp=git
|
||||
TARGETS: aarch64-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
timeout: 70m
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@@ -538,6 +539,7 @@ build-cfi-ppc64-s390x:
|
||||
--enable-safe-stack --enable-slirp=git
|
||||
TARGETS: ppc64-softmmu s390x-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
timeout: 70m
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@@ -574,6 +576,7 @@ build-cfi-x86_64:
|
||||
--enable-safe-stack --enable-slirp=git
|
||||
TARGETS: x86_64-softmmu
|
||||
MAKE_CHECK_ARGS: check-build
|
||||
timeout: 70m
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@@ -604,8 +607,8 @@ tsan-build:
|
||||
job: amd64-ubuntu2004-container
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 --disable-docs
|
||||
--enable-fdt=system --enable-slirp=system
|
||||
CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
|
||||
--enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
|
||||
TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
|
||||
MAKE_CHECK_ARGS: bench V=1
|
||||
|
||||
@@ -616,7 +619,7 @@ build-deprecated:
|
||||
job: amd64-debian-user-cross-container
|
||||
variables:
|
||||
IMAGE: debian-all-test-cross
|
||||
CONFIGURE_ARGS: --disable-docs --disable-tools
|
||||
CONFIGURE_ARGS: --disable-tools
|
||||
MAKE_CHECK_ARGS: build-tcg
|
||||
TARGETS: ppc64abi32-linux-user lm32-softmmu unicore32-softmmu
|
||||
artifacts:
|
||||
@@ -702,6 +705,7 @@ build-coroutine-sigaltstack:
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
|
||||
--enable-trace-backends=ftrace
|
||||
MAKE_CHECK_ARGS: check-unit
|
||||
|
||||
# Most jobs test latest gcrypt or nettle builds
|
||||
@@ -739,31 +743,6 @@ crypto-only-gnutls:
|
||||
MAKE_CHECK_ARGS: check
|
||||
|
||||
|
||||
# We don't need to exercise every backend with every front-end
|
||||
build-trace-multi-user:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
job: amd64-ubuntu2004-container
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system
|
||||
|
||||
build-trace-ftrace-system:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
job: amd64-ubuntu2004-container
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu
|
||||
|
||||
build-trace-ust-system:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
job: amd64-ubuntu2004-container
|
||||
variables:
|
||||
IMAGE: ubuntu2004
|
||||
CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu
|
||||
|
||||
# Check our reduced build configurations
|
||||
build-without-default-devices:
|
||||
<<: *native_build_job_definition
|
||||
|
||||
@@ -3286,6 +3286,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
|
||||
S: Maintained
|
||||
F: semihosting/
|
||||
F: include/semihosting/
|
||||
F: tests/tcg/multiarch/arm-compat-semi/
|
||||
|
||||
Multi-process QEMU
|
||||
M: Elena Ufimtseva <elena.ufimtseva@oracle.com>
|
||||
|
||||
+1
-5
@@ -962,11 +962,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type,
|
||||
QemuOpts *devopts;
|
||||
devopts = qemu_opts_create(qemu_find_opts("device"), NULL, 0,
|
||||
&error_abort);
|
||||
if (arch_type == QEMU_ARCH_S390X) {
|
||||
qemu_opt_set(devopts, "driver", "virtio-blk-ccw", &error_abort);
|
||||
} else {
|
||||
qemu_opt_set(devopts, "driver", "virtio-blk-pci", &error_abort);
|
||||
}
|
||||
qemu_opt_set(devopts, "driver", "virtio-blk", &error_abort);
|
||||
qemu_opt_set(devopts, "drive", qdict_get_str(bs_opts, "id"),
|
||||
&error_abort);
|
||||
}
|
||||
|
||||
@@ -4779,9 +4779,9 @@ if test "$int128" = "yes"; then
|
||||
int main(void)
|
||||
{
|
||||
unsigned __int128 x = 0, y = 0;
|
||||
y = __atomic_load_16(&x, 0);
|
||||
__atomic_store_16(&x, y, 0);
|
||||
__atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
|
||||
y = __atomic_load(&x, 0);
|
||||
__atomic_store(&x, y, 0);
|
||||
__atomic_compare_exchange(&x, &y, x, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
|
||||
+32
-10
@@ -385,17 +385,37 @@ avoided.
|
||||
Low level memory management
|
||||
===========================
|
||||
|
||||
Use of the malloc/free/realloc/calloc/valloc/memalign/posix_memalign
|
||||
Use of the ``malloc/free/realloc/calloc/valloc/memalign/posix_memalign``
|
||||
APIs is not allowed in the QEMU codebase. Instead of these routines,
|
||||
use the GLib memory allocation routines g_malloc/g_malloc0/g_new/
|
||||
g_new0/g_realloc/g_free or QEMU's qemu_memalign/qemu_blockalign/qemu_vfree
|
||||
APIs.
|
||||
use the GLib memory allocation routines
|
||||
``g_malloc/g_malloc0/g_new/g_new0/g_realloc/g_free``
|
||||
or QEMU's ``qemu_memalign/qemu_blockalign/qemu_vfree`` APIs.
|
||||
|
||||
Please note that g_malloc will exit on allocation failure, so there
|
||||
is no need to test for failure (as you would have to with malloc).
|
||||
Calling g_malloc with a zero size is valid and will return NULL.
|
||||
Please note that ``g_malloc`` will exit on allocation failure, so
|
||||
there is no need to test for failure (as you would have to with
|
||||
``malloc``). Generally using ``g_malloc`` on start-up is fine as the
|
||||
result of a failure to allocate memory is going to be a fatal exit
|
||||
anyway. There may be some start-up cases where failing is unreasonable
|
||||
(for example speculatively loading a large debug symbol table).
|
||||
|
||||
Prefer g_new(T, n) instead of g_malloc(sizeof(T) ``*`` n) for the following
|
||||
Care should be taken to avoid introducing places where the guest could
|
||||
trigger an exit by causing a large allocation. For small allocations,
|
||||
of the order of 4k, a failure to allocate is likely indicative of an
|
||||
overloaded host and allowing ``g_malloc`` to ``exit`` is a reasonable
|
||||
approach. However for larger allocations where we could realistically
|
||||
fall-back to a smaller one if need be we should use functions like
|
||||
``g_try_new`` and check the result. For example this is valid approach
|
||||
for a time/space trade-off like ``tlb_mmu_resize_locked`` in the
|
||||
SoftMMU TLB code.
|
||||
|
||||
If the lifetime of the allocation is within the function and there are
|
||||
multiple exist paths you can also improve the readability of the code
|
||||
by using ``g_autofree`` and related annotations. See :ref:`autofree-ref`
|
||||
for more details.
|
||||
|
||||
Calling ``g_malloc`` with a zero size is valid and will return NULL.
|
||||
|
||||
Prefer ``g_new(T, n)`` instead of ``g_malloc(sizeof(T) * n)`` for the following
|
||||
reasons:
|
||||
|
||||
* It catches multiplication overflowing size_t;
|
||||
@@ -409,8 +429,8 @@ Declarations like
|
||||
|
||||
are acceptable, though.
|
||||
|
||||
Memory allocated by qemu_memalign or qemu_blockalign must be freed with
|
||||
qemu_vfree, since breaking this will cause problems on Win32.
|
||||
Memory allocated by ``qemu_memalign`` or ``qemu_blockalign`` must be freed with
|
||||
``qemu_vfree``, since breaking this will cause problems on Win32.
|
||||
|
||||
String manipulation
|
||||
===================
|
||||
@@ -485,6 +505,8 @@ In addition, QEMU assumes that the compiler does not use the latitude
|
||||
given in C99 and C11 to treat aspects of signed '<<' as undefined, as
|
||||
documented in the GNU Compiler Collection manual starting at version 4.0.
|
||||
|
||||
.. _autofree-ref:
|
||||
|
||||
Automatic memory deallocation
|
||||
=============================
|
||||
|
||||
|
||||
@@ -63,6 +63,11 @@ valid during the lifetime of the callback so it is important that any
|
||||
information that is needed is extracted during the callback and saved
|
||||
by the plugin.
|
||||
|
||||
API
|
||||
===
|
||||
|
||||
.. kernel-doc:: include/qemu/qemu-plugin.h
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
|
||||
@@ -35,4 +35,13 @@ extern const uint32_t arch_type;
|
||||
int kvm_available(void);
|
||||
int xen_available(void);
|
||||
|
||||
/* default virtio transport per architecture */
|
||||
#define QEMU_ARCH_VIRTIO_PCI (QEMU_ARCH_ALPHA | QEMU_ARCH_ARM | \
|
||||
QEMU_ARCH_HPPA | QEMU_ARCH_I386 | \
|
||||
QEMU_ARCH_MIPS | QEMU_ARCH_PPC | \
|
||||
QEMU_ARCH_RISCV | QEMU_ARCH_SH4 | \
|
||||
QEMU_ARCH_SPARC | QEMU_ARCH_XTENSA)
|
||||
#define QEMU_ARCH_VIRTIO_CCW (QEMU_ARCH_S390X)
|
||||
#define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -135,4 +135,9 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
|
||||
error_report("Incompatible ELF: RVE cpu requires RVE ABI binary");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
ts->stack_base = info->start_stack;
|
||||
ts->heap_base = info->brk;
|
||||
/* This will be filled in on the first SYS_HEAPINFO call. */
|
||||
ts->heap_limit = 0;
|
||||
}
|
||||
|
||||
@@ -1745,6 +1745,9 @@ sub dump_function($$) {
|
||||
)+
|
||||
\)\)\s+//x;
|
||||
|
||||
# Strip QEMU specific compiler annotations
|
||||
$prototype =~ s/QEMU_[A-Z_]+ +//;
|
||||
|
||||
# Yes, this truly is vile. We are looking for:
|
||||
# 1. Return type (may be nothing if we're looking at a macro)
|
||||
# 2. Function name
|
||||
|
||||
@@ -767,15 +767,28 @@ static const GuestFDFunctions guestfd_fns[] = {
|
||||
},
|
||||
};
|
||||
|
||||
/* Read the input value from the argument block; fail the semihosting
|
||||
* call if the memory read fails.
|
||||
/*
|
||||
* Read the input value from the argument block; fail the semihosting
|
||||
* call if the memory read fails. Eventually we could use a generic
|
||||
* CPUState helper function here.
|
||||
*/
|
||||
#ifdef TARGET_ARM
|
||||
static inline bool is_64bit_semihosting(CPUArchState *env)
|
||||
{
|
||||
#if defined(TARGET_ARM)
|
||||
return is_a64(env);
|
||||
#elif defined(TARGET_RISCV)
|
||||
return !riscv_cpu_is_32bit(env);
|
||||
#else
|
||||
#error un-handled architecture
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#define GET_ARG(n) do { \
|
||||
if (is_a64(env)) { \
|
||||
if (is_64bit_semihosting(env)) { \
|
||||
if (get_user_u64(arg ## n, args + (n) * 8)) { \
|
||||
errno = EFAULT; \
|
||||
return set_swi_errno(cs, -1); \
|
||||
return set_swi_errno(cs, -1); \
|
||||
} \
|
||||
} else { \
|
||||
if (get_user_u32(arg ## n, args + (n) * 4)) { \
|
||||
@@ -786,41 +799,10 @@ static const GuestFDFunctions guestfd_fns[] = {
|
||||
} while (0)
|
||||
|
||||
#define SET_ARG(n, val) \
|
||||
(is_a64(env) ? \
|
||||
(is_64bit_semihosting(env) ? \
|
||||
put_user_u64(val, args + (n) * 8) : \
|
||||
put_user_u32(val, args + (n) * 4))
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_RISCV
|
||||
|
||||
/*
|
||||
* get_user_ual is defined as get_user_u32 in softmmu-semi.h,
|
||||
* we need a macro that fetches a target_ulong
|
||||
*/
|
||||
#define get_user_utl(arg, p) \
|
||||
((sizeof(target_ulong) == 8) ? \
|
||||
get_user_u64(arg, p) : \
|
||||
get_user_u32(arg, p))
|
||||
|
||||
/*
|
||||
* put_user_ual is defined as put_user_u32 in softmmu-semi.h,
|
||||
* we need a macro that stores a target_ulong
|
||||
*/
|
||||
#define put_user_utl(arg, p) \
|
||||
((sizeof(target_ulong) == 8) ? \
|
||||
put_user_u64(arg, p) : \
|
||||
put_user_u32(arg, p))
|
||||
|
||||
#define GET_ARG(n) do { \
|
||||
if (get_user_utl(arg ## n, args + (n) * sizeof(target_ulong))) { \
|
||||
errno = EFAULT; \
|
||||
return set_swi_errno(cs, -1); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SET_ARG(n, val) \
|
||||
put_user_utl(val, args + (n) * sizeof(target_ulong))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Do a semihosting call.
|
||||
@@ -1232,7 +1214,11 @@ target_ulong do_common_semihosting(CPUState *cs)
|
||||
for (i = 0; i < ARRAY_SIZE(retvals); i++) {
|
||||
bool fail;
|
||||
|
||||
fail = SET_ARG(i, retvals[i]);
|
||||
if (is_64bit_semihosting(env)) {
|
||||
fail = put_user_u64(retvals[i], arg0 + i * 8);
|
||||
} else {
|
||||
fail = put_user_u32(retvals[i], arg0 + i * 4);
|
||||
}
|
||||
|
||||
if (fail) {
|
||||
/* Couldn't write back to argument block */
|
||||
|
||||
+37
-28
@@ -60,34 +60,43 @@ static const QDevAlias qdev_alias_table[] = {
|
||||
{ "ES1370", "es1370" }, /* -soundhw name */
|
||||
{ "ich9-ahci", "ahci" },
|
||||
{ "lsi53c895a", "lsi" },
|
||||
{ "virtio-9p-ccw", "virtio-9p", QEMU_ARCH_S390X },
|
||||
{ "virtio-9p-pci", "virtio-9p", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-balloon-ccw", "virtio-balloon", QEMU_ARCH_S390X },
|
||||
{ "virtio-balloon-pci", "virtio-balloon",
|
||||
QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_S390X },
|
||||
{ "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-gpu-ccw", "virtio-gpu", QEMU_ARCH_S390X },
|
||||
{ "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_S390X },
|
||||
{ "virtio-input-host-pci", "virtio-input-host",
|
||||
QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-keyboard-ccw", "virtio-keyboard", QEMU_ARCH_S390X },
|
||||
{ "virtio-keyboard-pci", "virtio-keyboard",
|
||||
QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-mouse-ccw", "virtio-mouse", QEMU_ARCH_S390X },
|
||||
{ "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-net-ccw", "virtio-net", QEMU_ARCH_S390X },
|
||||
{ "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-rng-ccw", "virtio-rng", QEMU_ARCH_S390X },
|
||||
{ "virtio-rng-pci", "virtio-rng", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-scsi-ccw", "virtio-scsi", QEMU_ARCH_S390X },
|
||||
{ "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_S390X },
|
||||
{ "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-tablet-ccw", "virtio-tablet", QEMU_ARCH_S390X },
|
||||
{ "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
|
||||
{ "virtio-9p-device", "virtio-9p", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-9p-ccw", "virtio-9p", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-9p-pci", "virtio-9p", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-balloon-device", "virtio-balloon", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-balloon-ccw", "virtio-balloon", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-balloon-pci", "virtio-balloon", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-blk-device", "virtio-blk", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-blk-pci", "virtio-blk", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-gpu-device", "virtio-gpu", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-gpu-ccw", "virtio-gpu", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-gpu-pci", "virtio-gpu", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-input-host-device", "virtio-input-host", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-input-host-ccw", "virtio-input-host", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-input-host-pci", "virtio-input-host", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-iommu-pci", "virtio-iommu", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-keyboard-device", "virtio-keyboard", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-keyboard-ccw", "virtio-keyboard", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-keyboard-pci", "virtio-keyboard", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-mouse-device", "virtio-mouse", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-mouse-ccw", "virtio-mouse", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-mouse-pci", "virtio-mouse", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-net-device", "virtio-net", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-net-ccw", "virtio-net", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-net-pci", "virtio-net", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-rng-device", "virtio-rng", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-rng-ccw", "virtio-rng", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-rng-pci", "virtio-rng", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-scsi-device", "virtio-scsi", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-scsi-ccw", "virtio-scsi", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-scsi-pci", "virtio-scsi", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ "virtio-serial-device", "virtio-serial", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-serial-pci", "virtio-serial", QEMU_ARCH_VIRTIO_PCI},
|
||||
{ "virtio-tablet-device", "virtio-tablet", QEMU_ARCH_VIRTIO_MMIO },
|
||||
{ "virtio-tablet-ccw", "virtio-tablet", QEMU_ARCH_VIRTIO_CCW },
|
||||
{ "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_VIRTIO_PCI },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ class TestSingleDrive(ImageCommitTestCase):
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0xab 0 524288', backing_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', mid_img)
|
||||
self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=mid,backing.backing.node-name=base", interface="none")
|
||||
self.vm.add_device(iotests.get_virtio_scsi_device())
|
||||
self.vm.add_device('virtio-scsi')
|
||||
self.vm.add_device("scsi-hd,id=scsi0,drive=drive0")
|
||||
self.vm.launch()
|
||||
self.has_quit = False
|
||||
|
||||
+1
-11
@@ -119,17 +119,7 @@ echo
|
||||
echo === Device without drive ===
|
||||
echo
|
||||
|
||||
case "$QEMU_DEFAULT_MACHINE" in
|
||||
s390-ccw-virtio)
|
||||
virtio_scsi=virtio-scsi-ccw
|
||||
;;
|
||||
*)
|
||||
virtio_scsi=virtio-scsi-pci
|
||||
;;
|
||||
esac
|
||||
|
||||
run_qemu -device $virtio_scsi -device scsi-hd |
|
||||
sed -e "s/$virtio_scsi/VIRTIO_SCSI/"
|
||||
run_qemu -device virtio-scsi -device scsi-hd
|
||||
|
||||
echo
|
||||
echo === Overriding backing file ===
|
||||
|
||||
@@ -72,7 +72,7 @@ QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=foo#12: Invalid node name
|
||||
|
||||
=== Device without drive ===
|
||||
|
||||
Testing: -device VIRTIO_SCSI -device scsi-hd
|
||||
Testing: -device virtio-scsi -device scsi-hd
|
||||
QEMU X.Y.Z monitor - type 'help' for more information
|
||||
(qemu) QEMU_PROG: -device scsi-hd: drive property not set
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=foo#12: Invalid node-name: 'fo
|
||||
|
||||
=== Device without drive ===
|
||||
|
||||
Testing: -device VIRTIO_SCSI -device scsi-hd
|
||||
Testing: -device virtio-scsi -device scsi-hd
|
||||
QEMU X.Y.Z monitor - type 'help' for more information
|
||||
(qemu) QEMU_PROG: -device scsi-hd: drive property not set
|
||||
|
||||
|
||||
@@ -49,11 +49,9 @@ IMG_SIZE=128K
|
||||
case "$QEMU_DEFAULT_MACHINE" in
|
||||
s390-ccw-virtio)
|
||||
platform_parm="-no-shutdown"
|
||||
hba=virtio-scsi-ccw
|
||||
;;
|
||||
*)
|
||||
platform_parm=""
|
||||
hba=virtio-scsi-pci
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -61,7 +59,7 @@ _qemu()
|
||||
{
|
||||
$QEMU $platform_parm -nographic -monitor stdio -serial none \
|
||||
-drive if=none,id=drive0,file="$TEST_IMG",format="$IMGFMT" \
|
||||
-device $hba,id=hba0 \
|
||||
-device virtio-scsi,id=hba0 \
|
||||
-device scsi-hd,drive=drive0 \
|
||||
"$@" |\
|
||||
_filter_qemu | _filter_hmp
|
||||
|
||||
@@ -371,8 +371,7 @@ class ThrottleTestGroupNames(iotests.QMPTestCase):
|
||||
class ThrottleTestRemovableMedia(iotests.QMPTestCase):
|
||||
def setUp(self):
|
||||
self.vm = iotests.VM()
|
||||
self.vm.add_device("{},id=virtio-scsi".format(
|
||||
iotests.get_virtio_scsi_device()))
|
||||
self.vm.add_device("{},id=virtio-scsi".format('virtio-scsi'))
|
||||
self.vm.launch()
|
||||
|
||||
def tearDown(self):
|
||||
|
||||
@@ -44,7 +44,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file fuse
|
||||
|
||||
_require_devices virtio-scsi scsi-hd
|
||||
_require_devices scsi-hd
|
||||
_require_one_device_of virtio-scsi-pci virtio-scsi-ccw
|
||||
|
||||
IMG_SIZE=64K
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user