Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1343529 > unrolled thread
| Started by | Murali Karicheri <m-karicheri2@ti.com> |
|---|---|
| First post | 2016-02-25 23:30 +0100 |
| Last post | 2016-02-29 16:10 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] PCI: keystone: fix msi code that retrieves the pp struct ptr Murali Karicheri <m-karicheri2@ti.com> - 2016-02-25 23:30 +0100
Re: [PATCH] PCI: keystone: fix msi code that retrieves the pp struct ptr Greg KH <gregkh@linuxfoundation.org> - 2016-02-26 01:20 +0100
Re: [PATCH] PCI: keystone: fix msi code that retrieves the pp struct ptr Murali Karicheri <m-karicheri2@ti.com> - 2016-02-29 16:10 +0100
| From | Murali Karicheri <m-karicheri2@ti.com> |
|---|---|
| Date | 2016-02-25 23:30 +0100 |
| Subject | [PATCH] PCI: keystone: fix msi code that retrieves the pp struct ptr |
| Message-ID | <r6cA1-22u-5@gated-at.bofh.it> |
Recent update to pcie-designware core driver,
commit "cbce79005 PCI: designware: Make driver arch-agnostic" broke the
keystone PCI driver. This is because, the way pp struct ptr is retrieved
from msi desc has changed and require similar update in pci-keystone-dw.c
as well. This patch fix this issue. Here is the early boot crash log seen
on K2E EVM.
[ 1.012999] pci 0000:00:00.0: PCI bridge to [bus 01]
[ 1.018073] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff]
[ 1.024308] pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff]
[ 1.031216] pci 0000:00:00.0: bridge window [mem 0x60100000-0x601fffff
pref]
[ 1.038736] Unable to handle kernel NULL pointer dereference at virtual
address 00000030
[ 1.046950] pgd = c0003000
[ 1.049750] [00000030] *pgd=80000800004003, *pmd=00000000
[ 1.055265] Internal error: Oops: 206 [#1] PREEMPT SMP ARM
[ 1.060860] Modules linked in:
[ 1.064013] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.2-00139-gb74f926 #2
[ 1.071266] Hardware name: Keystone
[ 1.074853] task: eb888000 ti: eb890000 task.ti: eb890000
[ 1.080364] PC is at ks_dw_pcie_msi_irq_unmask+0x24/0x58
[ 1.085785] LR is at ks_dw_pcie_msi_irq_unmask+0x18/0x58
[ 1.091206] pc : [<c02f65c8>] lr : [<c02f65bc>] psr: 60000093
[ 1.091206] sp : eb891bc8 ip : 00000000 fp : ebb15010
[ 1.102915] r10: 00000051 r9 : 60000013 r8 : ebafaa20
[ 1.108247] r7 : ebaa9f80 r6 : eb9fd0c0 r5 : ebafa9d0 r4 : ebafa9c0
[ 1.114889] r3 : 00000051 r2 : 00000000 r1 : 00000001 r0 : ebb14c18
[ 1.121533] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment
kernel
[ 1.129049] Control: 30c5387d Table: 00003000 DAC: fffffffd
[ 1.134905] Process swapper/0 (pid: 1, stack limit = 0xeb890210)
[ 1.141023] Stack: (0xeb891bc8 to 0xeb892000)
Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
- Need this fix in 4.4.4 as well
drivers/pci/host/pci-keystone-dw.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/pci/host/pci-keystone-dw.c b/drivers/pci/host/pci-keystone-dw.c
index ed34c95..6153853 100644
--- a/drivers/pci/host/pci-keystone-dw.c
+++ b/drivers/pci/host/pci-keystone-dw.c
@@ -58,11 +58,6 @@
#define to_keystone_pcie(x) container_of(x, struct keystone_pcie, pp)
-static inline struct pcie_port *sys_to_pcie(struct pci_sys_data *sys)
-{
- return sys->private_data;
-}
-
static inline void update_reg_offset_bit_pos(u32 offset, u32 *reg_offset,
u32 *bit_pos)
{
@@ -108,7 +103,7 @@ static void ks_dw_pcie_msi_irq_ack(struct irq_data *d)
struct pcie_port *pp;
msi = irq_data_get_msi_desc(d);
- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi));
+ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
ks_pcie = to_keystone_pcie(pp);
offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
update_reg_offset_bit_pos(offset, ®_offset, &bit_pos);
@@ -146,7 +141,7 @@ static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
u32 offset;
msi = irq_data_get_msi_desc(d);
- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi));
+ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
ks_pcie = to_keystone_pcie(pp);
offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
@@ -167,7 +162,7 @@ static void ks_dw_pcie_msi_irq_unmask(struct irq_data *d)
u32 offset;
msi = irq_data_get_msi_desc(d);
- pp = sys_to_pcie(msi_desc_to_pci_sysdata(msi));
+ pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
ks_pcie = to_keystone_pcie(pp);
offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
--
1.9.1
[toc] | [next] | [standalone]
| From | Greg KH <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2016-02-26 01:20 +0100 |
| Message-ID | <r6eiv-3m0-31@gated-at.bofh.it> |
| In reply to | #1343529 |
On Thu, Feb 25, 2016 at 05:23:04PM -0500, Murali Karicheri wrote: > Recent update to pcie-designware core driver, > commit "cbce79005 PCI: designware: Make driver arch-agnostic" broke the > keystone PCI driver. This is because, the way pp struct ptr is retrieved > from msi desc has changed and require similar update in pci-keystone-dw.c > as well. This patch fix this issue. Here is the early boot crash log seen > on K2E EVM. > > [ 1.012999] pci 0000:00:00.0: PCI bridge to [bus 01] > [ 1.018073] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff] > [ 1.024308] pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff] > [ 1.031216] pci 0000:00:00.0: bridge window [mem 0x60100000-0x601fffff > pref] > [ 1.038736] Unable to handle kernel NULL pointer dereference at virtual > address 00000030 > [ 1.046950] pgd = c0003000 > [ 1.049750] [00000030] *pgd=80000800004003, *pmd=00000000 > [ 1.055265] Internal error: Oops: 206 [#1] PREEMPT SMP ARM > [ 1.060860] Modules linked in: > [ 1.064013] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.2-00139-gb74f926 #2 > [ 1.071266] Hardware name: Keystone > [ 1.074853] task: eb888000 ti: eb890000 task.ti: eb890000 > [ 1.080364] PC is at ks_dw_pcie_msi_irq_unmask+0x24/0x58 > [ 1.085785] LR is at ks_dw_pcie_msi_irq_unmask+0x18/0x58 > [ 1.091206] pc : [<c02f65c8>] lr : [<c02f65bc>] psr: 60000093 > [ 1.091206] sp : eb891bc8 ip : 00000000 fp : ebb15010 > [ 1.102915] r10: 00000051 r9 : 60000013 r8 : ebafaa20 > [ 1.108247] r7 : ebaa9f80 r6 : eb9fd0c0 r5 : ebafa9d0 r4 : ebafa9c0 > [ 1.114889] r3 : 00000051 r2 : 00000000 r1 : 00000001 r0 : ebb14c18 > [ 1.121533] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment > kernel > [ 1.129049] Control: 30c5387d Table: 00003000 DAC: fffffffd > [ 1.134905] Process swapper/0 (pid: 1, stack limit = 0xeb890210) > [ 1.141023] Stack: (0xeb891bc8 to 0xeb892000) > > Signed-off-by: Murali Karicheri <m-karicheri2@ti.com> > --- > - Need this fix in 4.4.4 as well <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly. </formletter>
[toc] | [prev] | [next] | [standalone]
| From | Murali Karicheri <m-karicheri2@ti.com> |
|---|---|
| Date | 2016-02-29 16:10 +0100 |
| Subject | Re: [PATCH] PCI: keystone: fix msi code that retrieves the pp struct ptr |
| Message-ID | <r7xCr-4FN-31@gated-at.bofh.it> |
| In reply to | #1343621 |
On 02/25/2016 07:11 PM, Greg KH wrote:
> On Thu, Feb 25, 2016 at 05:23:04PM -0500, Murali Karicheri wrote:
>> Recent update to pcie-designware core driver,
>> commit "cbce79005 PCI: designware: Make driver arch-agnostic" broke the
>> keystone PCI driver. This is because, the way pp struct ptr is retrieved
>> from msi desc has changed and require similar update in pci-keystone-dw.c
>> as well. This patch fix this issue. Here is the early boot crash log seen
>> on K2E EVM.
>>
>> [ 1.012999] pci 0000:00:00.0: PCI bridge to [bus 01]
>> [ 1.018073] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff]
>> [ 1.024308] pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff]
>> [ 1.031216] pci 0000:00:00.0: bridge window [mem 0x60100000-0x601fffff
>> pref]
>> [ 1.038736] Unable to handle kernel NULL pointer dereference at virtual
>> address 00000030
>> [ 1.046950] pgd = c0003000
>> [ 1.049750] [00000030] *pgd=80000800004003, *pmd=00000000
>> [ 1.055265] Internal error: Oops: 206 [#1] PREEMPT SMP ARM
>> [ 1.060860] Modules linked in:
>> [ 1.064013] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.2-00139-gb74f926 #2
>> [ 1.071266] Hardware name: Keystone
>> [ 1.074853] task: eb888000 ti: eb890000 task.ti: eb890000
>> [ 1.080364] PC is at ks_dw_pcie_msi_irq_unmask+0x24/0x58
>> [ 1.085785] LR is at ks_dw_pcie_msi_irq_unmask+0x18/0x58
>> [ 1.091206] pc : [<c02f65c8>] lr : [<c02f65bc>] psr: 60000093
>> [ 1.091206] sp : eb891bc8 ip : 00000000 fp : ebb15010
>> [ 1.102915] r10: 00000051 r9 : 60000013 r8 : ebafaa20
>> [ 1.108247] r7 : ebaa9f80 r6 : eb9fd0c0 r5 : ebafa9d0 r4 : ebafa9c0
>> [ 1.114889] r3 : 00000051 r2 : 00000000 r1 : 00000001 r0 : ebb14c18
>> [ 1.121533] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment
>> kernel
>> [ 1.129049] Control: 30c5387d Table: 00003000 DAC: fffffffd
>> [ 1.134905] Process swapper/0 (pid: 1, stack limit = 0xeb890210)
>> [ 1.141023] Stack: (0xeb891bc8 to 0xeb892000)
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>> - Need this fix in 4.4.4 as well
>
> <formletter>
>
> This is not the correct way to submit patches for inclusion in the
> stable kernel tree. Please read Documentation/stable_kernel_rules.txt
> for how to do this properly.
>
> </formletter>
>
I misremembered it. I am following option 1) and only thing missing is
========================================================================
To have the patch automatically included in the stable tree, add the tag
Cc: stable@vger.kernel.org
in the sign-off area.
=========================================================================
I will add Cc in the sign-off area and send v1.
--
Murali Karicheri
Linux Kernel, Keystone
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web