From: Tony Lindgren <tony@atomide.com>
To: "Kumar, Purushotam" <purushotam@ti.com>
Cc: Kyungmin Park <kmpark@infradead.org>,
Felipe Balbi <felipebalbi@users.sourceforge.net>,
"linux-omap-open-source@linux.omap.com"
<linux-omap-open-source@linux.omap.com>,
"Gole, Anant" <anantgole@ti.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: Re: [PATCH] Performance enhancement for MMCSD when feature CONFIG_MMC_BLOCK_BOUNCE is enabled in the MMC core
Date: Fri, 16 May 2008 11:02:29 -0700 [thread overview]
Message-ID: <20080516180229.GY23002@atomide.com> (raw)
In-Reply-To: <B85A65D85D7EB246BE421B3FB0FBB593010B17819B@dbde02.ent.ti.com>
* Kumar, Purushotam <purushotam@ti.com> [080515 23:50]:
>
>
> > -----Original Message-----
> > From: kyungmin78@gmail.com [mailto:kyungmin78@gmail.com] On Behalf Of Kyungmin Park
> > Sent: Friday, May 16, 2008 6:34 AM
> > To: Felipe Balbi
> > Cc: Kumar, Purushotam; linux-omap-open-source@linux.omap.com; Gole, Anant; linux-omap@vger.kernel.org
> > Subject: Re: [PATCH] Performance enhancement for MMCSD when feature CONFIG_MMC_BLOCK_BOUNCE is
> > enabled in the MMC core
> >
> > Hi,
> >
> > On Thu, May 15, 2008 at 10:30 PM, Felipe Balbi
> > <felipebalbi@users.sourceforge.net> wrote:
> > > Hi,
> > >
> > > this list moved to linux-omap@vger.kernel.org ;-)
> > >
> > > On Thu, May 15, 2008 at 4:25 PM, Kumar, Purushotam <purushotam@ti.com> wrote:
> > >> This patch will increase performance significantly. In my testing with a SD Extreme III high speed
> > 2GB SD card using FAT file system on OMAP35X TI EVM, write speed has improved by 2x whereas read
> > speed has improved by 3 times for MMCSD when CONFIG_MMC_BLOCK_BOUNCE is enabled. It is supposed that
> > larger/bounce buffers will be used by mmc core if CONFIG_MMC_BLOCK_BOUNCE is defined. But, in the mmc
> > core, size of buffer is set to mmc->max_req_size if mmc->max_req_size is smaller than
> > MMC_QUEUE_BOUNCESZ i.e. bounce buffer size (which is 64KB). By default, mmc->max_req_size is set to
> > 4K. So, buffers of 4K will be used instead of 64K even if CONFIG_MMC_BLOCK_BOUNCE is defined without
> > this patch. This patches forces mmc core to use bounce buffer of size MMC_QUEUE_BOUNCESZ and so
> > performance is increased.
> > >>
> > >> Signed-off-by: Purushotam Kumar <purushotam@ti.com>
> > >> ---
> > >> Index: linux-omap-2.6/drivers/mmc/host/omap_hsmmc.c
> > >> ===================================================================
> > >> --- linux-omap-2.6.orig/drivers/mmc/host/omap_hsmmc.c
> > >> +++ linux-omap-2.6/drivers/mmc/host/omap_hsmmc.c
> > >> @@ -782,6 +782,15 @@ static int __init omap_mmc_probe(struct
> > >> else
> > >> host->dbclk_enabled = 1;
> > >>
> > >> +#ifdef CONFIG_MMC_BLOCK_BOUNCE
> > >> + mmc->max_phys_segs = 1;
> > >> + mmc->max_hw_segs = 1;
> > >> +#endif
> > >> + mmc->max_blk_size = 512; /* Block Length at max can be 1024 */
> > >> + mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */
> > >> + mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
> > >> + mmc->max_seg_size = mmc->max_req_size;
> > >> +
> > >> mmc->ocr_avail = mmc_slot(host).ocr_mask;
> > >> mmc->caps |= MMC_CAP_MULTIWRITE | MMC_CAP_MMC_HIGHSPEED |
> > >> MMC_CAP_SD_HIGHSPEED;
> > >
> > > Do you have any measurements results to share :-p
> > >
> >
> > similar ways omap.c does, but it's almost same or degraded.
> > It was tested on apollon (OMAP2420)
> >
> > Thank you,
> > Kyungmin Park
> >
> > # iozone -A -s 128m -q 256k -U /mmc -f /mmc/test -e
> >
> > % before
> > 131072 4 3014 2317 6577 6575
> > 131072 8 2918 2702 6577 6568
> > 131072 16 2895 2287 6560 6556
> > 131072 32 2839 2430 6567 6551
> > 131072 64 2929 2688 6548 6545
> > 131072 128 2956 2534 6572 6565
> > 131072 256 2861 2356 6571 6569
> >
> > % after
> > 131072 4 2917 2784 6383 6379
> > 131072 8 2806 2615 6377 6397
> > 131072 16 2834 2953 6383 6379
> > 131072 32 2844 2492 6376 6375
> > 131072 64 2976 2625 6395 6379
> >
> > Here's patch
> >
> > diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
> > index 549517c..a0c0d38 100644
> > --- a/drivers/mmc/host/omap.c
> > +++ b/drivers/mmc/host/omap.c
> > @@ -1332,12 +1335,17 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host
> > mmc->f_max = min(host->pdata->max_freq, mmc->f_max);
> > mmc->ocr_avail = slot->pdata->ocr_mask;
> >
> > +#ifdef CONFIG_MMC_BLOCK_BOUNCE
> > + mmc->max_phys_segs = 1;
> > + mmc->max_hw_segs = 1;
> > +#else
> > /* Use scatterlist DMA to reduce per-transfer costs.
> > * NOTE max_seg_size assumption that small blocks aren't
> > * normally used (except e.g. for reading SD registers).
> > */
> > mmc->max_phys_segs = 32;
> > mmc->max_hw_segs = 32;
> > +#endif
> > mmc->max_blk_size = 2048; /* BLEN is 11 bits (+1) */
> > mmc->max_blk_count = 2048; /* NBLK is 11 bits (+1) */
> > mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
>
>
>
> In my test environment, write and Read speed without this patch was 2.6Mbytes/sec and 2.7Mbytes/sec respectively whereas write and read performance with this patch has jumped to 4.4Mbytes/sec and 5MBytes/sec, respectively. This testing has been done on SD Extreme III high speed 2GB SD card using FAT file system with help of dd command.
>
> This patch is for OMAP35X and not for OMAP2420. In the case of OMAP2420, number of maximum phys_segs and hw_segs is set to 32 when CONFIG_MMC_BLOCK_BOUNCE is not enabled and so speeds are better in OMAP2420 even if CONFIG_MMC_BLOCK_BOUNCE is not defined. But in the case of OMAP35X, setting of 32 to phys_segs and hw_segs is not supported currently by OMAP35X mmc controller driver. It means that phys_segs and hw_segs has to be 1 for OMAP35X mmc controller driver and so this patch increases performance.
Purushotam, can you please refresh your patch so I can apply it?
It currently does not apply, and it's sent with MIME quoted-printable
encoding, and the description should be wrapped to look nice in git
logs.
Thanks,
Tony
prev parent reply other threads:[~2008-05-16 18:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <B85A65D85D7EB246BE421B3FB0FBB593010A9B60D4@dbde02.ent.ti.com>
2008-05-15 13:30 ` [PATCH] Performance enhancement for MMCSD when feature CONFIG_MMC_BLOCK_BOUNCE is enabled in the MMC core Felipe Balbi
2008-05-16 1:03 ` Kyungmin Park
2008-05-16 6:45 ` Kumar, Purushotam
2008-05-16 18:02 ` Tony Lindgren [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080516180229.GY23002@atomide.com \
--to=tony@atomide.com \
--cc=anantgole@ti.com \
--cc=felipebalbi@users.sourceforge.net \
--cc=kmpark@infradead.org \
--cc=linux-omap-open-source@linux.omap.com \
--cc=linux-omap@vger.kernel.org \
--cc=purushotam@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox