You are not logged in.
Hello, I just got a new MSI PS63 that has just released this year and decided to install a fresh Arch. Installation went smoothly, everything (touchpad, nvidia card, multimedia keys, etc.) just works out of the box. However, there is a particular and frustrating problem: after boot, the CPU when idle was normal (mostly 0% cpu load), then I closed the lid, opened again and noticed that the first CPU (CPU0) was doing something with around 40% load all the time which really throttle the battery lifetime.
Before anything else here's my system info:
uname -a
Linux resp 4.20.7-arch1-1-ARCH #1 SMP PREEMPT Wed Feb 6 18:42:40 UTC 2019 x86_64 GNU/Linux
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
Stepping: 11
CPU MHz: 3600.012
CPU max MHz: 4600.0000
CPU min MHz: 400.0000
BogoMIPS: 3985.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp flush_l1d arch_capabilities
I inspected the problem using powertop and noticed that the process which handled IRQ suddenly generated high rate of events (around 200+ events/s) compared to before closing the lid which is around 50+ events/s.
The process is:
[PID 480] [irq/156-CUST000]
I also traced the IRQ number (156) in /proc/interrupts and found the following line:
156: 1101134 0 412 0 0 0 0 0 intel-gpio 274 CUST0001:00
CUST0001:00 is the touchpad peripheral (from xinput):
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ CUST0001:00 06CB:CDAA Touchpad id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ MSI WMI hotkeys id=13 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
I've tried disabling the touchpad by executing:
xinput --disable 11
but the problem still persists.
I've also confirmed that the nvidia card is disabled:
cat /proc/acpi/bbswitch
0000:02:00.0 OFF
Nonetheless, stopping lightdm.service which I uses its greeter to log myself into i3wm returned me to the tty and the CPU returned to normal. It seems to be a problem with touchpad firmware or libinput. Is there a way to physically toggle the touchpad? The touchpad disabling key on the keyboard does not disable it in hardware level.
Thanks.
Edit:
Solved by blacklisting the following modules and reboot:
blacklist i801_smbus
blacklist i2c_i801
blacklist idma64
blacklist i2c
blacklist i2c_hid
Last edited by conohp (2019-02-12 10:47:26)
Offline
In case it helps, here are my notes on disabling my touchpad:
Find devices:
$ xinput list
Find properties id:
$ xinput list-props "ImPS/2 Generic Wheel Mouse"
e.g.
Device 'ImPS/2 Generic Wheel Mouse':
Device Enabled (127): 1
etc....Disable Device:
$ xinput set-int-prop "ImPS/2 Logitech Wheel Mouse" 127 8 0
Andrew
Offline
In case it helps, here are my notes on disabling my touchpad:
Find devices:
$ xinput list
Find properties id:
$ xinput list-props "ImPS/2 Generic Wheel Mouse"
e.g.
Device 'ImPS/2 Generic Wheel Mouse':
Device Enabled (127): 1
etc....Disable Device:
$ xinput set-int-prop "ImPS/2 Logitech Wheel Mouse" 127 8 0
Andrew
Tried that, didn't work. Maybe I need to disable the IRQ entirely by writing a kernel module
Offline
Hmm - it works on all my laptops. What do you get from the command?
$ xinput list-props "CUST0001:00 06CB:CDAA Touchpad"
Andrew
Offline
Hmm - it works on all my laptops. What do you get from the command?
$ xinput list-props "CUST0001:00 06CB:CDAA Touchpad"
Andrew
The command does disable the touchpad, but the hardware itself still spams i2c signals. After messing with kernel modules, I eventually found the solution. Blacklisting all i2c-related kernel modules except i2c_algo_bit then reboot solved the problem.
/etc/modprobe.d/i2c.conf
blacklist i801_smbus
blacklist i2c_i801
blacklist idma64
blacklist i2c
blacklist i2c_hid
Anyway, thanks for your help!
Offline
Hi, I just bought this laptop without paying too much attention for linux support... In my case the touchpad stops working after sleep but I haven't noticed any cpu load. Is there any update on this issue?
Offline
Ok I have found a hack around. It appears you can reset the i2c bus quite simply:
echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/unbind
echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/bind
And this restarts whatever manages the touchpad.
I know this is off-topic, but do your fans spin all the time too? Even on windows they do spin relatively often with silent mode set the creator center. Also the laptop sits around 40°C when idle while my older HP is closer to 35°C ...
Offline
/etc/modprobe.d/i2c.conf
blacklist i801_smbus blacklist i2c_i801 blacklist idma64 blacklist i2c blacklist i2c_hid
I've been using this workaround for several months now, however it is plagued (at least on my machine) with several major issues:
- The cursor is super slow and does not seem to react to acceleration profiles
- Since libinput 1.14, scrolling is hit-and-miss (80% success rate) and multitouch gestures are barely usable with libinput-gestures (50% success rate for 3 finger swipes, 4 finger gestures tend to break 3 finger gestures, swipes detected as pinches etc.)
This all made for a very frustrating experience.
echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/unbind echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/bind
This works perfectly! My trackpad is now 100% functional without having to blacklist anything, and the reliability of the multitouch gestures is great.
I've automated it by adding a script for systemd :
/lib/systemd/system-sleep/restart_trackpad
#!/bin/sh
case "$1" in
post)
echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/unbind
echo -n "i2c_designware.0" > /sys/bus/platform/drivers/i2c_designware/bind
;;
esac
Now the binding will be reset each time the laptop wakes up.
The only issue now is that it breaks libinput-gestures. I haven't found a way yet to restart it automatically after wake, so i've bound the following command to a keyboard shortcut:
libinput-gestures-setup restart
Off topic:
Do you have a discrete nVidia GPU? These are known for being a thermal nightmare in such a slim case.
I chose mine without a GPU because for my usage, it's more trouble than its worth, and it's currently sitting perfectly silent @ 35°C.
Offline
fdservices wrote:Hmm - it works on all my laptops. What do you get from the command?
$ xinput list-props "CUST0001:00 06CB:CDAA Touchpad"
Andrew
The command does disable the touchpad, but the hardware itself still spams i2c signals. After messing with kernel modules, I eventually found the solution. Blacklisting all i2c-related kernel modules except i2c_algo_bit then reboot solved the problem.
/etc/modprobe.d/i2c.confblacklist i801_smbus blacklist i2c_i801 blacklist idma64 blacklist i2c blacklist i2c_hid
Anyway, thanks for your help!
Hi sir, i am having the same problem that you reported here on a different laptop. Could you please explain me what has brought you to this concusion? how did you find the rright modules to blacklist?
Offline