[PATCH v2 0/4] pseries-wdt: initial support for H_WATCHDOG-based watchdog timers

Daniel Henrique Barboza danielhb413 at gmail.com
Fri Jun 17 04:16:47 AEST 2022



On 6/16/22 13:44, Tyrel Datwyler wrote:
> On 6/15/22 18: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:
> 
> I would assume the H_WATCHDOG hypercall is not implemented by the qemu pseries
> machine type. It is a very new hypercall.

Alexey implemented QEMU support for this hypercall here:

"[qemu] ppc/spapr: Implement H_WATCHDOG"
https://patchwork.ozlabs.org/project/qemu-ppc/patch/20220608030153.1862335-1-aik@ozlabs.ru/

It is under review in the QEMU mailing list. I tried it out with this series
and wasn't able to get it to work.


Thanks,

Daniel


> 
> -Tyrel
> 
>>
>> 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 at fedora ~]# cat linux/.config | grep PSERIES_WDT
>> CONFIG_PSERIES_WDT=y
>>
>> [root at 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 at fedora ~]#
>>
>>
>>
>> Kernel command line:
>>
>> [root at 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@ozlabs.ru/
>>
>>
>>
>>
>> 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@linux.ibm.com/
>>>
>>> RFC v2:
>>> https://lore.kernel.org/linux-watchdog/20220509174357.5448-1-cheloha@linux.ibm.com/
>>>
>>> PATCH v1:
>>> https://lore.kernel.org/linux-watchdog/20220520183552.33426-1-cheloha@linux.ibm.com/
>>>
>>>
>>> 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.
>>>
>>>
> 


More information about the Linuxppc-dev mailing list