kworker 在获取额外 SSD 后占用 CPU - gpe11 上的高 acpi 中断、屏蔽或禁用导致系统冻结

kworker 在获取额外 SSD 后占用 CPU - gpe11 上的高 acpi 中断、屏蔽或禁用导致系统冻结

我的是一台已有 7 年历史的 Dell Inspiron 3542(Intel i5),运行 Linux 已有大约 5 年了。

最近,我在 HDD 插槽中安装了一个额外的 SSD,并使用托盘将 HDD 移动到 DVD 驱动器的位置。然后我在 SSD 上全新安装了 Xubuntu 20.04。我注意到 CPU 0 上的 CPU 使用率很高(~75%),即使 PC 上没有运行任何东西。 top 命令显示 kworker 进程占用 CPU:

   184 root      20   0       0      0      0 I  75.7   0.0  17:31.07 kworker/0:2-kacpid

对于此处发布的其他类似问题,通常的解决方案是找出哪个 GPE 导致了太多中断并禁用它。的输出grep . -r /sys/firmware/acpi/interrupts显示以下具有高值的行:

/sys/firmware/acpi/interrupts/gpe11:11640215  EN STS enabled      unmasked
/sys/firmware/acpi/interrupts/sci:11640301

禁用或屏蔽 gpe11echo mask > /sys/firmware/acpi/interrupts/gpe11会导致系统冻结(显示器、键盘和鼠标变得无响应,如果正在播放任何声音,则声音开始循环,就像 DJ 做某事一样)

禁用或屏蔽 sci 会将 gpe11 和 sci 中断重置为零,但它们会再次开始增加。对CPU使用率没有影响,CPU使用率仍然很高

其他实验和观察:

  • 通常的内核参数更改,例如acpi=offacpi_mask_gpe=0x11导致启动时出现黑屏

  • 从 Live USB 启动的操作系统上也存在此问题

  • 该问题在 Xubuntu 18.04 和 Arch Linux 最新版本 Live USB 上仍然存在

  • 输出cat /proc/interrupts如下(截断至 acpi):

             CPU0       CPU1       CPU2       CPU3       
    0:          6          0          0          0   IO-APIC   2-edge      timer
    1:       9379          0          0          0   IO-APIC   1-edge      i8042
    8:          0          1          0          0   IO-APIC   8-edge      rtc0
    9:          0   21362967          0          0   IO-APIC   9-fasteoi   acpi
    
  • on dmesg的相关输出echo l > /proc/sysrq-trigger如下

    [ 2174.058304] CPU: 0 PID: 184 Comm: kworker/0:2 Not tainted 5.11.0-27-generic #29~20.04.1-Ubuntu
    [ 2174.058305] Hardware name: Dell Inc. Inspiron 3542/0926J6, BIOS A03 05/27/2014
    [ 2174.058307] Workqueue: kacpid acpi_os_execute_deferred
    [ 2174.058309] RIP: 0010:acpi_ns_search_one_scope+0x16a/0x208
    [ 2174.058310] Code: 49 89 1f 45 31 c0 b9 10 00 00 00 bf 74 00 00 00 48 c7 c2 b0 e8 ca a0 48 c7 c6 90 e8 ca a0 e8 f3 d9 00 00 31 c0 e9 8f 00 00 00 <48> 8b 5b 20 e9 4c ff ff ff f6 05 7d dc 19 01 04 74 55 f6 05 c3 34
    [ 2174.058312] RSP: 0018:ffffb5850051fb80 EFLAGS: 00000212
    [ 2174.058313] RAX: 0000000037314547 RBX: ffff8947808f57b0 RCX: 0000000000000010
    [ 2174.058314] RDX: ffffffffa0cae8b0 RSI: ffffffffa0cae890 RDI: 0000000000000042
    [ 2174.058315] RBP: ffffb5850051fbb0 R08: 0000000000000005 R09: 0000000000000003
    [ 2174.058317] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa1a7e880
    [ 2174.058318] R13: ffff8947801d1b40 R14: 0000000000000000 R15: ffffb5850051fc60
    [ 2174.058319] FS:  0000000000000000(0000) GS:ffff8947aba00000(0000) knlGS:0000000000000000
    [ 2174.058320] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 2174.058321] CR2: 00007f4c9b5e4d9c CR3: 0000000069074001 CR4: 00000000001706f0
    [ 2174.058322] Call Trace:
    [ 2174.058323]  acpi_ns_search_and_enter+0x347/0x4ca
    [ 2174.058325]  acpi_ns_lookup+0x63e/0x866
    [ 2174.058326]  acpi_ps_get_next_namepath+0xbc/0x35a
    [ 2174.058327]  acpi_ps_get_next_arg+0x69d/0x79a
    [ 2174.058328]  ? acpi_ut_trace_ptr+0x2b/0x71
    [ 2174.058329]  acpi_ps_parse_loop+0x4be/0x924
    [ 2174.058330]  acpi_ps_parse_aml+0x1af/0x550
    [ 2174.058331]  acpi_ps_execute_method+0x208/0x2ca
    [ 2174.058332]  acpi_ns_evaluate+0x34e/0x4f0
    [ 2174.058333]  acpi_ev_asynch_execute_gpe_method+0xc0/0x15e
    [ 2174.058334]  acpi_os_execute_deferred+0x1a/0x30
    [ 2174.058335]  process_one_work+0x220/0x3c0
    [ 2174.058336]  worker_thread+0x4d/0x3f0
    [ 2174.058337]  kthread+0x114/0x150
    [ 2174.058338]  ? process_one_work+0x3c0/0x3c0
    [ 2174.058339]  ? kthread_park+0x90/0x90
    [ 2174.058340]  ret_from_fork+0x22/0x30
    
  • sudo dmidecodefor的输出0x0011如下。不确定是否0x0011对应gpe11。如果这不是 GPE 编号的工作方式,我可以提供完整的输出。

    Handle 0x0011, DMI type 10, 6 bytes
    On Board Device Information
        Type: Video
        Status: Enabled
        Description: Mobile Intel HD Graphics
    
  • 尝试从 SSD 和 Live USB 中移除 HDD Caddy,系统根本无法启动(陷入内核恐慌)

  • 尝试打开球童上的开关,结果与移除球童相同

  • 尝试进行 BIOS 更新但更新失败。这是一个单独的问题,因为戴尔仅提供用于更新的 EXE 文件

答案1

自己解决了:)

以某种方式让系统在移除硬盘的情况下启动。当我尝试随机的事情时,就发生了这种情况,最近一次是启动 Void Linux 的实时 USB。 CPU 使用率恢复到接近于零

之后我尝试打开球童上的开关,现在系统启动时 CPU 使用率接近于零。

相关内容