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 |
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.
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
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 --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 */