1. 17 Sep, 2007 4 commits
    • Len Brown's avatar
      Pull thinkpad into release branch · ecfe7f09
      Len Brown authored
      ecfe7f09
    • Henrique de Moraes Holschuh's avatar
      ACPI: thinkpad-acpi: bump up version to 0.16 · 3b0c6485
      Henrique de Moraes Holschuh authored
      Name it thinkpad-acpi version 0.16 to avoid any confusion with some 0.15
      thinkpad-acpi development snapshots and backports that had input layer
      support, but no hotkey_report_mode support.
      Signed-off-by: default avatarHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      3b0c6485
    • Henrique de Moraes Holschuh's avatar
      ACPI: thinkpad-acpi: revert new 2.6.23 CONFIG_THINKPAD_ACPI_INPUT_ENABLED option · ff80f137
      Henrique de Moraes Holschuh authored
      Revert new 2.6.23 CONFIG_THINKPAD_ACPI_INPUT_ENABLED Kconfig option because
      it would create a legacy we don't want to support.
      
      CONFIG_THINKPAD_ACPI_INPUT_ENABLED was added to try to fix an issue that is
      now moot with the addition of the netlink ACPI event report interface to
      the ACPI core.
      
      Now that ACPI core can send events over netlink, we can use a different
      strategy to keep backwards compatibility with older userspace, without the
      need for the CONFIG_THINKPAD_ACPI_INPUT_ENABLED games.  And it arrived
      before CONFIG_THINKPAD_ACPI_INPUT_ENABLED made it to a stable mainline
      kernel, even, which is Good.
      
      This patch is in sync with some changes to thinkpad-acpi backports, that
      will keep things sane for userspace across different combinations of kernel
      versions, thinkpad-acpi backports (or the lack thereof), and userspace
      capabilities:
      
      Unless a module parameter is used, thinkpad-acpi will now behave in such a
      way that it will work well (by default) with userspace that still uses only
      the old ACPI procfs event interface and doesn't care for thinkpad-acpi
      input devices.
      
      It will also always work well with userspace that has been updated to use
      both the thinkpad-acpi input devices, and ACPI core netlink event
      interface, regardless of any module parameter.
      
      The module parameter was added to allow thinkpad-acpi to work with
      userspace that has been partially updated to use thinkpad-acpi input
      devices, but not the new ACPI core netlink event interface.  To use this
      mode of hot key reporting, one has to specify the hotkey_report_mode=2
      module parameter.
      
      The thinkpad-acpi driver exports the value of hotkey_report_mode through
      sysfs, as well.  thinkpad-acpi backports to older kernels, that do not
      support the new ACPI core netlink interface, have code to allow userspace
      to switch hotkey_report_mode at runtime through sysfs.  This capability
      will not be provided in mainline thinkpad-acpi as it is not needed there.
      Signed-off-by: default avatarHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: Michael S. Tsirkin <mst@dev.mellanox.co.il>
      Cc: Hugh Dickins <hugh@veritas.com>
      Cc: Richard Hughes <hughsient@gmail.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      ff80f137
    • Len Brown's avatar
      Pull misc into release branch · 95e3f66f
      Len Brown authored
      95e3f66f
  2. 16 Sep, 2007 7 commits
    • Thomas Gleixner's avatar
      clockevents: prevent stale tick update on offline cpu · 5e41d0d6
      Thomas Gleixner authored
      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: default avatarThomas Gleixner <tglx@linutronix.de>
      5e41d0d6
    • 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
  3. 15 Sep, 2007 7 commits
  4. 14 Sep, 2007 22 commits