1. Apr 14, 2022
    • Stephen Boyd's avatar
      interconnect: qcom: sc7180: Drop IP0 interconnects · 2f372493
      Stephen Boyd authored
      The IPA BCM resource ("IP0") on sc7180 was moved to the clk-rpmh driver
      in commit bcd63d22 ("clk: qcom: rpmh: Add IPA clock for SC7180") and
      modeled as a clk, but this interconnect driver still had it modeled as
      an interconnect. This was mostly OK because nobody used the interconnect
      definition, until the interconnect framework started dropping bandwidth
      requests on interconnects that aren't used via the sync_state callback
      in commit 7d3b0b0d ("interconnect: qcom: Use icc_sync_state"). Once
      that patch was applied the IP0 resource was going to be controlled from
      two places, the clk framework and the interconnect framework.
      
      Even then, things were probably going to be OK, because commit
      b95b668e ("interconnect: qcom: icc-rpmh: Add BCMs to commit list in
      pre_aggregate") was needed to actually drop bandwidth requests on unused
      interconnects, of which the IPA was one of the interconnect that wasn't
      getting dropped to zero. Combining the three commits together leads to
      bad behavior where the interconnect framework is disabling the IP0
      resource because it has no users while the clk framework thinks the IP0
      resource is on because the only user, the IPA driver, has turned it on
      via clk_prepare_enable(). Depending on when sync_state is called, we can
      get into a situation like below:
      
        IPA driver probes
        IPA driver gets notified modem started
         runtime PM get()
          IPA clk enabled -> IP0 resource is ON
        sync_state runs
         interconnect zeroes out the IP0 resource -> IP0 resource is off
        IPA driver tries to access a register and blows up
      
      The crash is an unclocked access that manifest as an SError.
      
       SError Interrupt on CPU0, code 0xbe000011 -- SError
       CPU: 0 PID: 3595 Comm: mmdata_mgr Not tainted 5.17.1+ #166
       Hardware name: Google Lazor (rev1 - 2) with LTE (DT)
       pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : mutex_lock+0x4c/0x80
       lr : mutex_lock+0x30/0x80
       sp : ffffffc00da9b9c0
       x29: ffffffc00da9b9c0 x28: 0000000000000000 x27: 0000000000000000
       x26: ffffffc00da9bc90 x25: ffffff80c2024010 x24: ffffff80c2024000
       x23: ffffff8083100000 x22: ffffff80831000d0 x21: ffffff80831000a8
       x20: ffffff80831000a8 x19: ffffff8083100070 x18: 00000000ffff0a00
       x17: 000000002f7254f1 x16: 0000000000000100 x15: 0000000000000000
       x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
       x11: 000000000001f0b8 x10: ffffffc00931f0b8 x9 : 0000000000000000
       x8 : 0000000000000000 x7 : fefefefefeff2f60 x6 : 0000808080808080
       x5 : 0000000000000000 x4 : 8080808080800000 x3 : ffffff80d2d4ee28
       x2 : ffffff808c1d6e40 x1 : 0000000000000000 x0 : ffffff8083100070
       Kernel panic - not syncing: Asynchronous SError Interrupt
       CPU: 0 PID: 3595 Comm: mmdata_mgr Not tainted 5.17.1+ #166
       Hardware name: Google Lazor (rev1 - 2) with LTE (DT)
       Call trace:
        dump_backtrace+0xf4/0x114
        show_stack+0x24/0x30
        dump_stack_lvl+0x64/0x7c
        dump_stack+0x18/0x38
        panic+0x150/0x38c
        nmi_panic+0x88/0xa0
        arm64_serror_panic+0x74/0x80
        do_serror+0x0/0x80
        do_serror+0x58/0x80
        el1h_64_error_handler+0x34/0x4c
        el1h_64_error+0x78/0x7c
        mutex_lock+0x4c/0x80
        __gsi_channel_start+0x50/0x17c
        gsi_channel_start+0x54/0x90
        ipa_endpoint_enable_one+0x34/0xc0
        ipa_open+0x4c/0x120
      
      Remove all IP0 resource management from the interconnect driver so that
      clk-rpmh is the sole owner. This fixes the issue by preventing the
      interconnect driver from overwriting the IP0 resource data that the
      clk-rpmh driver wrote.
      
      Cc: Alex Elder <elder@linaro.org>
      Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
      Cc: Taniya Das <quic_tdas@quicinc.com>
      Cc: Mike Tipton <quic_mdtipton@quicinc.com>
      Fixes: b95b668e ("interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate")
      Fixes: bcd63d22 ("clk: qcom: rpmh: Add IPA clock for SC7180")
      Fixes: 7d3b0b0d
      
       ("interconnect: qcom: Use icc_sync_state")
      Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
      Tested-by: default avatarAlex Elder <elder@linaro.org>
      Reviewed-by: default avatarAlex Elder <elder@linaro.org>
      Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Link: https://lore.kernel.org/r/20220412220033.1273607-2-swboyd@chromium.org
      
      
      Signed-off-by: default avatarGeorgi Djakov <djakov@kernel.org>
      2f372493
  2. Apr 04, 2022
    • Linus Torvalds's avatar
      Linux 5.18-rc1 · 31231092
      Linus Torvalds authored
      31231092
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 09bb8856
      Linus Torvalds authored
      Pull more tracing updates from Steven Rostedt:
      
       - Rename the staging files to give them some meaning. Just
         stage1,stag2,etc, does not show what they are for
      
       - Check for NULL from allocation in bootconfig
      
       - Hold event mutex for dyn_event call in user events
      
       - Mark user events to broken (to work on the API)
      
       - Remove eBPF updates from user events
      
       - Remove user events from uapi header to keep it from being installed.
      
       - Move ftrace_graph_is_dead() into inline as it is called from hot
         paths and also convert it into a static branch.
      
      * tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Move user_events.h temporarily out of include/uapi
        ftrace: Make ftrace_graph_is_dead() a static branch
        tracing: Set user_events to BROKEN
        tracing/user_events: Remove eBPF interfaces
        tracing/user_events: Hold event_mutex during dyn_event_add
        proc: bootconfig: Add null pointer check
        tracing: Rename the staging files for trace_events
      09bb8856
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 34a53ff9
      Linus Torvalds authored
      Pull clk fix from Stephen Boyd:
       "A single revert to fix a boot regression seen when clk_put() started
        dropping rate range requests. It's best to keep various systems
        booting so we'll kick this out and try again next time"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        Revert "clk: Drop the rate range on clk_put()"
      34a53ff9
    • Linus Torvalds's avatar
      Merge tag 'x86-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8b5656bc
      Linus Torvalds authored
      Pull x86 fixes from Thomas Gleixner:
       "A set of x86 fixes and updates:
      
         - Make the prctl() for enabling dynamic XSTATE components correct so
           it adds the newly requested feature to the permission bitmap
           instead of overwriting it. Add a selftest which validates that.
      
         - Unroll string MMIO for encrypted SEV guests as the hypervisor
           cannot emulate it.
      
         - Handle supervisor states correctly in the FPU/XSTATE code so it
           takes the feature set of the fpstate buffer into account. The
           feature sets can differ between host and guest buffers. Guest
           buffers do not contain supervisor states. So far this was not an
           issue, but with enabling PASID it needs to be handled in the buffer
           offset calculation and in the permission bitmaps.
      
         - Avoid a gazillion of repeated CPUID invocations in by caching the
           values early in the FPU/XSTATE code.
      
         - Enable CONFIG_WERROR in x86 defconfig.
      
         - Make the X86 defconfigs more useful by adapting them to Y2022
           reality"
      
      * tag 'x86-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/fpu/xstate: Consolidate size calculations
        x86/fpu/xstate: Handle supervisor states in XSTATE permissions
        x86/fpu/xsave: Handle compacted offsets correctly with supervisor states
        x86/fpu: Cache xfeature flags from CPUID
        x86/fpu/xsave: Initialize offset/size cache early
        x86/fpu: Remove unused supervisor only offsets
        x86/fpu: Remove redundant XCOMP_BV initialization
        x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO
        x86/config: Make the x86 defconfigs a bit more usable
        x86/defconfig: Enable WERROR
        selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test
        x86/fpu/xstate: Fix the ARCH_REQ_XCOMP_PERM implementation
      8b5656bc
    • Linus Torvalds's avatar
      Merge tag 'core-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e235f419
      Linus Torvalds authored
      Pull RT signal fix from Thomas Gleixner:
       "Revert the RT related signal changes. They need to be reworked and
        generalized"
      
      * tag 'core-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Revert "signal, x86: Delay calling signals in atomic on RT enabled kernels"
      e235f419
    • Linus Torvalds's avatar
      Merge tag 'dma-mapping-5.18-1' of git://git.infradead.org/users/hch/dma-mapping · 63d12cc3
      Linus Torvalds authored
      Pull more dma-mapping updates from Christoph Hellwig:
      
       - fix a regression in dma remap handling vs AMD memory encryption (me)
      
       - finally kill off the legacy PCI DMA API (Christophe JAILLET)
      
      * tag 'dma-mapping-5.18-1' of git://git.infradead.org/users/hch/dma-mapping:
        dma-mapping: move pgprot_decrypted out of dma_pgprot
        PCI/doc: cleanup references to the legacy PCI DMA API
        PCI: Remove the deprecated "pci-dma-compat.h" API
      63d12cc3
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 5dee8721
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
      
       - avoid unnecessary rebuilds for library objects
      
       - fix return value of __setup handlers
      
       - fix invalid input check for "crashkernel=" kernel option
      
       - silence KASAN warnings in unwind_frame
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame()
        ARM: 9190/1: kdump: add invalid input check for 'crashkernel=0'
        ARM: 9187/1: JIVE: fix return value of __setup handler
        ARM: 9189/1: decompressor: fix unneeded rebuilds of library objects
      5dee8721
  3. Apr 03, 2022
  4. Apr 02, 2022