Merge tag 'powerpc-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 20 Sep 2019 18:48:06 +0000 (11:48 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 20 Sep 2019 18:48:06 +0000 (11:48 -0700)
Pull powerpc updates from Michael Ellerman:
 "This is a bit late, partly due to me travelling, and partly due to a
  power outage knocking out some of my test systems *while* I was
  travelling.

   - Initial support for running on a system with an Ultravisor, which
     is software that runs below the hypervisor and protects guests
     against some attacks by the hypervisor.

   - Support for building the kernel to run as a "Secure Virtual
     Machine", ie. as a guest capable of running on a system with an
     Ultravisor.

   - Some changes to our DMA code on bare metal, to allow devices with
     medium sized DMA masks (> 32 && < 59 bits) to use more than 2GB of
     DMA space.

   - Support for firmware assisted crash dumps on bare metal (powernv).

   - Two series fixing bugs in and refactoring our PCI EEH code.

   - A large series refactoring our exception entry code to use gas
     macros, both to make it more readable and also enable some future
     optimisations.

  As well as many cleanups and other minor features & fixups.

  Thanks to: Adam Zerella, Alexey Kardashevskiy, Alistair Popple, Andrew
  Donnellan, Aneesh Kumar K.V, Anju T Sudhakar, Anshuman Khandual,
  Balbir Singh, Benjamin Herrenschmidt, Cédric Le Goater, Christophe
  JAILLET, Christophe Leroy, Christopher M. Riedl, Christoph Hellwig,
  Claudio Carvalho, Daniel Axtens, David Gibson, David Hildenbrand,
  Desnes A. Nunes do Rosario, Ganesh Goudar, Gautham R. Shenoy, Greg
  Kurz, Guerney Hunt, Gustavo Romero, Halil Pasic, Hari Bathini, Joakim
  Tjernlund, Jonathan Neuschafer, Jordan Niethe, Leonardo Bras, Lianbo
  Jiang, Madhavan Srinivasan, Mahesh Salgaonkar, Mahesh Salgaonkar,
  Masahiro Yamada, Maxiwell S. Garcia, Michael Anderson, Nathan
  Chancellor, Nathan Lynch, Naveen N. Rao, Nicholas Piggin, Oliver
  O'Halloran, Qian Cai, Ram Pai, Ravi Bangoria, Reza Arbab, Ryan Grimm,
  Sam Bobroff, Santosh Sivaraj, Segher Boessenkool, Sukadev Bhattiprolu,
  Thiago Bauermann, Thiago Jung Bauermann, Thomas Gleixner, Tom
  Lendacky, Vasant Hegde"

* tag 'powerpc-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (264 commits)
  powerpc/mm/mce: Keep irqs disabled during lockless page table walk
  powerpc: Use ftrace_graph_ret_addr() when unwinding
  powerpc/ftrace: Enable HAVE_FUNCTION_GRAPH_RET_ADDR_PTR
  ftrace: Look up the address of return_to_handler() using helpers
  powerpc: dump kernel log before carrying out fadump or kdump
  docs: powerpc: Add missing documentation reference
  powerpc/xmon: Fix output of XIVE IPI
  powerpc/xmon: Improve output of XIVE interrupts
  powerpc/mm/radix: remove useless kernel messages
  powerpc/fadump: support holes in kernel boot memory area
  powerpc/fadump: remove RMA_START and RMA_END macros
  powerpc/fadump: update documentation about option to release opalcore
  powerpc/fadump: consider f/w load area
  powerpc/opalcore: provide an option to invalidate /sys/firmware/opal/core file
  powerpc/opalcore: export /sys/firmware/opal/core for analysing opal crashes
  powerpc/fadump: update documentation about CONFIG_PRESERVE_FA_DUMP
  powerpc/fadump: add support to preserve crash data on FADUMP disabled kernel
  powerpc/fadump: improve how crashed kernel's memory is reserved
  powerpc/fadump: consider reserved ranges while releasing memory
  powerpc/fadump: make crash memory ranges array allocation generic
  ...

18 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
arch/Kconfig
arch/powerpc/Kconfig
arch/powerpc/Makefile
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/include/asm/xive.h
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/dma-iommu.c
arch/powerpc/kernel/process.c
arch/powerpc/kernel/setup-common.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/mm/dma-noncoherent.c
arch/powerpc/platforms/pseries/vio.c
arch/powerpc/sysdev/xive/native.c
arch/s390/Kconfig
arch/x86/Kconfig
kernel/dma/mapping.c
kernel/dma/swiotlb.c

diff --cc arch/Kconfig
index f2a3dc80d46bdce3db1873772cf8ffc44cd8265c,89e2e3f64f791960715e43552b67f9f29ce6e632..0fcf8ec1e09883a2fbab69f02f02068dd913afc3
@@@ -932,20 -925,9 +932,23 @@@ config LOCK_EVENT_COUNT
          the chance of application behavior change because of timing
          differences. The counts are reported via debugfs.
  
 +# Select if the architecture has support for applying RELR relocations.
 +config ARCH_HAS_RELR
 +      bool
 +
 +config RELR
 +      bool "Use RELR relocation packing"
 +      depends on ARCH_HAS_RELR && TOOLS_SUPPORT_RELR
 +      default y
 +      help
 +        Store the kernel's dynamic relocations in the RELR relocation packing
 +        format. Requires a compatible linker (LLD supports this feature), as
 +        well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
 +        are compatible).
 +
+ config ARCH_HAS_MEM_ENCRYPT
+       bool
  source "kernel/gcov/Kconfig"
  
  source "scripts/gcc-plugins/Kconfig"
Simple merge
Simple merge
Simple merge
Simple merge
index 56dfa7a2a6f2a09f7d3d3d385147f4b77714932c,21ab769e8530eb1bfd5f20484c62e83af46a68d3..a7ca8fe623686afb43f03c7335d9f73036497781
@@@ -49,10 -49,11 +49,10 @@@ obj-y                              := cputable.o ptrace.o syscall
                                   signal.o sysfs.o cacheinfo.o time.o \
                                   prom.o traps.o setup-common.o \
                                   udbg.o misc.o io.o misc_$(BITS).o \
 -                                 of_platform.o prom_parse.o \
 -                                 dma-common.o
 +                                 of_platform.o prom_parse.o
  obj-$(CONFIG_PPC64)           += setup_64.o sys_ppc32.o \
                                   signal_64.o ptrace32.o \
-                                  paca.o nvram_64.o firmware.o
+                                  paca.o nvram_64.o firmware.o note.o
  obj-$(CONFIG_VDSO32)          += vdso32/
  obj-$(CONFIG_PPC_WATCHDOG)    += watchdog.o
  obj-$(CONFIG_HAVE_HW_BREAKPOINT)      += hw_breakpoint.o
Simple merge
Simple merge
Simple merge
Simple merge
index c617282d5b2aead7023cc27b47cbab0d4a5c4586,4272ca5e8159abd6f2f814b9ca4186d73806e65c..2a82984356f81ffd3407361a50f8773adb272215
@@@ -408,23 -116,15 +116,9 @@@ void arch_sync_dma_for_cpu(struct devic
        __dma_sync_page(paddr, size, dir);
  }
  
- /*
-  * Return the PFN for a given cpu virtual address returned by arch_dma_alloc.
-  */
- long arch_dma_coherent_to_pfn(struct device *dev, void *vaddr,
-               dma_addr_t dma_addr)
+ void arch_dma_prep_coherent(struct page *page, size_t size)
  {
-       /* This should always be populated, so we don't test every
-        * level. If that fails, we'll have a nice crash which
-        * will be as good as a BUG_ON()
-        */
-       unsigned long cpu_addr = (unsigned long)vaddr;
-       pgd_t *pgd = pgd_offset_k(cpu_addr);
-       pud_t *pud = pud_offset(pgd, cpu_addr);
-       pmd_t *pmd = pmd_offset(pud, cpu_addr);
-       pte_t *ptep = pte_offset_kernel(pmd, cpu_addr);
+       unsigned long kaddr = (unsigned long)page_address(page);
  
-       if (pte_none(*ptep) || !pte_present(*ptep))
-               return 0;
-       return pte_pfn(*ptep);
+       flush_dcache_range(kaddr, kaddr + size);
  }
 -
 -static int __init atomic_pool_init(void)
 -{
 -      return dma_atomic_pool_init(GFP_KERNEL, pgprot_noncached(PAGE_KERNEL));
 -}
 -postcore_initcall(atomic_pool_init);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 796a44f8ef5a9027bd70c3c89e01c44f1c01dd62,f29caad71e1302766ad0786e1ee7b68e2eac692e..673a2cdb2656b01ada63b12cd62d30a91b9aaa79
@@@ -463,15 -461,8 +463,14 @@@ phys_addr_t swiotlb_tbl_map_single(stru
                panic("Can not allocate SWIOTLB buffer earlier and can't now provide you with the DMA bounce buffer");
  
        if (mem_encrypt_active())
-               pr_warn_once("%s is active and system is using DMA bounce buffers\n",
-                            sme_active() ? "SME" : "SEV");
+               pr_warn_once("Memory encryption is active and system is using DMA bounce buffers\n");
  
 +      if (mapping_size > alloc_size) {
 +              dev_warn_once(hwdev, "Invalid sizes (mapping: %zd bytes, alloc: %zd bytes)",
 +                            mapping_size, alloc_size);
 +              return (phys_addr_t)DMA_MAPPING_ERROR;
 +      }
 +
        mask = dma_get_seg_boundary(hwdev);
  
        tbl_dma_addr &= mask;