2010-07-26 06:13:48

by Jike Song

[permalink] [raw]
Subject: Re: BUG at arch/x86/mm/physaddr.c:5

2010/7/23 Ortwin Glück <[email protected]>:
> On 23.07.2010 10:04, Jike Song wrote:
>> Seems to be a logical error?  Does the following patch remove your Oops?
>
> Looking at the init code I agree. Yes, the patch fixes the OOPS. I am sure
> because the OOPS occurred at every boot and now it's gone.
>
> Thanks!
>
> Ortwin

Hi Maintainers,

Since Ortwin has confirmed this patch , would you give me an ACK/NAK please?


--
Thanks,
Jike


>From 1414829dcc5b53ef4802f5de2b9be58e2ca0fb23 Mon Sep 17 00:00:00 2001
From: Jike Song <[email protected]>
Date: Mon, 26 Jul 2010 13:42:41 +0800
Subject: [PATCH] ath9k: fix wrong DMA direction in RX tasklet
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Commit b5c80475abaad015699384ca64ef8229fdd88758 introduced edma
support for RX, hence bidirectional DMA support. But it
specified the DMA type as DMA_FROM_DEVICE by mistake.

Reported-and-tested-by: Ortwin Glück <[email protected]>
Signed-off-by: Jike Song <[email protected]>
---
drivers/net/wireless/ath/ath9k/recv.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/recv.c
b/drivers/net/wireless/ath/ath9k/recv.c
index ca6065b..e3e5291 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -844,9 +844,9 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
int dma_type;

if (edma)
- dma_type = DMA_FROM_DEVICE;
- else
dma_type = DMA_BIDIRECTIONAL;
+ else
+ dma_type = DMA_FROM_DEVICE;

qtype = hp ? ATH9K_RX_QUEUE_HP : ATH9K_RX_QUEUE_LP;
spin_lock_bh(&sc->rx.rxbuflock);
--
1.6.2


2010-07-26 16:56:19

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: BUG at arch/x86/mm/physaddr.c:5

2010/7/25 Jike Song <[email protected]>:
> 2010/7/23 Ortwin Glück <[email protected]>:
>> On 23.07.2010 10:04, Jike Song wrote:
>>> Seems to be a logical error?  Does the following patch remove your Oops?
>>
>> Looking at the init code I agree. Yes, the patch fixes the OOPS. I am sure
>> because the OOPS occurred at every boot and now it's gone.
>>
>> Thanks!
>>
>> Ortwin
>
> Hi Maintainers,
>
>  Since Ortwin has confirmed this patch , would you give me an ACK/NAK please?
>
>
> --
> Thanks,
> Jike
>
>
> From 1414829dcc5b53ef4802f5de2b9be58e2ca0fb23 Mon Sep 17 00:00:00 2001
> From: Jike Song <[email protected]>
> Date: Mon, 26 Jul 2010 13:42:41 +0800
> Subject: [PATCH] ath9k: fix wrong DMA direction in RX tasklet
> MIME-Version: 1.0
> Content-Type: text/plain; charset=utf-8
> Content-Transfer-Encoding: 8bit
>
> Commit b5c80475abaad015699384ca64ef8229fdd88758 introduced edma
> support for RX, hence bidirectional DMA support. But it
> specified the DMA type as DMA_FROM_DEVICE by mistake.
>
> Reported-and-tested-by: Ortwin Glück <[email protected]>
> Signed-off-by: Jike Song <[email protected]>
> ---
>  drivers/net/wireless/ath/ath9k/recv.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/recv.c
> b/drivers/net/wireless/ath/ath9k/recv.c
> index ca6065b..e3e5291 100644
> --- a/drivers/net/wireless/ath/ath9k/recv.c
> +++ b/drivers/net/wireless/ath/ath9k/recv.c
> @@ -844,9 +844,9 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
>        int dma_type;
>
>        if (edma)
> -               dma_type = DMA_FROM_DEVICE;
> -       else
>                dma_type = DMA_BIDIRECTIONAL;
> +       else
> +               dma_type = DMA_FROM_DEVICE;
>
>        qtype = hp ? ATH9K_RX_QUEUE_HP : ATH9K_RX_QUEUE_LP;
>        spin_lock_bh(&sc->rx.rxbuflock);
> --

I'll let Felix chime in on this one as he last reviewed this path.
There were some serious issues with MIPs and DMA that at this point I
think only he grocked.

Luis

2010-07-26 17:22:16

by Felix Fietkau

[permalink] [raw]
Subject: Re: BUG at arch/x86/mm/physaddr.c:5

On 2010-07-26 6:55 PM, Luis R. Rodriguez wrote:
> 2010/7/25 Jike Song <[email protected]>:
>> 2010/7/23 Ortwin Glück <[email protected]>:
>>> On 23.07.2010 10:04, Jike Song wrote:
>>>> Seems to be a logical error? Does the following patch remove your Oops?
>>>
>>> Looking at the init code I agree. Yes, the patch fixes the OOPS. I am sure
>>> because the OOPS occurred at every boot and now it's gone.
>>>
>>> Thanks!
>>>
>>> Ortwin
>>
>> Hi Maintainers,
>>
>> Since Ortwin has confirmed this patch , would you give me an ACK/NAK please?
>>
> I'll let Felix chime in on this one as he last reviewed this path.
> There were some serious issues with MIPs and DMA that at this point I
> think only he grocked.

A patch exactly like that was already posted and merged into the
wireless-testing tree a while ago, it apparently just hasn't made it to
Linus' tree. John, could we get this one into 2.6.35?

http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=commitdiff;h=56824223ac97ca845652c59bed9ce139e100261b

commit 56824223ac97ca845652c59bed9ce139e100261b
Author: Ming Lei <[email protected]>
Date: Fri May 14 21:15:38 2010 +0800

ath9k: fix dma direction for map/unmap in ath_rx_tasklet

For edma, we should use DMA_BIDIRECTIONAL, or else use
DMA_FROM_DEVICE.

Signed-off-by: Ming Lei <[email protected]>
Signed-off-by: John W. Linville <[email protected]>