- 博客(163)
- 资源 (4)
- 收藏
- 关注
原创 【Kdump 专栏】vmcoreinfo存储2 - kimage_crash_copy_vmcoreinfo
本文摘要探讨了Linux内核崩溃转储机制中的关键数据结构kimage,重点分析了其存储内核映像信息的功能。文章展示了kimage结构体示意图,说明其作为内存区域管理容器的作用,并特别指出image->start字段用于捕获内核入口地址(entry)的重要功能。该内容涉及内核崩溃分析的基础知识,有助于理解系统故障时如何保存关键内存信息。
2025-06-12 11:19:21
94
原创 【Kdump 专栏】 vmcoreinfo_note 保存和加载
摘要:该调试过程记录了Linux内核崩溃分析的关键步骤:首先检查vmcoreinfo_note地址及初始化信息,获取核心转储基础数据;随后定位log_buf地址以分析内核日志;接着排查串口通信问题;最后捕获系统panic卡死现场。通过多维度信息采集(内存地址、日志缓冲、硬件接口状态),为诊断内核级故障提供了完整的调试链路,尤其有助于分析系统崩溃前的最后执行状态。
2025-06-12 09:02:07
27
原创 CPU Idle 状态与中断的关系
Linux内核中,当CPU进入深度idle状态(如C3/C6)时,可能关闭中断导致IPI唤醒延迟。进入idle前可能调用local_irq_disable()屏蔽中断,加上硬件需恢复时钟和电源状态,会增加IPI响应时间。延迟主要来自:1)中断屏蔽期间无法处理IPI;2)深层C-State的硬件恢复耗时。可通过限制C-State深度、优化中断处理或调整cpuidle策略来减少延迟。在深层idle状态下,中断确实可能被关闭,需权衡节能与响应速度。
2025-06-10 15:51:32
649
原创 【Kdump 专栏】 log_buf异常问题
该文档展示了Linux内核日志系统的关键数据结构获取方法。通过sys_log_iter接口和printk_ring_buffer实现内核日志的高效存取,图示了相关数据结构的获取流程。系统采用环形缓冲区存储printk日志,支持日志迭代读取功能。代码片段展示了内核日志缓冲区的访问方式,为系统日志分析提供了底层支持。 (摘要共95字,准确概括了图片展示的Linux内核日志机制核心内容)
2025-06-10 14:03:29
97
原创 【Trace32专栏】使用trace32 定位分析log_buf问题
本文介绍了获取log_buf变量信息的方法。首先通过图示标出了log_buf变量的地址(红框处),然后展示了使用view info命令查看该变量信息的界面截图。文章比较了直接dump与使用Data.dump命令(指定地址格式NSD:0x0::0xFFFF0000093B3580)两种方式,确认两者输出的数据结果完全一致,并通过多张截图直观呈现了操作过程和输出内容。这些方法可以帮助开发人员正确获取和分析log_buf变量的内存数据。
2025-06-10 10:52:15
133
原创 【Ftrace 专栏】Ftrace 基础使用
文章摘要: Ftrace基础使用指南介绍了四种内核函数追踪方法:1) 通过function_tracer查看特定函数执行;2) 利用kprobe event追踪函数;3) 通过模块过滤查看模块执行函数;4) 使用多种方式获取函数调用栈信息。文章提供了详细的Shell脚本示例,涵盖设置追踪过滤器、开启/关闭追踪、保存日志等操作步骤,特别展示了如何结合stacktrace选项获取函数调用关系。这些方法适用于调试内核模块、分析代码执行流程等场景。
2025-06-08 17:37:55
219
原创 【ARM64信号处理过程中的上下文切换】
摘要(150字以内) 信号处理中的上下文切换涉及多个关键步骤:当信号触发时,系统保存当前任务状态(用户态→内核态),处理信号回调函数(可能嵌套执行),最后恢复原任务。该过程需要处理栈帧切换、寄存器保存及信号掩码等机制,确保执行流正确转移与返回。参考资料通过图示和文字解析了信号处理流程、内核/用户态切换逻辑,并讨论了异步处理时的并发控制问题,为理解信号机制提供了系统级视角。 (注:摘要严格控制在150字,已整合三篇参考资料的核心观点)
2025-06-08 16:45:39
107
1
原创 【Ftrace专栏】Linux内核社区补丁:关于使用stacktrace输出抢占计数问题
摘要:Ftrace在使用trace_stack时显示的preempt_count抢占计数存在误差,因为回调函数前后会进行抢占计数操作,导致显示的是trace后的值而非实际值。通过使用tracing_gen_ctx_dec()减去人为增加的计数,可获得更准确的抢占计数结果。补丁解释了该问题并提供了解决方案,使堆栈跟踪中显示的抢占计数更符合实际需求。
2025-06-08 16:39:46
75
原创 【Ftrace专栏】function graph的trace输出格式使用
使用Linux内核的function graph tracer可以跟踪函数耗时,分析内核代码的执行流,并且还提供了很多选项开关来对输出的内容进行定制,进一步提高分析效率
2025-06-08 15:43:45
526
原创 Linux内核 - 日志输出系统
本文摘要聚焦Linux内核日志机制,主要涉及printk的实现原理与应用场景。两篇文章分别解析了printk的环形缓冲区和日志级别机制,指出其作为内核态printf的异步特性。第三篇对比了kmsg与dmesg两种日志获取方式的差异,强调/proc/kmsg的实时性特点。另附IMX平台UART驱动分析作为扩展参考。这些技术文档共同揭示了Linux内核日志系统的核心架构,包括消息存储、优先级过滤和用户态接口等关键设计,为驱动开发人员提供了重要的调试工具实现原理。
2025-06-07 10:09:30
191
原创 【Ftrace 专栏】Ftrace 参考博文
Linux 系统中 ftrace 工具可用于内核调用分析、进程调度跟踪和延迟追踪。通过 ftrace 可以精确监控内核函数调用路径,分析特定进程的调度行为,并检测系统延迟问题。该工具在性能优化和实时系统调优中发挥重要作用,Red Hat 等企业版 Linux 也将其用于低延迟场景分析。用户可根据需求配置不同跟踪器,获取内核运行时的详细追踪数据。
2025-06-07 09:47:05
109
原创 Rapidio门铃消息FIFO溢出机制
是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。关于RapidIO门铃消息FIFO的。通过上述方法,可精准区分问题根源在。在RapidIO系统中,
2025-06-07 09:22:24
372
原创 【Kdump专题】kexec加载捕获内核和 makedumpfile保存Vmcore
摘要: 本文介绍了Linux内核崩溃转储(crash dump)的获取方法。第一部分使用kexec命令加载捕获内核,指定了启动参数、设备树文件和内核镜像路径,并检查了crash区域状态。第二部分提供了自动保存vmcore和内核日志的脚本,利用makedumpfile工具生成崩溃转储文件,同时保存dmesg日志输出。脚本会为每次转储生成带时间戳的唯一文件名,避免覆盖旧文件。执行过程展示了成功生成日志文件(vdmesg.txt)和崩溃转储文件(vmcore)的完整输出。
2025-06-04 11:28:21
155
原创 kexec_trylock 补丁
该补丁解决了PREEMPT_RT内核中NMI panic场景下无法生成crash dump的问题。原代码使用mutex_trylock()在NMI上下文中会触发警告并失败,因为RT mutex无法在中断上下文中使用。解决方案是将kexec_mutex替换为原子变量kexec_lock,使其成为NMI安全的锁机制。虽然某些调用点仍可使用mutex,但统一使用原子锁可避免未来NMI相关的问题。测试通过触发NMI panic验证了修复效果。该修改确保在NMI panic时能正常执行kexec进入kdump内核。
2025-06-04 08:50:34
123
原创 Lauterbach TRACE32专栏
官方培训视频trace32使用技巧博文系统崩溃分析 - vmcore 加载到 Trace32Trace 32 离线 dump 分析环境搭建方法内核trace分析工具入门如何用Trace32分析内核死机trace32调试攻略TRACE32调试:基础调试技巧之SystemMode、SNOOPerhttps://cloud.tencent.com/developer/article/2016944
2025-05-31 09:21:00
172
原创 RCU stall 异常卡住问题
本文简要介绍了Linux内核中RCU(Read-Copy Update)机制的调试过程。首先展示了驱动加载的界面截图,随后呈现了RCU现场状态信息。重点指出当发生RCU stall(停滞)时,系统无法正常触发Kdump内核崩溃转储机制,这对问题诊断造成困难。文中通过两张技术截图直观展示了相关调试信息,揭示了RCU机制在异常情况下的行为表现。
2025-05-30 14:40:14
58
原创 Linux - spi设备驱动适配
https://jishuzhan.net/article/1914679986696552450https://www.cnblogs.com/weidongshan/articles/17183283.htmlhttps://blog.csdn.net/weixin_40407893/article/details/102519627https://blog.csdn.net/yangguoyu8023/article/details/122391253https://blog.csdn.net
2025-05-08 17:45:56
204
原创 Kdump
Kdump依赖双内核机制:生产内核(Primary Kernel)和捕获内核(Capture Kernel)。当系统崩溃时,捕获内核启动并保存内存快照到指定位置。确认目标内核是否启用了以下配置选项(需查看内核的。如果未启用,需重新编译内核并包含这些配置。根据提供的命令和知识库信息,出现。文件系统模块,导致无法挂载。中包含根文件系统的镜像(如。模块或配置,导致无法识别。内核可能未分配足够的内存给。,需确认其配置正确。参数可能未正确传递,或。未正确初始化根文件系统。在启动第二个内核后,通过。
2025-04-04 09:17:22
88
原创 【无标题】
这段注释描述了在 Linux 内核中,将定时器的基准(timer base)切换到一个经过功耗优化后选定的 CPU 目标的条件。如果不满足这些条件,定时器将被移动到当前 CPU,或者当定时器回调函数正在运行时,定时器会保留在之前分配的 CPU 上。这段注释说明了内核在进行定时器基准切换时的决策逻辑,其目的是在满足一定条件下将定时器迁移到功耗优化的 CPU 目标上,同时确保定时器的正常运行和系统的稳定性。
2025-04-02 17:58:25
51
原创 Linux内核调试 - Hung_task机制3 - mutex 案例分析
【代码】Linux内核调试 - Hung_task机制3 - mutex 案例分析。
2025-03-30 11:06:45
51
原创 Linux内核调试 - Hung_task机制2 - 内核配置
系统性能监控:通过Hung_task 检测,可以及时发现系统中的异常任务,避免系统性能下降。分析I/O问题:如果任务因等待I/O操作而挂起,Hung_task 可以提高堆栈信息分析。调试死锁: 当任务因竞争锁资源而进入D状态时,Hung_task 可以帮助定位死锁问题。
2025-03-28 17:45:49
189
原创 Linux内核调试 - dynamic debug
文件目录:kernel-4.14\Documentation\admin-guide\dynamic-debug-howto.rst参数作用。
2025-03-26 11:06:59
633
原创 Linux实时内核 - RCU机制x - RCU_BOOST 提高RCU线程优先级
在可抢占 RCU 环境下,内核允许在 RCU 读侧临界区内进行抢占。确实,CONFIG_RCU_BOOST 是 Linux 内核中的一个配置选项,它与可抢占 RCU (Preemptible RCU) 配合使用,旨在解决低优先级进程长期占用RCU读侧临界区的问题,进而避免由于这些临界区长时间不退出导致的内存耗尽等问题。简而言之,通过配合使用 CONFIG_RCU_BOOST 和可抢占 RCU,Linux 内核能够更好地管理 RCU 读侧临界区的生命周期,防止因低优先级任务导致的系统性能下降或资源耗尽问题。
2025-03-26 08:54:38
60
原创 内核稳定性问题 - hrtime异常1 - scheduling while atomic
4.19 逻辑由此得出结论,在实时内核下,如果未显示定义高精度定时器,则默认软中断处理。!//如果未显示配置HARD模式,则默认配置为软中断处理模式if (!#endif//软/硬类型 枚举位置。
2025-03-25 11:13:46
69
原创 实时内核稳定性问题 - timerfd问题2 - timerfd使用分析
【代码】实时内核稳定性问题 - timerfd问题2 - timerfd使用分析。
2025-03-24 15:42:55
62
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人