mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
On RHEL 10.2 aarch64 (only) we see:
$ echo '{ "execute": "qmp_capabilities" }' '{ "execute": "query-kvm" }' '{ "execute": "quit" }' | QEMU_AUDIO_DRV=none "/usr/libexec/qemu-kvm" -display none -machine "virt,accel=kvm:hvf:tcg" -qmp stdio
qemu-kvm: invalid accelerator hvf
qemu-kvm: falling back to KVM
{"QMP": {"version": {"qemu": {"micro": 0, "minor": 1, "major": 9}, "package": "qemu-kvm-9.1.0-15.el10_0.4"}, "capabilities": ["oob"]}}
qemu-kvm: warning: CPU model cortex-a57-arm-cpu is deprecated -- use 'host' / 'max'
qemu-kvm: kvm_init_vcpu: kvm_arch_init_vcpu failed (0): Invalid argument
Unfortunately we cannot use guestfs_int_get_cpu_model (as that
requires us to already know if KVM is supported), so we just have to
guess that -cpu max will work, at least enough for QMP to work.
Fixes: https://issues.redhat.com/browse/RHEL-121076
Reported-by: Xiang Hua Chen
44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (C) 2013 Red Hat Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
# A fake debugging qemu which just dumps out the parameters to a known
|
|
# file.
|
|
|
|
if [ -z "$DEBUG_QEMU_FILE" ]; then
|
|
echo "$0: \$DEBUG_QEMU_FILE environment variable must be set."
|
|
exit 1
|
|
fi
|
|
|
|
# The direct backend runs qemu ... -qmp stdio to query for KVM. For
|
|
# the test to pass we have to provide an answer here.
|
|
if [ "x$7" = "x-qmp" ]; then
|
|
# Consume stdin first.
|
|
cat >/dev/null
|
|
# Write some fake output.
|
|
echo '"QMP"'
|
|
echo '"return"'
|
|
echo '{"return": {"enabled": true, "present": true}}'
|
|
exit 0
|
|
fi
|
|
|
|
echo "$@" > "$DEBUG_QEMU_FILE"
|
|
|
|
# Real qemu would connect back to the daemon socket with a working
|
|
# daemon. We don't do that, so the libguestfs parent process will
|
|
# always get an error.
|
|
exit 0
|