[PATCH v8 06/12] mmc: mmc_test: test to measure how sg_len affect performance

Per Forlin per.forlin at linaro.org
Fri Jul 1 09:33:19 EDT 2011


On 28 June 2011 10:11, Per Forlin <per.forlin at linaro.org> wrote:
> test that measures how the mmc bandwidth depends on the numbers of sg elements
> in the sg list. The transfer size if fixed and sg length goes from a few up
> to 512. The purpose is to measure overhead caused by multiple sg elements.
>
> Signed-off-by: Per Forlin <per.forlin at linaro.org>
> ---
>  drivers/mmc/card/mmc_test.c |  151 +++++++++++++++++++++++++++++++++++++++----
>  1 files changed, 139 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
> -static int mmc_test_map_sg(struct mmc_test_mem *mem, unsigned long sz,
> +static int mmc_test_map_sg(struct mmc_test_mem *mem, unsigned long size,
>                           struct scatterlist *sglist, int repeat,
>                           unsigned int max_segs, unsigned int max_seg_sz,
> -                          unsigned int *sg_len)
> +                          unsigned int *sg_len, int min_sg_len)
>  {
>        struct scatterlist *sg = NULL;
>        unsigned int i;
> +       unsigned long sz = size;
>
>        sg_init_table(sglist, max_segs);
> +       if (min_sg_len > max_segs)
> +               min_sg_len = max_segs;
>
>        *sg_len = 0;
>        do {
>                for (i = 0; i < mem->cnt; i++) {
>                        unsigned long len = PAGE_SIZE << mem->arr[i].order;
>
> +                       if (min_sg_len && (size / min_sg_len < len))
> +                               len = size / min_sg_len;
Make aligned to 512
len = ALIGN(size / min_sg_len, 512);

I run into this issue running on arm realview with max test size 128k
instead of 128M.

/Per



More information about the linux-arm-kernel mailing list