mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Add support for host CPU modes
This adds support for host-model and host-passthrough CPU modes to qemu driver. The host-passthrough mode is mapped to -cpu host.
This commit is contained in:
50
tests/qemuxml2argvdata/qemu-lib.sh
Normal file
50
tests/qemuxml2argvdata/qemu-lib.sh
Normal file
@@ -0,0 +1,50 @@
|
||||
candidates="/usr/bin/qemu-kvm
|
||||
/usr/libexec/qemu-kvm
|
||||
/usr/bin/qemu-system-x86_64
|
||||
/usr/bin/qemu"
|
||||
qemu=
|
||||
for candidate in $candidates; do
|
||||
if test -x $candidate; then
|
||||
qemu=$candidate
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
real_qemu()
|
||||
{
|
||||
if test x$qemu != x; then
|
||||
exec $qemu "$@"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
faked_machine()
|
||||
{
|
||||
echo "pc"
|
||||
}
|
||||
|
||||
faked_cpu()
|
||||
{
|
||||
cat <<EOF
|
||||
x86 Opteron_G3
|
||||
x86 Opteron_G2
|
||||
x86 Opteron_G1
|
||||
x86 Nehalem
|
||||
x86 Penryn
|
||||
x86 Conroe
|
||||
x86 [n270]
|
||||
x86 [athlon]
|
||||
x86 [pentium3]
|
||||
x86 [pentium2]
|
||||
x86 [pentium]
|
||||
x86 [486]
|
||||
x86 [coreduo]
|
||||
x86 [qemu32]
|
||||
x86 [kvm64]
|
||||
x86 [core2duo]
|
||||
x86 [phenom]
|
||||
x86 [qemu64]
|
||||
x86 [host]
|
||||
EOF
|
||||
}
|
||||
15
tests/qemuxml2argvdata/qemu-supported-cpus.sh
Executable file
15
tests/qemuxml2argvdata/qemu-supported-cpus.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#! /bin/sh
|
||||
|
||||
. $(dirname $0)/qemu-lib.sh
|
||||
|
||||
case $* in
|
||||
"-M ?")
|
||||
faked_machine
|
||||
;;
|
||||
"-cpu ?")
|
||||
faked_cpu | grep -Fv '['
|
||||
;;
|
||||
*)
|
||||
real_qemu "$@"
|
||||
;;
|
||||
esac
|
||||
@@ -1,55 +1,6 @@
|
||||
#! /bin/sh
|
||||
|
||||
candidates="/usr/bin/qemu-kvm
|
||||
/usr/libexec/qemu-kvm
|
||||
/usr/bin/qemu-system-x86_64
|
||||
/usr/bin/qemu"
|
||||
qemu=
|
||||
for candidate in $candidates; do
|
||||
if test -x $candidate; then
|
||||
qemu=$candidate
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
real_qemu()
|
||||
{
|
||||
if test x$qemu != x; then
|
||||
exec $qemu "$@"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
faked_machine()
|
||||
{
|
||||
echo "pc"
|
||||
}
|
||||
|
||||
faked_cpu()
|
||||
{
|
||||
cat <<EOF
|
||||
x86 Opteron_G3
|
||||
x86 Opteron_G2
|
||||
x86 Opteron_G1
|
||||
x86 Nehalem
|
||||
x86 Penryn
|
||||
x86 Conroe
|
||||
x86 [n270]
|
||||
x86 [athlon]
|
||||
x86 [pentium3]
|
||||
x86 [pentium2]
|
||||
x86 [pentium]
|
||||
x86 [486]
|
||||
x86 [coreduo]
|
||||
x86 [qemu32]
|
||||
x86 [kvm64]
|
||||
x86 [core2duo]
|
||||
x86 [phenom]
|
||||
x86 [qemu64]
|
||||
x86 [host]
|
||||
EOF
|
||||
}
|
||||
. $(dirname $0)/qemu-lib.sh
|
||||
|
||||
case $* in
|
||||
"-M ?")
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
LC_ALL=C \
|
||||
PATH=/bin \
|
||||
HOME=/home/test \
|
||||
USER=test \
|
||||
LOGNAME=test \
|
||||
./qemu-supported-cpus.sh \
|
||||
-S \
|
||||
-M pc \
|
||||
-cpu Penryn,+xtpr,+tm2,+est,+vmx,+ds_cpl,+monitor,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme,-sse4.1 \
|
||||
-m 214 \
|
||||
-smp 6 \
|
||||
-nographic \
|
||||
-monitor unix:/tmp/test-monitor,server,nowait \
|
||||
-no-acpi \
|
||||
-boot n \
|
||||
-net none \
|
||||
-serial none \
|
||||
-parallel none \
|
||||
-usb
|
||||
@@ -0,0 +1,19 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219100</memory>
|
||||
<currentMemory>219100</currentMemory>
|
||||
<vcpu>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='host-model'/>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/./qemu-supported-cpus.sh</emulator>
|
||||
</devices>
|
||||
</domain>
|
||||
@@ -0,0 +1,21 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219100</memory>
|
||||
<currentMemory>219100</currentMemory>
|
||||
<vcpu>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='host-model'>
|
||||
<model fallback='forbid'/>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/./qemu-supported-cpus.sh</emulator>
|
||||
</devices>
|
||||
</domain>
|
||||
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.args
Normal file
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.args
Normal file
@@ -0,0 +1,19 @@
|
||||
LC_ALL=C \
|
||||
PATH=/bin \
|
||||
HOME=/home/test \
|
||||
USER=test \
|
||||
LOGNAME=test \
|
||||
./qemu.sh \
|
||||
-S \
|
||||
-M pc \
|
||||
-cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,+ds \
|
||||
-m 214 \
|
||||
-smp 6 \
|
||||
-nographic \
|
||||
-monitor unix:/tmp/test-monitor,server,nowait \
|
||||
-no-acpi \
|
||||
-boot n \
|
||||
-net none \
|
||||
-serial none \
|
||||
-parallel none \
|
||||
-usb
|
||||
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.xml
Normal file
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219100</memory>
|
||||
<currentMemory>219100</currentMemory>
|
||||
<vcpu>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='host-model'/>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/./qemu.sh</emulator>
|
||||
</devices>
|
||||
</domain>
|
||||
@@ -0,0 +1,19 @@
|
||||
LC_ALL=C \
|
||||
PATH=/bin \
|
||||
HOME=/home/test \
|
||||
USER=test \
|
||||
LOGNAME=test \
|
||||
./qemu.sh \
|
||||
-S \
|
||||
-M pc \
|
||||
-cpu host \
|
||||
-m 214 \
|
||||
-smp 6 \
|
||||
-nographic \
|
||||
-monitor unix:/tmp/test-monitor,server,nowait \
|
||||
-no-acpi \
|
||||
-boot n \
|
||||
-net none \
|
||||
-serial none \
|
||||
-parallel none \
|
||||
-usb
|
||||
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.xml
Normal file
19
tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<domain type='kvm'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219100</memory>
|
||||
<currentMemory>219100</currentMemory>
|
||||
<vcpu>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='host-passthrough'/>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/./qemu.sh</emulator>
|
||||
</devices>
|
||||
</domain>
|
||||
@@ -0,0 +1,19 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory>219100</memory>
|
||||
<currentMemory>219100</currentMemory>
|
||||
<vcpu>6</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='network'/>
|
||||
</os>
|
||||
<cpu mode='host-passthrough'/>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/./qemu.sh</emulator>
|
||||
</devices>
|
||||
</domain>
|
||||
Reference in New Issue
Block a user