When i read data through port /dev/ttyTHS0 i get a problem like this '[204415.045080] serial-tegra 3100000.serial: RxData DMA copy to tty layer failed
". I don’t know the reason that i was stop service nvgetty.service. Help me explain the function of this service. Thanks.
Hi chudat1204,
Are you using the devkit or custom board for Xavier NX?
What’s the Jetpack version in use?
Have you confirmed that you’ve run the following command to disable nvgetty.service?
$ sudo systemctl stop nvgetty.service
$ sudo systemctl disable nvgetty.service
If you still hit the issue, please share the full dmesg for further check.
i was stopped and disabled service nvgetty. Full log i put it below. Thanks.
log_tty.txt (6.4 KB)
Please also let us know these info in your case.
[204414.245288] serial-tegra 3100000.serial: RxData DMA copy to tty layer failed
From the log you shared, it seems you are performing DMA transaction and hit some errors on the serial interface.
What’s your use case for this interface? What serial device you are connecting with?
i create a thread that uses to reads data from /dev/ttyTHS0. After a long time, it leads to some problems like those above.
Are you using the devkit or custom board for Xavier NX?
What’s the Jetpack version in use?
Please share the detailed reproduce steps for us to verify.
i am using devkit for Xavier NX and use JetPack 5.0.2 for this. Thanks
It is really an old release for Xavier NX.
Since you are using the devkit, could you simply update to the latest Jetpack 5.1.5(r35.6.1) to verify?
We have some DMA improvement for UART in later release.
but my product is running normal with this jetpack. And i don’t want to change jetpack. Do you have idea to address my problem. I realized my problem came from reading data from /dev/ttyTHS0 not reading all, leading to pushing data from DMA to tty layer failed. I saw a code in the driver like this " if (copied != count) {
dev_err(tup->uport.dev, “RxData DMA copy to tty layer failed\n”);
tegra_uart_disable_rx_irqs(tup);
mod_timer(&tup->error_timer,
jiffies + tup->error_timer_timeout_jiffies);
ret = -ENOSPC;
}". This stops the process of receiving data from the peripheral to DMA. So I can read all the data in the FIFO of the tty layer. Or is there a way to clear the FIFO? I see that using flush uart "tcflush(this->serial_port, TCIFLUSH);"does not work.
Your product should work as expected if you update to the latest release since you are using the devkit.
I would suggest you verifying with the latest release to clarify if there’s something been fixed first. Then, we could find if there’s available patch helping for your case with current release.
So you can help give available path to fix this error relate to DMA UART. Thanks
Please update the devkit to the latest JP5.1.5(r35.6.1) to verify if it could fix your issue first.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.