Ralf, could you please apply the patch below.
Please also apply it to include/asm-mips64/pci.h (the 64-bit version).
/Carsten
Brian Murphy wrote:
> It seems like this problem is (yet again) caused by lack of cache flushing.
> The attached patch adds a dma_cache_wback_inv to pci_map_sg in pci.h
> to the if fork in which sg->address is not set.
>
> This fixes my problem.
>
> Can someone with commit access please apply this patch?
>
> /Brian
>
> ------------------------------------------------------------------------
> Index: include/asm-mips/pci.h
> ===================================================================
> RCS file: /cvs/linux-mips/include/asm-mips/pci.h,v
> retrieving revision 1.1.1.2
> diff -u -r1.1.1.2 pci.h
> --- include/asm-mips/pci.h 19 Aug 2002 18:00:29 -0000 1.1.1.2
> +++ include/asm-mips/pci.h 12 Sep 2002 20:06:31 -0000
> @@ -200,9 +200,13 @@
> dma_cache_wback_inv((unsigned long)sg->address,
> sg->length);
> sg->dma_address = bus_to_baddr(hwdev,
> __pa(sg->address));
> - } else
> + } else {
> sg->dma_address = page_to_bus(sg->page) +
> sg->offset;
> + dma_cache_wback_inv(
> + (unsigned long)(page_address(sg->page)+
> + sg->offset), sg->length);
> + }
> }
>
> return nents;
--
_ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com
|\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527
| \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555
TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556
Denmark http://www.mips.com
|