1. 10 2月, 2008 3 次提交
    • C
      [S390] sclp_vt220: Fix vt220 initialization · 59eb1ca7
      Christian Borntraeger 提交于
      There are two problems in the vt220 intialization:
      
      o Currently the vt220 console looses early printk events until the
        the vt220 tty is registered.
      o console should work if tty_register fails
      
      sclp_vt220_con_init calls __sclp_vt220_init and register_console.
      It does not register the driver with the sclp core code via
      sclp_register. That results in an sclp_send_mask=0. Therefore,
      __sclp_vt220_emit will reject buffers with EIO. Unfortunately
      register_console will cause the printk buffer to be sent to the
      console and, therefore, every early message gets dropped. The
      sclp_send_mask is set later during boot, when sclp_vt220_tty_init
      calls sclp_register.
      
      The solution is to move the sclp_register call from sclp_vt220_tty_init
      to __sclp_vt220_init. This makes sure that the console is properly
      registered with the sclp subsystem before the first log buffer messages
      are passed to the vt220 console.
      
      We also adopt the cleanup on error to keep the console alive if
      tty_register fails.
      
      Thanks to Peter Oberparleiter and Heiko Carstens for review and ideas
      for improvement.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      59eb1ca7
    • U
      [S390] qdio: avoid hang when establishing qdio queues · bf3f8378
      Ursula Braun 提交于
      If qdio establish runs in parallel with a channel error,
      ccw_device_start_timeout may not trigger the qdio_timeout_handler.
      In this case neither QDIO_IRQ_STATE_ESTABLISHED nor
      QDIO_IRQ_STATE_ERR is reached and the following wait_event hangs
      forever.
      Solution: do not make use of the timeout option with
      ccw_device_start, but add a timeout to the following wait_event.
      Signed-off-by: NUrsula Braun <braunu@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      bf3f8378
    • F
      [S390] zcrypt: Do not start ap poll thread per default · b90b34c6
      Felix Beck 提交于
      Do not start ap poll thread per default to increase perfomance with
      z/VM.
      Signed-off-by: NFelix Beck <felix.beck@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      b90b34c6
  2. 07 2月, 2008 1 次提交
    • A
      calibrate_delay() must be __cpuinit · 6c81c32f
      Adrian Bunk 提交于
      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 <linux/delay.h>
      
      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: NAdrian Bunk <bunk@kernel.org>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Christian Zankel <chris@zankel.net>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6c81c32f
  3. 05 2月, 2008 7 次提交
    • H
      [S390] dcss: Initialize workqueue before using it. · c5411dba
      Heiko Carstens 提交于
      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:
      ([<000000000001619e>] show_trace+0xda/0x104)
       [<0000000000016288>] show_stack+0xc0/0xf8
       [<00000000000163d0>] dump_stack+0xb0/0xc0
       [<000000000006e4ea>] __lock_acquire+0x47e/0x1160
       [<000000000006f27c>] lock_acquire+0xb0/0xd8
       [<000000000005a522>] __cancel_work_timer+0x9e/0x240
       [<000000000005a72e>] cancel_work_sync+0x2a/0x3c
       [<0000000000165c46>] kblockd_flush_work+0x26/0x34
       [<0000000000169034>] blk_sync_queue+0x38/0x48
       [<0000000000169080>] blk_release_queue+0x3c/0xa8
       [<000000000017bce8>] kobject_cleanup+0x58/0xac
       [<000000000017bd66>] kobject_release+0x2a/0x38
       [<000000000017d28e>] kref_put+0x6e/0x94
       [<000000000017bc80>] kobject_put+0x38/0x48
       [<00000000001653be>] blk_put_queue+0x2a/0x38
       [<0000000000168fee>] blk_cleanup_queue+0x82/0x90
       [<0000000000213e7e>] dcssblk_add_store+0x34e/0x700
       [<00000000005243b8>] dcssblk_init+0x1a0/0x308
       [<000000000050a3c2>] kernel_init+0x1b2/0x3a4
       [<000000000001ac82>] kernel_thread_starter+0x6/0xc
       [<000000000001ac7c>] kernel_thread_starter+0x0/0xc
      
      INFO: lockdep is turned off.
      
      Cc: Gerald Schaefer <geraldsc@de.ibm.com>
      Cc: Carsten Otte <cotte@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c5411dba
    • C
      [S390] sclp_tty/sclp_vt220: Fix scheduling while atomic · e35e1fad
      Christian Borntraeger 提交于
      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:
      ([<0000000000105b74>] show_trace+0x13c/0x158)
       [<0000000000105c58>] show_stack+0xc8/0xfc
       [<0000000000105cbc>] dump_stack+0x30/0x40
       [<000000000012a0c8>] __schedule_bug+0x84/0x94
       [<000000000056234e>] schedule+0x5ea/0x970
       [<0000000000477cd2>] __sclp_vt220_write+0x1f6/0x3ec
       [<0000000000477f00>] sclp_vt220_con_write+0x38/0x48
       [<0000000000130b4a>] __call_console_drivers+0xbe/0xd8
       [<0000000000130bf0>] _call_console_drivers+0x8c/0xd0
       [<0000000000130eea>] release_console_sem+0x1a6/0x2fc
       [<0000000000131786>] vprintk+0x262/0x480
       [<00000000001319fa>] printk+0x56/0x68
       [<0000000000125aaa>] print_cfs_rq+0x45e/0x4a4
       [<000000000012614e>] sched_debug_show+0x65e/0xee8
       [<000000000012a8fc>] show_state_filter+0x1cc/0x1f0
       [<000000000044d39c>] sysrq_handle_showstate+0x2c/0x3c
       [<000000000044d1fe>] __handle_sysrq+0xae/0x18c
       [<00000000002001f2>] write_sysrq_trigger+0x8a/0x90
       [<00000000001f7862>] proc_reg_write+0x9a/0xc4
       [<00000000001a83d4>] vfs_write+0xb8/0x174
       [<00000000001a8b88>] sys_write+0x58/0x8c
       [<0000000000112e7c>] sysc_noemu+0x10/0x16
       [<0000020000116f68>] 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: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      e35e1fad
    • S
      [S390] dasd: fix panic caused by alias device offline · fe6b8e76
      Stefan Weinhuber 提交于
      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: NStefan Weinhuber <wein@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      fe6b8e76
    • S
      [S390] dasd: add ifcc handling · 6c5f57c7
      Stefan Haberland 提交于
      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: NStefan Haberland <stefan.haberland@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      6c5f57c7
    • C
      [S390] cio: Add shutdown callback for ccwgroup. · 01bc8ad1
      Cornelia Huck 提交于
      This intendeds to make proper shutdown of qeth devices easier.
      Signed-off-by: NCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      01bc8ad1
    • C
      [S390] cio: Clean up chsc response code handling. · b9c9a21a
      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: NCornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      b9c9a21a
    • P
      [S390] cio: make sense id procedure work with partial hardware response · 6f52ac29
      Peter Oberparleiter 提交于
      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: NPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      6f52ac29
  4. 31 1月, 2008 1 次提交
  5. 29 1月, 2008 2 次提交
  6. 28 1月, 2008 1 次提交
  7. 26 1月, 2008 25 次提交