Merge branch 'locking-arch-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Oct 2014 13:48:00 +0000 (15:48 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Oct 2014 13:48:00 +0000 (15:48 +0200)
Pull arch atomic cleanups from Ingo Molnar:
 "This is a series kept separate from the main locking tree, which
  cleans up and improves various details in the atomics type handling:

   - Remove the unused atomic_or_long() method

   - Consolidate and compress atomic ops implementations between
     architectures, to reduce linecount and to make it easier to add new
     ops.

   - Rewrite generic atomic support to only require cmpxchg() from an
     architecture - generate all other methods from that"

* 'locking-arch-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (23 commits)
  locking,arch: Use ACCESS_ONCE() instead of cast to volatile in atomic_read()
  locking, mips: Fix atomics
  locking, sparc64: Fix atomics
  locking,arch: Rewrite generic atomic support
  locking,arch,xtensa: Fold atomic_ops
  locking,arch,sparc: Fold atomic_ops
  locking,arch,sh: Fold atomic_ops
  locking,arch,powerpc: Fold atomic_ops
  locking,arch,parisc: Fold atomic_ops
  locking,arch,mn10300: Fold atomic_ops
  locking,arch,mips: Fold atomic_ops
  locking,arch,metag: Fold atomic_ops
  locking,arch,m68k: Fold atomic_ops
  locking,arch,m32r: Fold atomic_ops
  locking,arch,ia64: Fold atomic_ops
  locking,arch,hexagon: Fold atomic_ops
  locking,arch,cris: Fold atomic_ops
  locking,arch,avr32: Fold atomic_ops
  locking,arch,arm64: Fold atomic_ops
  locking,arch,arm: Fold atomic_ops
  ...

1  2 
arch/sparc/kernel/smp_64.c

index c9300bfaee5ae37789baf4269536a60ede94a9c6,32dab009915fbbd0ef36f0ad96a3adf356eb3648..302c476413d5c5eaeb29fd5cedd529f86de2d30f
@@@ -1138,7 -1138,7 +1138,7 @@@ static unsigned long penguins_are_doing
  
  void smp_capture(void)
  {
-       int result = atomic_add_ret(1, &smp_capture_depth);
+       int result = atomic_add_return(1, &smp_capture_depth);
  
        if (result == 1) {
                int ncpus = num_online_cpus();
@@@ -1383,6 -1383,7 +1383,6 @@@ void __cpu_die(unsigned int cpu
  
  void __init smp_cpus_done(unsigned int max_cpus)
  {
 -      pcr_arch_init();
  }
  
  void smp_send_reschedule(int cpu)
@@@ -1467,13 -1468,6 +1467,13 @@@ static void __init pcpu_populate_pte(un
        pud_t *pud;
        pmd_t *pmd;
  
 +      if (pgd_none(*pgd)) {
 +              pud_t *new;
 +
 +              new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE);
 +              pgd_populate(&init_mm, pgd, new);
 +      }
 +
        pud = pud_offset(pgd, addr);
        if (pud_none(*pud)) {
                pmd_t *new;