From 0f15fd86a8ea051cb3b4d0767b183d7afe2e8b16 Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Wed, 29 Mar 2023 13:48:08 -0700 Subject: [PATCH] kgpe/linux.config: remove sb700 watchdog-related settings The KGPE-D16 southbridge contains a watchdog; the kernel module for this watchdog is sp5100_tco. Unfortunately this watchdog keeps its counter in the main system CPU RAM. This means that the IOMMU will block the watchdog's attempts to read and write its own counter (through the SMBus, which is PCI device 0000:00:14.0), resulting in massive amounts of dmesg spam like this: ``` pci 0000:00:14.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0004 address=0xfdf9103300 flags=0x0030] piix4_smbus 0000:00:14.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0004 address=0xfdf9103300 flags=0x0030] ``` Setting the IOMMU to allow these accesses is a headache, and pointless anyways: the KGPE-D16 board disallows the use of the watchdog by the CPU; it is reserved for the exclusive use of the BMC. Attempting to enable the watchdog does nothing; the enable bit will not turn on. Recent kernels check for this situation and report when it is detected: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7781b067522aa269213e8025c80cbed1868d349 Fortunately there is *another* watchdog on the motherboard, inside the `W83667HG-A` SuperIO chip, and it is supported by `w83627hf_wdt.ko`. Subsequent commits to ownerboot will use *that* watchdog instead. Dump of my collection of possibly-related links: - https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=266325 - https://forums.freebsd.org/threads/ivhd-errors-after-upgrade-host-to-13-1.85234/ - https://lists.linuxfoundation.org/pipermail/iommu/2015-October/014523.html - https://lkml.org/lkml/2014/4/22/562 - https://bugzilla.kernel.org/show_bug.cgi?id=170741 - https://marc.info/?l=linuxbios&m=152035277020470&w=2 --- src/platform/kgpe/linux.config | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/platform/kgpe/linux.config b/src/platform/kgpe/linux.config index 0c8b52d..47ed8b0 100644 --- a/src/platform/kgpe/linux.config +++ b/src/platform/kgpe/linux.config @@ -68,7 +68,7 @@ CONFIG_SPARSE_IRQ=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set # end of IRQ subsystem -CONFIG_CLOCKSOURCE_WATCHDOG=y +#CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_CLOCKSOURCE_INIT=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y @@ -1661,15 +1661,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_DEV_BUS is not set # CONFIG_TTY_PRINTK is not set -CONFIG_IPMI_HANDLER=y -CONFIG_IPMI_DMI_DECODE=y -CONFIG_IPMI_PLAT_DATA=y +#CONFIG_IPMI_HANDLER=y +#CONFIG_IPMI_DMI_DECODE=y +#CONFIG_IPMI_PLAT_DATA=y # CONFIG_IPMI_PANIC_EVENT is not set -CONFIG_IPMI_DEVICE_INTERFACE=y -CONFIG_IPMI_SI=y +#CONFIG_IPMI_DEVICE_INTERFACE=y +#CONFIG_IPMI_SI=y # CONFIG_IPMI_SSIF is not set -CONFIG_IPMI_WATCHDOG=y -CONFIG_IPMI_POWEROFF=y +#CONFIG_IPMI_WATCHDOG=y +#CONFIG_IPMI_POWEROFF=y CONFIG_HW_RANDOM=m # CONFIG_HW_RANDOM_TIMERIOMEM is not set CONFIG_HW_RANDOM_INTEL=m @@ -2168,12 +2168,12 @@ CONFIG_INT3406_THERMAL=m CONFIG_INTEL_PCH_THERMAL=m # end of Intel thermal drivers -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y +#CONFIG_WATCHDOG=y +#CONFIG_WATCHDOG_CORE=y # CONFIG_WATCHDOG_NOWAYOUT is not set -CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -CONFIG_WATCHDOG_OPEN_TIMEOUT=0 -CONFIG_WATCHDOG_SYSFS=y +#CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +#CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +#CONFIG_WATCHDOG_SYSFS=y # # Watchdog Pretimeout Governors