Skip to content

docs: 新增 Linux 内核热补丁 sysfs 节点文档 (docs/livepatch-sysfs.md)#1

Draft
Copilot wants to merge 2 commits into
mainfrom
copilot/add-livepatch-sysfs-docs
Draft

docs: 新增 Linux 内核热补丁 sysfs 节点文档 (docs/livepatch-sysfs.md)#1
Copilot wants to merge 2 commits into
mainfrom
copilot/add-livepatch-sysfs-docs

Conversation

Copy link
Copy Markdown

Copilot AI commented Apr 29, 2026

新增面向内核/BPF 初学者的参考文档,系统讲解 /sys/kernel/livepatch sysfs 接口及 Linux livepatch 机制。

覆盖内容

  • 原理:ftrace hook 函数替换机制、per-task 一致性模型与过渡状态机
  • 节点结构/sys/kernel/livepatch/<patch>/ 完整目录树,含 vmlinux 与内核模块补丁示例
  • 关键文件enabledtransitionforcepatchedcallbacks/ 的含义、取值、读写属性及注意事项
  • 生命周期:加载 → 过渡 → 激活 → 禁用 → 卸载各阶段节点状态迁移速查表
  • 框架对比:kpatch / 上游 livepatch / kGraft 的 sysfs 节点差异与一致性模型区别
  • 操作速查:常用命令片段(insmod、kpatch、sysfs 写操作、rmmod 安全流程)
  • 状态观测:判断补丁完整激活的三要素 + 综合状态 shell 脚本及示例输出
  • 排错transition 卡住(RT 任务/中断上下文)、rmmod -EBUSY、加载失败错误速查表、force 节点风险说明
  • 参考资料:官方内核文档链接、kpatch 工具链、内核源码关键文件索引
Original prompt

新增文档《热补丁内核节点》到 docs/livepatch-sysfs.md,系统讲解 Linux 内核 livepatch(如 kpatch、livepatch、kgraft 框架)的 sysfs 节点 /sys/kernel/livepatch,包括:

  • livepatch 子系统作用、用途,内核热补丁的主要原理简述;
  • /sys/kernel/livepatch 节点下的目录、条目结构、每个关键文件(如 enable、transition、version、callbacks、loaded 等)的意义和常见取值说明;
  • 手动/自动加载、启用、禁用热补丁时节点的变化流程;
  • kpatch/livepatch/kgraft 之间与节点结构的细微区别;
  • 常见操作命令、如何观测节点状态判断补丁激活与否;
  • 排错思路,如“transition 卡住”等常见问题及 sysfs 层如何判断;
  • 参考官方文档以及实际示例输出。

文档采用简体中文,内容为学习/排查热补丁 sysfs 节点入口资料,便于 BPF 或内核初学者理解原理和使用。该 PR 不涉及任何代码/功能变更,对现有内容无破坏性影响。

The following is the prior conversation context from the user's chat exploration (may be truncated):

User: [ 0.929735] ------------[ cut here ]------------
[ 0.929736] WARNING: drivers/acpi/irq.c:63 at acpi_register_gsi+0xe0/0x100, CPU#0: swapper/0/1
[ 0.929740] Modules linked in:
[ 0.929742] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G W 7.1.0-rc1+ eunomia-bpf#4 PREEMPT(full)
[ 0.929745] Tainted: [W]=WARN
[ 0.929746] Hardware name: QEMU KVM Virtual Machine, BIOS unknown 2/2/2022
[ 0.929747] pc 9000000000df7ff0 ra 9000000000df7f7c tp 9000000100220000 sp 9000000100223a70
[ 0.929750] a0 0000000000000000 a1 0000000000000051 a2 0000000000000000 a3 0000000000000000
[ 0.929752] a4 9000000100223b10 a5 9000000100223b04 a6 9000000100223860 a7 0000000000000080
[ 0.929754] t0 0000000000000000 t1 90000000032f90c0 t2 ffffffffffffffff t3 0000000000000040
[ 0.929756] t4 0000000000000008 t5 90000000032fc3c8 t6 00000000000000f5 t7 0000800000000000
[ 0.929758] t8 000000000000002f u0 90000000018f8afc s9 90000000019740a8 s0 0000000000000051
[ 0.929760] s1 0000000000000000 s2 0000000000000000 s3 90000000025b5000 s4 0000000000000001
[ 0.929762] s5 900000010004b620 s6 9000000100b4d0c0 s7 9000000002473f18 s8 90000000019000b8
[ 0.929764] ra: 9000000000df7f7c acpi_register_gsi+0x6c/0x100
[ 0.929767] ERA: 9000000000df7ff0 acpi_register_gsi+0xe0/0x100
[ 0.929769] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
[ 0.929775] PRMD: 00000004 (PPLV0 +PIE -PWE)
[ 0.929779] EUEN: 00000000 (-FPE -SXE -ASXE -BTE)
[ 0.929783] ECFG: 00071c3d (LIE=0,2-5,10-12 VS=7)
[ 0.929786] ESTAT: 000c0000 [BRK] (IS= ECode=12 EsubCode=0)
[ 0.929789] PRID: 0014c010 (Loongson-64bit, Loongson-3A5000)
[ 0.929792] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G W 7.1.0-rc1+ eunomia-bpf#4 PREEMPT(full)
[ 0.929795] Tainted: [W]=WARN
[ 0.929796] Hardware name: QEMU KVM Virtual Machine, BIOS unknown 2/2/2022
[ 0.929797] Stack : 9000000100223748 0000000000000000 90000000002478e4 9000000100220000
[ 0.929802] 9000000100223690 9000000100223698 0000000000000000 90000001002237d8
[ 0.929806] 90000001002237d0 90000001002237d0 9000000100223540 0000000000000001
[ 0.929810] 0000000000000001 9000000100223698 bb631f1dda87d000 90000000027b4b58
[ 0.929814] bfffffffffffed36 fffffffffffffffe 900000000331e710 ffffffffffff0a00
[ 0.929819] ffffffffffffb000 9000000001ffc662 000000026a628000 90000000019740a8
[ 0.929823] 0000000000000000 0000000000000000 9000000002279b68 90000000025b5000
[ 0.929827] 0000000000000009 000000000000003f 0000000000000002 9000000002473f18
[ 0.929832] 90000000019000b8 0000000000000000 90000000002478fc 00007fffefa5831c
[ 0.929836] 00000000000000b0 0000000000000004 0000000000000000 0000000000071c3d
[ 0.929840] ...
[ 0.929842] Call Trace:
[ 0.929843] [<90000000002478fc>] show_stack+0x5c/0x190
[ 0.929846] [<90000000002414fc>] dump_stack_lvl+0x9c/0xc8
[ 0.929851] [<900000000026d32c>] __warn+0x8c/0x140
[ 0.929856] [<90000000018b5878>] __report_bug+0x88/0x1c0
[ 0.929860] [<90000000018b5ab0>] report_bug+0x40/0xc0
[ 0.929864] [<90000000018ee7f4>] do_bp+0x314/0x3a0
[ 0.929866] [<9000000000245fe0>] handle_bp+0x120/0x1c0
[ 0.929869] [<9000000000df7ff0>] acpi_register_gsi+0xe0/0x100
[ 0.929872] [<9000000000defec8>] acpi_pci_irq_enable+0xd8/0x280
[ 0.929876] [<9000000000d71e14>] pci_device_probe+0x64/0x2d0
[ 0.929880] [<9000000000f8b0ec>] really_probe+0xbc/0x370
[ 0.929884] [<9000000000f8b42c>] __driver_probe_device+0x8c/0x1e0
[ 0.929888] [<9000000000f8b6a8>] driver_probe_device+0x38/0x150
[ 0.929891] [<9000000000f8b9e0>] __driver_attach+0xa0/0x1f0
[ 0.929895] [<9000000000f881d8>] bus_for_each_dev+0x88/0x110
[ 0.929898] [<9000000000f89dc4>] bus_add_driver+0x104/0x270
[ 0.929901] [<9000000000f8cb98>] driver_register+0x68/0x140
[ 0.929905] [<9000000000244168>] do_one_initcall+0x78/0x210
[ 0.929910] [<9000000001901290>] kernel_init_freeable+0x274/0x314
[ 0.929912] [<90000000018f12b0>] kernel_init+0x1c/0x12c
[ 0.929915] [<90000000018eea48>] ret_from_kernel_thread+0x28/0x1c0
[ 0.929918] [<90000000002456c4>] ret_from_kernel_thread_asm+0xc/0x88
[ 0.929921]
[ 0.929922] ---[ end trace 0000000000000000 ]---
[ 0.929924] GSI: No registered irqchip, giving up

Assistant: 这段 dmesg/堆栈里最关键的两条信息...

This pull request was created from Copilot chat.

Copilot AI changed the title [WIP] 新增文档《热补丁内核节点》到 docs/livepatch-sysfs.md docs: 新增 Linux 内核热补丁 sysfs 节点文档 (docs/livepatch-sysfs.md) Apr 29, 2026
Copilot AI requested a review from JohnsPony April 29, 2026 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants