Linux kernel Linux UART驱动程序-调试初始化调用花费的时间

Linux kernel Linux UART驱动程序-调试初始化调用花费的时间,linux-kernel,linux-device-driver,kernel-module,kernel,Linux Kernel,Linux Device Driver,Kernel Module,Kernel,我对Linux内核有点陌生,我们的团队正在尝试优化设备的启动时间。据观察,8250 UART驱动程序完成_init调用需要1秒以上的时间。使用printk并查看生成的控制台时间戳(前缀为每条日志消息),我能够缩小占用额外时间的函数调用范围: ret=平台\驱动程序\寄存器(&serial8250\ isa\驱动程序) 作为一名新手,我不确定从调试的角度来看,我还能做些什么来追踪问题?我正在寻找一些有经验的内核开发人员的建议。。只是好奇的是,内核开发人员会使用他们的“调试工具箱”中的其他方法吗 谢

我对Linux内核有点陌生,我们的团队正在尝试优化设备的启动时间。据观察,8250 UART驱动程序完成_init调用需要1秒以上的时间。使用printk并查看生成的控制台时间戳(前缀为每条日志消息),我能够缩小占用额外时间的函数调用范围:

ret=平台\驱动程序\寄存器(&serial8250\ isa\驱动程序)

作为一名新手,我不确定从调试的角度来看,我还能做些什么来追踪问题?我正在寻找一些有经验的内核开发人员的建议。。只是好奇的是,内核开发人员会使用他们的“调试工具箱”中的其他方法吗

谢谢,
Vijay

如果我理解正确的话,register函数正在对该结构进行处理(可能是轮询地址之类的)。您需要查看寄存器是否正在调用其中定义的任何函数


为了进一步回答您的问题,您运行的平台是否有8250 ISA UART?如果不是的话,这很好地解释了为什么需要这么长时间来初始化(它超时了)。

8250是当时的标准UART。我们在这里最有可能看到的是一个8250寄存器兼容的设备集成到一个更大的设备中。这是很常见的。