17 Oct, 2008

40 commits

  • binfmt_elf_fdpic seems to have grabbed a hard-coded hack from an ancient
    version of binfmt_elf in order to try and fix up initial stack alignment
    on multi-threaded x86, which while in addition to being unused, was also
    pushed down beyond the first set of operations on the stack pointer,
    negating the entire purpose.

    These days, we have an architecture independent arch_align_stack(), so we
    switch to using that instead. Move the initial alignment up before the
    initial stores while we're at it.

    Signed-off-by: Paul Mundt
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt
     
  • Commit 483fad1c3fa1060d7e6710e84a065ad514571739 ("ELF loader support for
    auxvec base platform string") introduced AT_BASE_PLATFORM, but only
    implemented it for binfmt_elf.

    Given that AT_VECTOR_SIZE_BASE is unconditionally enlarged for us, and
    it's only optionally added in for the platforms that set
    ELF_BASE_PLATFORM, wire it up for binfmt_elf_fdpic, too.

    Signed-off-by: Paul Mundt
    Acked-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt
     
  • Update Erik Mouw's email address & affiliation in DocBook.

    Signed-off-by: Randy Dunlap
    Acked-by: Erik Mouw
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Remove CVS keywords that weren't updated for a long time from comments.

    Signed-off-by: Adrian Bunk
    Acked-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • In case of error, the function open_xa_dir returns an ERR pointer, but
    never returns a NULL pointer. So a NULL test that comes after an IS_ERR
    test should be deleted.

    The semantic match that finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @match_bad_null_test@
    expression x, E;
    statement S1,S2;
    @@
    x = open_xa_dir(...)
    ... when != x = E
    (
    * if (x == NULL && ...) S1 else S2
    |
    * if (x == NULL || ...) S1 else S2
    )
    //

    Signed-off-by: Julien Brunel
    Signed-off-by: Julia Lawall
    Cc: Jeff Mahoney
    Cc: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julien Brunel
     
  • Remove CVS keywords that weren't updated for a long time from comments.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • Fix a stack corruption caused by a corrupted hfs filesystem. If the
    catalog name length is corrupted the memcpy overwrites the catalog btree
    structure. Since the field is limited to HFS_NAMELEN bytes in the
    structure and the file format, we throw an error if it is too long.

    Cc: Roman Zippel
    Signed-off-by: Eric Sesterhenn
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Sesterhenn
     
  • While testing more corrupted images with hfsplus, i came across
    one which triggered the following bug:

    [15840.675016] BUG: unable to handle kernel paging request at fffffffb
    [15840.675016] IP: [] kmap+0x15/0x56
    [15840.675016] *pde = 00008067 *pte = 00000000
    [15840.675016] Oops: 0000 [#1] PREEMPT DEBUG_PAGEALLOC
    [15840.675016] Modules linked in:
    [15840.675016]
    [15840.675016] Pid: 11575, comm: ln Not tainted (2.6.27-rc4-00123-gd3ee1b4-dirty #29)
    [15840.675016] EIP: 0060:[] EFLAGS: 00010202 CPU: 0
    [15840.675016] EIP is at kmap+0x15/0x56
    [15840.675016] EAX: 00000246 EBX: fffffffb ECX: 00000000 EDX: cab919c0
    [15840.675016] ESI: 000007dd EDI: cab0bcf4 EBP: cab0bc98 ESP: cab0bc94
    [15840.675016] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    [15840.675016] Process ln (pid: 11575, ti=cab0b000 task=cab919c0 task.ti=cab0b000)
    [15840.675016] Stack: 00000000 cab0bcdc c0231cfb 00000000 cab0bce0 00000800 ca9290c0 fffffffb
    [15840.675016] cab145d0 cab919c0 cab15998 22222222 22222222 22222222 00000001 cab15960
    [15840.675016] 000007dd cab0bcf4 cab0bd04 c022cb3a cab0bcf4 cab15a6c ca9290c0 00000000
    [15840.675016] Call Trace:
    [15840.675016] [] ? hfsplus_block_allocate+0x6f/0x2d3
    [15840.675016] [] ? hfsplus_file_extend+0xc4/0x1db
    [15840.675016] [] ? hfsplus_get_block+0x8c/0x19d
    [15840.675016] [] ? sub_preempt_count+0x9d/0xab
    [15840.675016] [] ? __block_prepare_write+0x147/0x311
    [15840.675016] [] ? __grab_cache_page+0x52/0x73
    [15840.675016] [] ? block_write_begin+0x79/0xd5
    [15840.675016] [] ? hfsplus_get_block+0x0/0x19d
    [15840.675016] [] ? cont_write_begin+0x27f/0x2af
    [15840.675016] [] ? hfsplus_get_block+0x0/0x19d
    [15840.675016] [] ? tick_program_event+0x28/0x4c
    [15840.675016] [] ? trace_hardirqs_off+0xb/0xd
    [15840.675016] [] ? hfsplus_write_begin+0x2d/0x32
    [15840.675016] [] ? hfsplus_get_block+0x0/0x19d
    [15840.675016] [] ? pagecache_write_begin+0x33/0x107
    [15840.675016] [] ? __page_symlink+0x3c/0xae
    [15840.675016] [] ? __mark_inode_dirty+0x12f/0x137
    [15840.675016] [] ? page_symlink+0x19/0x1e
    [15840.675016] [] ? hfsplus_symlink+0x41/0xa6
    [15840.675016] [] ? vfs_symlink+0x99/0x101
    [15840.675016] [] ? sys_symlinkat+0x6b/0xad
    [15840.675016] [] ? sys_symlink+0x10/0x12
    [15840.675016] [] ? sysenter_do_call+0x12/0x31
    [15840.675016] =======================
    [15840.675016] Code: 00 00 75 10 83 3d 88 2f ec c0 02 75 07 89 d0 e8 12 56 05 00 5d c3 55 ba 06 00 00 00 89 e5 53 89 c3 b8 3d eb 7e c0 e8 16 74 00 00 03 c1 e8 1e 69 c0 d8 02 00 00 05 b8 69 8e c0 2b 80 c4 02 00
    [15840.675016] EIP: [] kmap+0x15/0x56 SS:ESP 0068:cab0bc94
    [15840.675016] ---[ end trace 4fea40dad6b70e5f ]---

    This happens because the return value of read_mapping_page() is passed on
    to kmap unchecked. The bug is triggered after the first
    read_mapping_page() in hfsplus_block_allocate(), this patch fixes all
    three usages in this functions but leaves the ones further down in the
    file unchanged.

    Signed-off-by: Eric Sesterhenn
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Sesterhenn
     
  • When an hfsplus image gets corrupted it might happen that the catalog
    namelength field gets b0rked. If we mount such an image the memcpy() in
    hfsplus_cat_build_key_uni() writes more than the 255 that fit in the name
    field. Depending on the size of the overwritten data, we either only get
    memory corruption or also trigger an oops like this:

    [ 221.628020] BUG: unable to handle kernel paging request at c82b0000
    [ 221.629066] IP: [] hfsplus_find_cat+0x10d/0x151
    [ 221.629066] *pde = 0ea29163 *pte = 082b0160
    [ 221.629066] Oops: 0002 [#1] PREEMPT DEBUG_PAGEALLOC
    [ 221.629066] Modules linked in:
    [ 221.629066]
    [ 221.629066] Pid: 4845, comm: mount Not tainted (2.6.27-rc4-00123-gd3ee1b4-dirty #28)
    [ 221.629066] EIP: 0060:[] EFLAGS: 00010206 CPU: 0
    [ 221.629066] EIP is at hfsplus_find_cat+0x10d/0x151
    [ 221.629066] EAX: 00000029 EBX: 00016210 ECX: 000042c2 EDX: 00000002
    [ 221.629066] ESI: c82d70ca EDI: c82b0000 EBP: c82d1bcc ESP: c82d199c
    [ 221.629066] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    [ 221.629066] Process mount (pid: 4845, ti=c82d1000 task=c8224060 task.ti=c82d1000)
    [ 221.629066] Stack: c080b3c4 c82aa8f8 c82d19c2 00016210 c080b3be c82d1bd4 c82aa8f0 00000300
    [ 221.629066] 01000000 750008b1 74006e00 74006900 65006c00 c82d6400 c013bd35 c8224060
    [ 221.629066] 00000036 00000046 c82d19f0 00000082 c8224548 c8224060 00000036 c0d653cc
    [ 221.629066] Call Trace:
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? native_sched_clock+0x82/0x96
    [ 221.629066] [] ? __kernel_text_address+0x1b/0x27
    [ 221.629066] [] ? dump_trace+0xca/0xd6
    [ 221.629066] [] ? save_stack_address+0x0/0x2c
    [ 221.629066] [] ? save_stack_trace+0x1c/0x3a
    [ 221.629066] [] ? save_trace+0x37/0x8d
    [ 221.629066] [] ? add_lock_to_list+0x67/0x8d
    [ 221.629066] [] ? validate_chain+0x8a4/0x9f4
    [ 221.629066] [] ? down+0xc/0x2f
    [ 221.629066] [] ? __lock_acquire+0x68a/0x6e0
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? native_sched_clock+0x82/0x96
    [ 221.629066] [] ? mark_held_locks+0x43/0x5a
    [ 221.629066] [] ? trace_hardirqs_on+0xb/0xd
    [ 221.629066] [] ? trace_hardirqs_on_caller+0xf4/0x12f
    [ 221.629066] [] ? _spin_unlock_irqrestore+0x42/0x58
    [ 221.629066] [] ? down+0x2b/0x2f
    [ 221.629066] [] ? hfsplus_iget+0xa0/0x154
    [ 221.629066] [] ? hfsplus_fill_super+0x280/0x447
    [ 221.629066] [] ? native_sched_clock+0x82/0x96
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? __lock_acquire+0x68a/0x6e0
    [ 221.629066] [] ? string+0x2b/0x74
    [ 221.629066] [] ? vsnprintf+0x2e9/0x512
    [ 221.629066] [] ? dump_trace+0xca/0xd6
    [ 221.629066] [] ? save_stack_trace+0x1c/0x3a
    [ 221.629066] [] ? save_stack_trace+0x1c/0x3a
    [ 221.629066] [] ? save_trace+0x37/0x8d
    [ 221.629066] [] ? add_lock_to_list+0x67/0x8d
    [ 221.629066] [] ? validate_chain+0x8a4/0x9f4
    [ 221.629066] [] ? up+0xc/0x2f
    [ 221.629066] [] ? __lock_acquire+0x68a/0x6e0
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? trace_hardirqs_off_caller+0x14/0x9b
    [ 221.629066] [] ? trace_hardirqs_off+0xb/0xd
    [ 221.629066] [] ? native_sched_clock+0x82/0x96
    [ 221.629066] [] ? snprintf+0x1b/0x1d
    [ 221.629066] [] ? disk_name+0x25/0x67
    [ 221.629066] [] ? get_sb_bdev+0xcd/0x10b
    [ 221.629066] [] ? kstrdup+0x2a/0x4c
    [ 221.629066] [] ? hfsplus_get_sb+0x13/0x15
    [ 221.629066] [] ? hfsplus_fill_super+0x0/0x447
    [ 221.629066] [] ? vfs_kern_mount+0x3b/0x76
    [ 221.629066] [] ? do_kern_mount+0x32/0xba
    [ 221.629066] [] ? do_new_mount+0x46/0x74
    [ 221.629066] [] ? do_mount+0x175/0x193
    [ 221.629066] [] ? trace_hardirqs_on_caller+0xf4/0x12f
    [ 221.629066] [] ? __get_free_pages+0x1e/0x24
    [ 221.629066] [] ? lock_kernel+0x19/0x8c
    [ 221.629066] [] ? sys_mount+0x51/0x9b
    [ 221.629066] [] ? sys_mount+0x64/0x9b
    [ 221.629066] [] ? sysenter_do_call+0x12/0x31
    [ 221.629066] =======================
    [ 221.629066] Code: 89 c2 c1 e2 08 c1 e8 08 09 c2 8b 85 e8 fd ff ff 66 89 50 06 89 c7 53 83 c7 08 56 57 68 c4 b3 80 c0 e8 8c 5c ef ff 89 d9 c1 e9 02 a5 89 d9 83 e1 03 74 02 f3 a4 83 c3 06 8b 95 e8 fd ff ff 0f
    [ 221.629066] EIP: [] hfsplus_find_cat+0x10d/0x151 SS:ESP 0068:c82d199c
    [ 221.629066] ---[ end trace e417a1d67f0d0066 ]---

    Since hfsplus_cat_build_key_uni() returns void and only has one callsite,
    the check is performed at the callsite.

    Signed-off-by: Eric Sesterhenn
    Reviewed-by: Pekka Enberg
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Sesterhenn
     
  • Check whether the file system was to be mounted read only anyway before
    warning about changing the mount to read only.

    Signed-off-by: Mike Crowe
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Crowe
     
  • Does compile-time byteswapping rather than runtime.

    Noticed by sparse:
    fs/befs/super.c:29:6: warning: cast to restricted __le32
    fs/befs/super.c:29:6: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/super.c:31:11: warning: cast to restricted __be32
    fs/befs/super.c:31:11: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:811:7: warning: cast to restricted __le32
    fs/befs/linuxvfs.c:811:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32
    fs/befs/linuxvfs.c:812:7: warning: cast to restricted __be32
    fs/befs/linuxvfs.c:812:7: warning: cast from restricted fs32

    Signed-off-by: Harvey Harrison
    Cc: "Sergey S. Kostyliov"
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • A very large directory with many read failures (either due to storage
    problems, or due to invalid size & blocks from corruption) will generate a
    printk storm as the filesystem continues to try to read all the blocks.
    This flood of messages can tie up the box until it is complete - which may
    be a very long time, especially for very large corrupted values.

    This is fixed by only reporting the corruption once each time we try to
    read the directory.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Eric Sandeen
    Signed-off-by: "Theodore Ts'o"
    Cc: Eugene Teo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Sandeen
     
  • We could run into ENOSPC error on ext2, even when there is free blocks on
    the filesystem.

    The problem is triggered in the case the goal block group has 0 free
    blocks , and the rest block groups are skipped due to the check of
    "free_blocks < windowsz/2". Current code could fall back to non
    reservation allocation to prevent early ENOSPC after examing all the block
    groups with reservation on , but this code was bypassed if the reservation
    window is turned off already, which is true in this case.

    This patch fixed two issues:
    1) We don't need to turn off block reservation if the goal block group has
    0 free blocks left and continue search for the rest of block groups.

    Current code the intention is to turn off the block reservation if the
    goal allocation group has a few (some) free blocks left (not enough for
    make the desired reservation window),to try to allocation in the goal
    block group, to get better locality. But if the goal blocks have 0 free
    blocks, it should leave the block reservation on, and continues search for
    the next block groups,rather than turn off block reservation completely.

    2) we don't need to check the window size if the block reservation is off.

    The problem was originally found and fixed in ext4.

    Signed-off-by: Mingming Cao
    Cc: Theodore Ts'o
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mingming Cao
     
  • Remove CVS keywords that weren't updated for a long time from comments.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • PnP encodes the resource type directly as its struct resource->flags value
    which is an unsigned long. Make it so...

    Signed-off-by: Rene Herman
    Cc: "H. Peter Anvin"
    Acked-by: Bjorn Helgaas
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rene Herman
     
  • There's no point in printing some ancient version number forever.

    Signed-off-by: Adrian Bunk
    Acked-by: Rene Herman
    Acked-by: Bjorn Helgaas
    Acked-by: Adam M Belay
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • echo 3 >> /sys/class/graphics/fbcon/rotate_all, then switch to another
    console. Result:

    BUG: unable to handle kernel paging request at ffffc20005d00000
    IP: [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
    PGD 7e228067 PUD 7e229067 PMD 7bc1f067 PTE 0
    Oops: 0002 [1] SMP
    CPU 1
    Modules linked in: [...a lot...]
    Pid: 10, comm: events/1 Not tainted 2.6.26.5-45.fc9.x86_64 #1
    RIP: 0010:[bitfill_aligned+149/265] [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
    RSP: 0018:ffff81007d811bc8 EFLAGS: 00010216
    RAX: ffffc20005d00000 RBX: 0000000000000000 RCX: 0000000000000400
    RDX: 0000000000000000 RSI: ffffc20005d00000 RDI: ffffffffffffffff
    RBP: ffff81007d811be0 R08: 0000000000000400 R09: 0000000000000040
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000010000
    R13: ffffffff811632f0 R14: 0000000000000006 R15: ffff81007cb85400
    FS: 0000000000000000(0000) GS:ffff81007e004780(0000) knlGS:0000000000000000
    CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: ffffc20005d00000 CR3: 0000000000201000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process events/1 (pid: 10, threadinfo ffff81007d810000, task ffff81007d808000)
    Stack: ffff81007c9d75a0 0000000000000000 0000000000000000 ffff81007d811c80
    ffffffff81163a61 ffff810000000000 ffffffff8115f9c8 0000001000000000
    0000000100aaaaaa 000000007cd0d4a0 fffffd8a00000800 0001000000000000
    Call Trace:
    [cfb_fillrect+523/798] cfb_fillrect+0x20b/0x31e
    [soft_cursor+416/436] ? soft_cursor+0x1a0/0x1b4
    [ccw_clear_margins+205/263] ccw_clear_margins+0xcd/0x107
    [fbcon_clear_margins+59/61] fbcon_clear_margins+0x3b/0x3d
    [fbcon_switch+1291/1466] fbcon_switch+0x50b/0x5ba
    [redraw_screen+261/481] redraw_screen+0x105/0x1e1
    [ccw_cursor+0/1869] ? ccw_cursor+0x0/0x74d
    [complete_change_console+48/190] complete_change_console+0x30/0xbe
    [change_console+115/120] change_console+0x73/0x78
    [console_callback+0/292] ? console_callback+0x0/0x124
    [console_callback+97/292] console_callback+0x61/0x124
    [schedule_delayed_work+25/30] ? schedule_delayed_work+0x19/0x1e
    [run_workqueue+139/282] run_workqueue+0x8b/0x11a
    [worker_thread+221/238] worker_thread+0xdd/0xee
    [autoremove_wake_function+0/56] ? autoremove_wake_function+0x0/0x38
    [worker_thread+0/238] ? worker_thread+0x0/0xee
    [kthread+73/118] kthread+0x49/0x76
    [child_rip+10/18] child_rip+0xa/0x12
    [kthread+0/118] ? kthread+0x0/0x76
    [child_rip+0/18] ? child_rip+0x0/0x12

    Because fbcon_set_all_vcs()->FBCON_SWAP() uses display->rotate == 0 instead
    of fbcon_ops->rotate, and vc_resize() has no effect because it is called with
    new_cols/rows == ->vc_cols/rows.

    Tested on 2.6.26.5-45.fc9.x86_64, but
    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git seems to
    have the same problem.

    Signed-off-by: Oleg Nesterov
    Cc: Krzysztof Helt
    Cc: [2.6.27.x, 2.6.26.x, maybe 2.6.25.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Add driver for TMIO framebuffer cells as found e.g. in Toshiba TC6393XB
    chips.

    Signed-off-by: Dmitry Baryshkov
    Cc: Ian Molton
    Acked-by: Samuel Ortiz
    Acked-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dmitry Baryshkov
     
  • I'm stepping up as maintainer for the Epson S1D13XXXFB driver since I have
    2 platforms currently using it.

    Signed-off-by: Kristoffer Ericson
    Acked-by: Thibaut Varene
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kristoffer Ericson
     
  • Make alloc_carmine_fb() __devinit.

    WARNING: drivers/video/carminefb.o(.text+0x81b): Section mismatch in reference from the function alloc_carmine_fb() to the variable .devinit.data:carminefb_fix

    The function alloc_carmine_fb() references the variable __devinitdata
    carminefb_fix. This is often because alloc_carmine_fb lacks a
    __devinitdata annotation or the annotation of carminefb_fix is wrong.

    Signed-off-by: Randy Dunlap
    Cc: Sebastian Siewior
    Cc: Geert Uytterhoeven
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Support the Matrox G200eV chip, based on timings that I found in the X.org
    matrox driver.

    Signed-off-by: Darrick J. Wong
    Acked-by: Krzysztof Helt
    Cc: Petr Vandrovec
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • The Epson s1d13xxx hardware is common in many handhelds, but our driver is
    currently locked to a single chip revision. This patch adds an array of
    known to work revisions (which can be extended).

    [akpm@linux-foundation.org: cleanups]
    Signed-off-by: Kristoffer Ericson
    Acked-by: Thibaut Varène
    Cc: Geert Uytterhoeven
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kristoffer Ericson
     
  • Currently, it is possible to set a graphics VESA mode at boot time via the
    vga= parameter even when no framebuffer driver supporting this is
    configured. This could lead to the system booting with a black screen,
    without a usable console.

    Fix this problem by only allowing to set graphics modes at boot time if a
    supporting framebuffer driver is configured.

    Signed-off-by: Michal Januszewski
    Acked-by: Krzysztof Helt
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Januszewski
     
  • There's no point in checking diff == c->vc_rows, because it can be true
    only when count == 0, but we already checked that. Additionally move
    variables used only in one block to this block.

    Signed-off-by: Marcin Slusarz
    Cc: Antonino Daplas
    Acked-by: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marcin Slusarz
     
  • Join multiple scr_memcpyw into 1-3 calls (usually 2). (benchmarked
    average speedup: 1%)

    Signed-off-by: Marcin Slusarz
    Cc: Krzysztof Helt
    Cc: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marcin Slusarz
     
  • The current EDID parser in the linux kernel ignores interlace modes. The
    patch looks for the edid interlace flag and adjusts the vertical
    resolution if it is found.

    Signed-off-by: Jon Dufresne
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jon Dufresne
     
  • Add a maintainer entry for the uvesafb driver.

    Signed-off-by: Michal Januszewski
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Januszewski
     
  • Some BIOSes return error codes when queried for information about
    modes from their own modelist. uvesafb treats this as an error
    case and bails out.

    Change this behavior so that broken modes do not prevent the driver
    from working. Only the failure to retrieve information about any
    usable video mode is considered to be an error case.

    Signed-off-by: Michal Januszewski
    Cc: Krzysztof Helt
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Januszewski
     
  • Document the change from the old "mode" parameter to the "mode_option"
    parameter.

    Signed-off-by: Mike Pagano
    Cc: Krzysztof Halasa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Pagano
     
  • Implement support for HW color expansion of 1bpp images, along with some
    improvements to the FIFO handling and other accel operations.

    The offset fixup code is now unnecessary as the fbcon core will call our
    set_par upon switch back from KD_GRAPHICS before anything else happens. I
    removed it as it would slow down accel operations.

    The fifo wait has been improved to avoid hitting the HW register as often,
    and the various accel ops are now performing better caching of register
    values.

    Overall, this improve accel performances. The imageblit acceleration does
    result in a small overall regression in performances on some machines (on
    the order of 5% on some x86), probably becaus the SW path provides a
    better bus utilisation, but I decided to ingnore that as the performances
    is still very good, and on the other hand, some machines such as some
    sparc64 get a 3 fold performance improvement.

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

    Benjamin Herrenschmidt
     
  • Fix a couple of incomplete tests of the chip families in the engine
    init/reset code and proper initialization of the destination cache mode.
    The result should better match what the latest X radeon driver does.

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

    Benjamin Herrenschmidt
     
  • Remove imacfb entirely, merging its DMI table into the (otherwise very
    similar) efifb driver. This also adds hardware support for many of the
    newer Intel Apple hardware. This has been fairly well tested; we've been
    shipping it in Fedora for some time.

    Signed-off-by: Peter Jones
    Cc: Krzysztof Helt
    Cc: Geert Uytterhoeven
    Cc: Jaya Kumar
    Cc: Ralf Baechle
    Cc: Maciej W. Rozycki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

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

    Stanislaw Gruszka
     
  • A memory clock value (MCLK) is changed to a minimum required by a current
    mode bandwidth. This usually lowers the MCLK to its minimum (50 MHz) thus
    decreasing the card performance. Just leave the MCLK value set by card
    BIOS.

    The CL-GD5446 Technical Reference Manual point 9.9.1.3 states that if a
    pixclock value is close (~1%) to the MCLK or MCLK/2 this may result in a
    jitter on the screen. A countermeasure is to use the MCLK as pixclock
    source instead of a VCLK. The patch implements this as well.

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

    Krzysztof Helt
     
  • The 16bpp mode did not work on the Cirrus cards as the visual type was set
    to DIRECTCOLOR instead of TRUECOLOR. The Alpine family used one incorrect
    register setting so this 16bpp modes generated wrong horizontal frequency.

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

    Krzysztof Helt
     
  • The noaccel parameter is already handled if the driver is not built as
    module.

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

    Krzysztof Helt
     
  • Move call to pixclock calculation into the cirrusfb_set_par_foo(). It
    makes copy of clock registers redundant.

    Simplify clock calculations further.

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

    Krzysztof Helt
     
  • Move calculations of CRT register values into the cirrusfb_set_par_foo()
    where the values are used.

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

    Krzysztof Helt
     
  • Add __devinit attribute to probing functions. This fixed section mismatch
    warning from my previous patch.

    Kill one redundant forward declaration.

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

    Krzysztof Helt
     
  • Use modedb for initial mode instead of table of few predefined modes.

    Add mode_option module parameter as a step toward unification of frame
    buffers' parameters.

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

    Krzysztof Helt