mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
Add test for qemu broken -machine option (RHBZ#748266).
Also add this option, if necessary, when testing for virtio-serial support. When the workaround is enabled, we specify machine type 'pc'.
This commit is contained in:
47
configure.ac
47
configure.ac
@@ -446,8 +446,53 @@ working.
|
||||
])
|
||||
fi
|
||||
|
||||
dnl qemu 0.15 was released with broken support for '-machine',
|
||||
dnl requiring you to add the machine type: '-machine pc,[...]'.
|
||||
dnl The problem is that 'pc' is only applicable for PC-like
|
||||
dnl hardware, so we cannot do this as a general solution. Since
|
||||
dnl qemu 0.15, this problem has been fixed so now the default
|
||||
dnl machine type is chosen (qemu commit 2645c6dcaf6ea2a51a).
|
||||
dnl
|
||||
dnl We need to work out if this qemu is the broken version, so we
|
||||
dnl can add 'pc' just for this broken version.
|
||||
dnl
|
||||
dnl Note that old qemu didn't support the '-machine' option at all.
|
||||
dnl
|
||||
dnl We use the -kernel option for testing this, because this option
|
||||
dnl is processed very late, after qemu has set up the machine.
|
||||
AC_MSG_CHECKING([for broken '-machine accel=tcg' option in $QEMU])
|
||||
LC_ALL=C $QEMU -nographic -machine accel=tcg -kernel /NO_SUCH_FILE \
|
||||
> config1.tmp 2>&1
|
||||
LC_ALL=C $QEMU -nographic -machine pc,accel=tcg -kernel /NO_SUCH_FILE \
|
||||
> config2.tmp 2>&1
|
||||
if cmp -s config1.tmp config2.tmp; then
|
||||
AC_MSG_RESULT([no])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([QEMU_MACHINE_TYPE_IS_BROKEN],[1],[qemu -machine accel=tcg option is broken (in qemu 0.15 only)])
|
||||
fi
|
||||
rm config1.tmp config2.tmp
|
||||
|
||||
dnl See if the '-machine [pc,]accel=tcg' option is required in
|
||||
dnl order to run the virtio-serial test below. This happens when
|
||||
dnl we run qemu-kvm inside a VM without forcing TCG:
|
||||
dnl
|
||||
dnl Could not access KVM kernel module: No such file or directory
|
||||
dnl failed to initialize KVM: No such file or directory
|
||||
dnl No accelerator found!
|
||||
AC_MSG_CHECKING([if -machine @<:@pc,@:>@accel=tcg option is required to test virtio-serial feature])
|
||||
if $QEMU -nographic -device \? >/dev/null 2>&1; then
|
||||
:
|
||||
elif $QEMU -machine accel=tcg -nographic -device \? >/dev/null 2>&1; then
|
||||
QEMU_EXTRA_OPTIONS_FOR_TEST="-machine accel=tcg"
|
||||
elif $QEMU -machine pc,accel=tcg -nographic -device \? >/dev/null 2>&1; then
|
||||
QEMU_EXTRA_OPTIONS_FOR_TEST="-machine pc,accel=tcg"
|
||||
# else nothing ... it'll fail below.
|
||||
fi
|
||||
AC_MSG_RESULT([$QEMU_EXTRA_OPTIONS_FOR_TEST])
|
||||
|
||||
AC_MSG_CHECKING([for virtio-serial support in $QEMU])
|
||||
if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
|
||||
if $QEMU $QEMU_EXTRA_OPTIONS_FOR_TEST -nographic -device \? 2>&1 | grep -sq virtio-serial; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
|
||||
12
src/launch.c
12
src/launch.c
@@ -586,7 +586,19 @@ launch_appliance (guestfs_h *g)
|
||||
*/
|
||||
if (qemu_supports (g, "-machine")) {
|
||||
add_cmdline (g, "-machine");
|
||||
#if QEMU_MACHINE_TYPE_IS_BROKEN
|
||||
/* Workaround for qemu 0.15: We have to add the '[type=]pc'
|
||||
* since there is no default. This is not a permanent solution
|
||||
* because this only works on PC-like hardware. Other platforms
|
||||
* like ppc would need a different machine type.
|
||||
*
|
||||
* This bug is fixed in qemu commit 2645c6dcaf6ea2a51a, and was
|
||||
* not a problem in qemu < 0.15.
|
||||
*/
|
||||
add_cmdline (g, "pc,accel=kvm:tcg");
|
||||
#else
|
||||
add_cmdline (g, "accel=kvm:tcg");
|
||||
#endif
|
||||
} else {
|
||||
/* qemu sometimes needs this option to enable hardware
|
||||
* virtualization, but some versions of 'qemu-kvm' will use KVM
|
||||
|
||||
Reference in New Issue
Block a user