17 Dec, 2009

1 commit

  • The reiserfs lock -> inode mutex dependency gets inverted when we
    relax the lock while walking to the tree.

    To fix this, use a specialized version of reiserfs_mutex_lock_safe
    that takes care of mutex subclasses. Then we can grab the inode
    mutex with I_MUTEX_XATTR subclass without any reiserfs lock
    dependency.

    This fixes the following report:

    [ INFO: possible circular locking dependency detected ]
    2.6.32-06793-gf405425-dirty #2
    -------------------------------------------------------
    mv/18566 is trying to acquire lock:
    (&REISERFS_SB(s)->lock){+.+.+.}, at: [] reiserfs_write_lock+0x28=
    /0x40

    but task is already holding lock:
    (&sb->s_type->i_mutex_key#5/3){+.+.+.}, at: []
    reiserfs_for_each_xattr+0x10c/0x380

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #1 (&sb->s_type->i_mutex_key#5/3){+.+.+.}:
    [] validate_chain+0xa23/0xf70
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] mutex_lock_nested+0x5f/0x2b0
    [] reiserfs_for_each_xattr+0x84/0x380
    [] reiserfs_delete_xattrs+0x15/0x50
    [] reiserfs_delete_inode+0x8f/0x140
    [] generic_delete_inode+0x9c/0x150
    [] generic_drop_inode+0x3d/0x60
    [] iput+0x47/0x50
    [] do_unlinkat+0xdb/0x160
    [] sys_unlink+0x10/0x20
    [] sysenter_do_call+0x12/0x36

    -> #0 (&REISERFS_SB(s)->lock){+.+.+.}:
    [] validate_chain+0xf68/0xf70
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] mutex_lock_nested+0x5f/0x2b0
    [] reiserfs_write_lock+0x28/0x40
    [] search_by_key+0x1f7b/0x21b0
    [] search_by_entry_key+0x1f/0x3b0
    [] reiserfs_find_entry+0x77/0x400
    [] reiserfs_lookup+0x85/0x130
    [] __lookup_hash+0xb4/0x110
    [] lookup_one_len+0xb3/0x100
    [] reiserfs_for_each_xattr+0x120/0x380
    [] reiserfs_delete_xattrs+0x15/0x50
    [] reiserfs_delete_inode+0x8f/0x140
    [] generic_delete_inode+0x9c/0x150
    [] generic_drop_inode+0x3d/0x60
    [] iput+0x47/0x50
    [] dentry_iput+0x6f/0xf0
    [] d_kill+0x24/0x50
    [] dput+0x5b/0x120
    [] sys_renameat+0x1b9/0x230
    [] sys_rename+0x28/0x30
    [] sysenter_do_call+0x12/0x36

    other info that might help us debug this:

    2 locks held by mv/18566:
    #0: (&sb->s_type->i_mutex_key#5/1){+.+.+.}, at: []
    lock_rename+0xcc/0xd0
    #1: (&sb->s_type->i_mutex_key#5/3){+.+.+.}, at: []
    reiserfs_for_each_xattr+0x10c/0x380

    stack backtrace:
    Pid: 18566, comm: mv Tainted: G C 2.6.32-06793-gf405425-dirty #2
    Call Trace:
    [] ? printk+0x18/0x1e
    [] print_circular_bug+0xc0/0xd0
    [] validate_chain+0xf68/0xf70
    [] ? trace_hardirqs_off+0xb/0x10
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] ? reiserfs_write_lock+0x28/0x40
    [] mutex_lock_nested+0x5f/0x2b0
    [] ? reiserfs_write_lock+0x28/0x40
    [] ? reiserfs_write_lock+0x28/0x40
    [] ? schedule+0x27a/0x440
    [] reiserfs_write_lock+0x28/0x40
    [] search_by_key+0x1f7b/0x21b0
    [] ? __lock_acquire+0x506/0xa70
    [] ? lock_release_non_nested+0x1e7/0x340
    [] ? reiserfs_write_lock+0x28/0x40
    [] ? trace_hardirqs_on_caller+0x124/0x170
    [] ? trace_hardirqs_on+0xb/0x10
    [] ? T.316+0x15/0x1a0
    [] ? sched_clock_cpu+0x9d/0x100
    [] search_by_entry_key+0x1f/0x3b0
    [] ? __mutex_unlock_slowpath+0x9a/0x120
    [] ? trace_hardirqs_on_caller+0x124/0x170
    [] reiserfs_find_entry+0x77/0x400
    [] reiserfs_lookup+0x85/0x130
    [] ? sched_clock_cpu+0x9d/0x100
    [] __lookup_hash+0xb4/0x110
    [] lookup_one_len+0xb3/0x100
    [] reiserfs_for_each_xattr+0x120/0x380
    [] ? delete_one_xattr+0x0/0x1c0
    [] ? math_error+0x22/0x150
    [] ? reiserfs_write_lock+0x28/0x40
    [] reiserfs_delete_xattrs+0x15/0x50
    [] ? reiserfs_write_lock+0x28/0x40
    [] reiserfs_delete_inode+0x8f/0x140
    [] ? generic_delete_inode+0x5f/0x150
    [] ? reiserfs_delete_inode+0x0/0x140
    [] generic_delete_inode+0x9c/0x150
    [] generic_drop_inode+0x3d/0x60
    [] iput+0x47/0x50
    [] dentry_iput+0x6f/0xf0
    [] d_kill+0x24/0x50
    [] dput+0x5b/0x120
    [] sys_renameat+0x1b9/0x230
    [] ? sched_clock_cpu+0x9d/0x100
    [] ? trace_hardirqs_off+0xb/0x10
    [] ? cpu_clock+0x4e/0x60
    [] ? do_page_fault+0x155/0x370
    [] ? up_read+0x16/0x30
    [] ? do_page_fault+0x155/0x370
    [] sys_rename+0x28/0x30
    [] sysenter_do_call+0x12/0x36

    Reported-by: Alexander Beregalov
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Mason
    Cc: Ingo Molnar
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

14 Dec, 2009

2 commits

  • When we were using the bkl, we didn't care about dependencies against
    other locks, but the mutex conversion created new ones, which is why
    we have reiserfs_mutex_lock_safe(), which unlocks the reiserfs lock
    before acquiring another mutex.

    But this trick actually fails if we have acquired the reiserfs lock
    recursively, as we try to unlock it to acquire the new mutex without
    inverted dependency, but we eventually only decrease its depth.

    This happens in the case of a nested inode creation/deletion.
    Say we have no space left on the device, we create an inode
    and tak the lock but fail to create its entry, then we release the
    inode using iput(), which calls reiserfs_delete_inode() that takes
    the reiserfs lock recursively. The path eventually ends up in
    journal_begin() where we try to take the journal safely but we
    fail because of the reiserfs lock recursion:

    [ INFO: possible circular locking dependency detected ]
    2.6.32-06486-g053fe57 #2
    -------------------------------------------------------
    vi/23454 is trying to acquire lock:
    (&journal->j_mutex){+.+...}, at: [] do_journal_begin_r+0x64/0x2f0

    but task is already holding lock:
    (&REISERFS_SB(s)->lock){+.+.+.}, at: [] reiserfs_write_lock+0x28/0x40

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #1 (&REISERFS_SB(s)->lock){+.+.+.}:
    [] validate_chain+0xa23/0xf70
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] mutex_lock_nested+0x5f/0x2b0
    [] reiserfs_write_lock+0x28/0x40
    [] do_journal_begin_r+0x6b/0x2f0
    [] journal_begin+0x7f/0x120
    [] reiserfs_remount+0x212/0x4d0
    [] do_remount_sb+0x67/0x140
    [] do_mount+0x436/0x6b0
    [] sys_mount+0x66/0xa0
    [] sysenter_do_call+0x12/0x36

    -> #0 (&journal->j_mutex){+.+...}:
    [] validate_chain+0xf68/0xf70
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] mutex_lock_nested+0x5f/0x2b0
    [] do_journal_begin_r+0x64/0x2f0
    [] journal_begin+0x7f/0x120
    [] reiserfs_delete_inode+0x9f/0x140
    [] generic_delete_inode+0x9c/0x150
    [] generic_drop_inode+0x3d/0x60
    [] iput+0x47/0x50
    [] reiserfs_create+0x16c/0x1c0
    [] vfs_create+0xc1/0x130
    [] do_filp_open+0x81c/0x920
    [] do_sys_open+0x4f/0x110
    [] sys_open+0x29/0x40
    [] sysenter_do_call+0x12/0x36

    other info that might help us debug this:

    2 locks held by vi/23454:
    #0: (&sb->s_type->i_mutex_key#5){+.+.+.}, at: []
    do_filp_open+0x27e/0x920
    #1: (&REISERFS_SB(s)->lock){+.+.+.}, at: []
    reiserfs_write_lock+0x28/0x40

    stack backtrace:
    Pid: 23454, comm: vi Not tainted 2.6.32-06486-g053fe57 #2
    Call Trace:
    [] ? printk+0x18/0x1e
    [] print_circular_bug+0xc0/0xd0
    [] validate_chain+0xf68/0xf70
    [] ? trace_hardirqs_off+0xb/0x10
    [] __lock_acquire+0x4e5/0xa70
    [] lock_acquire+0x7a/0xa0
    [] ? do_journal_begin_r+0x64/0x2f0
    [] mutex_lock_nested+0x5f/0x2b0
    [] ? do_journal_begin_r+0x64/0x2f0
    [] ? do_journal_begin_r+0x64/0x2f0
    [] ? delete_one_xattr+0x0/0x1c0
    [] do_journal_begin_r+0x64/0x2f0
    [] journal_begin+0x7f/0x120
    [] ? reiserfs_delete_xattrs+0x15/0x50
    [] reiserfs_delete_inode+0x9f/0x140
    [] ? generic_delete_inode+0x5f/0x150
    [] ? reiserfs_delete_inode+0x0/0x140
    [] generic_delete_inode+0x9c/0x150
    [] generic_drop_inode+0x3d/0x60
    [] iput+0x47/0x50
    [] reiserfs_create+0x16c/0x1c0
    [] ? inode_permission+0x7d/0xa0
    [] vfs_create+0xc1/0x130
    [] ? reiserfs_create+0x0/0x1c0
    [] do_filp_open+0x81c/0x920
    [] ? trace_hardirqs_off+0xb/0x10
    [] ? _spin_unlock+0x1d/0x20
    [] ? alloc_fd+0xba/0xf0
    [] do_sys_open+0x4f/0x110
    [] sys_open+0x29/0x40
    [] sysenter_do_call+0x12/0x36

    To fix this, use reiserfs_lock_once() from reiserfs_delete_inode()
    which prevents from adding reiserfs lock recursion.

    Reported-by: Alexander Beregalov
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Mason
    Cc: Ingo Molnar
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • While allocating the bitmap using vmalloc, we hold the reiserfs lock,
    which makes lockdep later reporting a possible deadlock as we may
    swap out pages to allocate memory and then take the reiserfs lock
    recursively:

    inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
    kswapd0/312 [HC0[0]:SC0[0]:HE1:SE1] takes:
    (&REISERFS_SB(s)->lock){+.+.?.}, at: [] reiserfs_write_lock+0x28/0x40
    {RECLAIM_FS-ON-W} state was registered at:
    [] mark_held_locks+0x62/0x90
    [] lockdep_trace_alloc+0x9a/0xc0
    [] kmem_cache_alloc+0x26/0xf0
    [] __get_vm_area_node+0x6c/0xf0
    [] __vmalloc_node+0x7e/0xa0
    [] vmalloc+0x2b/0x30
    [] reiserfs_init_bitmap_cache+0x39/0x70
    [] reiserfs_fill_super+0x2e8/0xb90
    [] get_sb_bdev+0x145/0x180
    [] get_super_block+0x21/0x30
    [] vfs_kern_mount+0x40/0xd0
    [] do_kern_mount+0x39/0xd0
    [] do_mount+0x2c7/0x6b0
    [] sys_mount+0x66/0xa0
    [] mount_block_root+0xc4/0x245
    [] mount_root+0x59/0x5f
    [] prepare_namespace+0x111/0x14b
    [] kernel_init+0xcf/0xdb
    [] kernel_thread_helper+0x7/0x1c

    This is actually fine for two reasons: we call vmalloc at mount time
    then it's not in the swapping out path. Also the reiserfs lock can be
    acquired recursively, but since its implementation depends on a mutex,
    it's hard and not necessary worth it to teach that to lockdep.

    The lock is useless at mount time anyway, at least until we replay the
    journal. But let's remove it from this path later as this needs
    more thinking and is a sensible change.

    For now we can just relax the lock around vmalloc,

    Reported-by: Alexander Beregalov
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Mason
    Cc: Ingo Molnar
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

07 Dec, 2009

1 commit


03 Dec, 2009

15 commits


02 Dec, 2009

21 commits

  • mmc_remove_host() will cause the mmc core to switch off the bus power by
    eventually calling pxamci_set_ios(). This function uses the regulator or
    the GPIO which have been freed already.

    This causes the following Oops on module unload.

    [ 49.519649] Unable to handle kernel paging request at virtual address 30303a70
    [ 49.526878] pgd = c7084000
    [ 49.529563] [30303a70] *pgd=00000000
    [ 49.533136] Internal error: Oops: 5 [#1]
    [ 49.537025] last sysfs file: /sys/devices/platform/pxa27x-ohci/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_level
    [ 49.547471] Modules linked in: pxamci(-) eeti_ts
    [ 49.552061] CPU: 0 Not tainted (2.6.32-rc8 #322)
    [ 49.557001] PC is at regulator_is_enabled+0x3c/0xbc
    [ 49.561846] LR is at regulator_is_enabled+0x30/0xbc
    [ 49.566691] pc : [] lr : [] psr: 60000013
    [ 49.566702] sp : c7083e70 ip : 30303a30 fp : 00000000
    [ 49.578093] r10: c705e200 r9 : c7082000 r8 : c705e2e0
    [ 49.583280] r7 : c7061340 r6 : c7061340 r5 : c7083e70 r4 : 00000000
    [ 49.589759] r3 : c04dc434 r2 : c04dc434 r1 : c03eecea r0 : 00000047
    [ 49.596241] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    [ 49.603329] Control: 0000397f Table: a7084018 DAC: 00000015
    [ 49.609031] Process rmmod (pid: 1101, stack limit = 0xc7082278)
    [ 49.614908] Stack: (0xc7083e70 to 0xc7084000)
    [ 49.619238] 3e60: c7082000 c703c4f8 c705ea00 c04f4074
    [ 49.627366] 3e80: 00000000 c705e3a0 ffffffff c0247ddc c70361a0 00000000 c705e3a0 ffffffff
    [ 49.635499] 3ea0: c705e200 bf006400 c78c4f00 c705e200 c705e3a0 ffffffff c705e200 ffffffff
    [ 49.643633] 3ec0: c04d8ac8 c02476d0 ffffffff c0247c60 c705e200 c0248678 c705e200 c0249064
    [ 49.651765] 3ee0: ffffffff bf006204 c04d8ad0 c04d8ad0 c04d8ac8 bf007490 00000880 c00440c4
    [ 49.659898] 3f00: 0000b748 c01c5708 bf007490 c01c44c8 c04d8ac8 c04d8afc bf007490 c01c4570
    [ 49.668031] 3f20: bf007490 bf00750c c04f4258 c01c37a4 00000000 bf00750c c7083f44 c007b014
    [ 49.676162] 3f40: 4000d000 6d617870 08006963 00000001 00000000 c7085000 00000001 00000000
    [ 49.684287] 3f60: 4000d000 c7083f8c 00000001 bea01a54 00005401 c7ab1400 c00440c4 00082000
    [ 49.692420] 3f80: bf00750c 00000880 c7083f8c 00000000 4000cfa8 00000000 00000880 bea01cc8
    [ 49.700552] 3fa0: 00000081 c0043f40 00000000 00000880 bea01cc8 00000880 00000006 00000000
    [ 49.708677] 3fc0: 00000000 00000880 bea01cc8 00000081 00000097 0000cca4 0000b748 00000000
    [ 49.716802] 3fe0: 4001a4f0 bea01cc0 00018bf4 4001a4fc 20000010 bea01cc8 a063e021 a063e421
    [ 49.724958] [] (regulator_is_enabled+0x3c/0xbc) from [] (mmc_regulator_set_ocr+0x14/0xd8)
    [ 49.734836] [] (mmc_regulator_set_ocr+0x14/0xd8) from [] (pxamci_set_ios+0xd8/0x17c [pxamci])
    [ 49.745044] [] (pxamci_set_ios+0xd8/0x17c [pxamci]) from [] (mmc_power_off+0x50/0x58)
    [ 49.754555] [] (mmc_power_off+0x50/0x58) from [] (mmc_detach_bus+0x68/0xc4)
    [ 49.763207] [] (mmc_detach_bus+0x68/0xc4) from [] (mmc_stop_host+0xd4/0x1bc)
    [ 49.771944] [] (mmc_stop_host+0xd4/0x1bc) from [] (mmc_remove_host+0xc/0x20)
    [ 49.780681] [] (mmc_remove_host+0xc/0x20) from [] (pxamci_remove+0xc8/0x174 [pxamci])
    [ 49.790211] [] (pxamci_remove+0xc8/0x174 [pxamci]) from [] (platform_drv_remove+0x1c/0x24)
    [ 49.800164] [] (platform_drv_remove+0x1c/0x24) from [] (__device_release_driver+0x7c/0xc4)
    [ 49.810110] [] (__device_release_driver+0x7c/0xc4) from [] (driver_detach+0x60/0x8c)
    [ 49.819535] [] (driver_detach+0x60/0x8c) from [] (bus_remove_driver+0x90/0xcc)
    [ 49.828452] [] (bus_remove_driver+0x90/0xcc) from [] (sys_delete_module+0x1d8/0x254)
    [ 49.837891] [] (sys_delete_module+0x1d8/0x254) from [] (ret_fast_syscall+0x0/0x28)
    [ 49.847145] Code: eb06c53a e596c030 e1a0500d e59f106c (e59c0040)
    [ 49.853566] ---[ end trace b5fa66a00cea142f ]---

    Signed-off-by: Daniel Mack
    Reported-by: Sven Neumann
    Cc: Pierre Ossman
    Cc: linux-mmc@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: stable@kernel.org
    Signed-off-by: Eric Miao

    Daniel Mack
     
  • This patch fixes the compilation failure of
    rc32434 due to a bad module parameter description.

    Signed-off-by: Florian Fainelli
    Signed-off-by: Wim Van Sebroeck

    Florian Fainelli
     
  • The size value passed to ioremap_nocache() is not correct.
    Use resource_size() to get the correct value.

    Signed-off-by: H Hartley Sweeten
    Cc: Phil Sutter
    Signed-off-by: Wim Van Sebroeck

    H Hartley Sweeten
     
  • The SYSFS_DEPRECATED_V2 says "remove" older, deprecated features, but it
    actually enables them, so correct this confusing, backwards text.

    Signed-off-by: Randy Dunlap
    Cc: Kay Sievers
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • When detecting power failure, the probe function would reset the clock
    time to defined state.

    However, the clock's _date_ might still be bogus and a subsequent probe
    fails when sanity-checking these values.

    Change the power-failure fixup code to do a full setting of rtc_time,
    including a valid date.

    Signed-off-by: Johannes Weiner
    Cc: Alessandro Zummo
    Cc: Paul Gortmaker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • The possible CCR_Y2K register values are 19 or 20 and struct rtc_time's
    tm_year is in years since 1900.

    The function translating rtc_time to register values assumes tm_year to be
    years since first christmas, though, and we end up storing 0 or 1 in the
    CCR_Y2K register, which the hardware does not refuse to do.

    A subsequent probing of the clock fails due to the invalid value range in
    the register, though.

    [ And if it didn't, reading the clock would yield a bogus year because
    the function translating registers to tm_year is assuming a register
    value of 19 or 20. ]

    This fixes the conversion from years since 1900 in tm_year to the
    corresponding CCR_Y2K value of 19 or 20.

    Signed-off-by: Johannes Weiner
    Cc: Alessandro Zummo
    Cc: Paul Gortmaker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • Prevent the AoE block driver from creating cache aliases of page cache
    pages on machines with virtually indexed caches.

    Building kernels on an AT91SAM9G20 board without this patch fails with
    segmentation faults after a couple of passes.

    Signed-off-by: Peter Horton
    Cc: "Ed L. Cashin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Horton
     
  • - Remove wrong and unnecessary unmask operation

    - Remove extra GEDR reading

    This fixes the loss of interrupts which occurs when two or more pins are
    triggered in close succession.

    Signed-off-by: Alek Du
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alek Du
     
  • It has been fun but the last year or more it has been a duty and a burden.
    So I leave it open for others to take over.

    Signed-off-by: Sam Ravnborg
    Cc: Anibal Monsalve Salazar
    Cc: Steven Rostedt
    Cc: Michal Marek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • Following issues have been addressed on DA8XX/OMAP-L1XX:

    a. Screen misalignment during booting when frame buffer console is
    enabled.

    b. Driver was configured always in PSEUDOCOLOR mode. This patch
    dynamically configures the driver either in PSEUDOCOLOUR or TRUECOLOR
    mode depending on bpp.

    c. The RED and BLUE offsets were interchanged resulting in wrong
    bootup logo colour.

    This patch has been tested on DA830/OMAP-L137 and DA850/OMAP-L138 EVMs.

    Signed-off-by: Sudhakar Rajashekhara
    Cc: Steve Chen
    Cc: Pavel Kiryukhin
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sudhakar Rajashekhara
     
  • "rtc" is freed and then dereferenced on the next line. This patch fixes
    that.

    Signed-off-by: Dan Carpenter
    Acked-by: Alessandro Zummo
    Cc: David Brownell
    Cc: Paul Gortmaker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Fixes:

    v4l/dvb_frontend.c: In function 'dvb_frontend_stop':
    v4l/dvb_frontend.c:707: error: implicit declaration of function 'init_MUTEX'

    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=14609

    Reported-by:
    Cc: Mauro Carvalho Chehab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
    Staging: update TODO files
    Staging: hv: Fix some missing author names
    Staging: hv: Fix vmbus event handler bug
    Staging: hv: Fix argument order in incorrect memset invocations in hyperv driver.

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
    USB: Add support for Mobilcom Debitel USB UMTS Surf-Stick to option driver
    USB: work around for EHCI with quirky periodic schedules
    USB: musb: Fix CPPI IRQs not being signaled
    USB: musb: respect usb_request->zero in control requests
    USB: musb: fix ISOC Tx programming for CPPI DMAs
    USB: musb: Remove unwanted message in boot log
    usb: amd5536udc: fixed shared interrupt bug and warning oops
    USB: ftdi_sio: Keep going when write errors are encountered.
    USB: musb_gadget: fix STALL handling
    USB: EHCI: don't send Clear-TT-Buffer following a STALL

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
    tty/of_serial: add missing ns16550a id
    bcm63xx_uart: Fix serial driver compile breakage.
    tty_port: handle the nonblocking open of a dead port corner case

    Linus Torvalds
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
    MIPS: Loongson: Switch from flatmem to sparsemem
    MIPS: Loongson: Disallow 4kB pages
    MIPS: Add missing definition for MADV_HWPOISON.
    MIPS: Fix build error if __xchg() is not getting inlined.
    MIPS: IP22/IP28 Disable early printk to fix boot problems on some systems.

    Linus Torvalds
     
  • With flatmem hibernation for Loongson will fail, and there are also some
    other problems such as broken files when using NFS or CIFS / Samba.

    The config help of sparsemem says:

    "This option provides some potential performance benefits, along with
    decreased code complexity."

    So to avoid the potential problems of FLATMEM, we disable FLATMEM directly
    and use SPARSEMEM instead.

    Related email thread:

    http://groups.google.com/group/loongson-dev/browse_thread/thread/b6b65890ec2b0f24/feb43e5aa7f55d9b?show_docid=feb43e5aa7f55d9b

    Reported-by: Tatu Kilappa
    Signed-off-by: Wu Zhangjin
    Patchwork: http://patchwork.linux-mips.org/patch/737/
    Cc: linux-mips@linux-mips.org
    Cc: zhangfx@lemote.com
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • Currently, with PAGE_SIZE_4KB, the kernel for loongson will hang on:

    Kernel panic - not syncing: Attempted to kill init!

    The possible reason is the cache aliases problem:

    Loongson 2F has 64kb, 4 way L1 Cache, the way size is 16kb, which is bigger
    then 4kb. so, If using 4kb page size, there is cache aliases problem.
    To avoid this kind of problem, extra cache flushing. The 2nd possible
    solution is 16kb page size which avoids cache aliases without the need for
    extra cache flushes. So we disable 4kB pages until the aliasing issue is
    solved.

    Signed-off-by: Wu Zhangjin
    Patchwork: http://patchwork.linux-mips.org/patch/736/
    Cc: linux-mips@linux-mips.org
    Cc: zhangfx@lemote.com
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • Thanks to Joseph S. Myers for reporting this.

    Signed-off-by: Ralf Baechle
    Cc: "Joseph S. Myers"
    Patchwork: http://patchwork.linux-mips.org/patch/723/

    Ralf Baechle
     
  • If __xchg() is not getting inlined the outline version of the function
    will have a reference to __xchg_called_with_bad_pointer() which does not
    exist remaining. Fixed by using BUILD_BUG_ON() to check for allowable
    operand sizes.

    Signed-off-by: Ralf Baechle
    Patchwork: http://patchwork.linux-mips.org/patch/705/

    Ralf Baechle
     
  • Some Debian users have reported that the kernel hangs early during boot on
    some IP22 systems. Thomas Bogendoerfer found that this is due to a "bad
    interaction between CONFIG_EARLY_PRINTK and overwritten prom memory during
    early boot". Since there's no fix yet, disable CONFIG_EARLY_PRINTK for now.

    Signed-off-by: Martin Michlmayr
    Cc: linux-mips@linux-mips.org
    Cc: Thomas Bogendoerfer
    Cc: Dmitri Vorobiev
    Patchwork: http://patchwork.linux-mips.org/patch/702/
    Signed-off-by: Ralf Baechle

    Martin Michlmayr