All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] b43: read correct register on bcma bus.
@ 2011-07-23 11:57 Hauke Mehrtens
  2011-07-23 11:57 ` [PATCH 2/2] b43: add core rev 17 used on bcma SoC Hauke Mehrtens
  2011-07-23 14:00 ` [PATCH 1/2] b43: read correct register on bcma bus Rafał Miłecki
  0 siblings, 2 replies; 5+ messages in thread
From: Hauke Mehrtens @ 2011-07-23 11:57 UTC (permalink / raw)
  To: linville, linux-wireless; +Cc: zajec5, Hauke Mehrtens

This causes an databus error on a Broadcom SoC using bcma.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 drivers/net/wireless/b43/dma.c |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 0953ce1..646d6ae 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev)
 	u32 tmp;
 	u16 mmio_base;
 
-	tmp = b43_read32(dev, SSB_TMSHIGH);
-	if (tmp & SSB_TMSHIGH_DMA64)
-		return DMA_BIT_MASK(64);
+	switch (dev->dev->bus_type) {
+#ifdef CONFIG_B43_BCMA
+	case B43_BUS_BCMA:
+		tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST);
+		if (tmp & BCMA_IOST_DMA64)
+			return DMA_BIT_MASK(64);
+		break;
+#endif
+#ifdef CONFIG_B43_SSB
+	case B43_BUS_SSB:
+		tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH);
+		if (tmp & SSB_TMSHIGH_DMA64)
+			return DMA_BIT_MASK(64);
+		break;
+#endif
+	}
+
 	mmio_base = b43_dmacontroller_base(0, 0);
 	b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK);
 	tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL);
-- 
1.7.4.1


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

* [PATCH 2/2] b43: add core rev 17 used on bcma SoC.
  2011-07-23 11:57 [PATCH 1/2] b43: read correct register on bcma bus Hauke Mehrtens
@ 2011-07-23 11:57 ` Hauke Mehrtens
  2011-07-23 14:00 ` [PATCH 1/2] b43: read correct register on bcma bus Rafał Miłecki
  1 sibling, 0 replies; 5+ messages in thread
From: Hauke Mehrtens @ 2011-07-23 11:57 UTC (permalink / raw)
  To: linville, linux-wireless; +Cc: zajec5, Hauke Mehrtens

This ieee80211 core was found on a Netgear wndr3400.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 drivers/net/wireless/b43/main.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index d9f53b7..ea04913 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -115,6 +115,7 @@ MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
 
 #ifdef CONFIG_B43_BCMA
 static const struct bcma_device_id b43_bcma_tbl[] = {
+	BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x11, BCMA_ANY_CLASS),
 	BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x17, BCMA_ANY_CLASS),
 	BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x18, BCMA_ANY_CLASS),
 	BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x1D, BCMA_ANY_CLASS),
-- 
1.7.4.1


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

* Re: [PATCH 1/2] b43: read correct register on bcma bus.
  2011-07-23 11:57 [PATCH 1/2] b43: read correct register on bcma bus Hauke Mehrtens
  2011-07-23 11:57 ` [PATCH 2/2] b43: add core rev 17 used on bcma SoC Hauke Mehrtens
@ 2011-07-23 14:00 ` Rafał Miłecki
  2011-08-08  8:41   ` Rafał Miłecki
  1 sibling, 1 reply; 5+ messages in thread
From: Rafał Miłecki @ 2011-07-23 14:00 UTC (permalink / raw)
  To: Hauke Mehrtens; +Cc: linville, linux-wireless

2011/7/23 Hauke Mehrtens <hauke@hauke-m.de>:
> This causes an databus error on a Broadcom SoC using bcma.
>
> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
> ---
>  drivers/net/wireless/b43/dma.c |   20 +++++++++++++++++---
>  1 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
> index 0953ce1..646d6ae 100644
> --- a/drivers/net/wireless/b43/dma.c
> +++ b/drivers/net/wireless/b43/dma.c
> @@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev)
>        u32 tmp;
>        u16 mmio_base;
>
> -       tmp = b43_read32(dev, SSB_TMSHIGH);
> -       if (tmp & SSB_TMSHIGH_DMA64)
> -               return DMA_BIT_MASK(64);
> +       switch (dev->dev->bus_type) {
> +#ifdef CONFIG_B43_BCMA
> +       case B43_BUS_BCMA:
> +               tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST);
> +               if (tmp & BCMA_IOST_DMA64)
> +                       return DMA_BIT_MASK(64);
> +               break;
> +#endif
> +#ifdef CONFIG_B43_SSB
> +       case B43_BUS_SSB:
> +               tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH);
> +               if (tmp & SSB_TMSHIGH_DMA64)
> +                       return DMA_BIT_MASK(64);
> +               break;
> +#endif
> +       }
> +
>        mmio_base = b43_dmacontroller_base(0, 0);
>        b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK);
>        tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL);
> --
> 1.7.4.1

Ack. Code was half-correctly using b43_read32 for SSB_TMSHIGH and
that's how I missed it. Reading non-existent register on PC resulted
in 0xFFFFFFFF, but not bus error.

Thanks Hauke.

-- 
Rafał

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

* Re: [PATCH 1/2] b43: read correct register on bcma bus.
  2011-07-23 14:00 ` [PATCH 1/2] b43: read correct register on bcma bus Rafał Miłecki
@ 2011-08-08  8:41   ` Rafał Miłecki
  2011-08-08 21:27     ` Hauke Mehrtens
  0 siblings, 1 reply; 5+ messages in thread
From: Rafał Miłecki @ 2011-08-08  8:41 UTC (permalink / raw)
  To: Hauke Mehrtens; +Cc: linville, linux-wireless

W dniu 23 lipca 2011 16:00 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał:
> 2011/7/23 Hauke Mehrtens <hauke@hauke-m.de>:
>> This causes an databus error on a Broadcom SoC using bcma.
>>
>> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
>> ---
>>  drivers/net/wireless/b43/dma.c |   20 +++++++++++++++++---
>>  1 files changed, 17 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
>> index 0953ce1..646d6ae 100644
>> --- a/drivers/net/wireless/b43/dma.c
>> +++ b/drivers/net/wireless/b43/dma.c
>> @@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev)
>>        u32 tmp;
>>        u16 mmio_base;
>>
>> -       tmp = b43_read32(dev, SSB_TMSHIGH);
>> -       if (tmp & SSB_TMSHIGH_DMA64)
>> -               return DMA_BIT_MASK(64);
>> +       switch (dev->dev->bus_type) {
>> +#ifdef CONFIG_B43_BCMA
>> +       case B43_BUS_BCMA:
>> +               tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST);
>> +               if (tmp & BCMA_IOST_DMA64)
>> +                       return DMA_BIT_MASK(64);
>> +               break;
>> +#endif
>> +#ifdef CONFIG_B43_SSB
>> +       case B43_BUS_SSB:
>> +               tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH);
>> +               if (tmp & SSB_TMSHIGH_DMA64)
>> +                       return DMA_BIT_MASK(64);
>> +               break;
>> +#endif
>> +       }
>> +
>>        mmio_base = b43_dmacontroller_base(0, 0);
>>        b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK);
>>        tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL);
>> --
>> 1.7.4.1
>
> Ack. Code was half-correctly using b43_read32 for SSB_TMSHIGH and
> that's how I missed it. Reading non-existent register on PC resulted
> in 0xFFFFFFFF, but not bus error.
>
> Thanks Hauke.

There is not support for SoC in 3.1-rc1, but reading SSB_TMSHIGH on
PC/laptop still can be dangerous, can't it? It didn't blow my machine,
but don't know what will happen on other, including notebooks.

Should we take this patch as fix for 3.1?

-- 
Rafał

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

* Re: [PATCH 1/2] b43: read correct register on bcma bus.
  2011-08-08  8:41   ` Rafał Miłecki
@ 2011-08-08 21:27     ` Hauke Mehrtens
  0 siblings, 0 replies; 5+ messages in thread
From: Hauke Mehrtens @ 2011-08-08 21:27 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: linville, linux-wireless

On 08/08/2011 10:41 AM, Rafał Miłecki wrote:
> W dniu 23 lipca 2011 16:00 użytkownik Rafał Miłecki <zajec5@gmail.com> napisał:
>> 2011/7/23 Hauke Mehrtens <hauke@hauke-m.de>:
>>> This causes an databus error on a Broadcom SoC using bcma.
>>>
>>> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
>>> ---
>>>  drivers/net/wireless/b43/dma.c |   20 +++++++++++++++++---
>>>  1 files changed, 17 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
>>> index 0953ce1..646d6ae 100644
>>> --- a/drivers/net/wireless/b43/dma.c
>>> +++ b/drivers/net/wireless/b43/dma.c
>>> @@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev)
>>>        u32 tmp;
>>>        u16 mmio_base;
>>>
>>> -       tmp = b43_read32(dev, SSB_TMSHIGH);
>>> -       if (tmp & SSB_TMSHIGH_DMA64)
>>> -               return DMA_BIT_MASK(64);
>>> +       switch (dev->dev->bus_type) {
>>> +#ifdef CONFIG_B43_BCMA
>>> +       case B43_BUS_BCMA:
>>> +               tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST);
>>> +               if (tmp & BCMA_IOST_DMA64)
>>> +                       return DMA_BIT_MASK(64);
>>> +               break;
>>> +#endif
>>> +#ifdef CONFIG_B43_SSB
>>> +       case B43_BUS_SSB:
>>> +               tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH);
>>> +               if (tmp & SSB_TMSHIGH_DMA64)
>>> +                       return DMA_BIT_MASK(64);
>>> +               break;
>>> +#endif
>>> +       }
>>> +
>>>        mmio_base = b43_dmacontroller_base(0, 0);
>>>        b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK);
>>>        tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL);
>>> --
>>> 1.7.4.1
>>
>> Ack. Code was half-correctly using b43_read32 for SSB_TMSHIGH and
>> that's how I missed it. Reading non-existent register on PC resulted
>> in 0xFFFFFFFF, but not bus error.
>>
>> Thanks Hauke.
> 
> There is not support for SoC in 3.1-rc1, but reading SSB_TMSHIGH on
> PC/laptop still can be dangerous, can't it? It didn't blow my machine,
> but don't know what will happen on other, including notebooks.
> 
> Should we take this patch as fix for 3.1?
> 
I would be for adding this to 3.1 as it does exactly the same for ssb
devices and bcma based device were not supported with kernel versions
before 3.1. On an bcma devices we are reading some memory and do not
know what could happen because of this. On pci devices we haven't seen
any problem yet because the cpu does not have a problem with reading
this address, but under some not "normal" conditions this could be a
problem.

Hauke

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

end of thread, other threads:[~2011-08-08 21:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-23 11:57 [PATCH 1/2] b43: read correct register on bcma bus Hauke Mehrtens
2011-07-23 11:57 ` [PATCH 2/2] b43: add core rev 17 used on bcma SoC Hauke Mehrtens
2011-07-23 14:00 ` [PATCH 1/2] b43: read correct register on bcma bus Rafał Miłecki
2011-08-08  8:41   ` Rafał Miłecki
2011-08-08 21:27     ` Hauke Mehrtens

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.