* [PATCH 3.0] ssb: fix init regression of hostmode PCI core
@ 2011-07-05 15:25 Rafał Miłecki
2011-07-06 18:37 ` John W. Linville
2011-07-06 18:53 ` Hauke Mehrtens
0 siblings, 2 replies; 3+ messages in thread
From: Rafał Miłecki @ 2011-07-05 15:25 UTC (permalink / raw)
To: linux-wireless, Hauke Mehrtens, John W. Linville
Cc: b43-dev, Rafał Miłecki
Our workarounds seem to be clientmode PCI specific. Using SPROM
workaround on SoC resulted in Oops:
Data bus error, epc == 8017ed58, ra == 80225838
Oops[#1]:
Cpu 0
$ 0 : 00000000 10008000 b8000000 00000001
$ 4 : 80293b5c 00000caa ffffffff 00000000
$ 8 : 0000000a 00000003 00000001 696d6d20
$12 : ffffffff 00000000 00000000 ffffffff
$16 : 802d0140 b8004800 802c0000 00000000
$20 : 00000000 802c0000 00000000 802d04d4
$24 : 00000018 80151a00
$28 : 81816000 81817df8 8029bda0 80225838
Hi : 00000000
Lo : 00000000
epc : 8017ed58 ssb_ssb_read16+0x48/0x60
Not tainted
ra : 80225838 ssb_pcicore_init+0x54/0x3b4
Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
Hauke: could you give it a try?
John: this regression was introduced in 3.0
---
drivers/ssb/driver_pcicore.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c
index 21b9465..11d85bf 100644
--- a/drivers/ssb/driver_pcicore.c
+++ b/drivers/ssb/driver_pcicore.c
@@ -516,8 +516,17 @@ static void ssb_pcicore_pcie_setup_workarounds(struct ssb_pcicore *pc)
static void __devinit ssb_pcicore_init_clientmode(struct ssb_pcicore *pc)
{
+ ssb_pcicore_fix_sprom_core_index(pc);
+
/* Disable PCI interrupts. */
ssb_write32(pc->dev, SSB_INTVEC, 0);
+
+ /* Additional PCIe always once-executed workarounds */
+ if (pc->dev->id.coreid == SSB_DEV_PCIE) {
+ ssb_pcicore_serdes_workaround(pc);
+ /* TODO: ASPM */
+ /* TODO: Clock Request Update */
+ }
}
void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
@@ -529,8 +538,6 @@ void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
if (!ssb_device_is_enabled(dev))
ssb_device_enable(dev, 0);
- ssb_pcicore_fix_sprom_core_index(pc);
-
#ifdef CONFIG_SSB_PCICORE_HOSTMODE
pc->hostmode = pcicore_is_in_hostmode(pc);
if (pc->hostmode)
@@ -538,13 +545,6 @@ void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
#endif /* CONFIG_SSB_PCICORE_HOSTMODE */
if (!pc->hostmode)
ssb_pcicore_init_clientmode(pc);
-
- /* Additional PCIe always once-executed workarounds */
- if (dev->id.coreid == SSB_DEV_PCIE) {
- ssb_pcicore_serdes_workaround(pc);
- /* TODO: ASPM */
- /* TODO: Clock Request Update */
- }
}
static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 3.0] ssb: fix init regression of hostmode PCI core
2011-07-05 15:25 [PATCH 3.0] ssb: fix init regression of hostmode PCI core Rafał Miłecki
@ 2011-07-06 18:37 ` John W. Linville
2011-07-06 18:53 ` Hauke Mehrtens
1 sibling, 0 replies; 3+ messages in thread
From: John W. Linville @ 2011-07-06 18:37 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless, Hauke Mehrtens, b43-dev
On Tue, Jul 05, 2011 at 05:25:32PM +0200, Rafał Miłecki wrote:
> Our workarounds seem to be clientmode PCI specific. Using SPROM
> workaround on SoC resulted in Oops:
>
> Data bus error, epc == 8017ed58, ra == 80225838
> Oops[#1]:
> Cpu 0
> $ 0 : 00000000 10008000 b8000000 00000001
> $ 4 : 80293b5c 00000caa ffffffff 00000000
> $ 8 : 0000000a 00000003 00000001 696d6d20
> $12 : ffffffff 00000000 00000000 ffffffff
> $16 : 802d0140 b8004800 802c0000 00000000
> $20 : 00000000 802c0000 00000000 802d04d4
> $24 : 00000018 80151a00
> $28 : 81816000 81817df8 8029bda0 80225838
> Hi : 00000000
> Lo : 00000000
> epc : 8017ed58 ssb_ssb_read16+0x48/0x60
> Not tainted
> ra : 80225838 ssb_pcicore_init+0x54/0x3b4
>
> Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
> Hauke: could you give it a try?
>
> John: this regression was introduced in 3.0
Hauke, I'd like to see your reply before I merge this.
Thanks,
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 3.0] ssb: fix init regression of hostmode PCI core
2011-07-05 15:25 [PATCH 3.0] ssb: fix init regression of hostmode PCI core Rafał Miłecki
2011-07-06 18:37 ` John W. Linville
@ 2011-07-06 18:53 ` Hauke Mehrtens
1 sibling, 0 replies; 3+ messages in thread
From: Hauke Mehrtens @ 2011-07-06 18:53 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev
On 07/05/2011 05:25 PM, Rafał Miłecki wrote:
> Our workarounds seem to be clientmode PCI specific. Using SPROM
> workaround on SoC resulted in Oops:
>
> Data bus error, epc == 8017ed58, ra == 80225838
> Oops[#1]:
> Cpu 0
> $ 0 : 00000000 10008000 b8000000 00000001
> $ 4 : 80293b5c 00000caa ffffffff 00000000
> $ 8 : 0000000a 00000003 00000001 696d6d20
> $12 : ffffffff 00000000 00000000 ffffffff
> $16 : 802d0140 b8004800 802c0000 00000000
> $20 : 00000000 802c0000 00000000 802d04d4
> $24 : 00000018 80151a00
> $28 : 81816000 81817df8 8029bda0 80225838
> Hi : 00000000
> Lo : 00000000
> epc : 8017ed58 ssb_ssb_read16+0x48/0x60
> Not tainted
> ra : 80225838 ssb_pcicore_init+0x54/0x3b4
>
> Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Tested-by: Hauke Mehrtens <hauke@hauke-m.de>
> ---
> Hauke: could you give it a try?
After applying this patch I do not get this Data bus error any more.
>
> John: this regression was introduced in 3.0
> ---
> drivers/ssb/driver_pcicore.c | 18 +++++++++---------
> 1 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c
> index 21b9465..11d85bf 100644
> --- a/drivers/ssb/driver_pcicore.c
> +++ b/drivers/ssb/driver_pcicore.c
> @@ -516,8 +516,17 @@ static void ssb_pcicore_pcie_setup_workarounds(struct ssb_pcicore *pc)
>
> static void __devinit ssb_pcicore_init_clientmode(struct ssb_pcicore *pc)
> {
> + ssb_pcicore_fix_sprom_core_index(pc);
> +
> /* Disable PCI interrupts. */
> ssb_write32(pc->dev, SSB_INTVEC, 0);
> +
> + /* Additional PCIe always once-executed workarounds */
> + if (pc->dev->id.coreid == SSB_DEV_PCIE) {
> + ssb_pcicore_serdes_workaround(pc);
> + /* TODO: ASPM */
> + /* TODO: Clock Request Update */
> + }
> }
>
> void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
> @@ -529,8 +538,6 @@ void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
> if (!ssb_device_is_enabled(dev))
> ssb_device_enable(dev, 0);
>
> - ssb_pcicore_fix_sprom_core_index(pc);
> -
> #ifdef CONFIG_SSB_PCICORE_HOSTMODE
> pc->hostmode = pcicore_is_in_hostmode(pc);
> if (pc->hostmode)
> @@ -538,13 +545,6 @@ void __devinit ssb_pcicore_init(struct ssb_pcicore *pc)
> #endif /* CONFIG_SSB_PCICORE_HOSTMODE */
> if (!pc->hostmode)
> ssb_pcicore_init_clientmode(pc);
> -
> - /* Additional PCIe always once-executed workarounds */
> - if (dev->id.coreid == SSB_DEV_PCIE) {
> - ssb_pcicore_serdes_workaround(pc);
> - /* TODO: ASPM */
> - /* TODO: Clock Request Update */
> - }
> }
>
> static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-07-06 18:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-05 15:25 [PATCH 3.0] ssb: fix init regression of hostmode PCI core Rafał Miłecki
2011-07-06 18:37 ` John W. Linville
2011-07-06 18:53 ` Hauke Mehrtens
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).