All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Eichenberger <eichest@gmail.com>
To: Frank Li <Frank.li@nxp.com>
Cc: Francesco Dolcini <francesco@dolcini.it>,
	hongxing.zhu@nxp.com, l.stach@pengutronix.de,
	lpieralisi@kernel.org, kw@linux.com,
	manivannan.sadhasivam@linaro.org, robh@kernel.org,
	bhelgaas@google.com, shawnguo@kernel.org, s.hauer@pengutronix.de,
	kernel@pengutronix.de, festevam@gmail.com,
	francesco.dolcini@toradex.com, linux-pci@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Stefan Eichenberger <stefan.eichenberger@toradex.com>
Subject: Re: [PATCH v2] PCI: imx6: Add suspend/resume support for i.MX6QDL
Date: Fri, 11 Oct 2024 16:36:21 +0200	[thread overview]
Message-ID: <Zwk35efNI4EO1eir@eichest-laptop> (raw)
In-Reply-To: <ZwhY/dtSNPptgs27@lizhi-Precision-Tower-5810>

Hi Frank,

On Thu, Oct 10, 2024 at 06:45:17PM -0400, Frank Li wrote:
> On Thu, Oct 10, 2024 at 10:11:21PM +0200, Francesco Dolcini wrote:
> > Hello Frank,
> >
> > On Thu, Oct 10, 2024 at 04:01:21PM -0400, Frank Li wrote:
> > > On Wed, Oct 09, 2024 at 03:14:05PM +0200, Stefan Eichenberger wrote:
> > > > From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> > > >
> > > > The suspend/resume support is broken on the i.MX6QDL platform. This
> > > > patch resets the link upon resuming to recover functionality. It shares
> > > > most of the sequences with other i.MX devices but does not touch the
> > > > critical registers, which might break PCIe. This patch addresses the
> > > > same issue as the following downstream commit:
> > > > https://github.com/nxp-imx/linux-imx/commit/4e92355e1f79d225ea842511fcfd42b343b32995
> > > > In comparison this patch will also reset the device if possible. Without
> > > > this patch suspend/resume will not work if a PCIe device is connected.
> > > > The kernel will hang on resume and print an error:
> > > > ath10k_pci 0000:01:00.0: Unable to change power state from D3hot to D0, device inaccessible
> > > > 8<--- cut here ---
> > > > Unhandled fault: imprecise external abort (0x1406) at 0x0106f944
> > > >
> > > > Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> > > > ---
> > >
> > > Thank you for your patch.
> > >
> > > But it may conflict with another suspend/resume patch
> > > https://lore.kernel.org/imx/1727245477-15961-8-git-send-email-hongxing.zhu@nxp.com/
> >
> > Thanks for the head-up.
> >
> > Do you see any issue with this patch apart that? Because this patch is
> > fixing a crash, so I would expect this to be merged, once ready, and
> > such a series rebased afterward.
> >
> > I am writing this explicitly since you wrote a similar comment on the
> > v1 (https://lore.kernel.org/all/ZsNXDq%2FkidZdyhvD@lizhi-Precision-Tower-5810/)
> > and I would like to prevent to have this fix starving for long just because
> > multiple people is working on the same driver.
> 
> My key comment for this patch is use flags IMX_PCIE_FLAG_SKIP_TURN_OFF
> in suspend()/resume(), it is up to kw to pick which one firstly.

I will try to implement it as you proposed with the new flag. 

However, what I figured out with kernel v6.12-rc1 I get the following
warning when booting on an i.MX6QDL even without my patch applied:
[    1.901199] PCI: bus0: Fast back to back transfers disabled
[    1.904754] mmc1: SDHCI controller on 2190000.mmc [2190000.mmc] using ADMA
[    1.904914] mmc2: SDHCI controller on 2194000.mmc [2194000.mmc] using ADMA
[    1.910686] pci 0000:01:00.0: [168c:003c] type 00 class 0x028000 PCIe Endpoint
[    1.918390] NET: Registered PF_PACKET protocol family
[    1.918573] mmc0: SDHCI controller on 2198000.mmc [2198000.mmc] using ADMA
[    1.924322] pci 0000:01:00.0: BAR 0 [mem 0x00000000-0x001fffff 64bit]
[    1.931635] Key type dns_resolver registered
[    1.936764] pci 0000:01:00.0: ROM [mem 0x00000000-0x0000ffff pref]
[    1.961043] pci 0000:01:00.0: supports D1 D2
[    1.961526] Registering SWP/SWPB emulation handler
[    1.965601] mmc0: new DDR MMC card at address 0001
[    1.976575] mmcblk0: mmc0:0001 Q2J54A 3.59 GiB
[    1.979794] Loading compiled-in X.509 certificates
[    1.985036] PCI: bus1: Fast back to back transfers disabled
[    1.991531] pci 0000:00:00.0: bridge window [mem 0x01000000-0x011fffff]: assigned
[    1.998742]  mmcblk0: p1 p2 p3
[    1.999163] pci 0000:00:00.0: BAR 0 [mem 0x01200000-0x012fffff]: assigned
[    2.003947] mmcblk0boot0: mmc0:0001 Q2J54A 16.0 MiB
[    2.008990] pci 0000:00:00.0: bridge window [mem 0x01300000-0x013fffff pref]: assigned
[    2.009023] pci 0000:00:00.0: ROM [mem 0x01400000-0x0140ffff pref]: assigned
[    2.009054] pci 0000:01:00.0: BAR 0 [mem 0x01000000-0x011fffff 64bit]: assigned
[    2.017526] mmcblk0boot1: mmc0:0001 Q2J54A 16.0 MiB
[    2.022015] pci 0000:01:00.0: ROM [mem 0x01300000-0x0130ffff pref]: assigned
[    2.032133] mmcblk0rpmb: mmc0:0001 Q2J54A 512 KiB, chardev (242:0)
[    2.036347] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    2.036370] pci 0000:00:00.0:   bridge window [mem 0x01000000-0x011fffff]
[    2.036384] pci 0000:00:00.0:   bridge window [mem 0x01300000-0x013fffff pref]
[    2.042552] pps pps0: new PPS source ptp0
[    2.048338] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    2.083626] pci_bus 0000:00: resource 5 [mem 0x01000000-0x01efffff]
[    2.089972] pci_bus 0000:01: resource 1 [mem 0x01000000-0x011fffff]
[    2.093461] fec 2188000.ethernet eth0: registered PHC device 0
[    2.096283] pci_bus 0000:01: resource 2 [mem 0x01300000-0x013fffff pref]
[    2.096352] sysfs: cannot create duplicate filename '/devices/platform/soc/1ffc000.pcie/pci0000:00/0000:00:00.0/resource0'
[    2.096365] CPU: 3 UID: 0 PID: 52 Comm: kworker/u19:2 Not tainted 6.12.0-rc1 #54
[    2.096381] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    2.096391] Workqueue: async async_run_entry_fn
[    2.103025] imx_thermal 20c8000.anatop:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
[    2.108932]
[    2.108940] Call trace:
[    2.108950]  unwind_backtrace from show_stack+0x10/0x14
[    2.121391] clk: Disabling unused clocks
[    2.127423]  show_stack from dump_stack_lvl+0x54/0x68
[    2.127451]  dump_stack_lvl from sysfs_warn_dup+0x58/0x64
[    2.134265] PM: genpd: Disabling unused power domains
[    2.138525]  sysfs_warn_dup from sysfs_add_bin_file_mode_ns+0xbc/0xcc
[    2.138547]  sysfs_add_bin_file_mode_ns from sysfs_create_bin_file+0xac/0xb4
[    2.149242] ALSA device list:
[    2.150647]  sysfs_create_bin_file from pci_create_resource_files+0x84/0x148
[    2.153183]   No soundcards found.
[    2.158407]  pci_create_resource_files from pci_bus_add_device+0x24/0xe4
[    2.211699]  pci_bus_add_device from pci_bus_add_devices+0x2c/0x70
[    2.217930]  pci_bus_add_devices from pci_host_probe+0x7c/0xa4
[    2.223806]  pci_host_probe from dw_pcie_host_init+0x4ec/0x71c
[    2.229682]  dw_pcie_host_init from imx_pcie_probe+0x3a8/0x75c
[    2.235559]  imx_pcie_probe from platform_probe+0x5c/0xb0
[    2.241010]  platform_probe from really_probe+0xd0/0x3a4
[    2.246364]  really_probe from __driver_probe_device+0x8c/0x1d4
[    2.252321]  __driver_probe_device from driver_probe_device+0x30/0xc0
[    2.258803]  driver_probe_device from __driver_attach_async_helper+0x50/0xd8
[    2.265892]  __driver_attach_async_helper from async_run_entry_fn+0x30/0x144
[    2.272980]  async_run_entry_fn from process_one_work+0x154/0x2dc
[    2.279115]  process_one_work from worker_thread+0x250/0x3f0
[    2.284811]  worker_thread from kthread+0x110/0x12c
[    2.289726]  kthread from ret_from_fork+0x14/0x28
[    2.294461] Exception stack(0xe6a0dfb0 to 0xe6a0dff8)
[    2.299535] dfa0:                                     00000000 00000000 00000000 00000000
[    2.307740] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    2.315942] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    2.323156] pcieport 0000:00:00.0: PME: Signaling with IRQ 293
[    2.329645] pcieport 0000:00:00.0: AER: enabled with IRQ 293
[    2.335553] sysfs: cannot create duplicate filename '/devices/platform/soc/1ffc000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/resource0'
[    2.347794] CPU: 3 UID: 0 PID: 52 Comm: kworker/u19:2 Not tainted 6.12.0-rc1 #54
[    2.355229] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    2.361779] Workqueue: async async_run_entry_fn
[    2.366349] Call trace:
[    2.366362]  unwind_backtrace from show_stack+0x10/0x14
[    2.374183]  show_stack from dump_stack_lvl+0x54/0x68
[    2.379273]  dump_stack_lvl from sysfs_warn_dup+0x58/0x64
[    2.384706]  sysfs_warn_dup from sysfs_add_bin_file_mode_ns+0xbc/0xcc
[    2.391183]  sysfs_add_bin_file_mode_ns from sysfs_create_bin_file+0xac/0xb4
[    2.398270]  sysfs_create_bin_file from pci_create_resource_files+0x84/0x148
[    2.405360]  pci_create_resource_files from pci_bus_add_device+0x24/0xe4
[    2.412113]  pci_bus_add_device from pci_bus_add_devices+0x2c/0x70
[    2.418334]  pci_bus_add_devices from pci_bus_add_devices+0x60/0x70
[    2.424642]  pci_bus_add_devices from pci_host_probe+0x7c/0xa4
[    2.430511]  pci_host_probe from dw_pcie_host_init+0x4ec/0x71c
[    2.436384]  dw_pcie_host_init from imx_pcie_probe+0x3a8/0x75c
[    2.442258]  imx_pcie_probe from platform_probe+0x5c/0xb0
[    2.447704]  platform_probe from really_probe+0xd0/0x3a4
[    2.453057]  really_probe from __driver_probe_device+0x8c/0x1d4
[    2.459014]  __driver_probe_device from driver_probe_device+0x30/0xc0
[    2.465493]  driver_probe_device from __driver_attach_async_helper+0x50/0xd8
[    2.472580]  __driver_attach_async_helper from async_run_entry_fn+0x30/0x144
[    2.479666]  async_run_entry_fn from process_one_work+0x154/0x2dc
[    2.485800]  process_one_work from worker_thread+0x250/0x3f0
[    2.491494]  worker_thread from kthread+0x110/0x12c
[    2.496408]  kthread from ret_from_fork+0x14/0x28
[    2.501140] Exception stack(0xe6a0dfb0 to 0xe6a0dff8)
[    2.506214] dfa0:                                     00000000 00000000 00000000 00000000
[    2.514418] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    2.522620] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000

This was not the case with kernel v6.11, do you have an idea where this
comes from? I did not dig into more detail yet but it looks a bit like a
regression. The driver still works, it just prints this duplicate
filename warning.

Regards,
Stefan

  reply	other threads:[~2024-10-11 14:36 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-09 13:14 [PATCH v2] PCI: imx6: Add suspend/resume support for i.MX6QDL Stefan Eichenberger
2024-10-10 20:01 ` Frank Li
2024-10-10 20:11   ` Francesco Dolcini
2024-10-10 22:45     ` Frank Li
2024-10-11 14:36       ` Stefan Eichenberger [this message]
2024-10-11 15:36         ` Frank Li
2024-10-11 17:53           ` Fabio Estevam
2024-10-12  6:03         ` Manivannan Sadhasivam
2024-10-12  9:02         ` Hongxing Zhu
2024-10-14  8:10           ` Stefan Eichenberger
2024-10-12  4:13 ` Manivannan Sadhasivam
2024-10-14  8:48   ` Stefan Eichenberger

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=Zwk35efNI4EO1eir@eichest-laptop \
    --to=eichest@gmail.com \
    --cc=Frank.li@nxp.com \
    --cc=bhelgaas@google.com \
    --cc=festevam@gmail.com \
    --cc=francesco.dolcini@toradex.com \
    --cc=francesco@dolcini.it \
    --cc=hongxing.zhu@nxp.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=kw@linux.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lpieralisi@kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=stefan.eichenberger@toradex.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.