All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <treding@nvidia.com>
To: Hugh Dickins <hughd@google.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Saravana Kannan <saravanak@google.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	<linux-kernel@vger.kernel.org>, <linux-pm@vger.kernel.org>
Subject: Re: 5.11-rc device reordering breaks ThinkPad rmi4 suspend
Date: Mon, 11 Jan 2021 14:43:09 +0100	[thread overview]
Message-ID: <X/xV7ZV5jzI7RvAe@ulmo> (raw)
In-Reply-To: <alpine.LSU.2.11.2101102010200.25762@eggly.anvils>

[-- Attachment #1: Type: text/plain, Size: 4328 bytes --]

On Sun, Jan 10, 2021 at 08:44:13PM -0800, Hugh Dickins wrote:
> Hi Rafael,
> 
> Synaptics RMI4 SMBus touchpad on ThinkPad X1 Carbon (5th generation)
> fails to suspend when running 5.11-rc kernels: bisected to 
> 5b6164d3465f ("driver core: Reorder devices on successful probe"),
> and reverting that fixes it.  dmesg.xz attached, but go ahead and ask
> me to switch on a debug option to extract further info if that may help.

Hi Hugh,

Quoting what I think are the relevant parts of that log:

[   34.373742] printk: Suspending console(s) (use no_console_suspend to debug)
[   34.429015] rmi4_physical rmi4-00: Failed to read irqs, code=-6
[   34.474973] rmi4_f01 rmi4-00.fn01: Failed to write sleep mode: -6.
[   34.474994] rmi4_f01 rmi4-00.fn01: Suspend failed with code -6.
[   34.475001] rmi4_physical rmi4-00: Failed to suspend functions: -6
[   34.475105] rmi4_smbus 6-002c: Failed to suspend device: -6
[   34.475113] PM: dpm_run_callback(): rmi_smb_suspend+0x0/0x3c returns -6
[   34.475130] PM: Device 6-002c failed to suspend: error -6
[   34.475187] PM: Some devices failed to suspend, or early wake event detected
[   34.480324] rmi4_f03 rmi4-00.fn03: rmi_f03_pt_write: Failed to write to F03 TX register (-6).
[   34.480748] rmi4_f03 rmi4-00.fn03: rmi_f03_pt_write: Failed to write to F03 TX register (-6).
[   34.481558] rmi4_physical rmi4-00: rmi_driver_clear_irq_bits: Failed to change enabled interrupts!
[   34.487935] acpi LNXPOWER:02: Turning OFF
[   34.488707] acpi LNXPOWER:01: Turning OFF
[   34.489554] rmi4_physical rmi4-00: rmi_driver_set_irq_bits: Failed to change enabled interrupts!
[   34.489669] psmouse: probe of serio2 failed with error -1
[   34.489882] OOM killer enabled.
[   34.489891] Restarting tasks ... done.
[   34.589183] PM: suspend exit
[   34.589839] PM: suspend entry (s2idle)
[   34.605884] Filesystems sync: 0.017 seconds
[   34.607594] Freezing user space processes ... (elapsed 0.006 seconds) done.
[   34.613645] OOM killer disabled.
[   34.613650] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   34.615482] printk: Suspending console(s) (use no_console_suspend to debug)
[   34.653097] rmi4_f01 rmi4-00.fn01: Failed to write sleep mode: -6.
[   34.653108] rmi4_f01 rmi4-00.fn01: Suspend failed with code -6.
[   34.653115] rmi4_physical rmi4-00: Failed to suspend functions: -6
[   34.653123] rmi4_smbus 6-002c: Failed to suspend device: -6
[   34.653129] PM: dpm_run_callback(): rmi_smb_suspend+0x0/0x3c returns -6
[   34.653160] PM: Device 6-002c failed to suspend: error -6
[   34.653174] PM: Some devices failed to suspend, or early wake event detected
[   34.660515] OOM killer enabled.
[   34.660524] Restarting tasks ...
[   34.661456] rmi4_physical rmi4-00: rmi_driver_set_irq_bits: Failed to change enabled interrupts!
[   34.661591] psmouse: probe of serio2 failed with error -1
[   34.669469] done.
[   34.748386] PM: suspend exit

I think what might be happening here is that the offending patch causes
some devices to be reordered in a way different to how they were ordered
originally and the rmi4 driver currently depends on that implicit order.

Interestingly one of the bugs that the offending patch fixes is similar
in the failure mode but for the reverse reason: the implicit order
causes suspend/resume to fail.

I suspect that the underlying reason here is that rmi4 needs something
in order to successfully suspend (i.e. read the IRQ status registers)
that has already been suspended where it hadn't prior to the offending
patch. It can't be the I2C controller itself that has been suspended,
because the parent/child relationship should prevent that from
happening.

I'm not familiar with how exactly rmi4 works, so I'll have to do
some digging to hopefully pinpoint exactly what's going wrong here.

In the meantime, it would be useful to know what exactly the I2C
hierarchy looks like. For example, what's the I2C controller that the
RMI4 device is hooked up to. According to the above, that's I2C bus 6,
so you should be able to find out some details about it by inspecting
the corresponding sysfs nodes:

	$ ls -l /sys/class/i2c-adapter/i2c-6/
	$ cat /sys/class/i2c-adapter/i2c-6/name
	$ ls -l /sys/class/i2c-adapter/i2c-6/device/

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2021-01-11 13:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-11  4:44 5.11-rc device reordering breaks ThinkPad rmi4 suspend Hugh Dickins
2021-01-11 12:57 ` Rafael J. Wysocki
2021-01-11 17:20   ` Hugh Dickins
2021-01-11 13:43 ` Thierry Reding [this message]
2021-01-11 14:43   ` Rafael J. Wysocki
2021-01-11 14:57   ` Rafael J. Wysocki
2021-01-11 16:12     ` Thierry Reding
2021-01-11 16:57       ` Rafael J. Wysocki
2021-01-11 22:44         ` Saravana Kannan
2021-01-11 23:42           ` Hugh Dickins
2021-01-12  0:14             ` Saravana Kannan
2021-01-12  0:44               ` Hugh Dickins
2021-01-12  2:16                 ` Saravana Kannan
2021-01-12  4:42                   ` Hugh Dickins
2021-01-12 12:43           ` Rafael J. Wysocki
2021-01-12 17:37           ` Thierry Reding
2021-01-12 17:57         ` Thierry Reding
2021-01-12 20:38           ` Saravana Kannan
2021-01-11 17:42   ` Hugh Dickins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=X/xV7ZV5jzI7RvAe@ulmo \
    --to=treding@nvidia.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hughd@google.com \
    --cc=jonathanh@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=saravanak@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.