Re: + remove-unneeded-check-in-bcm43xx.patch added to -mm tree

From: Benoit Boissinot
Date: Mon Apr 10 2006 - 08:09:25 EST


On Mon, Apr 10, 2006 at 12:15:53AM -0700, akpm@xxxxxxxx wrote:
>
> The patch titled
>
> remove unneeded check in bcm43xx
>
> has been added to the -mm tree. Its filename is
>
> remove-unneeded-check-in-bcm43xx.patch

It has been NACKed by Michael Buesch. The problem is in the ppc
dma_alloc_coherent that returns a non suitable zone (it doesn't respect
dma_mask).

Please remove from -mm, sorry for bothering.

Benoit
>
> See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
> out what to do about this
>
>
> From: Benoit Boissinot <benoit.boissinot@xxxxxxxxxxxx>
>
> Since the driver already sets the correct dma_mask, there is no reason to
> bail there. In fact if you have an iommu, I think you can have a address
> above 1G which will be ok for the device (if it isn't true then the powerpc
> dma_alloc_coherent with iommu needs to be fixed because it doesn't respect
> the the dma_mask).
>
> Signed-off-by: Benoit Boissinot <benoit.boissinot@xxxxxxxxxxx>
> Cc: "John W. Linville" <linville@xxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
> ---
>
> drivers/net/wireless/bcm43xx/bcm43xx_dma.c | 23 -------------------
> 1 files changed, 23 deletions(-)
>
> diff -puN drivers/net/wireless/bcm43xx/bcm43xx_dma.c~remove-unneeded-check-in-bcm43xx drivers/net/wireless/bcm43xx/bcm43xx_dma.c
> --- devel/drivers/net/wireless/bcm43xx/bcm43xx_dma.c~remove-unneeded-check-in-bcm43xx 2006-04-10 00:15:40.000000000 -0700
> +++ devel-akpm/drivers/net/wireless/bcm43xx/bcm43xx_dma.c 2006-04-10 00:15:40.000000000 -0700
> @@ -194,14 +194,6 @@ static int alloc_ringmemory(struct bcm43
> printk(KERN_ERR PFX "DMA ringmemory allocation failed\n");
> return -ENOMEM;
> }
> - if (ring->dmabase + BCM43xx_DMA_RINGMEMSIZE > BCM43xx_DMA_BUSADDRMAX) {
> - printk(KERN_ERR PFX ">>>FATAL ERROR<<< DMA RINGMEMORY >1G "
> - "(0x%08x, len: %lu)\n",
> - ring->dmabase, BCM43xx_DMA_RINGMEMSIZE);
> - dma_free_coherent(dev, BCM43xx_DMA_RINGMEMSIZE,
> - ring->vbase, ring->dmabase);
> - return -ENOMEM;
> - }
> assert(!(ring->dmabase & 0x000003FF));
> memset(ring->vbase, 0, BCM43xx_DMA_RINGMEMSIZE);
>
> @@ -303,14 +295,6 @@ static int setup_rx_descbuffer(struct bc
> if (unlikely(!skb))
> return -ENOMEM;
> dmaaddr = map_descbuffer(ring, skb->data, ring->rx_buffersize, 0);
> - if (unlikely(dmaaddr + ring->rx_buffersize > BCM43xx_DMA_BUSADDRMAX)) {
> - unmap_descbuffer(ring, dmaaddr, ring->rx_buffersize, 0);
> - dev_kfree_skb_any(skb);
> - printk(KERN_ERR PFX ">>>FATAL ERROR<<< DMA RX SKB >1G "
> - "(0x%08x, len: %u)\n",
> - dmaaddr, ring->rx_buffersize);
> - return -ENOMEM;
> - }
> meta->skb = skb;
> meta->dmaaddr = dmaaddr;
> skb->dev = ring->bcm->net_dev;
> @@ -726,13 +710,6 @@ static int dma_tx_fragment(struct bcm43x
>
> meta->skb = skb;
> meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
> - if (unlikely(meta->dmaaddr + skb->len > BCM43xx_DMA_BUSADDRMAX)) {
> - return_slot(ring, slot);
> - printk(KERN_ERR PFX ">>>FATAL ERROR<<< DMA TX SKB >1G "
> - "(0x%08x, len: %u)\n",
> - meta->dmaaddr, skb->len);
> - return -ENOMEM;
> - }
>
> desc_addr = (u32)(meta->dmaaddr + ring->memoffset);
> desc_ctl = BCM43xx_DMADTOR_FRAMESTART | BCM43xx_DMADTOR_FRAMEEND;
> _
>
> Patches currently in -mm which might be from benoit.boissinot@xxxxxxxxxxxx are
>
> remove-unneeded-check-in-bcm43xx.patch
>

--
powered by bash/screen/(urxvt/fvwm|linux-console)/gentoo/gnu/linux OS
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/