1. 26 Sep, 2019 1 commit
  2. 24 Sep, 2019 9 commits
    • Aneesh Kumar K.V's avatar
      powerpc/nvdimm: use H_SCM_QUERY hcall on H_OVERLAP error · faa6d211
      Aneesh Kumar K.V authored
      Right now we force an unbind of SCM memory at drcindex on H_OVERLAP error.
      This really slows down operations like kexec where we get the H_OVERLAP
      error because we don't go through a full hypervisor re init.
      
      H_OVERLAP error for a H_SCM_BIND_MEM hcall indicates that SCM memory at
      drc index is already bound. Since we don't specify a logical memory
      address for bind hcall, we can use the H_SCM_QUERY hcall to query
      the already bound logical address.
      
      Boot time difference with and without patch is:
      
      [    5.583617] IOMMU table initialized, virtual merging enabled
      [    5.603041] papr_scm ibm,persistent-memory:ibm,pmemory@44104001: Retrying bind after unbinding
      [  301.514221] papr_scm ibm,persistent-memory:ibm,pmemory@44108001: Retrying bind after unbinding
      [  340.057238] hv-24x7: read 1530 catalog entries, created 537 event attrs (0 failures), 275 descs
      
      after fix
      
      [    5.101572] IOMMU table initialized, virtual merging enabled
      [    5.116984] papr_scm ibm,persistent-memory:ibm,pmemory@44104001: Querying SCM details
      [    5.117223] papr_scm ibm,persistent-memory:ibm,pmemory@44108001: Querying SCM details
      [    5.120530] hv-24x7: read 1530 catalog entries, created 537 event attrs (0 failures), 275 descs
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190903123452.28620-2-aneesh.kumar@linux.ibm.com
      faa6d211
    • Aneesh Kumar K.V's avatar
      powerpc/nvdimm: Use HCALL error as the return value · 4111cdef
      Aneesh Kumar K.V authored
      This simplifies the error handling and also enable us to switch to
      H_SCM_QUERY hcall in a later patch on H_OVERLAP error.
      
      We also do some kernel print formatting fixup in this patch.
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190903123452.28620-1-aneesh.kumar@linux.ibm.com
      4111cdef
    • Aneesh Kumar K.V's avatar
    • Aneesh Kumar K.V's avatar
      powerpc/mm: Fixup tlbie vs mtpidr/mtlpidr ordering issue on POWER9 · 047e6575
      Aneesh Kumar K.V authored
      On POWER9, under some circumstances, a broadcast TLB invalidation will
      fail to invalidate the ERAT cache on some threads when there are
      parallel mtpidr/mtlpidr happening on other threads of the same core.
      This can cause stores to continue to go to a page after it's unmapped.
      
      The workaround is to force an ERAT flush using PID=0 or LPID=0 tlbie
      flush. This additional TLB flush will cause the ERAT cache
      invalidation. Since we are using PID=0 or LPID=0, we don't get
      filtered out by the TLB snoop filtering logic.
      
      We need to still follow this up with another tlbie to take care of
      store vs tlbie ordering issue explained in commit:
      a5d4b589 ("powerpc/mm: Fixup tlbie vs store ordering issue on
      POWER9"). The presence of ERAT cache implies we can still get new
      stores and they may miss store queue marking flush.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190924035254.24612-3-aneesh.kumar@linux.ibm.com
      047e6575
    • Aneesh Kumar K.V's avatar
      powerpc/book3s64/radix: Rename CPU_FTR_P9_TLBIE_BUG feature flag · 09ce98ca
      Aneesh Kumar K.V authored
      Rename the #define to indicate this is related to store vs tlbie
      ordering issue. In the next patch, we will be adding another feature
      flag that is used to handles ERAT flush vs tlbie ordering issue.
      
      Fixes: a5d4b589 ("powerpc/mm: Fixup tlbie vs store ordering issue on POWER9")
      Cc: stable@vger.kernel.org # v4.16+
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190924035254.24612-2-aneesh.kumar@linux.ibm.com
      09ce98ca
    • Aneesh Kumar K.V's avatar
      powerpc/book3s64/mm: Don't do tlbie fixup for some hardware revisions · 677733e2
      Aneesh Kumar K.V authored
      The store ordering vs tlbie issue mentioned in commit
      a5d4b589 ("powerpc/mm: Fixup tlbie vs store ordering issue on
      POWER9") is fixed for Nimbus 2.3 and Cumulus 1.3 revisions. We don't
      need to apply the fixup if we are running on them
      
      We can only do this on PowerNV. On pseries guest with KVM we still
      don't support redoing the feature fixup after migration. So we should
      be enabling all the workarounds needed, because whe can possibly
      migrate between DD 2.3 and DD 2.2
      
      Fixes: a5d4b589 ("powerpc/mm: Fixup tlbie vs store ordering issue on POWER9")
      Cc: stable@vger.kernel.org # v4.16+
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190924035254.24612-1-aneesh.kumar@linux.ibm.com
      677733e2
    • Laurent Dufour's avatar
      powerpc/pseries: Call H_BLOCK_REMOVE when supported · 59545ebe
      Laurent Dufour authored
      Depending on the hardware and the hypervisor, the hcall H_BLOCK_REMOVE
      may not be able to process all the page sizes for a segment base page
      size, as reported by the TLB Invalidate Characteristics.
      
      For each pair of base segment page size and actual page size, this
      characteristic tells us the size of the block the hcall supports.
      
      In the case, the hcall is not supporting a pair of base segment page
      size, actual page size, it is returning H_PARAM which leads to a panic
      like this:
      
        kernel BUG at /home/srikar/work/linux.git/arch/powerpc/platforms/pseries/lpar.c:466!
        Oops: Exception in kernel mode, sig: 5 [#1]
        BE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
        Modules linked in:
        CPU: 28 PID: 583 Comm: modprobe Not tainted 5.2.0-master #5
        NIP: c0000000000be8dc LR: c0000000000be880 CTR: 0000000000000000
        REGS: c0000007e77fb130 TRAP: 0700  Not tainted (5.2.0-master)
        MSR: 8000000000029032 <SF,EE,ME,IR,DR,RI> CR: 42224824 XER: 20000000
        CFAR: c0000000000be8fc IRQMASK: 0
        GPR00: 0000000022224828 c0000007e77fb3c0 c000000001434d00 0000000000000005
        GPR04: 9000000004fa8c00 0000000000000000 0000000000000003 0000000000000001
        GPR08: c0000007e77fb450 0000000000000000 0000000000000001 ffffffffffffffff
        GPR12: c0000007e77fb450 c00000000edfcb80 0000cd7d3ea30000 c0000000016022b0
        GPR16: 00000000000000b0 0000cd7d3ea30000 0000000000000001 c080001f04f00105
        GPR20: 0000000000000003 0000000000000004 c000000fbeb05f58 c000000001602200
        GPR24: 0000000000000000 0000000000000004 8800000000000000 c000000000c5d148
        GPR28: c000000000000000 8000000000000000 a000000000000000 c0000007e77fb580
        NIP [c0000000000be8dc] .call_block_remove+0x12c/0x220
        LR [c0000000000be880] .call_block_remove+0xd0/0x220
        Call Trace:
          0xc000000fb8c00240 (unreliable)
          .pSeries_lpar_flush_hash_range+0x578/0x670
          .flush_hash_range+0x44/0x100
          .__flush_tlb_pending+0x3c/0xc0
          .zap_pte_range+0x7ec/0x830
          .unmap_page_range+0x3f4/0x540
          .unmap_vmas+0x94/0x120
          .exit_mmap+0xac/0x1f0
          .mmput+0x9c/0x1f0
          .do_exit+0x388/0xd60
          .do_group_exit+0x54/0x100
          .__se_sys_exit_group+0x14/0x20
          system_call+0x5c/0x70
        Instruction dump:
        39400001 38a00000 4800003c 60000000 60420000 7fa9e800 38e00000 419e0014
        7d29d278 7d290074 7929d182 69270001 <0b070000> 7d495378 394a0001 7fa93040
      
      The call to H_BLOCK_REMOVE should only be made for the supported pair
      of base segment page size, actual page size and using the correct
      maximum block size.
      
      Due to the required complexity in do_block_remove() and
      call_block_remove(), and the fact that currently a block size of 8 is
      returned by the hypervisor, we are only supporting 8 size block to the
      H_BLOCK_REMOVE hcall.
      
      In order to identify this limitation easily in the code, a local
      define HBLKR_SUPPORTED_SIZE defining the currently supported block
      size, and a dedicated checking helper is_supported_hlbkr() are
      introduced.
      
      For regular pages and hugetlb, the assumption is made that the page
      size is equal to the base page size. For THP the page size is assumed
      to be 16M.
      
      Fixes: ba2dd8a2 ("powerpc/pseries/mm: call H_BLOCK_REMOVE")
      Signed-off-by: default avatarLaurent Dufour <ldufour@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190920130523.20441-3-ldufour@linux.ibm.com
      59545ebe
    • Laurent Dufour's avatar
      powerpc/pseries: Read TLB Block Invalidate Characteristics · 1211ee61
      Laurent Dufour authored
      The PAPR document specifies the TLB Block Invalidate Characteristics
      which tells for each pair of segment base page size, actual page size,
      the size of the block the hcall H_BLOCK_REMOVE supports.
      
      These characteristics are loaded at boot time in a new table
      hblkr_size. The table is separate from the mmu_psize_def because this
      is specific to the pseries platform.
      
      A new init function, pseries_lpar_read_hblkrm_characteristics() is
      added to read the characteristics. It is called from
      pSeries_setup_arch().
      
      Fixes: ba2dd8a2 ("powerpc/pseries/mm: call H_BLOCK_REMOVE")
      Signed-off-by: default avatarLaurent Dufour <ldufour@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190920130523.20441-2-ldufour@linux.ibm.com
      1211ee61
    • Michael Roth's avatar
      KVM: PPC: Book3S HV: use smp_mb() when setting/clearing host_ipi flag · 3a83f677
      Michael Roth authored
      On a 2-socket Power9 system with 32 cores/128 threads (SMT4) and 1TB
      of memory running the following guest configs:
      
        guest A:
          - 224GB of memory
          - 56 VCPUs (sockets=1,cores=28,threads=2), where:
            VCPUs 0-1 are pinned to CPUs 0-3,
            VCPUs 2-3 are pinned to CPUs 4-7,
            ...
            VCPUs 54-55 are pinned to CPUs 108-111
      
        guest B:
          - 4GB of memory
          - 4 VCPUs (sockets=1,cores=4,threads=1)
      
      with the following workloads (with KSM and THP enabled in all):
      
        guest A:
          stress --cpu 40 --io 20 --vm 20 --vm-bytes 512M
      
        guest B:
          stress --cpu 4 --io 4 --vm 4 --vm-bytes 512M
      
        host:
          stress --cpu 4 --io 4 --vm 2 --vm-bytes 256M
      
      the below soft-lockup traces were observed after an hour or so and
      persisted until the host was reset (this was found to be reliably
      reproducible for this configuration, for kernels 4.15, 4.18, 5.0,
      and 5.3-rc5):
      
        [ 1253.183290] rcu: INFO: rcu_sched self-detected stall on CPU
        [ 1253.183319] rcu:     124-....: (5250 ticks this GP) idle=10a/1/0x4000000000000002 softirq=5408/5408 fqs=1941
        [ 1256.287426] watchdog: BUG: soft lockup - CPU#105 stuck for 23s! [CPU 52/KVM:19709]
        [ 1264.075773] watchdog: BUG: soft lockup - CPU#24 stuck for 23s! [worker:19913]
        [ 1264.079769] watchdog: BUG: soft lockup - CPU#31 stuck for 23s! [worker:20331]
        [ 1264.095770] watchdog: BUG: soft lockup - CPU#45 stuck for 23s! [worker:20338]
        [ 1264.131773] watchdog: BUG: soft lockup - CPU#64 stuck for 23s! [avocado:19525]
        [ 1280.408480] watchdog: BUG: soft lockup - CPU#124 stuck for 22s! [ksmd:791]
        [ 1316.198012] rcu: INFO: rcu_sched self-detected stall on CPU
        [ 1316.198032] rcu:     124-....: (21003 ticks this GP) idle=10a/1/0x4000000000000002 softirq=5408/5408 fqs=8243
        [ 1340.411024] watchdog: BUG: soft lockup - CPU#124 stuck for 22s! [ksmd:791]
        [ 1379.212609] rcu: INFO: rcu_sched self-detected stall on CPU
        [ 1379.212629] rcu:     124-....: (36756 ticks this GP) idle=10a/1/0x4000000000000002 softirq=5408/5408 fqs=14714
        [ 1404.413615] watchdog: BUG: soft lockup - CPU#124 stuck for 22s! [ksmd:791]
        [ 1442.227095] rcu: INFO: rcu_sched self-detected stall on CPU
        [ 1442.227115] rcu:     124-....: (52509 ticks this GP) idle=10a/1/0x4000000000000002 softirq=5408/5408 fqs=21403
        [ 1455.111787] INFO: task worker:19907 blocked for more than 120 seconds.
        [ 1455.111822]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.111833] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.111884] INFO: task worker:19908 blocked for more than 120 seconds.
        [ 1455.111905]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.111925] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.111966] INFO: task worker:20328 blocked for more than 120 seconds.
        [ 1455.111986]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.111998] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.112048] INFO: task worker:20330 blocked for more than 120 seconds.
        [ 1455.112068]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.112097] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.112138] INFO: task worker:20332 blocked for more than 120 seconds.
        [ 1455.112159]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.112179] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.112210] INFO: task worker:20333 blocked for more than 120 seconds.
        [ 1455.112231]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.112242] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.112282] INFO: task worker:20335 blocked for more than 120 seconds.
        [ 1455.112303]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
        [ 1455.112332] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
        [ 1455.112372] INFO: task worker:20336 blocked for more than 120 seconds.
        [ 1455.112392]       Tainted: G             L    5.3.0-rc5-mdr-vanilla+ #1
      
      CPUs 45, 24, and 124 are stuck on spin locks, likely held by
      CPUs 105 and 31.
      
      CPUs 105 and 31 are stuck in smp_call_function_many(), waiting on
      target CPU 42. For instance:
      
        # CPU 105 registers (via xmon)
        R00 = c00000000020b20c   R16 = 00007d1bcd800000
        R01 = c00000363eaa7970   R17 = 0000000000000001
        R02 = c0000000019b3a00   R18 = 000000000000006b
        R03 = 000000000000002a   R19 = 00007d537d7aecf0
        R04 = 000000000000002a   R20 = 60000000000000e0
        R05 = 000000000000002a   R21 = 0801000000000080
        R06 = c0002073fb0caa08   R22 = 0000000000000d60
        R07 = c0000000019ddd78   R23 = 0000000000000001
        R08 = 000000000000002a   R24 = c00000000147a700
        R09 = 0000000000000001   R25 = c0002073fb0ca908
        R10 = c000008ffeb4e660   R26 = 0000000000000000
        R11 = c0002073fb0ca900   R27 = c0000000019e2464
        R12 = c000000000050790   R28 = c0000000000812b0
        R13 = c000207fff623e00   R29 = c0002073fb0ca808
        R14 = 00007d1bbee00000   R30 = c0002073fb0ca800
        R15 = 00007d1bcd600000   R31 = 0000000000000800
        pc  = c00000000020b260 smp_call_function_many+0x3d0/0x460
        cfar= c00000000020b270 smp_call_function_many+0x3e0/0x460
        lr  = c00000000020b20c smp_call_function_many+0x37c/0x460
        msr = 900000010288b033   cr  = 44024824
        ctr = c000000000050790   xer = 0000000000000000   trap =  100
      
      CPU 42 is running normally, doing VCPU work:
      
        # CPU 42 stack trace (via xmon)
        [link register   ] c00800001be17188 kvmppc_book3s_radix_page_fault+0x90/0x2b0 [kvm_hv]
        [c000008ed3343820] c000008ed3343850 (unreliable)
        [c000008ed33438d0] c00800001be11b6c kvmppc_book3s_hv_page_fault+0x264/0xe30 [kvm_hv]
        [c000008ed33439d0] c00800001be0d7b4 kvmppc_vcpu_run_hv+0x8dc/0xb50 [kvm_hv]
        [c000008ed3343ae0] c00800001c10891c kvmppc_vcpu_run+0x34/0x48 [kvm]
        [c000008ed3343b00] c00800001c10475c kvm_arch_vcpu_ioctl_run+0x244/0x420 [kvm]
        [c000008ed3343b90] c00800001c0f5a78 kvm_vcpu_ioctl+0x470/0x7c8 [kvm]
        [c000008ed3343d00] c000000000475450 do_vfs_ioctl+0xe0/0xc70
        [c000008ed3343db0] c0000000004760e4 ksys_ioctl+0x104/0x120
        [c000008ed3343e00] c000000000476128 sys_ioctl+0x28/0x80
        [c000008ed3343e20] c00000000000b388 system_call+0x5c/0x70
        --- Exception: c00 (System Call) at 00007d545cfd7694
        SP (7d53ff7edf50) is in userspace
      
      It was subsequently found that ipi_message[PPC_MSG_CALL_FUNCTION]
      was set for CPU 42 by at least 1 of the CPUs waiting in
      smp_call_function_many(), but somehow the corresponding
      call_single_queue entries were never processed by CPU 42, causing the
      callers to spin in csd_lock_wait() indefinitely.
      
      Nick Piggin suggested something similar to the following sequence as
      a possible explanation (interleaving of CALL_FUNCTION/RESCHEDULE
      IPI messages seems to be most common, but any mix of CALL_FUNCTION and
      !CALL_FUNCTION messages could trigger it):
      
          CPU
            X: smp_muxed_ipi_set_message():
            X:   smp_mb()
            X:   message[RESCHEDULE] = 1
            X: doorbell_global_ipi(42):
            X:   kvmppc_set_host_ipi(42, 1)
            X:   ppc_msgsnd_sync()/smp_mb()
            X:   ppc_msgsnd() -> 42
           42: doorbell_exception(): // from CPU X
           42:   ppc_msgsync()
          105: smp_muxed_ipi_set_message():
          105:   smb_mb()
               // STORE DEFERRED DUE TO RE-ORDERING
        --105:   message[CALL_FUNCTION] = 1
        | 105: doorbell_global_ipi(42):
        | 105:   kvmppc_set_host_ipi(42, 1)
        |  42:   kvmppc_set_host_ipi(42, 0)
        |  42: smp_ipi_demux_relaxed()
        |  42: // returns to executing guest
        |      // RE-ORDERED STORE COMPLETES
        ->105:   message[CALL_FUNCTION] = 1
          105:   ppc_msgsnd_sync()/smp_mb()
          105:   ppc_msgsnd() -> 42
           42: local_paca->kvm_hstate.host_ipi == 0 // IPI ignored
          105: // hangs waiting on 42 to process messages/call_single_queue
      
      This can be prevented with an smp_mb() at the beginning of
      kvmppc_set_host_ipi(), such that stores to message[<type>] (or other
      state indicated by the host_ipi flag) are ordered vs. the store to
      to host_ipi.
      
      However, doing so might still allow for the following scenario (not
      yet observed):
      
          CPU
            X: smp_muxed_ipi_set_message():
            X:   smp_mb()
            X:   message[RESCHEDULE] = 1
            X: doorbell_global_ipi(42):
            X:   kvmppc_set_host_ipi(42, 1)
            X:   ppc_msgsnd_sync()/smp_mb()
            X:   ppc_msgsnd() -> 42
           42: doorbell_exception(): // from CPU X
           42:   ppc_msgsync()
               // STORE DEFERRED DUE TO RE-ORDERING
        -- 42:   kvmppc_set_host_ipi(42, 0)
        |  42: smp_ipi_demux_relaxed()
        | 105: smp_muxed_ipi_set_message():
        | 105:   smb_mb()
        | 105:   message[CALL_FUNCTION] = 1
        | 105: doorbell_global_ipi(42):
        | 105:   kvmppc_set_host_ipi(42, 1)
        |      // RE-ORDERED STORE COMPLETES
        -> 42:   kvmppc_set_host_ipi(42, 0)
           42: // returns to executing guest
          105:   ppc_msgsnd_sync()/smp_mb()
          105:   ppc_msgsnd() -> 42
           42: local_paca->kvm_hstate.host_ipi == 0 // IPI ignored
          105: // hangs waiting on 42 to process messages/call_single_queue
      
      Fixing this scenario would require an smp_mb() *after* clearing
      host_ipi flag in kvmppc_set_host_ipi() to order the store vs.
      subsequent processing of IPI messages.
      
      To handle both cases, this patch splits kvmppc_set_host_ipi() into
      separate set/clear functions, where we execute smp_mb() prior to
      setting host_ipi flag, and after clearing host_ipi flag. These
      functions pair with each other to synchronize the sender and receiver
      sides.
      
      With that change in place the above workload ran for 20 hours without
      triggering any lock-ups.
      
      Fixes: 755563bc ("powerpc/powernv: Fixes for hypervisor doorbell handling") # v4.0
      Signed-off-by: default avatarMichael Roth <mdroth@linux.vnet.ibm.com>
      Acked-by: default avatarPaul Mackerras <paulus@ozlabs.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190911223155.16045-1-mdroth@linux.vnet.ibm.com
      3a83f677
  3. 20 Sep, 2019 13 commits
    • Christophe Leroy's avatar
      powerpc/mm: Fix an Oops in kasan_mmu_init() · cbd18991
      Christophe Leroy authored
      Uncompressing Kernel Image ... OK
         Loading Device Tree to 01ff7000, end 01fff74f ... OK
      [    0.000000] printk: bootconsole [udbg0] enabled
      [    0.000000] BUG: Unable to handle kernel data access at 0xf818c000
      [    0.000000] Faulting instruction address: 0xc0013c7c
      [    0.000000] Thread overran stack, or stack corrupted
      [    0.000000] Oops: Kernel access of bad area, sig: 11 [#1]
      [    0.000000] BE PAGE_SIZE=16K PREEMPT
      [    0.000000] Modules linked in:
      [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.3.0-rc4-s3k-dev-00743-g5abe4a3e8fd3-dirty #2080
      [    0.000000] NIP:  c0013c7c LR: c0013310 CTR: 00000000
      [    0.000000] REGS: c0c5ff38 TRAP: 0300   Not tainted  (5.3.0-rc4-s3k-dev-00743-g5abe4a3e8fd3-dirty)
      [    0.000000] MSR:  00001032 <ME,IR,DR,RI>  CR: 99033955  XER: 80002100
      [    0.000000] DAR: f818c000 DSISR: 82000000
      [    0.000000] GPR00: c0013310 c0c5fff0 c0ad6ac0 c0c600c0 f818c031 82000000 00000000 ffffffff
      [    0.000000] GPR08: 00000000 f1f1f1f1 c0013c2c c0013304 99033955 00400008 00000000 07ff9598
      [    0.000000] GPR16: 00000000 07ffb94c 00000000 00000000 00000000 00000000 00000000 f818cfb2
      [    0.000000] GPR24: 00000000 00000000 00001000 ffffffff 00000000 c07dbf80 00000000 f818c000
      [    0.000000] NIP [c0013c7c] do_page_fault+0x50/0x904
      [    0.000000] LR [c0013310] handle_page_fault+0xc/0x38
      [    0.000000] Call Trace:
      [    0.000000] Instruction dump:
      [    0.000000] be010080 91410014 553fe8fe 3d40c001 3d20f1f1 7d800026 394a3c2c 3fffe000
      [    0.000000] 6129f1f1 900100c4 9181007c 91410018 <913f0000> 3d2001f4 6129f4f4 913f0004
      
      Don't map the early shadow page read-only yet when creating the new
      page tables for the real shadow memory, otherwise the memblock
      allocations that immediately follows to create the real shadow pages
      that are about to replace the early shadow page trigger a page fault
      if they fall into the region being worked on at the moment.
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Fixes: 2edb16ef ("powerpc/32: Add KASAN support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/fe86886fb8db44360417cee0dc515ad47ca6ef72.1566382750.git.christophe.leroy@c-s.fr
      cbd18991
    • Christophe Leroy's avatar
      powerpc/mm: Add a helper to select PAGE_KERNEL_RO or PAGE_READONLY · 4c0f5d1e
      Christophe Leroy authored
      In a couple of places there is a need to select whether read-only
      protection of shadow pages is performed with PAGE_KERNEL_RO or with
      PAGE_READONLY.
      
      Add a helper to avoid duplicating the choice.
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/9f33f44b9cd741c4a02b3dce7b8ef9438fe2cd2a.1566382750.git.christophe.leroy@c-s.fr
      4c0f5d1e
    • Jordan Niethe's avatar
      powerpc/64s: Set reserved PCR bits · 13c7bb3c
      Jordan Niethe authored
      Currently the reserved bits of the Processor Compatibility
      Register (PCR) are cleared as per the Programming Note in Section
      1.3.3 of version 3.0B of the Power ISA. This causes all new
      architecture features to be made available when running on newer
      processors with new architecture features added to the PCR as bits
      must be set to disable a given feature.
      
      For example to disable new features added as part of Version 2.07 of
      the ISA the corresponding bit in the PCR needs to be set.
      
      As new processor features generally require explicit kernel support
      they should be disabled until such support is implemented. Therefore
      kernels should set all unknown/reserved bits in the PCR such that any
      new architecture features which the kernel does not currently know
      about get disabled.
      
      An update is planned to the ISA to clarify that the PCR is an
      exception to the Programming Note on reserved bits in Section 1.3.3.
      Signed-off-by: default avatarAlistair Popple <alistair@popple.id.au>
      Signed-off-by: default avatarJordan Niethe <jniethe5@gmail.com>
      Tested-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190917004605.22471-2-alistair@popple.id.au
      13c7bb3c
    • Alistair Popple's avatar
      powerpc: Fix definition of PCR bits to work with old binutils · c6fadabb
      Alistair Popple authored
      Commit 388cc6e1 ("KVM: PPC: Book3S HV: Support POWER6
      compatibility mode on POWER7") introduced new macros defining the PCR
      bits. When used from assembly files these definitions lead to build
      errors using older versions of binutils that don't support the 'ul'
      suffix. This fixes the build errors by updating the definitions to use
      the __MASK() macro which selects the appropriate suffix.
      Signed-off-by: default avatarAlistair Popple <alistair@popple.id.au>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190917004605.22471-1-alistair@popple.id.au
      c6fadabb
    • Aneesh Kumar K.V's avatar
      powerpc/book3s64/radix: Remove WARN_ON in destroy_context() · 7aec584e
      Aneesh Kumar K.V authored
      On failed task initialization due to memory allocation failures, we can
      call into destroy_context() with process_tb entry already populated.
      This patch forces the process_tb entry to zero in destroy_context().
      With this patch, we lose the ability to track if we are destroying a
      context without flushing the process table entry.
      
        WARNING: CPU: 4 PID: 6368 at arch/powerpc/mm/mmu_context_book3s64.c:246 destroy_context+0x58/0x340
        NIP [c0000000000875f8] destroy_context+0x58/0x340
        LR [c00000000013da18] __mmdrop+0x78/0x270
        Call Trace:
        [c000000f7db77c80] [c00000000013da18] __mmdrop+0x78/0x270
        [c000000f7db77cf0] [c0000000004d6a34] __do_execve_file.isra.13+0xbd4/0x1000
        [c000000f7db77e00] [c0000000004d7428] sys_execve+0x58/0x70
        [c000000f7db77e30] [c00000000000b388] system_call+0x5c/0x70
      Reported-by: default avatarPriya M.A <priyama2@in.ibm.com>
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      [mpe: Reformat/tweak comment wording]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190918140103.24395-1-aneesh.kumar@linux.ibm.com
      7aec584e
    • Gustavo Romero's avatar
      powerpc/tm: Add tm-poison test · a003365c
      Gustavo Romero authored
      Add TM selftest to check if FP or VEC register values from one process
      can leak into another process when both run on the same CPU.
      Signed-off-by: default avatarGustavo Romero <gromero@linux.ibm.com>
      Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20190904045529.23002-3-gromero@linux.vnet.ibm.com
      a003365c
    • Linus Torvalds's avatar
      Merge tag 'powerpc-5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 45824fc0
      Linus Torvalds authored
      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
        ...
      45824fc0
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 8c2b418c
      Linus Torvalds authored
      Pull arm64 fixes from Will Deacon:
       "We've had a few arm64 fixes trickle in this week. Nothing catastophic,
        but all things that should be addressed:
      
         - Fix clang build breakage with CONFIG_OPTIMIZE_INLINING=y
      
         - Fix compilation of pointer tagging selftest
      
         - Fix COND_SYSCALL definitions to work with CFI checks
      
         - Fix stale documentation reference in our Kconfig"
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: Fix reference to docs for ARM64_TAGGED_ADDR_ABI
        arm64: fix function types in COND_SYSCALL
        selftests, arm64: add kernel headers path for tags_test
        arm64: fix unreachable code issue with cmpxchg
      8c2b418c
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel · bb736a5c
      Linus Torvalds authored
      Pull Hexagon maintainership update from Richard Kuo:
       "I am leaving QuIC, and Brian Cain will be taking over maintainership
        of the Hexagon port"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel:
        Hexagon: change maintainer to Brian Cain
      bb736a5c
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 45979a95
      Linus Torvalds authored
      Pull tracing updates from Steven Rostedt:
      
       - Addition of multiprobes to kprobe and uprobe events (allows for more
         than one probe attached to the same location)
      
       - Addition of adding immediates to probe parameters
      
       - Clean up of the recordmcount.c code. This brings us closer to merging
         recordmcount into objtool, and reuse code.
      
       - Other small clean ups
      
      * tag 'trace-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (33 commits)
        selftests/ftrace: Update kprobe event error testcase
        tracing/probe: Reject exactly same probe event
        tracing/probe: Fix to allow user to enable events on unloaded modules
        selftests/ftrace: Select an existing function in kprobe_eventname test
        tracing/kprobe: Fix NULL pointer access in trace_porbe_unlink()
        tracing: Make sure variable reference alias has correct var_ref_idx
        tracing: Be more clever when dumping hex in __print_hex()
        ftrace: Simplify ftrace hash lookup code in clear_func_from_hash()
        tracing: Add "gfp_t" support in synthetic_events
        tracing: Rename tracing_reset() to tracing_reset_cpu()
        tracing: Document the stack trace algorithm in the comments
        tracing/arm64: Have max stack tracer handle the case of return address after data
        recordmcount: Clarify what cleanup() does
        recordmcount: Remove redundant cleanup() calls
        recordmcount: Kernel style formatting
        recordmcount: Kernel style function signature formatting
        recordmcount: Rewrite error/success handling
        selftests/ftrace: Add syntax error test for multiprobe
        selftests/ftrace: Add syntax error test for immediates
        selftests/ftrace: Add a testcase for kprobe multiprobe event
        ...
      45979a95
    • Linus Torvalds's avatar
      Merge tag 'kgdb-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux · 3207598a
      Linus Torvalds authored
      Pull kgdb updates from Daniel Thompson:
       "It has been a quiet dev cycle for kgdb. There has been some good stuff
        for kdb on the mailing list but unfortunately the patches caused a
        couple of problems with the kdb pager so I had to drop those and they
        will have to wait for next time!
      
        That just leaves us with just a couple of very tiny clean ups for now:
      
         - Fix a broken comment
      
         - Use str_has_prefix() for the grep "pipe" in kdb"
      
      * tag 'kgdb-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux:
        kgdb: fix comment regarding static function
        kdb: Replace strncmp with str_has_prefix
      3207598a
    • Linus Torvalds's avatar
      lz4: do not export static symbol · b08918fb
      Linus Torvalds authored
      Kbuild now complains (rightly) about it.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b08918fb
    • Linus Torvalds's avatar
      Merge tag 'kbuild-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · d7b0827f
      Linus Torvalds authored
      Pull Kbuild updates from Masahiro Yamada:
      
       - add modpost warn exported symbols marked as 'static' because 'static'
         and EXPORT_SYMBOL is an odd combination
      
       - break the build early if gold linker is used
      
       - optimize the Bison rule to produce .c and .h files by a single
         pattern rule
      
       - handle PREEMPT_RT in the module vermagic and UTS_VERSION
      
       - warn CONFIG options leaked to the user-space except existing ones
      
       - make single targets work properly
      
       - rebuild modules when module linker scripts are updated
      
       - split the module final link stage into scripts/Makefile.modfinal
      
       - fix the missed error code in merge_config.sh
      
       - improve the error message displayed on the attempt of the O= build in
         unclean source tree
      
       - remove 'clean-dirs' syntax
      
       - disable -Wimplicit-fallthrough warning for Clang
      
       - add CONFIG_CC_OPTIMIZE_FOR_SIZE_O3 for ARC
      
       - remove ARCH_{CPP,A,C}FLAGS variables
      
       - add $(BASH) to run bash scripts
      
       - change *CFLAGS_<basetarget>.o to take the relative path to $(obj)
         instead of the basename
      
       - stop suppressing Clang's -Wunused-function warnings when W=1
      
       - fix linux/export.h to avoid genksyms calculating CRC of trimmed
         exported symbols
      
       - misc cleanups
      
      * tag 'kbuild-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (63 commits)
        genksyms: convert to SPDX License Identifier for lex.l and parse.y
        modpost: use __section in the output to *.mod.c
        modpost: use MODULE_INFO() for __module_depends
        export.h, genksyms: do not make genksyms calculate CRC of trimmed symbols
        export.h: remove defined(__KERNEL__), which is no longer needed
        kbuild: allow Clang to find unused static inline functions for W=1 build
        kbuild: rename KBUILD_ENABLE_EXTRA_GCC_CHECKS to KBUILD_EXTRA_WARN
        kbuild: refactor scripts/Makefile.extrawarn
        merge_config.sh: ignore unwanted grep errors
        kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj)
        modpost: add NOFAIL to strndup
        modpost: add guid_t type definition
        kbuild: add $(BASH) to run scripts with bash-extension
        kbuild: remove ARCH_{CPP,A,C}FLAGS
        kbuild,arc: add CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 for ARC
        kbuild: Do not enable -Wimplicit-fallthrough for clang for now
        kbuild: clean up subdir-ymn calculation in Makefile.clean
        kbuild: remove unneeded '+' marker from cmd_clean
        kbuild: remove clean-dirs syntax
        kbuild: check clean srctree even earlier
        ...
      d7b0827f
  4. 19 Sep, 2019 17 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2019-09-18' of git://anongit.freedesktop.org/drm/drm · 574cc453
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "This is the main pull request for 5.4-rc1 merge window. I don't think
        there is anything outstanding so next week should just be fixes, but
        we'll see if I missed anything. I landed some fixes earlier in the
        week but got delayed writing summary and sending it out, due to a mix
        of sick kid and jetlag!
      
        There are some fixes pending, but I'd rather get the main merge out of
        the way instead of delaying it longer.
      
        It's also pretty large in commit count and new amd header file size.
        The largest thing is four new amdgpu products (navi12/14, arcturus and
        renoir APU support).
      
        Otherwise it's pretty much lots of work across the board, i915 has
        started landing tigerlake support, lots of icelake fixes and lots of
        locking reworking for future gpu support, lots of header file rework
        (drmP.h is nearly gone), some old legacy hacks (DRM_WAIT_ON) have been
        put into the places they are needed.
      
        uapi:
         - content protection type property for HDCP
      
        core:
         - rework include dependencies
         - lots of drmP.h removals
         - link rate calculation robustness fix
         - make fb helper map only when required
         - add connector->DDC adapter link
         - DRM_WAIT_ON removed
         - drop DRM_AUTH usage from drivers
      
        dma-buf:
         - reservation object fence helper
      
        dma-fence:
         - shrink dma_fence struct
         - merge signal functions
         - store timestamps in dma_fence
         - selftests
      
        ttm:
         - embed drm_get_object struct into ttm_buffer_object
         - release_notify callback
      
        bridges:
         - sii902x - audio graph card support
         - tc358767 - aux data handling rework
         - ti-snd64dsi86 - debugfs support, DSI mode flags support
      
        panels:
         - Support for GiantPlus GPM940B0, Sharp LQ070Y3DG3B, Ortustech
           COM37H3M, Novatek NT39016, Sharp LS020B1DD01D, Raydium RM67191, Boe
           Himax8279d, Sharp LD-D5116Z01B
         - TI nspire, NEC NL8048HL11, LG Philips LB035Q02, Sharp LS037V7DW01,
           Sony ACX565AKM, Toppoly TD028TTEC1 Toppoly TD043MTEA1
      
        i915:
         - Initial tigerlake platform support
         - Locking simplification work, general all over refactoring.
         - Selftests
         - HDCP debug info improvements
         - DSI properties
         - Icelake display PLL fixes, colorspace fixes, bandwidth fixes, DSI
           suspend/resume
         - GuC fixes
         - Perf fixes
         - ElkhartLake enablement
         - DP MST fixes
         - GVT - command parser enhancements
      
        amdgpu:
         - add wipe memory on release flag for buffer creation
         - Navi12/14 support (may be marked experimental)
         - Arcturus support
         - Renoir APU support
         - mclk DPM for Navi
         - DC display fixes
         - Raven scatter/gather support
         - RAS support for GFX
         - Navi12 + Arcturus power features
         - GPU reset for Picasso
         - smu11 i2c controller support
      
        amdkfd:
         - navi12/14 support
         - Arcturus support
      
        radeon:
         - kexec fix
      
        nouveau:
         - improved display color management
         - detect lack of GPU power cables
      
        vmwgfx:
         - evicition priority support
         - remove unused security feature
      
        msm:
         - msm8998 display support
         - better async commit support for cursor updates
      
        etnaviv:
         - per-process address space support
         - performance counter fixes
         - softpin support
      
        mcde:
         - DCS transfers fix
      
        exynos:
         - drmP.h cleanup
      
        lima:
         - reduce logging
      
        kirin:
         - misc clenaups
      
        komeda:
         - dual-link support
         - DT memory regions
      
        hisilicon:
         - misc fixes
      
        imx:
         - IPUv3 image converter fixes
         - 32-bit RGB V4L2 pixel format support
      
        ingenic:
         - more support for panel related cases
      
        mgag200:
         - cursor support fix
      
        panfrost:
         - export GPU features register to userspace
         - gpu heap allocations
         - per-fd address space support
      
        pl111:
         - CLD pads wiring support removed from DT
      
        rockchip:
         - rework to use DRM PSR helpers
         - fix bug in VOP_WIN_GET macro
         - DSI DT binding rework
      
        sun4i:
         - improve support for color encoding and range
         - DDC enabled GPIO
      
        tinydrm:
         - rework SPI support
         - improve MIPI-DBI support
         - moved to drm/tiny
      
        vkms:
         - rework CRC tracking
      
        dw-hdmi:
         - get_eld and i2s improvements
      
        gm12u320:
         - misc fixes
      
        meson:
         - global code cleanup
         - vpu feature detect
      
        omap:
         - alpha/pixel blend mode properties
      
        rcar-du:
         - misc fixes"
      
      * tag 'drm-next-2019-09-18' of git://anongit.freedesktop.org/drm/drm: (2112 commits)
        drm/nouveau/bar/gm20b: Avoid BAR1 teardown during init
        drm/nouveau: Fix ordering between TTM and GEM release
        drm/nouveau/prime: Extend DMA reservation object lock
        drm/nouveau: Fix fallout from reservation object rework
        drm/nouveau/kms/nv50-: Don't create MSTMs for eDP connectors
        drm/i915: Use NOEVICT for first pass on attemping to pin a GGTT mmap
        drm/i915: to make vgpu ppgtt notificaiton as atomic operation
        drm/i915: Flush the existing fence before GGTT read/write
        drm/i915: Hold irq-off for the entire fake lock period
        drm/i915/gvt: update RING_START reg of vGPU when the context is submitted to i915
        drm/i915/gvt: update vgpu workload head pointer correctly
        drm/mcde: Fix DSI transfers
        drm/msm: Use the correct dma_sync calls harder
        drm/msm: remove unlikely() from WARN_ON() conditions
        drm/msm/dsi: Fix return value check for clk_get_parent
        drm/msm: add atomic traces
        drm/msm/dpu: async commit support
        drm/msm: async commit support
        drm/msm: split power control from prepare/complete_commit
        drm/msm: add kms->flush_commit()
        ...
      574cc453
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 3c2edc36
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "This is the bulk of pin control changes for the v5.4 kernel cycle:
      
        Core changes:
      
         - Fix errors in example code in the documentation.
      
        New drivers:
      
         - Add support for JZ4760, JZ4760B, X1000, X1000E and X1500 to the
           Ingenic driver.
      
         - Support Cirrus Logic Madera CS47L92 and CS47L15.
      
         - Support Allwinner Sunxi V3S.
      
         - Support Aspeed 2600 BMC.
      
         - Support Qualcomm SC7180.
      
         - Support Marvell MVEBU CS115.
      
        Driver improvements:
      
         - Clean up a few drivers to use the devm_platform_ioremap_resource()
           helper.
      
         - Pass the irqchip when registering the gpio_chip in some pin
           controllers that are also GPIO controllers.
      
         - Support suspend/resume in the Tegra driver.
      
         - Support pull-up on the Broadcom BCM2711.
      
         - The Intel driver can now request locked pads.
      
         - Fix the UFS reset pin in the Qualcomm SDM845 driver"
      
      * tag 'pinctrl-v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (112 commits)
        pinctrl: meson-gxbb: Fix wrong pinning definition for uart_c
        pinctrl: sh-pfc: Unlock on error in sh_pfc_func_set_mux()
        pinctrl: bcm: remove redundant assignment to pointer log
        pinctrl: iproc: Add 'get_direction' support
        pinctrl: iproc-gpio: Handle interrupts for multiple instances
        pinctrl: iproc-gpio: Fix incorrect pinconf configurations
        pinctrl: intel: mark intel_pin_to_gpio __maybe_unused
        pinctrl: qcom: sdm845: Fix UFS_RESET pin
        pinctrl: mvebu: add additional variant for standalone CP115
        pinctrl: mvebu: Add CP110 missing pin functionality
        dt-bindings: cp110: document the new CP115 pinctrl compatible
        pinctrl: bcm2835: Pass irqchip when adding gpiochip
        pinctrl: meson: meson: Add of_node_put() before return
        pinctrl/gpio: Take MUX usage into account
        dt-bindings: pinctrl: qcom-pmic-gpio: Add pm8150l support
        dt-bindings: pinctrl: qcom-pmic-gpio: Add pm8150b support
        dt-bindings: pinctrl: qcom-pmic-gpio: Add pm8150 support
        pinctrl: amd: disable spurious-firing GPIO IRQs
        pinctrl: rza2: Include the appropriate headers
        pinctrl: rza2: Drop driver use of consumer flags
        ...
      3c2edc36
    • Linus Torvalds's avatar
      Merge tag 'tag-chrome-platform-for-v5.4' of... · 32b90daf
      Linus Torvalds authored
      Merge tag 'tag-chrome-platform-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux
      
      Pull chrome platform updates from Benson Leung:
       "CrOS EC / MFD Migration:
          - Move cros_ec core driver from mfd into chrome platform.
      
        Wilco EC:
          - Add batt_ppid_info command to Wilco telemetry driver.
      
        CrOS EC:
          - cros_ec_rpmsg : Add support to inform EC of suspend/resume status
          - cros_ec_rpmsg : Fix race condition on probe failed
          - cros_ec_chardev : Add a poll handler to receive MKBP events
      
        Misc:
          - bugfixes in cros_usbpd_logger and cros_ec_ishtp"
      
      * tag 'tag-chrome-platform-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux:
        platform/chrome: cros_usbpd_logger: null check create_singlethread_workqueue
        platform/chrome: cros_ec_chardev: Add a poll handler to receive MKBP events
        platform/chrome: cros_ec_rpmsg: Fix race with host command when probe failed
        platform/chrome: chromeos_tbmc: Report wake events
        mfd: cros_ec: Use mfd_add_hotplug_devices() helper
        mfd: cros_ec: Add convenience struct to define autodetectable CrOS EC subdevices
        mfd: cros_ec: Add convenience struct to define dedicated CrOS EC MCUs
        mfd: cros_ec: Use kzalloc and cros_ec_cmd_xfer_status helper
        mfd / platform: cros_ec: Reorganize platform and mfd includes
        mfd / platform: cros_ec: Rename config to a better name
        mfd: cros_ec: Switch to use the new cros-ec-chardev driver
        mfd / platform: cros_ec: Miscellaneous character device to talk with the EC
        mfd / platform: cros_ec: Move cros-ec core driver out from MFD
        mfd / platform: cros_ec: Handle chained ECs as platform devices
        platform/chrome: cros_ec_rpmsg: Add host command AP sleep state support
        platform/chrome: chromeos_laptop: drop checks of NULL-safe functions
        platform/chrome: wilco_ec: Add batt_ppid_info command to telemetry driver
      32b90daf
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · c6cfaf4f
      Linus Torvalds authored
      Pull input updates from Dmitry Torokhov:
      
       - input core allows hardware drivers to specify a [more precise]
         timestamp (normally taken in top half) to better track velocity of
         contacts
      
       - input_dev instances now support "polling" mode so that drivers could
         use the same object for polled and interrupt-driven operation. The
         plan is to convert existing drivers and retire input_polled_dev API
      
       - a new driver for the FlySky FS-iA6B RC receiver
      
       - a refresh of BU21013 touchpad driver
      
       - w90x900 keyboard and touchpad drivers are removed as the platform is
         gone
      
       - assorted fixes
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (45 commits)
        Input: sidewinder - make array seq static const, makes object smaller
        Input: reset device timestamp on sync
        Input: bu21013_ts - switch to using standard touchscreen properties
        Input: bu21013_ts - switch to using MT-B (slotted) protocol
        Input: bu21013_ts - fix suspend when wake source
        Input: bu21013_ts - use interrupt from I2C client
        Input: bu21013_ts - remove support for platform data
        Input: bu21013_ts - convert to using managed resources
        Input: bu21013_ts - remove useless comments
        Input: bu21013_ts - annotate supend/resume methods as __maybe_unused
        Input: bu21013_ts - rename some variables
        Input: bu21013_ts - convert to use GPIO descriptors
        ARM: ux500: improve BU21013 touchpad bindings
        Input: i8042 - enable wakeup on a stable struct device
        Input: soc_button_array - use platform_device_register_resndata()
        Input: psmouse - drop all unneeded functions from mouse headers
        Input: add support for polling to input devices
        Input: wacom_w8001 - allocate additional space for 'phys'
        Input: cros_ec_keyb - add back missing mask for event_type
        Input: remove dev_err() usage after platform_get_irq()
        ...
      c6cfaf4f
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.4-1' of git://github.com/cminyard/linux-ipmi · a9f8b38a
      Linus Torvalds authored
      Pull IPMI updates from Corey Minyard:
       "A few minor fixes and some cosmetic changes.
      
        Nothing big here, but some minor things that people have found and
        some minor reworks for names and include files"
      
      * tag 'for-linus-5.4-1' of git://github.com/cminyard/linux-ipmi:
        ipmi_si_intf: Fix race in timer shutdown handling
        ipmi: move message error checking to avoid deadlock
        ipmi_ssif: avoid registering duplicate ssif interface
        ipmi: Free receive messages when in an oops
        ipmi_si: Only schedule continuously in the thread in maintenance mode
        ipmi_si: Remove ipmi_ from the device attr names
        ipmi_si: Convert device attr permissions to octal
        ipmi_si: Rework some include files
        ipmi_si: Convert timespec64 to timespec
      a9f8b38a
    • Linus Torvalds's avatar
      Merge tag 'mailbox-v5.4' of git://git.linaro.org/landing-teams/working/fujitsu/integration · b682242f
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
      
       - qcom:
           - enable support for ipq8074, sm1850 and sm7180
           - add child device node for qcs404
           - misc fixes
      
       - mediatek:
           - enable support for mt8183
           - misc rejig of cmdq driver
           - new client-reg dt property
      
       - armada:
           - use device-managed registration api
      
      * tag 'mailbox-v5.4' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        mailbox: qcom-apcs: fix max_register value
        mailbox: qcom: Add support for IPQ8074 APCS
        dt-bindings: mailbox: qom: Add ipq8074 APPS compatible
        mailbox: qcom: Add support for Qualcomm SM8150 and SC7180 SoCs
        dt-bindings: mailbox: Add APSS shared for SM8150 and SC7180 SoCs
        mbox: qcom: replace integer with valid macro
        mbox: qcom: add APCS child device for QCS404
        mailbox: mediatek: cmdq: clear the event in cmdq initial flow
        mailbox: mediatek: cmdq: support mt8183 gce function
        mailbox: mediatek: cmdq: move the CMDQ_IRQ_MASK into cmdq driver data
        dt-binding: gce: add binding for gce client reg property
        dt-binding: gce: add gce header file for mt8183
        dt-binding: gce: remove thread-num property
        mailbox: armada-37xx-rwtm: Use device-managed registration API
      b682242f
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · e3a008ac
      Linus Torvalds authored
      Pull Devicetree updates from Rob Herring:
      
       - a bunch of DT binding conversions to DT schema format
      
       - clean-ups of the Arm idle-states binding
      
       - support a default number of cells in of_for_each_phandle() when the
         cells name is missing
      
       - expose dtbs_check and dt_binding_check in the make help
      
       - convert writting-schema.md to ReST
      
       - HiSilicon reset controller binding updates
      
       - add documentation for MT8516 RNG
      
      * tag 'devicetree-for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (46 commits)
        of: restore old handling of cells_name=NULL in of_*_phandle_with_args()
        bus: qcom: fix spelling mistake "ambigous" -> "ambiguous"
        of: Let of_for_each_phandle fallback to non-negative cell_count
        iommu: pass cell_count = -1 to of_for_each_phandle with cells_name
        dt-bindings: arm: Convert Realtek board/soc bindings to json-schema
        dt-bindings: arm: Convert Actions Semi bindings to jsonschema
        dt-bindings: Correct spelling in example schema
        dt-bindings: cpu: Add a support cpu type for cortex-a55
        dt-bindings: gpu: mali-midgard: Add samsung exynos5250 compatible
        dt-bindings: arm: idle-states: Move exit-latency-us explanation
        dt-bindings: arm: idle-states: Add punctuation to improve readability
        dt-bindings: arm: idle-states: Correct "constraint guarantees"
        dt-bindings: arm: idle-states: Correct references to wake-up delay
        dt-bindings: arm: idle-states: Use "e.g." and "i.e." consistently
        pinctrl-mcp23s08: Fix property-name in dt-example
        dt-bindings: Clarify interrupts-extended usage
        dt-bindings: Convert Arm Mali Utgard GPU to DT schema
        dt-bindings: Convert Arm Mali Bifrost GPU to DT schema
        dt-bindings: Convert Arm Mali Midgard GPU to DT schema
        dt-bindings: irq: Convert Allwinner NMI Controller to a schema
        ...
      e3a008ac
    • Linus Torvalds's avatar
      Merge tag 'dma-mapping-5.4' of git://git.infradead.org/users/hch/dma-mapping · 671df189
      Linus Torvalds authored
      Pull dma-mapping updates from Christoph Hellwig:
      
       - add dma-mapping and block layer helpers to take care of IOMMU merging
         for mmc plus subsequent fixups (Yoshihiro Shimoda)
      
       - rework handling of the pgprot bits for remapping (me)
      
       - take care of the dma direct infrastructure for swiotlb-xen (me)
      
       - improve the dma noncoherent remapping infrastructure (me)
      
       - better defaults for ->mmap, ->get_sgtable and ->get_required_mask
         (me)
      
       - cleanup mmaping of coherent DMA allocations (me)
      
       - various misc cleanups (Andy Shevchenko, me)
      
      * tag 'dma-mapping-5.4' of git://git.infradead.org/users/hch/dma-mapping: (41 commits)
        mmc: renesas_sdhi_internal_dmac: Add MMC_CAP2_MERGE_CAPABLE
        mmc: queue: Fix bigger segments usage
        arm64: use asm-generic/dma-mapping.h
        swiotlb-xen: merge xen_unmap_single into xen_swiotlb_unmap_page
        swiotlb-xen: simplify cache maintainance
        swiotlb-xen: use the same foreign page check everywhere
        swiotlb-xen: remove xen_swiotlb_dma_mmap and xen_swiotlb_dma_get_sgtable
        xen: remove the exports for xen_{create,destroy}_contiguous_region
        xen/arm: remove xen_dma_ops
        xen/arm: simplify dma_cache_maint
        xen/arm: use dev_is_dma_coherent
        xen/arm: consolidate page-coherent.h
        xen/arm: use dma-noncoherent.h calls for xen-swiotlb cache maintainance
        arm: remove wrappers for the generic dma remap helpers
        dma-mapping: introduce a dma_common_find_pages helper
        dma-mapping: always use VM_DMA_COHERENT for generic DMA remap
        vmalloc: lift the arm flag for coherent mappings to common code
        dma-mapping: provide a better default ->get_required_mask
        dma-mapping: remove the dma_declare_coherent_memory export
        remoteproc: don't allow modular build
        ...
      671df189
    • Linus Torvalds's avatar
      Merge tag 'configfs-for-5.4' of git://git.infradead.org/users/hch/configfs · c9fe5630
      Linus Torvalds authored
      Pull configfs updates from Christoph Hellwig:
      
       - fix a symlink deadlock (Al Viro)
      
       - various cleanups (Al Viro, me)
      
      * tag 'configfs-for-5.4' of git://git.infradead.org/users/hch/configfs:
        configfs: calculate the symlink target only once
        configfs: make configfs_create() return inode
        configfs: factor dirent removal into helpers
        configfs: fix a deadlock in configfs_symlink()
      c9fe5630
    • Brian Cain's avatar
      Hexagon: change maintainer to Brian Cain · 18dd1793
      Brian Cain authored
      Signed-off-by: default avatarBrian Cain <bcain@codeaurora.org>
      Signed-off-by: default avatarRichard Kuo <rkuo@codeaurora.org>
      18dd1793
    • Linus Torvalds's avatar
      Merge tag '5.4-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 7e3d2c82
      Linus Torvalds authored
      Pull cifs updates from Steve French:
       "Various cifs/smb3 fixes (including for share deleted cases) and
        features including improved encrypted read performance, and various
        debugging improvements.
      
        Note that since I am at a test event this week with the Samba team,
        and at the annual Storage Developer Conference/SMB3 Plugfest test
        event next week a higher than usual number of fixes is expected later
        next week as other features in progress get additional testing and
        review during these two events"
      
      * tag '5.4-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6: (38 commits)
        cifs: update internal module version number
        cifs: modefromsid: write mode ACE first
        cifs: cifsroot: add more err checking
        smb3: add missing worker function for SMB3 change notify
        cifs: Add support for root file systems
        cifs: modefromsid: make room for 4 ACE
        smb3: fix potential null dereference in decrypt offload
        smb3: fix unmount hang in open_shroot
        smb3: allow disabling requesting leases
        smb3: improve handling of share deleted (and share recreated)
        smb3: display max smb3 requests in flight at any one time
        smb3: only offload decryption of read responses if multiple requests
        cifs: add a helper to find an existing readable handle to a file
        smb3: enable offload of decryption of large reads via mount option
        smb3: allow parallelizing decryption of reads
        cifs: add a debug macro that prints \\server\share for errors
        smb3: fix signing verification of large reads
        smb3: allow skipping signature verification for perf sensitive configurations
        smb3: add dynamic tracepoints for flush and close
        smb3: log warning if CSC policy conflicts with cache mount option
        ...
      7e3d2c82
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.4-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux · 7a0d7961
      Linus Torvalds authored
      Pull orangefs updates from Mike Marshall:
       "A fix and a cleanup.
      
        The fix: way back in the stone age (2003) mode was set to the magic
        number "755" in what is now fs/orangefs/namei.c(orangefs_symlink).
        Łukasz Wrochna reported it and Artur Świgoń sent in a patch to change
        it to octal. Maybe it shouldn't be a magic number at all but rather
        something like "S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH"...
      
        cleanup: Colin Ian King found a redundant assignment and sent in a
        patch to remove it"
      
      [ And no, octal numbers for permissions are a lot more legible than a
        binary 'or' of some line noise macros. So 0755 is preferred over
        trying to spell it out using "helpful" macros     - Linus ]
      
      * tag 'for-linus-5.4-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux:
        orangefs: remove redundant assignment to err
        orangefs: Add octal zero prefix
      7a0d7961
    • Linus Torvalds's avatar
      Merge branch 'work.autofs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 8e6ee05d
      Linus Torvalds authored
      Pull autofs updates from Al Viro:
       "The most interesting part here is getting rid of the last trylock loop
        on dentry->d_lock.
      
        The ones in fs/dcache.c had been dealt with several years ago, but
        there'd been leftovers in fs/autofs/expire.c"
      
      * 'work.autofs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        autofs_lookup(): hold ->d_lock over playing with ->d_flags
        get rid of autofs_info->active_count
        autofs: simplify get_next_positive_...(), get rid of trylocks
      8e6ee05d
    • Linus Torvalds's avatar
      Merge branch 'work.mount2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · bc7d9aee
      Linus Torvalds authored
      Pull misc mount API conversions from Al Viro:
       "Conversions to new API for shmem and friends and for mount_mtd()-using
        filesystems.
      
        As for the rest of the mount API conversions in -next, some of them
        belong in the individual trees (e.g. binderfs one should definitely go
        through android folks, after getting redone on top of their changes).
        I'm going to drop those and send the rest (trivial ones + stuff ACKed
        by maintainers) in a separate series - by that point they are
        independent from each other.
      
        Some stuff has already migrated into individual trees (NFS conversion,
        for example, or FUSE stuff, etc.); those presumably will go through
        the regular merges from corresponding trees."
      
      * 'work.mount2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        vfs: Make fs_parse() handle fs_param_is_fd-type params better
        vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount API
        shmem_parse_one(): switch to use of fs_parse()
        shmem_parse_options(): take handling a single option into a helper
        shmem_parse_options(): don't bother with mpol in separate variable
        shmem_parse_options(): use a separate structure to keep the results
        make shmem_fill_super() static
        make ramfs_fill_super() static
        devtmpfs: don't mix {ramfs,shmem}_fill_super() with mount_single()
        vfs: Convert squashfs to use the new mount API
        mtd: Kill mount_mtd()
        vfs: Convert jffs2 to use the new mount API
        vfs: Convert cramfs to use the new mount API
        vfs: Convert romfs to use the new mount API
        vfs: Add a single-or-reconfig keying to vfs_get_super()
      bc7d9aee
    • Linus Torvalds's avatar
      Merge tag 'y2038-vfs' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground · cfb82e1d
      Linus Torvalds authored
      Pull y2038 vfs updates from Arnd Bergmann:
       "Add inode timestamp clamping.
      
        This series from Deepa Dinamani adds a per-superblock minimum/maximum
        timestamp limit for a file system, and clamps timestamps as they are
        written, to avoid random behavior from integer overflow as well as
        having different time stamps on disk vs in memory.
      
        At mount time, a warning is now printed for any file system that can
        represent current timestamps but not future timestamps more than 30
        years into the future, similar to the arbitrary 30 year limit that was
        added to settimeofday().
      
        This was picked as a compromise to warn users to migrate to other file
        systems (e.g. ext4 instead of ext3) when they need the file system to
        survive beyond 2038 (or similar limits in other file systems), but not
        get in the way of normal usage"
      
      * tag 'y2038-vfs' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground:
        ext4: Reduce ext4 timestamp warnings
        isofs: Initialize filesystem timestamp ranges
        pstore: fs superblock limits
        fs: omfs: Initialize filesystem timestamp ranges
        fs: hpfs: Initialize filesystem timestamp ranges
        fs: ceph: Initialize filesystem timestamp ranges
        fs: sysv: Initialize filesystem timestamp ranges
        fs: affs: Initialize filesystem timestamp ranges
        fs: fat: Initialize filesystem timestamp ranges
        fs: cifs: Initialize filesystem timestamp ranges
        fs: nfs: Initialize filesystem timestamp ranges
        ext4: Initialize timestamps limits
        9p: Fill min and max timestamps in sb
        fs: Fill in max and min timestamps in superblock
        utimes: Clamp the timestamps before update
        mount: Add mount warning for impending timestamp expiry
        timestamp_truncate: Replace users of timespec64_trunc
        vfs: Add timestamp_truncate() api
        vfs: Add file timestamp range support
      cfb82e1d
    • Masami Hiramatsu's avatar
      selftests/ftrace: Update kprobe event error testcase · b78b94b8
      Masami Hiramatsu authored
      Update kprobe event error testcase to test if it correctly
      finds the exact same probe event.
      
      Link: http://lkml.kernel.org/r/156879695513.31056.1580235733738840126.stgit@devnote2Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      b78b94b8
    • Masami Hiramatsu's avatar
      tracing/probe: Reject exactly same probe event · fe60b0ce
      Masami Hiramatsu authored
      Reject exactly same probe events as existing probes.
      
      Multiprobe allows user to define multiple probes on same
      event. If user appends a probe which exactly same definition
      (same probe address and same arguments) on existing event,
      the event will record same probe information twice.
      That can be confusing users, so reject it.
      
      Link: http://lkml.kernel.org/r/156879694602.31056.5533024778165036763.stgit@devnote2Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      fe60b0ce