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/ PATCH v2: https://lore.kernel.org/linux-watchdog/20220602175353.68942-1-cheloha@xxxxxxxxxxxxx/ Changes of note from PATCH v2: - Don't keep a pointer to the platform device at registration time. We don't use the pointer for anything and we cannot hotplug the "device". - Drop the GETFIELD() and SETFIELD() macros: Michael Ellerman really doesn't like them. Use plain integer constants and custom bitfield extraction macros for the capability output instead. (After making the change I can see the upside to plain constants.) - Actually use PSERIES_WDTQ_MAX_NUMBER(): check that the hypervisor gave us at least one timer to work with. - Use MSEC_PER_SEC in a few places instead of the literal 1000 to show the reader what we're doing. - Use "reverse xmas tree" sorting for automatic variable declarations. - Note where the max_timeout of (UINT_MAX / 1000) comes from. - Nix email addresses from the MODULE_AUTHOR() macros, they tend to rot.