Message ID | 20090820125734.GI23444@pengutronix.de |
---|---|
State | RFC |
Headers | show |
Hi Sascha, 2009/8/20 Sascha Hauer <s.hauer@pengutronix.de>: > Hi, > > Hi recently found out that on my i.MX27 board the mxc nand controller > performance nearly doubles when I disable interrupts. Can anybody > confirm this behaviour, possibly on other i.MXs? > I'm trying to figure out what to do. We could disable interrupts > completely in which case the driver would become simpler. Maybe using > polling mode has other impacts on other workloads, so maybe we want to > add a flag to platform_data instead of disabling interrupts completely. A flag sounds like a good idea. > You can use the following patch to disable interrupts. It is not meant > for inclusion in this form of course. I can give it a try on i.MX31, how do you measure the performance? /Magnus
On Thu, Aug 20, 2009 at 10:10:27PM +0200, Magnus Lilja wrote: > Hi Sascha, > > 2009/8/20 Sascha Hauer <s.hauer@pengutronix.de>: > > Hi, > > > > Hi recently found out that on my i.MX27 board the mxc nand controller > > performance nearly doubles when I disable interrupts. Can anybody > > confirm this behaviour, possibly on other i.MXs? > > I'm trying to figure out what to do. We could disable interrupts > > completely in which case the driver would become simpler. Maybe using > > polling mode has other impacts on other workloads, so maybe we want to > > add a flag to platform_data instead of disabling interrupts completely. > > A flag sounds like a good idea. > > > You can use the following patch to disable interrupts. It is not meant > > for inclusion in this form of course. > > I can give it a try on i.MX31, how do you measure the performance? I did a 'time cat /dev/mtdblockx > /dev/null' and looked at the time needed to mount an ubifs. I haven't done any write tests though. Sascha
Hi 2009/8/21 Sascha Hauer <s.hauer@pengutronix.de>: > On Thu, Aug 20, 2009 at 10:10:27PM +0200, Magnus Lilja wrote: >> Hi Sascha, >> >> 2009/8/20 Sascha Hauer <s.hauer@pengutronix.de>: >> > Hi, >> > >> > Hi recently found out that on my i.MX27 board the mxc nand controller >> > performance nearly doubles when I disable interrupts. Can anybody >> > confirm this behaviour, possibly on other i.MXs? >> > I'm trying to figure out what to do. We could disable interrupts >> > completely in which case the driver would become simpler. Maybe using >> > polling mode has other impacts on other workloads, so maybe we want to >> > add a flag to platform_data instead of disabling interrupts completely. >> >> A flag sounds like a good idea. >> >> > You can use the following patch to disable interrupts. It is not meant >> > for inclusion in this form of course. >> >> I can give it a try on i.MX31, how do you measure the performance? > > I did a 'time cat /dev/mtdblockx > /dev/null' and looked at the time > needed to mount an ubifs. I haven't done any write tests though. I did some tests on a i.MX31 Litekit board using a kernel from Linus' tree a couple of days ago ('time cat /dev/mtdblockx > /dev/null'): with interrupts: 18s without interrupts: 13s No write tests or mounting filesystems were done. /Magnus
diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c index 76beea4..bcc5929 100644 --- a/drivers/mtd/nand/mxc_nand.c +++ b/drivers/mtd/nand/mxc_nand.c @@ -175,6 +175,8 @@ static void wait_op_done(struct mxc_nand_host *host, int max_retries, { uint32_t tmp; + useirq = 0; + if (useirq) { if ((readw(host->regs + NFC_CONFIG2) & NFC_INT) == 0) {