1. 07 Apr, 2021 14 commits
  2. 02 Apr, 2021 3 commits
  3. 01 Apr, 2021 2 commits
    • John Stultz's avatar
      drm/msm: Fix removal of valid error case when checking speed_bin · 2b0b219e
      John Stultz authored
      Commit 7bf168c8  ("drm/msm: Fix speed-bin support not to
      access outside valid memory"), reworked the nvmem reading of
      "speed_bin", but in doing so dropped handling of the -ENOENT
      case which was previously documented as "fine".
      
      That change resulted in the db845c board display to fail to
      start, with the following error:
      
      adreno 5000000.gpu: [drm:a6xx_gpu_init] *ERROR* failed to read speed-bin (-2). Some OPPs may not be supported by hardware
      
      Thus, this patch simply re-adds the ENOENT handling so the lack
      of the speed_bin entry isn't fatal for display, and gets things
      working on db845c.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: Jordan Crouse <jcrouse@codeaurora.org>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Douglas Anderson <dianders@chromium.org>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: freedreno@lists.freedesktop.org
      Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
      Cc: YongQin Liu <yongqin.liu@linaro.org>
      Reported-by: default avatarYongQin Liu <yongqin.liu@linaro.org>
      Fixes: 7bf168c8  ("drm/msm: Fix speed-bin support not to access outside valid memory")
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      Reviewed-by: default avatarAkhil P Oommen <akhilpo@codeaurora.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Message-Id: <20210330013408.2532048-1-john.stultz@linaro.org>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      2b0b219e
    • Stephen Boyd's avatar
      drm/msm: Set drvdata to NULL when msm_drm_init() fails · 5620b135
      Stephen Boyd authored
      We should set the platform device's driver data to NULL here so that
      code doesn't assume the struct drm_device pointer is valid when it could
      have been destroyed. The lifetime of this pointer is managed by a kref
      but when msm_drm_init() fails we call drm_dev_put() on the pointer which
      will free the pointer's memory. This driver uses the component model, so
      there's sort of two "probes" in this file, one for the platform device
      i.e. msm_pdev_probe() and one for the component i.e. msm_drm_bind(). The
      msm_drm_bind() code is using the platform device's driver data to store
      struct drm_device so the two functions are intertwined.
      
      This relationship becomes a problem for msm_pdev_shutdown() when it
      tests the NULL-ness of the pointer to see if it should call
      drm_atomic_helper_shutdown(). The NULL test is a proxy check for if the
      pointer has been freed by kref_put(). If the drm_device has been
      destroyed, then we shouldn't call the shutdown helper, and we know that
      is the case if msm_drm_init() failed, therefore set the driver data to
      NULL so that this pointer liveness is tracked properly.
      
      Fixes: 9d5cbf5f ("drm/msm: add shutdown support for display platform_driver")
      Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Cc: Fabio Estevam <festevam@gmail.com>
      Cc: Krishna Manikandan <mkrishn@codeaurora.org>
      Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
      Message-Id: <20210325212822.3663144-1-swboyd@chromium.org>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      5620b135
  4. 23 Mar, 2021 1 commit
  5. 21 Mar, 2021 2 commits
    • Fabio Estevam's avatar
      drm/msm: Fix suspend/resume on i.MX5 · a9748134
      Fabio Estevam authored
      When putting iMX5 into suspend, the following flow is
      observed:
      
      [   70.023427] [<c07755f0>] (msm_atomic_commit_tail) from [<c06e7218>]
      (commit_tail+0x9c/0x18c)
      [   70.031890] [<c06e7218>] (commit_tail) from [<c0e2920c>]
      (drm_atomic_helper_commit+0x1a0/0x1d4)
      [   70.040627] [<c0e2920c>] (drm_atomic_helper_commit) from
      [<c06e74d4>] (drm_atomic_helper_disable_all+0x1c4/0x1d4)
      [   70.050913] [<c06e74d4>] (drm_atomic_helper_disable_all) from
      [<c0e2943c>] (drm_atomic_helper_suspend+0xb8/0x170)
      [   70.061198] [<c0e2943c>] (drm_atomic_helper_suspend) from
      [<c06e84bc>] (drm_mode_config_helper_suspend+0x24/0x58)
      
      In the i.MX5 case, priv->kms is not populated (as i.MX5 does not use any
      of the Qualcomm display controllers), causing a NULL pointer
      dereference in msm_atomic_commit_tail():
      
      [   24.268964] 8<--- cut here ---
      [   24.274602] Unable to handle kernel NULL pointer dereference at
      virtual address 00000000
      [   24.283434] pgd = (ptrval)
      [   24.286387] [00000000] *pgd=ca212831
      [   24.290788] Internal error: Oops: 17 [#1] SMP ARM
      [   24.295609] Modules linked in:
      [   24.298777] CPU: 0 PID: 197 Comm: init Not tainted 5.11.0-rc2-next-20210111 #333
      [   24.306276] Hardware name: Freescale i.MX53 (Device Tree Support)
      [   24.312442] PC is at msm_atomic_commit_tail+0x54/0xb9c
      [   24.317743] LR is at commit_tail+0xa4/0x1b0
      
      Fix the problem by calling drm_mode_config_helper_suspend/resume()
      only when priv->kms is available.
      
      Fixes: ca8199f1 ("drm/msm/dpu: ensure device suspend happens during PM sleep")
      Signed-off-by: default avatarFabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      a9748134
    • Dmitry Baryshkov's avatar
      drm/msm: fix shutdown hook in case GPU components failed to bind · 623f279c
      Dmitry Baryshkov authored
      If GPU components have failed to bind, shutdown callback would fail with
      the following backtrace. Add safeguard check to stop that oops from
      happening and allow the board to reboot.
      
      [   66.617046] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      [   66.626066] Mem abort info:
      [   66.628939]   ESR = 0x96000006
      [   66.632088]   EC = 0x25: DABT (current EL), IL = 32 bits
      [   66.637542]   SET = 0, FnV = 0
      [   66.640688]   EA = 0, S1PTW = 0
      [   66.643924] Data abort info:
      [   66.646889]   ISV = 0, ISS = 0x00000006
      [   66.650832]   CM = 0, WnR = 0
      [   66.653890] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000107f81000
      [   66.660505] [0000000000000000] pgd=0000000100bb2003, p4d=0000000100bb2003, pud=0000000100897003, pmd=0000000000000000
      [   66.671398] Internal error: Oops: 96000006 [#1] PREEMPT SMP
      [   66.677115] Modules linked in:
      [   66.680261] CPU: 6 PID: 352 Comm: reboot Not tainted 5.11.0-rc2-00309-g79e3faa7 #38
      [   66.688473] Hardware name: Qualcomm Technologies, Inc. Robotics RB5 (DT)
      [   66.695347] pstate: 60400005 (nZCv daif +PAN -UAO -TCO BTYPE=--)
      [   66.701507] pc : msm_atomic_commit_tail+0x78/0x4e0
      [   66.706437] lr : commit_tail+0xa4/0x184
      [   66.710381] sp : ffff8000108f3af0
      [   66.713791] x29: ffff8000108f3af0 x28: ffff418c44337000
      [   66.719242] x27: 0000000000000000 x26: ffff418c40a24490
      [   66.724693] x25: ffffd3a842a4f1a0 x24: 0000000000000008
      [   66.730146] x23: ffffd3a84313f030 x22: ffff418c444ce000
      [   66.735598] x21: ffff418c408a4980 x20: 0000000000000000
      [   66.741049] x19: 0000000000000000 x18: ffff800010710fbc
      [   66.746500] x17: 000000000000000c x16: 0000000000000001
      [   66.751954] x15: 0000000000010008 x14: 0000000000000068
      [   66.757405] x13: 0000000000000001 x12: 0000000000000000
      [   66.762855] x11: 0000000000000001 x10: 00000000000009b0
      [   66.768306] x9 : ffffd3a843192000 x8 : ffff418c44337000
      [   66.773757] x7 : 0000000000000000 x6 : 00000000a401b34e
      [   66.779210] x5 : 00ffffffffffffff x4 : 0000000000000000
      [   66.784660] x3 : 0000000000000000 x2 : ffff418c444ce000
      [   66.790111] x1 : ffffd3a841dce530 x0 : ffff418c444cf000
      [   66.795563] Call trace:
      [   66.798075]  msm_atomic_commit_tail+0x78/0x4e0
      [   66.802633]  commit_tail+0xa4/0x184
      [   66.806217]  drm_atomic_helper_commit+0x160/0x390
      [   66.811051]  drm_atomic_commit+0x4c/0x60
      [   66.815082]  drm_atomic_helper_disable_all+0x1f4/0x210
      [   66.820355]  drm_atomic_helper_shutdown+0x80/0x130
      [   66.825276]  msm_pdev_shutdown+0x14/0x20
      [   66.829303]  platform_shutdown+0x28/0x40
      [   66.833330]  device_shutdown+0x158/0x330
      [   66.837357]  kernel_restart+0x40/0xa0
      [   66.841122]  __do_sys_reboot+0x228/0x250
      [   66.845148]  __arm64_sys_reboot+0x28/0x34
      [   66.849264]  el0_svc_common.constprop.0+0x74/0x190
      [   66.854187]  do_el0_svc+0x24/0x90
      [   66.857595]  el0_svc+0x14/0x20
      [   66.860739]  el0_sync_handler+0x1a4/0x1b0
      [   66.864858]  el0_sync+0x174/0x180
      [   66.868269] Code: 1ac020a0 2a000273 eb02007f 54ffff01 (f9400285)
      [   66.874525] ---[ end trace 20dedb2a3229fec8 ]---
      
      Fixes: 9d5cbf5f ("drm/msm: add shutdown support for display platform_driver")
      Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Signed-off-by: default avatarFabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      623f279c
  6. 17 Mar, 2021 6 commits
  7. 14 Mar, 2021 12 commits
    • Linus Torvalds's avatar
      Linux 5.12-rc3 · 1e28eed1
      Linus Torvalds authored
      1e28eed1
    • Alexey Dobriyan's avatar
      prctl: fix PR_SET_MM_AUXV kernel stack leak · c995f12a
      Alexey Dobriyan authored
      Doing a
      
      	prctl(PR_SET_MM, PR_SET_MM_AUXV, addr, 1);
      
      will copy 1 byte from userspace to (quite big) on-stack array
      and then stash everything to mm->saved_auxv.
      AT_NULL terminator will be inserted at the very end.
      
      /proc/*/auxv handler will find that AT_NULL terminator
      and copy original stack contents to userspace.
      
      This devious scheme requires CAP_SYS_RESOURCE.
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c995f12a
    • Linus Torvalds's avatar
      Merge tag 'irq-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 70404fe3
      Linus Torvalds authored
      Pull irq fixes from Thomas Gleixner:
       "A set of irqchip updates:
      
         - Make the GENERIC_IRQ_MULTI_HANDLER configuration correct
      
         - Add a missing DT compatible string for the Ingenic driver
      
         - Remove the pointless debugfs_file pointer from struct irqdomain"
      
      * tag 'irq-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip/ingenic: Add support for the JZ4760
        dt-bindings/irq: Add compatible string for the JZ4760B
        irqchip: Do not blindly select CONFIG_GENERIC_IRQ_MULTI_HANDLER
        ARM: ep93xx: Select GENERIC_IRQ_MULTI_HANDLER directly
        irqdomain: Remove debugfs_file from struct irq_domain
      70404fe3
    • Linus Torvalds's avatar
      Merge tag 'timers-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 802b31c0
      Linus Torvalds authored
      Pull timer fix from Thomas Gleixner:
       "A single fix in for hrtimers to prevent an interrupt storm caused by
        the lack of reevaluation of the timers which expire in softirq context
        under certain circumstances, e.g. when the clock was set"
      
      * tag 'timers-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        hrtimer: Update softirq_expires_next correctly after __hrtimer_get_next_event()
      802b31c0
    • Linus Torvalds's avatar
      Merge tag 'sched-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c72cbc93
      Linus Torvalds authored
      Pull scheduler fixes from Thomas Gleixner:
       "A set of scheduler updates:
      
         - Prevent a NULL pointer dereference in the migration_stop_cpu()
           mechanims
      
         - Prevent self concurrency of affine_move_task()
      
         - Small fixes and cleanups related to task migration/affinity setting
      
         - Ensure that sync_runqueues_membarrier_state() is invoked on the
           current CPU when it is in the cpu mask"
      
      * tag 'sched-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/membarrier: fix missing local execution of ipi_sync_rq_state()
        sched: Simplify set_affinity_pending refcounts
        sched: Fix affine_move_task() self-concurrency
        sched: Optimize migration_cpu_stop()
        sched: Collate affine_move_task() stoppers
        sched: Simplify migration_cpu_stop()
        sched: Fix migration_cpu_stop() requeueing
      c72cbc93
    • Linus Torvalds's avatar
      Merge tag 'objtool-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 19469d2a
      Linus Torvalds authored
      Pull objtool fix from Thomas Gleixner:
       "A single objtool fix to handle the PUSHF/POPF validation correctly for
        the paravirt changes which modified arch_local_irq_restore not to use
        popf"
      
      * tag 'objtool-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool,x86: Fix uaccess PUSHF/POPF validation
      19469d2a
    • Linus Torvalds's avatar
      Merge tag 'locking-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fa509ff8
      Linus Torvalds authored
      Pull locking fixes from Thomas Gleixner:
       "A couple of locking fixes:
      
         - A fix for the static_call mechanism so it handles unaligned
           addresses correctly.
      
         - Make u64_stats_init() a macro so every instance gets a seperate
           lockdep key.
      
         - Make seqcount_latch_init() a macro as well to preserve the static
           variable which is used for the lockdep key"
      
      * tag 'locking-urgent-2021-03-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        seqlock,lockdep: Fix seqcount_latch_init()
        u64_stats,lockdep: Fix u64_stats_init() vs lockdep
        static_call: Fix the module key fixup
      fa509ff8
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v5.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 75013c6c
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Make sure PMU internal buffers are flushed for per-CPU events too and
         properly handle PID/TID for large PEBS.
      
       - Handle the case properly when there's no PMU and therefore return an
         empty list of perf MSRs for VMX to switch instead of reading random
         garbage from the stack.
      
      * tag 'perf_urgent_for_v5.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/perf: Use RET0 as default for guest_get_msrs to handle "no PMU" case
        perf/x86/intel: Set PERF_ATTACH_SCHED_CB for large PEBS and LBR
        perf/core: Flush PMU internal buffers for per-CPU events
      75013c6c
    • Linus Torvalds's avatar
      Merge tag 'efi-urgent-for-v5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 836d7f05
      Linus Torvalds authored
      Pull EFI fix from Ard Biesheuvel via Borislav Petkov:
       "Fix an oversight in the handling of EFI_RT_PROPERTIES_TABLE, which was
        added v5.10, but failed to take the SetVirtualAddressMap() RT service
        into account"
      
      * tag 'efi-urgent-for-v5.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi: stub: omit SetVirtualAddressMap() if marked unsupported in RT_PROP table
      836d7f05
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v5.12_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0a7c10df
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - A couple of SEV-ES fixes and robustifications: verify usermode stack
         pointer in NMI is not coming from the syscall gap, correctly track
         IRQ states in the #VC handler and access user insn bytes atomically
         in same handler as latter cannot sleep.
      
       - Balance 32-bit fast syscall exit path to do the proper work on exit
         and thus not confuse audit and ptrace frameworks.
      
       - Two fixes for the ORC unwinder going "off the rails" into KASAN
         redzones and when ORC data is missing.
      
      * tag 'x86_urgent_for_v5.12_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/sev-es: Use __copy_from_user_inatomic()
        x86/sev-es: Correctly track IRQ states in runtime #VC handler
        x86/sev-es: Check regs->sp is trusted before adjusting #VC IST stack
        x86/sev-es: Introduce ip_within_syscall_gap() helper
        x86/entry: Fix entry/exit mismatch on failed fast 32-bit syscalls
        x86/unwind/orc: Silence warnings caused by missing ORC data
        x86/unwind/orc: Disable KASAN checking in the ORC unwinder, part 2
      0a7c10df
    • Linus Torvalds's avatar
      Merge tag 'powerpc-5.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · c3c7579f
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       "Some more powerpc fixes for 5.12:
      
         - Fix wrong instruction encoding for lis in ppc_function_entry(),
           which could potentially lead to missed kprobes.
      
         - Fix SET_FULL_REGS on 32-bit and 64e, which prevented ptrace of
           non-volatile GPRs immediately after exec.
      
         - Clean up a missed SRR specifier in the recent interrupt rework.
      
         - Don't treat unrecoverable_exception() as an interrupt handler, it's
           called from other handlers so shouldn't do the interrupt entry/exit
           accounting itself.
      
         - Fix build errors caused by missing declarations for
           [en/dis]able_kernel_vsx().
      
        Thanks to Christophe Leroy, Daniel Axtens, Geert Uytterhoeven, Jiri
        Olsa, Naveen N. Rao, and Nicholas Piggin"
      
      * tag 'powerpc-5.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/traps: unrecoverable_exception() is not an interrupt handler
        powerpc: Fix missing declaration of [en/dis]able_kernel_vsx()
        powerpc/64s/exception: Clean up a missed SRR specifier
        powerpc: Fix inverted SET_FULL_REGS bitop
        powerpc/64s: Use symbolic macros for function entry encoding
        powerpc/64s: Fix instruction encoding for lis in ppc_function_entry()
      c3c7579f
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 9d0c8e79
      Linus Torvalds authored
      Pull KVM fixes from Paolo Bonzini:
       "More fixes for ARM and x86"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: LAPIC: Advancing the timer expiration on guest initiated write
        KVM: x86/mmu: Skip !MMU-present SPTEs when removing SP in exclusive mode
        KVM: kvmclock: Fix vCPUs > 64 can't be online/hotpluged
        kvm: x86: annotate RCU pointers
        KVM: arm64: Fix exclusive limit for IPA size
        KVM: arm64: Reject VM creation when the default IPA size is unsupported
        KVM: arm64: Ensure I-cache isolation between vcpus of a same VM
        KVM: arm64: Don't use cbz/adr with external symbols
        KVM: arm64: Fix range alignment when walking page tables
        KVM: arm64: Workaround firmware wrongly advertising GICv2-on-v3 compatibility
        KVM: arm64: Rename __vgic_v3_get_ich_vtr_el2() to __vgic_v3_get_gic_config()
        KVM: arm64: Don't access PMSELR_EL0/PMUSERENR_EL0 when no PMU is available
        KVM: arm64: Turn kvm_arm_support_pmu_v3() into a static key
        KVM: arm64: Fix nVHE hyp panic host context restore
        KVM: arm64: Avoid corrupting vCPU context register in guest exit
        KVM: arm64: nvhe: Save the SPE context early
        kvm: x86: use NULL instead of using plain integer as pointer
        KVM: SVM: Connect 'npt' module param to KVM's internal 'npt_enabled'
        KVM: x86: Ensure deadline timer has truly expired before posting its IRQ
      9d0c8e79