触摸板导致大量中断和高耗电量

触摸板导致大量中断和高耗电量

我的笔记本电脑上的触摸板存在问题,如果我使用它,它会导致大量中断,从而导致 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

即使过了几个小时。

相关内容