我的笔记本电脑上的触摸板存在问题,如果我使用它,它会导致大量中断,从而导致 CPU 使用率和电量消耗显著增加。以下代码片段是在设备通电 5 分钟后生成的。请注意 IRQ 17 上的中断数量与其余部分的比较。
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 8 0 0 0 0 0 0 0 IR-IO-APIC 2-edge timer
1: 0 0 0 0 0 0 0 1350 IR-IO-APIC 1-edge i8042
8: 0 1 0 0 0 0 0 0 IR-IO-APIC 8-edge rtc0
9: 0 31 0 0 0 0 0 0 IR-IO-APIC 9-fasteoi acpi
14: 0 0 14671 0 0 0 0 0 IR-IO-APIC 14-fasteoi INT344B:00
16: 0 0 0 6167 0 0 0 0 IR-IO-APIC 16-fasteoi i801_smbus, idma64.0, i2c_designware.0
17: 0 0 0 0 604999 0 0 0 IR-IO-APIC 17-fasteoi idma64.1, i2c_designware.1
20: 0 0 0 0 0 0 0 0 IR-IO-APIC 20-fasteoi idma64.2
23: 0 0 0 0 0 0 0 0 IR-IO-APIC 23-fasteoi idma64.3, pxa2xx-spi.3
120: 0 0 0 0 0 0 0 0 DMAR-MSI 0-edge dmar0
121: 0 0 0 0 0 0 0 0 DMAR-MSI 1-edge dmar1
在线程中相似的 问题建议将黑名单i2c_designware
或但对我的情况都没有帮助。按照建议intel_lpss_pci
使用内核参数initcall_blacklist=dw_i2c_init_driver
这里导致我的触摸板完全无法识别。也没有 BIOS 参数或类似的东西来切换触控板模式。我还能尝试其他什么吗?或者我只能使用鼠标,直到内核修复这个问题?
cat /proc/bus/input/devices | grep i2c -B2 -A7
I: Bus=0018 Vendor=06cb Product=19ac Version=0100
N: Name="SYNA2393:00 06CB:19AC"
P: Phys=i2c-SYNA2393:00
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-SYNA2393:00/0018:06CB:19AC.0001/input/input23
U: Uniq=
H: Handlers=mouse0 event8
B: PROP=2
B: EV=1b
B: KEY=400 0 0 0 0 0
B: ABS=260800000000003
B: MSC=20
--
I: Bus=0018 Vendor=06cb Product=cd48 Version=0100
N: Name="SYNA1D31:00 06CB:CD48 Mouse"
P: Phys=i2c-SYNA1D31:00
S: Sysfs=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-SYNA1D31:00/0018:06CB:CD48.0002/input/input27
U: Uniq=
H: Handlers=mouse1 event9
B: PROP=0
B: EV=17
B: KEY=30000 0 0 0 0
B: REL=3
B: MSC=10
--
I: Bus=0018 Vendor=06cb Product=cd48 Version=0100
N: Name="SYNA1D31:00 06CB:CD48 Touchpad"
P: Phys=i2c-SYNA1D31:00
S: Sysfs=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-SYNA1D31:00/0018:06CB:CD48.0002/input/input28
U: Uniq=
H: Handlers=mouse2 event10
B: PROP=5
B: EV=1b
B: KEY=e520 10000 0 0 0 0
B: ABS=2e0800000000003
B: MSC=20
lspci -nnkv | grep 'IRQ 17' -B3 -A4
00:15.1 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 [8086:9d61] (rev 21)
Subsystem: Huawei Technologies Co., Ltd. Sunrise Point-LP Serial IO I2C Controller [19e5:3e04]
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at 2ff3020000 (64-bit, non-prefetchable) [size=4K]
Capabilities: <access denied>
Kernel driver in use: intel-lpss
Kernel modules: intel_lpss_pci
答案1
几年来,我的笔记本电脑一直遇到同样的问题。我注意到这个问题是因为 CPU 在空闲时会耗尽电池/触发风扇。到目前为止,我使用的解决方法是进入睡眠模式 (s3) 几秒钟,然后恢复,问题就消失了。每次重启后我都会这样做,但这个修复方法不再有效。起初,我以为这是英特尔 P-State 调度程序的问题,直到我在这里找到了你的问题。
对于我来说现在的新解决方法是卸载内核模块。
rmmod intel_lpss_pci
挂起到 RAM,等待几秒钟,恢复,重新加载内核模块
modprobe intel_lpss_pci
这变得越来越复杂了,我希望它真的能够被解决......
答案2
我是:
5.4.0-73-通用#82~18.04.1-Ubuntu x86_64 GNU/Linux
在
惠普 Pavilion - 14-ce2014
就我而言,我遇到了与 ACPI 相关的 IRQ 风暴(我推测与 pinctrl_cannonlake 有关),原因如下:
I915 (英特尔显卡)
和这个
INT34BB(触控板)
HP 驱动程序。几分钟后,两者均会占用高达 95% 的 CPU 核心。
最后,在浪费了大量的时间甚至几天的时间寻找罪魁祸首,甚至刷新 BIOS 等之后,我发现唯一可行的方法是屏蔽中断,例如通过添加:
acpi_mask_gpe=0x6F
针对前 I915 错误的内核参数
以及上述临时修复:
sudo systemctl suspend
(然后只是恢复,甚至没有禁用/启用有问题的模块)对于后者 INT34BB Trackpad。
答案3
又一个更新:
这两种方法都不是长期有效的。只有从昨天开始,这种方法才有效:
initcall_blacklist=cnl_pinctrl_driver_init
按照https://www.reddit.com/r/archlinux/comments/gdxln8/high_cpu_load_on_a_single_thread/
答案4
更新以上内容。
我也尝试过:
pci=nocrs
在内核参数中,它据称会这样做:“忽略来自 ACPI 的 PCI 主机桥窗口”,现在我没有来自 INT34BB 的中断:
14: 0 0 0 0 0 0 0 0 IR-IO-APIC 14-fasteoi INT34BB:00
即使过了几个小时。