diff mbox series

[v3,2/2] Input: synaptics - enable InterTouch for ThinkPad P1/X1E gen 2

Message ID 20200930225046.173190-3-Jason@zx2c4.com (mailing list archive)
State Accepted
Commit 127e4a1bc11e0e3d30f4d20bb888a1f680296990
Headers show
Series Support trackpoint and touchpad in Thinkpad P1 gen 2 / X1E gen 2 | expand

Commit Message

Jason A. Donenfeld Sept. 30, 2020, 10:50 p.m. UTC
With the new RMI4 F3A support, we're now able to enable full RMI4
support for this model. We also tidy up the comments a bit, as the X1E
is essentially the same computer as the P1.

Acked-by: Lyude Paul <lyude@redhat.com>
Cc: Vincent Huang <vincent.huang@tw.synaptics.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
 drivers/input/mouse/synaptics.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Dmitry Torokhov Oct. 5, 2020, 2:51 a.m. UTC | #1
On Thu, Oct 01, 2020 at 12:50:46AM +0200, Jason A. Donenfeld wrote:
> With the new RMI4 F3A support, we're now able to enable full RMI4
> support for this model. We also tidy up the comments a bit, as the X1E
> is essentially the same computer as the P1.
> 
> Acked-by: Lyude Paul <lyude@redhat.com>
> Cc: Vincent Huang <vincent.huang@tw.synaptics.com>
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
>  drivers/input/mouse/synaptics.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> index 8a54efd6eb95..bf0f3fdf10d9 100644
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -179,7 +179,8 @@ static const char * const smbus_pnp_ids[] = {
>  	"LEN0093", /* T480 */
>  	"LEN0096", /* X280 */
>  	"LEN0097", /* X280 -> ALPS trackpoint */
> -	"LEN0099", /* X1 Extreme 1st */
> +	"LEN0099", /* X1 Extreme Gen 1 / P1 Gen 1 */
> +	"LEN0402", /* X1 Extreme Gen 2 / P1 Gen 2 */

Moved this entry one down to keep the list sorted, and applied, thank
you.
Jason A. Donenfeld Oct. 7, 2020, 3:55 p.m. UTC | #2
Oddly, CPU usage seems exceedingly high when using the trackpoint, in
the rmi4 irq handler. Running perf-top indicates a hotspot in
i801_access calling "in     (%dx),%al", which makes sense. I wonder:
is this a culprit of expensive accesses in general, which Sultan
(CC'd) has been working on? Or are we hitting something different
here? Improper IRQ masking in the i801 code?

Jason
Jason A. Donenfeld Oct. 11, 2020, 9 a.m. UTC | #3
More IRQ grumpiness:

[221465.585227] irq 16: nobody cared (try booting with the "irqpoll" option)
[221465.585228] CPU: 0 PID: 0 Comm: swapper/0 Tainted: P S   U     O
   5.9.0-rc8+ #145
[221465.585229] Hardware name: LENOVO 20QTCTO1WW/20QTCTO1WW, BIOS
N2OET47W (1.34 ) 08/06/2020
[221465.585229] Call Trace:
[221465.585230]  <IRQ>
[221465.585234]  dump_stack+0x57/0x70
[221465.585236]  __report_bad_irq+0x30/0xa2
[221465.585237]  note_interrupt.cold+0xb/0x6b
[221465.585237]  handle_irq_event+0x78/0x7a
[221465.585238]  handle_fasteoi_irq+0x6d/0x190
[221465.585240]  asm_call_irq_on_stack+0xf/0x20
[221465.585241]  </IRQ>
[221465.585242]  common_interrupt+0xa9/0x120
[221465.585243]  asm_common_interrupt+0x1e/0x40
[221465.585245] RIP: 0010:cpuidle_enter_state+0xc5/0x320
[221465.585246] Code: c7 0f 1f 44 00 00 31 ff e8 78 2c b0 ff 80 7c 24
0f 00 74 12 9c 58 f6 c4 02 0f 85 41 02 00 00 31 ff e8 0f a4 b4 ff fb
45 85 e4 <0f> 88 fd 00 00 00 49 63 d4 48 6b ca 68 4c 2b 3c 24 48 6b c2
38 48
[221465.585246] RSP: 0018:ffffffff82003e80 EFLAGS: 00000202
[221465.585247] RAX: ffff888ffc228f00 RBX: ffffe8ffffa37608 RCX:
000000000000001f
[221465.585247] RDX: 0000000000000000 RSI: 00000000378e38e3 RDI:
0000000000000000
[221465.585248] RBP: ffffffff8209fdc0 R08: 0000c96bf989794d R09:
0000000000000008
[221465.585248] R10: 0000000000000005 R11: ffff888ffc228004 R12:
0000000000000001
[221465.585249] R13: ffffffff8209fe40 R14: 0000000000000001 R15:
0000c96bf989794d
[221465.585250]  cpuidle_enter+0x24/0x40
[221465.585252]  do_idle+0x1a4/0x220
[221465.585253]  cpu_startup_entry+0x14/0x20
[221465.585254]  start_kernel+0x48d/0x497
[221465.585256]  secondary_startup_64+0xb6/0xc0
[221465.585257] handlers:
[221465.585258] [<00000000498461dd>] i801_isr
[221465.585258] Disabling IRQ #16
[221480.253990] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221480.253995] i801_smbus 0000:00:1f.4: Transaction timeout
[221480.256149] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221484.287300] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221484.287304] i801_smbus 0000:00:1f.4: Transaction timeout
[221484.289461] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221484.490637] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221484.490641] i801_smbus 0000:00:1f.4: Transaction timeout
[221484.492793] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221484.693965] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221484.693970] i801_smbus 0000:00:1f.4: Transaction timeout
[221484.696126] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221484.897307] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221484.897311] i801_smbus 0000:00:1f.4: Transaction timeout
[221484.899466] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221485.100643] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221485.100647] i801_smbus 0000:00:1f.4: Transaction timeout
[221485.102800] rmi4_physical rmi4-00: Failed to read irqs, code=-110
[221485.303911] i801_smbus 0000:00:1f.4: Timeout waiting for interrupt!
[221485.303915] i801_smbus 0000:00:1f.4: Transaction timeout
[221485.306024] rmi4_physical rmi4-00: Failed to read irqs, code=-110
diff mbox series

Patch

diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 8a54efd6eb95..bf0f3fdf10d9 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -179,7 +179,8 @@  static const char * const smbus_pnp_ids[] = {
 	"LEN0093", /* T480 */
 	"LEN0096", /* X280 */
 	"LEN0097", /* X280 -> ALPS trackpoint */
-	"LEN0099", /* X1 Extreme 1st */
+	"LEN0099", /* X1 Extreme Gen 1 / P1 Gen 1 */
+	"LEN0402", /* X1 Extreme Gen 2 / P1 Gen 2 */
 	"LEN009b", /* T580 */
 	"LEN200f", /* T450s */
 	"LEN2044", /* L470  */