linux/drivers/media/platform
Kirill Smelkov 10ce844158 [media] vivi: vivi_dev->line[] was not aligned
Though dev->line[] is u8 array we work with it as with u16, u24 or u32
pixels, and also pass it to memcpy() and it's better to align it to at
least 4.
Before the patch, on x86 offsetof(vivi_dev, line) was 1003 and after
patch it is 1004.
There is slight performance increase, but I think is is slight, only
because we start copying not from line[0]:
    ---- 8< ---- drivers/media/platform/vivi.c
    static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
    {
            ...
            for (h = 0; h < hmax; h++)
                    memcpy(vbuf + h * wmax * dev->pixelsize,
                           dev->line + (dev->mv_count % wmax) * dev->pixelsize,
                           wmax * dev->pixelsize);
before:
    # cmdline : /home/kirr/local/perf/bin/perf record -g -a sleep 20
    #
    # Samples: 49K of event 'cycles'
    # Event count (approx.): 16799780016
    #
    # Overhead          Command         Shared Object
    # ........  ...............  ....................
    #
        27.51%             rawv  libc-2.13.so          [.] __memcpy_ssse3
        23.77%           vivi-*  [kernel.kallsyms]     [k] memcpy
         9.96%             Xorg  [unknown]             [.] 0xa76f5e12
         4.94%           vivi-*  [vivi]                [k] gen_text.constprop.6
         4.44%             rawv  [vivi]                [k] gen_twopix
         3.17%           vivi-*  [vivi]                [k] vivi_fillbuff
         2.45%             rawv  [vivi]                [k] precalculate_line
         1.20%          swapper  [kernel.kallsyms]     [k] read_hpet
    23.77%           vivi-*  [kernel.kallsyms]     [k] memcpy
                     |
                     --- memcpy
                        |
                        |--99.28%-- vivi_fillbuff
                        |          vivi_thread
                        |          kthread
                        |          ret_from_kernel_thread
                         --0.72%-- [...]
after:
    # cmdline : /home/kirr/local/perf/bin/perf record -g -a sleep 20
    #
    # Samples: 49K of event 'cycles'
    # Event count (approx.): 16475832370
    #
    # Overhead          Command           Shared Object
    # ........  ...............  ......................
    #
        29.07%             rawv  libc-2.13.so            [.] __memcpy_ssse3
        20.57%           vivi-*  [kernel.kallsyms]       [k] memcpy
        10.20%             Xorg  [unknown]               [.] 0xa7301494
         5.16%           vivi-*  [vivi]                  [k] gen_text.constprop.6
         4.43%             rawv  [vivi]                  [k] gen_twopix
         4.36%           vivi-*  [vivi]                  [k] vivi_fillbuff
         2.42%             rawv  [vivi]                  [k] precalculate_line
         1.33%          swapper  [kernel.kallsyms]       [k] read_hpet

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2012-12-21 18:25:34 -02:00
..
blackfin [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
davinci [media] davinci: vpbe: remove unused variable in vpbe_initialize() 2012-12-21 14:23:09 -02:00
exynos-gsc [media] exynos-gsc: modify number of output/capture buffers 2012-12-21 10:26:44 -02:00
marvell-ccic
omap [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
omap3isp [media] v4l: Tell user space we're using monotonic timestamps 2012-12-21 11:20:51 -02:00
s3c-camif [media] V4L: Add driver for S3C24XX/S3C64XX SoC series camera interface 2012-11-28 09:43:34 -02:00
s5p-fimc [media] s5p-fimc: Improved pipeline try format routine 2012-12-21 13:58:31 -02:00
s5p-g2d
s5p-jpeg
s5p-mfc Linux 3.7-rc8 2012-12-04 10:46:21 -02:00
s5p-tv [media] v4l: s5p-tv: mixer: support for dmabuf exporting 2012-11-25 17:21:51 -02:00
soc_camera [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
arv.c
coda.c [media] media: coda: Fix H.264 header alignment - v2 2012-12-21 16:56:31 -02:00
coda.h
fsl-viu.c [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
indycam.c
indycam.h
Kconfig [media] media: add a VEU MEM2MEM format conversion and scaling driver 2012-12-20 14:23:10 -02:00
m2m-deinterlace.c [media] media: m2m-deinterlace: Do not set debugging flag to true 2012-12-21 18:25:07 -02:00
Makefile [media] media: add a VEU MEM2MEM format conversion and scaling driver 2012-12-20 14:23:10 -02:00
mem2mem_testdev.c [media] v4l: mem2mem_testdev: add support for dmabuf importing 2012-11-25 17:19:45 -02:00
mx2_emmaprp.c [media] [3.6.0-,3/5] media/mx2_emmaprp: use module_platform_driver macro 2012-10-27 11:35:11 -02:00
omap24xxcam-dma.c
omap24xxcam.c [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
omap24xxcam.h
sh_veu.c [media] sh_veu.c: fix two compilation warnings 2012-12-20 14:55:12 -02:00
sh_vou.c [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
timblogiw.c [media] v4l: Convert drivers to use monotonic timestamps 2012-12-21 10:56:43 -02:00
via-camera.c
via-camera.h
vino.c [media] v4l: Tell user space we're using monotonic timestamps 2012-12-21 11:20:51 -02:00
vino.h
vivi.c [media] vivi: vivi_dev->line[] was not aligned 2012-12-21 18:25:34 -02:00