Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 06:41 PM, Greg Kroah-Hartman wrote:

 4.14-stable review patch.  If anyone has any objections, please let me 
 know.

 --

 From: Sergei Shtylyov 

 commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

   kernel BUG at lib/ioremap.c:72!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
   Hardware name: Renesas Condor board based on r8a77980 (DT)
   Workqueue: events deferred_probe_work_func
   pstate: 8005 (Nzcv daif -PAN -UAO)
   pc : ioremap_page_range+0x370/0x3c8
   lr : ioremap_page_range+0x40/0x3c8
   sp : 08da39e0
   x29: 08da39e0 x28: 00e80f07
   x27: 7dfffee0 x26: 0140
   x25: 7dfffef0 x24: 000fe100
   x23: 80007b906000 x22: 08ab8000
   x21: 08bb1d58 x20: 7dfffef0
   x19: 89c30fb8 x18: 0001
   x17: 000152d0 x16: 014012d0
   x15:  x14: 0720072007200720
   x13: 0720072007200720 x12: 0720072007200720
   x11: 0720072007300730 x10: 00ae
   x9 :  x8 : 7d00
   x7 :  x6 : 0100
   x5 :  x4 : 7b906000
   x3 : 80007c61a880 x2 : 7dfffeef
   x1 : 4000 x0 : 00e8fe100f07
   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
   Call trace:
ioremap_page_range+0x370/0x3c8
pci_remap_iospace+0x7c/0xac
pci_parse_request_of_pci_ranges+0x13c/0x190
rcar_pcie_probe+0x4c/0xb04
platform_drv_probe+0x50/0xbc
driver_probe_device+0x21c/0x308
__device_attach_driver+0x98/0xc8
bus_for_each_drv+0x54/0x94
__device_attach+0xc4/0x12c
device_initial_probe+0x10/0x18
bus_probe_device+0x90/0x98
deferred_probe_work_func+0xb0/0x150
process_one_work+0x12c/0x29c
worker_thread+0x200/0x3fc
kthread+0x108/0x134
ret_from_fork+0x10/0x18
   Code: f9004ba2 5480 aa0003fb 1748 (d421)

 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.

 Introduce the devm_pci_remap_iospace() managed API and replace the
 pci_remap_iospace() call with it to fix the bug.

 Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing 
 API")
 Signed-off-by: Sergei Shtylyov 
 [lorenzo.pieral...@arm.com: split commit/updated the commit log]
 Signed-off-by: Lorenzo Pieralisi 
 Signed-off-by: Bjorn Helgaas 
 Reviewed-by: Linus Walleij 
 [Backport just for the new api which other patches need - gregkh]
 Signed-off-by: Greg Kroah-Hartman 

 ---
  drivers/pci/pci.c   |   38 ++
  include/linux/pci.h |2 ++
  2 files changed, 40 insertions(+)
>>>
>>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
>>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode 
>>> back

s/mode/code/, of course. :-)

>>> then)...
>>
>> Yes I totally messed this up, let me fix it...
>
> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> it should now be resolved, but verifying this would be nice :)

Unfortunately, it doesn't fix anything on R-Car where this bug was 
 originally
 encountered and the fix was tested... and you leave no way for it to be 
 fixed. :-(
>>>
>>> Really?  Why not?  What is missing here?
>>
>>You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
>> because
>> this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
>> started
>> using the common "PCI-resource-walker" function factored out from 
>> pci-host-common.c
>> somewhere around 4.17, IIRC...
> 
> Ok, can you send me a patch that does that please?  Otherwise I really
> don't know how to exactly "fix" that at the moment.

   I'd told you I could do it. :-) Sending...

> thanks,
> 
> greg k-h

MBR, Sergei


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 06:41 PM, Greg Kroah-Hartman wrote:

 4.14-stable review patch.  If anyone has any objections, please let me 
 know.

 --

 From: Sergei Shtylyov 

 commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

   kernel BUG at lib/ioremap.c:72!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
   Hardware name: Renesas Condor board based on r8a77980 (DT)
   Workqueue: events deferred_probe_work_func
   pstate: 8005 (Nzcv daif -PAN -UAO)
   pc : ioremap_page_range+0x370/0x3c8
   lr : ioremap_page_range+0x40/0x3c8
   sp : 08da39e0
   x29: 08da39e0 x28: 00e80f07
   x27: 7dfffee0 x26: 0140
   x25: 7dfffef0 x24: 000fe100
   x23: 80007b906000 x22: 08ab8000
   x21: 08bb1d58 x20: 7dfffef0
   x19: 89c30fb8 x18: 0001
   x17: 000152d0 x16: 014012d0
   x15:  x14: 0720072007200720
   x13: 0720072007200720 x12: 0720072007200720
   x11: 0720072007300730 x10: 00ae
   x9 :  x8 : 7d00
   x7 :  x6 : 0100
   x5 :  x4 : 7b906000
   x3 : 80007c61a880 x2 : 7dfffeef
   x1 : 4000 x0 : 00e8fe100f07
   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
   Call trace:
ioremap_page_range+0x370/0x3c8
pci_remap_iospace+0x7c/0xac
pci_parse_request_of_pci_ranges+0x13c/0x190
rcar_pcie_probe+0x4c/0xb04
platform_drv_probe+0x50/0xbc
driver_probe_device+0x21c/0x308
__device_attach_driver+0x98/0xc8
bus_for_each_drv+0x54/0x94
__device_attach+0xc4/0x12c
device_initial_probe+0x10/0x18
bus_probe_device+0x90/0x98
deferred_probe_work_func+0xb0/0x150
process_one_work+0x12c/0x29c
worker_thread+0x200/0x3fc
kthread+0x108/0x134
ret_from_fork+0x10/0x18
   Code: f9004ba2 5480 aa0003fb 1748 (d421)

 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.

 Introduce the devm_pci_remap_iospace() managed API and replace the
 pci_remap_iospace() call with it to fix the bug.

 Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing 
 API")
 Signed-off-by: Sergei Shtylyov 
 [lorenzo.pieral...@arm.com: split commit/updated the commit log]
 Signed-off-by: Lorenzo Pieralisi 
 Signed-off-by: Bjorn Helgaas 
 Reviewed-by: Linus Walleij 
 [Backport just for the new api which other patches need - gregkh]
 Signed-off-by: Greg Kroah-Hartman 

 ---
  drivers/pci/pci.c   |   38 ++
  include/linux/pci.h |2 ++
  2 files changed, 40 insertions(+)
>>>
>>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
>>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode 
>>> back

s/mode/code/, of course. :-)

>>> then)...
>>
>> Yes I totally messed this up, let me fix it...
>
> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> it should now be resolved, but verifying this would be nice :)

Unfortunately, it doesn't fix anything on R-Car where this bug was 
 originally
 encountered and the fix was tested... and you leave no way for it to be 
 fixed. :-(
>>>
>>> Really?  Why not?  What is missing here?
>>
>>You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
>> because
>> this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
>> started
>> using the common "PCI-resource-walker" function factored out from 
>> pci-host-common.c
>> somewhere around 4.17, IIRC...
> 
> Ok, can you send me a patch that does that please?  Otherwise I really
> don't know how to exactly "fix" that at the moment.

   I'd told you I could do it. :-) Sending...

> thanks,
> 
> greg k-h

MBR, Sergei


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 06:33:47PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 06:27 PM, Greg Kroah-Hartman wrote:
> > On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
> >> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> >>> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
>  On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> > On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> >
> >> 4.14-stable review patch.  If anyone has any objections, please let me 
> >> know.
> >>
> >> --
> >>
> >> From: Sergei Shtylyov 
> >>
> >> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> >>
> >> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> >> driver was left disabled, the kernel crashed with this BUG:
> >>
> >>   kernel BUG at lib/ioremap.c:72!
> >>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> >>   Modules linked in:
> >>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> >>   Hardware name: Renesas Condor board based on r8a77980 (DT)
> >>   Workqueue: events deferred_probe_work_func
> >>   pstate: 8005 (Nzcv daif -PAN -UAO)
> >>   pc : ioremap_page_range+0x370/0x3c8
> >>   lr : ioremap_page_range+0x40/0x3c8
> >>   sp : 08da39e0
> >>   x29: 08da39e0 x28: 00e80f07
> >>   x27: 7dfffee0 x26: 0140
> >>   x25: 7dfffef0 x24: 000fe100
> >>   x23: 80007b906000 x22: 08ab8000
> >>   x21: 08bb1d58 x20: 7dfffef0
> >>   x19: 89c30fb8 x18: 0001
> >>   x17: 000152d0 x16: 014012d0
> >>   x15:  x14: 0720072007200720
> >>   x13: 0720072007200720 x12: 0720072007200720
> >>   x11: 0720072007300730 x10: 00ae
> >>   x9 :  x8 : 7d00
> >>   x7 :  x6 : 0100
> >>   x5 :  x4 : 7b906000
> >>   x3 : 80007c61a880 x2 : 7dfffeef
> >>   x1 : 4000 x0 : 00e8fe100f07
> >>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> >>   Call trace:
> >>ioremap_page_range+0x370/0x3c8
> >>pci_remap_iospace+0x7c/0xac
> >>pci_parse_request_of_pci_ranges+0x13c/0x190
> >>rcar_pcie_probe+0x4c/0xb04
> >>platform_drv_probe+0x50/0xbc
> >>driver_probe_device+0x21c/0x308
> >>__device_attach_driver+0x98/0xc8
> >>bus_for_each_drv+0x54/0x94
> >>__device_attach+0xc4/0x12c
> >>device_initial_probe+0x10/0x18
> >>bus_probe_device+0x90/0x98
> >>deferred_probe_work_func+0xb0/0x150
> >>process_one_work+0x12c/0x29c
> >>worker_thread+0x200/0x3fc
> >>kthread+0x108/0x134
> >>ret_from_fork+0x10/0x18
> >>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> >>
> >> 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.
> >>
> >> Introduce the devm_pci_remap_iospace() managed API and replace the
> >> pci_remap_iospace() call with it to fix the bug.
> >>
> >> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing 
> >> API")
> >> Signed-off-by: Sergei Shtylyov 
> >> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> >> Signed-off-by: Lorenzo Pieralisi 
> >> Signed-off-by: Bjorn Helgaas 
> >> Reviewed-by: Linus Walleij 
> >> [Backport just for the new api which other patches need - gregkh]
> >> Signed-off-by: Greg Kroah-Hartman 
> >>
> >> ---
> >>  drivers/pci/pci.c   |   38 ++
> >>  include/linux/pci.h |2 ++
> >>  2 files changed, 40 insertions(+)
> >
> >   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> > also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode 
> > back
> >>
> >>s/mode/code/, of course. :-)
> >>
> > then)...
> 
>  Yes I totally messed this up, let me fix it...
> >>>
> >>> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> >>> it should now be resolved, but verifying this would be nice :)
> >>
> >>Unfortunately, it doesn't fix anything on R-Car where this bug was 
> >> originally
> >> encountered and the fix was tested... and you leave no way for it to be 
> >> fixed. :-(
> > 
> > Really?  Why not?  What is missing here?
> 
>You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
> because
> this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
> started
> using the common 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 06:33:47PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 06:27 PM, Greg Kroah-Hartman wrote:
> > On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
> >> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> >>> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
>  On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> > On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> >
> >> 4.14-stable review patch.  If anyone has any objections, please let me 
> >> know.
> >>
> >> --
> >>
> >> From: Sergei Shtylyov 
> >>
> >> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> >>
> >> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> >> driver was left disabled, the kernel crashed with this BUG:
> >>
> >>   kernel BUG at lib/ioremap.c:72!
> >>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> >>   Modules linked in:
> >>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> >>   Hardware name: Renesas Condor board based on r8a77980 (DT)
> >>   Workqueue: events deferred_probe_work_func
> >>   pstate: 8005 (Nzcv daif -PAN -UAO)
> >>   pc : ioremap_page_range+0x370/0x3c8
> >>   lr : ioremap_page_range+0x40/0x3c8
> >>   sp : 08da39e0
> >>   x29: 08da39e0 x28: 00e80f07
> >>   x27: 7dfffee0 x26: 0140
> >>   x25: 7dfffef0 x24: 000fe100
> >>   x23: 80007b906000 x22: 08ab8000
> >>   x21: 08bb1d58 x20: 7dfffef0
> >>   x19: 89c30fb8 x18: 0001
> >>   x17: 000152d0 x16: 014012d0
> >>   x15:  x14: 0720072007200720
> >>   x13: 0720072007200720 x12: 0720072007200720
> >>   x11: 0720072007300730 x10: 00ae
> >>   x9 :  x8 : 7d00
> >>   x7 :  x6 : 0100
> >>   x5 :  x4 : 7b906000
> >>   x3 : 80007c61a880 x2 : 7dfffeef
> >>   x1 : 4000 x0 : 00e8fe100f07
> >>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> >>   Call trace:
> >>ioremap_page_range+0x370/0x3c8
> >>pci_remap_iospace+0x7c/0xac
> >>pci_parse_request_of_pci_ranges+0x13c/0x190
> >>rcar_pcie_probe+0x4c/0xb04
> >>platform_drv_probe+0x50/0xbc
> >>driver_probe_device+0x21c/0x308
> >>__device_attach_driver+0x98/0xc8
> >>bus_for_each_drv+0x54/0x94
> >>__device_attach+0xc4/0x12c
> >>device_initial_probe+0x10/0x18
> >>bus_probe_device+0x90/0x98
> >>deferred_probe_work_func+0xb0/0x150
> >>process_one_work+0x12c/0x29c
> >>worker_thread+0x200/0x3fc
> >>kthread+0x108/0x134
> >>ret_from_fork+0x10/0x18
> >>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> >>
> >> 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.
> >>
> >> Introduce the devm_pci_remap_iospace() managed API and replace the
> >> pci_remap_iospace() call with it to fix the bug.
> >>
> >> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing 
> >> API")
> >> Signed-off-by: Sergei Shtylyov 
> >> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> >> Signed-off-by: Lorenzo Pieralisi 
> >> Signed-off-by: Bjorn Helgaas 
> >> Reviewed-by: Linus Walleij 
> >> [Backport just for the new api which other patches need - gregkh]
> >> Signed-off-by: Greg Kroah-Hartman 
> >>
> >> ---
> >>  drivers/pci/pci.c   |   38 ++
> >>  include/linux/pci.h |2 ++
> >>  2 files changed, 40 insertions(+)
> >
> >   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> > also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode 
> > back
> >>
> >>s/mode/code/, of course. :-)
> >>
> > then)...
> 
>  Yes I totally messed this up, let me fix it...
> >>>
> >>> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> >>> it should now be resolved, but verifying this would be nice :)
> >>
> >>Unfortunately, it doesn't fix anything on R-Car where this bug was 
> >> originally
> >> encountered and the fix was tested... and you leave no way for it to be 
> >> fixed. :-(
> > 
> > Really?  Why not?  What is missing here?
> 
>You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
> because
> this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
> started
> using the common 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 06:27 PM, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
>> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
>>> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
 On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
>
>> 4.14-stable review patch.  If anyone has any objections, please let me 
>> know.
>>
>> --
>>
>> From: Sergei Shtylyov 
>>
>> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
>>
>> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
>> driver was left disabled, the kernel crashed with this BUG:
>>
>>   kernel BUG at lib/ioremap.c:72!
>>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>>   Modules linked in:
>>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>>   Workqueue: events deferred_probe_work_func
>>   pstate: 8005 (Nzcv daif -PAN -UAO)
>>   pc : ioremap_page_range+0x370/0x3c8
>>   lr : ioremap_page_range+0x40/0x3c8
>>   sp : 08da39e0
>>   x29: 08da39e0 x28: 00e80f07
>>   x27: 7dfffee0 x26: 0140
>>   x25: 7dfffef0 x24: 000fe100
>>   x23: 80007b906000 x22: 08ab8000
>>   x21: 08bb1d58 x20: 7dfffef0
>>   x19: 89c30fb8 x18: 0001
>>   x17: 000152d0 x16: 014012d0
>>   x15:  x14: 0720072007200720
>>   x13: 0720072007200720 x12: 0720072007200720
>>   x11: 0720072007300730 x10: 00ae
>>   x9 :  x8 : 7d00
>>   x7 :  x6 : 0100
>>   x5 :  x4 : 7b906000
>>   x3 : 80007c61a880 x2 : 7dfffeef
>>   x1 : 4000 x0 : 00e8fe100f07
>>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>>   Call trace:
>>ioremap_page_range+0x370/0x3c8
>>pci_remap_iospace+0x7c/0xac
>>pci_parse_request_of_pci_ranges+0x13c/0x190
>>rcar_pcie_probe+0x4c/0xb04
>>platform_drv_probe+0x50/0xbc
>>driver_probe_device+0x21c/0x308
>>__device_attach_driver+0x98/0xc8
>>bus_for_each_drv+0x54/0x94
>>__device_attach+0xc4/0x12c
>>device_initial_probe+0x10/0x18
>>bus_probe_device+0x90/0x98
>>deferred_probe_work_func+0xb0/0x150
>>process_one_work+0x12c/0x29c
>>worker_thread+0x200/0x3fc
>>kthread+0x108/0x134
>>ret_from_fork+0x10/0x18
>>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
>>
>> 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.
>>
>> Introduce the devm_pci_remap_iospace() managed API and replace the
>> pci_remap_iospace() call with it to fix the bug.
>>
>> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
>> Signed-off-by: Sergei Shtylyov 
>> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
>> Signed-off-by: Lorenzo Pieralisi 
>> Signed-off-by: Bjorn Helgaas 
>> Reviewed-by: Linus Walleij 
>> [Backport just for the new api which other patches need - gregkh]
>> Signed-off-by: Greg Kroah-Hartman 
>>
>> ---
>>  drivers/pci/pci.c   |   38 ++
>>  include/linux/pci.h |2 ++
>>  2 files changed, 40 insertions(+)
>
>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
>>
>>s/mode/code/, of course. :-)
>>
> then)...

 Yes I totally messed this up, let me fix it...
>>>
>>> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
>>> it should now be resolved, but verifying this would be nice :)
>>
>>Unfortunately, it doesn't fix anything on R-Car where this bug was 
>> originally
>> encountered and the fix was tested... and you leave no way for it to be 
>> fixed. :-(
> 
> Really?  Why not?  What is missing here?

   You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
because
this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
started
using the common "PCI-resource-walker" function factored out from 
pci-host-common.c
somewhere around 4.17, IIRC...

> greg k-h

MBR, Sergei


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 06:27 PM, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
>> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
>>> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
 On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
>
>> 4.14-stable review patch.  If anyone has any objections, please let me 
>> know.
>>
>> --
>>
>> From: Sergei Shtylyov 
>>
>> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
>>
>> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
>> driver was left disabled, the kernel crashed with this BUG:
>>
>>   kernel BUG at lib/ioremap.c:72!
>>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>>   Modules linked in:
>>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>>   Workqueue: events deferred_probe_work_func
>>   pstate: 8005 (Nzcv daif -PAN -UAO)
>>   pc : ioremap_page_range+0x370/0x3c8
>>   lr : ioremap_page_range+0x40/0x3c8
>>   sp : 08da39e0
>>   x29: 08da39e0 x28: 00e80f07
>>   x27: 7dfffee0 x26: 0140
>>   x25: 7dfffef0 x24: 000fe100
>>   x23: 80007b906000 x22: 08ab8000
>>   x21: 08bb1d58 x20: 7dfffef0
>>   x19: 89c30fb8 x18: 0001
>>   x17: 000152d0 x16: 014012d0
>>   x15:  x14: 0720072007200720
>>   x13: 0720072007200720 x12: 0720072007200720
>>   x11: 0720072007300730 x10: 00ae
>>   x9 :  x8 : 7d00
>>   x7 :  x6 : 0100
>>   x5 :  x4 : 7b906000
>>   x3 : 80007c61a880 x2 : 7dfffeef
>>   x1 : 4000 x0 : 00e8fe100f07
>>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>>   Call trace:
>>ioremap_page_range+0x370/0x3c8
>>pci_remap_iospace+0x7c/0xac
>>pci_parse_request_of_pci_ranges+0x13c/0x190
>>rcar_pcie_probe+0x4c/0xb04
>>platform_drv_probe+0x50/0xbc
>>driver_probe_device+0x21c/0x308
>>__device_attach_driver+0x98/0xc8
>>bus_for_each_drv+0x54/0x94
>>__device_attach+0xc4/0x12c
>>device_initial_probe+0x10/0x18
>>bus_probe_device+0x90/0x98
>>deferred_probe_work_func+0xb0/0x150
>>process_one_work+0x12c/0x29c
>>worker_thread+0x200/0x3fc
>>kthread+0x108/0x134
>>ret_from_fork+0x10/0x18
>>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
>>
>> 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.
>>
>> Introduce the devm_pci_remap_iospace() managed API and replace the
>> pci_remap_iospace() call with it to fix the bug.
>>
>> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
>> Signed-off-by: Sergei Shtylyov 
>> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
>> Signed-off-by: Lorenzo Pieralisi 
>> Signed-off-by: Bjorn Helgaas 
>> Reviewed-by: Linus Walleij 
>> [Backport just for the new api which other patches need - gregkh]
>> Signed-off-by: Greg Kroah-Hartman 
>>
>> ---
>>  drivers/pci/pci.c   |   38 ++
>>  include/linux/pci.h |2 ++
>>  2 files changed, 40 insertions(+)
>
>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
>>
>>s/mode/code/, of course. :-)
>>
> then)...

 Yes I totally messed this up, let me fix it...
>>>
>>> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
>>> it should now be resolved, but verifying this would be nice :)
>>
>>Unfortunately, it doesn't fix anything on R-Car where this bug was 
>> originally
>> encountered and the fix was tested... and you leave no way for it to be 
>> fixed. :-(
> 
> Really?  Why not?  What is missing here?

   You just need to fix drivers/pci/host/pcie-rcar.c in this same patch -- 
because
this same *upstream* patch fixed the R-Car PCIe driver in 4.18. That driver 
started
using the common "PCI-resource-walker" function factored out from 
pci-host-common.c
somewhere around 4.17, IIRC...

> greg k-h

MBR, Sergei


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> > On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
> >> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> >>> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> >>>
>  4.14-stable review patch.  If anyone has any objections, please let me 
>  know.
> 
>  --
> 
>  From: Sergei Shtylyov 
> 
>  commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
>  When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
>  driver was left disabled, the kernel crashed with this BUG:
> 
>    kernel BUG at lib/ioremap.c:72!
>    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>    Modules linked in:
>    CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>    Hardware name: Renesas Condor board based on r8a77980 (DT)
>    Workqueue: events deferred_probe_work_func
>    pstate: 8005 (Nzcv daif -PAN -UAO)
>    pc : ioremap_page_range+0x370/0x3c8
>    lr : ioremap_page_range+0x40/0x3c8
>    sp : 08da39e0
>    x29: 08da39e0 x28: 00e80f07
>    x27: 7dfffee0 x26: 0140
>    x25: 7dfffef0 x24: 000fe100
>    x23: 80007b906000 x22: 08ab8000
>    x21: 08bb1d58 x20: 7dfffef0
>    x19: 89c30fb8 x18: 0001
>    x17: 000152d0 x16: 014012d0
>    x15:  x14: 0720072007200720
>    x13: 0720072007200720 x12: 0720072007200720
>    x11: 0720072007300730 x10: 00ae
>    x9 :  x8 : 7d00
>    x7 :  x6 : 0100
>    x5 :  x4 : 7b906000
>    x3 : 80007c61a880 x2 : 7dfffeef
>    x1 : 4000 x0 : 00e8fe100f07
>    Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>    Call trace:
> ioremap_page_range+0x370/0x3c8
> pci_remap_iospace+0x7c/0xac
> pci_parse_request_of_pci_ranges+0x13c/0x190
> rcar_pcie_probe+0x4c/0xb04
> platform_drv_probe+0x50/0xbc
> driver_probe_device+0x21c/0x308
> __device_attach_driver+0x98/0xc8
> bus_for_each_drv+0x54/0x94
> __device_attach+0xc4/0x12c
> device_initial_probe+0x10/0x18
> bus_probe_device+0x90/0x98
> deferred_probe_work_func+0xb0/0x150
> process_one_work+0x12c/0x29c
> worker_thread+0x200/0x3fc
> kthread+0x108/0x134
> ret_from_fork+0x10/0x18
>    Code: f9004ba2 5480 aa0003fb 1748 (d421)
> 
>  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.
> 
>  Introduce the devm_pci_remap_iospace() managed API and replace the
>  pci_remap_iospace() call with it to fix the bug.
> 
>  Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
>  Signed-off-by: Sergei Shtylyov 
>  [lorenzo.pieral...@arm.com: split commit/updated the commit log]
>  Signed-off-by: Lorenzo Pieralisi 
>  Signed-off-by: Bjorn Helgaas 
>  Reviewed-by: Linus Walleij 
>  [Backport just for the new api which other patches need - gregkh]
>  Signed-off-by: Greg Kroah-Hartman 
> 
>  ---
>   drivers/pci/pci.c   |   38 ++
>   include/linux/pci.h |2 ++
>   2 files changed, 40 insertions(+)
> >>>
> >>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> >>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> 
>s/mode/code/, of course. :-)
> 
> >>> then)...
> >>
> >> Yes I totally messed this up, let me fix it...
> > 
> > Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> > it should now be resolved, but verifying this would be nice :)
> 
>Unfortunately, it doesn't fix anything on R-Car where this bug was 
> originally
> encountered and the fix was tested... and you leave no way for it to be 
> fixed. :-(

Really?  Why not?  What is missing here?

greg k-h


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 06:20:31PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> > On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
> >> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> >>> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> >>>
>  4.14-stable review patch.  If anyone has any objections, please let me 
>  know.
> 
>  --
> 
>  From: Sergei Shtylyov 
> 
>  commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
>  When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
>  driver was left disabled, the kernel crashed with this BUG:
> 
>    kernel BUG at lib/ioremap.c:72!
>    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>    Modules linked in:
>    CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>    Hardware name: Renesas Condor board based on r8a77980 (DT)
>    Workqueue: events deferred_probe_work_func
>    pstate: 8005 (Nzcv daif -PAN -UAO)
>    pc : ioremap_page_range+0x370/0x3c8
>    lr : ioremap_page_range+0x40/0x3c8
>    sp : 08da39e0
>    x29: 08da39e0 x28: 00e80f07
>    x27: 7dfffee0 x26: 0140
>    x25: 7dfffef0 x24: 000fe100
>    x23: 80007b906000 x22: 08ab8000
>    x21: 08bb1d58 x20: 7dfffef0
>    x19: 89c30fb8 x18: 0001
>    x17: 000152d0 x16: 014012d0
>    x15:  x14: 0720072007200720
>    x13: 0720072007200720 x12: 0720072007200720
>    x11: 0720072007300730 x10: 00ae
>    x9 :  x8 : 7d00
>    x7 :  x6 : 0100
>    x5 :  x4 : 7b906000
>    x3 : 80007c61a880 x2 : 7dfffeef
>    x1 : 4000 x0 : 00e8fe100f07
>    Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>    Call trace:
> ioremap_page_range+0x370/0x3c8
> pci_remap_iospace+0x7c/0xac
> pci_parse_request_of_pci_ranges+0x13c/0x190
> rcar_pcie_probe+0x4c/0xb04
> platform_drv_probe+0x50/0xbc
> driver_probe_device+0x21c/0x308
> __device_attach_driver+0x98/0xc8
> bus_for_each_drv+0x54/0x94
> __device_attach+0xc4/0x12c
> device_initial_probe+0x10/0x18
> bus_probe_device+0x90/0x98
> deferred_probe_work_func+0xb0/0x150
> process_one_work+0x12c/0x29c
> worker_thread+0x200/0x3fc
> kthread+0x108/0x134
> ret_from_fork+0x10/0x18
>    Code: f9004ba2 5480 aa0003fb 1748 (d421)
> 
>  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.
> 
>  Introduce the devm_pci_remap_iospace() managed API and replace the
>  pci_remap_iospace() call with it to fix the bug.
> 
>  Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
>  Signed-off-by: Sergei Shtylyov 
>  [lorenzo.pieral...@arm.com: split commit/updated the commit log]
>  Signed-off-by: Lorenzo Pieralisi 
>  Signed-off-by: Bjorn Helgaas 
>  Reviewed-by: Linus Walleij 
>  [Backport just for the new api which other patches need - gregkh]
>  Signed-off-by: Greg Kroah-Hartman 
> 
>  ---
>   drivers/pci/pci.c   |   38 ++
>   include/linux/pci.h |2 ++
>   2 files changed, 40 insertions(+)
> >>>
> >>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> >>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> 
>s/mode/code/, of course. :-)
> 
> >>> then)...
> >>
> >> Yes I totally messed this up, let me fix it...
> > 
> > Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> > it should now be resolved, but verifying this would be nice :)
> 
>Unfortunately, it doesn't fix anything on R-Car where this bug was 
> originally
> encountered and the fix was tested... and you leave no way for it to be 
> fixed. :-(

Really?  Why not?  What is missing here?

greg k-h


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
>> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
>>> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
>>>
 4.14-stable review patch.  If anyone has any objections, please let me 
 know.

 --

 From: Sergei Shtylyov 

 commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

   kernel BUG at lib/ioremap.c:72!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
   Hardware name: Renesas Condor board based on r8a77980 (DT)
   Workqueue: events deferred_probe_work_func
   pstate: 8005 (Nzcv daif -PAN -UAO)
   pc : ioremap_page_range+0x370/0x3c8
   lr : ioremap_page_range+0x40/0x3c8
   sp : 08da39e0
   x29: 08da39e0 x28: 00e80f07
   x27: 7dfffee0 x26: 0140
   x25: 7dfffef0 x24: 000fe100
   x23: 80007b906000 x22: 08ab8000
   x21: 08bb1d58 x20: 7dfffef0
   x19: 89c30fb8 x18: 0001
   x17: 000152d0 x16: 014012d0
   x15:  x14: 0720072007200720
   x13: 0720072007200720 x12: 0720072007200720
   x11: 0720072007300730 x10: 00ae
   x9 :  x8 : 7d00
   x7 :  x6 : 0100
   x5 :  x4 : 7b906000
   x3 : 80007c61a880 x2 : 7dfffeef
   x1 : 4000 x0 : 00e8fe100f07
   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
   Call trace:
ioremap_page_range+0x370/0x3c8
pci_remap_iospace+0x7c/0xac
pci_parse_request_of_pci_ranges+0x13c/0x190
rcar_pcie_probe+0x4c/0xb04
platform_drv_probe+0x50/0xbc
driver_probe_device+0x21c/0x308
__device_attach_driver+0x98/0xc8
bus_for_each_drv+0x54/0x94
__device_attach+0xc4/0x12c
device_initial_probe+0x10/0x18
bus_probe_device+0x90/0x98
deferred_probe_work_func+0xb0/0x150
process_one_work+0x12c/0x29c
worker_thread+0x200/0x3fc
kthread+0x108/0x134
ret_from_fork+0x10/0x18
   Code: f9004ba2 5480 aa0003fb 1748 (d421)

 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.

 Introduce the devm_pci_remap_iospace() managed API and replace the
 pci_remap_iospace() call with it to fix the bug.

 Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
 Signed-off-by: Sergei Shtylyov 
 [lorenzo.pieral...@arm.com: split commit/updated the commit log]
 Signed-off-by: Lorenzo Pieralisi 
 Signed-off-by: Bjorn Helgaas 
 Reviewed-by: Linus Walleij 
 [Backport just for the new api which other patches need - gregkh]
 Signed-off-by: Greg Kroah-Hartman 

 ---
  drivers/pci/pci.c   |   38 ++
  include/linux/pci.h |2 ++
  2 files changed, 40 insertions(+)
>>>
>>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
>>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back

   s/mode/code/, of course. :-)

>>> then)...
>>
>> Yes I totally messed this up, let me fix it...
> 
> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> it should now be resolved, but verifying this would be nice :)

   Unfortunately, it doesn't fix anything on R-Car where this bug was originally
encountered and the fix was tested... and you leave no way for it to be fixed. 
:-(

> thanks,
> 
> greg k-h
> 
> 
> 
> From a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 Mon Sep 17 00:00:00 2001
> From: Sergei Shtylyov 
> Date: Wed, 18 Jul 2018 15:40:26 -0500
> Subject: PCI: OF: Fix I/O space page leak
> 
> From: Sergei Shtylyov 
> 
> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> driver was left disabled, the kernel crashed with this BUG:
> 
>   kernel BUG at lib/ioremap.c:72!
>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>   Modules linked in:
>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>   Workqueue: events deferred_probe_work_func
>   pstate: 8005 (Nzcv daif -PAN -UAO)
>   pc : ioremap_page_range+0x370/0x3c8
>   lr : 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 02:56 PM, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
>> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
>>> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
>>>
 4.14-stable review patch.  If anyone has any objections, please let me 
 know.

 --

 From: Sergei Shtylyov 

 commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

   kernel BUG at lib/ioremap.c:72!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
   Hardware name: Renesas Condor board based on r8a77980 (DT)
   Workqueue: events deferred_probe_work_func
   pstate: 8005 (Nzcv daif -PAN -UAO)
   pc : ioremap_page_range+0x370/0x3c8
   lr : ioremap_page_range+0x40/0x3c8
   sp : 08da39e0
   x29: 08da39e0 x28: 00e80f07
   x27: 7dfffee0 x26: 0140
   x25: 7dfffef0 x24: 000fe100
   x23: 80007b906000 x22: 08ab8000
   x21: 08bb1d58 x20: 7dfffef0
   x19: 89c30fb8 x18: 0001
   x17: 000152d0 x16: 014012d0
   x15:  x14: 0720072007200720
   x13: 0720072007200720 x12: 0720072007200720
   x11: 0720072007300730 x10: 00ae
   x9 :  x8 : 7d00
   x7 :  x6 : 0100
   x5 :  x4 : 7b906000
   x3 : 80007c61a880 x2 : 7dfffeef
   x1 : 4000 x0 : 00e8fe100f07
   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
   Call trace:
ioremap_page_range+0x370/0x3c8
pci_remap_iospace+0x7c/0xac
pci_parse_request_of_pci_ranges+0x13c/0x190
rcar_pcie_probe+0x4c/0xb04
platform_drv_probe+0x50/0xbc
driver_probe_device+0x21c/0x308
__device_attach_driver+0x98/0xc8
bus_for_each_drv+0x54/0x94
__device_attach+0xc4/0x12c
device_initial_probe+0x10/0x18
bus_probe_device+0x90/0x98
deferred_probe_work_func+0xb0/0x150
process_one_work+0x12c/0x29c
worker_thread+0x200/0x3fc
kthread+0x108/0x134
ret_from_fork+0x10/0x18
   Code: f9004ba2 5480 aa0003fb 1748 (d421)

 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.

 Introduce the devm_pci_remap_iospace() managed API and replace the
 pci_remap_iospace() call with it to fix the bug.

 Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
 Signed-off-by: Sergei Shtylyov 
 [lorenzo.pieral...@arm.com: split commit/updated the commit log]
 Signed-off-by: Lorenzo Pieralisi 
 Signed-off-by: Bjorn Helgaas 
 Reviewed-by: Linus Walleij 
 [Backport just for the new api which other patches need - gregkh]
 Signed-off-by: Greg Kroah-Hartman 

 ---
  drivers/pci/pci.c   |   38 ++
  include/linux/pci.h |2 ++
  2 files changed, 40 insertions(+)
>>>
>>>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
>>> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back

   s/mode/code/, of course. :-)

>>> then)...
>>
>> Yes I totally messed this up, let me fix it...
> 
> Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
> it should now be resolved, but verifying this would be nice :)

   Unfortunately, it doesn't fix anything on R-Car where this bug was originally
encountered and the fix was tested... and you leave no way for it to be fixed. 
:-(

> thanks,
> 
> greg k-h
> 
> 
> 
> From a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 Mon Sep 17 00:00:00 2001
> From: Sergei Shtylyov 
> Date: Wed, 18 Jul 2018 15:40:26 -0500
> Subject: PCI: OF: Fix I/O space page leak
> 
> From: Sergei Shtylyov 
> 
> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> driver was left disabled, the kernel crashed with this BUG:
> 
>   kernel BUG at lib/ioremap.c:72!
>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>   Modules linked in:
>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>   Workqueue: events deferred_probe_work_func
>   pstate: 8005 (Nzcv daif -PAN -UAO)
>   pc : ioremap_page_range+0x370/0x3c8
>   lr : 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> > On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> > 
> > > 4.14-stable review patch.  If anyone has any objections, please let me 
> > > know.
> > > 
> > > --
> > > 
> > > From: Sergei Shtylyov 
> > > 
> > > commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> > > 
> > > When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> > > driver was left disabled, the kernel crashed with this BUG:
> > > 
> > >   kernel BUG at lib/ioremap.c:72!
> > >   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> > >   Modules linked in:
> > >   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> > >   Hardware name: Renesas Condor board based on r8a77980 (DT)
> > >   Workqueue: events deferred_probe_work_func
> > >   pstate: 8005 (Nzcv daif -PAN -UAO)
> > >   pc : ioremap_page_range+0x370/0x3c8
> > >   lr : ioremap_page_range+0x40/0x3c8
> > >   sp : 08da39e0
> > >   x29: 08da39e0 x28: 00e80f07
> > >   x27: 7dfffee0 x26: 0140
> > >   x25: 7dfffef0 x24: 000fe100
> > >   x23: 80007b906000 x22: 08ab8000
> > >   x21: 08bb1d58 x20: 7dfffef0
> > >   x19: 89c30fb8 x18: 0001
> > >   x17: 000152d0 x16: 014012d0
> > >   x15:  x14: 0720072007200720
> > >   x13: 0720072007200720 x12: 0720072007200720
> > >   x11: 0720072007300730 x10: 00ae
> > >   x9 :  x8 : 7d00
> > >   x7 :  x6 : 0100
> > >   x5 :  x4 : 7b906000
> > >   x3 : 80007c61a880 x2 : 7dfffeef
> > >   x1 : 4000 x0 : 00e8fe100f07
> > >   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> > >   Call trace:
> > >ioremap_page_range+0x370/0x3c8
> > >pci_remap_iospace+0x7c/0xac
> > >pci_parse_request_of_pci_ranges+0x13c/0x190
> > >rcar_pcie_probe+0x4c/0xb04
> > >platform_drv_probe+0x50/0xbc
> > >driver_probe_device+0x21c/0x308
> > >__device_attach_driver+0x98/0xc8
> > >bus_for_each_drv+0x54/0x94
> > >__device_attach+0xc4/0x12c
> > >device_initial_probe+0x10/0x18
> > >bus_probe_device+0x90/0x98
> > >deferred_probe_work_func+0xb0/0x150
> > >process_one_work+0x12c/0x29c
> > >worker_thread+0x200/0x3fc
> > >kthread+0x108/0x134
> > >ret_from_fork+0x10/0x18
> > >   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> > > 
> > > 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.
> > > 
> > > Introduce the devm_pci_remap_iospace() managed API and replace the
> > > pci_remap_iospace() call with it to fix the bug.
> > > 
> > > Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> > > Signed-off-by: Sergei Shtylyov 
> > > [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> > > Signed-off-by: Lorenzo Pieralisi 
> > > Signed-off-by: Bjorn Helgaas 
> > > Reviewed-by: Linus Walleij 
> > > [Backport just for the new api which other patches need - gregkh]
> > > Signed-off-by: Greg Kroah-Hartman 
> > > 
> > > ---
> > >  drivers/pci/pci.c   |   38 ++
> > >  include/linux/pci.h |2 ++
> > >  2 files changed, 40 insertions(+)
> > 
> >   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> > also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> > then)...
> 
> Yes I totally messed this up, let me fix it...

Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
it should now be resolved, but verifying this would be nice :)

thanks,

greg k-h



>From a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 Mon Sep 17 00:00:00 2001
From: Sergei Shtylyov 
Date: Wed, 18 Jul 2018 15:40:26 -0500
Subject: PCI: OF: Fix I/O space page leak

From: Sergei Shtylyov 

commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

  kernel BUG at lib/ioremap.c:72!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
  Modules linked in:
  CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
  Hardware name: Renesas Condor board based on r8a77980 (DT)
  Workqueue: events deferred_probe_work_func
  pstate: 8005 (Nzcv daif -PAN -UAO)
  pc : ioremap_page_range+0x370/0x3c8
  lr : ioremap_page_range+0x40/0x3c8
  sp : 08da39e0
  x29: 08da39e0 x28: 00e80f07
  x27: 7dfffee0 x26: 0140
  x25: 7dfffef0 x24: 000fe100
  x23: 80007b906000 x22: 08ab8000
  x21: 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 01:17:28PM +0200, Greg Kroah-Hartman wrote:
> On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> > On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> > 
> > > 4.14-stable review patch.  If anyone has any objections, please let me 
> > > know.
> > > 
> > > --
> > > 
> > > From: Sergei Shtylyov 
> > > 
> > > commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> > > 
> > > When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> > > driver was left disabled, the kernel crashed with this BUG:
> > > 
> > >   kernel BUG at lib/ioremap.c:72!
> > >   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> > >   Modules linked in:
> > >   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> > >   Hardware name: Renesas Condor board based on r8a77980 (DT)
> > >   Workqueue: events deferred_probe_work_func
> > >   pstate: 8005 (Nzcv daif -PAN -UAO)
> > >   pc : ioremap_page_range+0x370/0x3c8
> > >   lr : ioremap_page_range+0x40/0x3c8
> > >   sp : 08da39e0
> > >   x29: 08da39e0 x28: 00e80f07
> > >   x27: 7dfffee0 x26: 0140
> > >   x25: 7dfffef0 x24: 000fe100
> > >   x23: 80007b906000 x22: 08ab8000
> > >   x21: 08bb1d58 x20: 7dfffef0
> > >   x19: 89c30fb8 x18: 0001
> > >   x17: 000152d0 x16: 014012d0
> > >   x15:  x14: 0720072007200720
> > >   x13: 0720072007200720 x12: 0720072007200720
> > >   x11: 0720072007300730 x10: 00ae
> > >   x9 :  x8 : 7d00
> > >   x7 :  x6 : 0100
> > >   x5 :  x4 : 7b906000
> > >   x3 : 80007c61a880 x2 : 7dfffeef
> > >   x1 : 4000 x0 : 00e8fe100f07
> > >   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> > >   Call trace:
> > >ioremap_page_range+0x370/0x3c8
> > >pci_remap_iospace+0x7c/0xac
> > >pci_parse_request_of_pci_ranges+0x13c/0x190
> > >rcar_pcie_probe+0x4c/0xb04
> > >platform_drv_probe+0x50/0xbc
> > >driver_probe_device+0x21c/0x308
> > >__device_attach_driver+0x98/0xc8
> > >bus_for_each_drv+0x54/0x94
> > >__device_attach+0xc4/0x12c
> > >device_initial_probe+0x10/0x18
> > >bus_probe_device+0x90/0x98
> > >deferred_probe_work_func+0xb0/0x150
> > >process_one_work+0x12c/0x29c
> > >worker_thread+0x200/0x3fc
> > >kthread+0x108/0x134
> > >ret_from_fork+0x10/0x18
> > >   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> > > 
> > > 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.
> > > 
> > > Introduce the devm_pci_remap_iospace() managed API and replace the
> > > pci_remap_iospace() call with it to fix the bug.
> > > 
> > > Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> > > Signed-off-by: Sergei Shtylyov 
> > > [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> > > Signed-off-by: Lorenzo Pieralisi 
> > > Signed-off-by: Bjorn Helgaas 
> > > Reviewed-by: Linus Walleij 
> > > [Backport just for the new api which other patches need - gregkh]
> > > Signed-off-by: Greg Kroah-Hartman 
> > > 
> > > ---
> > >  drivers/pci/pci.c   |   38 ++
> > >  include/linux/pci.h |2 ++
> > >  2 files changed, 40 insertions(+)
> > 
> >   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> > also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> > then)...
> 
> Yes I totally messed this up, let me fix it...

Ok, below is the patch that I replaced the 4.14 and 4.9 versions with,
it should now be resolved, but verifying this would be nice :)

thanks,

greg k-h



>From a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 Mon Sep 17 00:00:00 2001
From: Sergei Shtylyov 
Date: Wed, 18 Jul 2018 15:40:26 -0500
Subject: PCI: OF: Fix I/O space page leak

From: Sergei Shtylyov 

commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

  kernel BUG at lib/ioremap.c:72!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
  Modules linked in:
  CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
  Hardware name: Renesas Condor board based on r8a77980 (DT)
  Workqueue: events deferred_probe_work_func
  pstate: 8005 (Nzcv daif -PAN -UAO)
  pc : ioremap_page_range+0x370/0x3c8
  lr : ioremap_page_range+0x40/0x3c8
  sp : 08da39e0
  x29: 08da39e0 x28: 00e80f07
  x27: 7dfffee0 x26: 0140
  x25: 7dfffef0 x24: 000fe100
  x23: 80007b906000 x22: 08ab8000
  x21: 

Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> 
> > 4.14-stable review patch.  If anyone has any objections, please let me know.
> > 
> > --
> > 
> > From: Sergei Shtylyov 
> > 
> > commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> > 
> > When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> > driver was left disabled, the kernel crashed with this BUG:
> > 
> >   kernel BUG at lib/ioremap.c:72!
> >   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> >   Modules linked in:
> >   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> >   Hardware name: Renesas Condor board based on r8a77980 (DT)
> >   Workqueue: events deferred_probe_work_func
> >   pstate: 8005 (Nzcv daif -PAN -UAO)
> >   pc : ioremap_page_range+0x370/0x3c8
> >   lr : ioremap_page_range+0x40/0x3c8
> >   sp : 08da39e0
> >   x29: 08da39e0 x28: 00e80f07
> >   x27: 7dfffee0 x26: 0140
> >   x25: 7dfffef0 x24: 000fe100
> >   x23: 80007b906000 x22: 08ab8000
> >   x21: 08bb1d58 x20: 7dfffef0
> >   x19: 89c30fb8 x18: 0001
> >   x17: 000152d0 x16: 014012d0
> >   x15:  x14: 0720072007200720
> >   x13: 0720072007200720 x12: 0720072007200720
> >   x11: 0720072007300730 x10: 00ae
> >   x9 :  x8 : 7d00
> >   x7 :  x6 : 0100
> >   x5 :  x4 : 7b906000
> >   x3 : 80007c61a880 x2 : 7dfffeef
> >   x1 : 4000 x0 : 00e8fe100f07
> >   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> >   Call trace:
> >ioremap_page_range+0x370/0x3c8
> >pci_remap_iospace+0x7c/0xac
> >pci_parse_request_of_pci_ranges+0x13c/0x190
> >rcar_pcie_probe+0x4c/0xb04
> >platform_drv_probe+0x50/0xbc
> >driver_probe_device+0x21c/0x308
> >__device_attach_driver+0x98/0xc8
> >bus_for_each_drv+0x54/0x94
> >__device_attach+0xc4/0x12c
> >device_initial_probe+0x10/0x18
> >bus_probe_device+0x90/0x98
> >deferred_probe_work_func+0xb0/0x150
> >process_one_work+0x12c/0x29c
> >worker_thread+0x200/0x3fc
> >kthread+0x108/0x134
> >ret_from_fork+0x10/0x18
> >   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> > 
> > 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.
> > 
> > Introduce the devm_pci_remap_iospace() managed API and replace the
> > pci_remap_iospace() call with it to fix the bug.
> > 
> > Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> > Signed-off-by: Sergei Shtylyov 
> > [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> > Signed-off-by: Lorenzo Pieralisi 
> > Signed-off-by: Bjorn Helgaas 
> > Reviewed-by: Linus Walleij 
> > [Backport just for the new api which other patches need - gregkh]
> > Signed-off-by: Greg Kroah-Hartman 
> > 
> > ---
> >  drivers/pci/pci.c   |   38 ++
> >  include/linux/pci.h |2 ++
> >  2 files changed, 40 insertions(+)
> 
>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> then)...

Yes I totally messed this up, let me fix it...


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
On Thu, Aug 23, 2018 at 01:57:35PM +0300, Sergei Shtylyov wrote:
> On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:
> 
> > 4.14-stable review patch.  If anyone has any objections, please let me know.
> > 
> > --
> > 
> > From: Sergei Shtylyov 
> > 
> > commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> > 
> > When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> > driver was left disabled, the kernel crashed with this BUG:
> > 
> >   kernel BUG at lib/ioremap.c:72!
> >   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
> >   Modules linked in:
> >   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
> >   Hardware name: Renesas Condor board based on r8a77980 (DT)
> >   Workqueue: events deferred_probe_work_func
> >   pstate: 8005 (Nzcv daif -PAN -UAO)
> >   pc : ioremap_page_range+0x370/0x3c8
> >   lr : ioremap_page_range+0x40/0x3c8
> >   sp : 08da39e0
> >   x29: 08da39e0 x28: 00e80f07
> >   x27: 7dfffee0 x26: 0140
> >   x25: 7dfffef0 x24: 000fe100
> >   x23: 80007b906000 x22: 08ab8000
> >   x21: 08bb1d58 x20: 7dfffef0
> >   x19: 89c30fb8 x18: 0001
> >   x17: 000152d0 x16: 014012d0
> >   x15:  x14: 0720072007200720
> >   x13: 0720072007200720 x12: 0720072007200720
> >   x11: 0720072007300730 x10: 00ae
> >   x9 :  x8 : 7d00
> >   x7 :  x6 : 0100
> >   x5 :  x4 : 7b906000
> >   x3 : 80007c61a880 x2 : 7dfffeef
> >   x1 : 4000 x0 : 00e8fe100f07
> >   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
> >   Call trace:
> >ioremap_page_range+0x370/0x3c8
> >pci_remap_iospace+0x7c/0xac
> >pci_parse_request_of_pci_ranges+0x13c/0x190
> >rcar_pcie_probe+0x4c/0xb04
> >platform_drv_probe+0x50/0xbc
> >driver_probe_device+0x21c/0x308
> >__device_attach_driver+0x98/0xc8
> >bus_for_each_drv+0x54/0x94
> >__device_attach+0xc4/0x12c
> >device_initial_probe+0x10/0x18
> >bus_probe_device+0x90/0x98
> >deferred_probe_work_func+0xb0/0x150
> >process_one_work+0x12c/0x29c
> >worker_thread+0x200/0x3fc
> >kthread+0x108/0x134
> >ret_from_fork+0x10/0x18
> >   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> > 
> > 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.
> > 
> > Introduce the devm_pci_remap_iospace() managed API and replace the
> > pci_remap_iospace() call with it to fix the bug.
> > 
> > Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> > Signed-off-by: Sergei Shtylyov 
> > [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> > Signed-off-by: Lorenzo Pieralisi 
> > Signed-off-by: Bjorn Helgaas 
> > Reviewed-by: Linus Walleij 
> > [Backport just for the new api which other patches need - gregkh]
> > Signed-off-by: Greg Kroah-Hartman 
> > 
> > ---
> >  drivers/pci/pci.c   |   38 ++
> >  include/linux/pci.h |2 ++
> >  2 files changed, 40 insertions(+)
> 
>   You missed a chnage to drivers/pci/host/pci-host-common.c (and 
> also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
> then)...

Yes I totally messed this up, let me fix it...


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:

> 4.14-stable review patch.  If anyone has any objections, please let me know.
> 
> --
> 
> From: Sergei Shtylyov 
> 
> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> driver was left disabled, the kernel crashed with this BUG:
> 
>   kernel BUG at lib/ioremap.c:72!
>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>   Modules linked in:
>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>   Workqueue: events deferred_probe_work_func
>   pstate: 8005 (Nzcv daif -PAN -UAO)
>   pc : ioremap_page_range+0x370/0x3c8
>   lr : ioremap_page_range+0x40/0x3c8
>   sp : 08da39e0
>   x29: 08da39e0 x28: 00e80f07
>   x27: 7dfffee0 x26: 0140
>   x25: 7dfffef0 x24: 000fe100
>   x23: 80007b906000 x22: 08ab8000
>   x21: 08bb1d58 x20: 7dfffef0
>   x19: 89c30fb8 x18: 0001
>   x17: 000152d0 x16: 014012d0
>   x15:  x14: 0720072007200720
>   x13: 0720072007200720 x12: 0720072007200720
>   x11: 0720072007300730 x10: 00ae
>   x9 :  x8 : 7d00
>   x7 :  x6 : 0100
>   x5 :  x4 : 7b906000
>   x3 : 80007c61a880 x2 : 7dfffeef
>   x1 : 4000 x0 : 00e8fe100f07
>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>   Call trace:
>ioremap_page_range+0x370/0x3c8
>pci_remap_iospace+0x7c/0xac
>pci_parse_request_of_pci_ranges+0x13c/0x190
>rcar_pcie_probe+0x4c/0xb04
>platform_drv_probe+0x50/0xbc
>driver_probe_device+0x21c/0x308
>__device_attach_driver+0x98/0xc8
>bus_for_each_drv+0x54/0x94
>__device_attach+0xc4/0x12c
>device_initial_probe+0x10/0x18
>bus_probe_device+0x90/0x98
>deferred_probe_work_func+0xb0/0x150
>process_one_work+0x12c/0x29c
>worker_thread+0x200/0x3fc
>kthread+0x108/0x134
>ret_from_fork+0x10/0x18
>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> 
> 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.
> 
> Introduce the devm_pci_remap_iospace() managed API and replace the
> pci_remap_iospace() call with it to fix the bug.
> 
> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> Signed-off-by: Sergei Shtylyov 
> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> Signed-off-by: Lorenzo Pieralisi 
> Signed-off-by: Bjorn Helgaas 
> Reviewed-by: Linus Walleij 
> [Backport just for the new api which other patches need - gregkh]
> Signed-off-by: Greg Kroah-Hartman 
> 
> ---
>  drivers/pci/pci.c   |   38 ++
>  include/linux/pci.h |2 ++
>  2 files changed, 40 insertions(+)

  You missed a chnage to drivers/pci/host/pci-host-common.c (and 
also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
then)...

[...]

MBR, Sergei


Re: [PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Sergei Shtylyov
On 08/23/2018 10:55 AM, Greg Kroah-Hartman wrote:

> 4.14-stable review patch.  If anyone has any objections, please let me know.
> 
> --
> 
> From: Sergei Shtylyov 
> 
> commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.
> 
> When testing the R-Car PCIe driver on the Condor board, if the PCIe PHY
> driver was left disabled, the kernel crashed with this BUG:
> 
>   kernel BUG at lib/ioremap.c:72!
>   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
>   Modules linked in:
>   CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
>   Hardware name: Renesas Condor board based on r8a77980 (DT)
>   Workqueue: events deferred_probe_work_func
>   pstate: 8005 (Nzcv daif -PAN -UAO)
>   pc : ioremap_page_range+0x370/0x3c8
>   lr : ioremap_page_range+0x40/0x3c8
>   sp : 08da39e0
>   x29: 08da39e0 x28: 00e80f07
>   x27: 7dfffee0 x26: 0140
>   x25: 7dfffef0 x24: 000fe100
>   x23: 80007b906000 x22: 08ab8000
>   x21: 08bb1d58 x20: 7dfffef0
>   x19: 89c30fb8 x18: 0001
>   x17: 000152d0 x16: 014012d0
>   x15:  x14: 0720072007200720
>   x13: 0720072007200720 x12: 0720072007200720
>   x11: 0720072007300730 x10: 00ae
>   x9 :  x8 : 7d00
>   x7 :  x6 : 0100
>   x5 :  x4 : 7b906000
>   x3 : 80007c61a880 x2 : 7dfffeef
>   x1 : 4000 x0 : 00e8fe100f07
>   Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
>   Call trace:
>ioremap_page_range+0x370/0x3c8
>pci_remap_iospace+0x7c/0xac
>pci_parse_request_of_pci_ranges+0x13c/0x190
>rcar_pcie_probe+0x4c/0xb04
>platform_drv_probe+0x50/0xbc
>driver_probe_device+0x21c/0x308
>__device_attach_driver+0x98/0xc8
>bus_for_each_drv+0x54/0x94
>__device_attach+0xc4/0x12c
>device_initial_probe+0x10/0x18
>bus_probe_device+0x90/0x98
>deferred_probe_work_func+0xb0/0x150
>process_one_work+0x12c/0x29c
>worker_thread+0x200/0x3fc
>kthread+0x108/0x134
>ret_from_fork+0x10/0x18
>   Code: f9004ba2 5480 aa0003fb 1748 (d421)
> 
> 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.
> 
> Introduce the devm_pci_remap_iospace() managed API and replace the
> pci_remap_iospace() call with it to fix the bug.
> 
> Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
> Signed-off-by: Sergei Shtylyov 
> [lorenzo.pieral...@arm.com: split commit/updated the commit log]
> Signed-off-by: Lorenzo Pieralisi 
> Signed-off-by: Bjorn Helgaas 
> Reviewed-by: Linus Walleij 
> [Backport just for the new api which other patches need - gregkh]
> Signed-off-by: Greg Kroah-Hartman 
> 
> ---
>  drivers/pci/pci.c   |   38 ++
>  include/linux/pci.h |2 ++
>  2 files changed, 40 insertions(+)

  You missed a chnage to drivers/pci/host/pci-host-common.c (and 
also drivers/pci/host/pcie-rcar.c which wasn't using the generic mode back
then)...

[...]

MBR, Sergei


[PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Sergei Shtylyov 

commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

  kernel BUG at lib/ioremap.c:72!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
  Modules linked in:
  CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
  Hardware name: Renesas Condor board based on r8a77980 (DT)
  Workqueue: events deferred_probe_work_func
  pstate: 8005 (Nzcv daif -PAN -UAO)
  pc : ioremap_page_range+0x370/0x3c8
  lr : ioremap_page_range+0x40/0x3c8
  sp : 08da39e0
  x29: 08da39e0 x28: 00e80f07
  x27: 7dfffee0 x26: 0140
  x25: 7dfffef0 x24: 000fe100
  x23: 80007b906000 x22: 08ab8000
  x21: 08bb1d58 x20: 7dfffef0
  x19: 89c30fb8 x18: 0001
  x17: 000152d0 x16: 014012d0
  x15:  x14: 0720072007200720
  x13: 0720072007200720 x12: 0720072007200720
  x11: 0720072007300730 x10: 00ae
  x9 :  x8 : 7d00
  x7 :  x6 : 0100
  x5 :  x4 : 7b906000
  x3 : 80007c61a880 x2 : 7dfffeef
  x1 : 4000 x0 : 00e8fe100f07
  Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
  Call trace:
   ioremap_page_range+0x370/0x3c8
   pci_remap_iospace+0x7c/0xac
   pci_parse_request_of_pci_ranges+0x13c/0x190
   rcar_pcie_probe+0x4c/0xb04
   platform_drv_probe+0x50/0xbc
   driver_probe_device+0x21c/0x308
   __device_attach_driver+0x98/0xc8
   bus_for_each_drv+0x54/0x94
   __device_attach+0xc4/0x12c
   device_initial_probe+0x10/0x18
   bus_probe_device+0x90/0x98
   deferred_probe_work_func+0xb0/0x150
   process_one_work+0x12c/0x29c
   worker_thread+0x200/0x3fc
   kthread+0x108/0x134
   ret_from_fork+0x10/0x18
  Code: f9004ba2 5480 aa0003fb 1748 (d421)

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.

Introduce the devm_pci_remap_iospace() managed API and replace the
pci_remap_iospace() call with it to fix the bug.

Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
Signed-off-by: Sergei Shtylyov 
[lorenzo.pieral...@arm.com: split commit/updated the commit log]
Signed-off-by: Lorenzo Pieralisi 
Signed-off-by: Bjorn Helgaas 
Reviewed-by: Linus Walleij 
[Backport just for the new api which other patches need - gregkh]
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/pci/pci.c   |   38 ++
 include/linux/pci.h |2 ++
 2 files changed, 40 insertions(+)

--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3446,6 +3446,44 @@ void pci_unmap_iospace(struct resource *
 }
 EXPORT_SYMBOL(pci_unmap_iospace);
 
+static void devm_pci_unmap_iospace(struct device *dev, void *ptr)
+{
+   struct resource **res = ptr;
+
+   pci_unmap_iospace(*res);
+}
+
+/**
+ * devm_pci_remap_iospace - Managed pci_remap_iospace()
+ * @dev: Generic device to remap IO address for
+ * @res: Resource describing the I/O space
+ * @phys_addr: physical address of range to be mapped
+ *
+ * Managed pci_remap_iospace().  Map is automatically unmapped on driver
+ * detach.
+ */
+int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
+  phys_addr_t phys_addr)
+{
+   const struct resource **ptr;
+   int error;
+
+   ptr = devres_alloc(devm_pci_unmap_iospace, sizeof(*ptr), GFP_KERNEL);
+   if (!ptr)
+   return -ENOMEM;
+
+   error = pci_remap_iospace(res, phys_addr);
+   if (error) {
+   devres_free(ptr);
+   } else  {
+   *ptr = res;
+   devres_add(dev, ptr);
+   }
+
+   return error;
+}
+EXPORT_SYMBOL(devm_pci_remap_iospace);
+
 /**
  * devm_pci_remap_cfgspace - Managed pci_remap_cfgspace()
  * @dev: Generic device to remap IO address for
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1235,6 +1235,8 @@ int pci_register_io_range(phys_addr_t ad
 unsigned long pci_address_to_pio(phys_addr_t addr);
 phys_addr_t pci_pio_to_address(unsigned long pio);
 int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
+int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
+  phys_addr_t phys_addr);
 void pci_unmap_iospace(struct resource *res);
 void __iomem *devm_pci_remap_cfgspace(struct device *dev,
  resource_size_t offset,




[PATCH 4.14 210/217] PCI: OF: Fix I/O space page leak

2018-08-23 Thread Greg Kroah-Hartman
4.14-stable review patch.  If anyone has any objections, please let me know.

--

From: Sergei Shtylyov 

commit a5fb9fb023a1435f2b42bccd7f547560f3a21dc3 upstream.

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

  kernel BUG at lib/ioremap.c:72!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
  Modules linked in:
  CPU: 0 PID: 39 Comm: kworker/0:1 Not tainted 4.17.0-dirty #1092
  Hardware name: Renesas Condor board based on r8a77980 (DT)
  Workqueue: events deferred_probe_work_func
  pstate: 8005 (Nzcv daif -PAN -UAO)
  pc : ioremap_page_range+0x370/0x3c8
  lr : ioremap_page_range+0x40/0x3c8
  sp : 08da39e0
  x29: 08da39e0 x28: 00e80f07
  x27: 7dfffee0 x26: 0140
  x25: 7dfffef0 x24: 000fe100
  x23: 80007b906000 x22: 08ab8000
  x21: 08bb1d58 x20: 7dfffef0
  x19: 89c30fb8 x18: 0001
  x17: 000152d0 x16: 014012d0
  x15:  x14: 0720072007200720
  x13: 0720072007200720 x12: 0720072007200720
  x11: 0720072007300730 x10: 00ae
  x9 :  x8 : 7d00
  x7 :  x6 : 0100
  x5 :  x4 : 7b906000
  x3 : 80007c61a880 x2 : 7dfffeef
  x1 : 4000 x0 : 00e8fe100f07
  Process kworker/0:1 (pid: 39, stack limit = 0x(ptrval))
  Call trace:
   ioremap_page_range+0x370/0x3c8
   pci_remap_iospace+0x7c/0xac
   pci_parse_request_of_pci_ranges+0x13c/0x190
   rcar_pcie_probe+0x4c/0xb04
   platform_drv_probe+0x50/0xbc
   driver_probe_device+0x21c/0x308
   __device_attach_driver+0x98/0xc8
   bus_for_each_drv+0x54/0x94
   __device_attach+0xc4/0x12c
   device_initial_probe+0x10/0x18
   bus_probe_device+0x90/0x98
   deferred_probe_work_func+0xb0/0x150
   process_one_work+0x12c/0x29c
   worker_thread+0x200/0x3fc
   kthread+0x108/0x134
   ret_from_fork+0x10/0x18
  Code: f9004ba2 5480 aa0003fb 1748 (d421)

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.

Introduce the devm_pci_remap_iospace() managed API and replace the
pci_remap_iospace() call with it to fix the bug.

Fixes: dbf9826d5797 ("PCI: generic: Convert to DT resource parsing API")
Signed-off-by: Sergei Shtylyov 
[lorenzo.pieral...@arm.com: split commit/updated the commit log]
Signed-off-by: Lorenzo Pieralisi 
Signed-off-by: Bjorn Helgaas 
Reviewed-by: Linus Walleij 
[Backport just for the new api which other patches need - gregkh]
Signed-off-by: Greg Kroah-Hartman 

---
 drivers/pci/pci.c   |   38 ++
 include/linux/pci.h |2 ++
 2 files changed, 40 insertions(+)

--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3446,6 +3446,44 @@ void pci_unmap_iospace(struct resource *
 }
 EXPORT_SYMBOL(pci_unmap_iospace);
 
+static void devm_pci_unmap_iospace(struct device *dev, void *ptr)
+{
+   struct resource **res = ptr;
+
+   pci_unmap_iospace(*res);
+}
+
+/**
+ * devm_pci_remap_iospace - Managed pci_remap_iospace()
+ * @dev: Generic device to remap IO address for
+ * @res: Resource describing the I/O space
+ * @phys_addr: physical address of range to be mapped
+ *
+ * Managed pci_remap_iospace().  Map is automatically unmapped on driver
+ * detach.
+ */
+int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
+  phys_addr_t phys_addr)
+{
+   const struct resource **ptr;
+   int error;
+
+   ptr = devres_alloc(devm_pci_unmap_iospace, sizeof(*ptr), GFP_KERNEL);
+   if (!ptr)
+   return -ENOMEM;
+
+   error = pci_remap_iospace(res, phys_addr);
+   if (error) {
+   devres_free(ptr);
+   } else  {
+   *ptr = res;
+   devres_add(dev, ptr);
+   }
+
+   return error;
+}
+EXPORT_SYMBOL(devm_pci_remap_iospace);
+
 /**
  * devm_pci_remap_cfgspace - Managed pci_remap_cfgspace()
  * @dev: Generic device to remap IO address for
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1235,6 +1235,8 @@ int pci_register_io_range(phys_addr_t ad
 unsigned long pci_address_to_pio(phys_addr_t addr);
 phys_addr_t pci_pio_to_address(unsigned long pio);
 int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
+int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
+  phys_addr_t phys_addr);
 void pci_unmap_iospace(struct resource *res);
 void __iomem *devm_pci_remap_cfgspace(struct device *dev,
  resource_size_t offset,