1. 23 10月, 2008 2 次提交
  2. 23 7月, 2008 1 次提交
    • V
      x86: consolidate header guards · 77ef50a5
      Vegard Nossum 提交于
      This patch is the result of an automatic script that consolidates the
      format of all the headers in include/asm-x86/.
      
      The format:
      
      1. No leading underscore. Names with leading underscores are reserved.
      2. Pathname components are separated by two underscores. So we can
         distinguish between mm_types.h and mm/types.h.
      3. Everything except letters and numbers are turned into single
         underscores.
      Signed-off-by: NVegard Nossum <vegard.nossum@gmail.com>
      77ef50a5
  3. 17 4月, 2008 1 次提交
  4. 22 3月, 2008 1 次提交
  5. 30 1月, 2008 1 次提交
    • 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
  6. 11 10月, 2007 1 次提交
  7. 23 7月, 2007 1 次提交
  8. 20 7月, 2007 1 次提交
    • A
      i386: Allow KVM on i386 nonpae · 2d9ce177
      Avi Kivity 提交于
      Currently, CONFIG_X86_CMPXCHG64 both enables boot-time checking of
      the cmpxchg64b feature and enables compilation of the set_64bit() family.
      Since the option is dependent on PAE, and since KVM depends on set_64bit(),
      this effectively disables KVM on i386 nopae.
      
      Simplify by removing the config option altogether: the boot check is made
      dependent on CONFIG_X86_PAE directly, and the set_64bit() family is exposed
      without constraints.  It is up to users to check for the feature flag (KVM
      does not as virtualiation extensions imply its existence).
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2d9ce177
  9. 09 5月, 2007 1 次提交
    • J
      x86: create asm/cmpxchg.h · a436ed9c
      Jeff Dike 提交于
      i386:
      
        Rearrange the cmpxchg code to allow atomic.h to get it without needing to
        include system.h.  This kills warnings in the UML build from atomic.h about
        implicit declarations of cmpxchg symbols.  The i386 build presumably isn't
        seeing this because a separate inclusion of system.h is covering it over.
      
        The cmpxchg stuff is moved to asm-i386/cmpxchg.h, with an include left in
        system.h for the benefit of generic code which expects cmpxchg there.
      
        Meanwhile, atomic.h includes cmpxchg.h.
      
        This causes no noticable damage to the i386 build.
      
      x86_64:
      
        Move cmpxchg into its own header.  atomic.h already included system.h, so
        this is changed to include cmpxchg.h.
      
        This is purely cleanup - it's not fixing any warnings - so if the x86_64
        system.h isn't considered as cleanup-worthy as i386, then this can be
        dropped.
      
        It causes no noticable damage to the x86_64 build.
      
      uml:
      
        The i386 and x86_64 cmpxchg patches require an asm-um/cmpxchg.h for the
        UML build.
      Signed-off-by: NJeff Dike <jdike@linux.intel.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a436ed9c