1. 24 Sep, 2007 2 commits
  2. 23 Sep, 2007 4 commits
    • Linus Torvalds's avatar
      Merge git://git.infradead.org/battery-2.6 · 562b4b63
      Linus Torvalds authored
      * git://git.infradead.org/battery-2.6:
        [PATCH] missing null termination in power supply uevent
      562b4b63
    • Jack Morgenstein's avatar
      IB/mlx4: Fix data corruption triggered by wrong headroom marking order · 6e694ea3
      Jack Morgenstein authored
      This is an addendum to commit 0e6e7416 ("IB/mlx4: Handle new FW
      requirement for send request prefetching").  We also need to handle
      prefetch marking properly for S/G segments, or else the HCA may end up
      processing S/G segments that are not fully written and end up sending
      the wrong data.  This can actually cause data corruption in practice,
      especially on systems with relatively slow CPUs (where the HCA is more
      likely to prefetch while the CPU is in the middle of writing a work
      request into memory).
      
      We write S/G segments in reverse order into the WQE, in order to
      guarantee that the first dword of all cachelines containing S/G
      segments is written last (overwriting the headroom invalidation
      pattern).  The entire cacheline will thus contain valid data when the
      invalidation pattern is overwritten.
      Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      6e694ea3
    • Thomas Gleixner's avatar
      clockevents: remove the suspend/resume workaround^Wthinko · b7e113dc
      Thomas Gleixner authored
      In a desparate attempt to fix the suspend/resume problem on Andrews
      VAIO I added a workaround which enforced the broadcast of the oneshot
      timer on resume. This was actually resolving the problem on the VAIO
      but was just a stupid workaround, which was not tackling the root
      cause: the assignement of lower idle C-States in the ACPI processor_idle
      code. The cpuidle patches, which utilize the dynamic tick feature and
      go faster into deeper C-states exposed the problem again. The correct
      solution is the previous patch, which prevents lower C-states across
      the suspend/resume.
      
      Remove the enforcement code, including the conditional broadcast timer
      arming, which helped to pamper over the real problem for quite a time.
      The oneshot broadcast flag for the cpu, which runs the resume code can
      never be set at the time when this code is executed. It only gets set,
      when the CPU is entering a lower idle C-State.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b7e113dc
    • Thomas Gleixner's avatar
      ACPI: disable lower idle C-states across suspend/resume · b04e7bdb
      Thomas Gleixner authored
      device_suspend() calls ACPI suspend functions, which seems to have undesired
      side effects on lower idle C-states. It took me some time to realize that
      especially the VAIO BIOSes (both Andrews jinxed UP and my elfstruck SMP one)
      show this effect. I'm quite sure that other bug reports against suspend/resume
      about turning the system into a brick have the same root cause.
      
      After fishing in the dark for quite some time, I realized that removing the ACPI
      processor module before suspend (this removes the lower C-state functionality)
      made the problem disappear. Interestingly enough the propability of having a
      bricked box is influenced by various factors (interrupts, size of the ram image,
      ...). Even adding a bunch of printks in the wrong places made the problem go
      away. The previous periodic tick implementation simply pampered over the
      problem, which explains why the dyntick / clockevents changes made this more
      prominent.
      
      We avoid complex functionality during the boot process and we have to do the
      same during suspend/resume. It is a similar scenario and equaly fragile.
      
      Add suspend / resume functions to the ACPI processor code and disable the lower
      idle C-states across suspend/resume. Fall back to the default idle
      implementation (halt) instead.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b04e7bdb
  3. 22 Sep, 2007 6 commits
  4. 21 Sep, 2007 8 commits
  5. 20 Sep, 2007 20 commits