1. 26 9月, 2006 3 次提交
    • A
      [PATCH] Remove all ifdefs for local/io apic · 7f11d8a5
      Andi Kleen 提交于
      IO-APIC or local APIC can only be disabled at runtime anyways and
      Kconfig has forced these options on for a long time now.
      
      The Kconfigs are kept only now for the benefit of the shared acpi
      boot.c code.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      7f11d8a5
    • A
      [PATCH] Clean up asm/smp.h includes · 2f766d16
      Andi Kleen 提交于
      No need to include it from entry.S
      Drop all the #ifdef __ASSEMBLY__
      Signed-off-by: NAndi Kleen <ak@suse.de>
      2f766d16
    • V
      [PATCH] Add the vgetcpu vsyscall · c08c8205
      Vojtech Pavlik 提交于
      This patch adds a vgetcpu vsyscall, which depending on the CPU RDTSCP
      capability uses either the RDTSCP or CPUID to obtain a CPU and node
      numbers and pass them to the program.
      
      AK: Lots of changes over Vojtech's original code:
      Better prototype for vgetcpu()
      It's better to pass the cpu / node numbers as separate arguments
      to avoid mistakes when going from SMP to NUMA.
      Also add a fast time stamp based cache using a user supplied
      argument to speed things more up.
      Use fast method from Chuck Ebbert to retrieve node/cpu from
      GDT limit instead of CPUID
      Made sure RDTSCP init is always executed after node is known.
      Drop printk
      Signed-off-by: NVojtech Pavlik <vojtech@suse.cz>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      c08c8205
  2. 27 6月, 2006 1 次提交
  3. 26 4月, 2006 1 次提交
  4. 28 3月, 2006 1 次提交
    • S
      [PATCH] sched: new sched domain for representing multi-core · 1e9f28fa
      Siddha, Suresh B 提交于
      Add a new sched domain for representing multi-core with shared caches
      between cores.  Consider a dual package system, each package containing two
      cores and with last level cache shared between cores with in a package.  If
      there are two runnable processes, with this appended patch those two
      processes will be scheduled on different packages.
      
      On such systems, with this patch we have observed 8% perf improvement with
      specJBB(2 warehouse) benchmark and 35% improvement with CFP2000 rate(with 2
      users).
      
      This new domain will come into play only on multi-core systems with shared
      caches.  On other systems, this sched domain will be removed by domain
      degeneration code.  This new domain can be also used for implementing power
      savings policy (see OLS 2005 CMP kernel scheduler paper for more details..
      I will post another patch for power savings policy soon)
      
      Most of the arch/* file changes are for cpu_coregroup_map() implementation.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1e9f28fa
  5. 12 1月, 2006 1 次提交
  6. 15 11月, 2005 2 次提交
    • A
      [PATCH] x86_64: New heuristics to find out hotpluggable CPUs. · 420f8f68
      Andi Kleen 提交于
      With a NR_CPUS==128 kernel with CPU hotplug enabled we would waste 4MB
      on per CPU data of all possible CPUs.  The reason was that HOTPLUG
      always set up possible map to NR_CPUS cpus and then we need to allocate
      that much (each per CPU data is roughly ~32k now)
      
      The underlying problem is that ACPI didn't tell us how many hotplug CPUs
      the platform supports.  So the old code just assumed all, which would
      lead to this memory wastage.
      
      This implements some new heuristics:
      
       - If the BIOS specified disabled CPUs in the ACPI/mptables assume they
         can be enabled later (this is bending the ACPI specification a bit,
         but seems like a obvious extension)
       - The user can overwrite it with a new additionals_cpus=NUM option
       - Otherwise use half of the available CPUs or 2, whatever is more.
      
      Cc: ashok.raj@intel.com
      Cc: len.brown@intel.com
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      420f8f68
    • S
      [PATCH] x86_64: Unmap NULL during early bootup · f6c2e333
      Siddha, Suresh B 提交于
      We should zap the low mappings, as soon as possible, so that we can catch
      kernel bugs more effectively. Previously early boot had NULL mapped
      and didn't trap on NULL references.
      
      This patch introduces boot_level4_pgt, which will always have low identity
      addresses mapped.  Druing boot, all the processors will use this as their
      level4 pgt.  On BP, we will switch to init_level4_pgt as soon as we enter C
      code and zap the low mappings as soon as we are done with the usage of
      identity low mapped addresses.  On AP's we will zap the low mappings as
      soon as we jump to C code.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f6c2e333
  7. 11 11月, 2005 1 次提交
    • A
      [PATCH] PCI: Change MSI to use physical delivery mode always · b4033c17
      Ashok Raj 提交于
      MSI hardcoded delivery mode to use logical delivery mode. Recently
      x86_64 moved to use physical mode addressing to support physflat mode.
      With this mode enabled noticed that my eth with MSI werent working.
      
      msi_address_init()  was hardcoded to use logical mode for i386 and x86_64.
      So when we switch to use physical mode, things stopped working.
      
      Since anyway we dont use lowest priority delivery with MSI, its always
      directed to just a single CPU. Its safe  and simpler to use
      physical mode always, even when we use logical delivery mode for IPI's
      or other ioapic RTE's.
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b4033c17
  8. 11 10月, 2005 1 次提交
  9. 13 9月, 2005 1 次提交
  10. 30 7月, 2005 1 次提交
    • E
      [PATCH] Fix sync_tsc hang · 3d483f47
      Eric W. Biederman 提交于
      sync_tsc was using smp_call_function to ask the boot processor to report
      it's tsc value.  smp_call_function performs an IPI_send_allbutself which is
      a broadcast ipi.  There is a window during processor startup during which
      the target cpu has started and before it has initialized it's interrupt
      vectors so it can properly process an interrupt.  Receveing an interrupt
      during that window will triple fault the cpu and do other nasty things.
      
      Why cli does not protect us from that is beyond me.
      
      The simple fix is to match ia64 and provide a smp_call_function_single.
      Which avoids the broadcast and is more efficient.
      
      This certainly fixes the problem of getting stuck on boot which was
      very easy to trigger on my SMP Hyperthreaded Xeon, and I think
      it fixes it for the right reasons.
      
      Minor changes by AK
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3d483f47
  11. 29 7月, 2005 1 次提交
  12. 26 6月, 2005 2 次提交
  13. 22 6月, 2005 1 次提交
    • I
      [PATCH] smp_processor_id() cleanup · 39c715b7
      Ingo Molnar 提交于
      This patch implements a number of smp_processor_id() cleanup ideas that
      Arjan van de Ven and I came up with.
      
      The previous __smp_processor_id/_smp_processor_id/smp_processor_id API
      spaghetti was hard to follow both on the implementational and on the
      usage side.
      
      Some of the complexity arose from picking wrong names, some of the
      complexity comes from the fact that not all architectures defined
      __smp_processor_id.
      
      In the new code, there are two externally visible symbols:
      
       - smp_processor_id(): debug variant.
      
       - raw_smp_processor_id(): nondebug variant. Replaces all existing
         uses of _smp_processor_id() and __smp_processor_id(). Defined
         by every SMP architecture in include/asm-*/smp.h.
      
      There is one new internal symbol, dependent on DEBUG_PREEMPT:
      
       - debug_smp_processor_id(): internal debug variant, mapped to
                                   smp_processor_id().
      
      Also, i moved debug_smp_processor_id() from lib/kernel_lock.c into a new
      lib/smp_processor_id.c file.  All related comments got updated and/or
      clarified.
      
      I have build/boot tested the following 8 .config combinations on x86:
      
       {SMP,UP} x {PREEMPT,!PREEMPT} x {DEBUG_PREEMPT,!DEBUG_PREEMPT}
      
      I have also build/boot tested x64 on UP/PREEMPT/DEBUG_PREEMPT.  (Other
      architectures are untested, but should work just fine.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NArjan van de Ven <arjan@infradead.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      39c715b7
  14. 17 4月, 2005 3 次提交
    • A
      [PATCH] x86_64: Switch SMP bootup over to new CPU hotplug state machine · a8ab26fe
      Andi Kleen 提交于
      This will allow hotplug CPU in the future and in general cleans up a lot of
      crufty code.  It also should plug some races that the old hackish way
      introduces.  Remove one old race workaround in NMI watchdog setup that is not
      needed anymore.
      
      I removed the old total sum of bogomips reporting code.  The brag value of
      BogoMips has been greatly devalued in the last years on the open market.
      
      Real CPU hotplug will need some more work, but the infrastructure for it is
      there now.
      
      One drawback: the new TSC sync algorithm is less accurate than before.  The
      old way of zeroing TSCs is too intrusive to do later.  Instead the TSC of the
      BP is duplicated now, which is less accurate.
      
      akpm:
      
      - sync_tsc_bp_init seems to have the sense of `init' inverted.
      
      - SPIN_LOCK_UNLOCKED is deprecated - use DEFINE_SPINLOCK.
      
      Cc: <rusty@rustcorp.com.au>
      Cc: <mingo@elte.hu>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a8ab26fe
    • A
      [PATCH] x86_64: add support for Intel dual-core detection and displaying · 3dd9d514
      Andi Kleen 提交于
      Appended patch adds the support for Intel dual-core detection and displaying
      the core related information in /proc/cpuinfo.  
      
      It adds two new fields "core id" and "cpu cores" to x86 /proc/cpuinfo and the
      "core id" field for x86_64("cpu cores" field is already present in x86_64).
      
      Number of processor cores in a die is detected using cpuid(4) and this is
      documented in IA-32 Intel Architecture Software Developer's Manual (vol 2a)
      (http://developer.intel.com/design/pentium4/manuals/index_new.htm#sdm_vol2a)
      
      This patch also adds cpu_core_map similar to cpu_sibling_map.
      
      Slightly hacked by AK.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3dd9d514
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4