1. 20 9月, 2007 6 次提交
  2. 17 9月, 2007 24 次提交
  3. 16 9月, 2007 10 次提交
    • T
      clockevents: prevent stale tick update on offline cpu · 5e41d0d6
      Thomas Gleixner 提交于
      Taking a cpu offline removes the cpu from the online mask before the
      CPU_DEAD notification is done. The clock events layer does the cleanup
      of the dead CPU from the CPU_DEAD notifier chain. tick_do_timer_cpu is
      used to avoid xtime lock contention by assigning the task of jiffies
      xtime updates to one CPU. If a CPU is taken offline, then this
      assignment becomes stale. This went unnoticed because most of the time
      the offline CPU went dead before the online CPU reached __cpu_die(),
      where the CPU_DEAD state is checked. In the case that the offline CPU did
      not reach the DEAD state before we reach __cpu_die(), the code in there
      goes to sleep for 100ms. Due to the stale time update assignment, the
      system is stuck forever.
      
      Take the assignment away when a cpu is not longer in the cpu_online_mask.
      We do this in the last call to tick_nohz_stop_sched_tick() when the offline
      CPU is on the way to the final play_dead() idle entry.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      5e41d0d6
    • T
      clockevents: do not shutdown the oneshot broadcast device · 31d9b393
      Thomas Gleixner 提交于
      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: NThomas Gleixner <tglx@linutronix.de>
      31d9b393
    • T
      clockevents: Enforce oneshot broadcast when broadcast mask is set on resume · 07eec6af
      Thomas Gleixner 提交于
      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: NThomas Gleixner <tglx@linutronix.de>
      07eec6af
    • V
      ACPI: Reevaluate C/P/T states when a cpu becomes online · 729c6ba3
      Venkatesh Pallipadi 提交于
      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: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Len Brown <len.brown@intel.com>
      729c6ba3
    • T
      timekeeping: Prevent time going backwards on resume · 6a669ee8
      Thomas Gleixner 提交于
      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: NThomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Tosatti <marcelo@kvack.org>
      6a669ee8
    • T
      timekeeping: access rtc outside of xtime lock · 3be90950
      Thomas Gleixner 提交于
      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: NThomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <johnstul@us.ibm.com>
      3be90950
    • L
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 · d0174640
      Linus Torvalds 提交于
      * '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
    • J
      drivers/net/pcmcia/3c589_cs: fix port configuration switcheroo · fadacb1b
      Jeff Garzik 提交于
      10base2 and 10baseT were accidentally switched.
      
      Noticed by Andreas HÃŒbner, forwarded by Alan Cox.
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      fadacb1b
    • S
      sk98lin: resurrect driver · 5ad887fa
      Stephen Hemminger 提交于
      This reverts commit e1abecc4.
      
      The driver works on some hardware that skge doesn't handle yet.
      Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5ad887fa
    • A
      ucc_geth: fix compilation · 62270336
      Anton Vorontsov 提交于
      Currently qe_bd_t is used in the macro call -- dma_unmap_single,
      which is a no-op on PPC32, thus error is hidden today. Starting
      with 2.6.24, macro will be replaced by the empty static function,
      and erroneous use of qe_bd_t will trigger compilation error.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      62270336