drivers/tty/serial/8250/8250_mid.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
From: Philo Shao <philo@micasnetworks.com>
Intel DNV CPU reports an error, indicating that there is a possibility of abnormal serial port functionality and the CPU may hang.
The HSUART DMA will be deactivated for the DNV CPU.
Signed-off-by: Philo Shao<philo@micasnetworks.com>
---
drivers/tty/serial/8250/8250_mid.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_mid.c b/drivers/tty/serial/8250/8250_mid.c
index 2cc78a4bf..e4a5d6358 100644
--- a/drivers/tty/serial/8250/8250_mid.c
+++ b/drivers/tty/serial/8250/8250_mid.c
@@ -321,13 +321,17 @@ static int mid8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (!uart.port.membase)
return -ENOMEM;
- ret = mid->board->setup(mid, &uart.port);
- if (ret)
- return ret;
-
- ret = mid8250_dma_setup(mid, &uart);
- if (ret)
- goto err;
+ if (id->device != PCI_DEVICE_ID_INTEL_DNV_UART) {
+ ret = mid->board->setup(mid, &uart.port);
+ if (ret)
+ return ret;
+
+ ret = mid8250_dma_setup(mid, &uart);
+ if (ret)
+ goto err;
+ } else {
+ uart.port.handle_irq = dnv_handle_irq;
+ }
ret = serial8250_register_8250_port(&uart);
if (ret < 0)
--
2.25.1
On Wed, Jun 25, 2025 at 6:14 AM micas-opensource <zjianan156@gmail.com> wrote: > > From: Philo Shao <philo@micasnetworks.com> > > Intel DNV CPU reports an error, indicating that there is a possibility of abnormal serial port functionality and the CPU may hang. > The HSUART DMA will be deactivated for the DNV CPU. Please, wrap lines around ~72 characters. Nevertheless, we want to know a bit more, i.e. what kind of CPU errors, how the symptoms look like. Also have you checked if there is an official errata for this case? If so, please, mention the document number, errata title and proposed / recommended solution. ... > - ret = mid->board->setup(mid, &uart.port); > - if (ret) > - return ret; > - > - ret = mid8250_dma_setup(mid, &uart); > - if (ret) > - goto err; > + if (id->device != PCI_DEVICE_ID_INTEL_DNV_UART) { Wouldn't it be just enough to skip DMA setup in the mid8250_dma_setup() for this ID? > + ret = mid->board->setup(mid, &uart.port); > + if (ret) > + return ret; > + > + ret = mid8250_dma_setup(mid, &uart); > + if (ret) > + goto err; > + } else { > + uart.port.handle_irq = dnv_handle_irq; > + } -- With Best Regards, Andy Shevchenko
© 2016 - 2025 Red Hat, Inc.