]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
serial: 8250_mid: Disable DMA for selected platforms
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 26 Jun 2026 09:49:37 +0000 (11:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Jul 2026 12:47:16 +0000 (14:47 +0200)
In accordance with Errata (specification updates)
HSUART May Stop Functioning when DMA is Active.

- Denverton document #572409, rev 3.4, DNV60
- Ice Lake Xeon D document #714070, ICXD65
- Snowridge document #731931, SNR44

For a quick fix just disable the respective callbacks during the device probe.
Depending on the future development we might remove them completely.

Reported-by: micas-opensource <zjianan156@gmail.com>
Closes: https://lore.kernel.org/linux-serial/20250625031409.2404219-1-opensource@ruijie.com.cn/
Fixes: 6ede6dcd87aa ("serial: 8250_mid: add support for DMA engine handling from UART MMIO")
Cc: stable <stable@kernel.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260626094937.561776-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_mid.c

index 8ec03863606e4b0b2244de504d8b58e2b183548d..f88809ff370b73fd955cdf03cfacee93c3b92013 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/pci.h>
 #include <linux/rational.h>
+#include <linux/util_macros.h>
 
 #include <linux/dma/hsu.h>
 
@@ -368,8 +369,16 @@ static const struct mid8250_board dnv_board = {
        .freq = 133333333,
        .base_baud = 115200,
        .bar = 1,
-       .setup = dnv_setup,
-       .exit = dnv_exit,
+       /*
+        * Errata:
+        * HSUART May Stop Functioning when DMA is Active.
+        *
+        * - Denverton document #572409, rev 3.4, DNV60
+        * - Ice Lake Xeon D document #714070, ICXD65
+        * - Snowridge document #731931, SNR44
+        */
+       .setup = PTR_IF(false, dnv_setup),
+       .exit = PTR_IF(false, dnv_exit),
 };
 
 static const struct pci_device_id pci_ids[] = {