lkml.org 
[lkml]   [2011]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH 2/2 -mm] RapidIO: TSI721 Add DMA Engine support
    On Mon, 3 Oct 2011 10:53:45 -0700
    "Bounine, Alexandre" <Alexandre.Bounine@idt.com> wrote:

    > > > + memset(bd_ptr, 0, bd_num * sizeof(struct tsi721_dma_desc));
    > > > +
    > > > + dev_dbg(dev, "DMA descriptors @ %p (phys = %llx)\n",
    > > > + bd_ptr, (unsigned long long)bd_phys);
    > > > +
    > > > + /* Allocate space for descriptor status FIFO */
    > > > + sts_size = (bd_num >= TSI721_DMA_MINSTSSZ) ?
    > > > + bd_num : TSI721_DMA_MINSTSSZ;
    > > > + sts_size = roundup_pow_of_two(sts_size);
    > > > + sts_ptr = dma_alloc_coherent(dev,
    > > > + sts_size * sizeof(struct
    > tsi721_dma_sts),
    > > > + &sts_phys, GFP_KERNEL);
    > > > + if (!sts_ptr) {
    > > > + /* Free space allocated for DMA descriptors */
    > > > + dma_free_coherent(dev,
    > > > + bd_num * sizeof(struct
    > tsi721_dma_desc),
    > > > + bd_ptr, bd_phys);
    > > > + chan->bd_base = NULL;
    > > > + return -ENOMEM;
    > > > + }
    > > > +
    > > > + chan->sts_phys = sts_phys;
    > > > + chan->sts_base = sts_ptr;
    > > > + chan->sts_size = sts_size;
    > > > +
    > > > + memset(sts_ptr, 0, sts_size);
    > >
    > > You meant
    >
    > I really need it here. That status block tracks progress by keeping
    > non-zero addresses of processed descriptors.

    Confused. Are you saying that the use of "sts_size" there was
    intentional?

    > >
    > > --- a/drivers/rapidio/devices/tsi721.c~rapidio-tsi721-add-dma-engine-
    > > support-fix
    > > +++ a/drivers/rapidio/devices/tsi721.c
    > > @@ -1006,7 +1006,7 @@ static int tsi721_bdma_maint_init(struct
    > > priv->mdma.sts_base = sts_ptr;
    > > priv->mdma.sts_size = sts_size;
    > >
    > > - memset(sts_ptr, 0, sts_size);
    > > + memset(sts_ptr, 0, sts_size * sizeof(struct tsi721_dma_sts));
    > >
    > > dev_dbg(&priv->pdev->dev,
    > > "desc status FIFO @ %p (phys = %llx) size=0x%x\n",
    > >
    > > However that's at least two instances where you wanted a
    > > dma_zalloc_coherent(). How's about we give ourselves one?
    >
    > Does this mean that I am on hook for it as a "most frequent user"?

    No, it can be used all over the place: drivers/net/irda/w83977af_ir.c,
    drivers/scsi/bnx2fc/bnx2fc_tgt.c,
    drivers/net/wireless/rt2x00/rt2x00pci.c,
    drivers/crypto/amcc/crypto4xx_core.c and many nmore.




    \
     
     \ /
      Last update: 2011-10-04 23:47    [W:0.022 / U:5.552 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site