1. 18 8月, 2008 2 次提交
    • T
      x86: move cmpxchg fallbacks to a generic place · 774400a3
      Thomas Petazzoni 提交于
      arch/x86/kernel/cpu/intel.c defines a few fallback functions
      (cmpxchg_*()) that are used when the CPU doesn't support cmpxchg
      and/or cmpxchg64 natively. However, while defined in an Intel-specific
      file, these functions are also used for CPUs from other vendors when
      they don't support cmpxchg and/or cmpxchg64. This breaks the
      compilation when support for Intel CPUs is disabled.
      
      This patch moves these functions to a new
      arch/x86/kernel/cpu/cmpxchg.c file, unconditionally compiled when
      X86_32 is enabled.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Cc: michael@free-electrons.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      774400a3
    • T
      x86: make movsl_mask definition non-CPU specific · 8bfcb396
      Thomas Petazzoni 提交于
      movsl_mask is currently defined in arch/x86/kernel/cpu/intel.c, which
      contains code specific to Intel CPUs. However, movsl_mask is used in
      the non-CPU specific code in arch/x86/lib/usercopy_32.c, which breaks
      the compilation when support for Intel CPUs is compiled out.
      
      This patch solves this problem by moving movsl_mask's definition close
      to its users in arch/x86/lib/usercopy_32.c.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Cc: michael@free-electrons.com
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8bfcb396
  2. 18 7月, 2008 1 次提交
    • M
      x86: APIC: remove apic_write_around(); use alternatives · 593f4a78
      Maciej W. Rozycki 提交于
      Use alternatives to select the workaround for the 11AP Pentium erratum
      for the affected steppings on the fly rather than build time.  Remove the
      X86_GOOD_APIC configuration option and replace all the calls to
      apic_write_around() with plain apic_write(), protecting accesses to the
      ESR as appropriate due to the 3AP Pentium erratum.  Remove
      apic_read_around() and all its invocations altogether as not needed.
      Remove apic_write_atomic() and all its implementing backends.  The use of
      ASM_OUTPUT2() is not strictly needed for input constraints, but I have
      used it for readability's sake.
      
      I had the feeling no one else was brave enough to do it, so I went ahead
      and here it is.  Verified by checking the generated assembly and tested
      with both a 32-bit and a 64-bit configuration, also with the 11AP
      "feature" forced on and verified with gdb on /proc/kcore to work as
      expected (as an 11AP machines are quite hard to get hands on these days).
      Some script complained about the use of "volatile", but apic_write() needs
      it for the same reason and is effectively a replacement for writel(), so I
      have disregarded it.
      
      I am not sure what the policy wrt defconfig files is, they are generated
      and there is risk of a conflict resulting from an unrelated change, so I
      have left changes to them out.  The option will get removed from them at
      the next run.
      
      Some testing with machines other than mine will be needed to avoid some
      stupid mistake, but despite its volume, the change is not really that
      intrusive, so I am fairly confident that because it works for me, it will
      everywhere.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      593f4a78
  3. 13 7月, 2008 1 次提交
    • Y
      x86: fix numaq_tsc_disable calling · 3d88cca7
      Yinghai Lu 提交于
      got this on a test-system:
      
       calling  numaq_tsc_disable+0x0/0x39
       NUMAQ: disabling TSC
       initcall numaq_tsc_disable+0x0/0x39 returned 0 after 0 msecs
      
      that's because we should not be using arch_initcall to call numaq_tsc_disable.
      
      need to call it in setup_arch before time_init()/tsc_init()
      and call it in init_intel() to make the cpu feature bits right.
      Signed-off-by: NYinghai Lu <yhlu.kernel@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3d88cca7
  4. 17 4月, 2008 3 次提交
  5. 04 2月, 2008 1 次提交
  6. 30 1月, 2008 6 次提交
    • A
      x86: move MWAIT idle check to generic CPU initialization on 32-bit · 30d432df
      Andi Kleen 提交于
      Previously it was only run for Intel CPUs, but AMD Fam10h implements MWAIT too.
      
      This matches 64bit behaviour.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      30d432df
    • A
      x86: move X86_FEATURE_CONSTANT_TSC into early cpu feature detection · 2b16a235
      Andi Kleen 提交于
      Need this in the next patch in time_init and that happens early.
      
      This includes a minor fix on i386 where early_intel_workarounds()
      [which is now called early_init_intel] really executes early as
      the comments say.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      2b16a235
    • I
      x86: lfence fix · 6d5f718a
      Ingo Molnar 提交于
      LFENCE is available on XMM2 or higher Intel CPUs - not XMM or higher...
      
      this caused boot failures on XMM1 & !XMM1 capable CPUs.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      6d5f718a
    • A
      x86: Implement support to synchronize RDTSC with LFENCE on Intel CPUs · 707fa8ed
      Andi Kleen 提交于
      According to Intel RDTSC can be always synchronized with LFENCE
      on all current CPUs. Implement the necessary CPUID bit for that.
      
      It is unclear yet if that is true for all future CPUs too,
      but if there's another way the kernel can be always updated.
      
      Cc: asit.k.mallick@intel.com
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      707fa8ed
    • M
      x86, ptrace: support for branch trace store(BTS) · eee3af4a
      Markus Metzger 提交于
      Resend using different mail client
      
      Changes to the last version:
      - split implementation into two layers: ds/bts and ptrace
      - renamed TIF's
      - save/restore ds save area msr in __switch_to_xtra()
      - make block-stepping only look at BTF bit
      Signed-off-by: NMarkus Metzger <markus.t.metzger@intel.com>
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      eee3af4a
    • M
      x86: fall back on interrupt disable in cmpxchg8b on 80386 and 80486 · 2c0b8a75
      Mathieu Desnoyers 提交于
      Actually, on 386, cmpxchg and cmpxchg_local fall back on
      cmpxchg_386_u8/16/32: it disables interruptions around non atomic
      updates to mimic the cmpxchg behavior.
      
      The comment:
      /* Poor man's cmpxchg for 386. Unsuitable for SMP */
      
      already present in cmpxchg_386_u32 tells much about how this cmpxchg
      implementation should not be used in a SMP context. However, the cmpxchg_local
      can perfectly use this fallback, since it only needs to be atomic wrt the local
      cpu.
      
      This patch adds a cmpxchg_486_u64 and uses it as a fallback for cmpxchg64
      and cmpxchg64_local on 80386 and 80486.
      
      Q:
      but why is it called cmpxchg_486 when the other functions are called
      
      A:
      Because the standard cmpxchg is missing only on 386, but cmpxchg8b is
      missing both on 386 and 486.
      
      Citing Intel's Instruction set reference:
      
      cmpxchg:
      This instruction is not supported on Intel processors earlier than the
      Intel486 processors.
      
      cmpxchg8b:
      This instruction encoding is not supported on Intel processors earlier
      than the Pentium processors.
      
      Q:
      What's the reason to have cmpxchg64_local on 32 bit architectures?
      Without that need all this would just be a few simple defines.
      
      A:
      cmpxchg64_local on 32 bits architectures takes unsigned long long
      parameters, but cmpxchg_local only takes longs. Since we have cmpxchg8b
      to execute a 8 byte cmpxchg atomically on pentium and +, it makes sense
      to provide a flavor of cmpxchg and cmpxchg_local using this instruction.
      
      Also, for 32 bits architectures lacking the 64 bits atomic cmpxchg, it
      makes sense _not_ to define cmpxchg64 while cmpxchg could still be
      available.
      
      Moreover, the fallback for cmpxchg8b on i386 for 386 and 486 is a
      
      However, cmpxchg64_local will be emulated by disabling interrupts on all
      architectures where it is not supported atomically.
      
      Therefore, we *could* turn cmpxchg64_local into a cmpxchg_local, but it
      would make the 386/486 fallbacks ugly, make its design different from
      cmpxchg/cmpxchg64 (which really depends on atomic operations and cannot
      be emulated) and require the __cmpxchg_local to be expressed as a macro
      rather than an inline function so the parameters would not be fixed to
      unsigned long long in every case.
      
      So I think cmpxchg64_local makes sense there, but I am open to
      suggestions.
      
      Q:
      Are there any callers?
      
      A:
      I am actually using it in LTTng in my timestamping code. I use it to
      work around CPUs with asynchronous TSCs. I need to update 64 bits
      values atomically on this 32 bits architecture.
      
      Changelog:
      - Ran though checkpatch.
      Signed-off-by: NMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      2c0b8a75
  7. 18 10月, 2007 1 次提交
    • S
      i386: fix section mismatch warning in intel.c · d72b1b4f
      Sam Ravnborg 提交于
      Fix following section mismatch warning:
      WARNING: vmlinux.o(.text+0xc88c): Section mismatch: reference to .init.text:trap_init_f00f_bug (between 'init_intel' and 'cpuid4_cache_lookup')
      
      init_intel are __cpuint where trap_init_f00f_bug is __init.
      Fixed by declaring trap_init_f00f_bug __cpuinit.
      
      Moved the defintion of trap_init_f00f_bug to the sole user in init.c
      so the ugly prototype in intel.c could get killed.
      
      Frank van Maarseveen <frankvm@frankvm.com> supplied the .config used
      to reproduce the warning.
      
      [ tglx: arch/x86 adaptation ]
      
      Cc: Frank van Maarseveen <frankvm@frankvm.com>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      d72b1b4f
  8. 11 10月, 2007 1 次提交
  9. 03 5月, 2007 1 次提交
  10. 07 12月, 2006 3 次提交
  11. 26 9月, 2006 2 次提交
  12. 01 7月, 2006 1 次提交
  13. 27 6月, 2006 1 次提交
  14. 23 3月, 2006 1 次提交
  15. 12 1月, 2006 1 次提交
  16. 15 11月, 2005 1 次提交
  17. 14 11月, 2005 1 次提交
  18. 05 9月, 2005 1 次提交
  19. 08 7月, 2005 1 次提交
  20. 26 6月, 2005 1 次提交
  21. 17 4月, 2005 2 次提交