14 Sep, 2008

1 commit

  • When suspending the system with atmel_lcdfb enabled, I sometimes see
    this:

    atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10

    Which can be explained by the fact that we're not stopping the LCD
    controller and its DMA engine when suspending, we're just gating the
    clocks to them.

    There's another potential issue which may be harder to trigger but
    much more nasty: If we gate the clocks at _just_ the right moment,
    e.g. when the DMA engine is doing a bus transaction, we may cause the
    DMA engine to violate the system bus protocol and cause a lockup.

    Avoid these issues by shutting down the LCD controller before entering
    suspend (and restarting it when resuming). This prevents the underrun
    from happening in the first place, and prevents whatever nastiness is
    happening when the bus clock stops in the middle of a DMA transfer.

    Signed-off-by: Haavard Skinnemoen
    Acked-by: Nicolas Ferre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     

06 Sep, 2008

1 commit

  • If framebuffer registration failed in platform driver ->probe() callback,
    dev_get_drvdata() points to freed memory region, but ->remove() function
    try to use it and the following oops occurs:

    Unable to handle kernel NULL pointer dereference at virtual address 00000228
    pgd = c3a20000
    [00000228] *pgd=23a2b031, *pte=00000000, *ppte=00000000
    Internal error: Oops: 17 [#1]
    Modules linked in: atmel_lcdfb(-) cfbcopyarea cfbimgblt cfbfillrect [last unloaded: atmel_lcdfb]
    CPU: 0 Not tainted (2.6.27-rc2 #116)
    PC is at atmel_lcdfb_remove+0x14/0xf8 [atmel_lcdfb]
    LR is at platform_drv_remove+0x20/0x24
    pc : [] lr : [] psr: a0000013
    sp : c3a45e84 ip : c3a45ea0 fp : c3a45e9c
    r10: 00000002 r9 : c3a44000 r8 : c0026c04
    r7 : 00000880 r6 : c02bb228 r5 : 00000000 r4 : c02bb230
    r3 : bf007e3c r2 : c02bb230 r1 : 00000004 r0 : c02bb228
    Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    Control: 0005317f Table: 23a20000 DAC: 00000015
    Process rmmod (pid: 6799, stack limit = 0xc3a44260)
    Stack: (0xc3a45e84 to 0xc3a46000)
    5e80: c02bb230 bf007e3c bf007e3c c3a45eac c3a45ea0 c0157d28 bf006bc0
    5ea0: c3a45ec4 c3a45eb0 c0156d20 c0157d18 c02bb230 c02bb2d8 c3a45ee0 c3a45ec8
    5ec0: c0156da8 c0156cb8 bf007e3c bf007ee0 c02c8e14 c3a45efc c3a45ee4 c0156018
    5ee0: c0156d50 bf007e3c bf007ee0 00000000 c3a45f18 c3a45f00 c0157220 c0155f9c
    5f00: 00000000 bf007ee0 bf008000 c3a45f28 c3a45f1c c0157e34 c01571ec c3a45f38
    5f20: c3a45f2c bf006ba8 c0157e30 c3a45fa4 c3a45f3c c005772c bf006ba4 656d7461
    5f40: 636c5f6c 00626664 c004c988 c3a45f80 c3a45f5c 00000000 c3a45fb0 00000000
    5f60: ffffffff becaccd8 00000880 00000000 000a5e80 00000001 bf007ee0 00000880
    5f80: c3a45f84 00000000 becaccd4 00000002 000003df 00000081 00000000 c3a45fa8
    5fa0: c0026a60 c0057584 00000002 000003df 00900081 000a5e80 00000880 00000000
    5fc0: becaccd4 00000002 000003df 00000000 000a5e80 00000001 00000002 0000005f
    5fe0: 4004f5ec becacbe8 0001a158 4004f5fc 20000010 00900081 f9ffbadf 7bbfb2bb
    Backtrace:
    [] (atmel_lcdfb_remove+0x0/0xf8 [atmel_lcdfb]) from [] (platform_drv_remove+0x20/0x24)
    r6:bf007e3c r5:bf007e3c r4:c02bb230
    [] (platform_drv_remove+0x0/0x24) from [] (__device_release_driver+0x78/0x98)
    [] (__device_release_driver+0x0/0x98) from [] (driver_detach+0x68/0x90)
    r5:c02bb2d8 r4:c02bb230
    [] (driver_detach+0x0/0x90) from [] (bus_remove_driver+0x8c/0xb4)
    r6:c02c8e14 r5:bf007ee0 r4:bf007e3c
    [] (bus_remove_driver+0x0/0xb4) from [] (driver_unregister+0x44/0x48)
    r6:00000000 r5:bf007ee0 r4:bf007e3c
    [] (driver_unregister+0x0/0x48) from [] (platform_driver_unregister+0x14/0x18)
    r6:bf008000 r5:bf007ee0 r4:00000000
    [] (platform_driver_unregister+0x0/0x18) from [] (atmel_lcdfb_exit+0x14/0x1c [atmel_lcdfb])
    [] (atmel_lcdfb_exit+0x0/0x1c [atmel_lcdfb]) from [] (sys_delete_module+0x1b8/0x22c)
    [] (sys_delete_module+0x0/0x22c) from [] (ret_fast_syscall+0x0/0x2c)
    r7:00000081 r6:000003df r5:00000002 r4:becaccd4
    Code: e92dd870 e24cb004 e59050c4 e1a06000 (e5954228)
    ---[ end trace 85476b184d9e68d8 ]---

    This patch fixes the oops.

    Signed-off-by: Stanislaw Gruszka
    Acked-by: Nicolas Ferre
    Acked-by: Krzysztof Helt
    Cc: Haavard Skinnemoen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stanislaw Gruszka
     

03 Sep, 2008

3 commits

  • If there are more then one graphics card handled by the tdfxfb driver the
    name of the frame buffer overruns reserved size.

    Signed-off-by: Krzysztof Helt
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Fix memory detection on Voodoo3 cards with SDRAM memory.

    Signed-off-by: Krzysztof Helt
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • 1. Check if virtual resolution fits into memory.
    Otherwise, Linux hangs during panning.
    2. When selected use all available memory to
    maximize yres_virtual to speed up panning
    (previously also xres_virtual was increased).
    3. Simplify memory restriction calculations.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     

27 Aug, 2008

1 commit


24 Aug, 2008

1 commit


21 Aug, 2008

3 commits

  • Fixes kernel BUG at lib/radix-tree.c:473.

    Previously the handler was incidentally provided by tmpfs but this was
    removed with:

    commit 14fcc23fdc78e9d32372553ccf21758a9bd56fa1
    Author: Hugh Dickins
    Date: Mon Jul 28 15:46:19 2008 -0700

    tmpfs: fix kernel BUG in shmem_delete_inode

    relying on this behaviour was incorrect in any case and the BUG also
    appeared when the device node was on an ext3 filesystem.

    v2: override a_ops at open() time rather than mmap() time to minimise
    races per AKPM's concerns.

    Signed-off-by: Ian Campbell
    Cc: Jaya Kumar
    Cc: Nick Piggin
    Cc: Peter Zijlstra
    Cc: Hugh Dickins
    Cc: Johannes Weiner
    Cc: Jeremy Fitzhardinge
    Cc: Kel Modderman
    Cc: Markus Armbruster
    Cc: Krzysztof Helt
    Cc: [14fcc23fd is in 2.6.25.14 and 2.6.26.1]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Campbell
     
  • Fix bug: does nor properply resume after suspend mem
    Fix for PM_SUSPEND_MEM: Save and restore peripheral base and DMA registers

    Signed-off-by: Michael Hennerich
    Signed-off-by: Bryan Wu
    Acked-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Hennerich
     
  • Release cmap memory allocated in the probe function.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     

20 Aug, 2008

1 commit

  • * 'sh/for-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
    sh: Provide a FLAT_PLAT_INIT() definition.
    binfmt_flat: Stub in a FLAT_PLAT_INIT().
    video: export sh_mobile_lcdc panel size
    sh: select memchunk size using kernel cmdline
    sh: export sh7723 VEU as VEU2H
    input: migor_ts compile and detection fix
    sh: remove MSTPCR defines from Migo-R header file
    sh: Update sh7763rdp defconfig
    sh: Add support sh7760fb to sh7763rdp board
    sh: Add support sh_eth to sh7763rdp board
    sh: Disable 64kB hugetlbpage size when using 64kB PAGE_SIZE.
    sh: Don't export __{s,u}divsi3_i4i from SH-2 libgcc.
    fix SH7705_CACHE_32KB compilation
    sh: mach-x3proto: Fix up smc91x platform data.

    Linus Torvalds
     

17 Aug, 2008

1 commit

  • * master.kernel.org:/home/rmk/linux-2.6-arm: (38 commits)
    [ARM] 5191/1: ARM: remove CVS keywords
    [ARM] pxafb: fix the warning of incorrect lccr when lcd_conn is specified
    [ARM] pxafb: add flag to specify output format on LDD pins when base is RGBT16
    [ARM] pxafb: fix the incorrect configuration of GPIO77 as ACBIAS for TFT LCD
    [ARM] 5198/1: PalmTX: PCMCIA fixes
    [ARM] Fix a pile of broken watchdog drivers
    [ARM] update mach-types
    [ARM] 5196/1: fix inline asm constraints for preload
    [ARM] 5194/1: update .gitignore
    [ARM] add proc-macros.S include to proc-arm940 and proc-arm946
    [ARM] 5192/1: ARM TLB: add v7wbi_{possible,always}_flags to {possible,always}_tlb_flags
    [ARM] 5193/1: Wire up missing syscalls
    [ARM] traps: don't call undef hook functions with spinlock held
    [ARM] 5183/2: Provide Poodle LoCoMo GPIO names
    [ARM] dma-mapping: provide sync_range APIs
    [ARM] dma-mapping: improve type-safeness of DMA translations
    [ARM] Kirkwood: instantiate the orion_spi driver in the platform code
    [ARM] prevent crashing when too much RAM installed
    [ARM] Kirkwood: Instantiate mv_xor driver
    [ARM] Orion: Instantiate mv_xor driver for 5182
    ...

    Linus Torvalds
     

16 Aug, 2008

3 commits


15 Aug, 2008

2 commits


13 Aug, 2008

7 commits

  • Adjust and honor the vc_scrl_erase_char for 256 and 512 character fonts.

    It fixes the issue with disappearing cursor during scrolling
    (http://bugzilla.kernel.org/show_bug.cgi?id=11258). The issue was
    reported and tracked by Peter Hanzel.

    Signed-off-by: Krzysztof Helt
    Reported-by: Peter Hanzel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Specify how much physically continuous, DMA capable memory will be
    allocated at driver initialization time. This allow to create framebuffer
    device with larger virtual resolution. Combine with y-panning this can be
    used to implement double buffering acceleration method.

    Signed-off-by: Stanislaw Gruszka
    Acked-by: Haavard Skinnemoen
    Acked-by: Krzysztof Helt
    Cc: Nicolas Ferre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • Panning in the y-direction can be done by simply changing the DMA base
    address. This code is already in place, but FBIOPAN_DISPLAY will
    currently fail because ypanstep is 0.

    Set ypanstep to 1 to indicate that we do support y-panning and also set
    the necessary acceleration flags on AT91 (AVR32 already have them.)

    Signed-off-by: Haavard Skinnemoen
    Acked-by: Krzysztof Helt
    Cc: Nicolas Ferre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • The legacy i2c model is going away soon, so switch to the new model.

    Signed-off-by: Jean Delvare
    Acked-by: Krzysztof Helt
    Cc: Petr Vandrovec
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • Clean up the use of structure templates in i2c-matroxfb. In this case
    it's more efficient to initialize the few fields we need individually.
    This makes i2c-matroxfb.ko 16% smaller on my system.

    Signed-off-by: Jean Delvare
    Acked-by: Krzysztof Helt
    Cc: Petr Vandrovec
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • I broke an error path with d03c21ec0be7787ff6b75dcf56c0e96209ccbfbd,
    sorry about that.

    The machine will crash if the i2c_attach_client() or maven_init_client()
    calls fail, although nobody has yet reported this happening.

    Signed-off-by: Jean Delvare
    Acked-by: Krzysztof Helt
    Cc: Petr Vandrovec
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • Some chips appear to have the 2D engine hang during screen redraw,
    typically in a sequence of copyarea operations. This appear to be
    solved by adding a flush of the engine destination pixel cache
    and waiting for the engine to be idle before issuing the accel
    operation. The performance impact seems to be fairly small.

    Here is a trace on an RV370 (PCI device ID 0x5b64), it records the
    RBBM_STATUS register, then the source x/y, destination x/y, and
    width/height used for the copy:

    ----------------------------------------
    radeonfb_prim_copyarea: STATUS[00000140] src[210:70] dst[210:60] wh[a0:10]
    radeonfb_prim_copyarea: STATUS[00000140] src[2b8:70] dst[2b8:60] wh[88:10]
    radeonfb_prim_copyarea: STATUS[00000140] src[348:70] dst[348:60] wh[40:10]
    radeonfb_prim_copyarea: STATUS[80020140] src[390:70] dst[390:60] wh[88:10]
    radeonfb_prim_copyarea: STATUS[8002613f] src[40:80] dst[40:70] wh[28:10]
    radeonfb_prim_copyarea: STATUS[80026139] src[a8:80] dst[a8:70] wh[38:10]
    radeonfb_prim_copyarea: STATUS[80026133] src[e8:80] dst[e8:70] wh[80:10]
    radeonfb_prim_copyarea: STATUS[8002612d] src[170:80] dst[170:70] wh[30:10]
    radeonfb_prim_copyarea: STATUS[80026127] src[1a8:80] dst[1a8:70] wh[8:10]
    radeonfb_prim_copyarea: STATUS[80026121] src[1b8:80] dst[1b8:70] wh[88:10]
    radeonfb_prim_copyarea: STATUS[8002611b] src[248:80] dst[248:70] wh[68:10]
    ----------------------------------------

    When things are going fine the copies complete before the next ROP is
    even issued, but all of a sudden the 2D unit becomes active (bit 17 in
    RBBM_STATUS) and the FIFO retry (bit 13) and FIFO pipeline busy (bit
    14) are set as well. The FIFO begins to backup until it becomes full.

    What happens next is the radeon_fifo_wait() times out, and we access
    the chip illegally leading to a bus error which usually wedges the
    box. None of this makes it to the console screen, of course :-)
    radeon_fifo_wait() should be modified to reset the accelerator when
    this timeout happens instead of programming the chip anyways.

    ----------------------------------------
    radeonfb: FIFO Timeout !
    ERROR(0): Cheetah error trap taken afsr[0010080005000000] afar[000007f900800e40] TL1(0)
    ERROR(0): TPC[595114] TNPC[595118] O7[459788] TSTATE[11009601]
    ERROR(0): TPC
    ERROR(0): M_SYND(0), E_SYND(0), Privileged
    ERROR(0): Highest priority error (0000080000000000) "Bus error response from system bus"
    ERROR(0): D-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000]
    ERROR(0): D-cache data0[0000000000000000] data1[0000000000000000] data2[0000000000000000] data3[0000000000000000]
    ERROR(0): I-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000] u[0000000000000000] l[00\

    ERROR(0): I-cache INSN0[0000000000000000] INSN1[0000000000000000] INSN2[0000000000000000] INSN3[0000000000000000]
    ERROR(0): I-cache INSN4[0000000000000000] INSN5[0000000000000000] INSN6[0000000000000000] INSN7[0000000000000000]
    ERROR(0): E-cache idx[800e40] tag[000000000e049f4c]
    ERROR(0): E-cache data0[fffff8127d300180] data1[00000000004b5384] data2[0000000000000000] data3[0000000000000000]
    Ker:xnel panic - not syncing: Irrecoverable deferred error trap.
    ----------------------------------------

    Another quirk is that these copyarea calls will not happen until the
    first drivers/char/vt.c:redraw_screen() occurs. This will only happen
    if you 1) VC switch or 2) run "consolechars" or 3) unblank the screen.

    This seems to happen because until a redraw_screen() the screen scrolling
    method used by fbcon is not finalized yet. I've seen this with other fb
    drivers too.

    So if all you do is boot straight into X you will never see this bug on
    the relevant chips.

    Signed-off-by: David S. Miller
    Signed-off-by: Benjamin Herrenschmidt
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Miller
     

12 Aug, 2008

1 commit

  • This reverts commit 2d04a4a72d7e1519b4838f24bdd4b5d0f3f426dc, which made
    it impossible to make the softcursor use the highlight colors.

    Yes, the fourth bit should be "blinking", but since we cannot reasonably
    blink in fbcon, highlighting it with a bright background is preferable.

    Reported-by: Pavel Machek
    Cc: Stefano Stabellini
    Cc: Krzysztof Helt
    Cc: Antonino A. Daplas
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

11 Aug, 2008

1 commit


07 Aug, 2008

4 commits


06 Aug, 2008

8 commits

  • drivers/video/aty/atyfb_base.c:2663: warning: 'aty_resume_chip' defined
    but not used

    Signed-off-by: Alexander Beregalov
    Cc: Ville Syrjala
    Cc: Antonino A. Daplas
    Cc: Mark Asselstine
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Beregalov
     
  • of_node_put is needed before discarding a value received from
    of_find_node_by_type, eg in error handling code.

    The semantic patch that makes the change is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @@
    struct device_node *n;
    struct device_node *n1;
    struct device_node *n2;
    statement S;
    identifier f1,f2;
    expression E1,E2;
    constant C;
    @@

    n = of_find_node_by_type(...)
    ...
    if (!n) S
    ... when != of_node_put(n)
    when != n1 = f1(n,...)
    when != E1 = n
    when any
    when strict
    (
    + of_node_put(n);
    return -C;
    |
    of_node_put(n);
    |
    n2 = f2(n,...)
    |
    E2 = n
    |
    return ...;
    )
    //

    Signed-off-by: Julia Lawall
    Acked-by: Krzysztof Helt
    Cc: Timur Tabi
    Cc: York Sun
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julia Lawall
     
  • The name of the i2c buses shows in the output of "i2cdetect -l", so
    it's important to give informative names.

    Signed-off-by: Jean Delvare
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • If the 'clear' command is used on the frame buffer with a logo the upper
    area is filled by few lines but not scrolled anymore.

    Fix this by removing the protected area for the logo if any part of the
    logo is cleared.

    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • I have a new PCI-E radeon RV380 series card (PCI device ID 5b64) that
    hangs in my sparc64 boxes when the init scripts set the font. The problem
    goes away if I disable acceleration.

    I haven't figured out that bug yet, but along the way I found some
    corrections to make based upon some auditing.

    1) The RB2D_DC_FLUSH_ALL value used by the kernel fb driver
    and the XORG video driver differ. I've made the kernel
    match what XORG is using.

    2) In radeonfb_engine_reset() we have top-level code structure
    that roughly looks like:

    if (family is 300, 350, or V350)
    do this;
    else
    do that;
    ...
    if (family is NOT 300, OR
    family is NOT 350, OR
    family is NOT V350)
    do another thing;

    this last conditional makes no sense, is always true,
    and obviously was likely meant to be "family is NOT
    300, 350, or V350". So I've made the code match the
    intent.

    Signed-off-by: David S. Miller
    Acked-by: Benjamin Herrenschmidt
    Tested-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Miller
     
  • Add the missing MODULE_ALIAS() to the pwm_backlight driver.

    Cc: Russell King
    Signed-off-by: Ben Dooks
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Make the error paths in the pwm_backlight driver more informative in the
    probe path, especially for the times that it finds an error.

    Cc: Russell King
    Signed-off-by: Ben Dooks
    Cc: Richard Purdie
    Acked-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • commit 20e061fb750d36ec0ffcb2e44ed7dafa9018223b
    Author: Ondrej Zajicek
    Date: Mon Apr 28 02:15:18 2008 -0700

    fbdev: framebuffer_alloc() fixes

    Correct the dev arg of framebuffer_alloc() in arkfb, s3fb and vt8623fb.

    causes a null-pointer deref because "info->dev is NULL, info was just
    kzallocated".

    Signed-off-by: Ondrej Zajicek
    Reported-by: "MadLoisae@gmx.net"
    Tested-by: "MadLoisae@gmx.net"
    Cc: Alexey Dobriyan
    Cc: "Antonino A. Daplas"
    Cc: Krzysztof Helt
    Cc: [2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ondrej Zajicek
     

03 Aug, 2008

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
    sparc64: Do not clobber %g7 in setcontext() trap.
    sparc64: Kill __show_regs().
    sparc: Add __KERNEL__ ifdef protection to pt_regs helpers.
    sparc64: Kill smp_report_regs().
    sparc64: Kill VERBOSE_SHOWREGS code.
    sparc64: Hook up trigger_all_cpu_backtrace().
    sparc64: Make global reg dumping even more useful.
    sparc: Ignore drivers/video/console/promcon_tbl.c conmakehash generated file
    sparc64: FUTEX_OP_ANDN fix
    sparc: merge of_platform_{32,64}.h
    sparc64: Kill isa_bus_type.
    sparc64: Fix global reg snapshotting on self-cpu.

    Linus Torvalds
     

02 Aug, 2008

1 commit

  • Some module parameters with only one line have the '\n' at the end of the
    description. This is not needed nor wanted as after the description the
    type (i.e. int) is followed by a newline.

    Some modules contain a multi-line description, these are not affected
    by this patch.

    Signed-off-by: Niels de Vos
    Acked-by: Randy Dunlap
    Cc: John W. Linville
    Cc: Ed L. Cashin
    Cc: Dave Airlie
    Cc: Roland Dreier
    Acked-by: Mauro Carvalho Chehab
    Cc: Jeff Garzik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Niels de Vos