qemu/tests/qtest
Daniel P. Berrangé a6b6414f0c hw/isa: enable TCO watchdog reboot pin strap by default
The TCO watchdog implementation default behaviour from POV of the
guest OS relies on the initial values for two I/O ports:

  * TCO1_CNT == 0x0

    Since bit 11 (TCO Timer Halt) is clear, the watchdog state
    is considered to be initially running

  * GCS == 0x20

    Since bit 5 (No Reboot) is set, the watchdog will not trigger
    when the timer expires

This is a safe default, because the No Reboot bit will prevent the
watchdog from triggering if the guest OS is unaware of its existance,
or is slow in configuring it. When a Linux guest initializes the TCO
watchdog, it will attempt to clear the "No Reboot" flag, and read the
value back. If the clear was honoured, the driver will treat this as
an indicator that the watchdog is functional and create the guest
watchdog device.

QEMU implements a second "no reboot" flag, however, via pin straps
which overrides the behaviour of the guest controlled "no reboot"
flag:

  commit 5add35bec1
  Author: Paulo Alcantara <pcacjr@gmail.com>
  Date:   Sun Jun 28 14:58:58 2015 -0300

    ich9: implement strap SPKR pin logic

This second 'noreboot' pin was defaulted to high, which also inhibits
triggering of the requested watchdog actions, unless QEMU is launched
with the magic flag "-global ICH9-LPC.noreboot=false".

This is a bad default as we are exposing a watchdog to every guest OS
using the q35 machine type, but preventing it from actually doing what
it is designed to do. What is worse is that the guest OS and its apps
have no way to know that the watchdog is never going to fire, due to
this second 'noreboot' pin.

If a guest OS had no watchdog device at all, then apps whose operation
and/or data integrity relies on a watchdog can refuse to launch, and
alert the administrator of the problematic deployment. With Q35 machines
unconditionally exposing a watchdog though, apps will think their
deployment is correct but in fact have no protection at all.

This patch flips the default of the second 'no reboot' flag, so that
configured watchdog actions will be honoured out of the box for the
7.2 Q35 machine type onwards, if the guest enables use of the watchdog.

See also related bug reports

  https://bugzilla.redhat.com/show_bug.cgi?id=2080207
  https://bugzilla.redhat.com/show_bug.cgi?id=2136889
  https://bugzilla.redhat.com/show_bug.cgi?id=2137346

Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20221216125749.596075-5-berrange@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2022-12-21 06:35:28 -05:00
..
fuzz qapi qdev qom: Elide redundant has_FOO in generated C 2022-12-14 20:05:07 +01:00
libqos tests/qtest/libqos/e1000e: Correctly group register accesses 2022-12-15 15:19:24 +01:00
ac97-test.c tests/qtest/ac97-test: Correct reference to driver 2022-08-29 15:29:13 +02:00
acpi-utils.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
acpi-utils.h tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
adm1272-test.c tests/qtest: add tests for ADM1272 device model 2021-07-08 14:41:59 -05:00
ahci-test.c tests/qtest: {ahci, ide}-test: Use relative path for temporary files for win32 2022-09-27 20:51:21 +02:00
am53c974-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
arm-cpu-features.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
aspeed_gpio-test.c hw/gpio/aspeed: Don't let guests modify input pins 2022-07-14 16:24:38 +02:00
aspeed_hace-test.c Misc cleanups 2022-05-03 09:13:17 -07:00
aspeed_smc-test.c tests/qtest: aspeed_smc-test: Avoid using hardcoded /tmp 2022-09-27 20:51:20 +02:00
bcm2835-dma-test.c Align Raspberry Pi DMA interrupts with Linux DTS 2022-07-18 13:25:13 +01:00
bios-tables-test-allowed-diff.h tests: acpi: x86: update expected DSDT after moving PRQx fields in _SB scope 2022-11-22 05:19:00 -05:00
bios-tables-test.c bios-tables-test: add test for number of cores > 255 2022-11-07 14:08:18 -05:00
boot-order-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
boot-sector.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
boot-sector.h tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
boot-serial-test.c tests/qtest: boot-serial-test: Close the serial file before starting QEMU 2022-09-27 20:51:21 +02:00
cdrom-test.c tests/qtest: Use g_mkdtemp() 2022-08-25 15:16:13 +02:00
cmsdk-apb-dualtimer-test.c tests: Add a simple test of the CMSDK APB dual timer 2021-01-29 15:54:42 +00:00
cmsdk-apb-timer-test.c tests: Add a simple test of the CMSDK APB timer 2021-01-29 15:54:42 +00:00
cmsdk-apb-watchdog-test.c tests/qtest/cmsdk-apb-watchdog-test: Test clock changes 2021-01-29 15:54:44 +00:00
cpu-plug-test.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
cxl-test.c tests/qtest/cxl-test: Remove temporary directories after testing 2022-10-28 09:39:21 +02:00
dbus-display-test.c ui: fix path to dbus-display1.h 2022-09-29 18:23:51 +02:00
dbus-vmstate-test.c tests/qtest: Use EXIT_FAILURE instead of magic number 2022-10-28 14:31:49 +02:00
device-introspect-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
device-plug-test.c tests/qtest: device-plug-test: Reverse the usage of double/single quotes 2022-10-28 11:17:12 +02:00
display-vga-test.c
drive_del-test.c tests/x86: Add 'q35' machine type to drive_del-test 2022-10-11 14:06:55 +02:00
ds1338-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
e1000-test.c tests: Fix error strings 2022-09-20 11:23:02 +02:00
e1000e-test.c tests/qtest/e1000e-test: De-duplicate constants 2022-12-15 15:19:24 +01:00
eepro100-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
emc141x-test.c sensor: Move hardware sensors from misc to a sensor directory 2021-06-17 07:10:32 -05:00
endianness-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
erst-test.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
es1370-test.c tests: Fix error strings 2022-09-20 11:23:02 +02:00
fdc-test.c tests/qtest: fdc-test: Avoid using hardcoded /tmp 2022-09-27 20:51:20 +02:00
fuzz-e1000e-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
fuzz-lsi53c895a-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fuzz-megasas-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fuzz-sb16-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fuzz-sdcard-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fuzz-virtio-scsi-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fuzz-xlnx-dp-test.c qtest: "-display none" is set in qtest_init() 2022-10-11 12:36:15 +02:00
fw_cfg-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
hd-geo-test.c tests/x86: Add 'q35' machine type to hotplug hd-geo-test 2022-10-11 14:06:55 +02:00
hexloader-test.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
i440fx-test.c tests/qtest: i440fx-test: Rewrite create_blob_file() to be portable 2022-09-27 20:51:20 +02:00
i82801b11-test.c
ide-test.c tests/qtest/ide-test: Verify that DIAGNOSTIC clears DEV to zero 2022-09-30 18:43:44 +02:00
intel-hda-test.c tests: Only run intel-hda-tests if machine type is compiled in 2022-09-20 12:34:31 +02:00
ioh3420-test.c
ipmi-bt-test.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
ipmi-kcs-test.c tests: Avoid side effects inside g_assert() arguments 2021-05-14 12:28:01 +02:00
ipoctal232-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
isl_pmbus_vr-test.c hw/sensor: add Renesas raa228000 device 2022-03-08 18:46:48 +01:00
ivshmem-test.c tests/x86: Add 'q35' machine type to ivshmem-test 2022-10-11 14:06:55 +02:00
libqmp.c tests/qtest: Use send/recv for socket communication 2022-10-28 11:17:12 +02:00
libqmp.h tests: make libqmp buildable for win32 2022-05-28 11:42:56 +02:00
libqtest-single.h tests/qtest: libqtest: Adapt global_qtest declaration for win32 2022-09-27 20:51:21 +02:00
libqtest.c tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32 2022-10-28 14:32:09 +02:00
libqtest.h Fix some typos in documentation and comments 2022-11-05 20:35:45 +01:00
lpc-ich9-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
lsm303dlhc-mag-test.c hw/sensor: Add lsm303dlhc magnetometer device 2022-02-08 10:56:29 +00:00
m48t59-test.c tests/qtest: Adapt {m48t59,rtc}-test cases for win32 2022-08-25 15:24:09 +02:00
machine-none-test.c tests/qtest: machine-none-test: Use double quotes to pass the cpu option 2022-08-29 15:28:51 +02:00
max34451-test.c tests/qtest: add tests for MAX34451 device model 2021-07-08 14:42:00 -05:00
megasas-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
meson.build tests/qtest: Enable qtest build on Windows 2022-12-15 15:19:24 +01:00
microbit-test.c tests/qtest: microbit-test: Fix socket access for win32 2022-09-27 20:51:21 +02:00
migration-helpers.c tests/qtest: migration-test: Skip running test_migrate_fd_proto on win32 2022-08-25 15:24:09 +02:00
migration-helpers.h tests/qtest: migration-test: Skip running test_migrate_fd_proto on win32 2022-08-25 15:24:09 +02:00
migration-test.c tests/qtest/migration-test: Fix unlink error and memory leaks 2022-12-03 21:56:13 +01:00
modules-test.c blkio: add libblkio block driver 2022-10-26 14:56:42 -04:00
ne2000-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
npcm7xx_adc-test.c hw/adc: Fix CONV bit in NPCM7XX ADC CON register 2022-07-18 13:20:14 +01:00
npcm7xx_emc-test.c tests/qtest: npcm7xx-emc-test: Skip checking MAC 2022-09-19 15:12:28 +02:00
npcm7xx_gpio-test.c hw/gpio: Add GPIO model for Nuvoton NPCM7xx 2020-10-27 11:10:32 +00:00
npcm7xx_pwm-test.c qtest/npcm7xx_pwm-test: Fix memory leak in mft_qom_set 2022-06-03 08:03:28 +02:00
npcm7xx_rng-test.c include: move C/util-related declarations to cutils.h 2022-04-06 14:31:43 +02:00
npcm7xx_sdhci-test.c tests/qtest: Reduce npcm7xx_sdhci test image size 2022-06-10 14:32:35 +01:00
npcm7xx_smbus-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
npcm7xx_timer-test.c tests/qtest: variable defined by g_autofree need to be initialized 2020-11-20 13:34:22 +01:00
npcm7xx_watchdog_timer-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
numa-test.c qtest/numa-test: Correct CPU and NUMA association in aarch64_numa_cpu() 2022-05-09 11:47:55 +01:00
nvme-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
pca9552-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
pci-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
pcnet-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
pflash-cfi02-test.c tests/qtest: pflash-cfi02-test: Avoid using hardcoded /tmp 2022-09-27 20:51:21 +02:00
pnv-xscom-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
prom-env-test.c tests/qtest: prom-env-test: Use double quotes to pass the prom-env option 2022-08-29 15:28:51 +02:00
pvpanic-pci-test.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
pvpanic-test.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
pxe-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
q35-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
qmp-cmd-test.c qapi tests: Elide redundant has_FOO in generated C 2022-12-13 18:31:37 +01:00
qmp-test.c tests/qtest: qmp-test: Avoid using hardcoded /tmp 2022-09-27 20:51:21 +02:00
qom-test.c tests/qtest: Decrease the amount of output from the qom-test 2022-11-23 10:58:48 +01:00
qos-test.c tests/qtest: use qos_printf instead of g_test_message 2022-10-07 09:41:51 -04:00
readconfig-test.c tests/qtest: misc tweaks to readconfig 2022-08-16 11:36:21 +02:00
rtas-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
rtc-test.c tests/qtest: Adapt {m48t59,rtc}-test cases for win32 2022-08-25 15:24:09 +02:00
rtl8139-test.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
sdhci-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
spapr-phb-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
sse-timer-test.c tests/qtest/sse-timer-test: Test counter scaling changes 2021-03-08 17:20:03 +00:00
tco-test.c hw/isa: enable TCO watchdog reboot pin strap by default 2022-12-21 06:35:28 -05:00
test-arm-mptimer.c
test-filter-mirror.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
test-filter-redirector.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
test-hmp.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
test-netfilter.c tests/qtest: Make the filter tests independent from a specific NIC 2021-12-22 08:13:05 +01:00
test-x86-cpuid-compat.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
tmp105-test.c sensor: Move hardware sensors from misc to a sensor directory 2021-06-17 07:10:32 -05:00
tpm-crb-swtpm-test.c tests/qtest/tpm: Clean up remainders of swtpm 2022-10-28 09:39:21 +02:00
tpm-crb-test.c tests: Add tpm_version field to TPMTestState and fill it 2021-08-31 17:33:11 -04:00
tpm-emu.c tests: Use QMP to check whether a TPM device model is available 2021-08-31 17:33:12 -04:00
tpm-emu.h tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
tpm-tests.c tests/qtest/tpm-tests: Remove unnecessary NULL checks 2021-06-03 16:43:27 +01:00
tpm-tests.h test: tpm: pass optional machine options to swtpm test functions 2020-03-05 12:18:33 -05:00
tpm-tis-device-swtpm-test.c tests/qtest/tpm: Clean up remainders of swtpm 2022-10-28 09:39:21 +02:00
tpm-tis-device-test.c tests: Add tpm_version field to TPMTestState and fill it 2021-08-31 17:33:11 -04:00
tpm-tis-swtpm-test.c tests/qtest/tpm: Clean up remainders of swtpm 2022-10-28 09:39:21 +02:00
tpm-tis-test.c tests: Add tpm_version field to TPMTestState and fill it 2021-08-31 17:33:11 -04:00
tpm-tis-util.c tests: Rename TestState to TPMTestState 2021-08-31 17:33:10 -04:00
tpm-tis-util.h test: tpm-tis: Get prepared to share tests between ISA and sysbus devices 2020-03-05 12:18:39 -05:00
tpm-util.c tests/qtest/tpm: Clean up remainders of swtpm 2022-10-28 09:39:21 +02:00
tpm-util.h tests/qtest/tpm: Clean up remainders of swtpm 2022-10-28 09:39:21 +02:00
tulip-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
usb-hcd-ehci-test.c libqos: usb-hcd-ehci: use 32-bit write for config register 2020-06-26 06:45:29 -04:00
usb-hcd-ohci-test.c
usb-hcd-uhci-test.c
usb-hcd-xhci-test.c
vhost-user-blk-test.c tests/qtest/vhost-user-blk-test: don't abort all qtests on missing envar 2022-12-15 15:19:24 +01:00
vhost-user-test.c tests/qtest: vhost-user-test: Fix [-Werror=format-overflow=] build warning 2022-10-22 23:17:06 +02:00
virtio-9p-test.c tests/9p: merge v9fs_tunlinkat() and do_unlinkat() 2022-10-24 12:24:32 +02:00
virtio-blk-test.c tests/qtest: virtio-blk-test: Avoid using hardcoded /tmp 2022-09-27 20:51:20 +02:00
virtio-ccw-test.c cleanup: Tweak and re-run return_directly.cocci 2022-12-14 16:19:35 +01:00
virtio-iommu-test.c tests/qtest/virtio-iommu-test: Check bypass config 2022-03-06 05:08:23 -05:00
virtio-net-failover.c tests/qtest: virtio-net-failover: Disable migration tests for win32 2022-09-27 20:51:21 +02:00
virtio-net-test.c tests/qtest: Skip running virtio-net-test cases that require socketpair() for win32 2022-09-27 20:51:21 +02:00
virtio-rng-test.c tests/qtest/libqos: Skip hotplug tests if pci root bus is not hotpluggable 2022-05-12 12:07:06 +02:00
virtio-scsi-test.c tests/qtest: virtio-scsi-test: Avoid using hardcoded /tmp 2022-09-27 20:51:20 +02:00
virtio-serial-test.c
virtio-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
vmgenid-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
vmxnet3-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
vnc-display-test.c qtest: start a VNC test 2022-10-12 08:43:40 +02:00
wdt_ib700-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00
xlnx-can-test.c tests: move libqtest.h back under qtest/ 2022-05-03 15:16:51 +04:00