mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-28 06:12:20 +00:00
schema: Fix guest timer specification schema according to the docs
According to the documentation describing various tunables for domain timers not all the fields are supported by all the driver types. Express these in the RNG: - rtc, platform: Only these support the "track" attribute. - tsc: only one to support "frequency" and "mode" attributes - hpet, pit: tickpolicy/catchup attribute/element - kvmclock: no extra attributes are supported Additionally the attributes of the <catchup> element for tickpolicy='catchup' are optional according to the parsing code. Express this in the XML and fix a spurious space added while formatting the <catchup> element and add tests for it.
This commit is contained in:
parent
f88a3d9b0c
commit
bbd392ff86
@ -857,14 +857,12 @@
|
||||
</define>
|
||||
<define name="timer">
|
||||
<element name="timer">
|
||||
<choice>
|
||||
<group>
|
||||
<attribute name="name">
|
||||
<choice>
|
||||
<value>platform</value>
|
||||
<value>hpet</value>
|
||||
<value>kvmclock</value>
|
||||
<value>pit</value>
|
||||
<value>rtc</value>
|
||||
<value>tsc</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
@ -877,17 +875,15 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="tickpolicy">
|
||||
<choice>
|
||||
<value>delay</value>
|
||||
<value>catchup</value>
|
||||
<value>merge</value>
|
||||
<value>discard</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<ref name="tickpolicy"/>
|
||||
</optional>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="name">
|
||||
<value>tsc</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<ref name="catchup"/>
|
||||
<ref name="tickpolicy"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="frequency">
|
||||
@ -905,6 +901,24 @@
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="name">
|
||||
<choice>
|
||||
<value>hpet</value>
|
||||
<value>pit</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<ref name="tickpolicy"/>
|
||||
</optional>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="name">
|
||||
<value>kvmclock</value>
|
||||
</attribute>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<attribute name="present">
|
||||
<choice>
|
||||
@ -916,20 +930,43 @@
|
||||
<empty/>
|
||||
</element>
|
||||
</define>
|
||||
<define name="catchup">
|
||||
|
||||
<define name="tickpolicy">
|
||||
<choice>
|
||||
<group>
|
||||
<attribute name="tickpolicy">
|
||||
<choice>
|
||||
<value>delay</value>
|
||||
<value>merge</value>
|
||||
<value>discard</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="tickpolicy">
|
||||
<value>catchup</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<element name="catchup">
|
||||
<optional>
|
||||
<attribute name="threshold">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="slew">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="limit">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</define>
|
||||
<!--
|
||||
A bootloader may be used to extract the OS information instead of
|
||||
|
5
tests/qemuxml2argvdata/qemuxml2argv-clock-catchup.args
Normal file
5
tests/qemuxml2argvdata/qemuxml2argv-clock-catchup.args
Normal file
@ -0,0 +1,5 @@
|
||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
|
||||
/usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic \
|
||||
-monitor unix:/tmp/test-monitor,server,nowait -rtc base=utc,driftfix=slew \
|
||||
-no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 \
|
||||
-net none -serial none -parallel none
|
37
tests/qemuxml2argvdata/qemuxml2argv-clock-catchup.xml
Normal file
37
tests/qemuxml2argvdata/qemuxml2argv-clock-catchup.xml
Normal file
@ -0,0 +1,37 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219100</memory>
|
||||
<currentMemory unit='KiB'>219100</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='i686' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<clock offset='utc'>
|
||||
<timer name='rtc' tickpolicy='catchup'>
|
||||
<catchup slew='4636'/>
|
||||
</timer>
|
||||
<timer name='pit' tickpolicy='catchup'>
|
||||
<catchup threshold='123'/>
|
||||
</timer>
|
||||
<timer name='hpet' tickpolicy='catchup'>
|
||||
<catchup limit='2342'/>
|
||||
</timer>
|
||||
</clock>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu</emulator>
|
||||
<disk type='block' device='disk'>
|
||||
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
</disk>
|
||||
<controller type='usb' index='0'/>
|
||||
<controller type='ide' index='0'/>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<memballoon model='virtio'/>
|
||||
</devices>
|
||||
</domain>
|
@ -633,6 +633,7 @@ mymain(void)
|
||||
DO_TEST("clock-france", QEMU_CAPS_RTC);
|
||||
DO_TEST("clock-hpet-off", QEMU_CAPS_RTC, QEMU_CAPS_NO_HPET,
|
||||
QEMU_CAPS_NO_KVM_PIT);
|
||||
DO_TEST("clock-catchup", QEMU_CAPS_RTC, QEMU_CAPS_NO_KVM_PIT);
|
||||
DO_TEST("cpu-kvmclock", QEMU_CAPS_ENABLE_KVM);
|
||||
DO_TEST("cpu-host-kvmclock", QEMU_CAPS_ENABLE_KVM, QEMU_CAPS_CPU_HOST);
|
||||
DO_TEST("kvmclock", QEMU_CAPS_KVM);
|
||||
|
@ -158,6 +158,7 @@ mymain(void)
|
||||
DO_TEST("clock-localtime");
|
||||
DO_TEST("cpu-kvmclock");
|
||||
DO_TEST("cpu-host-kvmclock");
|
||||
DO_TEST("clock-catchup");
|
||||
DO_TEST("kvmclock");
|
||||
|
||||
DO_TEST("cpu-eoi-disabled");
|
||||
|
Loading…
x
Reference in New Issue
Block a user