1. 29 5月, 2010 1 次提交
    • L
      ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case · 02cf4f98
      Len Brown 提交于
      commit d306ebc2
      (ACPI: Be in TS_POLLING state during mwait based C-state entry)
      fixed an important power & performance issue where ACPI c2 and c3 C-states
      were clearing TS_POLLING even when using MWAIT (ACPI_STATE_FFH).
      That bug had been causing us to receive redundant scheduling interrups
      when we had already been woken up by MONITOR/MWAIT.
      
      Following up on that...
      
      In the MWAIT case, we don't have to subsequently
      check need_resched(), as that c heck was there
      for the TS_POLLING-clearing case.
      
      Note that not only does the cpuidle calling function
      already check need_resched() before calling us, the
      low-level entry into monitor/mwait calls it twice --
      guaranteeing that a write to the trigger address
      can not go un-noticed.
      
      Also, in this case, we don't have to set TS_POLLING
      when we wake, because we never cleared it.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      Acked-by: NVenkatesh Pallipadi <venki@google.com>
      02cf4f98
  2. 28 5月, 2010 4 次提交
  3. 16 5月, 2010 1 次提交
  4. 15 5月, 2010 1 次提交
    • A
      Fix the regression created by "set S_DEAD on unlink()..." commit · d83c49f3
      Al Viro 提交于
      1) i_flags simply doesn't work for mount/unlink race prevention;
      we may have many links to file and rm on one of those obviously
      shouldn't prevent bind on top of another later on.  To fix it
      right way we need to mark _dentry_ as unsuitable for mounting
      upon; new flag (DCACHE_CANT_MOUNT) is protected by d_flags and
      i_mutex on the inode in question.  Set it (with dont_mount(dentry))
      in unlink/rmdir/etc., check (with cant_mount(dentry)) in places
      in namespace.c that used to check for S_DEAD.  Setting S_DEAD
      is still needed in places where we used to set it (for directories
      getting killed), since we rely on it for readdir/rmdir race
      prevention.
      
      2) rename()/mount() protection has another bogosity - we unhash
      the target before we'd checked that it's not a mountpoint.  Fixed.
      
      3) ancient bogosity in pivot_root() - we locked i_mutex on the
      right directory, but checked S_DEAD on the different (and wrong)
      one.  Noticed and fixed.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d83c49f3
  5. 14 5月, 2010 3 次提交
  6. 13 5月, 2010 5 次提交
  7. 12 5月, 2010 12 次提交
  8. 11 5月, 2010 5 次提交
  9. 10 5月, 2010 1 次提交
    • A
      cpuidle: Fix incorrect optimization · 1c6fe036
      Arjan van de Ven 提交于
      commit 672917dc ("cpuidle: menu governor: reduce latency on exit")
      added an optimization, where the analysis on the past idle period moved
      from the end of idle, to the beginning of the new idle.
      
      Unfortunately, this optimization had a bug where it zeroed one key
      variable for new use, that is needed for the analysis.  The fix is
      simple, zero the variable after doing the work from the previous idle.
      
      During the audit of the code that found this issue, another issue was
      also found; the ->measured_us data structure member is never set, a
      local variable is always used instead.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Cc: Corrado Zoccolo <czoccolo@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1c6fe036
  10. 08 5月, 2010 3 次提交
  11. 07 5月, 2010 4 次提交