07 Feb, 2008

1 commit

  • calibrate_delay() must be __cpuinit, not __{dev,}init.

    I've verified that this is correct for all users.

    While doing the latter, I also did the following cleanups:
    - remove pointless additional prototypes in C files
    - ensure all users #include

    This fixes the following section mismatches with CONFIG_HOTPLUG=n,
    CONFIG_HOTPLUG_CPU=y:

    WARNING: vmlinux.o(.text+0x1128d): Section mismatch: reference to .init.text.1:calibrate_delay (between 'check_cx686_slop' and 'set_cx86_reorder')
    WARNING: vmlinux.o(.text+0x25102): Section mismatch: reference to .init.text.1:calibrate_delay (between 'smp_callin' and 'cpu_coregroup_map')

    Signed-off-by: Adrian Bunk
    Cc: Ivan Kokshaysky
    Cc: Richard Henderson
    Cc: "Luck, Tony"
    Cc: Ralf Baechle
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: "David S. Miller"
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Christian Zankel
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

05 Feb, 2008

7 commits

  • In case a dcss segment cannot be loaded blk_cleanup_queue
    will be called before blk_queue_make_request, leaving the
    struct work unplug_work of the request queue uninitialized
    before it is used.
    That leads also to the lockdep message below.
    To avoid that call blk_queue_make_request right after the
    request_queue has been allocated.
    This makes sure that the struct work is always initialized
    before it is used.

    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 2 Not tainted 2.6.24 #6
    Process swapper (pid: 1, task: 000000000f854038, ksp: 000000000f85f980)
    040000000f85f860 000000000f85f880 0000000000000002 0000000000000000
    000000000f85f920 000000000f85f898 000000000f85f898 000000000001622e
    0000000000000000 000000000f85f980 0000000000000000 0000000000000000
    000000000f85f880 000000000000000c 000000000f85f880 000000000f85f8f0
    0000000000342908 000000000001622e 000000000f85f880 000000000f85f8d0
    Call Trace:
    ([] show_trace+0xda/0x104)
    [] show_stack+0xc0/0xf8
    [] dump_stack+0xb0/0xc0
    [] __lock_acquire+0x47e/0x1160
    [] lock_acquire+0xb0/0xd8
    [] __cancel_work_timer+0x9e/0x240
    [] cancel_work_sync+0x2a/0x3c
    [] kblockd_flush_work+0x26/0x34
    [] blk_sync_queue+0x38/0x48
    [] blk_release_queue+0x3c/0xa8
    [] kobject_cleanup+0x58/0xac
    [] kobject_release+0x2a/0x38
    [] kref_put+0x6e/0x94
    [] kobject_put+0x38/0x48
    [] blk_put_queue+0x2a/0x38
    [] blk_cleanup_queue+0x82/0x90
    [] dcssblk_add_store+0x34e/0x700
    [] dcssblk_init+0x1a0/0x308
    [] kernel_init+0x1b2/0x3a4
    [] kernel_thread_starter+0x6/0xc
    [] kernel_thread_starter+0x0/0xc

    INFO: lockdep is turned off.

    Cc: Gerald Schaefer
    Cc: Carsten Otte
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Under load the following bug message appeared while using sysrq-t:

    BUG: scheduling while atomic: bash/3662/0x00000004
    0000000000105b74 000000003ba17740 0000000000000002 0000000000000000
    000000003ba177e0 000000003ba17758 000000003ba17758 0000000000105bfe
    0000000000817ba8 000000003f2a5350 0000000000000000 0000000000000000
    000000003ba17740 000000000000000c 000000003ba17740 000000003ba177b0
    0000000000568630 0000000000105bfe 000000003ba17740 000000003ba17790
    Call Trace:
    ([] show_trace+0x13c/0x158)
    [] show_stack+0xc8/0xfc
    [] dump_stack+0x30/0x40
    [] __schedule_bug+0x84/0x94
    [] schedule+0x5ea/0x970
    [] __sclp_vt220_write+0x1f6/0x3ec
    [] sclp_vt220_con_write+0x38/0x48
    [] __call_console_drivers+0xbe/0xd8
    [] _call_console_drivers+0x8c/0xd0
    [] release_console_sem+0x1a6/0x2fc
    [] vprintk+0x262/0x480
    [] printk+0x56/0x68
    [] print_cfs_rq+0x45e/0x4a4
    [] sched_debug_show+0x65e/0xee8
    [] show_state_filter+0x1cc/0x1f0
    [] sysrq_handle_showstate+0x2c/0x3c
    [] __handle_sysrq+0xae/0x18c
    [] write_sysrq_trigger+0x8a/0x90
    [] proc_reg_write+0x9a/0xc4
    [] vfs_write+0xb8/0x174
    [] sys_write+0x58/0x8c
    [] sysc_noemu+0x10/0x16
    [] 0x20000116f68

    The problem seems to be, that with a full console buffer, release_console_sem
    disables interrupts with spin_lock_irqsave and then calls the console function
    without enabling interrupts. __sclp_vt220_write checks for in_interrupt, to
    decide if it can schedule. It should check for in_atomic instead.

    The same is true for sclp_tty.c.

    Signed-off-by: Christian Borntraeger
    Signed-off-by: Martin Schwidefsky

    Christian Borntraeger
     
  • When an alias device is set offline while it is in use this may
    result in a panic in the cleanup part of the dasd_block_tasklet.
    The problem here is that there may exist some ccw requests that were
    originally created for the alias device and transferred to the base
    device when the alias was set offline. When these request are
    cleaned up later, the discipline pointer in the alias device may not
    be valid anymore. To fix this use the base device discipline to find
    the cleanup function.

    Signed-off-by: Stefan Weinhuber
    Signed-off-by: Martin Schwidefsky

    Stefan Weinhuber
     
  • Adding interface control check (ifcc) handling in error recovery.
    First retry up to 255 times and if all retries fail try an alternate
    path if possible.

    Signed-off-by: Stefan Haberland
    Signed-off-by: Martin Schwidefsky

    Stefan Haberland
     
  • This intendeds to make proper shutdown of qeth devices easier.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • This provides unified return codes for common response codes and
    also makes the debug feature messages more similar and informational.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • In some cases the current sense id procedure trips over incomplete
    hardware responses. In these cases, checking against the preset value
    of 0xFFFF is not enough. More critically, the VM DIAG call will always be
    considered to have provided data after such an incident, even if it was not
    successful at all.

    The solution is to always initialize the control unit data before doing a
    sense id call. Check the condition code before considering the control unit
    data. And initialize again, before evaluating the VM data.

    Signed-off-by: Peter Oberparleiter
    Signed-off-by: Martin Schwidefsky

    Peter Oberparleiter
     

31 Jan, 2008

1 commit

  • The commit de25deb18016f66dcdede165d07654559bb332bc changed
    scsi_cmnd.sense_buffer from a static array to a dynamically allocated
    buffer. We can't access to sense_buffer in '&cmd->sense_buffer' way.

    Signed-off-by: FUJITA Tomonori
    Acked-by: Christof Schmitt
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     

29 Jan, 2008

2 commits


28 Jan, 2008

1 commit

  • This patch converts s390 to use blk_end_request interfaces.
    Related 'uptodate' arguments are converted to 'error'.

    As a result, the interfaces of internal functions below are changed:
    o dasd_end_request
    o tapeblock_end_request

    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: linux390@de.ibm.com
    Signed-off-by: Kiyoshi Ueda
    Signed-off-by: Jun'ichi Nomura
    Signed-off-by: Jens Axboe

    Kiyoshi Ueda
     

26 Jan, 2008

28 commits