Hi,
Update: checking out 'dmesg' more carefully I found out that the module probe
is failing with the following message:
[ 186.298424][ T811] pseries-wdt: probe of pseries-wdt.0 failed with error -5
This fail is consistent. If I remove the module and modprobe it again the same
error happens.
The message is being throw by pseries_wdt_probe() (patch 4/4). Back in QEMU, in
Alexey's H_WATCHDOG implementation [1], I see that h_watchdog is returning H_PARAMETER
because the retrieved 'watchdogNumber' is zero.
Also, the pseries_wdt module still appears in 'lsmod' despite this probe error. Not sure
if this is a bug:
[root@fedora ~]# rmmod pseries_wdt
[root@fedora ~]# modprobe pseries_wdt
[ 1792.846769][ T865] pseries-wdt: probe of pseries-wdt.0 failed with error -5
[root@fedora ~]# lsmod | grep pseries
pseries_wdt 262144 0
[root@fedora ~]#
For reference this is all the output of 'lsmod' in the guest:
[root@fedora ~]# lsmod
Module Size Used by
pseries_wdt 262144 0
nfnetlink 262144 1
evdev 327680 1
input_leds 262144 0
led_class 262144 1 input_leds
fuse 458752 1
xfs 1835008 2
libcrc32c 262144 1 xfs
virtio_scsi 327680 2
virtio_pci 262144 0
virtio 327680 2 virtio_scsi,virtio_pci
vmx_crypto 262144 0
gf128mul 262144 1 vmx_crypto
crc32c_vpmsum 327680 1
virtio_ring 327680 3 virtio_scsi,virtio_pci,virtio
virtio_pci_legacy_dev 262144 1 virtio_pci
virtio_pci_modern_dev 262144 1 virtio_pci
autofs4 327680 2
Given that the error is being thrown by Alexey's QEMU code, I'll bring it up in the QEMU
mailing list in [1] and follow it up from there.
[1] https://patchwork.ozlabs.org/project/qemu-ppc/patch/20220608030153.1862335-1-aik@xxxxxxxxx/
Thanks,
Daniel
On 6/15/22 22:43, Daniel Henrique Barboza wrote:
Hi,
I tried this series out with mainline QEMU built with Alexey's patch [1]
and I wasn't able to get it to work. I'm using a simple QEMU command line
booting a fedora36 guest in a Power9 boston host:
sudo ./qemu-system-ppc64 \
-M pseries,cap-cfpc=broken,cap-sbbc=broken,cap-ibs=broken,cap-ccf-assist=off,ic-mode=dual \
-m 4G -accel kvm -cpu POWER9 -smp 1,maxcpus=1,threads=1,cores=1,sockets=1 \
-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x2 \
-drive file=/home/danielhb/fedora36.qcow2,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none \
-device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2 \
-device qemu-xhci,id=usb,bus=pci.0,addr=0x4 -nographic -display none
Guest is running v5.19-rc2 with this series applied. Kernel config consists of
'pseries_le_defconfig' plus the following 'watchdog' related changes:
[root@fedora ~]# cat linux/.config | grep PSERIES_WDT
CONFIG_PSERIES_WDT=y
[root@fedora ~]# cat linux/.config | grep -i watchdog
CONFIG_PPC_WATCHDOG=y
CONFIG_HAVE_NMI_WATCHDOG=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_WATCHDOG_NOWAYOUT=y
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
CONFIG_WATCHDOG_OPEN_TIMEOUT=0
# CONFIG_WATCHDOG_SYSFS is not set
# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set
# Watchdog Pretimeout Governors
# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
# Watchdog Device Drivers
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_XILINX_WATCHDOG is not set
# CONFIG_ZIIRAVE_WATCHDOG is not set
# CONFIG_CADENCE_WATCHDOG is not set
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
CONFIG_WATCHDOG_RTAS=y
# PCI-based Watchdog Cards
# CONFIG_PCIPCWATCHDOG is not set
# USB-based Watchdog Cards
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_WQ_WATCHDOG is not set
[root@fedora ~]#
Kernel command line:
[root@fedora ~]# cat /proc/cmdline
BOOT_IMAGE=(ieee1275/disk,msdos2)/vmlinuz-5.19.0-rc2-00054-g12ede8ffb103 \
root=/dev/mapper/fedora_fedora-root ro rd.lvm.lv=fedora_fedora/root \
pseries-wdt.timeout=60 pseries-wdt.nowayout=1 pseries-wdt.action=2
With all that, executing
echo V > /dev/watchdog0
Does nothing. dmesg is clean and the guest doesn't reboot after the 60 sec
timeout. I also tried with PSERIES_WDT being compiled as a module instead
of built-in. Same results.
What am I missing?
[1] https://patchwork.ozlabs.org/project/qemu-ppc/patch/20220608030153.1862335-1-aik@xxxxxxxxx/
Thanks,
Daniel
On 6/2/22 14:53, Scott Cheloha wrote:
PAPR v2.12 defines a new hypercall, H_WATCHDOG. This patch series
adds support for this hypercall to powerpc/pseries kernels and
introduces a new watchdog driver, "pseries-wdt", for the virtual
timers exposed by the hypercall.
This series is preceded by the following:
RFC v1: https://lore.kernel.org/linux-watchdog/20220413165104.179144-1-cheloha@xxxxxxxxxxxxx/
RFC v2: https://lore.kernel.org/linux-watchdog/20220509174357.5448-1-cheloha@xxxxxxxxxxxxx/
PATCH v1: https://lore.kernel.org/linux-watchdog/20220520183552.33426-1-cheloha@xxxxxxxxxxxxx/
Changes of note from PATCH v1:
- Trim down the large comment documenting the H_WATCHDOG hypercall.
The comment is likely to rot, so remove anything we aren't using
and anything overly obvious.
- Remove any preprocessor definitions not actually used in the module
right now. If we want to use other features offered by the hypercall
we can add them in later. They're just clutter until then.
- Simplify the "action" module parameter. The value is now an index
into an array of possible timeoutAction values. This design removes
the need for the custom get/set methods used in PATCH v1.
Now we merely need to check that the "action" value is a valid
index during pseries_wdt_probe(). Easy.
- Make the timeoutAction a member of pseries_wdt, "action". This
eliminates the use of a global variable during pseries_wdt_start().
- Use watchdog_init_timeout() idiomatically. Check its return value
and error out of pseries_wdt_probe() if it fails.