1. 26 6月, 2011 1 次提交
  2. 25 6月, 2011 6 次提交
  3. 24 6月, 2011 29 次提交
  4. 23 6月, 2011 4 次提交
    • R
      Fix CPU spinlock lockups on secondary CPU bringup · 1b19ca9f
      Russell King 提交于
      Secondary CPU bringup typically calls calibrate_delay() during its
      initialization.  However, calibrate_delay() modifies a global variable
      (loops_per_jiffy) used for udelay() and __delay().
      
      A side effect of 71c696b1 ("calibrate: extract fall-back calculation
      into own helper") introduced in the 2.6.39 merge window means that we
      end up with a substantial period where loops_per_jiffy is zero.  This
      causes the spinlock debugging code to malfunction:
      
      	u64 loops = loops_per_jiffy * HZ;
      	for (;;) {
      		for (i = 0; i < loops; i++) {
      			if (arch_spin_trylock(&lock->raw_lock))
      				return;
      			__delay(1);
      		}
      		...
      	}
      
      by never calling arch_spin_trylock() - resulting in the CPU locking
      up in an infinite loop inside __spin_lock_debug().
      
      Work around this by only writing to loops_per_jiffy only once we have
      completed all the calibration decisions.
      Tested-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Cc: <stable@kernel.org> (2.6.39-stable)
      --
      Better solutions (such as omitting the calibration for secondary CPUs,
      or arranging for calibrate_delay() to return the LPJ value and leave
      it to the caller to decide where to store it) are a possibility, but
      would be much more invasive into each architecture.
      
      I think this is the best solution for -rc and stable, but it should be
      revisited for the next merge window.
      
       init/calibrate.c |   14 ++++++++------
       1 files changed, 8 insertions(+), 6 deletions(-)
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1b19ca9f
    • M
      serial: mrst_max3110: initialize waitqueue earlier · 33b1e693
      Mika Westerberg 提交于
      The driver went to initialize its waitqueue at the start of the main
      processing thread.  However, it is possible that this thread is not
      scheduled on a CPU before the write function is called which leads to a
      following error:
      
        BUG: spinlock bad magic on CPU#1, swapper/1
         lock: f5f3ebdc, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
        Pid: 1, comm: swapper Not tainted 3.0.0-rc2+ #67
        Call Trace:
         [<c1289663>] spin_bug+0xa3/0xf0
         [<c12897ad>] do_raw_spin_lock+0x7d/0x150
         [<c14963de>] _raw_spin_lock_irqsave+0x4e/0x60
         [<c102f2bb>] __wake_up+0x1b/0x50
         [<c12d3715>] serial_m3110_con_write+0x55/0x60
         [<c1041575>] __call_console_drivers+0x75/0x90
         [<c10415d9>] _call_console_drivers+0x49/0x80
         [<c1041baa>] console_unlock+0xca/0x1f0
         [<c10420ef>] vprintk+0x18f/0x4f0
         [<c14928a3>] printk+0x18/0x1a
         [<c1042730>] register_console+0x2e0/0x350
         [<c12d098e>] uart_add_one_port+0x33e/0x3d0
         [<c1485ba6>] serial_m3110_probe+0x1c2/0x1df
         [<c1303db7>] spi_drv_probe+0x17/0x20
         ...
      
      Fix this by initializing the waitqueue before the main thread is
      created.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      33b1e693
    • W
      mrst_max3110: Change max missing message priority. · 0bb04bf3
      William Douglas 提交于
      Change print message to notice instead of error to clean up non critical
      messages showing on startup.  The MAX3111 not being present is a normal
      path for end user systems.
      Signed-off-by: NWilliam Douglas <william.douglas@intel.com>
      [rebased on 3.0, switched to dev_dbg()]
      Signed-off-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0bb04bf3
    • D
      ALSA: HDA: Pinfix quirk for HP Z200 Workstation · d2a19da7
      David Henningsson 提交于
      BIOS lists the internal speaker as an internal line-out. Change to
      internal speaker + model=auto for better auto-mute capabilities.
      
      BugLink: http://bugs.launchpad.net/bugs/754964Reported-by: NMarc Legris <marc.legris@canonical.com>
      Signed-off-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d2a19da7