1. 16 Sep, 2007 6 commits
    • Thomas Gleixner's avatar
      clockevents: do not shutdown the oneshot broadcast device · 31d9b393
      Thomas Gleixner authored
      When a cpu goes offline it is removed from the broadcast masks. If the
      mask becomes empty the code shuts down the broadcast device. This is
      wrong, because the broadcast device needs to be ready for the online
      cpu going idle (into a c-state, which stops the local apic timer).
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      31d9b393
    • Thomas Gleixner's avatar
      clockevents: Enforce oneshot broadcast when broadcast mask is set on resume · 07eec6af
      Thomas Gleixner authored
      The jinxed VAIO refuses to resume without hitting keys on the keyboard
      when this is not enforced. It is unclear why the cpu ends up in a lower
      C State without notifying the clock events layer, but enforcing the
      oneshot broadcast here is safe.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      07eec6af
    • Venkatesh Pallipadi's avatar
      ACPI: Reevaluate C/P/T states when a cpu becomes online · 729c6ba3
      Venkatesh Pallipadi authored
      Reevaluate C/P/T states when a cpu becomes online. This avoids
      the caching of the broadcast information in the clockevents layer.
      Signed-off-by: default avatarVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Len Brown <len.brown@intel.com>
      729c6ba3
    • Thomas Gleixner's avatar
      timekeeping: Prevent time going backwards on resume · 6a669ee8
      Thomas Gleixner authored
      Timekeeping resume adjusts xtime by adding the slept time in seconds and
      resets the reference value of the clock source (clock->cycle_last).
      clock->cycle last is used to calculate the delta between the last xtime
      update and the readout of the clock source in __get_nsec_offset(). xtime
      plus the offset is the current time. The resume code ignores the delta
      which had already elapsed between the last xtime update and the actual
      time of suspend. If the suspend time is short, then we can see time
      going backwards on resume.
      
      Suspend:
      offs_s = clock->read() - clock->cycle_last;
      now = xtime + offs_s;
      timekeeping_suspend_time = read_rtc();
      
      Resume:
      sleep_time = read_rtc() - timekeeping_suspend_time;
      xtime.tv_sec += sleep_time;
      clock->cycle_last = clock->read();
      offs_r = clock->read() - clock->cycle_last;
      now = xtime + offs_r;
      
      if sleep_time_seconds == 0 and offs_r < offs_s, then time goes
      backwards.
      
      Fix this by storing the offset from the last xtime update and add it to
      xtime during resume, when we reset clock->cycle_last:
      
      sleep_time = read_rtc() - timekeeping_suspend_time;
      xtime.tv_sec += sleep_time;
      xtime += offs_s;	/* Fixup xtime offset at suspend time */
      clock->cycle_last = clock->read();
      offs_r = clock->read() - clock->cycle_last;
      now = xtime + offs_r;
      
      Thanks to Marcelo for tracking this down on the OLPC and providing the
      necessary details to analyze the root cause.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Tosatti <marcelo@kvack.org>
      6a669ee8
    • Thomas Gleixner's avatar
      timekeeping: access rtc outside of xtime lock · 3be90950
      Thomas Gleixner authored
      Lockdep complains about the access of rtc in timekeeping_suspend
      inside the interrupt disabled region of the write locked xtime lock.
      Move the access outside.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <johnstul@us.ibm.com>
      3be90950
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 · d0174640
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
        drivers/net/pcmcia/3c589_cs: fix port configuration switcheroo
        sk98lin: resurrect driver
        ucc_geth: fix compilation
        mv643xx_eth: Fix tx_bytes stats calculation
        As struct iw_point is bi-directional payload, we should copy back the content
        [PATCH] bcm43xx: Fix cancellation of work queue crashes
        spidernet: fix interrupt reason recognition
        ehea: fix last_rx update
        ehea: propagate physical port state
        Fix a lock problem in generic phy code
        sky2: restore multicast list on resume and other ops
        atl1: disable broken 64-bit DMA
      d0174640
  2. 15 Sep, 2007 7 commits
  3. 14 Sep, 2007 25 commits
  4. 13 Sep, 2007 2 commits
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 19299b1a
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6:
        Revert "usb-storage: implement autosuspend"
        USB: disable autosuspend by default for non-hubs
      19299b1a
    • Jens Axboe's avatar
      Fix race with shared tag queue maps · f3da54ba
      Jens Axboe authored
      There's a race condition in blk_queue_end_tag() for shared tag maps,
      users include stex (promise supertrak thingy) and qla2xxx.  The former
      at least has reported bugs in this area, not sure why we haven't seen
      any for the latter.  It could be because the window is narrow and that
      other conditions in the qla2xxx code hide this.  It's a real bug,
      though, as the stex smp users can attest.
      
      We need to ensure two things - the tag bit clearing needs to happen
      AFTER we cleared the tag pointer, as the tag bit clearing/setting is
      what protects this map.  Secondly, we need to ensure that the visibility
      of the tag pointer and tag bit clear are ordered properly.
      
      [ I removed the SMP barriers - "test_and_clear_bit()" already implies
        all the required barriers.  -- Linus ]
      
      Also see http://bugzilla.kernel.org/show_bug.cgi?id=7842Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f3da54ba