Linux-mediatek Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] Fix PCI I/O space page leaks
@ 2018-07-15 16:00 Sergei Shtylyov
  2018-07-15 16:31 ` [PATCH 7/8] PCI: mediatek: Fix I/O space page leak Sergei Shtylyov
  2018-07-16 15:06 ` [PATCH 0/8] Fix PCI I/O space page leaks Lorenzo Pieralisi
  0 siblings, 2 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2018-07-15 16:00 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, Linus Walleij, Jingoo Han, Joao Pinto,
	Lorenzo Pieralisi, Thomas Petazzoni, Rob Herring, Tanmay Inamdar,
	Ryder Lee, Matthias Brugger
  Cc: linux-renesas-soc, linux-mediatek, linux-arm-kernel

Hello!

Here's a set of 8 patches against the 'pci/controller-fixes' branch of Lorenzo
Pieralisi's 'pci.git' repo. They are the fixes for the PCI I/O space page leaks
(and the kernel BUG caused by them on deferred probe); those were 1st found
testing the R-Car PCIe driver. The patches are in the chronological order
(considering the date/time of the commits specified in the Fixes: tag), patches
#2..#8 depend on the patch #1 in order to build/work as it introduces the managed
device API that they all use...

[1/8] PCI: xgene: Fix I/O space page leak
[2/8] PCI: of: Fix I/O space page leak
[3/8] PCI: versatile: Fix I/O space page leak
[4/8] PCI: designware: Fix I/O space page leak
[5/8] PCI: aardvark: Fix I/O space page leak
[6/8] PCI: faraday: Fix I/O space page leak
[7/8] PCI: mediatek: Fix I/O space page leak
[8/8] PCI: v3-semi: Fix I/O space page leak

MBR, Sergei

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 7/8] PCI: mediatek: Fix I/O space page leak
  2018-07-15 16:00 [PATCH 0/8] Fix PCI I/O space page leaks Sergei Shtylyov
@ 2018-07-15 16:31 ` Sergei Shtylyov
  2018-07-16 15:06 ` [PATCH 0/8] Fix PCI I/O space page leaks Lorenzo Pieralisi
  1 sibling, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2018-07-15 16:31 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, Lorenzo Pieralisi, Ryder Lee,
	Matthias Brugger
  Cc: linux-mediatek, linux-arm-kernel

When testing the R-Car PCIe driver on the Condor board,  I noticed that if
I left  the PCIe PHY driver disabled, the kernel crashed with this BUG:

[    1.225819] kernel BUG at lib/ioremap.c:72!
[    1.230007] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[    1.235496] Modules linked in:
[    1.238561] CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
[    1.245526] Hardware name: Renesas Condor board based on r8a77980 (DT)
[    1.252075] Workqueue: events deferred_probe_work_func
[    1.257220] pstate: 80000005 (Nzcv daif -PAN -UAO)
[    1.262024] pc : ioremap_page_range+0x370/0x3c8
[    1.266558] lr : ioremap_page_range+0x40/0x3c8
[    1.271002] sp : ffff000008da39e0
[    1.274317] x29: ffff000008da39e0 x28: 00e8000000000f07
[    1.279636] x27: ffff7dfffee00000 x26: 0140000000000000
[    1.284954] x25: ffff7dfffef00000 x24: 00000000000fe100
[    1.290272] x23: ffff80007b906000 x22: ffff000008ab8000
[    1.295590] x21: ffff000008bb1d58 x20: ffff7dfffef00000
[    1.300909] x19: ffff800009c30fb8 x18: 0000000000000001
[    1.306226] x17: 00000000000152d0 x16: 00000000014012d0
[    1.311544] x15: 0000000000000000 x14: 0720072007200720
[    1.316862] x13: 0720072007200720 x12: 0720072007200720
[    1.322180] x11: 0720072007300730 x10: 00000000000000ae
[    1.327498] x9 : 0000000000000000 x8 : ffff7dffff000000                      
[    1.332816] x7 : 0000000000000000 x6 : 0000000000000100
[    1.338134] x5 : 0000000000000000 x4 : 000000007b906000
[    1.343452] x3 : ffff80007c61a880 x2 : ffff7dfffeefffff
[    1.348770] x1 : 0000000040000000 x0 : 00e80000fe100f07
[    1.354090] Process kworker/0:1 (pid: 39, stack limit = 0x        (ptrval))  
[    1.361056] Call trace:
[    1.363504]  ioremap_page_range+0x370/0x3c8
[    1.367695]  pci_remap_iospace+0x7c/0xac
[    1.371624]  pci_parse_request_of_pci_ranges+0x13c/0x190
[    1.376945]  rcar_pcie_probe+0x4c/0xb04
[    1.380786]  platform_drv_probe+0x50/0xbc
[    1.384799]  driver_probe_device+0x21c/0x308
[    1.389072]  __device_attach_driver+0x98/0xc8
[    1.393431]  bus_for_each_drv+0x54/0x94
[    1.397269]  __device_attach+0xc4/0x12c
[    1.401107]  device_initial_probe+0x10/0x18
[    1.405292]  bus_probe_device+0x90/0x98
[    1.409130]  deferred_probe_work_func+0xb0/0x150
[    1.413756]  process_one_work+0x12c/0x29c
[    1.417768]  worker_thread+0x200/0x3fc
[    1.421522]  kthread+0x108/0x134
[    1.424755]  ret_from_fork+0x10/0x18
[    1.428334] Code: f9004ba2 54000080 aa0003fb 17ffff48 (d4210000)

It turned out that pci_remap_iospace() wasn't undone when the driver's
probe failed, and since devm_phy_optional_get() returned -EPROBE_DEFER,
the probe was retried,  finally causing the BUG due to trying to remap
already remapped pages.

The MediatTek PCIe driver has the same issue.  The most feasible solution
seemed to introduce devm_pci_remap_iospace() -- which was done in the XGene
PCIe driver patch posted earlier...

Fixes: 637cfacae96f ("PCI: mediatek: Add MediaTek PCIe host controller support")
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>

---
 drivers/pci/controller/pcie-mediatek.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: pci/drivers/pci/controller/pcie-mediatek.c
===================================================================
--- pci.orig/drivers/pci/controller/pcie-mediatek.c
+++ pci/drivers/pci/controller/pcie-mediatek.c
@@ -1109,7 +1109,7 @@ static int mtk_pcie_request_resources(st
 	if (err < 0)
 		return err;
 
-	pci_remap_iospace(&pcie->pio, pcie->io.start);
+	devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
 
 	return 0;
 }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/8] Fix PCI I/O space page leaks
  2018-07-15 16:00 [PATCH 0/8] Fix PCI I/O space page leaks Sergei Shtylyov
  2018-07-15 16:31 ` [PATCH 7/8] PCI: mediatek: Fix I/O space page leak Sergei Shtylyov
@ 2018-07-16 15:06 ` Lorenzo Pieralisi
  2018-07-16 18:50   ` Sergei Shtylyov
  1 sibling, 1 reply; 4+ messages in thread
From: Lorenzo Pieralisi @ 2018-07-16 15:06 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: Thomas Petazzoni, Rob Herring, Joao Pinto, linux-pci,
	Linus Walleij, linux-renesas-soc, Matthias Brugger, Ryder Lee,
	linux-mediatek, Tanmay Inamdar, Jingoo Han, Bjorn Helgaas,
	linux-arm-kernel

On Sun, Jul 15, 2018 at 07:00:21PM +0300, Sergei Shtylyov wrote:
> Hello!
> 
> Here's a set of 8 patches against the 'pci/controller-fixes' branch of Lorenzo
> Pieralisi's 'pci.git' repo. They are the fixes for the PCI I/O space page leaks
> (and the kernel BUG caused by them on deferred probe); those were 1st found
> testing the R-Car PCIe driver. The patches are in the chronological order
> (considering the date/time of the commits specified in the Fixes: tag), patches
> #2..#8 depend on the patch #1 in order to build/work as it introduces the managed
> device API that they all use...
> 
> [1/8] PCI: xgene: Fix I/O space page leak
> [2/8] PCI: of: Fix I/O space page leak
> [3/8] PCI: versatile: Fix I/O space page leak
> [4/8] PCI: designware: Fix I/O space page leak
> [5/8] PCI: aardvark: Fix I/O space page leak
> [6/8] PCI: faraday: Fix I/O space page leak
> [7/8] PCI: mediatek: Fix I/O space page leak
> [8/8] PCI: v3-semi: Fix I/O space page leak
> 
> MBR, Sergei

Hi Sergei,

I reshuffled the series, rewrote commit logs and move the devm_
API to commit 2 which is the one you tested AFAIK.

I pushed them out to my pci/controller-fixes branch which I hope
we can still aim for an -rc, please do have a look and let me know
what you think, I have not asked Bjorn to pull it yet.

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/8] Fix PCI I/O space page leaks
  2018-07-16 15:06 ` [PATCH 0/8] Fix PCI I/O space page leaks Lorenzo Pieralisi
@ 2018-07-16 18:50   ` Sergei Shtylyov
  0 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2018-07-16 18:50 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Thomas Petazzoni, Rob Herring, Joao Pinto, linux-pci,
	Linus Walleij, linux-renesas-soc, Matthias Brugger, Ryder Lee,
	linux-mediatek, Tanmay Inamdar, Jingoo Han, Bjorn Helgaas,
	linux-arm-kernel

On 07/16/2018 06:06 PM, Lorenzo Pieralisi wrote:

>> Here's a set of 8 patches against the 'pci/controller-fixes' branch of Lorenzo
>> Pieralisi's 'pci.git' repo. They are the fixes for the PCI I/O space page leaks
>> (and the kernel BUG caused by them on deferred probe); those were 1st found
>> testing the R-Car PCIe driver. The patches are in the chronological order
>> (considering the date/time of the commits specified in the Fixes: tag), patches
>> #2..#8 depend on the patch #1 in order to build/work as it introduces the managed
>> device API that they all use...
>>
>> [1/8] PCI: xgene: Fix I/O space page leak
>> [2/8] PCI: of: Fix I/O space page leak
>> [3/8] PCI: versatile: Fix I/O space page leak
>> [4/8] PCI: designware: Fix I/O space page leak
>> [5/8] PCI: aardvark: Fix I/O space page leak
>> [6/8] PCI: faraday: Fix I/O space page leak
>> [7/8] PCI: mediatek: Fix I/O space page leak
>> [8/8] PCI: v3-semi: Fix I/O space page leak
>>
>> MBR, Sergei
> 
> Hi Sergei,
> 
> I reshuffled the series, rewrote commit logs and move the devm_
> API to commit 2 which is the one you tested AFAIK.

   Well, that means the XGene fix wouldn't propagate "deep enough", if that's your
choice, OK...

> I pushed them out to my pci/controller-fixes branch which I hope
> we can still aim for an -rc, please do have a look and let me know
> what you think, I have not asked Bjorn to pull it yet.

   Your edits generally look fine, except you forgot the usual "X has the same issue"
phrase in the XGene's commit log.

> Thanks,
> Lorenzo

MBR, Sergei

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-07-16 18:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-15 16:00 [PATCH 0/8] Fix PCI I/O space page leaks Sergei Shtylyov
2018-07-15 16:31 ` [PATCH 7/8] PCI: mediatek: Fix I/O space page leak Sergei Shtylyov
2018-07-16 15:06 ` [PATCH 0/8] Fix PCI I/O space page leaks Lorenzo Pieralisi
2018-07-16 18:50   ` Sergei Shtylyov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox