Skip to content
Snippets Groups Projects
  1. Jan 19, 2025
    • Linus Torvalds's avatar
      Linux 6.13 · ffd294d3
      Linus Torvalds authored
      v6.13
      ffd294d3
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9528d418
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Mark serialize() noinstr so that it can be used from instrumentation-
         free code
      
       - Make sure FRED's RSP0 MSR is synchronized with its corresponding
         per-CPU value in order to avoid double faults in hotplug scenarios
      
       - Disable EXECMEM_ROX on x86 for now because it didn't receive proper
         x86 maintainers review, went in and broke a bunch of things
      
      * tag 'x86_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/asm: Make serialize() always_inline
        x86/fred: Fix the FRED RSP0 MSR out of sync with its per-CPU cache
        x86: Disable EXECMEM_ROX support
      9528d418
    • Linus Torvalds's avatar
      Merge tag 'timers_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 25144ea3
      Linus Torvalds authored
      Pull timer fixes from Borislav Petkov:
      
       - Reset hrtimers correctly when a CPU hotplug state traversal happens
         "half-ways" and leaves hrtimers not (re-)initialized properly
      
       - Annotate accesses to a timer group's ignore flag to prevent KCSAN
         from raising data_race warnings
      
       - Make sure timer group initialization is visible to timer tree walkers
         and avoid a hypothetical race
      
       - Fix another race between CPU hotplug and idle entry/exit where timers
         on a fully idle system are getting ignored
      
       - Fix a case where an ignored signal is still being handled which it
         shouldn't be
      
      * tag 'timers_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        hrtimers: Handle CPU state correctly on hotplug
        timers/migration: Annotate accesses to ignore flag
        timers/migration: Enforce group initialization visibility to tree walkers
        timers/migration: Fix another race between hotplug and idle entry/exit
        signal/posixtimers: Handle ignore/blocked sequences correctly
      25144ea3
    • Linus Torvalds's avatar
      Merge tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b031457a
      Linus Torvalds authored
      Pull irq fixes from Borislav Petkov:
      
       - Fix an OF node leak in irqchip init's error handling path
      
       - Fix sunxi systems to wake up from suspend with an NMI by
         pressing the power button
      
       - Do not spuriously enable interrupts in gic-v3 in a nested
         interrupts-off section
      
       - Make sure gic-v3 handles properly a failure to enter a
         low power state
      
      * tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip: Plug a OF node reference leak in platform_irqchip_probe()
        irqchip/sunxi-nmi: Add missing SKIP_WAKE flag
        irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()
        irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly
      b031457a
    • Linus Torvalds's avatar
      Merge tag 'sched_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8ff6d472
      Linus Torvalds authored
      Pull scheduler fixes from Borislav Petkov:
      
       - Do not adjust the weight of empty group entities and avoid
         scheduling artifacts
      
       - Avoid scheduling lag by computing lag properly and thus address
         an EEVDF entity placement issue
      
      * tag 'sched_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/fair: Fix update_cfs_group() vs DELAY_DEQUEUE
        sched/fair: Fix EEVDF entity placement bug causing scheduling lag
      8ff6d472
  2. Jan 18, 2025
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.13-rc7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · fda5e3f2
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "Fix regression in GFP output in trace events
      
        It was reported that the GFP flags in trace events went from human
        readable to just their hex values:
      
            gfp_flags=GFP_HIGHUSER_MOVABLE|__GFP_COMP to gfp_flags=0x140cca
      
        This was caused by a change that added the use of enums in calculating
        the GFP flags.
      
        As defines get translated into their values in the trace event format
        files, the user space tooling could easily convert the GFP flags into
        their symbols via the __print_flags() helper macro.
      
        The problem is that enums do not get converted, and the names of the
        enums show up in the format files and user space tooling cannot
        translate them.
      
        Add TRACE_DEFINE_ENUM() around the enums used for GFP flags which is
        the tracing infrastructure macro that informs the tracing subsystem
        what the values for enums and it can then expose that to user space"
      
      * tag 'trace-v6.13-rc7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        tracing: gfp: Fix the GFP enum values shown for user space tracing tools
      fda5e3f2
  3. Jan 17, 2025
    • Linus Torvalds's avatar
      Merge tag 'devicetree-fixes-for-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 59552394
      Linus Torvalds authored
      Pull devicetree fixes from Rob Herring:
       "Another fix and testcase to avoid the newly added WARN in the case of
        non-translatable addresses"
      
      * tag 'devicetree-fixes-for-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        of/address: Fix WARN when attempting translating non-translatable addresses
        of/unittest: Add test that of_address_to_resource() fails on non-translatable address
      59552394
    • Linus Torvalds's avatar
      Merge tag 'soc-fixes-6.13-4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · ed9add2b
      Linus Torvalds authored
      Pull SoC fixes from Arnd Bergmann:
       "Two last minute fixes: one build issue on TI soc drivers, and a
        regression in the renesas reset controller driver"
      
      * tag 'soc-fixes-6.13-4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
        soc: ti: pruss: Fix pruss APIs
        reset: rzg2l-usbphy-ctrl: Assign proper of node to the allocated device
      ed9add2b
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v6.13-6' of... · 775a15ea
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v6.13-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
      
      Pull x86 platform driver fixes from Ilpo Järvinen:
      
       - dell-uart-backlight: Fix serdev race
      
       - lenovo-yoga-tab2-pro-1380-fastcharger: Fix serdev race
      
      * tag 'platform-drivers-x86-v6.13-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
        platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev race
        platform/x86: dell-uart-backlight: fix serdev race
      775a15ea
    • Linus Torvalds's avatar
      Merge tag 'mtd/fixes-for-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · 42f38ccb
      Linus Torvalds authored
      Pull mtd revert from Miquel Raynal:
       "Very late this cycle we identified a breakage that could potentially
        hit several spi controller drivers because of a change in the way the
        dummy cycles validity is checked.
      
        We do not know at the moment how to handle the situation properly, so
        we prefer to revert the faulty patch for the next release"
      
      * tag 'mtd/fixes-for-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
        Revert "mtd: spi-nor: core: replace dummy buswidth from addr to data"
      42f38ccb
    • Steven Rostedt's avatar
      tracing: gfp: Fix the GFP enum values shown for user space tracing tools · 60295b94
      Steven Rostedt authored
      Tracing tools like perf and trace-cmd read the /sys/kernel/tracing/events/*/*/format
      files to know how to parse the data and also how to print it. For the
      "print fmt" portion of that file, if anything uses an enum that is not
      exported to the tracing system, user space will not be able to parse it.
      
      The GFP flags use to be defines, and defines get translated in the print
      fmt sections. But now they are converted to use enums, which is not.
      
      The mm_page_alloc trace event format use to have:
      
        print fmt: "page=%p pfn=0x%lx order=%d migratetype=%d gfp_flags=%s",
          REC->pfn != -1UL ? (((struct page *)vmemmap_base) + (REC->pfn)) : ((void
          *)0), REC->pfn != -1UL ? REC->pfn : 0, REC->order, REC->migratetype,
          (REC->gfp_flags) ? __print_flags(REC->gfp_flags, "|", {( unsigned
          long)(((((((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u) |
          (( gfp_t)0x100000u)) | (( gfp_t)0x02u)) | (( gfp_t)0x08u) | (( gfp_t)0)) |
          (( gfp_t)0x40000u) | (( gfp_t)0x80000u) | (( gfp_t)0x2000u)) & ~((
          gfp_t)(0x400u|0x800u))) | (( gfp_t)0x400u)), "GFP_TRANSHUGE"}, {( unsigned
          long)((((((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u) |
          (( gfp_t)0x100000u)) | (( gfp_t)0x02u)) | (( gfp_t)0x08u) | (( gfp_t)0)) ...
      
      Where the GFP values are shown and not their names. But after the GFP
      flags were converted to use enums, it has:
      
        print fmt: "page=%p pfn=0x%lx order=%d migratetype=%d gfp_flags=%s",
          REC->pfn != -1UL ? (vmemmap + (REC->pfn)) : ((void *)0), REC->pfn != -1UL
          ? REC->pfn : 0, REC->order, REC->migratetype, (REC->gfp_flags) ?
          __print_flags(REC->gfp_flags, "|", {( unsigned long)((((((((
          gfp_t)(((((1UL))) << (___GFP_DIRECT_RECLAIM_BIT))|((((1UL))) <<
          (___GFP_KSWAPD_RECLAIM_BIT)))) | (( gfp_t)((((1UL))) << (___GFP_IO_BIT)))
          | (( gfp_t)((((1UL))) << (___GFP_FS_BIT))) | (( gfp_t)((((1UL))) <<
          (___GFP_HARDWALL_BIT)))) | (( gfp_t)((((1UL))) << (___GFP_HIGHMEM_BIT))))
          | (( gfp_t)((((1UL))) << (___GFP_MOVABLE_BIT))) | (( gfp_t)0)) | ((
          gfp_t)((((1UL))) << (___GFP_COMP_BIT))) ...
      
      Where the enums names like ___GFP_KSWAPD_RECLAIM_BIT are shown and not their
      values. User space has no way to convert these names to their values and
      the output will fail to parse. What is shown is now:
      
        mm_page_alloc:  page=0xffffffff981685f3 pfn=0x1d1ac1 order=0 migratetype=1 gfp_flags=0x140cca
      
      The TRACE_DEFINE_ENUM() macro was created to handle enums in the print fmt
      files. This causes them to be replaced at boot up with the numbers, so
      that user space tooling can parse it. By using this macro, the output is
      back to the human readable:
      
        mm_page_alloc: page=0xffffffff981685f3 pfn=0x122233 order=0 migratetype=1 gfp_flags=GFP_HIGHUSER_MOVABLE|__GFP_COMP
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Veronika  Molnarova <vmolnaro@redhat.com>
      Cc: Suren Baghdasaryan <surenb@google.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: https://lore.kernel.org/20250116214438.749504792@goodmis.org
      
      
      Reported-by: default avatarMichael Petlan <mpetlan@redhat.com>
      Closes: https://lore.kernel.org/all/87be5f7c-1a0-dad-daa0-54e342efaea7@redhat.com/
      
      
      Fixes: 772dd034 ("mm: enumerate all gfp flags")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      60295b94
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v6.13-rc8' of... · 07757eeb
      Linus Torvalds authored
      Merge tag 'hwmon-for-v6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - ltc2991, tmp513: Fix problems seen when dividing negative numbers
      
       - drivetemp: Handle large timeouts observed on some drives
      
       - acpi_power_meter: Fix loading the driver on platforms without _PMD
         method
      
      * tag 'hwmon-for-v6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (ltc2991) Fix mixed signed/unsigned in DIV_ROUND_CLOSEST
        hwmon: (drivetemp) Set scsi command timeout to 10s
        hwmon: (acpi_power_meter) Fix a check for the return value of read_domain_devices().
        hwmon: (tmp513) Fix division of negative numbers
      07757eeb
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 7fed891d
      Linus Torvalds authored
      Pull gpio fix from Bartosz Golaszewski:
      
       - convert regular spinlock to raw spinlock in gpio-xilinx to avoid a
         lockdep splat
      
      * tag 'gpio-fixes-for-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        gpio: xilinx: Convert gpio_lock to raw spinlock
      7fed891d
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 5e74b9bf
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
      
       - fix ref leak in the I2C core
      
       - fix remove notification in the address translator
      
       - missing error check in the pinctrl demuxer (plus a typo fix)
      
       - fix NAK handling when Linux is testunit target
      
       - fix NAK handling for the Renesas R-Car controller when it is a target
      
      * tag 'i2c-for-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: testunit: on errors, repeat NACK until STOP
        i2c: rcar: fix NACK handling when being a target
        i2c: mux: demux-pinctrl: correct comment
        i2c: mux: demux-pinctrl: check initial mux selection, too
        i2c: atr: Fix client detach
        i2c: core: fix reference leak in i2c_register_adapter()
      5e74b9bf
    • Linus Torvalds's avatar
      Merge tag 'pmdomain-v6.13-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm · 4b040f0a
      Linus Torvalds authored
      Pull pmdomain fix from Ulf Hansson:
      
       - imx8mp-blk-ctrl: Add missing loop break condition
      
      * tag 'pmdomain-v6.13-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
        pmdomain: imx8mp-blk-ctrl: add missing loop break condition
      4b040f0a
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2025-01-16-21-11' of... · ad26fc09
      Linus Torvalds authored
      Merge tag 'mm-hotfixes-stable-2025-01-16-21-11' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
      
      Pull misc fixes from Andrew Morton:
       "7 singleton hotfixes.  6 are MM.
      
        Two are cc:stable and the remainder address post-6.12 issues"
      
      * tag 'mm-hotfixes-stable-2025-01-16-21-11' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
        ocfs2: check dir i_size in ocfs2_find_entry
        mailmap: update entry for Ethan Carter Edwards
        mm: zswap: move allocations during CPU init outside the lock
        mm: khugepaged: fix call hpage_collapse_scan_file() for anonymous vma
        mm: shmem: use signed int for version handling in casefold option
        alloc_tag: skip pgalloc_tag_swap if profiling is disabled
        mm: page_alloc: fix missed updates of lowmem_reserve in adjust_managed_page_count
      ad26fc09
    • Linus Torvalds's avatar
      Merge tag '6.13-rc7-SMB3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 9ca27296
      Linus Torvalds authored
      Pull smb client fixes from Steve French:
      
       - fix double free when reconnect racing with closing session
      
       - fix SMB1 reconnect with password rotation
      
      * tag '6.13-rc7-SMB3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        smb: client: fix double free of TCP_Server_Info::hostname
        cifs: support reconnect with alternate password for SMB1
      9ca27296
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2025-01-17' of https://gitlab.freedesktop.org/drm/kernel · 9bffa1ad
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Final(?) set of fixes for 6.13, I think the holidays finally caught up
        with everyone, the misc changes are 2 weeks worth, otherwise amdgpu
        and xe are most of it. The largest pieces is a new test so I'm not too
        worried about that.
      
        kunit:
         - Fix W=1 build for kunit tests
      
        bridge:
         - Handle YCbCr420 better in bridge code, with tests
         - itee-it6263 error handling fix
      
        amdgpu:
         - SMU 13 fix
         - DP MST fixes
         - DCN 3.5 fix
         - PSR fixes
         - eDP fix
         - VRR fix
         - Enforce isolation fixes
         - GFX 12 fix
         - PSP 14.x fix
      
        xe:
         - Add steering info support for GuC register lists
         - Add means to wait for reset and synchronous reset
         - Make changing ccs_mode a synchronous action
         - Add missing mux registers
         - Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU
      
        i915:
         - Relax clear color alignment to 64 bytes [fb]
      
        v3d:
         - Fix warn when unloading v3d
      
        nouveau:
         - Fix cross-device fence handling in nouveau
         - Fix backlight regression for macbooks 5,1
      
        vmwgfx:
         - Fix BO reservation handling in vmwgfx"
      
      * tag 'drm-fixes-2025-01-17' of https://gitlab.freedesktop.org/drm/kernel: (33 commits)
        drm/xe: Mark ComputeCS read mode as UC on iGPU
        drm/xe/oa: Add missing VISACTL mux registers
        drm/xe: make change ccs_mode a synchronous action
        drm/xe: introduce xe_gt_reset and xe_gt_wait_for_reset
        drm/xe/guc: Adding steering info support for GuC register lists
        drm/bridge: ite-it6263: Prevent error pointer dereference in probe()
        drm/v3d: Ensure job pointer is set to NULL after job completion
        drm/vmwgfx: Add new keep_resv BO param
        drm/vmwgfx: Remove busy_places
        drm/vmwgfx: Unreserve BO on error
        drm/amdgpu: fix fw attestation for MP0_14_0_{2/3}
        drm/amdgpu: always sync the GFX pipe on ctx switch
        drm/amdgpu: disable gfxoff with the compute workload on gfx12
        drm/amdgpu: Fix Circular Locking Dependency in AMDGPU GFX Isolation
        drm/i915/fb: Relax clear color alignment to 64 bytes
        drm/amd/display: Disable replay and psr while VRR is enabled
        drm/amd/display: Fix PSR-SU not support but still call the amdgpu_dm_psr_enable
        nouveau/fence: handle cross device fences properly
        drm/tests: connector: Add ycbcr_420_allowed tests
        drm/connector: hdmi: Validate supported_formats matches ycbcr_420_allowed
        ...
      9bffa1ad
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.13-20250116' of git://git.kernel.dk/linux · a634dda2
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "One fix for the error handling in buffer cloning, and one fix for the
        ring resizing.
      
        Two minor followups for the latter as well.
      
        Both of these issues only affect 6.13, so not marked for stable"
      
      * tag 'io_uring-6.13-20250116' of git://git.kernel.dk/linux:
        io_uring/register: cache old SQ/CQ head reading for copies
        io_uring/register: document io_register_resize_rings() shared mem usage
        io_uring/register: use stable SQ/CQ ring data during resize
        io_uring/rsrc: fixup io_clone_buffers() error handling
      a634dda2
    • Dave Airlie's avatar
      Merge tag 'drm-xe-fixes-2025-01-16' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes · 9b1c673a
      Dave Airlie authored
      
      Driver Changes:
      - Add steering info support for GuC register lists (Jesus Narvaez)
      - Add means to wait for reset and synchronous reset (Maciej)
      - Make changing ccs_mode a synchronous action (Maciej)
      - Add missing mux registers (Ashutosh)
      - Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU (Matt Brost)
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/Z4ll3F1anLEwCvrf@fedora
      9b1c673a
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · f692a6c6
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
      
       - Fix a regression in the irqsoff and wakeup latency tracing
      
         The function graph tracer infrastructure has become generic so that
         fprobes and BPF can be based on it. As it use to only handle function
         graph tracing, it would always calculate the time the function
         entered so that it could then calculate the time it exits and give
         the length of time the function executed for. But this is not needed
         for the other users (fprobes and BPF) and reading the clock adds a
         non-negligible overhead, so the calculation was moved into the
         function graph tracer logic.
      
         But the irqsoff and wakeup latency tracers, when the "display-graph"
         option was set, would use the function graph tracer to calculate the
         times of functions during the latency. The movement of the calltime
         calculation made the value zero for these tracers, and the output no
         longer showed the length of time of each tracer, but instead the
         absolute timestamp of when the function returned (rettime - calltime
         where calltime is now zero).
      
         Have the irqsoff and wakeup latency tracers also do the calltime
         calculation as the function graph tracer does and report the proper
         length of the function timings.
      
       - Update the tracing display to reflect the new preempt lazy model
      
         When the system is configured with preempt lazy, the output of the
         trace data would state "unknown" for the current preemption model.
         Because the lazy preemption model was just added, make it known to
         the tracing subsystem too. This is just a one line change.
      
       - Document multiple function graph having slightly different timings
      
         Now that function graph tracer infrastructure is separate, this also
         allows the function graph tracer to run in multiple instances (it
         wasn't able to do so before). If two instances ran the function graph
         tracer and traced the same functions, the timings for them will be
         slightly different because each does their own timings and collects
         the timestamps differently. Document this to not have people be
         confused by it.
      
      * tag 'trace-v6.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        ftrace: Document that multiple function_graph tracing may have different times
        tracing: Print lazy preemption model
        tracing: Fix irqsoff and wakeup latency tracers when using function graph
      f692a6c6
  4. Jan 16, 2025
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2025-01-15' of... · cfaf51ad
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2025-01-15' of https://gitlab.freedesktop.org/drm/i915/kernel
      
       into drm-fixes
      
      - Relax clear color alignment to 64 bytes [fb] (Ville Syrjälä)
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Tvrtko Ursulin <tursulin@igalia.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/Z4fdIVf68qsqIpiN@linux
      cfaf51ad
    • Matthew Brost's avatar
      drm/xe: Mark ComputeCS read mode as UC on iGPU · b1231ff7
      Matthew Brost authored
      
      RING_CMD_CCTL read index should be UC on iGPU parts due to L3 caching
      structure. Having this as WB blocks ULLS from being enabled. Change to
      UC to unblock ULLS on iGPU.
      
      v2:
       - Drop internal communications commnet, bspec is updated
      
      Cc: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
      Cc: Michal Mrozek <michal.mrozek@intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: stable@vger.kernel.org
      Fixes: 328e089b ("drm/xe: Leverage ComputeCS read L3 caching")
      Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
      Acked-by: default avatarMichal Mrozek <michal.mrozek@intel.com>
      Reviewed-by: default avatarStuart Summers <stuart.summers@intel.com>
      Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20250114002507.114087-1-matthew.brost@intel.com
      
      
      (cherry picked from commit 758debf35b9cda5450e40996991a6e4b222899bd)
      Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
      b1231ff7
    • Linus Torvalds's avatar
      Merge tag 'net-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · ce69b401
      Linus Torvalds authored
      Pull networking fixes from Paolo Abeni:
       "Notably this includes fixes for a few regressions spotted very
        recently. No known outstanding ones.
      
        Current release - regressions:
      
         - core: avoid CFI problems with sock priv helpers
      
         - xsk: bring back busy polling support
      
         - netpoll: ensure skb_pool list is always initialized
      
        Current release - new code bugs:
      
         - core: make page_pool_ref_netmem work with net iovs
      
         - ipv4: route: fix drop reason being overridden in
           ip_route_input_slow
      
         - udp: make rehash4 independent in udp_lib_rehash()
      
        Previous releases - regressions:
      
         - bpf: fix bpf_sk_select_reuseport() memory leak
      
         - openvswitch: fix lockup on tx to unregistering netdev with carrier
      
         - mptcp: be sure to send ack when mptcp-level window re-opens
      
         - eth:
            - bnxt: always recalculate features after XDP clearing, fix
              null-deref
            - mlx5: fix sub-function add port error handling
            - fec: handle page_pool_dev_alloc_pages error
      
        Previous releases - always broken:
      
         - vsock: some fixes due to transport de-assignment
      
         - eth:
            - ice: fix E825 initialization
            - mlx5e: fix inversion dependency warning while enabling IPsec
              tunnel
            - gtp: destroy device along with udp socket's netns dismantle.
            - xilinx: axienet: Fix IRQ coalescing packet count overflow"
      
      * tag 'net-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (44 commits)
        netdev: avoid CFI problems with sock priv helpers
        net/mlx5e: Always start IPsec sequence number from 1
        net/mlx5e: Rely on reqid in IPsec tunnel mode
        net/mlx5e: Fix inversion dependency warning while enabling IPsec tunnel
        net/mlx5: Clear port select structure when fail to create
        net/mlx5: SF, Fix add port error handling
        net/mlx5: Fix a lockdep warning as part of the write combining test
        net/mlx5: Fix RDMA TX steering prio
        net: make page_pool_ref_netmem work with net iovs
        net: ethernet: xgbe: re-add aneg to supported features in PHY quirks
        net: pcs: xpcs: actively unset DW_VR_MII_DIG_CTRL1_2G5_EN for 1G SGMII
        net: pcs: xpcs: fix DW_VR_MII_DIG_CTRL1_2G5_EN bit being set for 1G SGMII w/o inband
        selftests: net: Adapt ethtool mq tests to fix in qdisc graft
        net: fec: handle page_pool_dev_alloc_pages error
        net: netpoll: ensure skb_pool list is always initialized
        net: xilinx: axienet: Fix IRQ coalescing packet count overflow
        nfp: bpf: prevent integer overflow in nfp_bpf_event_output()
        selftests: mptcp: avoid spurious errors on disconnect
        mptcp: fix spurious wake-up on under memory pressure
        mptcp: be sure to send ack when mptcp-level window re-opens
        ...
      ce69b401
    • Linus Torvalds's avatar
      Merge tag 'pm-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 6b4ccf11
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "Update the documentation of cpuidle governors that does not match the
        code any more after previous functional changes (Rafael Wysocki) and
        fix up the cpufreq Kconfig file broken inadvertently by a previous
        update (Viresh Kumar)"
      
      * tag 'pm-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq: Move endif to the end of Kconfig file
        cpuidle: teo: Update documentation after previous changes
        cpuidle: menu: Update documentation after previous changes
      6b4ccf11
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 5d5c4787
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Prevent acpi_video_device_EDID() from returning a pointer to a memory
        region that should not be passed to kfree() which causes one of its
        users to crash randomly on attempts to free it (Chris Bainbridge)"
      
      * tag 'acpi-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: video: Fix random crashes due to bad kfree()
      5d5c4787
    • Linus Torvalds's avatar
      Merge tag 'for-6.13-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · ed8fd8d5
      Linus Torvalds authored
      Pull btrfs fix from David Sterba:
      
       - handle d_path() errors when canonicalizing device mapper paths during
         device scan
      
      * tag 'for-6.13-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: add the missing error handling inside get_canonical_dev_path
      ed8fd8d5
    • Juergen Gross's avatar
      x86/asm: Make serialize() always_inline · ae02ae16
      Juergen Gross authored
      In order to allow serialize() to be used from noinstr code, make it
      __always_inline.
      
      Fixes: 0ef8047b ("x86/static-call: provide a way to do very early static-call updates")
      Closes: https://lore.kernel.org/oe-kbuild-all/202412181756.aJvzih2K-lkp@intel.com/
      
      
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Link: https://lore.kernel.org/r/20241218100918.22167-1-jgross@suse.com
      ae02ae16
    • Xiaolei Wang's avatar
      pmdomain: imx8mp-blk-ctrl: add missing loop break condition · 726efa92
      Xiaolei Wang authored
      
      Currently imx8mp_blk_ctrl_remove() will continue the for loop
      until an out-of-bounds exception occurs.
      
      pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : dev_pm_domain_detach+0x8/0x48
      lr : imx8mp_blk_ctrl_shutdown+0x58/0x90
      sp : ffffffc084f8bbf0
      x29: ffffffc084f8bbf0 x28: ffffff80daf32ac0 x27: 0000000000000000
      x26: ffffffc081658d78 x25: 0000000000000001 x24: ffffffc08201b028
      x23: ffffff80d0db9490 x22: ffffffc082340a78 x21: 00000000000005b0
      x20: ffffff80d19bc180 x19: 000000000000000a x18: ffffffffffffffff
      x17: ffffffc080a39e08 x16: ffffffc080a39c98 x15: 4f435f464f006c72
      x14: 0000000000000004 x13: ffffff80d0172110 x12: 0000000000000000
      x11: ffffff80d0537740 x10: ffffff80d05376c0 x9 : ffffffc0808ed2d8
      x8 : ffffffc084f8bab0 x7 : 0000000000000000 x6 : 0000000000000000
      x5 : ffffff80d19b9420 x4 : fffffffe03466e60 x3 : 0000000080800077
      x2 : 0000000000000000 x1 : 0000000000000001 x0 : 0000000000000000
      Call trace:
       dev_pm_domain_detach+0x8/0x48
       platform_shutdown+0x2c/0x48
       device_shutdown+0x158/0x268
       kernel_restart_prepare+0x40/0x58
       kernel_kexec+0x58/0xe8
       __do_sys_reboot+0x198/0x258
       __arm64_sys_reboot+0x2c/0x40
       invoke_syscall+0x5c/0x138
       el0_svc_common.constprop.0+0x48/0xf0
       do_el0_svc+0x24/0x38
       el0_svc+0x38/0xc8
       el0t_64_sync_handler+0x120/0x130
       el0t_64_sync+0x190/0x198
      Code: 8128c2d0 ffffffc0 aa1e03e9 d503201f
      
      Fixes: 556f5cf9 ("soc: imx: add i.MX8MP HSIO blk-ctrl")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarXiaolei Wang <xiaolei.wang@windriver.com>
      Reviewed-by: default avatarLucas Stach <l.stach@pengutronix.de>
      Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
      Reviewed-by: default avatarFrank Li <Frank.Li@nxp.com>
      Link: https://lore.kernel.org/r/20250115014118.4086729-1-xiaolei.wang@windriver.com
      
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      726efa92
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · 3744b084
      Rafael J. Wysocki authored
      Merge a cpufreq fix for 6.13:
      
       - Fix cpufreq Kconfig breakage after previous changes (Viresh Kumar).
      
      * pm-cpufreq:
        cpufreq: Move endif to the end of Kconfig file
      3744b084
    • Jakub Kicinski's avatar
      netdev: avoid CFI problems with sock priv helpers · a50da365
      Jakub Kicinski authored
      
      Li Li reports that casting away callback type may cause issues
      for CFI. Let's generate a small wrapper for each callback,
      to make sure compiler sees the anticipated types.
      
      Reported-by: default avatarLi Li <dualli@chromium.org>
      Link: https://lore.kernel.org/CANBPYPjQVqmzZ4J=rVQX87a9iuwmaetULwbK_5_3YWk2eGzkaA@mail.gmail.com
      
      
      Fixes: 170aafe3 ("netdev: support binding dma-buf to netdevice")
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Reviewed-by: default avatarMina Almasry <almasrymina@google.com>
      Link: https://patch.msgid.link/20250115161436.648646-1-kuba@kernel.org
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      a50da365
    • Koichiro Den's avatar
      hrtimers: Handle CPU state correctly on hotplug · 2f8dea16
      Koichiro Den authored
      
      Consider a scenario where a CPU transitions from CPUHP_ONLINE to halfway
      through a CPU hotunplug down to CPUHP_HRTIMERS_PREPARE, and then back to
      CPUHP_ONLINE:
      
      Since hrtimers_prepare_cpu() does not run, cpu_base.hres_active remains set
      to 1 throughout. However, during a CPU unplug operation, the tick and the
      clockevents are shut down at CPUHP_AP_TICK_DYING. On return to the online
      state, for instance CFS incorrectly assumes that the hrtick is already
      active, and the chance of the clockevent device to transition to oneshot
      mode is also lost forever for the CPU, unless it goes back to a lower state
      than CPUHP_HRTIMERS_PREPARE once.
      
      This round-trip reveals another issue; cpu_base.online is not set to 1
      after the transition, which appears as a WARN_ON_ONCE in enqueue_hrtimer().
      
      Aside of that, the bulk of the per CPU state is not reset either, which
      means there are dangling pointers in the worst case.
      
      Address this by adding a corresponding startup() callback, which resets the
      stale per CPU state and sets the online flag.
      
      [ tglx: Make the new callback unconditionally available, remove the online
        	modification in the prepare() callback and clear the remaining
        	state in the starting callback instead of the prepare callback ]
      
      Fixes: 5c0930cc ("hrtimers: Push pending hrtimers away from outgoing CPU earlier")
      Signed-off-by: default avatarKoichiro Den <koichiro.den@canonical.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/all/20241220134421.3809834-1-koichiro.den@canonical.com
      2f8dea16
    • Frederic Weisbecker's avatar
      timers/migration: Annotate accesses to ignore flag · 922efd29
      Frederic Weisbecker authored
      
      The group's ignore flag is:
      
      _ read under the group's lock (idle entry, remote expiry)
      _ turned on/off under the group's lock (idle entry, remote expiry)
      _ turned on locklessly on idle exit
      
      When idle entry or remote expiry clear the "ignore" flag of a group, the
      operation must be synchronized against other concurrent idle entry or
      remote expiry to make sure the related group timer is never missed. To
      enforce this synchronization, both "ignore" clear and read are
      performed under the group lock.
      
      On the contrary, whether idle entry or remote expiry manage to observe
      the "ignore" flag turned on by a CPU exiting idle is a matter of
      optimization. If that flag set is missed or cleared concurrently, the
      worst outcome is a migrator wasting time remotely handling a "ghost"
      timer. This is why the ignore flag can be set locklessly.
      
      Unfortunately, the related lockless accesses are bare and miss
      appropriate annotations. KCSAN rightfully complains:
      
      		 BUG: KCSAN: data-race in __tmigr_cpu_activate / print_report
      
      		 write to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 0:
      		 __tmigr_cpu_activate
      		 tmigr_cpu_activate
      		 timer_clear_idle
      		 tick_nohz_restart_sched_tick
      		 tick_nohz_idle_exit
      		 do_idle
      		 cpu_startup_entry
      		 kernel_init
      		 do_initcalls
      		 clear_bss
      		 reserve_bios_regions
      		 common_startup_64
      
      		 read to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 1:
      		 print_report
      		 kcsan_report_known_origin
      		 kcsan_setup_watchpoint
      		 tmigr_next_groupevt
      		 tmigr_update_events
      		 tmigr_inactive_up
      		 __walk_groups+0x50/0x77
      		 walk_groups
      		 __tmigr_cpu_deactivate
      		 tmigr_cpu_deactivate
      		 __get_next_timer_interrupt
      		 timer_base_try_to_set_idle
      		 tick_nohz_stop_tick
      		 tick_nohz_idle_stop_tick
      		 cpuidle_idle_call
      		 do_idle
      
      Although the relevant accesses could be marked as data_race(), the
      "ignore" flag being read several times within the same
      tmigr_update_events() function is confusing and error prone. Prefer
      reading it once in that function and make use of similar/paired accesses
      elsewhere with appropriate comments when necessary.
      
      Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
      Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Link: https://lore.kernel.org/all/20250114231507.21672-4-frederic@kernel.org
      Closes: https://lore.kernel.org/oe-lkp/202501031612.62e0c498-lkp@intel.com
      922efd29
    • Frederic Weisbecker's avatar
      timers/migration: Enforce group initialization visibility to tree walkers · de3ced72
      Frederic Weisbecker authored
      
      Commit 2522c84db513 ("timers/migration: Fix another race between hotplug
      and idle entry/exit") fixed yet another race between idle exit and CPU
      hotplug up leading to a wrong "0" value migrator assigned to the top
      level. However there is yet another situation that remains unhandled:
      
               [GRP0:0]
            migrator  = TMIGR_NONE
            active    = NONE
            groupmask = 1
            /     \      \
           0       1     2..7
         idle      idle   idle
      
      0) The system is fully idle.
      
               [GRP0:0]
            migrator  = CPU 0
            active    = CPU 0
            groupmask = 1
            /     \      \
           0       1     2..7
         active   idle   idle
      
      1) CPU 0 is activating. It has done the cmpxchg on the top's ->migr_state
      but it hasn't yet returned to __walk_groups().
      
               [GRP0:0]
            migrator  = CPU 0
            active    = CPU 0, CPU 1
            groupmask = 1
            /     \      \
           0       1     2..7
         active  active  idle
      
      2) CPU 1 is activating. CPU 0 stays the migrator (still stuck in
      __walk_groups(), delayed by #VMEXIT for example).
      
                          [GRP1:0]
                      migrator = TMIGR_NONE
                      active   = NONE
                      groupmask = 1
                   /                   \
               [GRP0:0]                  [GRP0:1]
            migrator  = CPU 0           migrator = TMIGR_NONE
            active    = CPU 0, CPU1     active   = NONE
            groupmask = 1               groupmask = 2
            /     \      \
           0       1     2..7                   8
         active  active  idle                !online
      
      3) CPU 8 is preparing to boot. CPUHP_TMIGR_PREPARE is being ran by CPU 1
      which has created the GRP0:1 and the new top GRP1:0 connected to GRP0:1
      and GRP0:0. CPU 1 hasn't yet propagated its activation up to GRP1:0.
      
                          [GRP1:0]
                     migrator = GRP0:0
                     active   = GRP0:0
                     groupmask = 1
                   /                   \
               [GRP0:0]                  [GRP0:1]
           migrator  = CPU 0           migrator = TMIGR_NONE
           active    = CPU 0, CPU1     active   = NONE
           groupmask = 1               groupmask = 2
           /     \      \
          0       1     2..7                   8
        active  active  idle                !online
      
      4) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
      returning from tmigr_cpu_active(). The new top GRP1:0 is visible and
      fetched and the pre-initialized groupmask of GRP0:0 is also visible.
      As a result tmigr_active_up() is called to GRP1:0 with GRP0:0 as active
      and migrator. CPU 0 is returning to __walk_groups() but suffers again
      a #VMEXIT.
      
                          [GRP1:0]
                     migrator = GRP0:0
                     active   = GRP0:0
                     groupmask = 1
                   /                   \
               [GRP0:0]                  [GRP0:1]
           migrator  = CPU 0           migrator = TMIGR_NONE
           active    = CPU 0, CPU1     active   = NONE
           groupmask = 1               groupmask = 2
           /     \      \
          0       1     2..7                   8
        active  active  idle                 !online
      
      5) CPU 1 propagates its activation of GRP0:0 to GRP1:0. This has no
         effect since CPU 0 did it already.
      
                          [GRP1:0]
                     migrator = GRP0:0
                     active   = GRP0:0, GRP0:1
                     groupmask = 1
                   /                   \
               [GRP0:0]                  [GRP0:1]
           migrator  = CPU 0           migrator = CPU 8
           active    = CPU 0, CPU1     active   = CPU 8
           groupmask = 1               groupmask = 2
           /     \      \                     \
          0       1     2..7                   8
        active  active  idle                 active
      
      6) CPU 1 links CPU 8 to its group. CPU 8 boots and goes through
         CPUHP_AP_TMIGR_ONLINE which propagates activation.
      
                                         [GRP2:0]
                                    migrator = TMIGR_NONE
                                    active   = NONE
                                    groupmask = 1
                                   /                \
                          [GRP1:0]                    [GRP1:1]
                     migrator = GRP0:0              migrator = TMIGR_NONE
                     active   = GRP0:0, GRP0:1      active   = NONE
                     groupmask = 1                  groupmask = 2
                   /                   \
               [GRP0:0]                  [GRP0:1]                [GRP0:2]
           migrator  = CPU 0           migrator = CPU 8        migrator = TMIGR_NONE
           active    = CPU 0, CPU1     active   = CPU 8        active   = NONE
           groupmask = 1               groupmask = 2           groupmask = 0
           /     \      \                     \
          0       1     2..7                   8                  64
        active  active  idle                 active             !online
      
      7) CPU 64 is booting. CPUHP_TMIGR_PREPARE is being ran by CPU 1
      which has created the GRP1:1, GRP0:2 and the new top GRP2:0 connected to
      GRP1:1 and GRP1:0. CPU 1 hasn't yet propagated its activation up to
      GRP2:0.
      
                                         [GRP2:0]
                                    migrator = 0 (!!!)
                                    active   = NONE
                                    groupmask = 1
                                   /                \
                          [GRP1:0]                    [GRP1:1]
                     migrator = GRP0:0              migrator = TMIGR_NONE
                     active   = GRP0:0, GRP0:1      active   = NONE
                     groupmask = 1                  groupmask = 2
                   /                   \
               [GRP0:0]                  [GRP0:1]                [GRP0:2]
           migrator  = CPU 0           migrator = CPU 8        migrator = TMIGR_NONE
           active    = CPU 0, CPU1     active   = CPU 8        active   = NONE
           groupmask = 1               groupmask = 2           groupmask = 0
           /     \      \                     \
          0       1     2..7                   8                  64
        active  active  idle                 active             !online
      
      8) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
      returning from tmigr_cpu_active(). The new top GRP2:0 is visible and
      fetched but the pre-initialized groupmask of GRP1:0 is not because no
      ordering made its initialization visible. As a result tmigr_active_up()
      may be called to GRP2:0 with a "0" child's groumask. Leaving the timers
      ignored for ever when the system is fully idle.
      
      The race is highly theoretical and perhaps impossible in practice but
      the groupmask of the child is not the only concern here as the whole
      initialization of the child is not guaranteed to be visible to any
      tree walker racing against hotplug (idle entry/exit, remote handling,
      etc...). Although the current code layout seem to be resilient to such
      hazards, this doesn't tell much about the future.
      
      Fix this with enforcing address dependency between group initialization
      and the write/read to the group's parent's pointer. Fortunately that
      doesn't involve any barrier addition in the fast paths.
      
      Fixes: 10a0e6f3 ("timers/migration: Move hierarchy setup into cpuhotplug prepare callback")
      Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/all/20250114231507.21672-3-frederic@kernel.org
      de3ced72
    • Frederic Weisbecker's avatar
      timers/migration: Fix another race between hotplug and idle entry/exit · b729cc1e
      Frederic Weisbecker authored
      
      Commit 10a0e6f3 ("timers/migration: Move hierarchy setup into
      cpuhotplug prepare callback") fixed a race between idle exit and CPU
      hotplug up leading to a wrong "0" value migrator assigned to the top
      level. However there is still a situation that remains unhandled:
      
               [GRP0:0]
              migrator  = TMIGR_NONE
              active    = NONE
              groupmask = 0
              /     \      \
             0       1     2..7
           idle      idle   idle
      
      0) The system is fully idle.
      
               [GRP0:0]
              migrator  = CPU 0
              active    = CPU 0
              groupmask = 0
              /     \      \
             0       1     2..7
           active   idle   idle
      
      1) CPU 0 is activating. It has done the cmpxchg on the top's ->migr_state
      but it hasn't yet returned to __walk_groups().
      
               [GRP0:0]
              migrator  = CPU 0
              active    = CPU 0, CPU 1
              groupmask = 0
              /     \      \
             0       1     2..7
           active  active  idle
      
      2) CPU 1 is activating. CPU 0 stays the migrator (still stuck in
      __walk_groups(), delayed by #VMEXIT for example).
      
                       [GRP1:0]
                    migrator = TMIGR_NONE
                    active   = NONE
                    groupmask = 0
                    /                  \
              [GRP0:0]                      [GRP0:1]
             migrator  = CPU 0           migrator = TMIGR_NONE
             active    = CPU 0, CPU1     active   = NONE
             groupmask = 2               groupmask = 1
             /     \      \
            0       1     2..7                   8
          active  active  idle              !online
      
      3) CPU 8 is preparing to boot. CPUHP_TMIGR_PREPARE is being ran by CPU 1
      which has created the GRP0:1 and the new top GRP1:0 connected to GRP0:1
      and GRP0:0. The groupmask of GRP0:0 is now 2. CPU 1 hasn't yet
      propagated its activation up to GRP1:0.
      
                       [GRP1:0]
                    migrator = 0 (!!!)
                    active   = NONE
                    groupmask = 0
                    /                  \
              [GRP0:0]                  [GRP0:1]
             migrator  = CPU 0           migrator = TMIGR_NONE
             active    = CPU 0, CPU1     active   = NONE
             groupmask = 2               groupmask = 1
             /     \      \
            0       1     2..7                   8
          active  active  idle                !online
      
      4) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
      returning from tmigr_cpu_active(). The new top GRP1:0 is visible and
      fetched but the freshly updated groupmask of GRP0:0 may not be visible
      due to lack of ordering! As a result tmigr_active_up() is called to
      GRP0:0 with a child's groupmask of "0". This buggy "0" groupmask then
      becomes the migrator for GRP1:0 forever. As a result, timers on a fully
      idle system get ignored.
      
      One possible fix would be to define TMIGR_NONE as "0" so that such a
      race would have no effect. And after all TMIGR_NONE doesn't need to be
      anything else. However this would leave an uncomfortable state machine
      where gears happen not to break by chance but are vulnerable to future
      modifications.
      
      Keep TMIGR_NONE as is instead and pre-initialize to "1" the groupmask of
      any newly created top level. This groupmask is guaranteed to be visible
      upon fetching the corresponding group for the 1st time:
      
      _ By the upcoming CPU thanks to CPU hotplug synchronization between the
        control CPU (BP) and the booting one (AP).
      
      _ By the control CPU since the groupmask and parent pointers are
        initialized locally.
      
      _ By all CPUs belonging to the same group than the control CPU because
        they must wait for it to ever become idle before needing to walk to
        the new top. The cmpcxhg() on ->migr_state then makes sure its
        groupmask is visible.
      
      With this pre-initialization, it is guaranteed that if a future top level
      is linked to an old one, it is walked through with a valid groupmask.
      
      Fixes: 10a0e6f3 ("timers/migration: Move hierarchy setup into cpuhotplug prepare callback")
      Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/all/20250114231507.21672-2-frederic@kernel.org
      b729cc1e
    • Paolo Abeni's avatar
      Merge branch 'mlx5-misc-fixes-2025-01-15' · 676d53a4
      Paolo Abeni authored
      Tariq Toukan says:
      
      ====================
      mlx5 misc fixes 2025-01-15
      
      This patchset provides misc bug fixes from the team to the mlx5 core and
      Eth drivers.
      ====================
      
      Link: https://patch.msgid.link/20250115113910.1990174-1-tariqt@nvidia.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      676d53a4
    • Leon Romanovsky's avatar
      net/mlx5e: Always start IPsec sequence number from 1 · 7f95b024
      Leon Romanovsky authored
      
      According to RFC4303, section "3.3.3. Sequence Number Generation",
      the first packet sent using a given SA will contain a sequence
      number of 1.
      
      This is applicable to both ESN and non-ESN mode, which was not covered
      in commit mentioned in Fixes line.
      
      Fixes: 3d42c8cc ("net/mlx5e: Ensure that IPsec sequence packet number starts from 1")
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      7f95b024
    • Leon Romanovsky's avatar
      net/mlx5e: Rely on reqid in IPsec tunnel mode · 25f23524
      Leon Romanovsky authored
      
      All packet offloads SAs have reqid in it to make sure they have
      corresponding policy. While it is not strictly needed for transparent
      mode, it is extremely important in tunnel mode. In that mode, policy and
      SAs have different match criteria.
      
      Policy catches the whole subnet addresses, and SA catches the tunnel gateways
      addresses. The source address of such tunnel is not known during egress packet
      traversal in flow steering as it is added only after successful encryption.
      
      As reqid is required for packet offload and it is unique for every SA,
      we can safely rely on it only.
      
      The output below shows the configured egress policy and SA by strongswan:
      
      [leonro@vm ~]$ sudo ip x s
      src 192.169.101.2 dst 192.169.101.1
              proto esp spi 0xc88b7652 reqid 1 mode tunnel
              replay-window 0 flag af-unspec esn
              aead rfc4106(gcm(aes)) 0xe406a01083986e14d116488549094710e9c57bc6 128
              anti-replay esn context:
               seq-hi 0x0, seq 0x0, oseq-hi 0x0, oseq 0x0
               replay_window 1, bitmap-length 1
               00000000
              crypto offload parameters: dev eth2 dir out mode packet
      
      [leonro@064 ~]$ sudo ip x p
      src 192.170.0.0/16 dst 192.170.0.0/16
              dir out priority 383615 ptype main
              tmpl src 192.169.101.2 dst 192.169.101.1
                      proto esp spi 0xc88b7652 reqid 1 mode tunnel
              crypto offload parameters: dev eth2 mode packet
      
      Fixes: b3beba1f ("net/mlx5e: Allow policies with reqid 0, to support IKE policy holes")
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      25f23524
    • Leon Romanovsky's avatar
      net/mlx5e: Fix inversion dependency warning while enabling IPsec tunnel · 2c368809
      Leon Romanovsky authored
      
      Attempt to enable IPsec packet offload in tunnel mode in debug kernel
      generates the following kernel panic, which is happening due to two
      issues:
      1. In SA add section, the should be _bh() variant when marking SA mode.
      2. There is not needed flush_workqueue in SA delete routine. It is not
      needed as at this stage as it is removed from SADB and the running work
      will be canceled later in SA free.
      
       =====================================================
       WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
       6.12.0+ #4 Not tainted
       -----------------------------------------------------
       charon/1337 [HC0[0]:SC0[4]:HE1:SE0] is trying to acquire:
       ffff88810f365020 (&xa->xa_lock#24){+.+.}-{3:3}, at: mlx5e_xfrm_del_state+0xca/0x1e0 [mlx5_core]
      
       and this task is already holding:
       ffff88813e0f0d48 (&x->lock){+.-.}-{3:3}, at: xfrm_state_delete+0x16/0x30
       which would create a new lock dependency:
        (&x->lock){+.-.}-{3:3} -> (&xa->xa_lock#24){+.+.}-{3:3}
      
       but this new dependency connects a SOFTIRQ-irq-safe lock:
        (&x->lock){+.-.}-{3:3}
      
       ... which became SOFTIRQ-irq-safe at:
         lock_acquire+0x1be/0x520
         _raw_spin_lock_bh+0x34/0x40
         xfrm_timer_handler+0x91/0xd70
         __hrtimer_run_queues+0x1dd/0xa60
         hrtimer_run_softirq+0x146/0x2e0
         handle_softirqs+0x266/0x860
         irq_exit_rcu+0x115/0x1a0
         sysvec_apic_timer_interrupt+0x6e/0x90
         asm_sysvec_apic_timer_interrupt+0x16/0x20
         default_idle+0x13/0x20
         default_idle_call+0x67/0xa0
         do_idle+0x2da/0x320
         cpu_startup_entry+0x50/0x60
         start_secondary+0x213/0x2a0
         common_startup_64+0x129/0x138
      
       to a SOFTIRQ-irq-unsafe lock:
        (&xa->xa_lock#24){+.+.}-{3:3}
      
       ... which became SOFTIRQ-irq-unsafe at:
       ...
         lock_acquire+0x1be/0x520
         _raw_spin_lock+0x2c/0x40
         xa_set_mark+0x70/0x110
         mlx5e_xfrm_add_state+0xe48/0x2290 [mlx5_core]
         xfrm_dev_state_add+0x3bb/0xd70
         xfrm_add_sa+0x2451/0x4a90
         xfrm_user_rcv_msg+0x493/0x880
         netlink_rcv_skb+0x12e/0x380
         xfrm_netlink_rcv+0x6d/0x90
         netlink_unicast+0x42f/0x740
         netlink_sendmsg+0x745/0xbe0
         __sock_sendmsg+0xc5/0x190
         __sys_sendto+0x1fe/0x2c0
         __x64_sys_sendto+0xdc/0x1b0
         do_syscall_64+0x6d/0x140
         entry_SYSCALL_64_after_hwframe+0x4b/0x53
      
       other info that might help us debug this:
      
        Possible interrupt unsafe locking scenario:
      
              CPU0                    CPU1
              ----                    ----
         lock(&xa->xa_lock#24);
                                      local_irq_disable();
                                      lock(&x->lock);
                                      lock(&xa->xa_lock#24);
         <Interrupt>
           lock(&x->lock);
      
        *** DEADLOCK ***
      
       2 locks held by charon/1337:
        #0: ffffffff87f8f858 (&net->xfrm.xfrm_cfg_mutex){+.+.}-{4:4}, at: xfrm_netlink_rcv+0x5e/0x90
        #1: ffff88813e0f0d48 (&x->lock){+.-.}-{3:3}, at: xfrm_state_delete+0x16/0x30
      
       the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
       -> (&x->lock){+.-.}-{3:3} ops: 29 {
          HARDIRQ-ON-W at:
                           lock_acquire+0x1be/0x520
                           _raw_spin_lock_bh+0x34/0x40
                           xfrm_alloc_spi+0xc0/0xe60
                           xfrm_alloc_userspi+0x5f6/0xbc0
                           xfrm_user_rcv_msg+0x493/0x880
                           netlink_rcv_skb+0x12e/0x380
                           xfrm_netlink_rcv+0x6d/0x90
                           netlink_unicast+0x42f/0x740
                           netlink_sendmsg+0x745/0xbe0
                           __sock_sendmsg+0xc5/0x190
                           __sys_sendto+0x1fe/0x2c0
                           __x64_sys_sendto+0xdc/0x1b0
                           do_syscall_64+0x6d/0x140
                           entry_SYSCALL_64_after_hwframe+0x4b/0x53
          IN-SOFTIRQ-W at:
                           lock_acquire+0x1be/0x520
                           _raw_spin_lock_bh+0x34/0x40
                           xfrm_timer_handler+0x91/0xd70
                           __hrtimer_run_queues+0x1dd/0xa60
                           hrtimer_run_softirq+0x146/0x2e0
                           handle_softirqs+0x266/0x860
                           irq_exit_rcu+0x115/0x1a0
                           sysvec_apic_timer_interrupt+0x6e/0x90
                           asm_sysvec_apic_timer_interrupt+0x16/0x20
                           default_idle+0x13/0x20
                           default_idle_call+0x67/0xa0
                           do_idle+0x2da/0x320
                           cpu_startup_entry+0x50/0x60
                           start_secondary+0x213/0x2a0
                           common_startup_64+0x129/0x138
          INITIAL USE at:
                          lock_acquire+0x1be/0x520
                          _raw_spin_lock_bh+0x34/0x40
                          xfrm_alloc_spi+0xc0/0xe60
                          xfrm_alloc_userspi+0x5f6/0xbc0
                          xfrm_user_rcv_msg+0x493/0x880
                          netlink_rcv_skb+0x12e/0x380
                          xfrm_netlink_rcv+0x6d/0x90
                          netlink_unicast+0x42f/0x740
                          netlink_sendmsg+0x745/0xbe0
                          __sock_sendmsg+0xc5/0x190
                          __sys_sendto+0x1fe/0x2c0
                          __x64_sys_sendto+0xdc/0x1b0
                          do_syscall_64+0x6d/0x140
                          entry_SYSCALL_64_after_hwframe+0x4b/0x53
        }
        ... key      at: [<ffffffff87f9cd20>] __key.18+0x0/0x40
      
       the dependencies between the lock to be acquired
        and SOFTIRQ-irq-unsafe lock:
       -> (&xa->xa_lock#24){+.+.}-{3:3} ops: 9 {
          HARDIRQ-ON-W at:
                           lock_acquire+0x1be/0x520
                           _raw_spin_lock_bh+0x34/0x40
                           mlx5e_xfrm_add_state+0xc5b/0x2290 [mlx5_core]
                           xfrm_dev_state_add+0x3bb/0xd70
                           xfrm_add_sa+0x2451/0x4a90
                           xfrm_user_rcv_msg+0x493/0x880
                           netlink_rcv_skb+0x12e/0x380
                           xfrm_netlink_rcv+0x6d/0x90
                           netlink_unicast+0x42f/0x740
                           netlink_sendmsg+0x745/0xbe0
                           __sock_sendmsg+0xc5/0x190
                           __sys_sendto+0x1fe/0x2c0
                           __x64_sys_sendto+0xdc/0x1b0
                           do_syscall_64+0x6d/0x140
                           entry_SYSCALL_64_after_hwframe+0x4b/0x53
          SOFTIRQ-ON-W at:
                           lock_acquire+0x1be/0x520
                           _raw_spin_lock+0x2c/0x40
                           xa_set_mark+0x70/0x110
                           mlx5e_xfrm_add_state+0xe48/0x2290 [mlx5_core]
                           xfrm_dev_state_add+0x3bb/0xd70
                           xfrm_add_sa+0x2451/0x4a90
                           xfrm_user_rcv_msg+0x493/0x880
                           netlink_rcv_skb+0x12e/0x380
                           xfrm_netlink_rcv+0x6d/0x90
                           netlink_unicast+0x42f/0x740
                           netlink_sendmsg+0x745/0xbe0
                           __sock_sendmsg+0xc5/0x190
                           __sys_sendto+0x1fe/0x2c0
                           __x64_sys_sendto+0xdc/0x1b0
                           do_syscall_64+0x6d/0x140
                           entry_SYSCALL_64_after_hwframe+0x4b/0x53
          INITIAL USE at:
                          lock_acquire+0x1be/0x520
                          _raw_spin_lock_bh+0x34/0x40
                          mlx5e_xfrm_add_state+0xc5b/0x2290 [mlx5_core]
                          xfrm_dev_state_add+0x3bb/0xd70
                          xfrm_add_sa+0x2451/0x4a90
                          xfrm_user_rcv_msg+0x493/0x880
                          netlink_rcv_skb+0x12e/0x380
                          xfrm_netlink_rcv+0x6d/0x90
                          netlink_unicast+0x42f/0x740
                          netlink_sendmsg+0x745/0xbe0
                          __sock_sendmsg+0xc5/0x190
                          __sys_sendto+0x1fe/0x2c0
                          __x64_sys_sendto+0xdc/0x1b0
                          do_syscall_64+0x6d/0x140
                          entry_SYSCALL_64_after_hwframe+0x4b/0x53
        }
        ... key      at: [<ffffffffa078ff60>] __key.48+0x0/0xfffffffffff210a0 [mlx5_core]
        ... acquired at:
          __lock_acquire+0x30a0/0x5040
          lock_acquire+0x1be/0x520
          _raw_spin_lock_bh+0x34/0x40
          mlx5e_xfrm_del_state+0xca/0x1e0 [mlx5_core]
          xfrm_dev_state_delete+0x90/0x160
          __xfrm_state_delete+0x662/0xae0
          xfrm_state_delete+0x1e/0x30
          xfrm_del_sa+0x1c2/0x340
          xfrm_user_rcv_msg+0x493/0x880
          netlink_rcv_skb+0x12e/0x380
          xfrm_netlink_rcv+0x6d/0x90
          netlink_unicast+0x42f/0x740
          netlink_sendmsg+0x745/0xbe0
          __sock_sendmsg+0xc5/0x190
          __sys_sendto+0x1fe/0x2c0
          __x64_sys_sendto+0xdc/0x1b0
          do_syscall_64+0x6d/0x140
          entry_SYSCALL_64_after_hwframe+0x4b/0x53
      
       stack backtrace:
       CPU: 7 UID: 0 PID: 1337 Comm: charon Not tainted 6.12.0+ #4
       Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
       Call Trace:
        <TASK>
        dump_stack_lvl+0x74/0xd0
        check_irq_usage+0x12e8/0x1d90
        ? print_shortest_lock_dependencies_backwards+0x1b0/0x1b0
        ? check_chain_key+0x1bb/0x4c0
        ? __lockdep_reset_lock+0x180/0x180
        ? check_path.constprop.0+0x24/0x50
        ? mark_lock+0x108/0x2fb0
        ? print_circular_bug+0x9b0/0x9b0
        ? mark_lock+0x108/0x2fb0
        ? print_usage_bug.part.0+0x670/0x670
        ? check_prev_add+0x1c4/0x2310
        check_prev_add+0x1c4/0x2310
        __lock_acquire+0x30a0/0x5040
        ? lockdep_set_lock_cmp_fn+0x190/0x190
        ? lockdep_set_lock_cmp_fn+0x190/0x190
        lock_acquire+0x1be/0x520
        ? mlx5e_xfrm_del_state+0xca/0x1e0 [mlx5_core]
        ? lockdep_hardirqs_on_prepare+0x400/0x400
        ? __xfrm_state_delete+0x5f0/0xae0
        ? lock_downgrade+0x6b0/0x6b0
        _raw_spin_lock_bh+0x34/0x40
        ? mlx5e_xfrm_del_state+0xca/0x1e0 [mlx5_core]
        mlx5e_xfrm_del_state+0xca/0x1e0 [mlx5_core]
        xfrm_dev_state_delete+0x90/0x160
        __xfrm_state_delete+0x662/0xae0
        xfrm_state_delete+0x1e/0x30
        xfrm_del_sa+0x1c2/0x340
        ? xfrm_get_sa+0x250/0x250
        ? check_chain_key+0x1bb/0x4c0
        xfrm_user_rcv_msg+0x493/0x880
        ? copy_sec_ctx+0x270/0x270
        ? check_chain_key+0x1bb/0x4c0
        ? lockdep_set_lock_cmp_fn+0x190/0x190
        ? lockdep_set_lock_cmp_fn+0x190/0x190
        netlink_rcv_skb+0x12e/0x380
        ? copy_sec_ctx+0x270/0x270
        ? netlink_ack+0xd90/0xd90
        ? netlink_deliver_tap+0xcd/0xb60
        xfrm_netlink_rcv+0x6d/0x90
        netlink_unicast+0x42f/0x740
        ? netlink_attachskb+0x730/0x730
        ? lock_acquire+0x1be/0x520
        netlink_sendmsg+0x745/0xbe0
        ? netlink_unicast+0x740/0x740
        ? __might_fault+0xbb/0x170
        ? netlink_unicast+0x740/0x740
        __sock_sendmsg+0xc5/0x190
        ? fdget+0x163/0x1d0
        __sys_sendto+0x1fe/0x2c0
        ? __x64_sys_getpeername+0xb0/0xb0
        ? do_user_addr_fault+0x856/0xe30
        ? lock_acquire+0x1be/0x520
        ? __task_pid_nr_ns+0x117/0x410
        ? lock_downgrade+0x6b0/0x6b0
        __x64_sys_sendto+0xdc/0x1b0
        ? lockdep_hardirqs_on_prepare+0x284/0x400
        do_syscall_64+0x6d/0x140
        entry_SYSCALL_64_after_hwframe+0x4b/0x53
       RIP: 0033:0x7f7d31291ba4
       Code: 7d e8 89 4d d4 e8 4c 42 f7 ff 44 8b 4d d0 4c 8b 45 c8 89 c3 44 8b 55 d4 8b 7d e8 b8 2c 00 00 00 48 8b 55 d8 48 8b 75 e0 0f 05 <48> 3d 00 f0 ff ff 77 34 89 df 48 89 45 e8 e8 99 42 f7 ff 48 8b 45
       RSP: 002b:00007f7d2ccd94f0 EFLAGS: 00000297 ORIG_RAX: 000000000000002c
       RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f7d31291ba4
       RDX: 0000000000000028 RSI: 00007f7d2ccd96a0 RDI: 000000000000000a
       RBP: 00007f7d2ccd9530 R08: 00007f7d2ccd9598 R09: 000000000000000c
       R10: 0000000000000000 R11: 0000000000000297 R12: 0000000000000028
       R13: 00007f7d2ccd9598 R14: 00007f7d2ccd96a0 R15: 00000000000000e1
        </TASK>
      
      Fixes: 4c24272b ("net/mlx5e: Listen to ARP events to update IPsec L2 headers in tunnel mode")
      Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      2c368809
    • Mark Zhang's avatar
      net/mlx5: Clear port select structure when fail to create · 5641e82c
      Mark Zhang authored
      
      Clear the port select structure on error so no stale values left after
      definers are destroyed. That's because the mlx5_lag_destroy_definers()
      always try to destroy all lag definers in the tt_map, so in the flow
      below lag definers get double-destroyed and cause kernel crash:
      
        mlx5_lag_port_sel_create()
          mlx5_lag_create_definers()
            mlx5_lag_create_definer()     <- Failed on tt 1
              mlx5_lag_destroy_definers() <- definers[tt=0] gets destroyed
        mlx5_lag_port_sel_create()
          mlx5_lag_create_definers()
            mlx5_lag_create_definer()     <- Failed on tt 0
              mlx5_lag_destroy_definers() <- definers[tt=0] gets double-destroyed
      
       Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
       Mem abort info:
         ESR = 0x0000000096000005
         EC = 0x25: DABT (current EL), IL = 32 bits
         SET = 0, FnV = 0
         EA = 0, S1PTW = 0
         FSC = 0x05: level 1 translation fault
       Data abort info:
         ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
         CM = 0, WnR = 0, TnD = 0, TagAccess = 0
         GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
       user pgtable: 64k pages, 48-bit VAs, pgdp=0000000112ce2e00
       [0000000000000008] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
       Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
       Modules linked in: iptable_raw bonding ip_gre ip6_gre gre ip6_tunnel tunnel6 geneve ip6_udp_tunnel udp_tunnel ipip tunnel4 ip_tunnel rdma_ucm(OE) rdma_cm(OE) iw_cm(OE) ib_ipoib(OE) ib_cm(OE) ib_umad(OE) mlx5_ib(OE) ib_uverbs(OE) mlx5_fwctl(OE) fwctl(OE) mlx5_core(OE) mlxdevm(OE) ib_core(OE) mlxfw(OE) memtrack(OE) mlx_compat(OE) openvswitch nsh nf_conncount psample xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo xt_addrtype iptable_filter iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 br_netfilter bridge stp llc netconsole overlay efi_pstore sch_fq_codel zram ip_tables crct10dif_ce qemu_fw_cfg fuse ipv6 crc_ccitt [last unloaded: mlx_compat(OE)]
        CPU: 3 UID: 0 PID: 217 Comm: kworker/u53:2 Tainted: G           OE      6.11.0+ #2
        Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
        Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
        Workqueue: mlx5_lag mlx5_do_bond_work [mlx5_core]
        pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
        pc : mlx5_del_flow_rules+0x24/0x2c0 [mlx5_core]
        lr : mlx5_lag_destroy_definer+0x54/0x100 [mlx5_core]
        sp : ffff800085fafb00
        x29: ffff800085fafb00 x28: ffff0000da0c8000 x27: 0000000000000000
        x26: ffff0000da0c8000 x25: ffff0000da0c8000 x24: ffff0000da0c8000
        x23: ffff0000c31f81a0 x22: 0400000000000000 x21: ffff0000da0c8000
        x20: 0000000000000000 x19: 0000000000000001 x18: 0000000000000000
        x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffff8b0c9350
        x14: 0000000000000000 x13: ffff800081390d18 x12: ffff800081dc3cc0
        x11: 0000000000000001 x10: 0000000000000b10 x9 : ffff80007ab7304c
        x8 : ffff0000d00711f0 x7 : 0000000000000004 x6 : 0000000000000190
        x5 : ffff00027edb3010 x4 : 0000000000000000 x3 : 0000000000000000
        x2 : ffff0000d39b8000 x1 : ffff0000d39b8000 x0 : 0400000000000000
        Call trace:
         mlx5_del_flow_rules+0x24/0x2c0 [mlx5_core]
         mlx5_lag_destroy_definer+0x54/0x100 [mlx5_core]
         mlx5_lag_destroy_definers+0xa0/0x108 [mlx5_core]
         mlx5_lag_port_sel_create+0x2d4/0x6f8 [mlx5_core]
         mlx5_activate_lag+0x60c/0x6f8 [mlx5_core]
         mlx5_do_bond_work+0x284/0x5c8 [mlx5_core]
         process_one_work+0x170/0x3e0
         worker_thread+0x2d8/0x3e0
         kthread+0x11c/0x128
         ret_from_fork+0x10/0x20
        Code: a9025bf5 aa0003f6 a90363f7 f90023f9 (f9400400)
        ---[ end trace 0000000000000000 ]---
      
      Fixes: dc48516e ("net/mlx5: Lag, add support to create definers for LAG")
      Signed-off-by: default avatarMark Zhang <markzhang@nvidia.com>
      Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      5641e82c
Loading