Hello Dan, Many thanks for your review. I will remove the channel_switch things in Kconfig and change the tasklet to threaded_irq. I'm waiting for your further review comments to work out the 2nd version. Best Regards, Shi -----Original Message----- From: linuxppc-dev-bounces@xxxxxxxxxxxxxxxxxxx [mailto:linuxppc-dev-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Dan Williams Sent: 2014年2月26日 5:57 To: xuelin.shi@xxxxxxxxxxxxx Cc: Vinod Koul; linuxppc-dev@xxxxxxxxxxxxxxxxxxx; Burmi Naveen-B16502; dmaengine@xxxxxxxxxxxxxxx; Shi Xuelin-B29237 Subject: Re: [linuxppc-dev] [PATCH] Driver support FSL RaidEngine device. 2 quick notes below, I'll take a closer look when I get a chance. On Mon, Feb 24, 2014 at 11:19 PM, <xuelin.shi@xxxxxxxxxxxxx> wrote: > From: Xuelin Shi <xuelin.shi@xxxxxxxxxxxxx> > > The RaidEngine is a new FSL hardware used for Raid5/6 acceration. > > This patch enables the RaidEngine functionality and provides hardware > offloading capability for memcpy, xor and pq computation. > It works with async_tx. > > Signed-off-by: Harninder Rai <harninder.rai@xxxxxxxxxxxxx> > Signed-off-by: Naveen Burmi <naveenburmi@xxxxxxxxxxxxx> > Signed-off-by: Xuelin Shi <xuelin.shi@xxxxxxxxxxxxx> > --- > drivers/dma/Kconfig | 12 + > drivers/dma/Makefile | 1 + > drivers/dma/fsl_raid.c | 905 > +++++++++++++++++++++++++++++++++++++++++++++++++ > drivers/dma/fsl_raid.h | 310 +++++++++++++++++ > 4 files changed, 1228 insertions(+) > create mode 100644 drivers/dma/fsl_raid.c create mode 100644 > drivers/dma/fsl_raid.h > > diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index > 605b016..c15b10b 100644 > --- a/drivers/dma/Kconfig > +++ b/drivers/dma/Kconfig > @@ -100,6 +100,18 @@ config FSL_DMA > EloPlus is on mpc85xx and mpc86xx and Pxxx parts, and the Elo3 is on > some Txxx and Bxxx parts. > > +config FSL_RAID > + tristate "Freescale RAID engine Support" > + depends on FSL_SOC && !FSL_DMA > + select DMA_ENGINE > + select DMA_ENGINE_RAID > + select ASYNC_TX_ENABLE_CHANNEL_SWITCH Channel switching support is planned to be removed because it is incompatible with the dma mapping api. It's also unnecessary in this driver as it appears a given channel has all the raid capabilities. [..] > +/* Per job ring data structure */ > +struct re_jr { > + dma_cookie_t completed_cookie; > + spinlock_t desc_lock; /* queue lock */ > + struct list_head ack_q; /* wait to acked queue */ > + struct list_head active_q; /* already issued on hw, not completed */ > + struct list_head submit_q; > + struct list_head free_q; /* alloc available queue */ > + struct device *dev; > + struct re_drv_private *re_dev; > + struct dma_chan chan; > + struct jr_config_regs *jrregs; > + int irq; > + struct tasklet_struct irqtask; Please convert to threaded irqs. Tasklets are discouraged for new drivers. -- Dan _______________________________________________ linuxppc-dev mailing list linuxppc-dev@xxxxxxxxxxxxxxxxxxx http://linux.freescale.net/mailman/listinfo/linuxppc-dev ?韬{.n?????%??檩??w?{.n???Ё?撖)?骅w*jg????????G??⒏⒎?:+v????????????"??????