1. 17 8月, 2008 6 次提交
  2. 16 8月, 2008 2 次提交
  3. 15 8月, 2008 4 次提交
  4. 24 7月, 2008 2 次提交
  5. 21 7月, 2008 1 次提交
  6. 20 7月, 2008 1 次提交
    • S
      x86: APIC: Remove apic_write_around(); use alternatives, merge fix · f586bf7d
      Suresh Siddha 提交于
      On Fri, Jul 18, 2008 at 02:03:48PM -0700, Ingo Molnar wrote:
      >
      > * Yinghai Lu <yhlu.kernel@gmail.com> wrote:
      >
      > > > git merge tip/x86/x2apic
      > > CONFLICT (content): Merge conflict in arch/x86/kernel/Makefile
      > > CONFLICT (content): Merge conflict in arch/x86/kernel/paravirt.c
      > > CONFLICT (content): Merge conflict in arch/x86/kernel/smpboot.c
      > > CONFLICT (content): Merge conflict in arch/x86/kernel/vmi_32.c
      > > CONFLICT (content): Merge conflict in arch/x86/xen/enlighten.c
      > > CONFLICT (content): Merge conflict in include/asm-x86/apic.h
      > > CONFLICT (content): Merge conflict in include/asm-x86/paravirt.h
      >
      > that's due to the changes in tip/x86/apic and in tip/x86/uv.
      >
      > ok, i've just merged x86/apic into x86/x2apic and x86/uv as well, and
      > pushed out the result.
      >
      > Note: it's a first raw merge and completely untested. It will now merge
      > cleanly into tip/master. There are probably a few details missing.
      
      Ingo, thanks for doing this. While I was testing my merge changes, you posted
      yours... anyhow we need this piece, which is missing from your merge.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: Yinghai Lu <yhlu.kernel@gmail.com>
      Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Zachary Amsden <zach@vmware.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f586bf7d
  7. 18 7月, 2008 2 次提交
  8. 12 7月, 2008 7 次提交
    • Y
      x86: make read_apic_id return final apicid · 4c9961d5
      Yinghai Lu 提交于
      also remove GET_APIC_ID when read_apic_id is used.
      
      need to apply after
      	[PATCH] x86: mach_apicdef.h need to include before smp.h
      Signed-off-by: NYinghai Lu <yhlu.kernel@gmail.com>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4c9961d5
    • S
      x64, x2apic/intr-remap: add x2apic support, including enabling interrupt-remapping · 6e1cb38a
      Suresh Siddha 提交于
      x2apic support.  Interrupt-remapping must be enabled before enabling x2apic,
      this is needed to ensure that IO interrupts continue to work properly after the
      cpu mode is changed to x2apic(which uses 32bit extended physical/cluster
      apic id).
      
      On systems where apicid's are > 255, BIOS can handover the control to OS in
      x2apic mode. Or if the OS handover was in legacy xapic mode, check
      if it is capable of x2apic mode. And if we succeed in enabling
      Interrupt-remapping, then we can enable x2apic mode in the CPU.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6e1cb38a
    • S
      x64, x2apic/intr-remap: IO-APIC support for interrupt-remapping · 89027d35
      Suresh Siddha 提交于
      IO-APIC support in the presence of interrupt-remapping infrastructure.
      
      IO-APIC RTE will be programmed with interrupt-remapping table entry(IRTE)
      index and the IRTE will contain information about the vector, cpu destination,
      trigger mode etc, which traditionally was present in the IO-APIC RTE.
      
      Introduce a new irq_chip for cleaner irq migration (in the process
      context as opposed to the current irq migration in the context of an interrupt.
      interrupt-remapping infrastructure will help us achieve this cleanly).
      
      For edge triggered, irq migration is a simple atomic update(of vector
      and cpu destination) of IRTE and flush the hardware cache.
      
      For level triggered, we need to modify the io-apic RTE aswell with the update
      vector information, along with modifying IRTE with vector and cpu destination.
      So irq migration for level triggered is little  bit more complex compared to
      edge triggered migration. But the good news is, we use the same algorithm
      for level triggered migration as we have today, only difference being,
      we now initiate the irq migration from process context instead of the
      interrupt context.
      
      In future, when we do a directed EOI (combined with cpu EOI broadcast
      suppression) to the IO-APIC, level triggered irq migration will also be
      as simple as edge triggered migration and we can do the irq migration
      with a simple atomic update to IO-APIC RTE.
      
      TBD: some tests/changes needed in the presence of fixup_irqs() for
      level triggered irq migration.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      89027d35
    • S
      x64, x2apic/intr-remap: x2apic ops for x2apic mode support · 13c88fb5
      Suresh Siddha 提交于
      x2apic ops for x2apic mode support. This uses MSR interface and differs
      slightly from the xapic register layout.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      13c88fb5
    • S
      x64, x2apic/intr-remap: basic apic ops support · 1b374e4d
      Suresh Siddha 提交于
      Introduce basic apic operations which handle the apic programming. This
      will be used later to introduce another specific operations for x2apic.
      
      For the perfomance critial accesses like IPI's, EOI etc, we use the
      native operations as they are already referenced by different
      indirections like genapic, irq_chip etc.
      
      64bit Paravirt ops can also define their apic operations accordingly.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      1b374e4d
    • S
      x64, x2apic/intr-remap: Interrupt-remapping and x2apic support, fix · 2d7a66d0
      Suresh Siddha 提交于
      Yinghai Lu wrote:
      
      > Setting APIC routing to physical flat
      > Kernel panic - not syncing: Boot APIC ID in local APIC unexpected (0 vs 4)
      > Pid: 1, comm: swapper Not tainted 2.6.26-rc9-tip-01763-g74f94b1-dirty #320
      >
      > Call Trace:
      >  [<ffffffff80a21505>] ? set_cpu_sibling_map+0x38c/0x3bd
      >  [<ffffffff80245215>] ? read_xapic_id+0x25/0x3e
      >  [<ffffffff80e5a2c3>] ? verify_local_APIC+0x139/0x1b9
      >  [<ffffffff80245215>] ? read_xapic_id+0x25/0x3e
      >  [<ffffffff80e589af>] ? native_smp_prepare_cpus+0x224/0x2e9
      >  [<ffffffff80e4881a>] ? kernel_init+0x64/0x341
      >  [<ffffffff8022a439>] ? child_rip+0xa/0x11
      >  [<ffffffff80e487b6>] ? kernel_init+0x0/0x341
      >  [<ffffffff8022a42f>] ? child_rip+0x0/0x11
      >
      >
      > guess read_apic_id changing cuase some problem...
      
      genapic's read_apic_id() returns the actual apic id extracted from
      the APIC_ID register. And in some cases like UV, read_apic_id()
      returns completely different values from APIC ID register.
      
      Use the native apic register read, rather than genapic read_apic_id()
      in verify_local_APIC()
      
      And also, lapic_suspend() should also use native apic register read.
      Reported-by: NYinghai Lu <yhlu.kernel@gmail.com>
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>
      Cc: "arjan@linux.intel.com" <arjan@linux.intel.com>
      Cc: "andi@firstfloor.org" <andi@firstfloor.org>
      Cc: "ebiederm@xmission.com" <ebiederm@xmission.com>
      Cc: "jbarnes@virtuousgeek.org" <jbarnes@virtuousgeek.org>
      Cc: "steiner@sgi.com" <steiner@sgi.com>
      Cc: "jeremy@goop.org" <jeremy@goop.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2d7a66d0
    • S
      x64, x2apic/intr-remap: introduce read_apic_id() to genapic routines · 0c81c746
      Suresh Siddha 提交于
      Move the read_apic_id()  to genapic routines.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0c81c746
  9. 08 7月, 2008 10 次提交
    • C
      x86: nmi_watchdog - use NMI_NONE by default · c376d454
      Cyrill Gorcunov 提交于
      There is no need to keep NMI_DISABLED definition and use it
      for nmi_watchdog by default. Here is the point why:
      
      - IO-APIC and APIC chips are programmed for nmi_watchdog support at very
        early stage of kernel booting and not having nmi_watchdog specified as
        boot option lead only to nmi_watchdog becomes to NMI_NONE anyway
      - enable nmi_watchdog thru /proc/sys/kernel/nmi if it was not specified at
        boot is not possible too (even having this sysfs entry)
      Signed-off-by: NCyrill Gorcunov <gorcunov@gmail.com>
      Cc: macro@linux-mips.org
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c376d454
    • C
      x86: nmi_watchdog - use nmi_watchdog variable for printing · 116f570e
      Cyrill Gorcunov 提交于
      Since it is possible NMI_ definitions could be changed
      one day we better print out real nmi_watchdog value instead
      of constant string.
      Signed-off-by: NCyrill Gorcunov <gorcunov@gmail.com>
      Cc: macro@linux-mips.org
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      116f570e
    • G
      x86: provide connect_bsp_APIC for x86_64 · b5841765
      Glauber Costa 提交于
      Although it is not really needed, we provide it to get
      closer to i386. ifdefs around it are removed in smpboot.c
      Signed-off-by: NGlauber Costa <gcosta@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b5841765
    • J
      x86: fix stack overflow for large values of MAX_APICS · b6df1b8b
      Jack Steiner 提交于
      physid_mask_of_physid() causes a huge stack (12k) to be created if the
      number of APICS is large. Replace physid_mask_of_physid() with a
      new function that does not create large stacks. This is a problem only
      on large x86_64 systems.
      
      this paves the way to increase MAX_APICS.
      Signed-off-by: NJack Steiner <steiner@sgi.com>
      Cc: linux-mm@kvack.org
      Cc: mingo@elte.hu
      Cc: tglx@linutronix.de
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b6df1b8b
    • M
      x86: cleanup early per cpu variables/accesses v4 · 23ca4bba
      Mike Travis 提交于
        * Introduce a new PER_CPU macro called "EARLY_PER_CPU".  This is
          used by some per_cpu variables that are initialized and accessed
          before there are per_cpu areas allocated.
      
          ["Early" in respect to per_cpu variables is "earlier than the per_cpu
          areas have been setup".]
      
          This patchset adds these new macros:
      
      	DEFINE_EARLY_PER_CPU(_type, _name, _initvalue)
      	EXPORT_EARLY_PER_CPU_SYMBOL(_name)
      	DECLARE_EARLY_PER_CPU(_type, _name)
      
      	early_per_cpu_ptr(_name)
      	early_per_cpu_map(_name, _idx)
      	early_per_cpu(_name, _cpu)
      
          The DEFINE macro defines the per_cpu variable as well as the early
          map and pointer.  It also initializes the per_cpu variable and map
          elements to "_initvalue".  The early_* macros provide access to
          the initial map (usually setup during system init) and the early
          pointer.  This pointer is initialized to point to the early map
          but is then NULL'ed when the actual per_cpu areas are setup.  After
          that the per_cpu variable is the correct access to the variable.
      
          The early_per_cpu() macro is not very efficient but does show how to
          access the variable if you have a function that can be called both
          "early" and "late".  It tests the early ptr to be NULL, and if not
          then it's still valid.  Otherwise, the per_cpu variable is used
          instead:
      
      	#define early_per_cpu(_name, _cpu) 			\
      		(early_per_cpu_ptr(_name) ?			\
      			early_per_cpu_ptr(_name)[_cpu] :	\
      			per_cpu(_name, _cpu))
      
          A better method is to actually check the pointer manually.  In the
          case below, numa_set_node can be called both "early" and "late":
      
      	void __cpuinit numa_set_node(int cpu, int node)
      	{
      	    int *cpu_to_node_map = early_per_cpu_ptr(x86_cpu_to_node_map);
      
      	    if (cpu_to_node_map)
      		    cpu_to_node_map[cpu] = node;
      	    else
      		    per_cpu(x86_cpu_to_node_map, cpu) = node;
      	}
      
        * Add a flag "arch_provides_topology_pointers" that indicates pointers
          to topology cpumask_t maps are available.  Otherwise, use the function
          returning the cpumask_t value.  This is useful if cpumask_t set size
          is very large to avoid copying data on to/off of the stack.
      
        * The coverage of CONFIG_DEBUG_PER_CPU_MAPS has been increased while
          the non-debug case has been optimized a bit.
      
        * Remove an unreferenced compiler warning in drivers/base/topology.c
      
        * Clean up #ifdef in setup.c
      
      For inclusion into sched-devel/latest tree.
      
      Based on:
      	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
          +   sched-devel/latest  .../mingo/linux-2.6-sched-devel.git
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      23ca4bba
    • M
      x86: APIC/UP: Downgrade the NMI watchdog for no I/O APIC · acae7d90
      Maciej W. Rozycki 提交于
       If configured to use the I/O APIC, the NMI watchdog is deemed to fail if
      the chip will not be used in the UP configuration, because "noapic" has
      been specified or the chip is simply not there.  Downgrade to the local
      APIC watchdog to rectify.
      
      The new #ifdef is ugly, I know.  A proper solution is to provide suitable
      definitions of smp_found_config, etc. for !CONFIG_X86_IO_APIC in a header.
      Likewise the whole if () condition should be moved to a static inline
      function.  Such clean-ups are beyond the scope of this change and can be
      done once the whole issue of the timer has been sorted out.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      acae7d90
    • I
      Revert "x86, io-apic: fix nmi_watchdog=1 bootup hang" · ab5a5be0
      Ingo Molnar 提交于
      This reverts commit 2229ff84f01746d02fb6b79e156fb5cce48c908f.
      
      A better fix from Maciej will be merged.
      ab5a5be0
    • I
      x86, io-apic: fix nmi_watchdog=1 bootup hang · ff11571b
      Ingo Molnar 提交于
      nmi_watchdog=1 hangs on 64-bit:
      
      [    0.250000] Detected 12.564 MHz APIC timer.
      [    0.254178] APIC timer registered as dummy, due to nmi_watchdog=1!
      [    0.260366] Testing NMI watchdog ... <4>WARNING: CPU#0: NMI appears to be stuck (0->0)!
      [    ...     ]
      [    0.470003] calling  genl_init+0x0/0xd0
      [  hard hang ]
      
      bisected it down to:
      
       git-bisect start
       git-bisect good 1beee8dc
       git-bisect bad 11582ece0aaa2d0f94f345c08a4ab9997078a083
       git-bisect bad 5479c623bb44089844022c03d4c0eb16d5b7a15f
       git-bisect bad cfb4c7fabeb499e1c29f9d1878968e37a938e28a
       git-bisect good 246dd412
       git-bisect bad 3f8237eaff7dc1e35fa791dae095574fd974e671
       git-bisect good 90e23b13ab849e2a11f00c655eb3a2011b4623be
       git-bisect bad 833526a34eeefc117df3191a594c3c3a4f15a9ac
       git-bisect good 791b93d3dfaf16c23e978bec0cc0a3dd9d855d63
       git-bisect bad 65767c64068f2c93e56a1accfed5c78230ac12d7
       git-bisect bad 2abc5c05dd82c188e3bdf6641a274f013348d14b
       git-bisect bad 317e1f2597ffb4d4db940577bbe56dc6e881ef07
      
      | 317e1f2597ffb4d4db940577bbe56dc6e881ef07 is first bad commit
      | commit 317e1f2597ffb4d4db940577bbe56dc6e881ef07
      | Author: Maciej W. Rozycki <macro@linux-mips.org>
      | Date:   Wed May 21 22:10:22 2008 +0100
      |     x86: I/O APIC: clean up the 8259A on a NMI watchdog failure
      
      the problem is that in the dummy-lapic branch we rely on the i8259A
      but if the NMI watchdog fails we turn off IRQ 0 - which doesnt work
      too well ;-)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ff11571b
    • T
      431ee79d
    • T
      x86, clockevents: add C1E aware idle function · aa276e1c
      Thomas Gleixner 提交于
      C1E on AMD machines is like C3 but without control from the OS. Up to
      now we disabled the local apic timer for those machines as it stops
      when the CPU goes into C1E. This excludes those machines from high
      resolution timers / dynamic ticks, which hurts especially X2 based
      laptops.
      
      The current boot time C1E detection has another, more serious flaw
      as well: some BIOSes do not enable C1E until the ACPI processor module
      is loaded. This causes systems to stop working after that point.
      
      To work nicely with C1E enabled machines we use a separate idle
      function, which checks on idle entry whether C1E was enabled in the
      Interrupt Pending Message MSR. This allows us to do timer broadcasting
      for C1E and covers the late enablement of C1E as well.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      aa276e1c
  10. 10 6月, 2008 1 次提交
  11. 25 5月, 2008 1 次提交
  12. 23 5月, 2008 1 次提交
  13. 26 4月, 2008 1 次提交
  14. 25 4月, 2008 1 次提交