Merge tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 19 Mar 2016 22:38:41 +0000 (15:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 19 Mar 2016 22:38:41 +0000 (15:38 -0700)
Pull powerpc updates from Michael Ellerman:
 "This was delayed a day or two by some build-breakage on old toolchains
  which we've now fixed.

  There's two PCI commits both acked by Bjorn.

  There's one commit to mm/hugepage.c which is (co)authored by Kirill.

  Highlights:
   - Restructure Linux PTE on Book3S/64 to Radix format from Paul
     Mackerras
   - Book3s 64 MMU cleanup in preparation for Radix MMU from Aneesh
     Kumar K.V
   - Add POWER9 cputable entry from Michael Neuling
   - FPU/Altivec/VSX save/restore optimisations from Cyril Bur
   - Add support for new ftrace ABI on ppc64le from Torsten Duwe

  Various cleanups & minor fixes from:
   - Adam Buchbinder, Andrew Donnellan, Balbir Singh, Christophe Leroy,
     Cyril Bur, Luis Henriques, Madhavan Srinivasan, Pan Xinhui, Russell
     Currey, Sukadev Bhattiprolu, Suraj Jitindar Singh.

  General:
   - atomics: Allow architectures to define their own __atomic_op_*
     helpers from Boqun Feng
   - Implement atomic{, 64}_*_return_* variants and acquire/release/
     relaxed variants for (cmp)xchg from Boqun Feng
   - Add powernv_defconfig from Jeremy Kerr
   - Fix BUG_ON() reporting in real mode from Balbir Singh
   - Add xmon command to dump OPAL msglog from Andrew Donnellan
   - Add xmon command to dump process/task similar to ps(1) from Douglas
     Miller
   - Clean up memory hotplug failure paths from David Gibson

  pci/eeh:
   - Redesign SR-IOV on PowerNV to give absolute isolation between VFs
     from Wei Yang.
   - EEH Support for SRIOV VFs from Wei Yang and Gavin Shan.
   - PCI/IOV: Rename and export virtfn_{add, remove} from Wei Yang
   - PCI: Add pcibios_bus_add_device() weak function from Wei Yang
   - MAINTAINERS: Update EEH details and maintainership from Russell
     Currey

  cxl:
   - Support added to the CXL driver for running on both bare-metal and
     hypervisor systems, from Christophe Lombard and Frederic Barrat.
   - Ignore probes for virtual afu pci devices from Vaibhav Jain

  perf:
   - Export Power8 generic and cache events to sysfs from Sukadev
     Bhattiprolu
   - hv-24x7: Fix usage with chip events, display change in counter
     values, display domain indices in sysfs, eliminate domain suffix in
     event names, from Sukadev Bhattiprolu

  Freescale:
   - Updates from Scott: "Highlights include 8xx optimizations, 32-bit
     checksum optimizations, 86xx consolidation, e5500/e6500 cpu
     hotplug, more fman and other dt bits, and minor fixes/cleanup"

* tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (179 commits)
  powerpc: Fix unrecoverable SLB miss during restore_math()
  powerpc/8xx: Fix do_mtspr_cpu6() build on older compilers
  powerpc/rcpm: Fix build break when SMP=n
  powerpc/book3e-64: Use hardcoded mttmr opcode
  powerpc/fsl/dts: Add "jedec,spi-nor" flash compatible
  powerpc/T104xRDB: add tdm riser card node to device tree
  powerpc32: PAGE_EXEC required for inittext
  powerpc/mpc85xx: Add pcsphy nodes to FManV3 device tree
  powerpc/mpc85xx: Add MDIO bus muxing support to the board device tree(s)
  powerpc/86xx: Introduce and use common dtsi
  powerpc/86xx: Update device tree
  powerpc/86xx: Move dts files to fsl directory
  powerpc/86xx: Switch to kconfig fragments approach
  powerpc/86xx: Update defconfigs
  powerpc/86xx: Consolidate common platform code
  powerpc32: Remove one insn in mulhdu
  powerpc32: small optimisation in flush_icache_range()
  powerpc: Simplify test in __dma_sync()
  powerpc32: move xxxxx_dcache_range() functions inline
  powerpc32: Remove clear_pages() and define clear_page() inline
  ...

28 files changed:
1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
arch/powerpc/Kconfig
arch/powerpc/crypto/aes-spe-glue.c
arch/powerpc/include/asm/pci-bridge.h
arch/powerpc/include/asm/smp.h
arch/powerpc/include/asm/xics.h
arch/powerpc/kernel/process.c
arch/powerpc/kernel/smp.c
arch/powerpc/kernel/traps.c
arch/powerpc/kvm/book3s_64_vio.c
arch/powerpc/kvm/book3s_64_vio_hv.c
arch/powerpc/kvm/book3s_hv_rmhandlers.S
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/init_32.c
arch/powerpc/mm/mem.c
arch/powerpc/mm/pgtable_64.c
arch/powerpc/perf/hv-24x7.c
drivers/misc/cxl/pci.c
drivers/misc/cxl/sysfs.c
drivers/pci/bus.c
drivers/pci/iov.c
drivers/scsi/cxlflash/common.h
drivers/scsi/cxlflash/main.c
include/linux/atomic.h
include/linux/huge_mm.h
include/linux/pci.h
mm/huge_memory.c

Simple merge
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -30,8 -29,7 +30,8 @@@
  #include <asm/tlbflush.h>
  #include <asm/kvm_ppc.h>
  #include <asm/kvm_book3s.h>
- #include <asm/mmu-hash64.h>
+ #include <asm/book3s/64/mmu-hash.h>
 +#include <asm/mmu_context.h>
  #include <asm/hvcall.h>
  #include <asm/synch.h>
  #include <asm/ppc-opcode.h>
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -452,47 -493,24 +493,16 @@@ event_to_long_desc_attr(struct hv_24x7_
        return device_str_attr_create(name, nl, nonce, desc, dl);
  }
  
- static ssize_t event_data_to_attrs(unsigned ix, struct attribute **attrs,
+ static int event_data_to_attrs(unsigned ix, struct attribute **attrs,
                                   struct hv_24x7_event_data *event, int nonce)
  {
-       unsigned i;
-       switch (event->domain) {
-       case HV_PERF_DOMAIN_PHYS_CHIP:
-               *attrs = event_to_attr(ix, event, event->domain, nonce);
-               return 1;
-       case HV_PERF_DOMAIN_PHYS_CORE:
-               for (i = 0; i < ARRAY_SIZE(core_domains); i++) {
-                       attrs[i] = event_to_attr(ix, event, core_domains[i],
-                                               nonce);
-                       if (!attrs[i]) {
-                               pr_warn("catalog event %u: individual attr %u "
-                                       "creation failure\n", ix, i);
-                               for (; i; i--)
-                                       device_str_attr_destroy(attrs[i - 1]);
-                               return -1;
-                       }
-               }
-               return i;
-       default:
-               pr_warn("catalog event %u: domain %u is not allowed in the "
-                               "catalog\n", ix, event->domain);
+       *attrs = event_to_attr(ix, event, event->domain, nonce);
+       if (!*attrs)
                return -1;
-       }
- }
  
- static size_t event_to_attr_ct(struct hv_24x7_event_data *event)
- {
-       switch (event->domain) {
-       case HV_PERF_DOMAIN_PHYS_CHIP:
-               return 1;
-       case HV_PERF_DOMAIN_PHYS_CORE:
-               return ARRAY_SIZE(core_domains);
-       default:
-               return 0;
-       }
+       return 0;
  }
  
 -static unsigned long vmalloc_to_phys(void *v)
 -{
 -      struct page *p = vmalloc_to_page(v);
 -
 -      BUG_ON(!p);
 -      return page_to_phys(p) + offset_in_page(v);
 -}
 -
  /* */
  struct event_uniq {
        struct rb_node node;
Simple merge
@@@ -386,9 -392,10 +392,9 @@@ static ssize_t afu_eb_read(struct file 
                               struct bin_attribute *bin_attr, char *buf,
                               loff_t off, size_t count)
  {
 -      struct cxl_afu *afu = to_cxl_afu(container_of(kobj,
 -                                                    struct device, kobj));
 +      struct cxl_afu *afu = to_cxl_afu(kobj_to_dev(kobj));
  
-       return cxl_afu_read_err_buffer(afu, buf, off, count);
+       return cxl_ops->afu_read_err_buffer(afu, buf, off, count);
  }
  
  static struct device_attribute afu_attrs[] = {
@@@ -466,12 -488,14 +487,14 @@@ static ssize_t afu_read_config(struct f
                               loff_t off, size_t count)
  {
        struct afu_config_record *cr = to_cr(kobj);
 -      struct cxl_afu *afu = to_cxl_afu(container_of(kobj->parent, struct device, kobj));
 +      struct cxl_afu *afu = to_cxl_afu(kobj_to_dev(kobj->parent));
  
-       u64 i, j, val;
+       u64 i, j, val, rc;
  
        for (i = 0; i < count;) {
-               val = cxl_afu_cr_read64(afu, cr->cr, off & ~0x7);
+               rc = cxl_ops->afu_cr_read64(afu, cr->cr, off & ~0x7, &val);
+               if (rc)
+                       val = ~0ULL;
                for (j = off & 0x7; j < 8 && i < count; i++, j++, off++)
                        buf[i] = (val >> (j * 8)) & 0xff;
        }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -103,17 -108,9 +103,14 @@@ void __split_huge_pmd(struct vm_area_st
                pmd_t *____pmd = (__pmd);                               \
                if (pmd_trans_huge(*____pmd)                            \
                                        || pmd_devmap(*____pmd))        \
 -                      __split_huge_pmd(__vma, __pmd, __address);      \
 +                      __split_huge_pmd(__vma, __pmd, __address,       \
 +                                              false);                 \
        }  while (0)
  
- #if HPAGE_PMD_ORDER >= MAX_ORDER
- #error "hugepages can't be allocated by the buddy allocator"
- #endif
 +
 +void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
 +              bool freeze, struct page *page);
 +
  extern int hugepage_madvise(struct vm_area_struct *vma,
                            unsigned long *vm_flags, int advice);
  extern void vma_adjust_trans_huge(struct vm_area_struct *vma,
Simple merge
Simple merge