1. 13 2月, 2007 1 次提交
    • E
      [PATCH] x86-64: get rid of ARCH_HAVE_XTIME_LOCK · 5809f9d4
      Eric Dumazet 提交于
      ARCH_HAVE_XTIME_LOCK is used by x86_64 arch .  This arch needs to place a
      read only copy of xtime_lock into vsyscall page.  This read only copy is
      named __xtime_lock, and xtime_lock is defined in
      arch/x86_64/kernel/vmlinux.lds.S as an alias.  So the declaration of
      xtime_lock in kernel/timer.c was guarded by ARCH_HAVE_XTIME_LOCK define,
      defined to true on x86_64.
      
      We can get same result with _attribute__((weak)) in the declaration. linker
      should do the job.
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      5809f9d4
  2. 12 2月, 2007 3 次提交
  3. 23 12月, 2006 1 次提交
  4. 14 12月, 2006 1 次提交
    • E
      [PATCH] Optimize calc_load() · cd7175ed
      Eric Dumazet 提交于
      calc_load() is called by timer interrupt to update avenrun[].  It currently
      calls nr_active() at each timer tick (HZ per second), while the update of
      avenrun[] is done only once every 5 seconds.  (LOAD_FREQ=5 Hz)
      
      nr_active() is quite expensive on SMP machines, since it has to sum up
      nr_running and nr_uninterruptible of all online CPUS, bringing foreign
      dirty cache lines.
      
      This patch is an optimization of calc_load() so that nr_active() is called
      only if we need it.
      
      The use of unlikely() is welcome since the condition is true only once every
      5*HZ time.
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Acked-by: N"Siddha, Suresh B" <suresh.b.siddha@intel.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      cd7175ed
  5. 11 12月, 2006 2 次提交
  6. 01 10月, 2006 4 次提交
    • A
      [PATCH] kill wall_jiffies · 8ef38609
      Atsushi Nemoto 提交于
      With 2.6.18-rc4-mm2, now wall_jiffies will always be the same as jiffies.
      So we can kill wall_jiffies completely.
      
      This is just a cleanup and logically should not change any real behavior
      except for one thing: RTC updating code in (old) ppc and xtensa use a
      condition "jiffies - wall_jiffies == 1".  This condition is never met so I
      suppose it is just a bug.  I just remove that condition only instead of
      kill the whole "if" block.
      
      [heiko.carstens@de.ibm.com: s390 build fix and cleanup]
      Signed-off-by: NAtsushi Nemoto <anemo@mba.ocn.ne.jp>
      Cc: Andi Kleen <ak@muc.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ian Molton <spyro@f2s.com>
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Hirokazu Takata <takata.hirokazu@renesas.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
      Cc: Richard Curnow <rc@rc0.org.uk>
      Cc: William Lee Irwin III <wli@holomorphy.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
      Cc: Chris Zankel <chris@zankel.net>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8ef38609
    • R
      [PATCH] ntp: add time_adjust to tick length · 8f807f8d
      Roman Zippel 提交于
      This folds update_ntp_one_tick() into second_overflow() and adds time_adjust
      to the tick length, this makes time_next_adjust unnecessary.  This slightly
      changes the adjtime() behaviour, instead of applying it to the next tick, it's
      applied to the next second.
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Cc: john stultz <johnstul@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8f807f8d
    • R
      [PATCH] ntp: add ntp_update_frequency · b0ee7556
      Roman Zippel 提交于
      This introduces ntp_update_frequency() and deinlines ntp_clear() (as it's not
      performance critical).  ntp_update_frequency() calculates the base tick length
      using tick_usec and adds a base adjustment, in case the frequency doesn't
      divide evenly by HZ.
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Cc: john stultz <johnstul@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b0ee7556
    • J
      [PATCH] NTP: Move all the NTP related code to ntp.c · 4c7ee8de
      john stultz 提交于
      Move all the NTP related code to ntp.c
      
      [akpm@osdl.org: cleanups, build fix]
      Signed-off-by: NJohn Stultz <johnstul@us.ibm.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4c7ee8de
  7. 30 9月, 2006 4 次提交
  8. 15 8月, 2006 1 次提交
  9. 01 8月, 2006 3 次提交
  10. 15 7月, 2006 2 次提交
  11. 11 7月, 2006 1 次提交
  12. 04 7月, 2006 3 次提交
  13. 28 6月, 2006 2 次提交
  14. 27 6月, 2006 6 次提交
  15. 26 6月, 2006 1 次提交
  16. 23 6月, 2006 2 次提交
    • P
      [PATCH] When CONFIG_BASE_SMALL=1, cascade() may enter an infinite loop · 3439dd86
      Porpoise 提交于
      When CONFIG_BASE_SAMLL=1, cascade() in may enter the infinite loop.
      Because of CONFIG_BASE_SMALL=1(TVR_BITS=6 and TVN_BITS=4), the list
      base->tv5 may cascade into base->tv5.  So, the kernel enters the infinite
      loop in the function cascade().
      
      I created a test module to verify this bug, and a patch to fix it.
      
      #include <linux/kernel.h>
      #include <linux/module.h>
      #include <linux/init.h>
      #include <linux/timer.h>
      #if 0
      #include <linux/kdb.h>
      #else
      #define kdb_printf printk
      #endif
      
      #define TVN_BITS (CONFIG_BASE_SMALL ? 4 : 6)
      #define TVR_BITS (CONFIG_BASE_SMALL ? 6 : 8)
      #define TVN_SIZE (1 << TVN_BITS)
      #define TVR_SIZE (1 << TVR_BITS)
      #define TVN_MASK (TVN_SIZE - 1)
      #define TVR_MASK (TVR_SIZE - 1)
      
      #define TV_SIZE(N)  (N*TVN_BITS  + TVR_BITS)
      
      struct timer_list timer0;
      struct timer_list dummy_timer1;
      struct timer_list dummy_timer2;
      
      void dummy_timer_fun(unsigned long data) {
      }
      unsigned long j=0;
      void check_timer_base(unsigned long data)
      {
              kdb_printf("check_timer_base %08x\n",jiffies);
              mod_timer(&timer0,(jiffies & (~0xFFF)) + 0x1FFF);
      }
      
      int init_module(void)
      {
              init_timer(&timer0);
              timer0.data = (unsigned long)0;
              timer0.function = check_timer_base;
              mod_timer(&timer0,jiffies+1);
      
              init_timer(&dummy_timer1);
              dummy_timer1.data = (unsigned long)0;
              dummy_timer1.function = dummy_timer_fun;
      
              init_timer(&dummy_timer2);
              dummy_timer2.data = (unsigned long)0;
              dummy_timer2.function = dummy_timer_fun;
      
              j=jiffies;
              j&=(~((1<<TV_SIZE(3))-1));
              j+=(1<<TV_SIZE(3));
              j+=(1<<TV_SIZE(4));
      
              kdb_printf("mod_timer %08x\n",j);
      
              mod_timer(&dummy_timer1, j );
              mod_timer(&dummy_timer2, j );
      
              return 0;
      }
      
      void cleanup_module()
      {
              del_timer_sync(&timer0);
              del_timer_sync(&dummy_timer1);
              del_timer_sync(&dummy_timer2);
      }
      
      (Cleanups from Oleg)
      
      [oleg@tv-sign.ru: use list_replace_init()]
      Cc: Oleg Nesterov <oleg@tv-sign.ru>
      Cc: Matt Mackall <mpm@selenic.com>
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3439dd86
    • O
      [PATCH] list: use list_replace_init() instead of list_splice_init() · 626ab0e6
      Oleg Nesterov 提交于
      list_splice_init(list, head) does unneeded job if it is known that
      list_empty(head) == 1.  We can use list_replace_init() instead.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      626ab0e6
  17. 22 5月, 2006 1 次提交
    • Z
      [PATCH] Fix a NO_IDLE_HZ timer bug · 0662b713
      Zachary Amsden 提交于
      Under certain timing conditions, a race during boot occurs where timer
      ticks are being processed on remote CPUs.  The remote timer ticks can
      increment jiffies, and if this happens during a window when a timeout is
      very close to expiring but a local tick has not yet been delivered, you can
      end up with
      
      1) No softirq pending
      2) A local timer wheel which is not synced to jiffies
      3) No high resolution timer active
      4) A local timer which is supposed to fire before the current jiffies value.
      
      In this circumstance, the comparison in next_timer_interrupt overflows,
      because the base of the comparison for high resolution timers is jiffies,
      but for the softirq timer wheel, it is relative the the current base of the
      wheel (jiffies_base).
      Signed-off-by: NZachary Amsden <zach@vmware.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Oleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0662b713
  18. 26 4月, 2006 2 次提交