Changelog in Linux kernel 6.14.9

 
__legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Apr 27 15:41:51 2025 -0400

    __legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock
    
    [ Upstream commit 250cf3693060a5f803c5f1ddc082bb06b16112a9 ]
    
    ... or we risk stealing final mntput from sync umount - raising mnt_count
    after umount(2) has verified that victim is not busy, but before it
    has set MNT_SYNC_UMOUNT; in that case __legitimize_mnt() doesn't see
    that it's safe to quietly undo mnt_count increment and leaves dropping
    the reference to caller, where it'll be a full-blown mntput().
    
    Check under mount_lock is needed; leaving the current one done before
    taking that makes no sense - it's nowhere near common enough to bother
    with.
    
    Reviewed-by: Christian Brauner <[email protected]>
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
accel/amdxdna: Check interrupt register before mailbox_rx_worker exits [+ + +]
Author: Lizhi Hou <[email protected]>
Date:   Wed Feb 26 08:18:10 2025 -0800

    accel/amdxdna: Check interrupt register before mailbox_rx_worker exits
    
    [ Upstream commit cd740b873f8f6f5f4558723241ba9c09eb36d0ba ]
    
    There is a timeout failure been found during stress tests. If the firmware
    generates a mailbox response right after driver clears the mailbox channel
    interrupt register, the hardware will not generate an interrupt for the
    response. This causes the unexpected mailbox command timeout.
    
    To handle this failure, driver checks the interrupt register before
    exiting mailbox_rx_worker(). If there is a new response, driver goes back
    to process it.
    
    Signed-off-by: Lizhi Hou <[email protected]>
    Reviewed-by: Jacek Lawrynowicz <[email protected]>
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

accel/amdxdna: Refactor hardware context destroy routine [+ + +]
Author: Lizhi Hou <[email protected]>
Date:   Fri Jan 24 09:35:36 2025 -0800

    accel/amdxdna: Refactor hardware context destroy routine
    
    [ Upstream commit 4fd6ca90fc7f509977585d39885f21b2911123f3 ]
    
    It is required by firmware to wait up to 2 seconds for pending commands
    before sending the destroy hardware context command. After 2 seconds
    wait, if there are still pending commands, driver needs to cancel them.
    
    So the context destroy steps need to be:
      1. Stop drm scheduler. (drm_sched_entity_destroy)
      2. Wait up to 2 seconds for pending commands.
      3. Destroy hardware context and cancel the rest pending requests.
      4. Wait all jobs associated with the hwctx are freed.
      5. Free job resources.
    
    Signed-off-by: Lizhi Hou <[email protected]>
    Reviewed-by: Jeffrey Hugo <[email protected]>
    Signed-off-by: Jeffrey Hugo <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
accel/qaic: Mask out SR-IOV PCI resources [+ + +]
Author: Youssef Samir <[email protected]>
Date:   Fri Jan 17 10:09:41 2025 -0700

    accel/qaic: Mask out SR-IOV PCI resources
    
    [ Upstream commit 8685520474bfc0fe4be83c3cbfe3fb3e1ca1514a ]
    
    During the initialization of the qaic device, pci_select_bars() is
    used to fetch a bitmask of the BARs exposed by the device. On devices
    that have Virtual Functions capabilities, the bitmask includes SR-IOV
    BARs.
    
    Use a mask to filter out SR-IOV BARs if they exist.
    
    Signed-off-by: Youssef Samir <[email protected]>
    Reviewed-by: Jeffrey Hugo <[email protected]>
    Signed-off-by: Jeffrey Hugo <[email protected]>
    Reviewed-by: Lizhi Hou <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ACPI: HED: Always initialize before evged [+ + +]
Author: Xiaofei Tan <[email protected]>
Date:   Wed Feb 12 14:34:08 2025 +0800

    ACPI: HED: Always initialize before evged
    
    [ Upstream commit cccf6ee090c8c133072d5d5b52ae25f3bc907a16 ]
    
    When the HED driver is built-in, it initializes after evged because they
    both are at the same initcall level, so the initialization ordering
    depends on the Makefile order.  However, this prevents RAS records
    coming in between the evged driver initialization and the HED driver
    initialization from being handled.
    
    If the number of such RAS records is above the APEI HEST error source
    number, the HEST resources may be exhausted, and that may affect
    subsequent RAS error reporting.
    
    To fix this issue, change the initcall level of HED to subsys_initcall
    and prevent the driver from being built as a module by changing ACPI_HED
    in Kconfig from "tristate" to "bool".
    
    Signed-off-by: Xiaofei Tan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: PNP: Add Intel OC Watchdog IDs to non-PNP device list [+ + +]
Author: Diogo Ivo <[email protected]>
Date:   Mon Mar 17 10:55:07 2025 +0000

    ACPI: PNP: Add Intel OC Watchdog IDs to non-PNP device list
    
    [ Upstream commit f06777cf2bbc21dd8c71d6e3906934e56b4e18e4 ]
    
    Intel Over-Clocking Watchdogs are described in ACPI tables by both the
    generic PNP0C02 _CID and their ACPI _HID. The presence of the _CID then
    causes the PNP scan handler to attach to the watchdog, preventing the
    actual watchdog driver from binding. Address this by adding the ACPI
    _HIDs to the list of non-PNP devices, so that the PNP scan handler is
    bypassed.
    
    Note that these watchdogs can be described by multiple _HIDs for what
    seems to be identical hardware. This commit is not a complete list of
    all the possible watchdog ACPI _HIDs.
    
    Signed-off-by: Diogo Ivo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
alloc_tag: allocate percpu counters for module tags dynamically [+ + +]
Author: Suren Baghdasaryan <[email protected]>
Date:   Fri May 16 17:07:39 2025 -0700

    alloc_tag: allocate percpu counters for module tags dynamically
    
    commit 12ca42c237756182aad8ab04654c952765cb9061 upstream.
    
    When a module gets unloaded it checks whether any of its tags are still in
    use and if so, we keep the memory containing module's allocation tags
    alive until all tags are unused.  However percpu counters referenced by
    the tags are freed by free_module().  This will lead to UAF if the memory
    allocated by a module is accessed after module was unloaded.
    
    To fix this we allocate percpu counters for module allocation tags
    dynamically and we keep it alive for tags which are still in use after
    module unloading.  This also removes the requirement of a larger
    PERCPU_MODULE_RESERVE when memory allocation profiling is enabled because
    percpu memory for counters does not need to be reserved anymore.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 0db6f8d7820a ("alloc_tag: load module tags into separate contiguous memory")
    Signed-off-by: Suren Baghdasaryan <[email protected]>
    Reported-by: David Wang <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Tested-by: David Wang <[email protected]>
    Cc: Christoph Lameter (Ampere) <[email protected]>
    Cc: Dennis Zhou <[email protected]>
    Cc: Kent Overstreet <[email protected]>
    Cc: Pasha Tatashin <[email protected]>
    Cc: Tejun Heo <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Sun Apr 27 10:10:34 2025 +0200

    ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx
    
    [ Upstream commit be0c40da888840fe91b45474cb70779e6cbaf7ca ]
    
    HP Spectre x360 15-df1xxx with SSID 13c:863e requires similar
    workarounds that were applied to another HP Spectre x360 models;
    it has a mute LED only, no micmute LEDs, and needs the speaker GPIO
    seup.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220054
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14ASP10 [+ + +]
Author: Ed Burcher <[email protected]>
Date:   Mon May 19 23:49:07 2025 +0100

    ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14ASP10
    
    commit 8d70503068510e6080c2c649cccb154f16de26c9 upstream.
    
    Lenovo Yoga Pro 7 (gen 10) with Realtek ALC3306 and combined CS35L56
    amplifiers need quirk ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN to
    enable bass
    
    Signed-off-by: Ed Burcher <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: hda/realtek: Enable PC beep passthrough for HP EliteBook 855 G7 [+ + +]
Author: Maciej S. Szmigiero <[email protected]>
Date:   Sun Feb 16 22:31:03 2025 +0100

    ALSA: hda/realtek: Enable PC beep passthrough for HP EliteBook 855 G7
    
    [ Upstream commit aa85822c611aef7cd4dc17d27121d43e21bb82f0 ]
    
    PC speaker works well on this platform in BIOS and in Linux until sound
    card drivers are loaded. Then it stops working.
    
    There seems to be a beep generator node at 0x1a in this CODEC
    (ALC269_TYPE_ALC215) but it seems to be only connected to capture mixers
    at nodes 0x22 and 0x23.
    If I unmute the mixer input for 0x1a at node 0x23 and start recording
    from its "ALC285 Analog" capture device I can clearly hear beeps in that
    recording.
    
    So the beep generator is indeed working properly, however I wasn't able to
    figure out any way to connect it to speakers.
    
    However, the bits in the "Passthrough Control" register (0x36) seems to
    work at least partially: by zeroing "B" and "h" and setting "S" I can at
    least make the PIT PC speaker output appear either in this laptop speakers
    or headphones (depending on whether they are connected or not).
    
    There are some caveats, however:
    * If the CODEC gets runtime-suspended the beeps stop so it needs HDA beep
    device for keeping it awake during beeping.
    
    * If the beep generator node is generating any beep the PC beep passthrough
    seems to be temporarily inhibited, so the HDA beep device has to be
    prevented from using the actual beep generator node - but the beep device
    is still necessary due to the previous point.
    
    * In contrast with other platforms here beep amplification has to be
    disabled otherwise the beeps output are WAY louder than they were on pure
    BIOS setup.
    
    Unless someone (from Realtek probably) knows how to make the beep generator
    node output appear in speakers / headphones using PC beep passthrough seems
    to be the only way to make PC speaker beeping actually work on this
    platform.
    
    Signed-off-by: Maciej S. Szmigiero <[email protected]>
    Acked-by: [email protected]
    Link: https://patch.msgid.link/7461f695b4daed80f2fc4b1463ead47f04f9ad05.1739741254.git.mail@maciej.szmigiero.name
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: pcm: Fix race of buffer access at PCM OSS layer [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri May 16 10:08:16 2025 +0200

    ALSA: pcm: Fix race of buffer access at PCM OSS layer
    
    commit 93a81ca0657758b607c3f4ba889ae806be9beb73 upstream.
    
    The PCM OSS layer tries to clear the buffer with the silence data at
    initialization (or reconfiguration) of a stream with the explicit call
    of snd_pcm_format_set_silence() with runtime->dma_area.  But this may
    lead to a UAF because the accessed runtime->dma_area might be freed
    concurrently, as it's performed outside the PCM ops.
    
    For avoiding it, move the code into the PCM core and perform it inside
    the buffer access lock, so that it won't be changed during the
    operation.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: seq: Improve data consistency at polling [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri Mar 7 09:42:42 2025 +0100

    ALSA: seq: Improve data consistency at polling
    
    [ Upstream commit e3cd33ab17c33bd8f1a9df66ec83a15dd8f7afbb ]
    
    snd_seq_poll() calls snd_seq_write_pool_allocated() that reads out a
    field in client->pool object, while it can be updated concurrently via
    ioctls, as reported by syzbot.  The data race itself is harmless, as
    it's merely a poll() call, and the state is volatile.  OTOH, the read
    out of poll object info from the caller side is fragile, and we can
    leave it better in snd_seq_pool_poll_wait() alone.
    
    A similar pattern is seen in snd_seq_kernel_client_write_poll(), too,
    which is called from the OSS sequencer.
    
    This patch drops the pool checks from the caller side and add the
    pool->lock in snd_seq_pool_poll_wait() for better data consistency.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/[email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Fix duplicated name in MIDI substream names [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Apr 29 20:36:15 2025 +0200

    ALSA: usb-audio: Fix duplicated name in MIDI substream names
    
    [ Upstream commit 0759e77a6d9bd34a874da73721ce4a7dc6665023 ]
    
    The MIDI substream name string is constructed from the combination of
    the card shortname (which is taken from USB iProduct) and the USB
    iJack.  The problem is that some devices put the product name to the
    iJack field, too.  For example, aplaymidi -l output on the Lanchkey MK
    49 are like:
    
      % aplaymidi -l
      Port    Client name            Port name
      44:0    Launchkey MK4 49       Launchkey MK4 49 Launchkey MK4
      44:1    Launchkey MK4 49       Launchkey MK4 49 Launchkey MK4
    
    where the actual iJack name can't be seen because it's truncated due
    to the doubly words.
    
    For resolving those situations, this patch compares the iJack string
    with the card shortname, and drops if both start with the same words.
    Then the result becomes like:
    
      % aplaymidi -l
      Port    Client name            Port name
      40:0    Launchkey MK4 49       Launchkey MK4 49 MIDI In
      40:1    Launchkey MK4 49       Launchkey MK4 49 DAW In
    
    A caveat is that there are some pre-defined names for certain
    devices in the driver code, and this workaround shouldn't be applied
    to them.  Similarly, when the iJack isn't specified, we should skip
    this check, too.  The patch added those checks in addition to the
    string comparison.
    
    Suggested-by: Paul Davis <[email protected]>
    Tested-by: Paul Davis <[email protected]>
    Link: https://lore.kernel.org/CAFa_cKmEDQWcJatbYWi6A58Zg4Ma9_6Nr3k5LhqwyxC-P_kXtw@mail.gmail.com
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
amdgpu/soc15: enable asic reset for dGPU in case of suspend abort [+ + +]
Author: Jiang Liu <[email protected]>
Date:   Mon Jan 13 11:40:12 2025 +0800

    amdgpu/soc15: enable asic reset for dGPU in case of suspend abort
    
    [ Upstream commit 38e8ca3e4b6de1c6e49d0140264cfc8d314a5f70 ]
    
    When GPU suspend is aborted, do the same for dGPU as APU to reset
    soc15 asic. Otherwise it may cause following errors:
    [  547.229463] amdgpu 0001:81:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring kiq_0.2.1.0 test failed (-110)
    
    [  555.126827] amdgpu 0000:0a:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring kiq_0.2.1.0 test failed (-110)
    [  555.126901] [drm:amdgpu_gfx_enable_kcq [amdgpu]] *ERROR* KCQ enable failed
    [  555.126957] [drm:amdgpu_device_ip_resume_phase2 [amdgpu]] *ERROR* resume of IP block <gfx_v9_4_3> failed -110
    [  555.126959] amdgpu 0000:0a:00.0: amdgpu: amdgpu_device_ip_resume failed (-110).
    [  555.126965] PM: dpm_run_callback(): pci_pm_resume+0x0/0xe0 returns -110
    [  555.126966] PM: Device 0000:0a:00.0 failed to resume async: error -110
    
    This fix has been tested on Mi308X.
    
    Signed-off-by: Jiang Liu <[email protected]>
    Tested-by: Shuo Liu <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://lore.kernel.org/r/2462b4b12eb9d025e82525178d568cbaa4c223ff.1736739303.git.gerry@linux.alibaba.com
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src [+ + +]
Author: Athira Rajeev <[email protected]>
Date:   Tue Jan 21 18:46:20 2025 +0530

    arch/powerpc/perf: Check the instruction type before creating sample with perf_mem_data_src
    
    [ Upstream commit 2ffb26afa64261139e608bf087a0c1fe24d76d4d ]
    
    perf mem report aborts as below sometimes (during some corner
    case) in powerpc:
    
       # ./perf mem report 1>out
       *** stack smashing detected ***: terminated
       Aborted (core dumped)
    
    The backtrace is as below:
       __pthread_kill_implementation ()
       raise ()
       abort ()
       __libc_message
       __fortify_fail
       __stack_chk_fail
       hist_entry.lvl_snprintf
       __sort__hpp_entry
       __hist_entry__snprintf
       hists.fprintf
       cmd_report
       cmd_mem
    
    Snippet of code which triggers the issue
    from tools/perf/util/sort.c
    
       static int hist_entry__lvl_snprintf(struct hist_entry *he, char *bf,
                                        size_t size, unsigned int width)
       {
            char out[64];
    
            perf_mem__lvl_scnprintf(out, sizeof(out), he->mem_info);
            return repsep_snprintf(bf, size, "%-*s", width, out);
       }
    
    The value of "out" is filled from perf_mem_data_src value.
    Debugging this further showed that for some corner cases, the
    value of "data_src" was pointing to wrong value. This resulted
    in bigger size of string and causing stack check fail.
    
    The perf mem data source values are captured in the sample via
    isa207_get_mem_data_src function. The initial check is to fetch
    the type of sampled instruction. If the type of instruction is
    not valid (not a load/store instruction), the function returns.
    
    Since 'commit e16fd7f2cb1a ("perf: Use sample_flags for data_src")',
    data_src field is not initialized by the perf_sample_data_init()
    function. If the PMU driver doesn't set the data_src value to zero if
    type is not valid, this will result in uninitailised value for data_src.
    The uninitailised value of data_src resulted in stack check fail
    followed by abort for "perf mem report".
    
    When requesting for data source information in the sample, the
    instruction type is expected to be load or store instruction.
    In ISA v3.0, due to hardware limitation, there are corner cases
    where the instruction type other than load or store is observed.
    In ISA v3.0 and before values "0" and "7" are considered reserved.
    In ISA v3.1, value "7" has been used to indicate "larx/stcx".
    Drop the sample if instruction type has reserved values for this
    field with a ISA version check. Initialize data_src to zero in
    isa207_get_mem_data_src if the instruction type is not load/store.
    
    Reported-by: Disha Goel <[email protected]>
    Signed-off-by: Athira Rajeev <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/mm: Check pmd_table() in pmd_trans_huge() [+ + +]
Author: Ryan Roberts <[email protected]>
Date:   Fri Feb 21 10:12:26 2025 +0530

    arm64/mm: Check pmd_table() in pmd_trans_huge()
    
    [ Upstream commit d1770e909898c108e8c7d30ca039053e8818a9c9 ]
    
    Check for pmd_table() in pmd_trans_huge() rather then just checking for the
    PMD_TABLE_BIT. But ensure all present-invalid entries are handled correctly
    by always setting PTE_VALID before checking with pmd_table().
    
    Cc: Will Deacon <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Anshuman Khandual <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/mm: Check PUD_TYPE_TABLE in pud_bad() [+ + +]
Author: Ryan Roberts <[email protected]>
Date:   Fri Feb 21 10:12:25 2025 +0530

    arm64/mm: Check PUD_TYPE_TABLE in pud_bad()
    
    [ Upstream commit bfb1d2b9021c21891427acc86eb848ccedeb274e ]
    
    pud_bad() is currently defined in terms of pud_table(). Although for some
    configs, pud_table() is hard-coded to true i.e. when using 64K base pages
    or when page table levels are less than 3.
    
    pud_bad() is intended to check that the pud is configured correctly. Hence
    let's open-code the same check that the full version of pud_table() uses
    into pud_bad(). Then it always performs the check regardless of the config.
    
    Cc: Will Deacon <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Anshuman Khandual <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: Add support for HIP09 Spectre-BHB mitigation [+ + +]
Author: Jinqian Yang <[email protected]>
Date:   Tue Mar 25 22:19:00 2025 +0800

    arm64: Add support for HIP09 Spectre-BHB mitigation
    
    [ Upstream commit e18c09b204e81702ea63b9f1a81ab003b72e3174 ]
    
    The HIP09 processor is vulnerable to the Spectre-BHB (Branch History
    Buffer) attack, which can be exploited to leak information through
    branch prediction side channels. This commit adds the MIDR of HIP09
    to the list for software mitigation.
    
    Signed-off-by: Jinqian Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs [+ + +]
Author: Gabor Juhos <[email protected]>
Date:   Fri May 9 15:48:52 2025 +0200

    arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
    
    commit b04f0d89e880bc2cca6a5c73cf287082c91878da upstream.
    
    The two alarm LEDs of on the uDPU board are stopped working since
    commit 78efa53e715e ("leds: Init leds class earlier").
    
    The LEDs are driven by the GPIO{15,16} pins of the North Bridge
    GPIO controller. These pins are part of the 'spi_quad' pin group
    for which the 'spi' function is selected via the default pinctrl
    state of the 'spi' node. This is wrong however, since in order to
    allow controlling the LEDs, the pins should use the 'gpio' function.
    
    Before the commit mentined above, the 'spi' function is selected
    first by the pinctrl core before probing the spi driver, but then
    it gets overridden to 'gpio' implicitly via the
    devm_gpiod_get_index_optional() call from the 'leds-gpio' driver.
    
    After the commit, the LED subsystem gets initialized before the
    SPI subsystem, so the function of the pin group remains 'spi'
    which in turn prevents controlling of the LEDs.
    
    Despite the change of the initialization order, the root cause is
    that the pinctrl state definition is wrong since its initial commit
    0d45062cfc89 ("arm64: dts: marvell: Add device tree for uDPU board"),
    
    To fix the problem, override the function in the 'spi_quad_pins'
    node to 'gpio' and move the pinctrl state definition from the
    'spi' node into the 'leds' node.
    
    Cc: [email protected] # needs adjustment for < 6.1
    Fixes: 0d45062cfc89 ("arm64: dts: marvell: Add device tree for uDPU board")
    Signed-off-by: Gabor Juhos <[email protected]>
    Signed-off-by: Imre Kaloz <[email protected]>
    Signed-off-by: Gregory CLEMENT <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator [+ + +]
Author: Diogo Ivo <[email protected]>
Date:   Mon Feb 24 12:17:36 2025 +0000

    arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator
    
    [ Upstream commit f34621f31e3be81456c903287f7e4c0609829e29 ]
    
    According to the board schematics the enable pin of this regulator is
    connected to gpio line #9 of the first instance of the TCA9539
    GPIO expander, so adjust it.
    
    Signed-off-by: Diogo Ivo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: tegra: Resize aperture for the IGX PCIe C5 slot [+ + +]
Author: Jon Hunter <[email protected]>
Date:   Thu Jan 16 15:19:03 2025 +0000

    arm64: tegra: Resize aperture for the IGX PCIe C5 slot
    
    [ Upstream commit 6d4bfe6d86af1ef52bdb4592c9afb2037f24f2c4 ]
    
    Some discrete graphics cards such as the NVIDIA RTX A6000 support
    resizable BARs. When connecting an A6000 card to the NVIDIA IGX Orin
    platform, resizing the BAR1 aperture to 8GB fails because the current
    device-tree configuration for the PCIe C5 slot cannot support this.
    Fix this by updating the device-tree 'reg' and 'ranges' properties for
    the PCIe C5 slot to support this.
    
    Signed-off-by: Jon Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: zynqmp: add clock-output-names property in clock nodes [+ + +]
Author: Naman Trivedi <[email protected]>
Date:   Fri Nov 22 01:57:12 2024 -0800

    arm64: zynqmp: add clock-output-names property in clock nodes
    
    [ Upstream commit 385a59e7f7fb3438466a0712cc14672c708bbd57 ]
    
    Add clock-output-names property to clock nodes, so that the resulting
    clock name do not change when clock node name is changed.
    Also, replace underscores with hyphens in the clock node names as per
    dt-schema rule.
    
    Signed-off-by: Naman Trivedi <[email protected]>
    Acked-by: Senthil Nathan Thangaraj <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Michal Simek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: at91: pm: fix at91_suspend_finish for ZQ calibration [+ + +]
Author: Li Bin <[email protected]>
Date:   Thu Feb 27 08:51:56 2025 -0700

    ARM: at91: pm: fix at91_suspend_finish for ZQ calibration
    
    [ Upstream commit bc4722c3598d0e2c2dbf9609a3d3198993093e2b ]
    
    For sama7g5 and sama7d65 backup mode, we encountered a "ZQ calibrate error"
    during recalibrating the impedance in BootStrap.
    We found that the impedance value saved in at91_suspend_finish() before
    the DDR entered self-refresh mode did not match the resistor values. The
    ZDATA field in the DDR3PHY_ZQ0CR0 register uses a modified gray code to
    select the different impedance setting.
    But these gray code are incorrect, a workaournd from design team fixed the
    bug in the calibration logic. The ZDATA contains four independent impedance
    elements, but the algorithm combined the four elements into one. The elements
    were fixed using properly shifted offsets.
    
    Signed-off-by: Li Bin <[email protected]>
    [[email protected]: fix indentation and combine 2 patches]
    Signed-off-by: Nicolas Ferre <[email protected]>
    Tested-by: Ryan Wanner <[email protected]>
    Tested-by: Durai Manickam KR <[email protected]>
    Tested-by: Andrei Simion <[email protected]>
    Signed-off-by: Ryan Wanner <[email protected]>
    Link: https://lore.kernel.org/r/28b33f9bcd0ca60ceba032969fe054d38f2b9577.1740671156.git.Ryan.Wanner@microchip.com
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114 [+ + +]
Author: Svyatoslav Ryhel <[email protected]>
Date:   Wed Feb 26 12:56:11 2025 +0200

    ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114
    
    [ Upstream commit 2b3db788f2f614b875b257cdb079adadedc060f3 ]
    
    PLLD is usually used as parent clock for internal video devices, like
    DSI for example, while PLLD2 is used as parent for HDMI.
    
    Signed-off-by: Svyatoslav Ryhel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ASoC: codecs: pcm3168a: Allow for 24-bit in provider mode [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Mon Feb 3 15:10:43 2025 +0100

    ASoC: codecs: pcm3168a: Allow for 24-bit in provider mode
    
    [ Upstream commit 7d92a38d67e5d937b64b20aa4fd14451ee1772f3 ]
    
    As per codec device specification, 24-bit is allowed in provider mode.
    Update the code to reflect that.
    
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: codecs: wsa883x: Correct VI sense channel mask [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Mar 12 20:24:59 2025 +0100

    ASoC: codecs: wsa883x: Correct VI sense channel mask
    
    [ Upstream commit ed3b274abc4008efffebf1997968a3f2720a86d3 ]
    
    VI sense port on WSA883x speaker takes only one channel, so use 0x1 as
    channel mask.  This fixes garbage being recorded by the speaker when
    testing the VI sense feedback path.
    
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: codecs: wsa884x: Correct VI sense channel mask [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Mar 12 20:25:00 2025 +0100

    ASoC: codecs: wsa884x: Correct VI sense channel mask
    
    [ Upstream commit 060fac202eb8e5c83961f0e0bf6dad8ab6e46643 ]
    
    VI sense port on WSA883x speaker takes only one channel, so use 0x1 as
    channel mask.  This fixes garbage being recorded by the speaker when
    testing the VI sense feedback path.
    
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: cs42l43: Disable headphone clamps during type detection [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Wed Apr 23 10:09:44 2025 +0100

    ASoC: cs42l43: Disable headphone clamps during type detection
    
    [ Upstream commit 70ad2e6bd180f94be030aef56e59693e36d945f3 ]
    
    The headphone clamps cause fairly loud pops during type detect
    because they sink current from the detection process itself. Disable
    the clamps whilst the type detect runs, to improve the detection
    pop performance.
    
    Signed-off-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of() [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Sun Apr 6 16:08:54 2025 -0500

    ASoC: imx-card: Adjust over allocation of memory in imx_card_parse_of()
    
    [ Upstream commit a9a69c3b38c89d7992fb53db4abb19104b531d32 ]
    
    Incorrect types are used as sizeof() arguments in devm_kcalloc().
    It should be sizeof(dai_link_data) for link_data instead of
    sizeof(snd_soc_dai_link).
    
    This is found by our static analysis tool.
    
    Signed-off-by: Chenyuan Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: intel/sdw_utils: Add volume limit to cs35l56 speakers [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Wed Apr 30 11:31:20 2025 +0100

    ASoC: intel/sdw_utils: Add volume limit to cs35l56 speakers
    
    [ Upstream commit d5463e531c128ff1b141fdba2e13345cd50028a4 ]
    
    The volume control for cs35l56 speakers has a maximum gain of +12 dB.
    However, for many use cases, this can cause distorted audio, depending
    various factors, such as other signal-processing elements in the chain,
    for example if the audio passes through a gain control before reaching
    the amp or the signal path has been tuned for a particular maximum
    gain in the amp.
    
    In the case of systems which use the soc_sdw_* driver, audio will
    likely be distorted in all cases above 0 dB, therefore add a volume
    limit of 400, which is 0 dB maximum volume inside this driver.
    
    The volume limit should be applied to both soundwire and soundwire
    bridge configurations.
    
    Signed-off-by: Stefan Binding <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: intel/sdw_utils: Add volume limit to cs42l43 speakers [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Wed Apr 30 11:31:19 2025 +0100

    ASoC: intel/sdw_utils: Add volume limit to cs42l43 speakers
    
    [ Upstream commit 02b44a2b2bdcee03cbb92484d31e9ca1b91b2a38 ]
    
    The volume control for cs42l43 speakers has a maximum gain of +31.5 dB.
    However, for many use cases, this can cause distorted audio, depending
    various factors, such as other signal-processing elements in the chain,
    for example if the audio passes through a gain control before reaching
    the codec or the signal path has been tuned for a particular maximum
    gain in the codec.
    
    In the case of systems which use the soc_sdw_cs42l43 driver, audio will
    likely be distorted in all cases above 0 dB, therefore add a volume
    limit of 128, which is 0 dB maximum volume inside this driver.
    
    Signed-off-by: Stefan Binding <[email protected]>
    Reviewed-by: Charles Keepax <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013 [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Sun Apr 20 10:56:59 2025 +0200

    ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013
    
    [ Upstream commit a549b927ea3f5e50b1394209b64e6e17e31d4db8 ]
    
    Acer Aspire SW3-013 requires the very same quirk as other Acer Aspire
    model for making it working.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220011
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Thu Mar 6 16:52:17 2025 -0300

    ASoC: mediatek: mt6359: Add stub for mt6359_accdet_enable_jack_detect
    
    [ Upstream commit 0116a7d84b32537a10d9bea1fd1bfc06577ef527 ]
    
    Add a stub for mt6359_accdet_enable_jack_detect() to prevent linker
    failures in the machine sound drivers calling it when
    CONFIG_SND_SOC_MT6359_ACCDET is not enabled.
    
    Suggested-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: mediatek: mt8188: Add reference for dmic clocks [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Tue Feb 25 11:33:48 2025 -0300

    ASoC: mediatek: mt8188: Add reference for dmic clocks
    
    [ Upstream commit bf1800073f4d55f08191b034c86b95881e99b6fd ]
    
    Add the names for the dmic clocks, aud_afe_dmic* and aud_dmic_hires*, so
    they can be acquired and enabled by the platform driver.
    
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: mediatek: mt8188: Treat DMIC_GAINx_CUR as non-volatile [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Tue Feb 25 11:33:49 2025 -0300

    ASoC: mediatek: mt8188: Treat DMIC_GAINx_CUR as non-volatile
    
    [ Upstream commit 7d87bde21c73731ddaf15e572020f80999c38ee3 ]
    
    The DMIC_GAINx_CUR registers contain the current (as in present) gain of
    each DMIC. During capture, this gain will ramp up until a target value
    is reached, and therefore the register is volatile since it is updated
    automatically by hardware.
    
    However, after capture the register's value returns to the value that
    was written to it. So reading these registers returns the current gain,
    and writing configures the initial gain for every capture.
    
    >From an audio configuration perspective, reading the instantaneous gain
    is not really useful. Instead, reading back the initial gain that was
    configured is the desired behavior. For that reason, consider the
    DMIC_GAINx_CUR registers as non-volatile, so the regmap's cache can be
    used to retrieve the values, rather than requiring pm runtime resuming
    the device.
    
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: ops: Enforce platform maximum on initial value [+ + +]
Author: Martin Povišer <[email protected]>
Date:   Sat Feb 8 00:57:22 2025 +0000

    ASoC: ops: Enforce platform maximum on initial value
    
    [ Upstream commit 783db6851c1821d8b983ffb12b99c279ff64f2ee ]
    
    Lower the volume if it is violating the platform maximum at its initial
    value (i.e. at the time of the 'snd_soc_limit_volume' call).
    
    Signed-off-by: Martin Povišer <[email protected]>
    [Cherry picked from the Asahi kernel with fixups -- broonie]
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: pcm6240: Drop bogus code handling IRQ as GPIO [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Wed Mar 12 14:31:52 2025 +0100

    ASoC: pcm6240: Drop bogus code handling IRQ as GPIO
    
    [ Upstream commit 17fdf318f5fbe5c27353ae917c0c5a2899d9c259 ]
    
    The current code for the IRQ in pcm6240 makes no sense:
    it looks up an IRQ with of_irq_get(), treat it as a GPIO
    by issuing gpio_request(), gpio_direction_input()
    and gpio_to_irq() on it.
    
    This is just wrong, if the device tree assigns the IRQ
    from a GPIO number this is just incorrect: it is clearly
    stated that GPIO providers and IRQ providers are
    orthogonal.
    
    It is possible to look up an IRQ to a corresponding GPIO
    line but this is taking an IRQ and pretending it's a
    GPIO, which is just semantically wrong.
    
    Drop the offending code and treat the IRQ that we get
    from the device tree as any other IRQ, see for example
    other codec drivers.
    
    The DT bindings for this codec does not have any in-tree
    DTS files, which may explain why things are weird.
    
    As a bonus, this moves the driver away from the legacy
    <linux/gpio.h> include.
    
    Signed-off-by: Linus Walleij <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup() [+ + +]
Author: Alexey Klimov <[email protected]>
Date:   Fri Feb 28 16:14:30 2025 +0000

    ASoC: qcom: sm8250: explicitly set format in sm8250_be_hw_params_fixup()
    
    [ Upstream commit 89be3c15a58b2ccf31e969223c8ac93ca8932d81 ]
    
    Setting format to s16le is required for compressed playback on compatible
    soundcards.
    
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Alexey Klimov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: rt722-sdca: Add some missing readable registers [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Tue Jan 7 15:44:07 2025 +0000

    ASoC: rt722-sdca: Add some missing readable registers
    
    [ Upstream commit f9a5c4b6afc79073491acdab7f1e943ee3a19fbb ]
    
    Add a few missing registers from the readable register callback.
    
    Suggested-by: Shuming Fan <[email protected]>
    Signed-off-by: Charles Keepax <[email protected]>
    Reviewed-by: Pierre-Louis Bossart <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: sma1307: Add NULL check in sma1307_setting_loaded() [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Mon Mar 10 20:57:14 2025 -0500

    ASoC: sma1307: Add NULL check in sma1307_setting_loaded()
    
    [ Upstream commit 0ec6bd16705fe21d6429d6b8f7981eae2142bba8 ]
    
    All varibale allocated by kzalloc and devm_kzalloc could be NULL.
    Multiple pointer checks and their cleanup are added.
    
    This issue is found by our static analysis tool
    
    Signed-off-by: Chenyuan Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: sma1307: Fix error handling in sma1307_setting_loaded() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Fri Mar 21 17:35:25 2025 +0300

    ASoC: sma1307: Fix error handling in sma1307_setting_loaded()
    
    [ Upstream commit 012a6efcc805308b1d90a1056ba963eb08858645 ]
    
    There are a couple bugs in this code:
    
    1) The cleanup code calls kfree(sma1307->set.header) and
       kfree(sma1307->set.def) but those functions were allocated using
       devm_kzalloc().  It results in a double free.  Delete all these
       kfree() calls.
    
    2) A missing call to kfree(data) if the checksum was wrong on this error
       path:
            if ((sma1307->set.checksum >> 8) != SMA1307_SETTING_CHECKSUM) {
       Since the "data" pointer is supposed to be freed on every return, I
       changed that to use the __free(kfree) cleanup attribute.
    
    Fixes: 0ec6bd16705f ("ASoC: sma1307: Add NULL check in sma1307_setting_loaded()")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot() [+ + +]
Author: Kuninori Morimoto <[email protected]>
Date:   Wed Feb 12 02:24:38 2025 +0000

    ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()
    
    [ Upstream commit 7f1186a8d738661b941b298fd6d1d5725ed71428 ]
    
    snd_soc_dai_set_tdm_slot() calls .xlate_tdm_slot_mask() or
    snd_soc_xlate_tdm_slot_mask(), but didn't check its return value.
    Let's check it.
    
    This patch might break existing driver. In such case, let's makes
    each func to void instead of int.
    
    Signed-off-by: Kuninori Morimoto <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: Intel: hda-bus: Use PIO mode on ACE2+ platforms [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Fri May 9 11:13:08 2025 +0300

    ASoC: SOF: Intel: hda-bus: Use PIO mode on ACE2+ platforms
    
    commit 4e7010826e96702d7fad13dbe85de4e94052f833 upstream.
    
    Keep using the PIO mode for commands on ACE2+ platforms, similarly how
    the legacy stack is configured.
    
    Fixes: 05cf17f1bf6d ("ASoC: SOF: Intel: hda-bus: Use PIO mode for Lunar Lake")
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Bard Liao <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: SOF: Intel: hda: Fix UAF when reloading module [+ + +]
Author: Tavian Barnes <[email protected]>
Date:   Wed May 14 09:37:49 2025 -0400

    ASoC: SOF: Intel: hda: Fix UAF when reloading module
    
    [ Upstream commit 7dd7f39fce0022b386ef1ea5ffef92ecc7dfc6af ]
    
    hda_generic_machine_select() appends -idisp to the tplg filename by
    allocating a new string with devm_kasprintf(), then stores the string
    right back into the global variable snd_soc_acpi_intel_hda_machines.
    When the module is unloaded, this memory is freed, resulting in a global
    variable pointing to freed memory.  Reloading the module then triggers
    a use-after-free:
    
    BUG: KFENCE: use-after-free read in string+0x48/0xe0
    
    Use-after-free read at 0x00000000967e0109 (in kfence-#99):
     string+0x48/0xe0
     vsnprintf+0x329/0x6e0
     devm_kvasprintf+0x54/0xb0
     devm_kasprintf+0x58/0x80
     hda_machine_select.cold+0x198/0x17a2 [snd_sof_intel_hda_generic]
     sof_probe_work+0x7f/0x600 [snd_sof]
     process_one_work+0x17b/0x330
     worker_thread+0x2ce/0x3f0
     kthread+0xcf/0x100
     ret_from_fork+0x31/0x50
     ret_from_fork_asm+0x1a/0x30
    
    kfence-#99: 0x00000000198a940f-0x00000000ace47d9d, size=64, cache=kmalloc-64
    
    allocated by task 333 on cpu 8 at 17.798069s (130.453553s ago):
     devm_kmalloc+0x52/0x120
     devm_kvasprintf+0x66/0xb0
     devm_kasprintf+0x58/0x80
     hda_machine_select.cold+0x198/0x17a2 [snd_sof_intel_hda_generic]
     sof_probe_work+0x7f/0x600 [snd_sof]
     process_one_work+0x17b/0x330
     worker_thread+0x2ce/0x3f0
     kthread+0xcf/0x100
     ret_from_fork+0x31/0x50
     ret_from_fork_asm+0x1a/0x30
    
    freed by task 1543 on cpu 4 at 141.586686s (6.665010s ago):
     release_nodes+0x43/0xb0
     devres_release_all+0x90/0xf0
     device_unbind_cleanup+0xe/0x70
     device_release_driver_internal+0x1c1/0x200
     driver_detach+0x48/0x90
     bus_remove_driver+0x6d/0xf0
     pci_unregister_driver+0x42/0xb0
     __do_sys_delete_module+0x1d1/0x310
     do_syscall_64+0x82/0x190
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fix it by copying the match array with devm_kmemdup_array() before we
    modify it.
    
    Fixes: 5458411d7594 ("ASoC: SOF: Intel: hda: refactoring topology name fixup for HDA mach")
    Suggested-by: Peter Ujfalusi <[email protected]>
    Acked-by: Peter Ujfalusi <[email protected]>
    Signed-off-by: Tavian Barnes <[email protected]>
    Link: https://patch.msgid.link/570b15570b274520a0d9052f4e0f064a29c950ef.1747229716.git.tavianator@tavianator.com
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Fri May 9 11:56:33 2025 +0300

    ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext
    
    commit 4d14b1069e9e672dbe1adab52594076da6f4a62d upstream.
    
    The header.numid is set to scontrol->comp_id in bytes_ext_get and it is
    ignored during bytes_ext_put.
    The use of comp_id is not quite great as it is kernel internal
    identification number.
    
    Set the header.numid to SOF_CTRL_CMD_BINARY during get and validate the
    numid during put to provide consistent and compatible identification
    number as IPC3.
    
    For IPC4 existing tooling also ignored the numid but with the use of
    SOF_CTRL_CMD_BINARY the different handling of the blobs can be dropped,
    providing better user experience.
    
    Reported-by: Seppo Ingalsuo <[email protected]>
    Closes: https://github.com/thesofproject/linux/issues/5282
    Fixes: a062c8899fed ("ASoC: SOF: ipc4-control: Add support for bytes control get and put")
    Cc: [email protected]
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Seppo Ingalsuo <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: SOF: ipc4-pcm: Delay reporting is only supported for playback direction [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Fri May 9 11:59:51 2025 +0300

    ASoC: SOF: ipc4-pcm: Delay reporting is only supported for playback direction
    
    commit 98db16f314b3a0d6e5acd94708ea69751436467f upstream.
    
    The firmware does not provide any information for capture streams via the
    shared pipeline registers.
    
    To avoid reporting invalid delay value for capture streams to user space
    we need to disable it.
    
    Fixes: af74dbd0dbcf ("ASoC: SOF: ipc4-pcm: allocate time info for pcm delay feature")
    Cc: [email protected]
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Bard Liao <[email protected]>
    Reviewed-by: Liam Girdwood <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoc: SOF: topology: connect DAI to a single DAI link [+ + +]
Author: Kai Vehmanen <[email protected]>
Date:   Fri May 9 11:53:18 2025 +0300

    ASoc: SOF: topology: connect DAI to a single DAI link
    
    commit 6052f05254b4fe7b16bbd8224779af52fba98b71 upstream.
    
    The partial matching of DAI widget to link names, can cause problems if
    one of the widget names is a substring of another. E.g. with names
    "Foo1" and Foo10", it's not possible to correctly link up "Foo1".
    
    Modify the logic so that if multiple DAI links match the widget stream
    name, prioritize a full match if one is found.
    
    Fixes: fe88788779fc ("ASoC: SOF: topology: Use partial match for connecting DAI link and DAI widget")
    Link: https://github.com/thesofproject/linux/issues/5308
    Signed-off-by: Kai Vehmanen <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Cc: [email protected]
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: sun4i-codec: correct dapm widgets and controls for h616 [+ + +]
Author: Ryan Walklin <[email protected]>
Date:   Sat Feb 15 11:02:24 2025 +1300

    ASoC: sun4i-codec: correct dapm widgets and controls for h616
    
    [ Upstream commit ae5f76d4044d1580849316c49290678605e0889d ]
    
    The previous H616 support patch added a single LINEOUT DAPM pin switch
    to the card controls. As the codec in this SoC only has a single route,
    this seemed reasonable at the time, however is redundant given the
    existing DAPM codec widget definitions controlling the digital and
    analog sides of the codec.
    
    It is also insufficient to describe the scenario where separate
    components (muxes, jack detection etc) are used to modify the audio
    route external to the SoC. For example the Anbernic RG(##)XX series of
    devices uses a headphone jack detection switch, GPIO-controlled speaker
    amplifier and a passive external mux chip to route audio.
    
    Remove the redundant LINEOUT card control, and add a Speaker pin switch
    control and Headphone DAPM widget to allow control of the above
    hardware.
    
    Signed-off-by: Chris Morgan <[email protected]>
    Signed-off-by: Ryan Walklin <[email protected]>
    Tested-by: Philippe Simons <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: sun4i-codec: support hp-det-gpios property [+ + +]
Author: Ryan Walklin <[email protected]>
Date:   Sat Feb 15 11:02:25 2025 +1300

    ASoC: sun4i-codec: support hp-det-gpios property
    
    [ Upstream commit a149377c033afe6557c50892ebbfc0e8b7e2e253 ]
    
    Add support for GPIO headphone detection with the hp-det-gpios
    property. In order for this to properly disable the path upon
    removal of headphones, the output must be labelled Headphone which
    is a common sink in the driver.
    
    Describe a headphone jack and detection GPIO in the driver, check for
    a corresponding device tree node, and enable jack detection in a new
    machine init function if described.
    
    Signed-off-by: Chris Morgan <[email protected]>
    Signed-off-by: Ryan Walklin <[email protected]>
    
    --
    Changelog v1..v2:
    - Separate DAPM changes into separate patch and add rationale.
    
    Tested-by: Philippe Simons <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG [+ + +]
Author: Hector Martin <[email protected]>
Date:   Sat Feb 8 01:03:27 2025 +0000

    ASoC: tas2764: Add reg defaults for TAS2764_INT_CLK_CFG
    
    [ Upstream commit d64c4c3d1c578f98d70db1c5e2535b47adce9d07 ]
    
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tas2764: Mark SW_RESET as volatile [+ + +]
Author: Hector Martin <[email protected]>
Date:   Sat Feb 8 01:03:26 2025 +0000

    ASoC: tas2764: Mark SW_RESET as volatile
    
    [ Upstream commit f37f1748564ac51d32f7588bd7bfc99913ccab8e ]
    
    Since the bit is self-clearing.
    
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tas2764: Power up/down amp on mute ops [+ + +]
Author: Hector Martin <[email protected]>
Date:   Sat Feb 8 01:03:24 2025 +0000

    ASoC: tas2764: Power up/down amp on mute ops
    
    [ Upstream commit 1c3b5f37409682184669457a5bdf761268eafbe5 ]
    
    The ASoC convention is that clocks are removed after codec mute, and
    power up/down is more about top level power management. For these chips,
    the "mute" state still expects a TDM clock, and yanking the clock in
    this state will trigger clock errors. So, do the full
    shutdown<->mute<->active transition on the mute operation, so the amp is
    in software shutdown by the time the clocks are removed.
    
    This fixes TDM clock errors when streams are stopped.
    
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common" [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Mon Feb 24 19:27:38 2025 +0200

    auxdisplay: charlcd: Partially revert "Move hwidth and bwidth to struct hd44780_common"
    
    [ Upstream commit 09965a142078080fe7807bab0f6f1890cb5987a4 ]
    
    Commit 2545c1c948a6 ("auxdisplay: Move hwidth and bwidth to struct
    hd44780_common") makes charlcd_alloc() argument-less effectively dropping
    the single allocation for the struct charlcd_priv object along with
    the driver specific one. Restore that behaviour here.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
badblocks: Fix a nonsense WARN_ON() which checks whether a u64 variable < 0 [+ + +]
Author: Coly Li <[email protected]>
Date:   Sun Mar 9 12:05:56 2025 -0400

    badblocks: Fix a nonsense WARN_ON() which checks whether a u64 variable < 0
    
    [ Upstream commit 7e76336e14de9a2b67af96012ddd46c5676cf340 ]
    
    In _badblocks_check(), there are lines of code like this,
    1246         sectors -= len;
    [snipped]
    1251         WARN_ON(sectors < 0);
    
    The WARN_ON() at line 1257 doesn't make sense because sectors is
    unsigned long long type and never to be <0.
    
    Fix it by checking directly checking whether sectors is less than len.
    
    Reported-by: Dan Carpenter <[email protected]>
    Signed-off-by: Coly Li <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
blk-cgroup: improve policy registration error handling [+ + +]
Author: Chen Linxuan <[email protected]>
Date:   Mon Mar 17 10:29:24 2025 +0800

    blk-cgroup: improve policy registration error handling
    
    [ Upstream commit e1a0202c6bfda24002a3ae2115154fa90104c649 ]
    
    This patch improve the returned error code of blkcg_policy_register().
    
    1. Move the validation check for cpd/pd_alloc_fn and cpd/pd_free_fn
       function pairs to the start of blkcg_policy_register(). This ensures
       we immediately return -EINVAL if the function pairs are not correctly
       provided, rather than returning -ENOSPC after locking and unlocking
       mutexes unnecessarily.
    
       Those locks should not contention any problems, as error of policy
       registration is a super cold path.
    
    2. Return -ENOMEM when cpd_alloc_fn() failed.
    
    Co-authored-by: Wen Tao <[email protected]>
    Signed-off-by: Wen Tao <[email protected]>
    Signed-off-by: Chen Linxuan <[email protected]>
    Reviewed-by: Michal Koutný <[email protected]>
    Acked-by: Tejun Heo <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/3E333A73B6B6DFC0+20250317022924.150907-1-chenlinxuan@uniontech.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
blk-throttle: don't take carryover for prioritized processing of metadata [+ + +]
Author: Ming Lei <[email protected]>
Date:   Wed Mar 5 12:31:20 2025 +0800

    blk-throttle: don't take carryover for prioritized processing of metadata
    
    [ Upstream commit a9fc8868b350cbf4ff730a4ea9651319cc669516 ]
    
    Commit 29390bb5661d ("blk-throttle: support prioritized processing of metadata")
    takes bytes/ios carryover for prioritized processing of metadata. Turns out
    we can support it by charging it directly without trimming slice, and the
    result is same with carryover.
    
    Cc: Tejun Heo <[email protected]>
    Cc: Josef Bacik <[email protected]>
    Cc: Yu Kuai <[email protected]>
    Signed-off-by: Ming Lei <[email protected]>
    Acked-by: Tejun Heo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block: acquire q->limits_lock while reading sysfs attributes [+ + +]
Author: Nilay Shroff <[email protected]>
Date:   Tue Mar 4 15:52:30 2025 +0530

    block: acquire q->limits_lock while reading sysfs attributes
    
    [ Upstream commit 6e51a1279cd60cb93e3379ff140d8fa6c39ecf20 ]
    
    There're few sysfs attributes(RW) whose store method is protected
    with q->limits_lock, however the corresponding show method of these
    attributes run holding q->sysfs_lock and that doesn't make sense
    as ideally the show method of these attributes should also run
    holding q->limits_lock instead of q->sysfs_lock. Hence update the
    show method of these sysfs attributes so that reading of these
    attributes acquire q->limits_lock instead of q->sysfs_lock.
    
    Similarly, there're few sysfs attributes(RO) whose show method is
    currently protected with q->sysfs_lock however updates to these
    attributes could occur using atomic limit update APIs such as queue_
    limits_start_update() and queue_limits_commit_update() which run
    holding q->limits_lock. So that means that reading these attributes
    holding q->sysfs_lock doesn't make sense. Hence update the show method
    of these sysfs attributes(RO) such that they run with holding q->
    limits_lock instead of q->sysfs_lock.
    
    We have defined a new macro QUEUE_LIM_RO_ENTRY() which uses new ->show_
    limit() method and it runs holding q->limits_lock. All existing sysfs
    attributes(RO) which needs protection using q->limits_lock while
    reading have been now updated to use this new macro for initialization.
    
    Also, the existing QUEUE_LIM_RW_ENTRY() is updated to use new ->show_
    limit() method for reading attributes instead of existing ->show()
    method. As ->show_limit() runs holding q->limits_lock, the existing
    sysfs attributes(RW) requiring protection are now inherently protected
    using q->limits_lock instead of q->sysfs_lock.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Signed-off-by: Nilay Shroff <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

block: fix race between set_blocksize and read paths [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Wed Apr 23 12:53:42 2025 -0700

    block: fix race between set_blocksize and read paths
    
    [ Upstream commit c0e473a0d226479e8e925d5ba93f751d8df628e9 ]
    
    With the new large sector size support, it's now the case that
    set_blocksize can change i_blksize and the folio order in a manner that
    conflicts with a concurrent reader and causes a kernel crash.
    
    Specifically, let's say that udev-worker calls libblkid to detect the
    labels on a block device.  The read call can create an order-0 folio to
    read the first 4096 bytes from the disk.  But then udev is preempted.
    
    Next, someone tries to mount an 8k-sectorsize filesystem from the same
    block device.  The filesystem calls set_blksize, which sets i_blksize to
    8192 and the minimum folio order to 1.
    
    Now udev resumes, still holding the order-0 folio it allocated.  It then
    tries to schedule a read bio and do_mpage_readahead tries to create
    bufferheads for the folio.  Unfortunately, blocks_per_folio == 0 because
    the page size is 4096 but the blocksize is 8192 so no bufferheads are
    attached and the bh walk never sets bdev.  We then submit the bio with a
    NULL block device and crash.
    
    Therefore, truncate the page cache after flushing but before updating
    i_blksize.  However, that's not enough -- we also need to lock out file
    IO and page faults during the update.  Take both the i_rwsem and the
    invalidate_lock in exclusive mode for invalidations, and in shared mode
    for read/write operations.
    
    I don't know if this is the correct fix, but xfs/259 found it.
    
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Luis Chamberlain <[email protected]>
    Tested-by: Shin'ichiro Kawasaki <[email protected]>
    Link: https://lore.kernel.org/r/174543795699.4139148.2086129139322431423.stgit@frogsfrogsfrogs
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

block: hoist block size validation code to a separate function [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Wed Apr 23 12:53:57 2025 -0700

    block: hoist block size validation code to a separate function
    
    [ Upstream commit e03463d247ddac66e71143468373df3d74a3a6bd ]
    
    Hoist the block size validation code to bdev_validate_blocksize so that
    we can call it from filesystems that don't care about the bdev pagecache
    manipulations of set_blocksize.
    
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Luis Chamberlain <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/174543795720.4139148.840349813093799165.stgit@frogsfrogsfrogs
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

block: mark bounce buffering as incompatible with integrity [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Tue Feb 25 07:44:31 2025 -0800

    block: mark bounce buffering as incompatible with integrity
    
    [ Upstream commit 5fd0268a8806d35dcaf89139bfcda92be51b2b2f ]
    
    None of the few drivers still using the legacy block layer bounce
    buffering support integrity metadata.  Explicitly mark the features as
    incompatible and stop creating the slab and mempool for integrity
    buffers for the bounce bio_set.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Anuj Gupta <[email protected]>
    Reviewed-by: Martin K. Petersen <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

block: only update request sector if needed [+ + +]
Author: Johannes Thumshirn <[email protected]>
Date:   Tue May 6 13:27:30 2025 +0200

    block: only update request sector if needed
    
    [ Upstream commit db492e24f9b05547ba12b4783f09c9d943cf42fe ]
    
    In case of a ZONE APPEND write, regardless of native ZONE APPEND or the
    emulation layer in the zone write plugging code, the sector the data got
    written to by the device needs to be updated in the bio.
    
    At the moment, this is done for every native ZONE APPEND write and every
    request that is flagged with 'BIO_ZONE_WRITE_PLUGGING'. But thus
    superfluously updates the sector for regular writes to a zoned block
    device.
    
    Check if a bio is a native ZONE APPEND write or if the bio is flagged as
    'BIO_EMULATES_ZONE_APPEND', meaning the block layer's zone write plugging
    code handles the ZONE APPEND and translates it into a regular write and
    back. Only if one of these two criterion is met, update the sector in the
    bio upon completion.
    
    Signed-off-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/dea089581cb6b777c1cd1500b38ac0b61df4b2d1.1746530748.git.jth@kernel.org
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: btmtksdio: Check function enabled before doing close [+ + +]
Author: Chris Lu <[email protected]>
Date:   Tue Apr 22 09:21:55 2025 +0800

    Bluetooth: btmtksdio: Check function enabled before doing close
    
    commit 07e90048e356a29079fbc011cfc2e1fa1d1c5ac9 upstream.
    
    Check BTMTKSDIO_FUNC_ENABLED flag before doing close to prevent
    btmtksdio_close been called twice.
    
    Fixes: 6ac4233afb9a ("Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal")
    Signed-off-by: Chris Lu <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Bluetooth: btmtksdio: Do close if SDIO card removed without close [+ + +]
Author: Chris Lu <[email protected]>
Date:   Tue Apr 22 09:21:56 2025 +0800

    Bluetooth: btmtksdio: Do close if SDIO card removed without close
    
    commit 0b6d58bc6ea85e57de25c828444928e4a0aa79cb upstream.
    
    To prevent Bluetooth SDIO card from be physically removed suddenly,
    driver needs to ensure btmtksdio_close is called before
    btmtksdio_remove to disable interrupts and txrx workqueue.
    
    Fixes: 6ac4233afb9a ("Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal")
    Signed-off-by: Chris Lu <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal [+ + +]
Author: Sean Wang <[email protected]>
Date:   Tue Mar 11 18:25:22 2025 -0700

    Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal
    
    [ Upstream commit 6ac4233afb9a389a7629b7f812395d1d1eca5a83 ]
    
    Ensure interrupts are not re-enabled when the IRQ handler has already been
    removed. This prevents unexpected IRQ handler execution due to stale or
    unhandled interrupts.
    
    Modify btmtksdio_txrx_work to check if bdev->func->irq_handler exists
    before calling sdio_writel to enable interrupts.
    
    Co-developed-by: Pedro Tsai <[email protected]>
    Signed-off-by: Pedro Tsai <[email protected]>
    Co-developed-by: Felix Freimann <[email protected]>
    Signed-off-by: Felix Freimann <[email protected]>
    Signed-off-by: Sean Wang <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: btusb: use skb_pull to avoid unsafe access in QCA dump handling [+ + +]
Author: En-Wei Wu <[email protected]>
Date:   Thu May 8 22:15:20 2025 +0800

    Bluetooth: btusb: use skb_pull to avoid unsafe access in QCA dump handling
    
    [ Upstream commit 4bcb0c7dc25446b99fc7a8fa2a143d69f3314162 ]
    
    Use skb_pull() and skb_pull_data() to safely parse QCA dump packets.
    
    This avoids direct pointer math on skb->data, which could lead to
    invalid access if the packet is shorter than expected.
    
    Fixes: 20981ce2d5a5 ("Bluetooth: btusb: Add WCN6855 devcoredump support")
    Signed-off-by: En-Wei Wu <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: Disable SCO support if READ_VOICE_SETTING is unsupported/broken [+ + +]
Author: Pedro Nishiyama <[email protected]>
Date:   Sat Mar 1 03:23:00 2025 -0300

    Bluetooth: Disable SCO support if READ_VOICE_SETTING is unsupported/broken
    
    [ Upstream commit 14d17c78a4b1660c443bae9d38c814edea506f62 ]
    
    A SCO connection without the proper voice_setting can cause
    the controller to lock up.
    
    Signed-off-by: Pedro Nishiyama <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix not checking l2cap_chan security level [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed May 7 15:00:30 2025 -0400

    Bluetooth: L2CAP: Fix not checking l2cap_chan security level
    
    [ Upstream commit 7af8479d9eb4319b4ba7b47a8c4d2c55af1c31e1 ]
    
    l2cap_check_enc_key_size shall check the security level of the
    l2cap_chan rather than the hci_conn since for incoming connection
    request that may be different as hci_conn may already been
    encrypted using a different security level.
    
    Fixes: 522e9ed157e3 ("Bluetooth: l2cap: Check encryption key size on incoming connection")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bnxt_en: Query FW parameters when the CAPS_CHANGE bit is set [+ + +]
Author: shantiprasad shettar <[email protected]>
Date:   Mon Mar 10 11:31:26 2025 -0700

    bnxt_en: Query FW parameters when the CAPS_CHANGE bit is set
    
    [ Upstream commit a6c81e32aeacbfd530d576fa401edd506ec966ef ]
    
    Newer FW can set the CAPS_CHANGE flag during ifup if some capabilities
    or configurations have changed.  For example, the CoS queue
    configurations may have changed.  Support this new flag by treating it
    almost like FW reset.  The driver will essentially rediscover all
    features and capabilities, reconfigure all backing store context memory,
    reset everything to default, and reserve all resources.
    
    Reviewed-by: Somnath Kotur <[email protected]>
    Reviewed-by: Pavan Chebbi <[email protected]>
    Signed-off-by: shantiprasad shettar <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bnxt_en: Set NPAR 1.2 support when registering with firmware [+ + +]
Author: Michael Chan <[email protected]>
Date:   Wed Feb 12 17:12:29 2025 -0800

    bnxt_en: Set NPAR 1.2 support when registering with firmware
    
    [ Upstream commit ebdf7fe488c512b18add66b6c26e11e4d3830213 ]
    
    NPAR (Network interface card partitioning)[1] 1.2 adds a transparent
    VLAN tag for all packets between the NIC and the switch.  Because of
    that, RX VLAN acceleration cannot be supported for any additional
    host configured VLANs.  The driver has to acknowledge that it can
    support no RX VLAN acceleration and set the NPAR 1.2 supported flag
    when registering with the FW.  Otherwise, the FW call will fail and
    the driver will abort on these NPAR 1.2 NICs with this error:
    
    bnxt_en 0000:26:00.0 (unnamed net_device) (uninitialized): hwrm req_type 0x1d seq id 0xb error 0x2
    
    [1] https://techdocs.broadcom.com/us/en/storage-and-ethernet-connectivity/ethernet-nic-controllers/bcm957xxx/adapters/introduction/features/network-partitioning-npar.html
    
    Reviewed-by: Somnath Kotur <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Signed-off-by: Michael Chan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bonding: report duplicate MAC address in all situations [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Tue Feb 25 03:39:14 2025 +0000

    bonding: report duplicate MAC address in all situations
    
    [ Upstream commit 28d68d396a1cd21591e8c6d74afbde33a7ea107e ]
    
    Normally, a bond uses the MAC address of the first added slave as the bond’s
    MAC address. And the bond will set active slave’s MAC address to bond’s
    address if fail_over_mac is set to none (0) or follow (2).
    
    When the first slave is removed, the bond will still use the removed slave’s
    MAC address, which can lead to a duplicate MAC address and potentially cause
    issues with the switch. To avoid confusion, let's warn the user in all
    situations, including when fail_over_mac is set to 2 or not in active-backup
    mode.
    
    Signed-off-by: Hangbin Liu <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
book3s64/radix: Fix compile errors when CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=n [+ + +]
Author: Ritesh Harjani (IBM) <[email protected]>
Date:   Mon Mar 10 07:44:09 2025 -0500

    book3s64/radix: Fix compile errors when CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=n
    
    [ Upstream commit 29bdc1f1c1df80868fb35bc69d1f073183adc6de ]
    
    Fix compile errors when CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=n
    
    Signed-off-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Donet Tom <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/8231763344223c193e3452eab0ae8ea966aff466.1741609795.git.donettom@linux.ibm.com
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: abort verification if env->cur_state->loop_entry != NULL [+ + +]
Author: Eduard Zingerman <[email protected]>
Date:   Mon Feb 24 16:38:38 2025 -0800

    bpf: abort verification if env->cur_state->loop_entry != NULL
    
    [ Upstream commit f3c2d243a36ef23be07bc2bce7c6a5cb6e07d9e3 ]
    
    In addition to warning abort verification with -EFAULT.
    If env->cur_state->loop_entry != NULL something is irrecoverably
    buggy.
    
    Fixes: bbbc02b7445e ("bpf: copy_verifier_state() should copy 'loop_entry' field")
    Suggested-by: Andrii Nakryiko <[email protected]>
    Signed-off-by: Eduard Zingerman <[email protected]>
    Acked-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Allow pre-ordering for bpf cgroup progs [+ + +]
Author: Yonghong Song <[email protected]>
Date:   Mon Feb 24 15:01:16 2025 -0800

    bpf: Allow pre-ordering for bpf cgroup progs
    
    [ Upstream commit 4b82b181a26cff8bf7adc3a85a88d121d92edeaf ]
    
    Currently for bpf progs in a cgroup hierarchy, the effective prog array
    is computed from bottom cgroup to upper cgroups (post-ordering). For
    example, the following cgroup hierarchy
        root cgroup: p1, p2
            subcgroup: p3, p4
    have BPF_F_ALLOW_MULTI for both cgroup levels.
    The effective cgroup array ordering looks like
        p3 p4 p1 p2
    and at run time, progs will execute based on that order.
    
    But in some cases, it is desirable to have root prog executes earlier than
    children progs (pre-ordering). For example,
      - prog p1 intends to collect original pkt dest addresses.
      - prog p3 will modify original pkt dest addresses to a proxy address for
        security reason.
    The end result is that prog p1 gets proxy address which is not what it
    wants. Putting p1 to every child cgroup is not desirable either as it
    will duplicate itself in many child cgroups. And this is exactly a use case
    we are encountering in Meta.
    
    To fix this issue, let us introduce a flag BPF_F_PREORDER. If the flag
    is specified at attachment time, the prog has higher priority and the
    ordering with that flag will be from top to bottom (pre-ordering).
    For example, in the above example,
        root cgroup: p1, p2
            subcgroup: p3, p4
    Let us say p2 and p4 are marked with BPF_F_PREORDER. The final
    effective array ordering will be
        p2 p4 p3 p1
    
    Suggested-by: Andrii Nakryiko <[email protected]>
    Acked-by: Andrii Nakryiko <[email protected]>
    Signed-off-by: Yonghong Song <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: arm64: Silence "UBSAN: negation-overflow" warning [+ + +]
Author: Song Liu <[email protected]>
Date:   Tue Feb 18 00:02:40 2025 -0800

    bpf: arm64: Silence "UBSAN: negation-overflow" warning
    
    [ Upstream commit 239860828f8660e2be487e2fbdae2640cce3fd67 ]
    
    With UBSAN, test_bpf.ko triggers warnings like:
    
    UBSAN: negation-overflow in arch/arm64/net/bpf_jit_comp.c:1333:28
    negation of -2147483648 cannot be represented in type 's32' (aka 'int'):
    
    Silence these warnings by casting imm to u32 first.
    
    Reported-by: Breno Leitao <[email protected]>
    Signed-off-by: Song Liu <[email protected]>
    Tested-by: Breno Leitao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: copy_verifier_state() should copy 'loop_entry' field [+ + +]
Author: Eduard Zingerman <[email protected]>
Date:   Sat Feb 15 03:03:52 2025 -0800

    bpf: copy_verifier_state() should copy 'loop_entry' field
    
    [ Upstream commit bbbc02b7445ebfda13e4847f4f1413c6480a85a9 ]
    
    The bpf_verifier_state.loop_entry state should be copied by
    copy_verifier_state(). Otherwise, .loop_entry values from unrelated
    states would poison env->cur_state.
    
    Additionally, env->stack should not contain any states with
    .loop_entry != NULL. The states in env->stack are yet to be verified,
    while .loop_entry is set for states that reached an equivalent state.
    This means that env->cur_state->loop_entry should always be NULL after
    pop_stack().
    
    See the selftest in the next commit for an example of the program that
    is not safe yet is accepted by verifier w/o this fix.
    
    This change has some verification performance impact for selftests:
    
    File                                Program                       Insns (A)  Insns (B)  Insns   (DIFF)  States (A)  States (B)  States (DIFF)
    ----------------------------------  ----------------------------  ---------  ---------  --------------  ----------  ----------  -------------
    arena_htab.bpf.o                    arena_htab_llvm                     717        426  -291 (-40.59%)          57          37  -20 (-35.09%)
    arena_htab_asm.bpf.o                arena_htab_asm                      597        445  -152 (-25.46%)          47          37  -10 (-21.28%)
    arena_list.bpf.o                    arena_list_del                      309        279    -30 (-9.71%)          23          14   -9 (-39.13%)
    iters.bpf.o                         iter_subprog_check_stacksafe        155        141    -14 (-9.03%)          15          14    -1 (-6.67%)
    iters.bpf.o                         iter_subprog_iters                 1094       1003    -91 (-8.32%)          88          83    -5 (-5.68%)
    iters.bpf.o                         loop_state_deps2                    479        725  +246 (+51.36%)          46          63  +17 (+36.96%)
    kmem_cache_iter.bpf.o               open_coded_iter                      63         59     -4 (-6.35%)           7           6   -1 (-14.29%)
    verifier_bits_iter.bpf.o            max_words                            92         84     -8 (-8.70%)           8           7   -1 (-12.50%)
    verifier_iterating_callbacks.bpf.o  cond_break2                         113        107     -6 (-5.31%)          12          12    +0 (+0.00%)
    
    And significant negative impact for sched_ext:
    
    File               Program                 Insns (A)  Insns (B)  Insns         (DIFF)  States (A)  States (B)  States      (DIFF)
    -----------------  ----------------------  ---------  ---------  --------------------  ----------  ----------  ------------------
    bpf.bpf.o          lavd_init                    7039      14723      +7684 (+109.16%)         490        1139     +649 (+132.45%)
    bpf.bpf.o          layered_dispatch            11485      10548         -937 (-8.16%)         848         762       -86 (-10.14%)
    bpf.bpf.o          layered_dump                 7422    1000001  +992579 (+13373.47%)         681       31178  +30497 (+4478.27%)
    bpf.bpf.o          layered_enqueue             16854      71127     +54273 (+322.02%)        1611        6450    +4839 (+300.37%)
    bpf.bpf.o          p2dq_dispatch                 665        791        +126 (+18.95%)          68          78       +10 (+14.71%)
    bpf.bpf.o          p2dq_init                    2343       2980        +637 (+27.19%)         201         237       +36 (+17.91%)
    bpf.bpf.o          refresh_layer_cpumasks      16487     674760   +658273 (+3992.68%)        1770       65370  +63600 (+3593.22%)
    bpf.bpf.o          rusty_select_cpu             1937      40872    +38935 (+2010.07%)         177        3210   +3033 (+1713.56%)
    scx_central.bpf.o  central_dispatch              636       2687      +2051 (+322.48%)          63         227     +164 (+260.32%)
    scx_nest.bpf.o     nest_init                     636        815        +179 (+28.14%)          60          73       +13 (+21.67%)
    scx_qmap.bpf.o     qmap_dispatch                2393       3580       +1187 (+49.60%)         196         253       +57 (+29.08%)
    scx_qmap.bpf.o     qmap_dump                     233        318         +85 (+36.48%)          22          30        +8 (+36.36%)
    scx_qmap.bpf.o     qmap_init                   16367      17436        +1069 (+6.53%)         603         669       +66 (+10.95%)
    
    Note 'layered_dump' program, which now hits 1M instructions limit.
    This impact would be mitigated in the next patch.
    
    Signed-off-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: don't do clean_live_states when state->loop_entry->branches > 0 [+ + +]
Author: Eduard Zingerman <[email protected]>
Date:   Sat Feb 15 03:03:54 2025 -0800

    bpf: don't do clean_live_states when state->loop_entry->branches > 0
    
    [ Upstream commit 9e63fdb0cbdf3268c86638a8274f4d5549a82820 ]
    
    verifier.c:is_state_visited() uses RANGE_WITHIN states comparison rules
    for cached states that have loop_entry with non-zero branches count
    (meaning that loop_entry's verification is not yet done).
    
    The RANGE_WITHIN rules in regsafe()/stacksafe() require register and
    stack objects types to be identical in current and old states.
    
    verifier.c:clean_live_states() replaces registers and stack spills
    with NOT_INIT/STACK_INVALID marks, if these registers/stack spills are
    not read in any child state. This means that clean_live_states() works
    against loop convergence logic under some conditions. See selftest in
    the next patch for a specific example.
    
    Mitigate this by prohibiting clean_verifier_state() when
    state->loop_entry->branches > 0.
    
    This undoes negative verification performance impact of the
    copy_verifier_state() fix from the previous patch.
    Below is comparison between master and current patch.
    
    selftests:
    
    File                                Program                       Insns (A)  Insns (B)  Insns    (DIFF)  States (A)  States (B)  States  (DIFF)
    ----------------------------------  ----------------------------  ---------  ---------  ---------------  ----------  ----------  --------------
    arena_htab.bpf.o                    arena_htab_llvm                     717        423   -294 (-41.00%)          57          37   -20 (-35.09%)
    arena_htab_asm.bpf.o                arena_htab_asm                      597        445   -152 (-25.46%)          47          37   -10 (-21.28%)
    arena_list.bpf.o                    arena_list_add                     1493       1822   +329 (+22.04%)          30          37    +7 (+23.33%)
    arena_list.bpf.o                    arena_list_del                      309        261    -48 (-15.53%)          23          15    -8 (-34.78%)
    iters.bpf.o                         checkpoint_states_deletion        18125      22154  +4029 (+22.23%)         818         918  +100 (+12.22%)
    iters.bpf.o                         iter_nested_deeply_iters            593        367   -226 (-38.11%)          67          43   -24 (-35.82%)
    iters.bpf.o                         iter_nested_iters                   813        772     -41 (-5.04%)          79          72     -7 (-8.86%)
    iters.bpf.o                         iter_subprog_check_stacksafe        155        135    -20 (-12.90%)          15          14     -1 (-6.67%)
    iters.bpf.o                         iter_subprog_iters                 1094        808   -286 (-26.14%)          88          68   -20 (-22.73%)
    iters.bpf.o                         loop_state_deps2                    479        356   -123 (-25.68%)          46          35   -11 (-23.91%)
    iters.bpf.o                         triple_continue                      35         31     -4 (-11.43%)           3           3     +0 (+0.00%)
    kmem_cache_iter.bpf.o               open_coded_iter                      63         59      -4 (-6.35%)           7           6    -1 (-14.29%)
    mptcp_subflow.bpf.o                 _getsockopt_subflow                 501        446    -55 (-10.98%)          25          23     -2 (-8.00%)
    pyperf600_iter.bpf.o                on_event                          12339       6379  -5960 (-48.30%)         441         286  -155 (-35.15%)
    verifier_bits_iter.bpf.o            max_words                            92         84      -8 (-8.70%)           8           7    -1 (-12.50%)
    verifier_iterating_callbacks.bpf.o  cond_break2                         113        192    +79 (+69.91%)          12          21    +9 (+75.00%)
    
    sched_ext:
    
    File               Program                 Insns (A)  Insns (B)  Insns      (DIFF)  States (A)  States (B)  States    (DIFF)
    -----------------  ----------------------  ---------  ---------  -----------------  ----------  ----------  ----------------
    bpf.bpf.o          layered_dispatch            11485       9039    -2446 (-21.30%)         848         662    -186 (-21.93%)
    bpf.bpf.o          layered_dump                 7422       5022    -2400 (-32.34%)         681         298    -383 (-56.24%)
    bpf.bpf.o          layered_enqueue             16854      13753    -3101 (-18.40%)        1611        1308    -303 (-18.81%)
    bpf.bpf.o          layered_init              1000001       5549  -994452 (-99.45%)       84672         523  -84149 (-99.38%)
    bpf.bpf.o          layered_runnable             3149       1899    -1250 (-39.70%)         288         151    -137 (-47.57%)
    bpf.bpf.o          p2dq_init                    2343       1936     -407 (-17.37%)         201         170     -31 (-15.42%)
    bpf.bpf.o          refresh_layer_cpumasks      16487       1285   -15202 (-92.21%)        1770         120   -1650 (-93.22%)
    bpf.bpf.o          rusty_select_cpu             1937       1386     -551 (-28.45%)         177         125     -52 (-29.38%)
    scx_central.bpf.o  central_dispatch              636        600       -36 (-5.66%)          63          59       -4 (-6.35%)
    scx_central.bpf.o  central_init                  913        632     -281 (-30.78%)          48          39      -9 (-18.75%)
    scx_nest.bpf.o     nest_init                     636        601       -35 (-5.50%)          60          58       -2 (-3.33%)
    scx_pair.bpf.o     pair_dispatch             1000001       1914  -998087 (-99.81%)       58169         142  -58027 (-99.76%)
    scx_qmap.bpf.o     qmap_dispatch                2393       2187      -206 (-8.61%)         196         174     -22 (-11.22%)
    scx_qmap.bpf.o     qmap_init                   16367      22777    +6410 (+39.16%)         603         768    +165 (+27.36%)
    
    'layered_init' and 'pair_dispatch' hit 1M on master, but are verified
    ok with this patch.
    
    Signed-off-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: fix possible endless loop in BPF map iteration [+ + +]
Author: Brandon Kammerdiener <[email protected]>
Date:   Thu Apr 24 11:32:51 2025 -0400

    bpf: fix possible endless loop in BPF map iteration
    
    [ Upstream commit 75673fda0c557ae26078177dd14d4857afbf128d ]
    
    The _safe variant used here gets the next element before running the callback,
    avoiding the endless loop condition.
    
    Signed-off-by: Brandon Kammerdiener <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Acked-by: Hou Tao <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Make every prog keep a copy of ctx_arg_info [+ + +]
Author: Amery Hung <[email protected]>
Date:   Mon Feb 17 11:06:36 2025 -0800

    bpf: Make every prog keep a copy of ctx_arg_info
    
    [ Upstream commit 432051806f614ca512da401b80257b95b2a2241e ]
    
    Currently, ctx_arg_info is read-only in the view of the verifier since
    it is shared among programs of the same attach type. Make each program
    have their own copy of ctx_arg_info so that we can use it to store
    program specific information.
    
    In the next patch where we support acquiring a referenced kptr through a
    struct_ops argument tagged with "__ref", ctx_arg_info->ref_obj_id will
    be used to store the unique reference object id of the argument. This
    avoids creating a requirement in the verifier that "__ref" tagged
    arguments must be the first set of references acquired [0].
    
    [0] https://lore.kernel.org/bpf/[email protected]/
    
    Signed-off-by: Amery Hung <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Acked-by: Martin KaFai Lau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Return prog btf_id without capable check [+ + +]
Author: Mykyta Yatsenko <[email protected]>
Date:   Mon Mar 17 17:40:37 2025 +0000

    bpf: Return prog btf_id without capable check
    
    [ Upstream commit 07651ccda9ff10a8ca427670cdd06ce2c8e4269c ]
    
    Return prog's btf_id from bpf_prog_get_info_by_fd regardless of capable
    check. This patch enables scenario, when freplace program, running
    from user namespace, requires to query target prog's btf.
    
    Signed-off-by: Mykyta Yatsenko <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Yonghong Song <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Search and add kfuncs in struct_ops prologue and epilogue [+ + +]
Author: Amery Hung <[email protected]>
Date:   Tue Feb 25 15:35:44 2025 -0800

    bpf: Search and add kfuncs in struct_ops prologue and epilogue
    
    [ Upstream commit d519594ee2445d7cd1ad51f4db4cee58f8213400 ]
    
    Currently, add_kfunc_call() is only invoked once before the main
    verification loop. Therefore, the verifier could not find the
    bpf_kfunc_btf_tab of a new kfunc call which is not seen in user defined
    struct_ops operators but introduced in gen_prologue or gen_epilogue
    during do_misc_fixup(). Fix this by searching kfuncs in the patching
    instruction buffer and add them to prog->aux->kfunc_tab.
    
    Signed-off-by: Amery Hung <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Acked-by: Martin KaFai Lau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Use kallsyms to find the function name of a struct_ops's stub function [+ + +]
Author: Martin KaFai Lau <[email protected]>
Date:   Mon Jan 27 14:27:19 2025 -0800

    bpf: Use kallsyms to find the function name of a struct_ops's stub function
    
    [ Upstream commit 12fdd29d5d71d2987a1aec434b704d850a4d7fcb ]
    
    In commit 1611603537a4 ("bpf: Create argument information for nullable arguments."),
    it introduced a "__nullable" tagging at the argument name of a
    stub function. Some background on the commit:
    it requires to tag the stub function instead of directly tagging
    the "ops" of a struct. This is because the btf func_proto of the "ops"
    does not have the argument name and the "__nullable" is tagged at
    the argument name.
    
    To find the stub function of a "ops", it currently relies on a naming
    convention on the stub function "st_ops__ops_name".
    e.g. tcp_congestion_ops__ssthresh. However, the new kernel
    sub system implementing bpf_struct_ops have missed this and
    have been surprised that the "__nullable" and the to-be-landed
    "__ref" tagging was not effective.
    
    One option would be to give a warning whenever the stub function does
    not follow the naming convention, regardless if it requires arg tagging
    or not.
    
    Instead, this patch uses the kallsyms_lookup approach and removes
    the requirement on the naming convention. The st_ops->cfi_stubs has
    all the stub function kernel addresses. kallsyms_lookup() is used to
    lookup the function name. With the function name, BTF can be used to
    find the BTF func_proto. The existing "__nullable" arg name searching
    logic will then fall through.
    
    One notable change is,
    if it failed in kallsyms_lookup or it failed in looking up the stub
    function name from the BTF, the bpf_struct_ops registration will fail.
    This is different from the previous behavior that it silently ignored
    the "st_ops__ops_name" function not found error.
    
    The "tcp_congestion_ops", "sched_ext_ops", and "hid_bpf_ops" can still be
    registered successfully after this patch. There is struct_ops_maybe_null
    selftest to cover the "__nullable" tagging.
    
    Other minor changes:
    1. Removed the "%s__%s" format from the pr_warn because the naming
       convention is removed.
    2. The existing bpf_struct_ops_supported() is also moved earlier
       because prepare_arg_info needs to use it to decide if the
       stub function is NULL before calling the prepare_arg_info.
    
    Cc: Tejun Heo <[email protected]>
    Cc: Benjamin Tissoires <[email protected]>
    Cc: Yonghong Song <[email protected]>
    Cc: Amery Hung <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Reviewed-by: Amery Hung <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpftool: Fix readlink usage in get_fd_type [+ + +]
Author: Viktor Malik <[email protected]>
Date:   Wed Jan 29 08:18:57 2025 +0100

    bpftool: Fix readlink usage in get_fd_type
    
    [ Upstream commit 0053f7d39d491b6138d7c526876d13885cbb65f1 ]
    
    The `readlink(path, buf, sizeof(buf))` call reads at most sizeof(buf)
    bytes and *does not* append null-terminator to buf. With respect to
    that, fix two pieces in get_fd_type:
    
    1. Change the truncation check to contain sizeof(buf) rather than
       sizeof(path).
    2. Append null-terminator to buf.
    
    Reported by Coverity.
    
    Signed-off-by: Viktor Malik <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Reviewed-by: Quentin Monnet <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpftool: Using the right format specifiers [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Tue Mar 11 19:28:09 2025 +0800

    bpftool: Using the right format specifiers
    
    [ Upstream commit 3775be3417cc3243b0df0492bd308559dcf0560b ]
    
    Fixed some formatting specifiers errors, such as using %d for int and %u
    for unsigned int, as well as other byte-length types.
    
    Perform type cast using the type derived from the data type itself, for
    example, if it's originally an int, it will be cast to unsigned int if
    forced to unsigned.
    
    Signed-off-by: Jiayuan Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
bridge: mdb: Allow replace of a host-joined group [+ + +]
Author: Petr Machata <[email protected]>
Date:   Tue Feb 4 18:37:15 2025 +0100

    bridge: mdb: Allow replace of a host-joined group
    
    [ Upstream commit d9e9f6d7b7d0c520bb87f19d2cbc57aeeb2091d5 ]
    
    Attempts to replace an MDB group membership of the host itself are
    currently bounced:
    
     # ip link add name br up type bridge vlan_filtering 1
     # bridge mdb replace dev br port br grp 239.0.0.1 vid 2
     # bridge mdb replace dev br port br grp 239.0.0.1 vid 2
     Error: bridge: Group is already joined by host.
    
    A similar operation done on a member port would succeed. Ignore the check
    for replacement of host group memberships as well.
    
    The bit of code that this enables is br_multicast_host_join(), which, for
    already-joined groups only refreshes the MC group expiration timer, which
    is desirable; and a userspace notification, also desirable.
    
    Change a selftest that exercises this code path from expecting a rejection
    to expecting a pass. The rest of MDB selftests pass without modification.
    
    Signed-off-by: Petr Machata <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/e5c5188b9787ae806609e7ca3aa2a0a501b9b5c4.1738685648.git.petrm@nvidia.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bridge: netfilter: Fix forwarding of fragmented packets [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Thu May 15 11:48:48 2025 +0300

    bridge: netfilter: Fix forwarding of fragmented packets
    
    [ Upstream commit 91b6dbced0ef1d680afdd69b14fc83d50ebafaf3 ]
    
    When netfilter defrag hooks are loaded (due to the presence of conntrack
    rules, for example), fragmented packets entering the bridge will be
    defragged by the bridge's pre-routing hook (br_nf_pre_routing() ->
    ipv4_conntrack_defrag()).
    
    Later on, in the bridge's post-routing hook, the defragged packet will
    be fragmented again. If the size of the largest fragment is larger than
    what the kernel has determined as the destination MTU (using
    ip_skb_dst_mtu()), the defragged packet will be dropped.
    
    Before commit ac6627a28dbf ("net: ipv4: Consolidate ipv4_mtu and
    ip_dst_mtu_maybe_forward"), ip_skb_dst_mtu() would return dst_mtu() as
    the destination MTU. Assuming the dst entry attached to the packet is
    the bridge's fake rtable one, this would simply be the bridge's MTU (see
    fake_mtu()).
    
    However, after above mentioned commit, ip_skb_dst_mtu() ends up
    returning the route's MTU stored in the dst entry's metrics. Ideally, in
    case the dst entry is the bridge's fake rtable one, this should be the
    bridge's MTU as the bridge takes care of updating this metric when its
    MTU changes (see br_change_mtu()).
    
    Unfortunately, the last operation is a no-op given the metrics attached
    to the fake rtable entry are marked as read-only. Therefore,
    ip_skb_dst_mtu() ends up returning 1500 (the initial MTU value) and
    defragged packets are dropped during fragmentation when dealing with
    large fragments and high MTU (e.g., 9k).
    
    Fix by moving the fake rtable entry's metrics to be per-bridge (in a
    similar fashion to the fake rtable entry itself) and marking them as
    writable, thereby allowing MTU changes to be reflected.
    
    Fixes: 62fa8a846d7d ("net: Implement read-only protection and COW'ing of metrics.")
    Fixes: 33eb9873a283 ("bridge: initialize fake_rtable metrics")
    Reported-by: Venkat Venkatsubra <[email protected]>
    Closes: https://lore.kernel.org/netdev/PH0PR10MB4504888284FF4CBA648197D0ACB82@PH0PR10MB4504.namprd10.prod.outlook.com/
    Tested-by: Venkat Venkatsubra <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: avoid linker error in btrfs_find_create_tree_block() [+ + +]
Author: Mark Harmstone <[email protected]>
Date:   Thu Mar 6 10:58:46 2025 +0000

    btrfs: avoid linker error in btrfs_find_create_tree_block()
    
    [ Upstream commit 7ef3cbf17d2734ca66c4ed8573be45f4e461e7ee ]
    
    The inline function btrfs_is_testing() is hardcoded to return 0 if
    CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set. Currently we're relying on
    the compiler optimizing out the call to alloc_test_extent_buffer() in
    btrfs_find_create_tree_block(), as it's not been defined (it's behind an
     #ifdef).
    
    Add a stub version of alloc_test_extent_buffer() to avoid linker errors
    on non-standard optimization levels. This problem was seen on GCC 14
    with -O0 and is helps to see symbols that would be otherwise optimized
    out.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Mark Harmstone <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: avoid NULL pointer dereference if no valid csum tree [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Tue Apr 29 15:17:50 2025 +0930

    btrfs: avoid NULL pointer dereference if no valid csum tree
    
    [ Upstream commit f95d186255b319c48a365d47b69bd997fecb674e ]
    
    [BUG]
    When trying read-only scrub on a btrfs with rescue=idatacsums mount
    option, it will crash with the following call trace:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000208
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      CPU: 1 UID: 0 PID: 835 Comm: btrfs Tainted: G           O        6.15.0-rc3-custom+ #236 PREEMPT(full)
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022
      RIP: 0010:btrfs_lookup_csums_bitmap+0x49/0x480 [btrfs]
      Call Trace:
       <TASK>
       scrub_find_fill_first_stripe+0x35b/0x3d0 [btrfs]
       scrub_simple_mirror+0x175/0x290 [btrfs]
       scrub_stripe+0x5f7/0x6f0 [btrfs]
       scrub_chunk+0x9a/0x150 [btrfs]
       scrub_enumerate_chunks+0x333/0x660 [btrfs]
       btrfs_scrub_dev+0x23e/0x600 [btrfs]
       btrfs_ioctl+0x1dcf/0x2f80 [btrfs]
       __x64_sys_ioctl+0x97/0xc0
       do_syscall_64+0x4f/0x120
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    [CAUSE]
    Mount option "rescue=idatacsums" will completely skip loading the csum
    tree, so that any data read will not find any data csum thus we will
    ignore data checksum verification.
    
    Normally call sites utilizing csum tree will check the fs state flag
    NO_DATA_CSUMS bit, but unfortunately scrub does not check that bit at all.
    
    This results in scrub to call btrfs_search_slot() on a NULL pointer
    and triggered above crash.
    
    [FIX]
    Check both extent and csum tree root before doing any tree search.
    
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: compression: adjust cb->compressed_folios allocation type [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri Apr 25 23:23:29 2025 -0700

    btrfs: compression: adjust cb->compressed_folios allocation type
    
    [ Upstream commit 6f9a8ab796c6528d22de3c504c81fce7dde63d8a ]
    
    In preparation for making the kmalloc() family of allocators type aware,
    we need to make sure that the returned type from the allocation matches
    the type of the variable being assigned. (Before, the allocator would
    always return "void *", which can be implicitly cast to any pointer type.)
    
    The assigned type is "struct folio **" but the returned type will be
    "struct page **". These are the same allocation size (pointer size), but
    the types don't match. Adjust the allocation type to match the assignment.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Kees Cook <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref [+ + +]
Author: Goldwyn Rodrigues <[email protected]>
Date:   Fri Apr 25 09:25:06 2025 -0400

    btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref
    
    [ Upstream commit bc7e0975093567f51be8e1bdf4aa5900a3cf0b1e ]
    
    btrfs_prelim_ref() calls the old and new reference variables in the
    incorrect order. This causes a NULL pointer dereference because oldref
    is passed as NULL to trace_btrfs_prelim_ref_insert().
    
    Note, trace_btrfs_prelim_ref_insert() is being called with newref as
    oldref (and oldref as NULL) on purpose in order to print out
    the values of newref.
    
    To reproduce:
    echo 1 > /sys/kernel/debug/tracing/events/btrfs/btrfs_prelim_ref_insert/enable
    
    Perform some writeback operations.
    
    Backtrace:
    BUG: kernel NULL pointer dereference, address: 0000000000000018
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 115949067 P4D 115949067 PUD 11594a067 PMD 0
     Oops: Oops: 0000 [#1] SMP NOPTI
     CPU: 1 UID: 0 PID: 1188 Comm: fsstress Not tainted 6.15.0-rc2-tester+ #47 PREEMPT(voluntary)  7ca2cef72d5e9c600f0c7718adb6462de8149622
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-2-gc13ff2cd-prebuilt.qemu.org 04/01/2014
     RIP: 0010:trace_event_raw_event_btrfs__prelim_ref+0x72/0x130
     Code: e8 43 81 9f ff 48 85 c0 74 78 4d 85 e4 0f 84 8f 00 00 00 49 8b 94 24 c0 06 00 00 48 8b 0a 48 89 48 08 48 8b 52 08 48 89 50 10 <49> 8b 55 18 48 89 50 18 49 8b 55 20 48 89 50 20 41 0f b6 55 28 88
     RSP: 0018:ffffce44820077a0 EFLAGS: 00010286
     RAX: ffff8c6b403f9014 RBX: ffff8c6b55825730 RCX: 304994edf9cf506b
     RDX: d8b11eb7f0fdb699 RSI: ffff8c6b403f9010 RDI: ffff8c6b403f9010
     RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000010
     R10: 00000000ffffffff R11: 0000000000000000 R12: ffff8c6b4e8fb000
     R13: 0000000000000000 R14: ffffce44820077a8 R15: ffff8c6b4abd1540
     FS:  00007f4dc6813740(0000) GS:ffff8c6c1d378000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000018 CR3: 000000010eb42000 CR4: 0000000000750ef0
     PKRU: 55555554
     Call Trace:
      <TASK>
      prelim_ref_insert+0x1c1/0x270
      find_parent_nodes+0x12a6/0x1ee0
      ? __entry_text_end+0x101f06/0x101f09
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      ? srso_alias_return_thunk+0x5/0xfbef5
      btrfs_is_data_extent_shared+0x167/0x640
      ? fiemap_process_hole+0xd0/0x2c0
      extent_fiemap+0xa5c/0xbc0
      ? __entry_text_end+0x101f05/0x101f09
      btrfs_fiemap+0x7e/0xd0
      do_vfs_ioctl+0x425/0x9d0
      __x64_sys_ioctl+0x75/0xc0
    
    Signed-off-by: Goldwyn Rodrigues <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix non-empty delayed iputs list on unmount due to async workers [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Thu Mar 6 14:25:38 2025 +0000

    btrfs: fix non-empty delayed iputs list on unmount due to async workers
    
    [ Upstream commit cda76788f8b0f7de3171100e3164ec1ce702292e ]
    
    At close_ctree() after we have ran delayed iputs either explicitly through
    calling btrfs_run_delayed_iputs() or later during the call to
    btrfs_commit_super() or btrfs_error_commit_super(), we assert that the
    delayed iputs list is empty.
    
    We have (another) race where this assertion might fail because we have
    queued an async write into the fs_info->workers workqueue. Here's how it
    happens:
    
    1) We are submitting a data bio for an inode that is not the data
       relocation inode, so we call btrfs_wq_submit_bio();
    
    2) btrfs_wq_submit_bio() submits a work for the fs_info->workers queue
       that will run run_one_async_done();
    
    3) We enter close_ctree(), flush several work queues except
       fs_info->workers, explicitly run delayed iputs with a call to
       btrfs_run_delayed_iputs() and then again shortly after by calling
       btrfs_commit_super() or btrfs_error_commit_super(), which also run
       delayed iputs;
    
    4) run_one_async_done() is executed in the work queue, and because there
       was an IO error (bio->bi_status is not 0) it calls btrfs_bio_end_io(),
       which drops the final reference on the associated ordered extent by
       calling btrfs_put_ordered_extent() - and that adds a delayed iput for
       the inode;
    
    5) At close_ctree() we find that after stopping the cleaner and
       transaction kthreads the delayed iputs list is not empty, failing the
       following assertion:
    
          ASSERT(list_empty(&fs_info->delayed_iputs));
    
    Fix this by flushing the fs_info->workers workqueue before running delayed
    iputs at close_ctree().
    
    David reported this when running generic/648, which exercises IO error
    paths by using the DM error table.
    
    Reported-by: David Sterba <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work() [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri Feb 21 16:12:15 2025 +0000

    btrfs: get zone unusable bytes while holding lock at btrfs_reclaim_bgs_work()
    
    [ Upstream commit 1283b8c125a83bf7a7dbe90c33d3472b6d7bf612 ]
    
    At btrfs_reclaim_bgs_work(), we are grabbing a block group's zone unusable
    bytes while not under the protection of the block group's spinlock, so
    this can trigger race reports from KCSAN (or similar tools) since that
    field is typically updated while holding the lock, such as at
    __btrfs_add_free_space_zoned() for example.
    
    Fix this by grabbing the zone unusable bytes while we are still in the
    critical section holding the block group's spinlock, which is right above
    where we are currently grabbing it.
    
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: handle empty eb->folios in num_extent_folios() [+ + +]
Author: Boris Burkov <[email protected]>
Date:   Fri Apr 25 12:47:50 2025 -0700

    btrfs: handle empty eb->folios in num_extent_folios()
    
    [ Upstream commit d6fe0c69b3aa5c985380b794bdf8e6e9b1811e60 ]
    
    num_extent_folios() unconditionally calls folio_order() on
    eb->folios[0]. If that is NULL this will be a segfault. It is reasonable
    for it to return 0 as the number of folios in the eb when the first
    entry is NULL, so do that instead.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Boris Burkov <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: make btrfs_discard_workfn() block_group ref explicit [+ + +]
Author: Boris Burkov <[email protected]>
Date:   Mon Mar 3 15:01:05 2025 -0800

    btrfs: make btrfs_discard_workfn() block_group ref explicit
    
    [ Upstream commit 895c6721d310c036dcfebb5ab845822229fa35eb ]
    
    Currently, the async discard machinery owns a ref to the block_group
    when the block_group is queued on a discard list. However, to handle
    races with discard cancellation and the discard workfn, we have a
    specific logic to detect that the block_group is *currently* running in
    the workfn, to protect the workfn's usage amidst cancellation.
    
    As far as I can tell, this doesn't have any overt bugs (though
    finish_discard_pass() and remove_from_discard_list() racing can have a
    surprising outcome for the caller of remove_from_discard_list() in that
    it is again added at the end).
    
    But it is needlessly complicated to rely on locking and the nullity of
    discard_ctl->block_group. Simplify this significantly by just taking a
    refcount while we are in the workfn and unconditionally drop it in both
    the remove and workfn paths, regardless of if they race.
    
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Boris Burkov <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: run btrfs_error_commit_super() early [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Fri Mar 7 14:36:10 2025 +1030

    btrfs: run btrfs_error_commit_super() early
    
    [ Upstream commit df94a342efb451deb0e32b495d1d6cd4bb3a1648 ]
    
    [BUG]
    Even after all the error fixes related the
    "ASSERT(list_empty(&fs_info->delayed_iputs));" in close_ctree(), I can
    still hit it reliably with my experimental 2K block size.
    
    [CAUSE]
    In my case, all the error is triggered after the fs is already in error
    status.
    
    I find the following call trace to be the cause of race:
    
               Main thread                       |     endio_write_workers
    ---------------------------------------------+---------------------------
    close_ctree()                                |
    |- btrfs_error_commit_super()                |
    |  |- btrfs_cleanup_transaction()            |
    |  |  |- btrfs_destroy_all_ordered_extents() |
    |  |     |- btrfs_wait_ordered_roots()       |
    |  |- btrfs_run_delayed_iputs()              |
    |                                            | btrfs_finish_ordered_io()
    |                                            | |- btrfs_put_ordered_extent()
    |                                            |    |- btrfs_add_delayed_iput()
    |- ASSERT(list_empty(delayed_iputs))         |
       !!! Triggered !!!
    
    The root cause is that, btrfs_wait_ordered_roots() only wait for
    ordered extents to finish their IOs, not to wait for them to finish and
    removed.
    
    [FIX]
    Since btrfs_error_commit_super() will flush and wait for all ordered
    extents, it should be executed early, before we start flushing the
    workqueues.
    
    And since btrfs_error_commit_super() now runs early, there is no need to
    run btrfs_run_delayed_iputs() inside it, so just remove the
    btrfs_run_delayed_iputs() call from btrfs_error_commit_super().
    
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: send: return -ENAMETOOLONG when attempting a path that is too long [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Feb 5 13:09:25 2025 +0000

    btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
    
    [ Upstream commit a77749b3e21813566cea050bbb3414ae74562eba ]
    
    When attempting to build a too long path we are currently returning
    -ENOMEM, which is very odd and misleading. So update fs_path_ensure_buf()
    to return -ENAMETOOLONG instead. Also, while at it, move the WARN_ON()
    into the if statement's expression, as it makes it clear what is being
    tested and also has the effect of adding 'unlikely' to the statement,
    which allows the compiler to generate better code as this condition is
    never expected to happen.
    
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: tree-checker: adjust error code for header level check [+ + +]
Author: David Sterba <[email protected]>
Date:   Fri Apr 4 20:19:41 2025 +0200

    btrfs: tree-checker: adjust error code for header level check
    
    [ Upstream commit f1ab0171e9be96fd530329fa54761cff5e09ea95 ]
    
    The whole tree checker returns EUCLEAN, except the one check in
    btrfs_verify_level_key(). This was inherited from the function that was
    moved from disk-io.c in 2cac5af16537 ("btrfs: move
    btrfs_verify_level_key into tree-checker.c") but this should be unified
    with the rest.
    
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
can: bcm: add locking for bcm_op runtime updates [+ + +]
Author: Oliver Hartkopp <[email protected]>
Date:   Mon May 19 14:50:26 2025 +0200

    can: bcm: add locking for bcm_op runtime updates
    
    commit c2aba69d0c36a496ab4f2e81e9c2b271f2693fd7 upstream.
    
    The CAN broadcast manager (CAN BCM) can send a sequence of CAN frames via
    hrtimer. The content and also the length of the sequence can be changed
    resp reduced at runtime where the 'currframe' counter is then set to zero.
    
    Although this appeared to be a safe operation the updates of 'currframe'
    can be triggered from user space and hrtimer context in bcm_can_tx().
    Anderson Nascimento created a proof of concept that triggered a KASAN
    slab-out-of-bounds read access which can be prevented with a spin_lock_bh.
    
    At the rework of bcm_can_tx() the 'count' variable has been moved into
    the protected section as this variable can be modified from both contexts
    too.
    
    Fixes: ffd980f976e7 ("[CAN]: Add broadcast manager (bcm) protocol")
    Reported-by: Anderson Nascimento <[email protected]>
    Tested-by: Anderson Nascimento <[email protected]>
    Reviewed-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Oliver Hartkopp <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: bcm: add missing rcu read protection for procfs content [+ + +]
Author: Oliver Hartkopp <[email protected]>
Date:   Mon May 19 14:50:27 2025 +0200

    can: bcm: add missing rcu read protection for procfs content
    
    commit dac5e6249159ac255dad9781793dbe5908ac9ddb upstream.
    
    When the procfs content is generated for a bcm_op which is in the process
    to be removed the procfs output might show unreliable data (UAF).
    
    As the removal of bcm_op's is already implemented with rcu handling this
    patch adds the missing rcu_read_lock() and makes sure the list entries
    are properly removed under rcu protection.
    
    Fixes: f1b4e32aca08 ("can: bcm: use call_rcu() instead of costly synchronize_rcu()")
    Reported-by: Anderson Nascimento <[email protected]>
    Suggested-by: Anderson Nascimento <[email protected]>
    Tested-by: Anderson Nascimento <[email protected]>
    Signed-off-by: Oliver Hartkopp <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected] # >= 5.4
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: c_can: Use of_property_present() to test existence of DT property [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Feb 12 21:23:14 2025 +0100

    can: c_can: Use of_property_present() to test existence of DT property
    
    [ Upstream commit ab1bc2290fd8311d49b87c29f1eb123fcb581bee ]
    
    of_property_read_bool() should be used only on boolean properties.
    
    Cc: Rob Herring <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: kvaser_pciefd: Continue parsing DMA buf after dropped RX [+ + +]
Author: Axel Forsman <[email protected]>
Date:   Tue May 20 13:43:32 2025 +0200

    can: kvaser_pciefd: Continue parsing DMA buf after dropped RX
    
    commit 6d820b81c4dc4a4023e45c3cd6707a07dd838649 upstream.
    
    Going bus-off on a channel doing RX could result in dropped packets.
    
    As netif_running() gets cleared before the channel abort procedure,
    the handling of any last RDATA packets would see netif_rx() return
    non-zero to signal a dropped packet. kvaser_pciefd_read_buffer() dealt
    with this "error" by breaking out of processing the remaining DMA RX
    buffer.
    
    Only return an error from kvaser_pciefd_read_buffer() due to packet
    corruption, otherwise handle it internally.
    
    Cc: [email protected]
    Signed-off-by: Axel Forsman <[email protected]>
    Tested-by: Jimmy Assarsson <[email protected]>
    Reviewed-by: Jimmy Assarsson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: kvaser_pciefd: Fix echo_skb race [+ + +]
Author: Axel Forsman <[email protected]>
Date:   Tue May 20 13:43:31 2025 +0200

    can: kvaser_pciefd: Fix echo_skb race
    
    commit 8256e0ca601051933e9395746817f3801fa9a6bf upstream.
    
    The functions kvaser_pciefd_start_xmit() and
    kvaser_pciefd_handle_ack_packet() raced to stop/wake TX queues and
    get/put echo skbs, as kvaser_pciefd_can->echo_lock was only ever taken
    when transmitting and KCAN_TX_NR_PACKETS_CURRENT gets decremented
    prior to handling of ACKs. E.g., this caused the following error:
    
        can_put_echo_skb: BUG! echo_skb 5 is occupied!
    
    Instead, use the synchronization helpers in netdev_queues.h. As those
    piggyback on BQL barriers, start updating in-flight packets and bytes
    counts as well.
    
    Cc: [email protected]
    Signed-off-by: Axel Forsman <[email protected]>
    Tested-by: Jimmy Assarsson <[email protected]>
    Reviewed-by: Jimmy Assarsson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: slcan: allow reception of short error messages [+ + +]
Author: Carlos Sanchez <[email protected]>
Date:   Tue May 20 12:23:05 2025 +0200

    can: slcan: allow reception of short error messages
    
    commit ef0841e4cb08754be6cb42bf97739fce5d086e5f upstream.
    
    Allows slcan to receive short messages (typically errors) from the serial
    interface.
    
    When error support was added to slcan protocol in
    b32ff4668544e1333b694fcc7812b2d7397b4d6a ("can: slcan: extend the protocol
    with error info") the minimum valid message size changed from 5 (minimum
    standard can frame tIII0) to 3 ("e1a" is a valid protocol message, it is
    one of the examples given in the comments for slcan_bump_err() ), but the
    check for minimum message length prodicating all decoding was not adjusted.
    This makes short error messages discarded and error frames not being
    generated.
    
    This patch changes the minimum length to the new minimum (3 characters,
    excluding terminator, is now a valid message).
    
    Signed-off-by: Carlos Sanchez <[email protected]>
    Fixes: b32ff4668544 ("can: slcan: extend the protocol with error info")
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cgroup/rstat: avoid disabling irqs for O(num_cpu) [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Mar 19 00:13:30 2025 -0700

    cgroup/rstat: avoid disabling irqs for O(num_cpu)
    
    [ Upstream commit 0efc297a3c4974dbd609ee36fc6345720b6ca735 ]
    
    cgroup_rstat_flush_locked() grabs the irq safe cgroup_rstat_lock while
    iterating all possible cpus. It only drops the lock if there is
    scheduler or spin lock contention. If neither, then interrupts can be
    disabled for a long time. On large machines this can disable interrupts
    for a long enough time to drop network packets. On 400+ CPU machines
    I've seen interrupt disabled for over 40 msec.
    
    Prevent rstat from disabling interrupts while processing all possible
    cpus. Instead drop and reacquire cgroup_rstat_lock for each cpu. This
    approach was previously discussed in
    https://lore.kernel.org/lkml/ZBz%2FV5a7%[email protected]/,
    though this was in the context of an non-irq rstat spin lock.
    
    Benchmark this change with:
    1) a single stat_reader process with 400 threads, each reading a test
       memcg's memory.stat repeatedly for 10 seconds.
    2) 400 memory hog processes running in the test memcg and repeatedly
       charging memory until oom killed. Then they repeat charging and oom
       killing.
    
    v6.14-rc6 with CONFIG_IRQSOFF_TRACER with stat_reader and hogs, finds
    interrupts are disabled by rstat for 45341 usec:
      #  => started at: _raw_spin_lock_irq
      #  => ended at:   cgroup_rstat_flush
      #
      #
      #                    _------=> CPU#
      #                   / _-----=> irqs-off/BH-disabled
      #                  | / _----=> need-resched
      #                  || / _---=> hardirq/softirq
      #                  ||| / _--=> preempt-depth
      #                  |||| / _-=> migrate-disable
      #                  ||||| /     delay
      #  cmd     pid     |||||| time  |   caller
      #     \   /        ||||||  \    |    /
      stat_rea-96532    52d....    0us*: _raw_spin_lock_irq
      stat_rea-96532    52d.... 45342us : cgroup_rstat_flush
      stat_rea-96532    52d.... 45342us : tracer_hardirqs_on <-cgroup_rstat_flush
      stat_rea-96532    52d.... 45343us : <stack trace>
       => memcg1_stat_format
       => memory_stat_format
       => memory_stat_show
       => seq_read_iter
       => vfs_read
       => ksys_read
       => do_syscall_64
       => entry_SYSCALL_64_after_hwframe
    
    With this patch the CONFIG_IRQSOFF_TRACER doesn't find rstat to be the
    longest holder. The longest irqs-off holder has irqs disabled for
    4142 usec, a huge reduction from previous 45341 usec rstat finding.
    
    Running stat_reader memory.stat reader for 10 seconds:
    - without memory hogs: 9.84M accesses => 12.7M accesses
    -    with memory hogs: 9.46M accesses => 11.1M accesses
    The throughput of memory.stat access improves.
    
    The mode of memory.stat access latency after grouping by of 2 buckets:
    - without memory hogs: 64 usec => 16 usec
    -    with memory hogs: 64 usec =>  8 usec
    The memory.stat latency improves.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Signed-off-by: Greg Thelen <[email protected]>
    Tested-by: Greg Thelen <[email protected]>
    Acked-by: Michal Koutný <[email protected]>
    Reviewed-by: Yosry Ahmed <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cgroup: Fix compilation issue due to cgroup_mutex not being exported [+ + +]
Author: gaoxu <[email protected]>
Date:   Thu Apr 17 07:30:00 2025 +0000

    cgroup: Fix compilation issue due to cgroup_mutex not being exported
    
    [ Upstream commit 87c259a7a359e73e6c52c68fcbec79988999b4e6 ]
    
    When adding folio_memcg function call in the zram module for
    Android16-6.12, the following error occurs during compilation:
    ERROR: modpost: "cgroup_mutex" [../soc-repo/zram.ko] undefined!
    
    This error is caused by the indirect call to lockdep_is_held(&cgroup_mutex)
    within folio_memcg. The export setting for cgroup_mutex is controlled by
    the CONFIG_PROVE_RCU macro. If CONFIG_LOCKDEP is enabled while
    CONFIG_PROVE_RCU is not, this compilation error will occur.
    
    To resolve this issue, add a parallel macro CONFIG_LOCKDEP control to
    ensure cgroup_mutex is properly exported when needed.
    
    Signed-off-by: gao xu <[email protected]>
    Acked-by: Michal Koutný <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cifs: Add fallback for SMB2 CREATE without FILE_READ_ATTRIBUTES [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Mon Dec 9 20:44:23 2024 +0100

    cifs: Add fallback for SMB2 CREATE without FILE_READ_ATTRIBUTES
    
    [ Upstream commit e255612b5ed9f179abe8196df7c2ba09dd227900 ]
    
    Some operations, like WRITE, does not require FILE_READ_ATTRIBUTES access.
    
    So when FILE_READ_ATTRIBUTES is not explicitly requested for
    smb2_open_file() then first try to do SMB2 CREATE with FILE_READ_ATTRIBUTES
    access (like it was before) and then fallback to SMB2 CREATE without
    FILE_READ_ATTRIBUTES access (less common case).
    
    This change allows to complete WRITE operation to a file when it does not
    grant FILE_READ_ATTRIBUTES permission and its parent directory does not
    grant READ_DATA permission (parent directory READ_DATA is implicit grant of
    child FILE_READ_ATTRIBUTES permission).
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: add validation check for the fields in smb_aces [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Wed Feb 12 17:52:19 2025 +0900

    cifs: add validation check for the fields in smb_aces
    
    [ Upstream commit eeb827f2922eb07ffbf7d53569cc95b38272646f ]
    
    cifs.ko is missing validation check when accessing smb_aces.
    This patch add validation check for the fields in smb_aces.
    
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Check if server supports reparse points before using them [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sat Oct 19 13:34:18 2024 +0200

    cifs: Check if server supports reparse points before using them
    
    [ Upstream commit 6c06be908ca190e2d8feae1cf452d78598cd0b94 ]
    
    Do not attempt to query or create reparse point when server fs does not
    support it. This will prevent creating unusable empty object on the server.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix access_flags_to_smbopen_mode [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sun Nov 17 11:50:18 2024 +0100

    cifs: Fix access_flags_to_smbopen_mode
    
    [ Upstream commit 6aa9f1c9cd09c1c39a35da4fe5f43446ec18ce1e ]
    
    When converting access_flags to SMBOPEN mode, check for all possible access
    flags, not only GENERIC_READ and GENERIC_WRITE flags.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix and improve cifs_query_path_info() and cifs_query_file_info() [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Mon Dec 30 20:34:18 2024 +0100

    cifs: Fix and improve cifs_query_path_info() and cifs_query_file_info()
    
    [ Upstream commit 1041c117a2c33cdffc4f695ac4b469e9124d24d5 ]
    
    When CAP_NT_SMBS was not negotiated then do not issue CIFSSMBQPathInfo()
    and CIFSSMBQFileInfo() commands. CIFSSMBQPathInfo() is not supported by
    non-NT Win9x SMB server and CIFSSMBQFileInfo() returns from Win9x SMB
    server bogus data in Attributes field (for example lot of files are marked
    as reparse points, even Win9x does not support them and read-only bit is
    not marked for read-only files). Correct information is returned by
    CIFSFindFirst() or SMBQueryInformation() command.
    
    So as a fallback in cifs_query_path_info() function use CIFSFindFirst()
    with SMB_FIND_FILE_FULL_DIRECTORY_INFO level which is supported by both NT
    and non-NT servers and as a last option use SMBQueryInformation() as it was
    before.
    
    And in function cifs_query_file_info() immediately returns -EOPNOTSUPP when
    not communicating with NT server. Client then revalidate inode entry by the
    cifs_query_path_info() call, which is working fine. So fstat() syscall on
    already opened file will receive correct information.
    
    Note that both fallback functions in non-UNICODE mode expands wildcards.
    Therefore those fallback functions cannot be used on paths which contain
    SMB wildcard characters (* ? " > <).
    
    CIFSFindFirst() returns all 4 time attributes as opposite of
    SMBQueryInformation() which returns only one.
    
    With this change it is possible to query all 4 times attributes from Win9x
    server and at the same time, client minimize sending of unsupported
    commands to server.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix changing times and read-only attr over SMB1 smb_set_file_info() function [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Mon Dec 30 21:32:39 2024 +0100

    cifs: Fix changing times and read-only attr over SMB1 smb_set_file_info() function
    
    [ Upstream commit f122121796f91168d0894c2710b8dd71330a34f8 ]
    
    Function CIFSSMBSetPathInfo() is not supported by non-NT servers and
    returns error. Fallback code via open filehandle and CIFSSMBSetFileInfo()
    does not work neither because CIFS_open() works also only on NT server.
    
    Therefore currently the whole smb_set_file_info() function as a SMB1
    callback for the ->set_file_info() does not work with older non-NT SMB
    servers, like Win9x and others.
    
    This change implements fallback code in smb_set_file_info() which will
    works with any server and allows to change time values and also to set or
    clear read-only attributes.
    
    To make existing fallback code via CIFSSMBSetFileInfo() working with also
    non-NT servers, it is needed to change open function from CIFS_open()
    (which is NT specific) to cifs_open_file() which works with any server
    (this is just a open wrapper function which choose the correct open
    function supported by the server).
    
    CIFSSMBSetFileInfo() is working also on non-NT servers, but zero time
    values are not treated specially. So first it is needed to fill all time
    values if some of them are missing, via cifs_query_path_info() call.
    
    There is another issue, opening file in write-mode (needed for changing
    attributes) is not possible when the file has read-only attribute set.
    The only option how to clear read-only attribute is via SMB_COM_SETATTR
    command. And opening directory is not possible neither and here the
    SMB_COM_SETATTR command is the only option how to change attributes.
    And CIFSSMBSetFileInfo() does not honor setting read-only attribute, so
    for setting is also needed to use SMB_COM_SETATTR command.
    
    Existing code in cifs_query_path_info() is already using SMB_COM_GETATTR as
    a fallback code path (function SMBQueryInformation()), so introduce a new
    function SMBSetInformation which will implement SMB_COM_SETATTR command.
    
    My testing showed that Windows XP SMB1 client is also using SMB_COM_SETATTR
    command for setting or clearing read-only attribute against non-NT server.
    So this can prove that this is the correct way how to do it.
    
    With this change it is possible set all 4 time values and all attributes,
    including clearing and setting read-only bit on non-NT SMB servers.
    Tested against Win98 SMB1 server.
    
    This change fixes "touch" command which was failing when called on existing
    file. And fixes also "chmod +w" and "chmod -w" commands which were also
    failing (as they are changing read-only attribute).
    
    Note that this change depends on following change
    "cifs: Improve cifs_query_path_info() and cifs_query_file_info()"
    as it require to query all 4 time attribute values.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix establishing NetBIOS session for SMB2+ connection [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Wed Oct 30 22:46:20 2024 +0100

    cifs: Fix establishing NetBIOS session for SMB2+ connection
    
    [ Upstream commit 781802aa5a5950f99899f13ff9d760f5db81d36d ]
    
    Function ip_rfc1001_connect() which establish NetBIOS session for SMB
    connections, currently uses smb_send() function for sending NetBIOS Session
    Request packet. This function expects that the passed buffer is SMB packet
    and for SMB2+ connections it mangles packet header, which breaks prepared
    NetBIOS Session Request packet. Result is that this function send garbage
    packet for SMB2+ connection, which SMB2+ server cannot parse. That function
    is not mangling packets for SMB1 connections, so it somehow works for SMB1.
    
    Fix this problem and instead of smb_send(), use smb_send_kvec() function
    which does not mangle prepared packet, this function send them as is. Just
    API of this function takes struct msghdr (kvec) instead of packet buffer.
    
    [MS-SMB2] specification allows SMB2 protocol to use NetBIOS as a transport
    protocol. NetBIOS can be used over TCP via port 139. So this is a valid
    configuration, just not so common. And even recent Windows versions (e.g.
    Windows Server 2022) still supports this configuration: SMB over TCP port
    139, including for modern SMB2 and SMB3 dialects.
    
    This change fixes SMB2 and SMB3 connections over TCP port 139 which
    requires establishing of NetBIOS session. Tested that this change fixes
    establishing of SMB2 and SMB3 connections with Windows Server 2022.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix getting DACL-only xattr system.cifs_acl and system.smb3_acl [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Mon Oct 14 13:47:04 2024 +0200

    cifs: Fix getting DACL-only xattr system.cifs_acl and system.smb3_acl
    
    [ Upstream commit ad9364a6835c45c52f47587ffbe0577bb7cd4c5b ]
    
    Currently ->get_acl() callback always create request for OWNER, GROUP and
    DACL, even when only DACLs was requested by user. Change API callback to
    request only information for which the caller asked. Therefore when only
    DACLs requested, then SMB client will prepare and send DACL-only request.
    
    This change fixes retrieving of "system.cifs_acl" and "system.smb3_acl"
    xattrs to contain only DACL structure as documented.
    
    Note that setting/changing of "system.cifs_acl" and "system.smb3_acl"
    xattrs already takes only DACL structure and ignores all other fields.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix negotiate retry functionality [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sat Nov 2 20:06:50 2024 +0100

    cifs: Fix negotiate retry functionality
    
    [ Upstream commit e94e882a6d69525c07589222cf3a6ff57ad12b5b ]
    
    SMB negotiate retry functionality in cifs_negotiate() is currently broken
    and does not work when doing socket reconnect. Caller of this function,
    which is cifs_negotiate_protocol() requires that tcpStatus after successful
    execution of negotiate callback stay in CifsInNegotiate. But if the
    CIFSSMBNegotiate() called from cifs_negotiate() fails due to connection
    issues then tcpStatus is changed as so repeated CIFSSMBNegotiate() call
    does not help.
    
    Fix this problem by moving retrying code from negotiate callback (which is
    either cifs_negotiate() or smb2_negotiate()) to cifs_negotiate_protocol()
    which is caller of those callbacks. This allows to properly handle and
    implement correct transistions between tcpStatus states as function
    cifs_negotiate_protocol() already handles it.
    
    With this change, cifs_negotiate_protocol() now handles also -EAGAIN error
    set by the RFC1002_NEGATIVE_SESSION_RESPONSE processing after reconnecting
    with NetBIOS session.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Fix querying and creating MF symlinks over SMB1 [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sat Dec 28 21:09:54 2024 +0100

    cifs: Fix querying and creating MF symlinks over SMB1
    
    [ Upstream commit 4236ac9fe5b8b42756070d4abfb76fed718e87c2 ]
    
    Old SMB1 servers without CAP_NT_SMBS do not support CIFS_open() function
    and instead SMBLegacyOpen() needs to be used. This logic is already handled
    in cifs_open_file() function, which is server->ops->open callback function.
    
    So for querying and creating MF symlinks use open callback function instead
    of CIFS_open() function directly.
    
    This change fixes querying and creating new MF symlinks on Windows 98.
    Currently cifs_query_mf_symlink() is not able to detect MF symlink and
    cifs_create_mf_symlink() is failing with EIO error.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cifs: Set default Netbios RFC1001 server name to hostname in UNC [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Sun Oct 27 12:10:52 2024 +0100

    cifs: Set default Netbios RFC1001 server name to hostname in UNC
    
    [ Upstream commit be786e509c1af9b2dcf25c3d601f05c8c251f482 ]
    
    Windows SMB servers (including SMB2+) which are working over RFC1001
    require that Netbios server name specified in RFC1001 Session Request
    packet is same as the UNC host name. Netbios server name can be already
    specified manually via -o servern= option.
    
    With this change the RFC1001 server name is set automatically by extracting
    the hostname from the mount source.
    
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: imx8mp: inform CCF of maximum frequency of clocks [+ + +]
Author: Ahmad Fatoum <[email protected]>
Date:   Tue Feb 18 19:26:46 2025 +0100

    clk: imx8mp: inform CCF of maximum frequency of clocks
    
    [ Upstream commit 06a61b5cb6a8638fa8823cd09b17233b29696fa2 ]
    
    The IMX8MPCEC datasheet lists maximum frequencies allowed for different
    modules. Some of these limits are universal, but some depend on
    whether the SoC is operating in nominal or in overdrive mode.
    
    The imx8mp.dtsi currently assumes overdrive mode and configures some
    clocks in accordance with this. Boards wishing to make use of nominal
    mode will need to override some of the clock rates manually.
    
    As operating the clocks outside of their allowed range can lead to
    difficult to debug issues, it makes sense to register the maximum rates
    allowed in the driver, so the CCF can take them into account.
    
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Ahmad Fatoum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Abel Vesa <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs [+ + +]
Author: Jordan Crouse <[email protected]>
Date:   Wed Jan 22 22:26:12 2025 +0000

    clk: qcom: camcc-sm8250: Use clk_rcg2_shared_ops for some RCGs
    
    [ Upstream commit 52b10b591f83dc6d9a1d6c2dc89433470a787ecd ]
    
    Update some RCGs on the sm8250 camera clock controller to use
    clk_rcg2_shared_ops. The shared_ops ensure the RCGs get parked
    to the XO during clock disable to prevent the clocks from locking up
    when the GDSC is enabled. These mirror similar fixes for other controllers
    such as commit e5c359f70e4b ("clk: qcom: camcc: Update the clock ops for
    the SC7180").
    
    Signed-off-by: Jordan Crouse <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: clk-alpha-pll: Do not use random stack value for recalc rate [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Feb 12 21:01:35 2025 +0100

    clk: qcom: clk-alpha-pll: Do not use random stack value for recalc rate
    
    [ Upstream commit 7a243e1b814a02ab40793026ef64223155d86395 ]
    
    If regmap_read() fails, random stack value was used in calculating new
    frequency in recalc_rate() callbacks.  Such failure is really not
    expected as these are all MMIO reads, however code should be here
    correct and bail out.  This also avoids possible warning on
    uninitialized value.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: ipq5018: allow it to be bulid on arm32 [+ + +]
Author: Karl Chan <[email protected]>
Date:   Tue Oct 8 00:34:12 2024 +0800

    clk: qcom: ipq5018: allow it to be bulid on arm32
    
    [ Upstream commit 5d02941c83997b58e8fc15390290c7c6975acaff ]
    
    There are some ipq5018 based device's firmware only can able to boot
    arm32 but the clock driver dont allow it to be compiled on arm32.
    Therefore allow GCC for IPQ5018 to be selected when building ARM32
    kernel
    
    Signed-off-by: Karl Chan <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [bjorn: Updated commit message, per Dmitry's suggestion]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: lpassaudiocc-sc7280: Add support for LPASS resets for QCM6490 [+ + +]
Author: Taniya Das <[email protected]>
Date:   Fri Feb 21 15:04:55 2025 +0530

    clk: qcom: lpassaudiocc-sc7280: Add support for LPASS resets for QCM6490
    
    [ Upstream commit cdbbc480f4146cb659af97f4020601fde5fb65a7 ]
    
    On the QCM6490 boards, the LPASS firmware controls the complete clock
    controller functionalities and associated power domains. However, only
    the LPASS resets required to be controlled by the high level OS. Thus,
    add support for the resets in the clock driver to enable the Audio SW
    driver to assert/deassert the audio resets as needed.
    
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: renesas: rzg2l-cpg: Refactor Runtime PM clock validation [+ + +]
Author: Lad Prabhakar <[email protected]>
Date:   Mon Dec 16 21:02:01 2024 +0000

    clk: renesas: rzg2l-cpg: Refactor Runtime PM clock validation
    
    [ Upstream commit f6f73b891bf6beff069fcacc7b4a796e1009bf26 ]
    
    Refactor rzg2l_cpg_attach_dev to delegate clock validation for Runtime PM
    to the updated rzg2l_cpg_is_pm_clk function. Ensure validation of clocks
    associated with the power domain while excluding external and core clocks.
    Prevent incorrect Runtime PM management for clocks outside the domain's
    scope.
    
    Update rzg2l_cpg_is_pm_clk to operate on a per-power-domain basis. Verify
    clkspec.np against the domain's device node, check argument validity, and
    validate clock type (CPG_MOD). Use the no_pm_mod_clks array to exclude
    specific clocks from PM management.
    
    Signed-off-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: s2mps11: initialise clk_hw_onecell_data::num before accessing ::hws[] in probe() [+ + +]
Author: André Draszik <[email protected]>
Date:   Wed Mar 26 12:08:00 2025 +0000

    clk: s2mps11: initialise clk_hw_onecell_data::num before accessing ::hws[] in probe()
    
    commit 3e14c7207a975eefcda1929b2134a9f4119dde45 upstream.
    
    With UBSAN enabled, we're getting the following trace:
    
        UBSAN: array-index-out-of-bounds in .../drivers/clk/clk-s2mps11.c:186:3
        index 0 is out of range for type 'struct clk_hw *[] __counted_by(num)' (aka 'struct clk_hw *[]')
    
    This is because commit f316cdff8d67 ("clk: Annotate struct
    clk_hw_onecell_data with __counted_by") annotated the hws member of
    that struct with __counted_by, which informs the bounds sanitizer about
    the number of elements in hws, so that it can warn when hws is accessed
    out of bounds.
    
    As noted in that change, the __counted_by member must be initialised
    with the number of elements before the first array access happens,
    otherwise there will be a warning from each access prior to the
    initialisation because the number of elements is zero. This occurs in
    s2mps11_clk_probe() due to ::num being assigned after ::hws access.
    
    Move the assignment to satisfy the requirement of assign-before-access.
    
    Cc: [email protected]
    Fixes: f316cdff8d67 ("clk: Annotate struct clk_hw_onecell_data with __counted_by")
    Signed-off-by: André Draszik <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

clk: sunxi-ng: d1: Add missing divider for MMC mod clocks [+ + +]
Author: Andre Przywara <[email protected]>
Date:   Thu May 1 13:06:31 2025 +0100

    clk: sunxi-ng: d1: Add missing divider for MMC mod clocks
    
    [ Upstream commit 98e6da673cc6dd46ca9a599802bd2c8f83606710 ]
    
    The D1/R528/T113 SoCs have a hidden divider of 2 in the MMC mod clocks,
    just as other recent SoCs. So far we did not describe that, which led
    to the resulting MMC clock rate to be only half of its intended value.
    
    Use a macro that allows to describe a fixed post-divider, to compensate
    for that divisor.
    
    This brings the MMC performance on those SoCs to its expected level,
    so about 23 MB/s for SD cards, instead of the 11 MB/s measured so far.
    
    Fixes: 35b97bb94111 ("clk: sunxi-ng: Add support for the D1 SoC clocks")
    Reported-by: Kuba Szczodrzyński <[email protected]>
    Signed-off-by: Andre Przywara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: sunxi-ng: h616: Reparent GPU clock during frequency changes [+ + +]
Author: Philippe Simons <[email protected]>
Date:   Thu Feb 20 12:38:08 2025 +0100

    clk: sunxi-ng: h616: Reparent GPU clock during frequency changes
    
    [ Upstream commit eb963d7948ce6571939c6875424b557b25f16610 ]
    
    The H616 manual does not state that the GPU PLL supports
    dynamic frequency configuration, so we must take extra care when changing
    the frequency. Currently any attempt to do device DVFS on the GPU lead
    to panfrost various ooops, and GPU hangs.
    
    The manual describes the algorithm for changing the PLL
    frequency, which the CPU PLL notifier code already support, so we reuse
    that to reparent the GPU clock to GPU1 clock during frequency
    changes.
    
    Signed-off-by: Philippe Simons <[email protected]>
    Reviewed-by: Andre Przywara <[email protected]>
    Reviewed-by: Jernej Skrabec <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource/drivers/timer-riscv: Stop stimecmp when cpu hotplug [+ + +]
Author: Nick Hu <[email protected]>
Date:   Wed Feb 19 19:41:35 2025 +0800

    clocksource/drivers/timer-riscv: Stop stimecmp when cpu hotplug
    
    [ Upstream commit 70c93b026ed07078e933583591aa9ca6701cd9da ]
    
    Stop the timer when the cpu is going to be offline otherwise the
    timer interrupt may be pending while performing power-down.
    
    Suggested-by: Anup Patel <[email protected]>
    Link: https://lore.kernel.org/lkml/[email protected]/T/#u
    Signed-off-by: Nick Hu <[email protected]>
    Reviewed-by: Anup Patel <[email protected]>
    Acked-by: Daniel Lezcano <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Ghiti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource: mips-gic-timer: Enable counter when CPUs start [+ + +]
Author: Paul Burton <[email protected]>
Date:   Wed Jan 29 13:32:47 2025 +0100

    clocksource: mips-gic-timer: Enable counter when CPUs start
    
    [ Upstream commit 3128b0a2e0cf6e07aa78e5f8cf7dd9cd59dc8174 ]
    
    In multi-cluster MIPS I6500 systems there is a GIC in each cluster,
    each with its own counter. When a cluster powers up the counter will
    be stopped, with the COUNTSTOP bit set in the GIC_CONFIG register.
    
    In single cluster systems, it has been fine to clear COUNTSTOP once
    in gic_clocksource_of_init() to start the counter. In multi-cluster
    systems, this will only have started the counter in the boot cluster,
    and any CPUs in other clusters will find their counter stopped which
    will break the GIC clock_event_device.
    
    Resolve this by having CPUs clear the COUNTSTOP bit when they come
    online, using the existing gic_starting_cpu() CPU hotplug callback. This
    will allow CPUs in secondary clusters to ensure that the cluster's GIC
    counter is running as expected.
    
    Signed-off-by: Paul Burton <[email protected]>
    Signed-off-by: Chao-ying Fu <[email protected]>
    Signed-off-by: Dragan Mladjenovic <[email protected]>
    Signed-off-by: Aleksandar Rikalo <[email protected]>
    Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
    Tested-by: Serge Semin <[email protected]>
    Tested-by: Gregory CLEMENT <[email protected]>
    Acked-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight-etb10: change etb_drvdata spinlock's type to raw_spinlock_t [+ + +]
Author: Yeoreum Yun <[email protected]>
Date:   Thu Mar 6 12:11:06 2025 +0000

    coresight-etb10: change etb_drvdata spinlock's type to raw_spinlock_t
    
    [ Upstream commit 6b80c0abe475ed1017c5e862636049aa1cc17a1a ]
    
    In coresight-etb10 drivers, etb_drvdata->spinlock can be held
    during __schedule() by perf_event_task_sched_out()/in().
    
    Since etb_drvdata->spinlock type is spinlock_t and
    perf_event_task_sched_out()/in() is called after acquiring rq_lock,
    which is raw_spinlock_t (an unsleepable lock),
    this poses an issue in PREEMPT_RT kernel where spinlock_t is sleepable.
    
    To address this, change type etb_drvdata->spinlock in coresight-etb10 drivers,
    which can be called by perf_event_task_sched_out()/in(),
    from spinlock_t to raw_spinlock_t.
    
    Reviewed-by: James Clark <[email protected]>
    Reviewed-by: Mike Leach <[email protected]>
    Signed-off-by: Yeoreum Yun <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight: change coresight_trace_id_map's lock type to raw_spinlock_t [+ + +]
Author: Yeoreum Yun <[email protected]>
Date:   Thu Mar 6 12:11:04 2025 +0000

    coresight: change coresight_trace_id_map's lock type to raw_spinlock_t
    
    [ Upstream commit 4cf364ca57d851e192ce02e98d314d22fa514895 ]
    
    coresight_trace_id_map->lock can be acquired while coresight devices'
    drvdata_lock.
    
    But the drvdata_lock can be raw_spinlock_t (i.e) coresight-etm4x.
    
    To address this, change type of coresight_trace_id_map->lock to
    raw_spinlock_t
    
    Signed-off-by: Yeoreum Yun <[email protected]>
    Reviewed-by: James Clark <[email protected]>
    Reviewed-by: Mike Leach <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
cpufreq: Add SM8650 to cpufreq-dt-platdev blocklist [+ + +]
Author: Pengyu Luo <[email protected]>
Date:   Sat Apr 5 00:42:19 2025 +0800

    cpufreq: Add SM8650 to cpufreq-dt-platdev blocklist
    
    [ Upstream commit fc5414a4774e14e51a93499a6adfdc45f2de82e0 ]
    
    SM8650 have already been supported by qcom-cpufreq-hw driver, but
    never been added to cpufreq-dt-platdev. This makes noise
    
    [    0.388525] cpufreq-dt cpufreq-dt: failed register driver: -17
    [    0.388537] cpufreq-dt cpufreq-dt: probe with driver cpufreq-dt failed with error -17
    
    So adding it to the cpufreq-dt-platdev driver's blocklist to fix it.
    
    Signed-off-by: Pengyu Luo <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cpufreq: amd-pstate: Remove unnecessary driver_lock in set_boost [+ + +]
Author: Dhananjay Ugwekar <[email protected]>
Date:   Thu Jan 30 08:52:52 2025 +0000

    cpufreq: amd-pstate: Remove unnecessary driver_lock in set_boost
    
    [ Upstream commit db1cafc77aaaf871509da06f4a864e9af6d6791f ]
    
    set_boost is a per-policy function call, hence a driver wide lock is
    unnecessary. Also this mutex_acquire can collide with the mutex_acquire
    from the mode-switch path in status_store(), which can lead to a
    deadlock. So, remove it.
    
    Signed-off-by: Dhananjay Ugwekar <[email protected]>
    Acked-by: Mario Limonciello <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cpufreq: tegra186: Share policy per cluster [+ + +]
Author: Aaron Kling <[email protected]>
Date:   Mon Mar 10 00:28:48 2025 -0500

    cpufreq: tegra186: Share policy per cluster
    
    [ Upstream commit be4ae8c19492cd6d5de61ccb34ffb3f5ede5eec8 ]
    
    This functionally brings tegra186 in line with tegra210 and tegra194,
    sharing a cpufreq policy between all cores in a cluster.
    
    Reviewed-by: Sumit Gupta <[email protected]>
    Acked-by: Thierry Reding <[email protected]>
    Signed-off-by: Aaron Kling <[email protected]>
    Signed-off-by: Viresh Kumar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cpuidle: menu: Avoid discarding useful information [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Feb 6 15:29:05 2025 +0100

    cpuidle: menu: Avoid discarding useful information
    
    [ Upstream commit 85975daeaa4d6ec560bfcd354fc9c08ad7f38888 ]
    
    When giving up on making a high-confidence prediction,
    get_typical_interval() always returns UINT_MAX which means that the
    next idle interval prediction will be based entirely on the time till
    the next timer.  However, the information represented by the most
    recent intervals may not be completely useless in those cases.
    
    Namely, the largest recent idle interval is an upper bound on the
    recently observed idle duration, so it is reasonable to assume that
    the next idle duration is unlikely to exceed it.  Moreover, this is
    still true after eliminating the suspected outliers if the sample
    set still under consideration is at least as large as 50% of the
    maximum sample set size.
    
    Accordingly, make get_typical_interval() return the current maximum
    recent interval value in that case instead of UINT_MAX.
    
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reported-by: Artem Bityutskiy <[email protected]>
    Tested-by: Artem Bityutskiy <[email protected]>
    Reviewed-by: Christian Loehle <[email protected]>
    Tested-by: Christian Loehle <[email protected]>
    Tested-by: Aboorva Devarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: ahash - Set default reqsize from ahash_alg [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Sun Feb 16 11:07:24 2025 +0800

    crypto: ahash - Set default reqsize from ahash_alg
    
    [ Upstream commit 9e01aaa1033d6e40f8d7cf4f20931a61ce9e3f04 ]
    
    Add a reqsize field to struct ahash_alg and use it to set the
    default reqsize so that algorithms with a static reqsize are
    not forced to create an init_tfm function.
    
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: algif_hash - fix double free in hash_accept [+ + +]
Author: Ivan Pravdin <[email protected]>
Date:   Sun May 18 18:41:02 2025 -0400

    crypto: algif_hash - fix double free in hash_accept
    
    commit b2df03ed4052e97126267e8c13ad4204ea6ba9b6 upstream.
    
    If accept(2) is called on socket type algif_hash with
    MSG_MORE flag set and crypto_ahash_import fails,
    sk2 is freed. However, it is also freed in af_alg_release,
    leading to slab-use-after-free error.
    
    Fixes: fe869cdb89c9 ("crypto: algif_hash - User-space interface for hash operations")
    Cc: <[email protected]>
    Signed-off-by: Ivan Pravdin <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: lzo - Fix compression buffer overrun [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu Feb 27 17:04:46 2025 +0800

    crypto: lzo - Fix compression buffer overrun
    
    [ Upstream commit cc47f07234f72cbd8e2c973cdbf2a6730660a463 ]
    
    Unlike the decompression code, the compression code in LZO never
    checked for output overruns.  It instead assumes that the caller
    always provides enough buffer space, disregarding the buffer length
    provided by the caller.
    
    Add a safe compression interface that checks for the end of buffer
    before each write.  Use the safe interface in crypto/lzo.
    
    Signed-off-by: Herbert Xu <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: mxs-dcp - Only set OTP_KEY bit for OTP key [+ + +]
Author: Sven Schwermer <[email protected]>
Date:   Mon Feb 24 08:42:25 2025 +0100

    crypto: mxs-dcp - Only set OTP_KEY bit for OTP key
    
    [ Upstream commit caa9dbb76ff52ec848a57245062aaeaa07740adc ]
    
    While MXS_DCP_CONTROL0_OTP_KEY is set, the CRYPTO_KEY (DCP_PAES_KEY_OTP)
    is used even if the UNIQUE_KEY (DCP_PAES_KEY_UNIQUE) is selected. This
    is not clearly documented, but this implementation is consistent with
    NXP's downstream kernel fork and optee_os.
    
    Signed-off-by: Sven Schwermer <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: octeontx2 - suppress auth failure screaming due to negative tests [+ + +]
Author: Shashank Gupta <[email protected]>
Date:   Wed Mar 5 13:27:05 2025 +0530

    crypto: octeontx2 - suppress auth failure screaming due to negative tests
    
    [ Upstream commit 64b7871522a4cba99d092e1c849d6f9092868aaa ]
    
    This patch addresses an issue where authentication failures were being
    erroneously reported due to negative test failures in the "ccm(aes)"
    selftest.
    pr_debug suppress unnecessary screaming of these tests.
    
    Signed-off-by: Shashank Gupta <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: skcipher - Zap type in crypto_alloc_sync_skcipher [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Sat Feb 15 08:57:51 2025 +0800

    crypto: skcipher - Zap type in crypto_alloc_sync_skcipher
    
    [ Upstream commit ee509efc74ddbc59bb5d6fd6e050f9ef25f74bff ]
    
    The type needs to be zeroed as otherwise the user could use it to
    allocate an asynchronous sync skcipher.
    
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
devres: Introduce devm_kmemdup_array() [+ + +]
Author: Raag Jadav <[email protected]>
Date:   Wed Feb 12 11:55:05 2025 +0530

    devres: Introduce devm_kmemdup_array()
    
    [ Upstream commit a103b833ac3806b816bc993cba77d0b17cf801f1 ]
    
    Introduce '_array' variant of devm_kmemdup() which is more robust and
    consistent with alloc family of helpers.
    
    Suggested-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Raag Jadav <[email protected]>
    Reviewed-by: Dmitry Torokhov <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Stable-dep-of: 7dd7f39fce00 ("ASoC: SOF: Intel: hda: Fix UAF when reloading module")
    Signed-off-by: Sasha Levin <[email protected]>

 
dlm: make tcp still work in multi-link env [+ + +]
Author: Heming Zhao <[email protected]>
Date:   Mon Mar 10 15:36:21 2025 +0800

    dlm: make tcp still work in multi-link env
    
    [ Upstream commit 03d2b62208a336a3bb984b9465ef6d89a046ea22 ]
    
    This patch bypasses multi-link errors in TCP mode, allowing dlm
    to operate on the first tcp link.
    
    Signed-off-by: Heming Zhao <[email protected]>
    Signed-off-by: David Teigland <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm cache: prevent BUG_ON by blocking retries on failed device resumes [+ + +]
Author: Ming-Hung Tsai <[email protected]>
Date:   Thu Mar 6 16:41:50 2025 +0800

    dm cache: prevent BUG_ON by blocking retries on failed device resumes
    
    [ Upstream commit 5da692e2262b8f81993baa9592f57d12c2703dea ]
    
    A cache device failing to resume due to mapping errors should not be
    retried, as the failure leaves a partially initialized policy object.
    Repeating the resume operation risks triggering BUG_ON when reloading
    cache mappings into the incomplete policy object.
    
    Reproduce steps:
    
    1. create a cache metadata consisting of 512 or more cache blocks,
       with some mappings stored in the first array block of the mapping
       array. Here we use cache_restore v1.0 to build the metadata.
    
    cat <<EOF >> cmeta.xml
    <superblock uuid="" block_size="128" nr_cache_blocks="512" \
    policy="smq" hint_width="4">
      <mappings>
        <mapping cache_block="0" origin_block="0" dirty="false"/>
      </mappings>
    </superblock>
    EOF
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    cache_restore -i cmeta.xml -o /dev/mapper/cmeta --metadata-version=2
    dmsetup remove cmeta
    
    2. wipe the second array block of the mapping array to simulate
       data degradations.
    
    mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \
    2>/dev/null | hexdump -e '1/8 "%u\n"')
    dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock
    
    3. try bringing up the cache device. The resume is expected to fail
       due to the broken array block.
    
    dmsetup create cmeta --table "0 8192 linear /dev/sdc 0"
    dmsetup create cdata --table "0 65536 linear /dev/sdc 8192"
    dmsetup create corig --table "0 524288 linear /dev/sdc 262144"
    dmsetup create cache --notable
    dmsetup load cache --table "0 524288 cache /dev/mapper/cmeta \
    /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0"
    dmsetup resume cache
    
    4. try resuming the cache again. An unexpected BUG_ON is triggered
       while loading cache mappings.
    
    dmsetup resume cache
    
    Kernel logs:
    
    (snip)
    ------------[ cut here ]------------
    kernel BUG at drivers/md/dm-cache-policy-smq.c:752!
    Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
    CPU: 0 UID: 0 PID: 332 Comm: dmsetup Not tainted 6.13.4 #3
    RIP: 0010:smq_load_mapping+0x3e5/0x570
    
    Fix by disallowing resume operations for devices that failed the
    initial attempt.
    
    Signed-off-by: Ming-Hung Tsai <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm vdo indexer: prevent unterminated string warning [+ + +]
Author: Chung Chung <[email protected]>
Date:   Wed Jan 29 18:27:12 2025 -0500

    dm vdo indexer: prevent unterminated string warning
    
    [ Upstream commit f4e99b846c90163d350c69d6581ac38dd5818eb8 ]
    
    Fix array initialization that triggers a warning:
    
    error: initializer-string for array of ‘unsigned char’ is too long
     [-Werror=unterminated-string-initialization]
    
    Signed-off-by: Chung Chung <[email protected]>
    Signed-off-by: Matthew Sakai <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm vdo: use a short static string for thread name prefix [+ + +]
Author: Matthew Sakai <[email protected]>
Date:   Wed Jan 29 18:26:05 2025 -0500

    dm vdo: use a short static string for thread name prefix
    
    [ Upstream commit 3280c9313c9adce01550cc9f00edfb1dc7c744da ]
    
    Also remove MODULE_NAME and a BUG_ON check, both unneeded.
    
    This fixes a warning about string truncation in snprintf that
    will never happen in practice:
    
    drivers/md/dm-vdo/vdo.c: In function ‘vdo_make’:
    drivers/md/dm-vdo/vdo.c:564:5: error: ‘%s’ directive output may be truncated writing up to 55 bytes into a region of size 16 [-Werror=format-truncation=]
        "%s%u", MODULE_NAME, instance);
         ^~
    drivers/md/dm-vdo/vdo.c:563:2: note: ‘snprintf’ output between 2 and 66 bytes into a destination of size 16
      snprintf(vdo->thread_name_prefix, sizeof(vdo->thread_name_prefix),
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        "%s%u", MODULE_NAME, instance);
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Reported-by: John Garry <[email protected]>
    Reviewed-by: John Garry <[email protected]>
    Signed-off-by: Matthew Sakai <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: fix unconditional IO throttle caused by REQ_PREFLUSH [+ + +]
Author: Jinliang Zheng <[email protected]>
Date:   Thu Feb 20 19:20:14 2025 +0800

    dm: fix unconditional IO throttle caused by REQ_PREFLUSH
    
    [ Upstream commit 88f7f56d16f568f19e1a695af34a7f4a6ce537a6 ]
    
    When a bio with REQ_PREFLUSH is submitted to dm, __send_empty_flush()
    generates a flush_bio with REQ_OP_WRITE | REQ_PREFLUSH | REQ_SYNC,
    which causes the flush_bio to be throttled by wbt_wait().
    
    An example from v5.4, similar problem also exists in upstream:
    
        crash> bt 2091206
        PID: 2091206  TASK: ffff2050df92a300  CPU: 109  COMMAND: "kworker/u260:0"
         #0 [ffff800084a2f7f0] __switch_to at ffff80004008aeb8
         #1 [ffff800084a2f820] __schedule at ffff800040bfa0c4
         #2 [ffff800084a2f880] schedule at ffff800040bfa4b4
         #3 [ffff800084a2f8a0] io_schedule at ffff800040bfa9c4
         #4 [ffff800084a2f8c0] rq_qos_wait at ffff8000405925bc
         #5 [ffff800084a2f940] wbt_wait at ffff8000405bb3a0
         #6 [ffff800084a2f9a0] __rq_qos_throttle at ffff800040592254
         #7 [ffff800084a2f9c0] blk_mq_make_request at ffff80004057cf38
         #8 [ffff800084a2fa60] generic_make_request at ffff800040570138
         #9 [ffff800084a2fae0] submit_bio at ffff8000405703b4
        #10 [ffff800084a2fb50] xlog_write_iclog at ffff800001280834 [xfs]
        #11 [ffff800084a2fbb0] xlog_sync at ffff800001280c3c [xfs]
        #12 [ffff800084a2fbf0] xlog_state_release_iclog at ffff800001280df4 [xfs]
        #13 [ffff800084a2fc10] xlog_write at ffff80000128203c [xfs]
        #14 [ffff800084a2fcd0] xlog_cil_push at ffff8000012846dc [xfs]
        #15 [ffff800084a2fda0] xlog_cil_push_work at ffff800001284a2c [xfs]
        #16 [ffff800084a2fdb0] process_one_work at ffff800040111d08
        #17 [ffff800084a2fe00] worker_thread at ffff8000401121cc
        #18 [ffff800084a2fe70] kthread at ffff800040118de4
    
    After commit 2def2845cc33 ("xfs: don't allow log IO to be throttled"),
    the metadata submitted by xlog_write_iclog() should not be throttled.
    But due to the existence of the dm layer, throttling flush_bio indirectly
    causes the metadata bio to be throttled.
    
    Fix this by conditionally adding REQ_IDLE to flush_bio.bi_opf, which makes
    wbt_should_throttle() return false to avoid wbt_wait().
    
    Signed-off-by: Jinliang Zheng <[email protected]>
    Reviewed-by: Tianxiang Peng <[email protected]>
    Reviewed-by: Hao Peng <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dm: restrict dm device size to 2^63-512 bytes [+ + +]
Author: Mikulas Patocka <[email protected]>
Date:   Fri Mar 14 13:51:32 2025 +0100

    dm: restrict dm device size to 2^63-512 bytes
    
    [ Upstream commit 45fc728515c14f53f6205789de5bfd72a95af3b8 ]
    
    The devices with size >= 2^63 bytes can't be used reliably by userspace
    because the type off_t is a signed 64-bit integer.
    
    Therefore, we limit the maximum size of a device mapper device to
    2^63-512 bytes.
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dma-mapping: avoid potential unused data compilation warning [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Tue Apr 15 09:56:59 2025 +0200

    dma-mapping: avoid potential unused data compilation warning
    
    [ Upstream commit c9b19ea63036fc537a69265acea1b18dabd1cbd3 ]
    
    When CONFIG_NEED_DMA_MAP_STATE is not defined, dma-mapping clients might
    report unused data compilation warnings for dma_unmap_*() calls
    arguments. Redefine macros for those calls to let compiler to notice that
    it is okay when the provided arguments are not used.
    
    Reported-by: Andy Shevchenko <[email protected]>
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Marek Szyprowski <[email protected]>
    Tested-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

dma-mapping: Fix warning reported for missing prototype [+ + +]
Author: Balbir Singh <[email protected]>
Date:   Tue Apr 22 21:40:34 2025 +1000

    dma-mapping: Fix warning reported for missing prototype
    
    [ Upstream commit cae5572ec9261f752af834cdaaf5a0ba0afcf256 ]
    
    lkp reported a warning about missing prototype for a recent patch.
    
    The kernel-doc style comments are out of sync, move them to the right
    function.
    
    Cc: Marek Szyprowski <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    
    Signed-off-by: Balbir Singh <[email protected]>
    [mszyprow: reformatted subject]
    Signed-off-by: Marek Szyprowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
dma/mapping.c: dev_dbg support for dma_addressing_limited [+ + +]
Author: Balbir Singh <[email protected]>
Date:   Mon Apr 14 21:37:52 2025 +1000

    dma/mapping.c: dev_dbg support for dma_addressing_limited
    
    [ Upstream commit 2042c352e21d19eaf5f9e22fb6afce72293ef28c ]
    
    In the debug and resolution of an issue involving forced use of bounce
    buffers, 7170130e4c72 ("x86/mm/init: Handle the special case of device
    private pages in add_pages(), to not increase max_pfn and trigger
    dma_addressing_limited() bounce buffers"). It would have been easier
    to debug the issue if dma_addressing_limited() had debug information
    about the device not being able to address all of memory and thus forcing
    all accesses through a bounce buffer. Please see[2]
    
    Implement dev_dbg to debug the potential use of bounce buffers
    when we hit the condition. When swiotlb is used,
    dma_addressing_limited() is used to determine the size of maximum dma
    buffer size in dma_direct_max_mapping_size(). The debug prints could be
    triggered in that check as well (when enabled).
    
    Link: https://lore.kernel.org/lkml/[email protected]/ [1]
    Link: https://lore.kernel.org/lkml/[email protected]/ [2]
    
    Cc: Marek Szyprowski <[email protected]>
    Cc: Robin Murphy <[email protected]>
    Cc: "Christian König" <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Bjorn Helgaas <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: Bert Karwatzki <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    
    Signed-off-by: Balbir Singh <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Marek Szyprowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: fsl-edma: Fix return code for unhandled interrupts [+ + +]
Author: Stefan Wahren <[email protected]>
Date:   Thu Apr 24 13:48:29 2025 +0200

    dmaengine: fsl-edma: Fix return code for unhandled interrupts
    
    [ Upstream commit 5e27af0514e2249a9ccc9a762abd3b74e03a1f90 ]
    
    For fsl,imx93-edma4 two DMA channels share the same interrupt.
    So in case fsl_edma3_tx_handler is called for the "wrong"
    channel, the return code must be IRQ_NONE. This signalize that
    the interrupt wasn't handled.
    
    Fixes: 72f5801a4e2b ("dmaengine: fsl-edma: integrate v3 support")
    Signed-off-by: Stefan Wahren <[email protected]>
    Reviewed-by: Joy Zou <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: idxd: Fix ->poll() return value [+ + +]
Author: Dave Jiang <[email protected]>
Date:   Thu May 8 10:05:48 2025 -0700

    dmaengine: idxd: Fix ->poll() return value
    
    [ Upstream commit ae74cd15ade833adc289279b5c6f12e78f64d4d7 ]
    
    The fix to block access from different address space did not return a
    correct value for ->poll() change.  kernel test bot reported that a
    return value of type __poll_t is expected rather than int. Fix to return
    POLLNVAL to indicate invalid request.
    
    Fixes: 8dfa57aabff6 ("dmaengine: idxd: Fix allowing write() from different address spaces")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: idxd: Fix allowing write() from different address spaces [+ + +]
Author: Vinicius Costa Gomes <[email protected]>
Date:   Mon Apr 21 10:03:37 2025 -0700

    dmaengine: idxd: Fix allowing write() from different address spaces
    
    [ Upstream commit 8dfa57aabff625bf445548257f7711ef294cd30e ]
    
    Check if the process submitting the descriptor belongs to the same
    address space as the one that opened the file, reject otherwise.
    
    Fixes: 6827738dc684 ("dmaengine: idxd: add a write() method for applications to submit work")
    Signed-off-by: Vinicius Costa Gomes <[email protected]>
    Signed-off-by: Dave Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ti: k3-udma-glue: Drop skip_fdq argument from k3_udma_glue_reset_rx_chn [+ + +]
Author: Roger Quadros <[email protected]>
Date:   Mon Feb 24 16:04:17 2025 +0200

    dmaengine: ti: k3-udma-glue: Drop skip_fdq argument from k3_udma_glue_reset_rx_chn
    
    [ Upstream commit 0da30874729baeb01889b0eca16cfda122687503 ]
    
    The user of k3_udma_glue_reset_rx_chn() e.g. ti_am65_cpsw_nuss can
    run on multiple platforms having different DMA architectures.
    On some platforms there can be one FDQ for all flows in the RX channel
    while for others there is a separate FDQ for each flow in the RX channel.
    
    So far we have been relying on the skip_fdq argument of
    k3_udma_glue_reset_rx_chn().
    
    Instead of relying on the user to provide this information, infer it
    based on DMA architecture during k3_udma_glue_request_rx_chn() and save it
    in an internal flag 'single_fdq'. Use that flag at
    k3_udma_glue_reset_rx_chn() to deicide if the FDQ needs
    to be cleared for every flow or just for flow 0.
    
    Fixes the below issue on ti_am65_cpsw_nuss driver on AM62-SK.
    
    > ip link set eth1 down
    > ip link set eth0 down
    > ethtool -L eth0 rx 8
    > ip link set eth0 up
    > modprobe -r ti_am65_cpsw_nuss
    
    [  103.045726] ------------[ cut here ]------------
    [  103.050505] k3_knav_desc_pool size 512000 != avail 64000
    [  103.050703] WARNING: CPU: 1 PID: 450 at drivers/net/ethernet/ti/k3-cppi-desc-pool.c:33 k3_cppi_desc_pool_destroy+0xa0/0xa8 [k3_cppi_desc_pool]
    [  103.068810] Modules linked in: ti_am65_cpsw_nuss(-) k3_cppi_desc_pool snd_soc_hdmi_codec crct10dif_ce snd_soc_simple_card snd_soc_simple_card_utils display_connector rtc_ti_k3 k3_j72xx_bandgap tidss drm_client_lib snd_soc_davinci_mcas
    p drm_dma_helper tps6598x phylink snd_soc_ti_udma rti_wdt drm_display_helper snd_soc_tlv320aic3x_i2c typec at24 phy_gmii_sel snd_soc_ti_edma snd_soc_tlv320aic3x sii902x snd_soc_ti_sdma sa2ul omap_mailbox drm_kms_helper authenc cfg80211 r
    fkill fuse drm drm_panel_orientation_quirks backlight ip_tables x_tables ipv6 [last unloaded: k3_cppi_desc_pool]
    [  103.119950] CPU: 1 UID: 0 PID: 450 Comm: modprobe Not tainted 6.13.0-rc7-00001-g9c5e3435fa66 #1011
    [  103.119968] Hardware name: Texas Instruments AM625 SK (DT)
    [  103.119974] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  103.119983] pc : k3_cppi_desc_pool_destroy+0xa0/0xa8 [k3_cppi_desc_pool]
    [  103.148007] lr : k3_cppi_desc_pool_destroy+0xa0/0xa8 [k3_cppi_desc_pool]
    [  103.154709] sp : ffff8000826ebbc0
    [  103.158015] x29: ffff8000826ebbc0 x28: ffff0000090b6300 x27: 0000000000000000
    [  103.165145] x26: 0000000000000000 x25: 0000000000000000 x24: ffff0000019df6b0
    [  103.172271] x23: ffff0000019df6b8 x22: ffff0000019df410 x21: ffff8000826ebc88
    [  103.179397] x20: 000000000007d000 x19: ffff00000a3b3000 x18: 0000000000000000
    [  103.186522] x17: 0000000000000000 x16: 0000000000000000 x15: 000001e8c35e1cde
    [  103.193647] x14: 0000000000000396 x13: 000000000000035c x12: 0000000000000000
    [  103.200772] x11: 000000000000003a x10: 00000000000009c0 x9 : ffff8000826eba20
    [  103.207897] x8 : ffff0000090b6d20 x7 : ffff00007728c180 x6 : ffff00007728c100
    [  103.215022] x5 : 0000000000000001 x4 : ffff000000508a50 x3 : ffff7ffff6146000
    [  103.222147] x2 : 0000000000000000 x1 : e300b4173ee6b200 x0 : 0000000000000000
    [  103.229274] Call trace:
    [  103.231714]  k3_cppi_desc_pool_destroy+0xa0/0xa8 [k3_cppi_desc_pool] (P)
    [  103.238408]  am65_cpsw_nuss_free_rx_chns+0x28/0x4c [ti_am65_cpsw_nuss]
    [  103.244942]  devm_action_release+0x14/0x20
    [  103.249040]  release_nodes+0x3c/0x68
    [  103.252610]  devres_release_all+0x8c/0xdc
    [  103.256614]  device_unbind_cleanup+0x18/0x60
    [  103.260876]  device_release_driver_internal+0xf8/0x178
    [  103.266004]  driver_detach+0x50/0x9c
    [  103.269571]  bus_remove_driver+0x6c/0xbc
    [  103.273485]  driver_unregister+0x30/0x60
    [  103.277401]  platform_driver_unregister+0x14/0x20
    [  103.282096]  am65_cpsw_nuss_driver_exit+0x18/0xff4 [ti_am65_cpsw_nuss]
    [  103.288620]  __arm64_sys_delete_module+0x17c/0x25c
    [  103.293404]  invoke_syscall+0x44/0x100
    [  103.297149]  el0_svc_common.constprop.0+0xc0/0xe0
    [  103.301845]  do_el0_svc+0x1c/0x28
    [  103.305155]  el0_svc+0x28/0x98
    [  103.308207]  el0t_64_sync_handler+0xc8/0xcc
    [  103.312384]  el0t_64_sync+0x198/0x19c
    [  103.316040] ---[ end trace 0000000000000000 ]---
    
    Signed-off-by: Roger Quadros <[email protected]>
    Acked-by: Jakub Kicinski <[email protected]>
    Acked-by: Peter Ujfalusi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dpll: Add an assertion to check freq_supported_num [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Fri Feb 28 15:02:10 2025 +0000

    dpll: Add an assertion to check freq_supported_num
    
    [ Upstream commit 39e912a959c19338855b768eaaee2917d7841f71 ]
    
    Since the driver is broken in the case that src->freq_supported is not
    NULL but src->freq_supported_num is 0, add an assertion for it.
    
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Jiri Pirko <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Arkadiusz Kubalewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dql: Fix dql->limit value when reset. [+ + +]
Author: Jing Su <[email protected]>
Date:   Wed Mar 19 16:57:51 2025 +0800

    dql: Fix dql->limit value when reset.
    
    [ Upstream commit 3a17f23f7c36bac3a3584aaf97d3e3e0b2790396 ]
    
    Executing dql_reset after setting a non-zero value for limit_min can
    lead to an unreasonable situation where dql->limit is less than
    dql->limit_min.
    
    For instance, after setting
    /sys/class/net/eth*/queues/tx-0/byte_queue_limits/limit_min,
    an ifconfig down/up operation might cause the ethernet driver to call
    netdev_tx_reset_queue, which in turn invokes dql_reset.
    
    In this case, dql->limit is reset to 0 while dql->limit_min remains
    non-zero value, which is unexpected. The limit should always be
    greater than or equal to limit_min.
    
    Signed-off-by: Jing Su <[email protected]>
    Link: https://patch.msgid.link/Z9qHD1s/NEuQBdgH@pilot-ThinkCentre-M930t-N000
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
driver core: faux: only create the device if probe() succeeds [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Tue Feb 25 07:35:46 2025 +0100

    driver core: faux: only create the device if probe() succeeds
    
    [ Upstream commit 21b0dc55bed6d9b5dd5d1ad22b75d9d1c7426bbc ]
    
    It's really hard to know if a faux device properly passes the callback
    to probe() without having to poke around in the faux_device structure
    and then clean up.  Instead of having to have every user of the api do
    this logic, just do it in the faux device core itself.
    
    This makes the use of a custom probe() callback for a faux device much
    simpler overall.
    
    Suggested-by: Kurt Borja <[email protected]>
    Cc: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Kurt Borja <[email protected]>
    Reviewed-by: Danilo Krummrich <[email protected]>
    Link: https://lore.kernel.org/r/2025022545-unroasted-common-fa0e@gregkh
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

driver core: Split devres APIs to device/devres.h [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Wed Feb 12 11:55:03 2025 +0530

    driver core: Split devres APIs to device/devres.h
    
    [ Upstream commit a21cad9312767d26b5257ce0662699bb202cdda1 ]
    
    device.h is a huge header which is hard to follow and easy to miss
    something. Improve that by splitting devres APIs to device/devres.h.
    
    In particular this helps to speedup the build of the code that includes
    device.h solely for a devres APIs.
    
    While at it, cast the error pointers to __iomem using IOMEM_ERR_PTR()
    and fix sparse warnings.
    
    Signed-off-by: Raag Jadav <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Stable-dep-of: 7dd7f39fce00 ("ASoC: SOF: Intel: hda: Fix UAF when reloading module")
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display/dm: drop hw_support check in amdgpu_dm_i2c_xfer() [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Tue Dec 17 09:25:18 2024 -0500

    drm/amd/display/dm: drop hw_support check in amdgpu_dm_i2c_xfer()
    
    [ Upstream commit 33da70bd1e115d7d73f45fb1c09f5ecc448f3f13 ]
    
    DC supports SW i2c as well.  Drop the check.
    
    Reviewed-by: Harry Wentland <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Account For OTO Prefetch Bandwidth When Calculating Urgent Bandwidth [+ + +]
Author: Austin Zheng <[email protected]>
Date:   Mon Jan 13 14:13:51 2025 -0500

    drm/amd/display: Account For OTO Prefetch Bandwidth When Calculating Urgent Bandwidth
    
    [ Upstream commit 36681f15bb12b5c01df924379cdab9234259825c ]
    
    [Why]
    1) The current calculations for OTO prefetch bandwidth do not consider the number of DPP pipes in use.
    As a result, OTO prefetch bandwidth may be larger than the vactive bandwidth if multiple DPP pipes are used.
    OTO prefetch bandwidth should never exceed the vactive bandwidth.
    
    2) Mode programming may be mismatched with mode support
    In cases where mode support has chosen to use the equalized (equ) prefetch schedule,
    mode programming may end up using oto prefetch schedule instead.
    The bandwidth required to do the oto schedule may end up being higher than the equ schedule.
    This can cause the required urgent bandwidth to exceed the available urgent bandwidth.
    
    [How]
    Output the oto prefetch bandwidth and incorperate it into the urgent bandwidth calculations
    even if the prefetch schedule being used is not the oto schedule.
    
    Reviewed-by: Dillon Varone <[email protected]>
    Signed-off-by: Austin Zheng <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Add opp recout adjustment [+ + +]
Author: Navid Assadian <[email protected]>
Date:   Mon Jan 20 12:35:23 2025 -0500

    drm/amd/display: Add opp recout adjustment
    
    [ Upstream commit fba4d19f3731483ee8565f9e9bb7ed9fc89479e8 ]
    
    [Why]
    For subsampled YUV output formats, more pixels can get fetched and be
    used for scaling.
    
    [How]
    Add the adjustment to the calculated recout, so the viewport covers the
    corresponding pixels on the source plane.
    
    Signed-off-by: Navid Assadian <[email protected]>
    Reviewed-by: Samson Tam <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Add support for disconnected eDP streams [+ + +]
Author: Harry VanZyllDeJong <[email protected]>
Date:   Fri Feb 7 13:46:53 2025 -0500

    drm/amd/display: Add support for disconnected eDP streams
    
    [ Upstream commit 6571bef25fe48c642f7a69ccf7c3198b317c136a ]
    
    [Why]
    eDP may not be connected to the GPU on driver start causing
    fail enumeration.
    
    [How]
    Move the virtual signal type check before the eDP connector
    signal check.
    
    Reviewed-by: Wenjing Liu <[email protected]>
    Signed-off-by: Harry VanZyllDeJong <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Ammend DCPG IP control sequences to align with HW guidance [+ + +]
Author: Dillon Varone <[email protected]>
Date:   Tue Jan 14 12:14:26 2025 -0500

    drm/amd/display: Ammend DCPG IP control sequences to align with HW guidance
    
    [ Upstream commit cbd97d621ece1d92c3542e52f8af7c04cd2c6afb ]
    
    [WHY&HOW]
    IP_REQUEST_CNTL should only be toggled off when it was originally, never
    unconditionally.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Dillon Varone <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: calculate the remain segments for all pipes [+ + +]
Author: Zhikai Zhai <[email protected]>
Date:   Thu Feb 27 20:09:14 2025 +0800

    drm/amd/display: calculate the remain segments for all pipes
    
    [ Upstream commit d3069feecdb5542604d29b59acfd1fd213bad95b ]
    
    [WHY]
    In some cases the remain de-tile buffer segments will be greater
    than zero if we don't add the non-top pipe to calculate, at
    this time the override de-tile buffer size will be valid and used.
    But it makes the de-tile buffer segments used finally for all of pipes
    exceed the maximum.
    
    [HOW]
    Add the non-top pipe to calculate the remain de-tile buffer segments.
    Don't set override size to use the average according to pipe count
    if the value exceed the maximum.
    
    Reviewed-by: Charlene Liu <[email protected]>
    Signed-off-by: Zhikai Zhai <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Call FP Protect Before Mode Programming/Mode Support [+ + +]
Author: Austin Zheng <[email protected]>
Date:   Thu Apr 17 10:24:29 2025 -0400

    drm/amd/display: Call FP Protect Before Mode Programming/Mode Support
    
    [ Upstream commit eba692ca3abca258b3214a6e4126afefad1822f0 ]
    
    [Why]
    Memory allocation occurs within dml21_validate() for adding phantom planes.
    May cause kernel to be tainted due to usage of FP Start.
    
    [How]
    Move FP start from dml21_validate to before mode programming/mode support.
    Calculations requiring floating point are all done within mode programming
    or mode support.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Austin Zheng <[email protected]>
    Signed-off-by: Ray Wu <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit fe3250f10819b411808ab9ae1d824c5fc9b59170)
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Correct timing_adjust_pending flag setting. [+ + +]
Author: Zhongwei Zhang <[email protected]>
Date:   Fri Feb 28 10:35:23 2025 +0800

    drm/amd/display: Correct timing_adjust_pending flag setting.
    
    [ Upstream commit 34935701b7ed1a1ef449310ba041f10964b23cf4 ]
    
    [Why&How]
    stream->adjust will be overwritten by update->crtc_timing_adjust.
    We should set update->crtc_timing_adjust->timing_adjust_pending
    and then overwrite stream->adjust.
    Reset update->crtc_timing_adjust->timing_adjust_pending after
    the assignment.
    
    Reviewed-by: Charlene Liu <[email protected]>
    Signed-off-by: Zhongwei Zhang <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Stable-dep-of: 874697e12793 ("drm/amd/display: Defer BW-optimization-blocked DRR adjustments")
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Defer BW-optimization-blocked DRR adjustments [+ + +]
Author: John Olender <[email protected]>
Date:   Wed Apr 16 02:54:26 2025 -0400

    drm/amd/display: Defer BW-optimization-blocked DRR adjustments
    
    [ Upstream commit 874697e127931bf50a37ce9d96ee80f3a08a0c38 ]
    
    [Why & How]
    Instead of dropping DRR updates, defer them. This fixes issues where
    monitor continues to see incorrect refresh rate after VRR was turned off
    by userspace.
    
    Fixes: 32953485c558 ("drm/amd/display: Do not update DRR while BW optimizations pending")
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3546
    Reviewed-by: Sun peng Li <[email protected]>
    Signed-off-by: John Olender <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Ray Wu <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 53761b7ecd83e6fbb9f2206f8c980a6aa308c844)
    Cc: [email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Do not enable replay when vtotal update is pending. [+ + +]
Author: Danny Wang <[email protected]>
Date:   Thu Feb 13 16:18:34 2025 +0800

    drm/amd/display: Do not enable replay when vtotal update is pending.
    
    [ Upstream commit bd00b29b5f236dce677089319176dee5872b5a7a ]
    
    [Why&How]
    Vtotal is not applied to HW when handling vsync interrupt.
    Make sure vtotal is aligned before enable replay.
    
    Reviewed-by: Anthony Koo <[email protected]>
    Reviewed-by: Robin Chen <[email protected]>
    Signed-off-by: Danny Wang <[email protected]>
    Signed-off-by: Zhongwei Zhang <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Stable-dep-of: 874697e12793 ("drm/amd/display: Defer BW-optimization-blocked DRR adjustments")
    Signed-off-by: Sasha Levin <[email protected]>
drm/amd/display: Don't treat wb connector as physical in create_validate_stream_for_sink [+ + +]
Author: Harry Wentland <[email protected]>
Date:   Fri Jan 31 11:57:49 2025 -0500

    drm/amd/display: Don't treat wb connector as physical in create_validate_stream_for_sink
    
    [ Upstream commit cbf4890c6f28fb1ad733e14613fbd33c2004bced ]
    
    Don't try to operate on a drm_wb_connector as an amdgpu_dm_connector.
    While dereferencing aconnector->base will "work" it's wrong and
    might lead to unknown bad things. Just... don't.
    
    Reviewed-by: Alex Hung <[email protected]>
    Signed-off-by: Harry Wentland <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Don't try AUX transactions on disconnected link [+ + +]
Author: Ilya Bakoulin <[email protected]>
Date:   Tue Jan 28 13:14:54 2025 -0500

    drm/amd/display: Don't try AUX transactions on disconnected link
    
    [ Upstream commit e8bffa52e0253cfd689813a620e64521256bc712 ]
    
    [Why]
    Setting link DPMS off in response to HPD disconnect creates AUX
    transactions on a link that is supposed to be disconnected. This can
    cause issues in some cases when the sink re-asserts HPD and expects
    source to re-enable the link.
    
    [How]
    Avoid AUX transactions on disconnected link.
    
    Reviewed-by: Wenjing Liu <[email protected]>
    Signed-off-by: Ilya Bakoulin <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Enable urgent latency adjustment on DCN35 [+ + +]
Author: Nicholas Susanto <[email protected]>
Date:   Wed Apr 2 15:04:08 2025 -0400

    drm/amd/display: Enable urgent latency adjustment on DCN35
    
    [ Upstream commit 756c85e4d0ddc497b4ad5b1f41ad54e838e06188 ]
    
    [Why]
    
    Urgent latency adjustment was disabled on DCN35 due to issues with P0
    enablement on some platforms. Without urgent latency, underflows occur
    when doing certain high timing configurations. After testing, we found
    that reenabling urgent latency didn't reintroduce p0 support on multiple
    platforms.
    
    [How]
    
    renable urgent latency on DCN35 and setting it to 3000 Mhz.
    
    This reverts commit 3412860cc4c0c484f53f91b371483e6e4440c3e5.
    
    Reviewed-by: Charlene Liu <[email protected]>
    Signed-off-by: Nicholas Susanto <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Mark Broadworth <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit cd74ce1f0cddffb3f36d0995d0f61e89f0010738)
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Ensure DMCUB idle before reset on DCN31/DCN35 [+ + +]
Author: Nicholas Kazlauskas <[email protected]>
Date:   Wed Feb 19 09:56:53 2025 -0500

    drm/amd/display: Ensure DMCUB idle before reset on DCN31/DCN35
    
    [ Upstream commit c707ea82c79dbd1d295ec94cc6529a5248c77757 ]
    
    [Why]
    If we soft reset before halt finishes and there are outstanding
    memory transactions then the memory interface may produce unexpected
    results, such as out of order transactions when the firmware next runs.
    
    These can manifest as random or unexpected load/store violations.
    
    [How]
    Increase the timeout before soft reset to ensure the DMCUB has quiesced.
    This is effectively 1s maximum based on experimentation.
    
    Use the enable bit check on DCN31 like we're doing on DCN35 and reorder
    the reset writes to follow the HW programming guide.
    
    Ensure we're reading SCRATCH7 instead of SCRATCH8 for the HALT code.
    No current versions of DMCUB firmware use the SCRATCH8 boot bit to
    dynamically switch where the HALT code goes to maintain backwards
    compatibility with PSP.
    
    Reviewed-by: Dillon Varone <[email protected]>
    Signed-off-by: Nicholas Kazlauskas <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Exit idle optimizations before accessing PHY [+ + +]
Author: Ovidiu Bunea <[email protected]>
Date:   Mon Feb 3 15:43:32 2025 -0500

    drm/amd/display: Exit idle optimizations before accessing PHY
    
    [ Upstream commit c488967488d7eff7b9c527d5469c424c15377502 ]
    
    [why & how]
    By default, DCN HW is in idle optimized state which does not allow access
    to PHY registers. If BIOS powers up the DCN, it is fine because they will
    power up everything. Only exit idle optimized state when not taking control
    from VBIOS.
    
    Fixes: be704e5ef4bd ("Revert "drm/amd/display: Exit idle optimizations before attempt to access PHY"")
    Reviewed-by: Charlene Liu <[email protected]>
    Signed-off-by: Ovidiu Bunea <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix BT2020 YCbCr limited/full range input [+ + +]
Author: Ilya Bakoulin <[email protected]>
Date:   Wed Jan 29 14:46:27 2025 -0500

    drm/amd/display: Fix BT2020 YCbCr limited/full range input
    
    [ Upstream commit 07bc2dcbcf403d47d6f305ef7f0d3d489491c5fb ]
    
    [Why]
    BT2020 YCbCr input is not handled properly when full range
    quantization is used and limited range is not supported at all.
    
    [How]
    - Add enums for BT2020 YCbCr limited/full range
    - Add limited range CSC matrix
    
    Reviewed-by: Krunoslav Kovac <[email protected]>
    Signed-off-by: Ilya Bakoulin <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Robert Mader <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: fix check for identity ratio [+ + +]
Author: Samson Tam <[email protected]>
Date:   Tue Jan 21 11:01:47 2025 -0500

    drm/amd/display: fix check for identity ratio
    
    [ Upstream commit 0d3004647631aedb713251525a99784661574767 ]
    
    [Why]
    IDENTITY_RATIO check uses 2 bits for integer, which only allows
     checking downscale ratios up to 3.  But we support up to 6x
     downscale
    
    [How]
    Update IDENTITY_RATIO to check 3 bits for integer
    Add ASSERT to catch if we downscale more than 6x
    
    Signed-off-by: Samson Tam <[email protected]>
    Reviewed-by: Jun Lei <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: fix dcn4x init failed [+ + +]
Author: Charlene Liu <[email protected]>
Date:   Thu Feb 13 12:37:10 2025 -0500

    drm/amd/display: fix dcn4x init failed
    
    [ Upstream commit 23ef388a84c72b0614a6c10f866ffeac7e807719 ]
    
    [why]
    failed due to cmdtable not created.
    switch atombios cmdtable as default.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Charlene Liu <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix DMUB reset sequence for DCN401 [+ + +]
Author: Dillon Varone <[email protected]>
Date:   Thu Feb 13 13:10:41 2025 -0500

    drm/amd/display: Fix DMUB reset sequence for DCN401
    
    [ Upstream commit 0dfcc2bf269010a6e093793034c048049a40ee93 ]
    
    [WHY]
    It should no longer use DMCUB_SOFT_RESET as it can result
    in the memory request path becoming desynchronized.
    
    [HOW]
    To ensure robustness in the reset sequence:
    1) Extend timeout on the "halt" command sent via gpint, and check for
    controller to enter "wait" as a stronger guarantee that there are no
    requests to memory still in flight.
    2) Remove usage of DMCUB_SOFT_RESET
    3) Rely on PSP to reset the controller safely
    
    Reviewed-by: Nicholas Kazlauskas <[email protected]>
    Signed-off-by: Dillon Varone <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix incorrect DPCD configs while Replay/PSR switch [+ + +]
Author: Leon Huang <[email protected]>
Date:   Tue Feb 11 15:45:43 2025 +0800

    drm/amd/display: Fix incorrect DPCD configs while Replay/PSR switch
    
    [ Upstream commit 0d9cabc8f591ea1cd97c071b853b75b155c13259 ]
    
    [Why]
    When switching between PSR/Replay,
    the DPCD config of previous mode is not cleared,
    resulting in unexpected behavior in TCON.
    
    [How]
    Initialize the DPCD in setup function
    
    Reviewed-by: Robin Chen <[email protected]>
    Signed-off-by: Leon Huang <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix mismatch type comparison [+ + +]
Author: Assadian, Navid <[email protected]>
Date:   Thu Dec 19 17:19:09 2024 -0500

    drm/amd/display: Fix mismatch type comparison
    
    [ Upstream commit 26873260d394b1e33cdd720154aedf0af95327f9 ]
    
    The mismatch type comparison/assignment may cause data loss. Since the
    values are always non-negative, it is safe to use unsigned variables to
    resolve the mismatch.
    
    Signed-off-by: Navid Assadian <[email protected]>
    Reviewed-by: Joshua Aberback <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix mismatch type comparison in custom_float [+ + +]
Author: Samson Tam <[email protected]>
Date:   Tue Jan 7 14:16:04 2025 -0500

    drm/amd/display: Fix mismatch type comparison in custom_float
    
    [ Upstream commit 86f06bcbb54e93f3c7b5e22ae37e72882b74c4b0 ]
    
    [Why & How]
    Passing uint into uchar function param.  Pass uint instead
    
    Signed-off-by: Samson Tam <[email protected]>
    Reviewed-by: Alvin Lee <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix p-state type when p-state is unsupported [+ + +]
Author: Dillon Varone <[email protected]>
Date:   Wed Feb 12 17:06:42 2025 -0500

    drm/amd/display: Fix p-state type when p-state is unsupported
    
    [ Upstream commit a025f424af0407b7561bd5e6217295dde3abbc2e ]
    
    [WHY&HOW]
    P-state type would remain on previously used when unsupported which
    causes confusion in logging and visual confirm, so set back to zero
    when unsupported.
    
    Reviewed-by: Aric Cyr <[email protected]>
    Signed-off-by: Dillon Varone <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fixes for mcache programming in DML21 [+ + +]
Author: Dillon Varone <[email protected]>
Date:   Fri Jan 17 17:49:41 2025 -0500

    drm/amd/display: Fixes for mcache programming in DML21
    
    [ Upstream commit c909a49128a31bced8cfbd2dfb0a4fe56e01a6d0 ]
    
    [WHY & HOW]
    - Fix indexing phantom planes for mcache programming in the wrapper
    - Fix phantom mcache allocations to align with HW guidance
    - Fix mcache assignment for chroma plane for multi-planar formats
    
    Reviewed-by: Austin Zheng <[email protected]>
    Signed-off-by: Dillon Varone <[email protected]>
    Signed-off-by: Alex Hung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Guard against setting dispclk low for dcn31x [+ + +]
Author: Jing Zhou <[email protected]>
Date:   Tue Mar 4 23:15:56 2025 +0800

    drm/amd/display: Guard against setting dispclk low for dcn31x
    
    [ Upstream commit 9c2f4ae64bb6f6d83a54d88b9ee0f369cdbb9fa8 ]
    
    [WHY]
    We should never apply a minimum dispclk value while in
    prepare_bandwidth or while displays are active. This is
    always an optimizaiton for when all displays are disabled.
    
    [HOW]
    Defer dispclk optimization until safe_to_lower = true
    and display_count reaches 0.
    
    Since 0 has a special value in this logic (ie. no dispclk
    required) we also need adjust the logic that clamps it for
    the actual request to PMFW.
    
    Reviewed-by: Charlene Liu <[email protected]>
    Reviewed-by: Chris Park <[email protected]>
    Reviewed-by: Eric Yang <[email protected]>
    Signed-off-by: Jing Zhou <[email protected]>
    Signed-off-by: Nicholas Kazlauskas <[email protected]>
    Signed-off-by: Alex Hung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Guard against setting dispclk low when active [+ + +]
Author: Nicholas Kazlauskas <[email protected]>
Date:   Mon Feb 3 09:49:58 2025 -0500

    drm/amd/display: Guard against setting dispclk low when active
    
    [ Upstream commit 72d7a7fa1f2404fd31c84a8f808b1b37021a3a9e ]
    
    [Why]
    We should never apply a minimum dispclk value while in prepare_bandwidth
    or while displays are active. This is always an optimization for when
    all displays are disabled.
    
    [How]
    Defer dispclk optimization until safe_to_lower = true and display_count
    reaches 0.
    
    Since 0 has a special value in this logic (ie. no dispclk required)
    we also need adjust the logic that clamps it for the actual request
    to PMFW.
    
    Reviewed-by: Gabe Teeger <[email protected]>
    Reviewed-by: Leo Chen <[email protected]>
    Reviewed-by: Syed Hassan <[email protected]>
    Signed-off-by: Nicholas Kazlauskas <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: handle max_downscale_src_width fail check [+ + +]
Author: Yihan Zhu <[email protected]>
Date:   Wed Feb 12 15:17:56 2025 -0500

    drm/amd/display: handle max_downscale_src_width fail check
    
    [ Upstream commit 02a940da2ccc0cc0299811379580852b405a0ea2 ]
    
    [WHY]
    If max_downscale_src_width check fails, we exit early from TAP calculation and left a NULL
    value to the scaling data structure to cause the zero divide in the DML validation.
    
    [HOW]
    Call set default TAP calculation before early exit in get_optimal_number_of_taps due to
    max downscale limit exceed.
    
    Reviewed-by: Samson Tam <[email protected]>
    Signed-off-by: Yihan Zhu <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Increase block_sequence array size [+ + +]
Author: Joshua Aberback <[email protected]>
Date:   Wed Jan 8 12:03:23 2025 -0500

    drm/amd/display: Increase block_sequence array size
    
    [ Upstream commit 3a7810c212bcf2f722671dadf4b23ff70a7d23ee ]
    
    [Why]
    It's possible to generate more than 50 steps in hwss_build_fast_sequence,
    for example with a 6-pipe asic where all pipes are in one MPC chain. This
    overflows the block_sequence buffer and corrupts block_sequence_steps,
    causing a crash.
    
    [How]
    Expand block_sequence to 100 items. A naive upper bound on the possible
    number of steps for a 6-pipe asic, ignoring the potential for steps to be
    mutually exclusive, is 91 with current code, therefore 100 is sufficient.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Joshua Aberback <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Initial psr_version with correct setting [+ + +]
Author: Tom Chung <[email protected]>
Date:   Mon Jan 13 14:22:31 2025 +0800

    drm/amd/display: Initial psr_version with correct setting
    
    [ Upstream commit d8c782cac5007e68e7484d420168f12d3490def6 ]
    
    [Why & How]
    The initial setting for psr_version is not correct while
    create a virtual link.
    
    The default psr_version should be DC_PSR_VERSION_UNSUPPORTED.
    
    Reviewed-by: Roman Li <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: not abort link train when bw is low [+ + +]
Author: Peichen Huang <[email protected]>
Date:   Tue Feb 25 14:52:30 2025 +0800

    drm/amd/display: not abort link train when bw is low
    
    [ Upstream commit 8a21da2842bb22b2b80e5902d0438030d729bfd3 ]
    
    [WHY]
    DP tunneling should not abort link train even bandwidth become
    too low after downgrade. Otherwise, it would fail compliance test.
    
    [HOW}
    Do link train with downgrade settings even bandwidth is not enough
    
    Reviewed-by: Cruise Hung <[email protected]>
    Reviewed-by: Meenakshikumar Somasundaram <[email protected]>
    Signed-off-by: Peichen Huang <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: pass calculated dram_speed_mts to dml2 [+ + +]
Author: Charlene Liu <[email protected]>
Date:   Mon Jan 13 11:57:54 2025 -0500

    drm/amd/display: pass calculated dram_speed_mts to dml2
    
    [ Upstream commit b40d022ec06ade9f6c809091dc188422a0f0946d ]
    
    [why]
    currently dml2 is using a hard coded 16 to convert memclk to dram_speed_mts.
    for apu, this depends on wck_ratio.
    
    change to pass the already calculated dram_speed_mts from fpu to dml2.
    
    v2: use existing calculation of dram_speed_mts for now to avoid regression
    
    Signed-off-by: Charlene Liu <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Reviewed-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Populate register address for dentist for dcn401 [+ + +]
Author: Dillon Varone <[email protected]>
Date:   Wed Jan 8 15:25:41 2025 -0500

    drm/amd/display: Populate register address for dentist for dcn401
    
    [ Upstream commit 5f0d1ef6f16e150ee46cc00b8d233d9d271fe39e ]
    
    [WHY&HOW]
    Address was not previously populated which can result in incorrect
    clock frequencies being read on boot.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Dillon Varone <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Read LTTPR ALPM caps during link cap retrieval [+ + +]
Author: George Shen <[email protected]>
Date:   Tue Feb 4 14:34:02 2025 -0500

    drm/amd/display: Read LTTPR ALPM caps during link cap retrieval
    
    [ Upstream commit de84d580126eb2214937df755cfec5ef0901479e ]
    
    [Why]
    The latest DP spec requires the DP TX to read DPCD F0000h through F0009h
    when detecting LTTPR capabilities for the first time.
    
    [How]
    Update LTTPR cap retrieval to read up to F0009h (two more bytes than the
    previous F0007h), and store the LTTPR ALPM capabilities.
    
    Reviewed-by: Wenjing Liu <[email protected]>
    Signed-off-by: George Shen <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: remove minimum Dispclk and apply oem panel timing. [+ + +]
Author: Charlene Liu <[email protected]>
Date:   Mon Mar 3 13:53:16 2025 -0500

    drm/amd/display: remove minimum Dispclk and apply oem panel timing.
    
    [ Upstream commit 756e58e83e89d372b94269c0cde61fe55da76947 ]
    
    [why & how]
    1. apply oem panel timing (not only on OLED)
    2. remove MIN_DPP_DISP_CLK request in driver.
    
    This fix will apply for dcn31x but not
    sync with DML's output.
    
    Reviewed-by: Ovidiu Bunea <[email protected]>
    Signed-off-by: Charlene Liu <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: remove TF check for LLS policy [+ + +]
Author: Samson Tam <[email protected]>
Date:   Mon Jan 27 18:27:06 2025 -0500

    drm/amd/display: remove TF check for LLS policy
    
    [ Upstream commit 2a4519c4e9b2e1f622ab4c5f5841abdb9760cb0b ]
    
    [Why & How]
    LLS policy not affected by TF.
    Remove check in don't care case and use
     pixel format only.
    
    Reviewed-by: Navid Assadian <[email protected]>
    Signed-off-by: Samson Tam <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Request HW cursor on DCN3.2 with SubVP [+ + +]
Author: Aric Cyr <[email protected]>
Date:   Thu Jan 23 16:39:52 2025 -0500

    drm/amd/display: Request HW cursor on DCN3.2 with SubVP
    
    [ Upstream commit b74f46f3ce1e5f6336645f1e9ff47c56d5dfdef1 ]
    
    [why]
    When SubVP is active the HW cursor size is limited to 64x64, and
    anything larger will force composition which is bad for gaming on
    DCN3.2 if the game uses a larger cursor.
    
    [how]
    If HW cursor is requested, typically by a fullscreen game, do not
    enable SubVP so that up to 256x256 cursor sizes are available for
    DCN3.2.
    
    Reviewed-by: Aric Cyr <[email protected]>
    Signed-off-by: Aric Cyr <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Reverse the visual confirm recouts [+ + +]
Author: Peterson Guo <[email protected]>
Date:   Thu Dec 5 18:51:25 2024 -0500

    drm/amd/display: Reverse the visual confirm recouts
    
    [ Upstream commit 3c50bf2196aaddcaffe2c7a1a7080470380cbfdd ]
    
    [WHY]
    When checking if a pipe can disable cursor to prevent duplicate cursors,
    having visual confirm on will prevent disabling cursors on planes which
    cover the bottom of the screen.
    
    [HOW]
    When checking if a plane can disable visual confirm, the pipe first
    reverses these calculations before doing the checks.
    
    Reviewed-by: Alvin Lee <[email protected]>
    Signed-off-by: Peterson Guo <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Skip checking FRL_MODE bit for PCON BW determination [+ + +]
Author: George Shen <[email protected]>
Date:   Fri Feb 14 22:00:13 2025 -0500

    drm/amd/display: Skip checking FRL_MODE bit for PCON BW determination
    
    [ Upstream commit 0584bbcf0c53c133081100e4f4c9fe41e598d045 ]
    
    [Why/How]
    Certain PCON will clear the FRL_MODE bit despite supporting the link BW
    indicated in the other bits.
    
    Thus, skip checking the FRL_MODE bit when interpreting the
    hdmi_encoded_link_bw struct.
    
    Reviewed-by: Wenjing Liu <[email protected]>
    Signed-off-by: George Shen <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Support multiple options during psr entry. [+ + +]
Author: Martin Tsai <[email protected]>
Date:   Mon Jan 20 11:21:46 2025 +0800

    drm/amd/display: Support multiple options during psr entry.
    
    [ Upstream commit 3a5fa55455db6a11248a25f24570c365f9246144 ]
    
    [WHY]
    Some panels may not handle idle pattern properly during PSR entry.
    
    [HOW]
    Add a condition to allow multiple options on power down
    sequence during PSR1 entry.
    
    Reviewed-by: Anthony Koo <[email protected]>
    Signed-off-by: Martin Tsai <[email protected]>
    Signed-off-by: Alex Hung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Update CR AUX RD interval interpretation [+ + +]
Author: George Shen <[email protected]>
Date:   Fri Jan 10 11:35:46 2025 -0500

    drm/amd/display: Update CR AUX RD interval interpretation
    
    [ Upstream commit 6a7fde433231c18164c117592d3e18ced648ad58 ]
    
    [Why]
    DP spec updated to have the CR AUX RD interval match the EQ AUX RD
    interval interpretation of DPCD 0000Eh/0220Eh for 8b/10b non-LTTPR mode
    and LTTPR transparent mode cases.
    
    [How]
    Update interpretation of DPCD 0000Eh/0220Eh for CR AUX RD interval
    during 8b/10b link training.
    
    Reviewed-by: Michael Strauss <[email protected]>
    Reviewed-by: Wenjing Liu <[email protected]>
    Signed-off-by: George Shen <[email protected]>
    Signed-off-by: Zaeem Mohamed <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Use Nominal vBlank If Provided Instead Of Capping It [+ + +]
Author: Austin Zheng <[email protected]>
Date:   Tue Jan 7 17:49:36 2025 -0500

    drm/amd/display: Use Nominal vBlank If Provided Instead Of Capping It
    
    [ Upstream commit 41df56b1fc24cc36fffb10e437385b3a49fbb5e2 ]
    
    [Why/How]
    vBlank used to determine the max vStartup is based on the smallest between
    the vblank provided by the timing and vblank in ip_caps.
    Extra vblank time is not considered if the vblank provided by the timing ends
    up being higher than what's defined by the ip_caps
    
    Use 1 less than the vblank size in case the timing is interlaced
    so vstartup will always be less than vblank_nom.
    
    Reviewed-by: Dillon Varone <[email protected]>
    Signed-off-by: Austin Zheng <[email protected]>
    Signed-off-by: Wayne Lin <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/pm: Fetch current power limit from PMFW [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Tue Feb 18 17:43:01 2025 +0530

    drm/amd/pm: Fetch current power limit from PMFW
    
    [ Upstream commit b2a9e562dfa156bd53e62ce571f3f8f65d243f14 ]
    
    On SMU v13.0.12, always query the firmware to get the current power
    limit as it could be updated through other means also.
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Asad Kamal <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Skip P2S load for SMU v13.0.12 [+ + +]
Author: Asad Kamal <[email protected]>
Date:   Thu Dec 19 19:16:37 2024 +0800

    drm/amd/pm: Skip P2S load for SMU v13.0.12
    
    [ Upstream commit 1fb85819d629676f1d53f40c3fffa25a33a881e4 ]
    
    Skip P2S table load for SMU v13.0.12
    
    Signed-off-by: Asad Kamal <[email protected]>
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/discovery: check ip_discovery fw file available [+ + +]
Author: Flora Cui <[email protected]>
Date:   Thu Feb 27 10:39:27 2025 +0800

    drm/amdgpu/discovery: check ip_discovery fw file available
    
    [ Upstream commit 017fbb6690c2245b1b4ef39b66c79d2990fe63dd ]
    
    Signed-off-by: Flora Cui <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/gfx10: Add cleaner shader for GFX10.1.10 [+ + +]
Author: Srinivasan Shanmugam <[email protected]>
Date:   Tue Jan 21 12:32:07 2025 +0530

    drm/amdgpu/gfx10: Add cleaner shader for GFX10.1.10
    
    [ Upstream commit 25961bad9212476983c570438366e1f5e9a9cf21 ]
    
    This commit adds the cleaner shader microcode for GFX10.1.0 GPUs. The
    cleaner shader is a piece of GPU code that is used to clear or
    initialize certain GPU resources, such as Local Data Share (LDS), Vector
    General Purpose Registers (VGPRs), and Scalar General Purpose Registers
    (SGPRs).
    
    Clearing these resources is important for ensuring data isolation
    between different workloads running on the GPU. Without the cleaner
    shader, residual data from a previous workload could potentially be
    accessed by a subsequent workload, leading to data leaks and incorrect
    computation results.
    
    The cleaner shader microcode is represented as an array of 32-bit words
    (`gfx_10_1_0_cleaner_shader_hex`). This array is the binary
    representation of the cleaner shader code, which is written in a
    low-level GPU instruction set.
    
    When the cleaner shader feature is enabled, the AMDGPU driver loads this
    array into a specific location in the GPU memory. The GPU then reads
    this memory location to fetch and execute the cleaner shader
    instructions.
    
    The cleaner shader is executed automatically by the GPU at the end of
    each workload, before the next workload starts. This ensures that all
    GPU resources are in a clean state before the start of each workload.
    
    This addition is part of the cleaner shader feature implementation. The
    cleaner shader feature helps resource utilization by cleaning up GPU
    resources after they are used. It also enhances security and reliability
    by preventing data leaks between workloads.
    
    Cc: Christian König <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Signed-off-by: Srinivasan Shanmugam <[email protected]>
    Suggested-by: Alex Deucher <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/gfx11: don't read registers in mqd init [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Wed Feb 26 15:55:33 2025 -0500

    drm/amdgpu/gfx11: don't read registers in mqd init
    
    [ Upstream commit e27b36ea6ba5f29e91fcfb375ea29503708fcf43 ]
    
    Just use the default values.  There's not need to
    get the value from hardware and it could cause problems
    if we do that at runtime and gfxoff is active.
    
    Reviewed-by: Mukul Joshi <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/gfx12: don't read registers in mqd init [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Wed Feb 26 16:08:03 2025 -0500

    drm/amdgpu/gfx12: don't read registers in mqd init
    
    [ Upstream commit fc3c139cf0432b79fd08e23100a559ee51cd0be4 ]
    
    Just use the default values.  There's not need to
    get the value from hardware and it could cause problems
    if we do that at runtime and gfxoff is active.
    
    Reviewed-by: Mukul Joshi <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/mes11: fix set_hw_resources_1 calculation [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Fri Feb 7 09:39:24 2025 -0500

    drm/amdgpu/mes11: fix set_hw_resources_1 calculation
    
    [ Upstream commit 1350dd3691b5f757a948e5b9895d62c422baeb90 ]
    
    It's GPU page size not CPU page size.  In most cases they
    are the same, but not always.  This can lead to overallocation
    on systems with larger pages.
    
    Cc: Srinivasan Shanmugam <[email protected]>
    Cc: Christian König <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu/vcn4.0.5: split code along instances [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Wed Nov 13 12:21:18 2024 -0500

    drm/amdgpu/vcn4.0.5: split code along instances
    
    commit ecc9ab4e924b7eb9e2c4a668162aaa1d9d60d08c upstream.
    
    Split the code on a per instance basis.  This will allow
    us to use the per instance functions in the future to
    handle more things per instance.
    
    v2: squash in fix for stop() from Boyuan
    
    Reviewed-by: Boyuan Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Tested-by: Eric Naim <[email protected]>
    Signed-off-by: Eric Naim <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: Add offset normalization in VCN v5.0.1 [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Thu Feb 20 13:40:31 2025 +0530

    drm/amdgpu: Add offset normalization in VCN v5.0.1
    
    [ Upstream commit 0b9647d40ef82837d5025de6daad64db775ea1c5 ]
    
    VCN v5.0.1 also will need register offset normalization. Reuse the logic
    from VCN v4.0.3. Also, avoid HDP flush similar to VCN v4.0.3
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: adjust drm_firmware_drivers_only() handling [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Thu Mar 13 20:52:38 2025 -0400

    drm/amdgpu: adjust drm_firmware_drivers_only() handling
    
    [ Upstream commit e00e5c223878a60e391e5422d173c3382d378f87 ]
    
    Move to probe so we can check the PCI device type and
    only apply the drm_firmware_drivers_only() check for
    PCI DISPLAY classes.  Also add a module parameter to
    override the nomodeset kernel parameter as a workaround
    for platforms that have this hardcoded on their kernel
    command lines.
    
    Reviewed-by: Kent Russell <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Allow P2P access through XGMI [+ + +]
Author: Felix Kuehling <[email protected]>
Date:   Wed Apr 16 00:19:13 2025 -0400

    drm/amdgpu: Allow P2P access through XGMI
    
    [ Upstream commit a92741e72f91b904c1d8c3d409ed8dbe9c1f2b26 ]
    
    If peer memory is accessible through XGMI, allow leaving it in VRAM
    rather than forcing its migration to GTT on DMABuf attachment.
    
    Signed-off-by: Felix Kuehling <[email protected]>
    Tested-by: Hao (Claire) Zhou <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 372c8d72c3680fdea3fbb2d6b089f76b4a6d596a)
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Avoid HDP flush on JPEG v5.0.1 [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Thu Feb 20 13:38:06 2025 +0530

    drm/amdgpu: Avoid HDP flush on JPEG v5.0.1
    
    [ Upstream commit a734a717dcfe1ce618301775034e598cb456665b ]
    
    Similar to JPEG v4.0.3, HDP flush shouldn't be performed by JPEG engine.
    Keep it empty.
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c [+ + +]
Author: Victor Lu <[email protected]>
Date:   Thu Feb 13 18:38:28 2025 -0500

    drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c
    
    [ Upstream commit 057fef20b8401110a7bc1c2fe9d804a8a0bf0d24 ]
    
    SRIOV VF does not have write access to AGP BAR regs.
    Skip the writes to avoid a dmesg warning.
    
    Signed-off-by: Victor Lu <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: don't free conflicting apertures for non-display devices [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Wed Sep 25 10:29:31 2024 -0400

    drm/amdgpu: don't free conflicting apertures for non-display devices
    
    [ Upstream commit 9deacd6c55f1b31e5ab20db79df2e14ac480203c ]
    
    PCI_CLASS_ACCELERATOR_PROCESSING devices won't ever be
    the sysfb, so there is no need to free conflicting
    apertures.
    
    Reviewed-by: Kent Russell <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: enlarge the VBIOS binary size limit [+ + +]
Author: Shiwu Zhang <[email protected]>
Date:   Tue Nov 19 15:58:39 2024 +0800

    drm/amdgpu: enlarge the VBIOS binary size limit
    
    [ Upstream commit 667b96134c9e206aebe40985650bf478935cbe04 ]
    
    Some chips have a larger VBIOS file so raise the size limit to support
    the flashing tool.
    
    Signed-off-by: Shiwu Zhang <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Fix missing drain retry fault the last entry [+ + +]
Author: Emily Deng <[email protected]>
Date:   Mon Mar 3 15:10:22 2025 +0800

    drm/amdgpu: Fix missing drain retry fault the last entry
    
    [ Upstream commit fe2fa3be3d59ba67d6de54a0064441ec233cb50c ]
    
    While the entry get in svm_range_unmap_from_cpu is the last entry, and
    the entry is page fault, it also need to be dropped. So for equal case,
    it also need to be dropped.
    
    v2:
    Only modify the svm_range_restore_pages.
    
    Signed-off-by: Emily Deng <[email protected]>
    Reviewed-by: Xiaogang Chen<[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: increase RAS bad page threshold [+ + +]
Author: Tao Zhou <[email protected]>
Date:   Thu Mar 6 11:36:49 2025 +0800

    drm/amdgpu: increase RAS bad page threshold
    
    [ Upstream commit 334dc5fcc3f177823115ec4e075259997c16d4a7 ]
    
    For default policy, driver will issue an RMA event when the number of
    bad pages is greater than 8 physical rows, rather than reaches 8
    physical rows, don't rely on threshold configurable parameters in
    default mode.
    
    Signed-off-by: Tao Zhou <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: read back register after written for VCN v4.0.5 [+ + +]
Author: David (Ming Qiang) Wu <[email protected]>
Date:   Mon May 12 15:14:43 2025 -0400

    drm/amdgpu: read back register after written for VCN v4.0.5
    
    commit ee7360fc27d6045510f8fe459b5649b2af27811a upstream.
    
    On VCN v4.0.5 there is a race condition where the WPTR is not
    updated after starting from idle when doorbell is used. Adding
    register read-back after written at function end is to ensure
    all register writes are done before they can be used.
    
    Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12528
    Signed-off-by: David (Ming Qiang) Wu <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Tested-by: Mario Limonciello <[email protected]>
    Reviewed-by: Alex Deucher <[email protected]>
    Reviewed-by: Ruijing Dong <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 07c9db090b86e5211188e1b351303fbc673378cf)
    Cc: [email protected]
    Tested-by: Eric Naim <[email protected]>
    Signed-off-by: Eric Naim <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amdgpu: Reinit FW shared flags on VCN v5.0.1 [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Wed Feb 26 12:53:48 2025 +0530

    drm/amdgpu: Reinit FW shared flags on VCN v5.0.1
    
    [ Upstream commit 6ef5ccaad76d907d4257f20de992f89c0f7a7f8e ]
    
    After a full device reset, shared memory region will clear out and it's
    not possible to reliably save the region in case of RAS errors.
    Reinitialize the flags if required.
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: release xcp_mgr on exit [+ + +]
Author: Flora Cui <[email protected]>
Date:   Fri Mar 14 10:27:55 2025 +0800

    drm/amdgpu: release xcp_mgr on exit
    
    [ Upstream commit b5aaa82e2b12feaaa6958f7fa0917ddcc03c24ee ]
    
    Free on driver cleanup.
    
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Flora Cui <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: remove all KFD fences from the BO on release [+ + +]
Author: Christian König <[email protected]>
Date:   Wed Jan 29 16:28:49 2025 +0100

    drm/amdgpu: remove all KFD fences from the BO on release
    
    [ Upstream commit cb0de06d1b0afb2d0c600ad748069f5ce27730ec ]
    
    Remove all KFD BOs from the private dma_resv object.
    
    This prevents the KFD from being evict unecessarily when an exported BO
    is released.
    
    Signed-off-by: Christian König <[email protected]>
    Signed-off-by: James Zhu <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Reviewed-and-tested-by: James Zhu <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: reset psp->cmd to NULL after releasing the buffer [+ + +]
Author: Jiang Liu <[email protected]>
Date:   Fri Feb 7 14:28:49 2025 +0800

    drm/amdgpu: reset psp->cmd to NULL after releasing the buffer
    
    [ Upstream commit e92f3f94cad24154fd3baae30c6dfb918492278d ]
    
    Reset psp->cmd to NULL after releasing the buffer in function psp_sw_fini().
    
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Jiang Liu <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: rework how isolation is enforced v2 [+ + +]
Author: Christian König <[email protected]>
Date:   Wed Jan 15 13:44:26 2025 +0100

    drm/amdgpu: rework how isolation is enforced v2
    
    [ Upstream commit bd22e44ad415ac22e3a4f9a983d2a085f6cb4427 ]
    
    Limiting the number of available VMIDs to enforce isolation causes some
    issues with gang submit and applying certain HW workarounds which
    require multiple VMIDs to work correctly.
    
    So instead start to track all submissions to the relevant engines in a
    per partition data structure and use the dma_fences of the submissions
    to enforce isolation similar to what a VMID limit does.
    
    v2: use ~0l for jobs without isolation to distinct it from kernel
        submissions which uses NULL for the owner. Add some warning when we
        are OOM.
    
    Signed-off-by: Christian König <[email protected]>
    Acked-by: Srinivasan Shanmugam <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: rework how the cleaner shader is emitted v3 [+ + +]
Author: Christian König <[email protected]>
Date:   Mon Jan 27 15:09:45 2025 +0100

    drm/amdgpu: rework how the cleaner shader is emitted v3
    
    [ Upstream commit b7fbcd77bb467d09ba14cb4ec3b121dc85bb3100 ]
    
    Instead of emitting the cleaner shader for every job which has the
    enforce_isolation flag set only emit it for the first submission from
    every client.
    
    v2: add missing NULL check
    v3: fix another NULL pointer deref
    
    Signed-off-by: Christian König <[email protected]>
    Acked-by: Srinivasan Shanmugam <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Set snoop bit for SDMA for MI series [+ + +]
Author: Harish Kasiviswanathan <[email protected]>
Date:   Tue Feb 4 17:57:47 2025 -0500

    drm/amdgpu: Set snoop bit for SDMA for MI series
    
    [ Upstream commit 3394b1f76d3f8adf695ceed350a5dae49003eb37 ]
    
    SDMA writes has to probe invalidate RW lines. Set snoop bit in mmhub for
    this to happen.
    
    v2: Missed a few mmhub_v9_4. Added now.
    v3: Calculate hub offset once since it doesn't change inside the loop
        Modified function names based on review comments.
    
    Signed-off-by: Harish Kasiviswanathan <[email protected]>
    Reviewed-by: Philip Yang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Skip err_count sysfs creation on VF unsupported RAS blocks [+ + +]
Author: Victor Skvortsov <[email protected]>
Date:   Mon Jan 20 22:00:22 2025 -0500

    drm/amdgpu: Skip err_count sysfs creation on VF unsupported RAS blocks
    
    [ Upstream commit 04893397766a2b2f1bc7fe5c6414e4c0846ed171 ]
    
    VFs are not able to query error counts for all RAS blocks. Rather than
    returning error for queries on these blocks, skip sysfs the creation
    all together.
    
    Signed-off-by: Victor Skvortsov <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Skip pcie_replay_count sysfs creation for VF [+ + +]
Author: Victor Skvortsov <[email protected]>
Date:   Mon Mar 17 09:32:13 2025 -0400

    drm/amdgpu: Skip pcie_replay_count sysfs creation for VF
    
    [ Upstream commit 9c05636ca72a2dbf41bf0900380f438a0de47319 ]
    
    VFs cannot read the NAK_COUNTER register. This information is only
    available through PMFW metrics.
    
    Signed-off-by: Victor Skvortsov <[email protected]>
    Reviewed-by: Lijo Lazar <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Update SRIOV video codec caps [+ + +]
Author: David Rosca <[email protected]>
Date:   Fri Feb 28 13:44:32 2025 +0100

    drm/amdgpu: Update SRIOV video codec caps
    
    [ Upstream commit 19478f2011f8b53dee401c91423c4e0b73753e4f ]
    
    There have been multiple fixes to the video caps that are missing for
    SRIOV. Update the SRIOV caps with correct values.
    
    Signed-off-by: David Rosca <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Reviewed-by: Ruijing Dong <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Use active umc info from discovery [+ + +]
Author: Lijo Lazar <[email protected]>
Date:   Wed Jan 1 14:23:31 2025 +0530

    drm/amdgpu: Use active umc info from discovery
    
    [ Upstream commit f7a594e40517fa2ab25d5ca10e7b6a158f529fb5 ]
    
    There could be configs where some UMC instances are harvested. This
    information is obtained through discovery data and populated in
    umc.active_mask. Avoid reassigning this as AID mask, instead use the
    mask directly while iterating through umc instances. This is to avoid
    accesses to harvested UMC instances.
    
    v2: fix warning (Alex)
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: use GFP_NOWAIT for memory allocations [+ + +]
Author: Christian König <[email protected]>
Date:   Wed Jan 15 15:10:13 2025 +0100

    drm/amdgpu: use GFP_NOWAIT for memory allocations
    
    [ Upstream commit 16590745b571c07869ef8958e0bbe44ab6f08d1f ]
    
    In the critical submission path memory allocations can't wait for
    reclaim since that can potentially wait for submissions to finish.
    
    Finally clean that up and mark most memory allocations in the critical
    path with GFP_NOWAIT. The only exception left is the dma_fence_array()
    used when no VMID is available, but that will be cleaned up later on.
    
    Signed-off-by: Christian König <[email protected]>
    Acked-by: Srinivasan Shanmugam <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdkfd: clear F8_MODE for gfx950 [+ + +]
Author: Alex Sierra <[email protected]>
Date:   Thu May 16 17:06:48 2024 -0500

    drm/amdkfd: clear F8_MODE for gfx950
    
    [ Upstream commit 59228c6631f902fa826dc61321ab377ba8aadec5 ]
    
    Default F8_MODE should be OCP format on gfx950.
    
    Signed-off-by: Alex Sierra <[email protected]>
    Reviewed-by: Harish Kasiviswanathan <[email protected]>
    Signed-off-by: Amber Lin <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Correct F8_MODE for gfx950 [+ + +]
Author: Amber Lin <[email protected]>
Date:   Wed Mar 12 21:14:43 2025 -0400

    drm/amdkfd: Correct F8_MODE for gfx950
    
    [ Upstream commit 0c7e053448945e5a4379dc4396c762d7422b11ca ]
    
    Correct F8_MODE setting for gfx950 that was removed
    
    Fixes: 61972cd93af7 ("drm/amdkfd: Set per-process flags only once for gfx9/10/11/12")
    Signed-off-by: Amber Lin <[email protected]>
    Reviewed-by: Harish Kasiviswanathan <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Fix error handling for missing PASID in 'kfd_process_device_init_vm' [+ + +]
Author: Srinivasan Shanmugam <[email protected]>
Date:   Mon Feb 17 12:07:22 2025 +0530

    drm/amdkfd: Fix error handling for missing PASID in 'kfd_process_device_init_vm'
    
    [ Upstream commit 2b04d04de956b44cc140d45cf8ebccfb378ce3bf ]
    
    In the kfd_process_device_init_vm function, a valid error code is now
    returned when the associated Process Address Space ID (PASID) is not
    present.
    
    If the address space virtual memory (avm) does not have an associated
    PASID, the function sets the ret variable to -EINVAL before proceeding
    to the error handling section. This ensures that the calling function,
    such as kfd_ioctl_acquire_vm, can appropriately handle the error,
    thereby preventing any issues during virtual memory initialization.
    
    Fixes the below:
    drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.c:1694 kfd_process_device_init_vm()
    warn: missing error code 'ret'
    
    drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.c
        1647 int kfd_process_device_init_vm(struct kfd_process_device *pdd,
        1648                                struct file *drm_file)
        1649 {
        ...
        1690
        1691         if (unlikely(!avm->pasid)) {
        1692                 dev_warn(pdd->dev->adev->dev, "WARN: vm %p has no pasid associated",
        1693                                  avm);
    --> 1694                 goto err_get_pasid;
    
    ret = -EINVAL?
    
        1695         }
    
    Fixes: 8544374c0f82 ("drm/amdkfd: Have kfd driver use same PASID values from graphic driver")
    Reported by: Dan Carpenter <[email protected]>
    Cc: Xiaogang Chen <[email protected]>
    Cc: Felix Kuehling <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Signed-off-by: Srinivasan Shanmugam <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: fix missing L2 cache info in topology [+ + +]
Author: Eric Huang <[email protected]>
Date:   Tue Jan 28 15:48:26 2025 -0500

    drm/amdkfd: fix missing L2 cache info in topology
    
    [ Upstream commit 5ffd56822a7159917306d99f18fd15dfd7288f20 ]
    
    In some ASICs L2 cache info may miss in kfd topology,
    because the first bitmap may be empty, that means
    the first cu may be inactive, so to find the first
    active cu will solve the issue.
    
    v2: Only find the first active cu in the first xcc
    
    Signed-off-by: Eric Huang <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Acked-by: Lijo Lazar <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Fix pasid value leak [+ + +]
Author: Xiaogang Chen <[email protected]>
Date:   Wed Feb 12 00:24:02 2025 -0600

    drm/amdkfd: Fix pasid value leak
    
    [ Upstream commit 10e08943caedfb4b0b95933d248503a6f6b9fef6 ]
    
    Curret kfd does not allocate pasid values, instead uses pasid value for each
    vm from graphic driver. So should not prevent graphic driver from releasing
    pasid values since the values are allocated by graphic driver, not kfd driver
    anymore. This patch does not stop graphic driver release pasid values.
    
    Fixes: 8544374c0f82 ("drm/amdkfd: Have kfd driver use same PASID values from graphic driver")
    Signed-off-by: Xiaogang Chen <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Have kfd driver use same PASID values from graphic driver [+ + +]
Author: Xiaogang Chen <[email protected]>
Date:   Mon Jan 13 17:35:59 2025 -0600

    drm/amdkfd: Have kfd driver use same PASID values from graphic driver
    
    [ Upstream commit 8544374c0f82edb285779f21b149826fe2c2977c ]
    
    Current kfd driver has its own PASID value for a kfd process and uses it to
    locate vm at interrupt handler or mapping between kfd process and vm. That
    design is not working when a physical gpu device has multiple spatial
    partitions, ex: adev in CPX mode. This patch has kfd driver use same pasid
    values that graphic driver generated which is per vm per pasid.
    
    These pasid values are passed to fw/hardware. We do not need change interrupt
    handler though more pasid values are used. Also, pasid values at log are
    replaced by user process pid; pasid values are not exposed to user. Users see
    their process pids that have meaning in user space.
    
    Signed-off-by: Xiaogang Chen <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: KFD release_work possible circular locking [+ + +]
Author: Philip Yang <[email protected]>
Date:   Mon Feb 17 20:08:29 2025 -0500

    drm/amdkfd: KFD release_work possible circular locking
    
    [ Upstream commit 1b9366c601039d60546794c63fbb83ce8e53b978 ]
    
    If waiting for gpu reset done in KFD release_work, thers is WARNING:
    possible circular locking dependency detected
    
      #2  kfd_create_process
            kfd_process_mutex
              flush kfd release work
    
      #1  kfd release work
            wait for amdgpu reset work
    
      #0  amdgpu_device_gpu_reset
            kgd2kfd_pre_reset
              kfd_process_mutex
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock((work_completion)(&p->release_work));
                      lock((wq_completion)kfd_process_wq);
                      lock((work_completion)(&p->release_work));
       lock((wq_completion)amdgpu-reset-dev);
    
    To fix this, KFD create process move flush release work outside
    kfd_process_mutex.
    
    Signed-off-by: Philip Yang <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Set per-process flags only once cik/vi [+ + +]
Author: Harish Kasiviswanathan <[email protected]>
Date:   Tue Jan 14 14:07:24 2025 -0500

    drm/amdkfd: Set per-process flags only once cik/vi
    
    [ Upstream commit 289e68503a4533b014f8447e2af28ad44c92c221 ]
    
    Set per-process static sh_mem config only once during process
    initialization. Move all static changes from update_qpd() which is
    called each time a queue is created to set_cache_memory_policy() which
    is called once during process initialization.
    
    set_cache_memory_policy() is currently defined only for cik and vi
    family. So this commit only focuses on these two. A separate commit will
    address other asics.
    
    Signed-off-by: Harish Kasiviswanathan <[email protected]>
    Reviewed-by: Amber Lin <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: Set per-process flags only once for gfx9/10/11/12 [+ + +]
Author: Harish Kasiviswanathan <[email protected]>
Date:   Tue Jan 14 14:13:35 2025 -0500

    drm/amdkfd: Set per-process flags only once for gfx9/10/11/12
    
    [ Upstream commit 61972cd93af70738a6ad7f93e17cc7f68a01e182 ]
    
    Define set_cache_memory_policy() for these asics and move all static
    changes from update_qpd() which is called each time a queue is created
    to set_cache_memory_policy() which is called once during process
    initialization
    
    Signed-off-by: Harish Kasiviswanathan <[email protected]>
    Reviewed-by: Amber Lin <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdkfd: set precise mem ops caps to disabled for gfx 11 and 12 [+ + +]
Author: Jonathan Kim <[email protected]>
Date:   Fri Mar 14 11:08:21 2025 -0400

    drm/amdkfd: set precise mem ops caps to disabled for gfx 11 and 12
    
    [ Upstream commit f82d27dcff939d3cbecbc60e1b71e2518c37e81d ]
    
    Clause instructions with precise memory enabled currently hang the
    shader so set capabilities flag to disabled since it's unsafe to use
    for debugging.
    
    Signed-off-by: Jonathan Kim <[email protected]>
    Tested-by: Lancelot Six <[email protected]>
    Reviewed-by: Harish Kasiviswanathan <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/ast: Find VBIOS mode from regular display size [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Fri Jan 31 10:21:08 2025 +0100

    drm/ast: Find VBIOS mode from regular display size
    
    [ Upstream commit c81202906b5cd56db403e95db3d29c9dfc8c74c1 ]
    
    The ast driver looks up supplied display modes from an internal list of
    display modes supported by the VBIOS.
    
    Do not use the crtc_-prefixed display values from struct drm_display_mode
    for looking up the VBIOS mode. The fields contain raw values that the
    driver programs to hardware. They are affected by display settings like
    double-scan or interlace.
    
    Instead use the regular vdisplay and hdisplay fields for lookup. As the
    programmed values can now differ from the values used for lookup, set
    struct drm_display_mode.crtc_vdisplay and .crtc_hdisplay from the VBIOS
    mode.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Jocelyn Falempe <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/ast: Hide Gens 1 to 3 TX detection in branch [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Fri Jan 17 11:29:10 2025 +0100

    drm/ast: Hide Gens 1 to 3 TX detection in branch
    
    [ Upstream commit 87478ba50a05a1f44508316ae109622e8a85adc9 ]
    
    Gen7 only supports ASTDP. Gens 4 to 6 support various TX chips,
    except ASTDP. These boards detect the TX chips by reading the SoC
    scratch register as VGACRD1.
    
    Gens 1 to 3 only support SIL164. These boards read the DVO bit from
    VGACRA3. Hence move this test behind a branch, so that it does not
    run on later generations.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Jocelyn Falempe <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/atomic: clarify the rules around drm_atomic_state->allow_modeset [+ + +]
Author: Simona Vetter <[email protected]>
Date:   Wed Jan 8 18:24:16 2025 +0100

    drm/atomic: clarify the rules around drm_atomic_state->allow_modeset
    
    [ Upstream commit c5e3306a424b52e38ad2c28c7f3399fcd03e383d ]
    
    msm is automagically upgrading normal commits to full modesets, and
    that's a big no-no:
    
    - for one this results in full on->off->on transitions on all these
      crtc, at least if you're using the usual helpers. Which seems to be
      the case, and is breaking uapi
    
    - further even if the ctm change itself would not result in flicker,
      this can hide modesets for other reasons. Which again breaks the
      uapi
    
    v2: I forgot the case of adding unrelated crtc state. Add that case
    and link to the existing kerneldoc explainers. This has come up in an
    irc discussion with Manasi and Ville about intel's bigjoiner mode.
    Also cc everyone involved in the msm irc discussion, more people
    joined after I sent out v1.
    
    v3: Wording polish from Pekka and Thomas
    
    Acked-by: Pekka Paalanen <[email protected]>
    Acked-by: Dmitry Baryshkov <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: Pekka Paalanen <[email protected]>
    Cc: Rob Clark <[email protected]>
    Cc: Simon Ser <[email protected]>
    Cc: Manasi Navare <[email protected]>
    Cc: Ville Syrjälä <[email protected]>
    Cc: Abhinav Kumar <[email protected]>
    Cc: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Signed-off-by: Simona Vetter <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/buddy: fix issue that force_merge cannot free all roots [+ + +]
Author: Lin.Cao <[email protected]>
Date:   Thu Dec 26 12:31:15 2024 +0530

    drm/buddy: fix issue that force_merge cannot free all roots
    
    [ Upstream commit 467dce3817bd2b62ccd6fcfd7aae76f242ac907e ]
    
    If buddy manager have more than one roots and each root have sub-block
    need to be free. When drm_buddy_fini called, the first loop of
    force_merge will merge and free all of the sub block of first root,
    which offset is 0x0 and size is biggest(more than have of the mm size).
    In subsequent force_merge rounds, if we use 0 as start and use remaining
    mm size as end, the block of other roots will be skipped in
    __force_merge function. It will cause the other roots can not be freed.
    
    Solution: use roots' offset as the start could fix this issue.
    
    Signed-off-by: Lin.Cao <[email protected]>
    Signed-off-by: Arunpravin Paneer Selvam <[email protected]>
    Reviewed-by: Matthew Auld <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/edid: fixed the bug that hdr metadata was not reset [+ + +]
Author: feijuan.li <[email protected]>
Date:   Wed May 14 14:35:11 2025 +0800

    drm/edid: fixed the bug that hdr metadata was not reset
    
    commit 6692dbc15e5ed40a3aa037aced65d7b8826c58cd upstream.
    
    When DP connected to a device with HDR capability,
    the hdr structure was filled.Then connected to another
    sink device without hdr capability, but the hdr info
    still exist.
    
    Fixes: e85959d6cbe0 ("drm: Parse HDR metadata info from EDID")
    Cc: <[email protected]> # v5.3+
    Signed-off-by: "feijuan.li" <[email protected]>
    Reviewed-by: Jani Nikula <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jani Nikula <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/gem: Internally test import_attach for imported objects [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Wed Apr 16 08:57:45 2025 +0200

    drm/gem: Internally test import_attach for imported objects
    
    [ Upstream commit 8260731ccad0451207b45844bb66eb161a209218 ]
    
    Test struct drm_gem_object.import_attach to detect imported objects.
    
    During object clenanup, the dma_buf field might be NULL. Testing it in
    an object's free callback then incorrectly does a cleanup as for native
    objects. Happens for calls to drm_mode_destroy_dumb_ioctl() that
    clears the dma_buf field in drm_gem_object_exported_dma_buf_free().
    
    v3:
    - only test for import_attach (Boris)
    v2:
    - use import_attach.dmabuf instead of dma_buf (Christian)
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Fixes: b57aa47d39e9 ("drm/gem: Test for imported GEM buffers with helper")
    Reported-by: Andy Yan <[email protected]>
    Closes: https://lore.kernel.org/dri-devel/[email protected]/
    Tested-by: Andy Yan <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: Anusha Srivatsa <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: Sumit Semwal <[email protected]>
    Cc: "Christian König" <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Reviewed-by: Boris Brezillon <[email protected]>
    Reviewed-by: Simona Vetter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/gem: Test for imported GEM buffers with helper [+ + +]
Author: Thomas Zimmermann <[email protected]>
Date:   Wed Feb 26 18:03:04 2025 +0100

    drm/gem: Test for imported GEM buffers with helper
    
    [ Upstream commit b57aa47d39e94dc47403a745e2024664e544078c ]
    
    Add drm_gem_is_imported() that tests if a GEM object's buffer has
    been imported. Update the GEM code accordingly.
    
    GEM code usually tests for imports if import_attach has been set
    in struct drm_gem_object. But attaching a dma-buf on import requires
    a DMA-capable importer device, which is not the case for many serial
    busses like USB or I2C. The new helper tests if a GEM object's dma-buf
    has been created from the GEM object.
    
    Signed-off-by: Thomas Zimmermann <[email protected]>
    Reviewed-by: Anusha Srivatsa <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/dp: Fix determining SST/MST mode during MTP TU state computation [+ + +]
Author: Imre Deak <[email protected]>
Date:   Wed May 7 18:19:53 2025 +0300

    drm/i915/dp: Fix determining SST/MST mode during MTP TU state computation
    
    commit 732b87a409667a370b87955c518e5d004de740b5 upstream.
    
    Determining the SST/MST mode during state computation must be done based
    on the output type stored in the CRTC state, which in turn is set once
    based on the modeset connector's SST vs. MST type and will not change as
    long as the connector is using the CRTC. OTOH the MST mode indicated by
    the given connector's intel_dp::is_mst flag can change independently of
    the above output type, based on what sink is at any moment plugged to
    the connector.
    
    Fix the state computation accordingly.
    
    Cc: Jani Nikula <[email protected]>
    Fixes: f6971d7427c2 ("drm/i915/mst: adapt intel_dp_mtp_tu_compute_config() for 128b/132b SST")
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4607
    Reviewed-by: Jani Nikula <[email protected]>
    Signed-off-by: Imre Deak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit 0f45696ddb2b901fbf15cb8d2e89767be481d59f)
    Signed-off-by: Jani Nikula <[email protected]>
    References: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14218
    [Rebased on v6.14.8 and added References link. (Imre)]
    Signed-off-by: Imre Deak <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Mon Feb 17 16:47:58 2025 +0100

    drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence
    
    [ Upstream commit 8c9da7cd0bbcc90ab444454fecf535320456a312 ]
    
    In preparation for adding support for newer DPI instances which
    do support direct-pin but do not have any H_FRE_CON register,
    like the one found in MT8195 and MT8188, add a branch to check
    if the reg_h_fre_con variable was declared in the mtk_dpi_conf
    structure for the probed SoC DPI version.
    
    As a note, this is useful specifically only for cases in which
    the support_direct_pin variable is true, so mt8195-dpintf is
    not affected by any issue.
    
    Reviewed-by: CK Hu <[email protected]>
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Signed-off-by: Chun-Kuang Hu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/dpu: Set possible clones for all encoders [+ + +]
Author: Jessica Zhang <[email protected]>
Date:   Fri Feb 14 16:14:37 2025 -0800

    drm/msm/dpu: Set possible clones for all encoders
    
    [ Upstream commit e8cd8224a30798b65e05b26de284e1702b22ba5e ]
    
    Set writeback encoders as possible clones for DSI encoders and vice
    versa.
    
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Abhinav Kumar <[email protected]>
    Signed-off-by: Jessica Zhang <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/637498/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/nouveau: fix the broken marco GSP_MSG_MAX_SIZE [+ + +]
Author: Zhi Wang <[email protected]>
Date:   Fri Jan 24 10:29:50 2025 -0800

    drm/nouveau: fix the broken marco GSP_MSG_MAX_SIZE
    
    [ Upstream commit bbae6680cfe38b033250b483722e60ccd865976f ]
    
    The macro GSP_MSG_MAX_SIZE refers to another macro that doesn't exist.
    It represents the max GSP message element size.
    
    Fix the broken marco so it can be used to replace some magic numbers in
    the code.
    
    Signed-off-by: Zhi Wang <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panel-edp: Add Starry 116KHD024006 [+ + +]
Author: Douglas Anderson <[email protected]>
Date:   Thu Jan 9 14:28:53 2025 -0800

    drm/panel-edp: Add Starry 116KHD024006
    
    [ Upstream commit 749b5b279e5636cdcef51e15d67b77162cca6caa ]
    
    We have a few reports of sc7180-trogdor-pompom devices that have a
    panel in them that IDs as STA 0x0004 and has the following raw EDID:
    
      00 ff ff ff ff ff ff 00  4e 81 04 00 00 00 00 00
      10 20 01 04 a5 1a 0e 78  0a dc dd 96 5b 5b 91 28
      1f 52 54 00 00 00 01 01  01 01 01 01 01 01 01 01
      01 01 01 01 01 01 8e 1c  56 a0 50 00 1e 30 28 20
      55 00 00 90 10 00 00 18  00 00 00 00 00 00 00 00
      00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
      00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 fe
      00 31 31 36 4b 48 44 30  32 34 30 30 36 0a 00 e6
    
    We've been unable to locate a datasheet for this panel and our partner
    has not been responsive, but all Starry eDP datasheets that we can
    find agree on the same timing (delay_100_500_e200) so it should be
    safe to use that here instead of the super conservative timings. We'll
    still go a little extra conservative and allow `hpd_absent` of 200
    instead of 100 because that won't add any real-world delay in most
    cases.
    
    We'll associate the string from the EDID ("116KHD024006") with this
    panel. Given that the ID is the suspicious value of 0x0004 it seems
    likely that Starry doesn't always update their IDs but the string will
    still work to differentiate if we ever need to in the future.
    
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Douglas Anderson <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250109142853.1.Ibcc3009933fd19507cc9c713ad0c99c7a9e4fe17@changeid
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/rockchip: vop2: Add uv swap for cluster window [+ + +]
Author: Andy Yan <[email protected]>
Date:   Mon Mar 3 11:44:17 2025 +0800

    drm/rockchip: vop2: Add uv swap for cluster window
    
    [ Upstream commit e7aae9f6d762139f8d2b86db03793ae0ab3dd802 ]
    
    The Cluster windows of upcoming VOP on rk3576 also support
    linear YUV support, we need to set uv swap bit for it.
    
    As the VOP2_WIN_UV_SWA register defined on rk3568/rk3588 is
    0xffffffff, so this register will not be touched on these
    two platforms.
    
    Signed-off-by: Andy Yan <[email protected]>
    Tested-by: Michael Riesch <[email protected]> # on RK3568
    Tested-by: Detlev Casanova <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/rockchip: vop2: Improve display modes handling on RK3588 HDMI0 [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Tue Feb 4 14:40:06 2025 +0200

    drm/rockchip: vop2: Improve display modes handling on RK3588 HDMI0
    
    [ Upstream commit 2c1268e7aad0819f38e56134bbc2095fd95fde1b ]
    
    The RK3588 specific implementation is currently quite limited in terms
    of handling the full range of display modes supported by the connected
    screens, e.g. 2560x1440@75Hz, 2048x1152@60Hz, 1024x768@60Hz are just a
    few of them.
    
    Additionally, it doesn't cope well with non-integer refresh rates like
    59.94, 29.97, 23.98, etc.
    
    Make use of HDMI0 PHY PLL as a more accurate DCLK source to handle
    all display modes up to 4K@60Hz.
    
    Tested-by: FUKAUMI Naoki <[email protected]>
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/ttm: fix the warning for hit_low and evict_low [+ + +]
Author: Sunil Khatri <[email protected]>
Date:   Wed Apr 23 09:54:42 2025 +0530

    drm/ttm: fix the warning for hit_low and evict_low
    
    [ Upstream commit 76047483fe94414edf409dc498498abf346e22f1 ]
    
    fix the below warning messages:
    ttm/ttm_bo.c:1098: warning: Function parameter or struct member 'hit_low' not described in 'ttm_bo_swapout_walk'
    ttm/ttm_bo.c:1098: warning: Function parameter or struct member 'evict_low' not described in 'ttm_bo_swapout_walk'
    
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Tvrtko Ursulin <[email protected]>
    Signed-off-by: Sunil Khatri <[email protected]>
    Reviewed-by: Maarten Lankhorst <[email protected]>
    Signed-off-by: Christian König <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/v3d: Add clock handling [+ + +]
Author: Stefan Wahren <[email protected]>
Date:   Sat Feb 1 13:50:46 2025 +0100

    drm/v3d: Add clock handling
    
    [ Upstream commit 4dd40b5f9c3d89b67af0dbe059cf4a51aac6bf06 ]
    
    Since the initial commit 57692c94dcbe ("drm/v3d: Introduce a new DRM driver
    for Broadcom V3D V3.x+") the struct v3d_dev reserved a pointer for
    an optional V3D clock. But there wasn't any code, which fetched it.
    So add the missing clock handling before accessing any V3D registers.
    
    Signed-off-by: Stefan Wahren <[email protected]>
    Reviewed-by: Maíra Canal <[email protected]>
    Signed-off-by: Maíra Canal <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/client: Skip show_run_ticks if unable to read timestamp [+ + +]
Author: Marcin Bernatowicz <[email protected]>
Date:   Wed Feb 5 20:16:44 2025 +0100

    drm/xe/client: Skip show_run_ticks if unable to read timestamp
    
    [ Upstream commit 94030a1d3283251778411cf74553607a65260f78 ]
    
    RING_TIMESTAMP registers are inaccessible in VF mode.
    Without drm-total-cycles-*, other keys provide little value.
    Skip all optional "run_ticks" keys in this case.
    
    Signed-off-by: Marcin Bernatowicz <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Cc: Michal Wajdeczko <[email protected]>
    Cc: Michał Winiarski <[email protected]>
    Cc: Umesh Nerlige Ramappa <[email protected]>
    Reviewed-by: Satyanarayana K V P <[email protected]>
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/debugfs: Add missing xe_pm_runtime_put in wedge_mode_set [+ + +]
Author: Shuicheng Lin <[email protected]>
Date:   Thu Feb 13 23:03:22 2025 +0000

    drm/xe/debugfs: Add missing xe_pm_runtime_put in wedge_mode_set
    
    [ Upstream commit b31e668d3111b100d16fd7db8db335328ce8c6d5 ]
    
    xe_pm_runtime_put is missed in the failure path.
    
    Cc: Rodrigo Vivi <[email protected]>
    Signed-off-by: Shuicheng Lin <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/debugfs: fixed the return value of wedged_mode_set [+ + +]
Author: Xin Wang <[email protected]>
Date:   Fri Feb 14 06:36:15 2025 +0800

    drm/xe/debugfs: fixed the return value of wedged_mode_set
    
    [ Upstream commit 6884d2051011f4db9e2f0b85709c79a8ced13bd6 ]
    
    It is generally expected that the write() function should return a
    positive value indicating the number of bytes written or a negative
    error code if an error occurs. Returning 0 is unusual and can lead
    to unexpected behavior.
    
    When the user program writes the same value to wedged_mode twice in
    a row, a lockup will occur, because the value expected to be
    returned by the write() function inside the program should be equal
    to the actual written value instead of 0.
    
    To reproduce the issue:
    echo 1 > /sys/kernel/debug/dri/0/wedged_mode
    echo 1 > /sys/kernel/debug/dri/0/wedged_mode   <- lockup here
    
    Signed-off-by: Xin Wang <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: Fei Yang <[email protected]>
    Cc: Shuicheng Lin <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/display: Remove hpd cancel work sync from runtime pm path [+ + +]
Author: Rodrigo Vivi <[email protected]>
Date:   Wed Feb 12 14:24:47 2025 -0500

    drm/xe/display: Remove hpd cancel work sync from runtime pm path
    
    [ Upstream commit 1ed591582b7b894d2f7e7ab5cef2e9b0b6fef12b ]
    
    This function will synchronously cancel and wait for many display
    work queue items, which might try to take the runtime pm reference
    causing a bad deadlock. So, remove it from the runtime_pm suspend patch.
    
    Reported-by: Imre Deak <[email protected]>
    Reviewed-by: Imre Deak <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/guc: Drop error messages about missing GuC logs [+ + +]
Author: John Harrison <[email protected]>
Date:   Mon Jan 13 11:44:04 2025 -0800

    drm/xe/guc: Drop error messages about missing GuC logs
    
    [ Upstream commit 174e9ce0daf6af791386e96e76e743eb59e8a401 ]
    
    The GuC log snapshot code would complain loudly if there was no GuC
    log to take a snapshot of or if the snapshot alloc failed. Originally,
    this code was only called on demand when a user (or developer)
    explicitly requested a dump of the log. Hence an error message was
    useful.
    
    However, it is now part of the general devcoredump file and is called
    for any GPU hang. Most people don't care about GuC logs and GPU hangs
    do not generally mean a kernel/GuC bug. More importantly, there are
    valid situations where there is no GuC log, e.g. SRIOV VFs.
    
    So drop the error message.
    
    Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/3958
    Signed-off-by: John Harrison <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/oa: Ensure that polled read returns latest data [+ + +]
Author: Umesh Nerlige Ramappa <[email protected]>
Date:   Tue Feb 11 17:02:55 2025 -0800

    drm/xe/oa: Ensure that polled read returns latest data
    
    [ Upstream commit 98c9d27ab30aa9c6451d3a34e6e297171f273e51 ]
    
    In polled mode, user calls poll() for read data to be available before
    performing a read(). In the duration between these 2 calls, there may be
    new data available in the OA buffer. To ensure user reads all available
    data, check for latest data in the OA buffer in polled read.
    
    Signed-off-by: Umesh Nerlige Ramappa <[email protected]>
    Reviewed-by: Ashutosh Dixit <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/pf: Create a link between PF and VF devices [+ + +]
Author: Satyanarayana K V P <[email protected]>
Date:   Mon Feb 24 15:58:06 2025 +0530

    drm/xe/pf: Create a link between PF and VF devices
    
    [ Upstream commit 8c0aff7d92e2be25717669eb65a81a89740a24f2 ]
    
    When both PF and VF devices are enabled on the host, they
    resume simultaneously during system resume.
    
    However, the PF must finish provisioning the VF before any
    VFs can successfully resume.
    
    Establish a parent-child device link between the PF and VF
    devices to ensure the correct order of resumption.
    
    V4 -> V5:
    - Added missing break in the error condition.
    V3 -> V4:
    - Made xe_pci_pf_get_vf_dev() as a static function and updated
      input parameter types.
    - Updated xe_sriov_warn() to xe_sriov_abort() when VF device
      cannot be found.
    V2 -> V3:
    - Added function documentation for xe_pci_pf_get_vf_dev().
    - Added assertion if not called from PF.
    V1 -> V2:
    - Added a helper function to get VF pci_dev.
    - Updated xe_sriov_notice() to xe_sriov_warn() if vf pci_dev
      is not found.
    
    Signed-off-by: Satyanarayana K V P <[email protected]>
    Cc: Michał Wajdeczko <[email protected]>
    Cc: Michał Winiarski <[email protected]>
    Cc: Piotr Piórkowski <[email protected]>
    Reviewed-by: Piotr Piorkowski <[email protected]>
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/pf: Move VFs reprovisioning to worker [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Sat Jan 25 22:55:05 2025 +0100

    drm/xe/pf: Move VFs reprovisioning to worker
    
    [ Upstream commit a4d1c5d0b99b75263a5626d2e52d569db3844b33 ]
    
    Since the GuC is reset during GT reset, we need to re-send the
    entire SR-IOV provisioning configuration to the GuC. But since
    this whole configuration is protected by the PF master mutex and
    we can't avoid making allocations under this mutex (like during
    LMEM provisioning), we can't do this reprovisioning from gt-reset
    path if we want to be reclaim-safe. Move VFs reprovisioning to a
    async worker that we will start from the gt-reset path.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Thomas Hellström <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Reviewed-by: Michał Winiarski <[email protected]>
    Reviewed-by: Stuart Summers <[email protected]>
    Reviewed-by: Matthew Brost <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/pf: Release all VFs configs on device removal [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Tue Feb 11 16:50:34 2025 +0100

    drm/xe/pf: Release all VFs configs on device removal
    
    [ Upstream commit 611160b02a40ce3f60ab94eea85b394dca1cafd2 ]
    
    If we try to manually provision VFs using debugfs and then we
    try to unload the driver, we will see complains like:
    
     [ ] Memory manager not clean during takedown.
     [ ] RIP: 0010:drm_mm_takedown+0x3f/0x100
     [ ] [drm:drm_mm_takedown] *ERROR* node [fedff000 + 00001000]: inserted at
          drm_mm_insert_node_in_range+0x2bd/0x520
          xe_ggtt_node_insert+0x52/0x90 [xe]
          pf_provision_vf_ggtt+0x1fa/0xac0 [xe]
          xe_gt_sriov_pf_config_set_ggtt+0x79/0x7a0 [xe]
          ggtt_set+0x53/0x80 [xe]
          simple_attr_write_xsigned.isra.0+0xd2/0x150
          simple_attr_write+0x14/0x30
          debugfs_attr_write+0x4e/0x80
    
     [ ] xe 0000:00:02.0: [drm] *ERROR* GT0: GUC ID manager unclean (1/65535)
     [ ] xe 0000:00:02.0: [drm] GT0:      total 65535
     [ ] xe 0000:00:02.0: [drm] GT0:      used 1
     [ ] xe 0000:00:02.0: [drm] GT0:      range 65534..65534 (1)
    
     [ ] xe 0000:00:02.0: [drm] *ERROR* GT0: GuC doorbells manager unclean (1/256)
     [ ] xe 0000:00:02.0: [drm] GT0:      count: 256
     [ ] xe 0000:00:02.0: [drm] GT0:      available range: 1..255 (255)
     [ ] xe 0000:00:02.0: [drm] GT0:      available total: 255
     [ ] xe 0000:00:02.0: [drm] GT0:      reserved range: 0..0 (1)
     [ ] xe 0000:00:02.0: [drm] GT0:      reserved total: 1
    
    This could be easily fixed by adding config release action.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Piotr Piórkowski <[email protected]>
    Reviewed-by: Piotr Piórkowski <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/pf: Reset GuC VF config when unprovisioning critical resource [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Wed Jan 29 20:59:47 2025 +0100

    drm/xe/pf: Reset GuC VF config when unprovisioning critical resource
    
    [ Upstream commit 33f17e2cbd930a2a00eb007d9b241b6db010a880 ]
    
    GuC firmware counts received VF configuration KLVs and may start
    validation of the complete VF config even if some resources where
    unprovisioned in the meantime, leading to unexpected errors like:
    
     $ echo 1 | sudo tee /sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/contexts_quota
     $ echo 0 | sudo tee /sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/contexts_quota
     $ echo 1 | sudo tee /sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/doorbells_quota
     $ echo 0 | sudo tee /sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/doorbells_quota
     $ echo 1 | sudo tee /sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/ggtt_quota
     tee: '/sys/kernel/debug/dri/0000:00:02.0/gt0/vf1/ggtt_quota': Input/output error
    
    To mitigate this problem trigger explicit VF config reset after
    unprovisioning any of the critical resources (GGTT, context or
    doorbell IDs) that GuC is monitoring.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Reviewed-by: Michał Winiarski <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/relay: Don't use GFP_KERNEL for new transactions [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Fri Jan 31 16:37:13 2025 +0100

    drm/xe/relay: Don't use GFP_KERNEL for new transactions
    
    [ Upstream commit 78d5d1e20d1de9422f013338a0f2311448588ba7 ]
    
    VFs use a relay transaction during the resume/reset flow and use
    of the GFP_KERNEL flag may conflict with the reclaim:
    
         -> #0 (fs_reclaim){+.+.}-{0:0}:
     [ ]        __lock_acquire+0x1874/0x2bc0
     [ ]        lock_acquire+0xd2/0x310
     [ ]        fs_reclaim_acquire+0xc5/0x100
     [ ]        mempool_alloc_noprof+0x5c/0x1b0
     [ ]        __relay_get_transaction+0xdc/0xa10 [xe]
     [ ]        relay_send_to+0x251/0xe50 [xe]
     [ ]        xe_guc_relay_send_to_pf+0x79/0x3a0 [xe]
     [ ]        xe_gt_sriov_vf_connect+0x90/0x4d0 [xe]
     [ ]        xe_uc_init_hw+0x157/0x3b0 [xe]
     [ ]        do_gt_restart+0x1ae/0x650 [xe]
     [ ]        xe_gt_resume+0xb6/0x120 [xe]
     [ ]        xe_pm_runtime_resume+0x15b/0x370 [xe]
     [ ]        xe_pci_runtime_resume+0x73/0x90 [xe]
     [ ]        pci_pm_runtime_resume+0xa0/0x100
     [ ]        __rpm_callback+0x4d/0x170
     [ ]        rpm_callback+0x64/0x70
     [ ]        rpm_resume+0x594/0x790
     [ ]        __pm_runtime_resume+0x4e/0x90
     [ ]        xe_pm_runtime_get_ioctl+0x9c/0x160 [xe]
    
    Since we have a preallocated pool of relay transactions, which
    should cover all our normal relay use cases, we may use the
    GFP_NOWAIT flag when allocating new outgoing transactions.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Tested-by: Marcin Bernatowicz <[email protected]>
    Reviewed-by: Marcin Bernatowicz <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/sa: Always call drm_suballoc_manager_fini() [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Fri Dec 20 20:41:54 2024 +0100

    drm/xe/sa: Always call drm_suballoc_manager_fini()
    
    [ Upstream commit 9cd3f4efc870463f17f6c29114c61fb6bfcaa291 ]
    
    After successful call to drm_suballoc_manager_init() we should
    make sure to call drm_suballoc_manager_fini() as it may include
    some cleanup code even if we didn't start using it for real.
    
    As we can abort init() early due to kvzalloc() failure, we should
    either explicitly call drm_suballoc_manager_fini() or, even better,
    postpone drm_suballoc_manager_init() once we finish all other
    preparation steps, so we can rely on fini() that will do cleanup.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Reviewed-by: Matthew Brost <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/vf: Perform early GT MMIO initialization to read GMDID [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Tue Jan 14 22:13:47 2025 +0100

    drm/xe/vf: Perform early GT MMIO initialization to read GMDID
    
    [ Upstream commit 13265fe7426ec9ba5aa86baab913417ca361e8a4 ]
    
    VFs need to communicate with the GuC to obtain the GMDID value
    and existing GuC functions used for that assume that the GT has
    it's MMIO members already setup. However, due to recent refactoring
    the gt->mmio is initialized later, and any attempt by the VF to use
    xe_mmio_read|write() from GuC functions will lead to NPD crash due
    to unset MMIO register address:
    
    [] xe 0000:00:02.1: [drm] Running in SR-IOV VF mode
    [] xe 0000:00:02.1: [drm] GT0: sending H2G MMIO 0x5507
    [] BUG: unable to handle page fault for address: 0000000000190240
    
    Since we are already tweaking the id and type of the primary GT to
    mimic it's a Media GT before initializing the GuC communication,
    we can also call xe_gt_mmio_init() to perform early setup of the
    gt->mmio which will make those GuC functions work again.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Matt Roper <[email protected]>
    Cc: Piotr Piórkowski <[email protected]>
    Reviewed-by: Piotr Piórkowski <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe/vf: Retry sending MMIO request to GUC on timeout error [+ + +]
Author: Satyanarayana K V P <[email protected]>
Date:   Mon Feb 24 15:58:07 2025 +0530

    drm/xe/vf: Retry sending MMIO request to GUC on timeout error
    
    [ Upstream commit ba757a65d2a28d46a8ccf50538f4f05036983f1b ]
    
    Add support to allow retrying the sending of MMIO requests
    from the VF to the GUC in the event of an error. During the
    suspend/resume process, VFs begin resuming only after the PF has
    resumed. Although the PF resumes, the GUC reset and provisioning
    occur later in a separate worker process.
    
    When there are a large number of VFs, some may attempt to resume
    before the PF has completed its provisioning. Therefore, if a
    MMIO request from a VF fails during this period, we will retry
    sending the request up to GUC_RESET_VF_STATE_RETRY_MAX times,
    which is set to a maximum of 10 attempts.
    
    Signed-off-by: Satyanarayana K V P <[email protected]>
    Cc: Michał Wajdeczko <[email protected]>
    Cc: Michał Winiarski <[email protected]>
    Cc: Piotr Piórkowski <[email protected]>
    Reviewed-by: Piotr Piorkowski <[email protected]>
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe: Add locks in gtidle code [+ + +]
Author: Vinay Belgaumkar <[email protected]>
Date:   Fri Jan 10 09:33:09 2025 -0800

    drm/xe: Add locks in gtidle code
    
    [ Upstream commit d160dc6f53914d729be7fcb7afbd0e9e6a3725b2 ]
    
    The update of the residency values needs to be protected by a lock to
    avoid multiple entrypoints, for example when multiple userspace clients
    read the sysfs file. Other in-kernel clients are going to be added to
    sample these values, making the problem worse. Protect those updates
    with a raw_spinlock so it can be called by future integration with perf
    pmu.
    
    Suggested-by: Lucas De Marchi <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Signed-off-by: Vinay Belgaumkar <[email protected]>
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Always setup GT MMIO adjustment data [+ + +]
Author: Michal Wajdeczko <[email protected]>
Date:   Thu Nov 14 18:59:54 2024 +0100

    drm/xe: Always setup GT MMIO adjustment data
    
    [ Upstream commit bbd8429264baf8bc3c40cefda048560ae0eb7890 ]
    
    While we believed that xe_gt_mmio_init() will be called just once
    per GT, this might not be a case due to some tweaks that need to
    performed by the VF driver during early probe.  To avoid leaving
    any stale data in case of the re-run, reset the GT MMIO adjustment
    data for the non-media GT case.
    
    Signed-off-by: Michal Wajdeczko <[email protected]>
    Cc: Matt Roper <[email protected]>
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Disambiguate GMDID-based IP names [+ + +]
Author: Gustavo Sousa <[email protected]>
Date:   Fri Feb 21 15:51:41 2025 -0300

    drm/xe: Disambiguate GMDID-based IP names
    
    [ Upstream commit 0695c746f55c875f4cf20bab92533a800a0fe4d6 ]
    
    The name of an IP is a function of its version. As such, given an IP
    version, it should be clear to identify the name of that IP release.
    
    With the current code, we keep that mapping clear for pre-GMDID IPs, but
    ambiguous for GMDID-based ones. That causes two types of inconveniences:
    
     1. The end user, who might not have all the necessary mapping at hand,
        might be confused when seeing different possible IP names in the
        dmesg log.
    
     2. It makes a developer who is not familiar with the "IP version" to
        "Release name" need to resort to looking at the specs to understand
        see what version maps to what. While the specs should be the
        authority on the mapping, we should make our lives easier by
        reflecting that mapping in the source code.
    
    Thus, since the IP name is tied to the version, let's  remove the
    ambiguity by using a "name" field in struct gmdid_map instead of
    accumulating names in the descriptor instances.
    
    This does result in the code having IP name being defined in
    different structs (gmdid_map, xe_graphics_desc, xe_media_desc), but that
    will be resolved in upcoming changes.
    
    A side-effect of this change is that media_xe2 exactly matches
    media_xelpmp now, so we just re-use the latter.
    
    v2:
      - Drop media_xe2 and re-use media_xelpmp. (Matt)
    
    Reviewed-by: Matt Roper <[email protected]>
    Signed-off-by: Gustavo Sousa <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Matt Roper <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Do not attempt to bootstrap VF in execlists mode [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Tue Dec 10 09:31:11 2024 +0100

    drm/xe: Do not attempt to bootstrap VF in execlists mode
    
    [ Upstream commit f3b59457808f61d88178b0afa67cbd017d7ce79e ]
    
    It was mentioned in a review that there is a possibility of choosing
    to load the module with VF in execlists mode.
    
    Of course this doesn't work, just bomb out as hard as possible.
    
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Maarten Lankhorst <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Fix PVC RPe and RPa information [+ + +]
Author: Rodrigo Vivi <[email protected]>
Date:   Thu Jan 9 14:52:19 2025 -0500

    drm/xe: Fix PVC RPe and RPa information
    
    [ Upstream commit 8a734b9359cfa1bdb805f5ca23e20bd99dd18a0a ]
    
    A simple lazy buggy copy and paste of the PVC comment has brought
    the attention to the incorrect masks of the PVC register for RPa
    and RPe. So, let's fix them all.
    
    Cc: Lucas De Marchi <[email protected]>
    Cc: Vinay Belgaumkar <[email protected]>
    Reviewed-by: Vinay Belgaumkar <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Fix xe_tile_init_noalloc() error propagation [+ + +]
Author: Lucas De Marchi <[email protected]>
Date:   Thu Feb 13 11:29:00 2025 -0800

    drm/xe: Fix xe_tile_init_noalloc() error propagation
    
    [ Upstream commit 0bcf41171c64234e79eb3552d00f0aad8a47e8d3 ]
    
    Propagate the error to the caller so initialization properly stops if
    sysfs creation fails.
    
    Reviewed-by: Francois Dugast <[email protected]>
    Reviewed-by: Himal Prasad Ghimiray <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Move suballocator init to after display init [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Tue Dec 10 09:31:03 2024 +0100

    drm/xe: Move suballocator init to after display init
    
    [ Upstream commit 380b0cdaa76bc8f5c16db16eaf48751e792ff041 ]
    
    No allocations should be done before we have had a chance to preserve
    the display fb.
    
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Maarten Lankhorst <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Nuke VM's mapping upon close [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Wed Mar 5 17:26:36 2025 -0800

    drm/xe: Nuke VM's mapping upon close
    
    [ Upstream commit 074e40d9c2a84939fe28d7121d3469db50f34a3d ]
    
    Clear root PT entry and invalidate entire VM's address space when
    closing the VM. Will prevent the GPU from accessing any of the VM's
    memory after closing.
    
    v2:
     - s/vma/vm in kernel doc (CI)
     - Don't nuke migration VM as this occur at driver unload (CI)
    v3:
     - Rebase and pull into SVM series (Thomas)
     - Wait for pending binds (Thomas)
    v5:
     - Remove xe_gt_tlb_invalidation_fence_fini in error case (Matt Auld)
     - Drop local migration bool (Thomas)
    v7:
     - Add drm_dev_enter/exit protecting invalidation (CI, Matt Auld)
    
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Thomas Hellström <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Reject BO eviction if BO is bound to current VM [+ + +]
Author: Oak Zeng <[email protected]>
Date:   Fri Jan 10 16:01:37 2025 -0500

    drm/xe: Reject BO eviction if BO is bound to current VM
    
    [ Upstream commit 0af944f0e3082ff517958b1cea76fb9b8cb379dd ]
    
    This is a follow up fix for
    https://patchwork.freedesktop.org/patch/msgid/[email protected]
    The overall goal is to fail vm_bind when there is memory pressure. See more
    details in the commit message of above patch. Abbove patch fixes the issue
    when user pass in a vm_id parameter during gem_create. If user doesn't pass
    in a vm_id during gem_create, above patch doesn't help.
    
    This patch further reject BO eviction (which could be triggered by bo validation)
    if BO is bound to the current VM. vm_bind could fail due to the eviction failure.
    The BO to VM reverse mapping structure is used to determine whether BO is bound
    to VM.
    
    v2:
    Move vm_bo definition from function scope to if(evict) clause (Thomas)
    Further constraint the condition by adding ctx->resv (Thomas)
    Add a short comment describe the change.
    
    Suggested-by: Thomas Hellström <[email protected]>
    Signed-off-by: Oak Zeng <[email protected]>
    Reviewed-by: Thomas Hellström <[email protected]>
    Signed-off-by: Thomas Hellström <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Retry BO allocation [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Wed Mar 5 17:26:26 2025 -0800

    drm/xe: Retry BO allocation
    
    [ Upstream commit 1d724a2f1b2c3f0cba4975784a808482e0631adf ]
    
    TTM doesn't support fair eviction via WW locking, this mitigated in by
    using retry loops in exec and preempt rebind worker. Extend this retry
    loop to BO allocation. Once TTM supports fair eviction this patch can be
    reverted.
    
    v4:
     - Keep line break (Stuart)
    
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Gwan-gyeong Mun <[email protected]>
    Reviewed-by: Stuart Summers <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Stop ignoring errors from xe_ttm_stolen_mgr_init() [+ + +]
Author: Lucas De Marchi <[email protected]>
Date:   Thu Feb 13 11:29:01 2025 -0800

    drm/xe: Stop ignoring errors from xe_ttm_stolen_mgr_init()
    
    [ Upstream commit ff57025c358603555f1e0ae0d50282a460433594 ]
    
    Make sure to differentiate normal behavior, e.g. there's no stolen, from
    allocation errors or failure to initialize lower layers.
    
    Reviewed-by: Francois Dugast <[email protected]>
    Reviewed-by: Himal Prasad Ghimiray <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: Use xe_mmio_read32() to read mtcfg register [+ + +]
Author: Shuicheng Lin <[email protected]>
Date:   Tue May 13 15:30:10 2025 +0000

    drm/xe: Use xe_mmio_read32() to read mtcfg register
    
    [ Upstream commit 84b6f8503b29a6cc5a82848253a97c09a95fdf49 ]
    
    The mtcfg register is a 32-bit register and should therefore be
    accessed using xe_mmio_read32().
    
    Other 3 changes per codestyle suggestion:
    "
    xe_mmio.c:83: CHECK: Alignment should match open parenthesis
    xe_mmio.c:131: CHECK: Comparison to NULL could be written "!xe->mmio.regs"
    xe_mmio.c:315: CHECK: line length of 103 exceeds 100 columns
    "
    
    Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
    Reviewed-by: Tejas Upadhyay <[email protected]>
    Cc: Matt Roper <[email protected]>
    Signed-off-by: Shuicheng Lin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Matt Roper <[email protected]>
    (cherry picked from commit d2662cf8f44a68deb6c76ad9f1d9f29dbf7ba601)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/xe: xe_gen_wa_oob: replace program_invocation_short_name [+ + +]
Author: Daniel Gomez <[email protected]>
Date:   Mon Feb 24 07:23:13 2025 +0100

    drm/xe: xe_gen_wa_oob: replace program_invocation_short_name
    
    [ Upstream commit 89eb42b5539f6ae6a0cabcb39e5b6fcc83c106a1 ]
    
    program_invocation_short_name may not be available in other systems.
    Instead, replace it with the argv[0] to pass the executable name.
    
    Fixes build error when program_invocation_short_name is not available:
    
    drivers/gpu/drm/xe/xe_gen_wa_oob.c:34:3: error: use of
    undeclared identifier 'program_invocation_short_name'    34 |
    program_invocation_short_name);       |                 ^ 1 error
    generated.
    
    Suggested-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Daniel Gomez <[email protected]>
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm: Add valid clones check [+ + +]
Author: Jessica Zhang <[email protected]>
Date:   Mon Dec 16 16:43:14 2024 -0800

    drm: Add valid clones check
    
    [ Upstream commit 41b4b11da02157c7474caf41d56baae0e941d01a ]
    
    Check that all encoders attached to a given CRTC are valid
    possible_clones of each other.
    
    Signed-off-by: Jessica Zhang <[email protected]>
    Reviewed-by: Maxime Ripard <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm: bridge: adv7511: fill stream capabilities [+ + +]
Author: Olivier Moysan <[email protected]>
Date:   Wed Jan 8 18:03:54 2025 +0100

    drm: bridge: adv7511: fill stream capabilities
    
    [ Upstream commit c852646f12d4cd5b4f19eeec2976c5d98c0382f8 ]
    
    Set no_i2s_capture and no_spdif_capture flags in hdmi_codec_pdata structure
    to report that the ADV7511 HDMI bridge does not support i2s or spdif audio
    capture.
    
    Signed-off-by: Olivier Moysan <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/ie31200: work around false positive build warning [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Wed Jan 22 07:50:26 2025 +0100

    EDAC/ie31200: work around false positive build warning
    
    [ Upstream commit c29dfd661fe2f8d1b48c7f00590929c04b25bf40 ]
    
    gcc-14 produces a bogus warning in some configurations:
    
    drivers/edac/ie31200_edac.c: In function 'ie31200_probe1.isra':
    drivers/edac/ie31200_edac.c:412:26: error: 'dimm_info' is used uninitialized [-Werror=uninitialized]
      412 |         struct dimm_data dimm_info[IE31200_CHANNELS][IE31200_DIMMS_PER_CHANNEL];
          |                          ^~~~~~~~~
    drivers/edac/ie31200_edac.c:412:26: note: 'dimm_info' declared here
      412 |         struct dimm_data dimm_info[IE31200_CHANNELS][IE31200_DIMMS_PER_CHANNEL];
          |                          ^~~~~~~~~
    
    I don't see any way the unintialized access could really happen here,
    but I can see why the compiler gets confused by the two loops.
    
    Instead, rework the two nested loops to only read the addr_decode
    registers and then keep only one instance of the dimm info structure.
    
    [Tony: Qiuxu pointed out that the "populate DIMM info" comment was left
    behind in the refactor and suggested moving it. I deleted the comment
    as unnecessry in front os a call to populate_dimm_info(). That seems
    pretty self-describing.]
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Acked-by: Jason Baron <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
eeprom: ee1004: Check chip before probing [+ + +]
Author: Eddie James <[email protected]>
Date:   Tue Feb 18 16:09:59 2025 -0600

    eeprom: ee1004: Check chip before probing
    
    [ Upstream commit d9406677428e9234ea62bb2d2f5e996d1b777760 ]
    
    Like other eeprom drivers, check if the device is really there and
    functional before probing.
    
    Signed-off-by: Eddie James <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
erofs: initialize decompression early [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Mon Mar 17 13:48:40 2025 +0800

    erofs: initialize decompression early
    
    [ Upstream commit fe1e57d44d7f106df9048e815e4862cf63921220 ]
    
     - Rename erofs_init_managed_cache() to z_erofs_init_super();
     - Move the initialization of managed_pslots into z_erofs_init_super() too;
     - Move z_erofs_init_super() and packed inode preparation upwards, before
       the root inode initialization.
    
    Therefore, the root directory can also be compressible.
    
    Signed-off-by: Gao Xiang <[email protected]>
    Acked-by: Chao Yu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
err.h: move IOMEM_ERR_PTR() to err.h [+ + +]
Author: Raag Jadav <[email protected]>
Date:   Wed Feb 12 11:55:02 2025 +0530

    err.h: move IOMEM_ERR_PTR() to err.h
    
    commit 18311a766c587fc69b1806f1d5943305903b7e6e upstream.
    
    Since IOMEM_ERR_PTR() macro deals with an error pointer, a better place
    for it is err.h. This helps avoid dependency on io.h for the users that
    don't need it.
    
    Suggested-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Raag Jadav <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
espintcp: fix skb leaks [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Wed Apr 9 15:59:56 2025 +0200

    espintcp: fix skb leaks
    
    [ Upstream commit 63c1f19a3be3169e51a5812d22a6d0c879414076 ]
    
    A few error paths are missing a kfree_skb.
    
    Fixes: e27cca96cd68 ("xfrm: add espintcp (RFC 8229)")
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

espintcp: remove encap socket caching to avoid reference leak [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Wed Apr 9 15:59:57 2025 +0200

    espintcp: remove encap socket caching to avoid reference leak
    
    [ Upstream commit 028363685bd0b7a19b4a820f82dd905b1dc83999 ]
    
    The current scheme for caching the encap socket can lead to reference
    leaks when we try to delete the netns.
    
    The reference chain is: xfrm_state -> enacp_sk -> netns
    
    Since the encap socket is a userspace socket, it holds a reference on
    the netns. If we delete the espintcp state (through flush or
    individual delete) before removing the netns, the reference on the
    socket is dropped and the netns is correctly deleted. Otherwise, the
    netns may not be reachable anymore (if all processes within the ns
    have terminated), so we cannot delete the xfrm state to drop its
    reference on the socket.
    
    This patch results in a small (~2% in my tests) performance
    regression.
    
    A GC-type mechanism could be added for the socket cache, to clear
    references if the state hasn't been used "recently", but it's a lot
    more complex than just not caching the socket.
    
    Fixes: e27cca96cd68 ("xfrm: add espintcp (RFC 8229)")
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
eth: fbnic: Prepend TSENE FW fields with FBNIC_FW [+ + +]
Author: Lee Trager <[email protected]>
Date:   Fri Feb 28 11:15:26 2025 -0800

    eth: fbnic: Prepend TSENE FW fields with FBNIC_FW
    
    [ Upstream commit 56bcc6ecff8fdc06258c637226986ed522027ca5 ]
    
    All other firmware fields are prepended with FBNIC_FW. Update TSENE fields
    to follow the same format.
    
    Signed-off-by: Lee Trager <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

eth: fbnic: set IFF_UNICAST_FLT to avoid enabling promiscuous mode when adding unicast addrs [+ + +]
Author: Alexander Duyck <[email protected]>
Date:   Mon Feb 3 17:00:38 2025 -0800

    eth: fbnic: set IFF_UNICAST_FLT to avoid enabling promiscuous mode when adding unicast addrs
    
    [ Upstream commit 09717c28b76c30b1dc8c261c855ffb2406abab2e ]
    
    I realized when we were adding unicast addresses we were enabling
    promiscuous mode. I did a bit of digging and realized we had overlooked
    setting the driver private flag to indicate we supported unicast filtering.
    
    Example below shows the table with 00deadbeef01 as the main NIC address,
    and 5 additional addresses in the 00deadbeefX0 format.
    
      # cat $dbgfs/mac_addr
      Idx S TCAM Bitmap       Addr/Mask
      ----------------------------------
      00  0 00000000,00000000 000000000000
                              000000000000
      01  0 00000000,00000000 000000000000
                              000000000000
      02  0 00000000,00000000 000000000000
                              000000000000
      ...
      24  0 00000000,00000000 000000000000
                              000000000000
      25  1 00100000,00000000 00deadbeef50
                              000000000000
      26  1 00100000,00000000 00deadbeef40
                              000000000000
      27  1 00100000,00000000 00deadbeef30
                              000000000000
      28  1 00100000,00000000 00deadbeef20
                              000000000000
      29  1 00100000,00000000 00deadbeef10
                              000000000000
      30  1 00100000,00000000 00deadbeef01
                              000000000000
      31  0 00000000,00000000 000000000000
                              000000000000
    
    Before rule 31 would be active. With this change it correctly sticks
    to just the unicast filters.
    
    Signed-off-by: Alexander Duyck <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

eth: mlx4: don't try to complete XDP frames in netpoll [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Wed Feb 12 17:06:33 2025 -0800

    eth: mlx4: don't try to complete XDP frames in netpoll
    
    [ Upstream commit 8fdeafd66edaf420ea0063a1f13442fe3470fe70 ]
    
    mlx4 doesn't support ndo_xdp_xmit / XDP_REDIRECT and wasn't
    using page pool until now, so it could run XDP completions
    in netpoll (NAPI budget == 0) just fine. Page pool has calling
    context requirements, make sure we don't try to call it from
    what is potentially HW IRQ context.
    
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
exfat: call bh_read in get_block only when necessary [+ + +]
Author: Sungjong Seo <[email protected]>
Date:   Thu Mar 27 00:01:16 2025 +0900

    exfat: call bh_read in get_block only when necessary
    
    [ Upstream commit c73e680d1f84059e1b1ea82a537f6ccc1c563eb4 ]
    
    With commit 11a347fb6cef ("exfat: change to get file size from DataLength"),
    exfat_get_block() can now handle valid_size. However, most partial
    unwritten blocks that could be mapped with other blocks are being
    inefficiently processed separately as individual blocks.
    
    Except for partial unwritten blocks that require independent processing,
    let's handle them simply as before.
    
    Signed-off-by: Sungjong Seo <[email protected]>
    Reviewed-by: Yuezhang Mo <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ext4: do not convert the unwritten extents if data writeback fails [+ + +]
Author: Baokun Li <[email protected]>
Date:   Wed Jan 22 19:05:26 2025 +0800

    ext4: do not convert the unwritten extents if data writeback fails
    
    [ Upstream commit e856f93e0fb249955f7d5efb18fe20500a9ccc6d ]
    
    When dioread_nolock is turned on (the default), it will convert unwritten
    extents to written at ext4_end_io_end(), even if the data writeback fails.
    
    It leads to the possibility that stale data may be exposed when the
    physical block corresponding to the file data is read-only (i.e., writes
    return -EIO, but reads are normal).
    
    Therefore a new ext4_io_end->flags EXT4_IO_END_FAILED is added, which
    indicates that some bio write-back failed in the current ext4_io_end.
    When this flag is set, the unwritten to written conversion is no longer
    performed. Users can read the data normally until the caches are dropped,
    after that, the failed extents can only be read to all 0.
    
    Signed-off-by: Baokun Li <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: don't write back data before punch hole in nojournal mode [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Fri Dec 20 09:16:30 2024 +0800

    ext4: don't write back data before punch hole in nojournal mode
    
    [ Upstream commit 43d0105e2c7523cc6b14cad65e2044e829c0a07a ]
    
    There is no need to write back all data before punching a hole in
    non-journaled mode since it will be dropped soon after removing space.
    Therefore, the call to filemap_write_and_wait_range() can be eliminated.
    Besides, similar to ext4_zero_range(), we must address the case of
    partially punched folios when block size < page size. It is essential to
    remove writable userspace mappings to ensure that the folio can be
    faulted again during subsequent mmap write access.
    
    In journaled mode, we need to write dirty pages out before discarding
    page cache in case of crash before committing the freeing data
    transaction, which could expose old, stale data, even if synchronization
    has been performed.
    
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Ojaswin Mujoo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: on a remount, only log the ro or r/w state when it has changed [+ + +]
Author: Nicolas Bretz <[email protected]>
Date:   Wed Mar 19 11:10:11 2025 -0600

    ext4: on a remount, only log the ro or r/w state when it has changed
    
    [ Upstream commit d7b0befd09320e3356a75cb96541c030515e7f5f ]
    
    A user complained that a message such as:
    
    EXT4-fs (nvme0n1p3): re-mounted UUID ro. Quota mode: none.
    
    implied that the file system was previously mounted read/write and was
    now remounted read-only, when it could have been some other mount
    state that had changed by the "mount -o remount" operation.  Fix this
    by only logging "ro"or "r/w" when it has changed.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=219132
    
    Signed-off-by: Nicolas Bretz <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: reject the 'data_err=abort' option in nojournal mode [+ + +]
Author: Baokun Li <[email protected]>
Date:   Wed Jan 22 19:05:27 2025 +0800

    ext4: reject the 'data_err=abort' option in nojournal mode
    
    [ Upstream commit 26343ca0df715097065b02a6cddb4a029d5b9327 ]
    
    data_err=abort aborts the journal on I/O errors. However, this option is
    meaningless if journal is disabled, so it is rejected in nojournal mode
    to reduce unnecessary checks. Also, this option is ignored upon remount.
    
    Signed-off-by: Baokun Li <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: remove writable userspace mappings before truncating page cache [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Fri Dec 20 09:16:28 2024 +0800

    ext4: remove writable userspace mappings before truncating page cache
    
    [ Upstream commit 17207d0bb209e8b40f27d7f3f96e82a78af0bf2c ]
    
    When zeroing a range of folios on the filesystem which block size is
    less than the page size, the file's mapped blocks within one page will
    be marked as unwritten, we should remove writable userspace mappings to
    ensure that ext4_page_mkwrite() can be called during subsequent write
    access to these partial folios. Otherwise, data written by subsequent
    mmap writes may not be saved to disk.
    
     $mkfs.ext4 -b 1024 /dev/vdb
     $mount /dev/vdb /mnt
     $xfs_io -t -f -c "pwrite -S 0x58 0 4096" -c "mmap -rw 0 4096" \
                   -c "mwrite -S 0x5a 2048 2048" -c "fzero 2048 2048" \
                   -c "mwrite -S 0x59 2048 2048" -c "close" /mnt/foo
    
     $od -Ax -t x1z /mnt/foo
     000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
     *
     000800 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59
     *
     001000
    
     $umount /mnt && mount /dev/vdb /mnt
     $od -Ax -t x1z /mnt/foo
     000000 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58
     *
     000800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     *
     001000
    
    Fix this by introducing ext4_truncate_page_cache_block_range() to remove
    writable userspace mappings when truncating a partial folio range.
    Additionally, move the journal data mode-specific handlers and
    truncate_pagecache_range() into this function, allowing it to serve as a
    common helper that correctly manages the page cache in preparation for
    block range manipulations.
    
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Ojaswin Mujoo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ext4: reorder capability check last [+ + +]
Author: Christian Göttsche <[email protected]>
Date:   Sun Mar 2 17:06:39 2025 +0100

    ext4: reorder capability check last
    
    [ Upstream commit 1b419c889c0767a5b66d0a6c566cae491f1cb0f7 ]
    
    capable() calls refer to enabled LSMs whether to permit or deny the
    request.  This is relevant in connection with SELinux, where a
    capability check results in a policy decision and by default a denial
    message on insufficient permission is issued.
    It can lead to three undesired cases:
      1. A denial message is generated, even in case the operation was an
         unprivileged one and thus the syscall succeeded, creating noise.
      2. To avoid the noise from 1. the policy writer adds a rule to ignore
         those denial messages, hiding future syscalls, where the task
         performs an actual privileged operation, leading to hidden limited
         functionality of that task.
      3. To avoid the noise from 1. the policy writer adds a rule to permit
         the task the requested capability, while it does not need it,
         violating the principle of least privilege.
    
    Signed-off-by: Christian Göttsche <[email protected]>
    Reviewed-by: Serge Hallyn <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
f2fs: introduce f2fs_base_attr for global sysfs entries [+ + +]
Author: Jaegeuk Kim <[email protected]>
Date:   Thu Jan 30 05:06:07 2025 +0000

    f2fs: introduce f2fs_base_attr for global sysfs entries
    
    [ Upstream commit 21925ede449e038ed6f9efdfe0e79f15bddc34bc ]
    
    In /sys/fs/f2fs/features, there's no f2fs_sb_info, so let's avoid to get
    the pointer.
    
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbcon: Use correct erase colour for clearing in fbcon [+ + +]
Author: Zsolt Kajtar <[email protected]>
Date:   Sun Feb 2 21:33:46 2025 +0100

    fbcon: Use correct erase colour for clearing in fbcon
    
    [ Upstream commit 892c788d73fe4a94337ed092cb998c49fa8ecaf4 ]
    
    The erase colour calculation for fbcon clearing should use get_color instead
    of attr_col_ec, like everything else. The latter is similar but is not correct.
    For example it's missing the depth dependent remapping and doesn't care about
    blanking.
    
    The problem can be reproduced by setting up the background colour to grey
    (vt.color=0x70) and having an fbcon console set to 2bpp (4 shades of gray).
    Now the background attribute should be 1 (dark gray) on the console.
    
    If the screen is scrolled when pressing enter in a shell prompt at the bottom
    line then the new line is cleared using colour 7 instead of 1. That's not
    something fillrect likes (at 2bbp it expect 0-3) so the result is interesting.
    
    This patch switches to get_color with vc_video_erase_char to determine the
    erase colour from attr_col_ec. That makes the latter function redundant as
    no other users were left.
    
    Use correct erase colour for clearing in fbcon
    
    Signed-off-by: Zsolt Kajtar <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev: core: tileblit: Implement missing margin clearing for tileblit [+ + +]
Author: Zsolt Kajtar <[email protected]>
Date:   Sat Feb 1 09:18:09 2025 +0100

    fbdev: core: tileblit: Implement missing margin clearing for tileblit
    
    [ Upstream commit 76d3ca89981354e1f85a3e0ad9ac4217d351cc72 ]
    
    I was wondering why there's garbage at the bottom of the screen when
    tile blitting is used with an odd mode like 1080, 600 or 200. Sure there's
    only space for half a tile but the same area is clean when the buffer
    is bitmap.
    
    Then later I found that it's supposed to be cleaned but that's not
    implemented. So I took what's in bitblit and adapted it for tileblit.
    
    This implementation was tested for both the horizontal and vertical case,
    and now does the same as what's done for bitmap buffers.
    
    If anyone is interested to reproduce the problem then I could bet that'd
    be on a S3 or Ark. Just set up a mode with an odd line count and make
    sure that the virtual size covers the complete tile at the bottom. E.g.
    for 600 lines that's 608 virtual lines for a 16 tall tile. Then the
    bottom area should be cleaned.
    
    For the right side it's more difficult as there the drivers won't let an
    odd size happen, unless the code is modified. But once it reports back a
    few pixel columns short then fbcon won't use the last column. With the
    patch that column is now clean.
    
    Btw. the virtual size should be rounded up by the driver for both axes
    (not only the horizontal) so that it's dividable by the tile size.
    That's a driver bug but correcting it is not in scope for this patch.
    
    Implement missing margin clearing for tileblit
    
    Signed-off-by: Zsolt Kajtar <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fbdev: fsl-diu-fb: add missing device_remove_file() [+ + +]
Author: Shixiong Ou <[email protected]>
Date:   Mon Mar 10 09:54:31 2025 +0800

    fbdev: fsl-diu-fb: add missing device_remove_file()
    
    [ Upstream commit 86d16cd12efa547ed43d16ba7a782c1251c80ea8 ]
    
    Call device_remove_file() when driver remove.
    
    Signed-off-by: Shixiong Ou <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: arm_ffa: Handle the presence of host partition in the partition info [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Mon Feb 17 15:38:48 2025 +0000

    firmware: arm_ffa: Handle the presence of host partition in the partition info
    
    [ Upstream commit 2f622a8b0722d332a2a149794a3add47bc9bdcf3 ]
    
    Currently it is assumed that the firmware doesn't present the host
    partition in the list of partitions presented as part of the response
    to PARTITION_INFO_GET from the firmware. However, there are few
    platforms that prefer to present the same in the list of partitions.
    It is not manadatory but not restricted as well.
    
    So handle the same by making sure to check the presence of the host
    VM ID in the XArray partition information maintained/managed in the
    driver before attempting to add it.
    
    Tested-by: Viresh Kumar <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_ffa: Reject higher major version as incompatible [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Mon Feb 17 15:38:53 2025 +0000

    firmware: arm_ffa: Reject higher major version as incompatible
    
    [ Upstream commit efff6a7f16b34fd902f342b58bd8bafc2d6f2fd1 ]
    
    When the firmware compatibility was handled previously in the commit
    8e3f9da608f1 ("firmware: arm_ffa: Handle compatibility with different firmware versions"),
    we only addressed firmware versions that have higher minor versions
    compared to the driver version which is should be considered compatible
    unless the firmware returns NOT_SUPPORTED.
    
    However, if the firmware reports higher major version than the driver
    supported, we need to reject it. If the firmware can work in a compatible
    mode with the driver requested version, it must return the same major
    version as requested.
    
    Tested-by: Viresh Kumar <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_ffa: Set dma_mask for ffa devices [+ + +]
Author: Viresh Kumar <[email protected]>
Date:   Fri Jan 17 15:35:52 2025 +0530

    firmware: arm_ffa: Set dma_mask for ffa devices
    
    [ Upstream commit cc0aac7ca17e0ea3ca84b552fc79f3e86fd07f53 ]
    
    Set dma_mask for FFA devices, otherwise DMA allocation using the device pointer
    lead to following warning:
    
    WARNING: CPU: 1 PID: 1 at kernel/dma/mapping.c:597 dma_alloc_attrs+0xe0/0x124
    
    Signed-off-by: Viresh Kumar <[email protected]>
    Message-Id: <e3dd8042ac680bd74b6580c25df855d092079c18.1737107520.git.viresh.kumar@linaro.org>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_scmi: Relax duplicate name constraint across protocol ids [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Fri Jan 31 14:18:20 2025 +0000

    firmware: arm_scmi: Relax duplicate name constraint across protocol ids
    
    [ Upstream commit 21ee965267bcbdd733be0f35344fa0f0226d7861 ]
    
    Currently in scmi_protocol_device_request(), no duplicate scmi device
    name is allowed across any protocol. However scmi_dev_match_id() first
    matches the protocol id and then the name. So, there is no strict
    requirement to keep this scmi device name unique across all the protocols.
    
    Relax the constraint on the duplicate name across the protocols and
    inhibit only within the same protocol id.
    
    Message-Id: <[email protected]>
    Reviewed-by: Dhruva Gole <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: xilinx: Dont send linux address to get fpga config get status [+ + +]
Author: Siva Durga Prasad Paladugu <[email protected]>
Date:   Fri Feb 7 11:19:51 2025 +0530

    firmware: xilinx: Dont send linux address to get fpga config get status
    
    [ Upstream commit 5abc174016052caff1bcf4cedb159bd388411e98 ]
    
    Fpga get config status just returns status through ret_payload and there
    is no need to allocate local buf and send its address through SMC args.
    Moreover, the address that is being passed till now is linux virtual
    address and is incorrect.
    Corresponding modification has been done in the firmware to avoid using the
    address sent by linux.
    
    Signed-off-by: Siva Durga Prasad Paladugu <[email protected]>
    Signed-off-by: Nava kishore Manne <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Michal Simek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Fix mis-uses of : 'cc-option' for warning disablement [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Wed Apr 23 10:08:29 2025 -0700

    Fix mis-uses of 'cc-option' for warning disablement
    
    commit a79be02bba5c31f967885c7f3bf3a756d77d11d9 upstream.
    
    This was triggered by one of my mis-uses causing odd build warnings on
    sparc in linux-next, but while figuring out why the "obviously correct"
    use of cc-option caused such odd breakage, I found eight other cases of
    the same thing in the tree.
    
    The root cause is that 'cc-option' doesn't work for checking negative
    warning options (ie things like '-Wno-stringop-overflow') because gcc
    will silently accept options it doesn't recognize, and so 'cc-option'
    ends up thinking they are perfectly fine.
    
    And it all works, until you have a situation where _another_ warning is
    emitted.  At that point the compiler will go "Hmm, maybe the user
    intended to disable this warning but used that wrong option that I
    didn't recognize", and generate a warning for the unrecognized negative
    option.
    
    Which explains why we have several cases of this in the tree: the
    'cc-option' test really doesn't work for this situation, but most of the
    time it simply doesn't matter that ity doesn't work.
    
    The reason my recently added case caused problems on sparc was pointed
    out by Thomas Weißschuh: the sparc build had a previous explicit warning
    that then triggered the new one.
    
    I think the best fix for this would be to make 'cc-option' a bit smarter
    about this sitation, possibly by adding an intentional warning to the
    test case that then triggers the unrecognized option warning reliably.
    
    But the short-term fix is to replace 'cc-option' with an existing helper
    designed for this exact case: 'cc-disable-warning', which picks the
    negative warning but uses the positive form for testing the compiler
    support.
    
    Reported-by: Stephen Rothwell <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Explained-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fpga: altera-cvp: Increase credit timeout [+ + +]
Author: Kuhanh Murugasen Krishnan <[email protected]>
Date:   Thu Feb 13 06:12:49 2025 +0800

    fpga: altera-cvp: Increase credit timeout
    
    [ Upstream commit 0f05886a40fdc55016ba4d9ae0a9c41f8312f15b ]
    
    Increase the timeout for SDM (Secure device manager) data credits from
    20ms to 40ms. Internal stress tests running at 500 loops failed with the
    current timeout of 20ms. At the start of a FPGA configuration, the CVP
    host driver reads the transmit credits from SDM. It then sends bitstream
    FPGA data to SDM based on the total credits. Each credit allows the
    CVP host driver to send 4kBytes of data. There are situations whereby,
    the SDM did not respond in time during testing.
    
    Signed-off-by: Ang Tien Sung <[email protected]>
    Signed-off-by: Kuhanh Murugasen Krishnan <[email protected]>
    Acked-by: Xu Yilun <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Xu Yilun <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/buffer: introduce sleeping flavors for pagecache lookups [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:16 2025 -0700

    fs/buffer: introduce sleeping flavors for pagecache lookups
    
    [ Upstream commit 2814a7d3d2ff5d2cdd22936f641f758fdb971fa0 ]
    
    Add __find_get_block_nonatomic() and sb_find_get_block_nonatomic()
    calls for which users will be converted where safe. These versions
    will take the folio lock instead of the mapping's private_lock.
    
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs/buffer: split locking for pagecache lookups [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:15 2025 -0700

    fs/buffer: split locking for pagecache lookups
    
    [ Upstream commit 7ffe3de53a885dbb5836541c2178bd07d1bad7df ]
    
    Callers of __find_get_block() may or may not allow for blocking
    semantics, and is currently assumed that it will not. Layout
    two paths based on this. The the private_lock scheme will
    continued to be used for atomic contexts. Otherwise take the
    folio lock instead, which protects the buffers, such as
    vs migration and try_to_free_buffers().
    
    Per the "hack idea", the latter can alleviate contention on
    the private_lock for bdev mappings. For reasons of determinism
    and avoid making bugs hard to reproduce, the trylocking is not
    attempted.
    
    No change in semantics. All lookup users still take the spinlock.
    
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs/buffer: use sleeping version of __find_get_block() [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:17 2025 -0700

    fs/buffer: use sleeping version of __find_get_block()
    
    [ Upstream commit 5b67d43976828dea2394eae2556b369bb7a61f64 ]
    
    Convert to the new nonatomic flavor to benefit from potential performance
    benefits and adapt in the future vs migration such that semantics
    are kept.
    
    Convert write_boundary_block() which already takes the buffer
    lock as well as bdev_getblk() depending on the respective gpf flags.
    There are no changes in semantics.
    
    Suggested-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected] # [0] [1]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/ext4: use sleeping version of sb_find_get_block() [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:20 2025 -0700

    fs/ext4: use sleeping version of sb_find_get_block()
    
    [ Upstream commit 6e8f57fd09c9fb569d10b2ccc3878155b702591a ]
    
    Enable ext4_free_blocks() to use it, which has a cond_resched to begin
    with. Convert to the new nonatomic flavor to benefit from potential
    performance benefits and adapt in the future vs migration such that
    semantics are kept.
    
    Suggested-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/jbd2: use sleeping version of __find_get_block() [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:19 2025 -0700

    fs/jbd2: use sleeping version of __find_get_block()
    
    [ Upstream commit f76d4c28a46a9260d85e00dafc8f46d369365d33 ]
    
    Convert to the new nonatomic flavor to benefit from potential
    performance benefits and adapt in the future vs migration such
    that semantics are kept.
    
    - jbd2_journal_revoke(): can sleep (has might_sleep() in the beginning)
    
    - jbd2_journal_cancel_revoke(): only used from do_get_write_access() and
        do_get_create_access() which do sleep. So can sleep.
    
    - jbd2_clear_buffer_revoked_flags() - only called from journal commit code
        which sleeps. So can sleep.
    
    Suggested-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/ocfs2: use sleeping version of __find_get_block() [+ + +]
Author: Davidlohr Bueso <[email protected]>
Date:   Thu Apr 17 18:59:18 2025 -0700

    fs/ocfs2: use sleeping version of __find_get_block()
    
    [ Upstream commit a0b5ff07491010789fcb012bc8f9dad9d26f9a8b ]
    
    This is a path that allows for blocking as it does IO. Convert
    to the new nonatomic flavor to benefit from potential performance
    benefits and adapt in the future vs migration such that semantics
    are kept.
    
    Suggested-by: Jan Kara <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Davidlohr Bueso <[email protected]>
    Link: https://kdevops.org/ext4/v6.15-rc2.html # [0]
    Link: https://lore.kernel.org/all/[email protected]/ # [1]
    Link: https://lore.kernel.org/[email protected]
    Tested-by: [email protected]
    Reviewed-by: Luis Chamberlain <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/pipe: Limit the slots in pipe_resize_ring() [+ + +]
Author: K Prateek Nayak <[email protected]>
Date:   Fri Mar 7 05:29:16 2025 +0000

    fs/pipe: Limit the slots in pipe_resize_ring()
    
    [ Upstream commit cf3d0c54b21c4a351d4f94cf188e9715dbd1ef5b ]
    
    Limit the number of slots in pipe_resize_ring() to the maximum value
    representable by pipe->{head,tail}. Values beyond the max limit can
    lead to incorrect pipe occupancy related calculations where the pipe
    will never appear full.
    
    Suggested-by: Linus Torvalds <[email protected]>
    Signed-off-by: K Prateek Nayak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fuse: Return EPERM rather than ENOSYS from link() [+ + +]
Author: Matt Johnston <[email protected]>
Date:   Fri Feb 14 09:17:53 2025 +0800

    fuse: Return EPERM rather than ENOSYS from link()
    
    [ Upstream commit 8344213571b2ac8caf013cfd3b37bc3467c3a893 ]
    
    link() is documented to return EPERM when a filesystem doesn't support
    the operation, return that instead.
    
    Link: https://github.com/libfuse/libfuse/issues/925
    Signed-off-by: Matt Johnston <[email protected]>
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gcc-15: disable '-Wunterminated-string-initialization' entirely for now [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Sun Apr 20 15:30:53 2025 -0700

    gcc-15: disable '-Wunterminated-string-initialization' entirely for now
    
    commit 9d7a0577c9db35c4cc52db90bc415ea248446472 upstream.
    
    I had left the warning around but as a non-fatal error to get my gcc-15
    builds going, but fixed up some of the most annoying warning cases so
    that it wouldn't be *too* verbose.
    
    Because I like the _concept_ of the warning, even if I detested the
    implementation to shut it up.
    
    It turns out the implementation to shut it up is even more broken than I
    thought, and my "shut up most of the warnings" patch just caused fatal
    errors on gcc-14 instead.
    
    I had tested with clang, but when I upgrade my development environment,
    I try to do it on all machines because I hate having different systems
    to maintain, and hadn't realized that gcc-14 now had issues.
    
    The ACPI case is literally why I wanted to have a *type* that doesn't
    trigger the warning (see commit d5d45a7f2619: "gcc-15: make
    'unterminated string initialization' just a warning"), instead of
    marking individual places as "__nonstring".
    
    But gcc-14 doesn't like that __nonstring location that shut gcc-15 up,
    because it's on an array of char arrays, not on one single array:
    
      drivers/acpi/tables.c:399:1: error: 'nonstring' attribute ignored on objects of type 'const char[][4]' [-Werror=attributes]
        399 | static const char table_sigs[][ACPI_NAMESEG_SIZE] __initconst __nonstring = {
            | ^~~~~~
    
    and my attempts to nest it properly with a type had failed, because of
    how gcc doesn't like marking the types as having attributes, only
    symbols.
    
    There may be some trick to it, but I was already annoyed by the bad
    attribute design, now I'm just entirely fed up with it.
    
    I wish gcc had a proper way to say "this type is a *byte* array, not a
    string".
    
    The obvious thing would be to distinguish between "char []" and an
    explicitly signed "unsigned char []" (as opposed to an implicitly
    unsigned char, which is typically an architecture-specific default, but
    for the kernel is universal thanks to '-funsigned-char').
    
    But any "we can typedef a 8-bit type to not become a string just because
    it's an array" model would be fine.
    
    But "__attribute__((nonstring))" is sadly not that sane model.
    
    Reported-by: Chris Clayton <[email protected]>
    Fixes: 4b4bd8c50f48 ("gcc-15: acpi: sprinkle random '__nonstring' crumbles around")
    Fixes: d5d45a7f2619 ("gcc-15: make 'unterminated string initialization' just a warning")
    Signed-off-by: Linus Torvalds <[email protected]>
    [nathan: drivers/acpi diff dropped due to lack of 4b4bd8c50f48 in stable]
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gcc-15: make 'unterminated string initialization' just a warning [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Sun Apr 20 10:33:23 2025 -0700

    gcc-15: make 'unterminated string initialization' just a warning
    
    commit d5d45a7f26194460964eb5677a9226697f7b7fdd upstream.
    
    gcc-15 enabling -Wunterminated-string-initialization in -Wextra by
    default was done with the best intentions, but the warning is still
    quite broken.
    
    What annoys me about the warning is that this is a very traditional AND
    CORRECT way to initialize fixed byte arrays in C:
    
            unsigned char hex[16] = "0123456789abcdef";
    
    and we use this all over the kernel.  And the warning is fine, but gcc
    developers apparently never made a reasonable way to disable it.  As is
    (sadly) tradition with these things.
    
    Yes, there's "__attribute__((nonstring))", and we have a macro to make
    that absolutely disgusting syntax more palatable (ie the kernel syntax
    for that monstrosity is just "__nonstring").
    
    But that attribute is misdesigned.  What you'd typically want to do is
    tell the compiler that you are using a type that isn't a string but a
    byte array, but that doesn't work at all:
    
            warning: ‘nonstring’ attribute does not apply to types [-Wattributes]
    
    and because of this fundamental mis-design, you then have to mark each
    instance of that pattern.
    
    This is particularly noticeable in our ACPI code, because ACPI has this
    notion of a 4-byte "type name" that gets used all over, and is exactly
    this kind of byte array.
    
    This is a sad oversight, because the warning is useful, but really would
    be so much better if gcc had also given a sane way to indicate that we
    really just want a byte array type at a type level, not the broken "each
    and every array definition" level.
    
    So now instead of creating a nice "ACPI name" type using something like
    
            typedef char acpi_name_t[4] __nonstring;
    
    we have to do things like
    
            char name[ACPI_NAMESEG_SIZE] __nonstring;
    
    in every place that uses this concept and then happens to have the
    typical initializers.
    
    This is annoying me mainly because I think the warning _is_ a good
    warning, which is why I'm not just turning it off in disgust.  But it is
    hampered by this bad implementation detail.
    
    [ And obviously I'm doing this now because system upgrades for me are
      something that happen in the middle of the release cycle: don't do it
      before or during travel, or just before or during the busy merge
      window period. ]
    
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
genirq/msi: Store the IOMMU IOVA directly in msi_desc instead of iommu_cookie [+ + +]
Author: Jason Gunthorpe <[email protected]>
Date:   Wed Feb 19 17:31:36 2025 -0800

    genirq/msi: Store the IOMMU IOVA directly in msi_desc instead of iommu_cookie
    
    [ Upstream commit 1f7df3a691740a7736bbc99dc4ed536120eb4746 ]
    
    The IOMMU translation for MSI message addresses has been a 2-step process,
    separated in time:
    
     1) iommu_dma_prepare_msi(): A cookie pointer containing the IOVA address
        is stored in the MSI descriptor when an MSI interrupt is allocated.
    
     2) iommu_dma_compose_msi_msg(): this cookie pointer is used to compute a
        translated message address.
    
    This has an inherent lifetime problem for the pointer stored in the cookie
    that must remain valid between the two steps. However, there is no locking
    at the irq layer that helps protect the lifetime. Today, this works under
    the assumption that the iommu domain is not changed while MSI interrupts
    being programmed. This is true for normal DMA API users within the kernel,
    as the iommu domain is attached before the driver is probed and cannot be
    changed while a driver is attached.
    
    Classic VFIO type1 also prevented changing the iommu domain while VFIO was
    running as it does not support changing the "container" after starting up.
    
    However, iommufd has improved this so that the iommu domain can be changed
    during VFIO operation. This potentially allows userspace to directly race
    VFIO_DEVICE_ATTACH_IOMMUFD_PT (which calls iommu_attach_group()) and
    VFIO_DEVICE_SET_IRQS (which calls into iommu_dma_compose_msi_msg()).
    
    This potentially causes both the cookie pointer and the unlocked call to
    iommu_get_domain_for_dev() on the MSI translation path to become UAFs.
    
    Fix the MSI cookie UAF by removing the cookie pointer. The translated IOVA
    address is already known during iommu_dma_prepare_msi() and cannot change.
    Thus, it can simply be stored as an integer in the MSI descriptor.
    
    The other UAF related to iommu_get_domain_for_dev() will be addressed in
    patch "iommu: Make iommu_dma_prepare_msi() into a generic operation" by
    using the IOMMU group mutex.
    
    Link: https://patch.msgid.link/r/a4f2cd76b9dc1833ee6c1cf325cba57def22231c.1740014950.git.nicolinc@nvidia.com
    Signed-off-by: Nicolin Chen <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gfs2: Check for empty queue in run_queue [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Thu Feb 6 14:58:39 2025 +0100

    gfs2: Check for empty queue in run_queue
    
    [ Upstream commit d838605fea6eabae3746a276fd448f6719eb3926 ]
    
    In run_queue(), check if the queue of pending requests is empty instead
    of blindly assuming that it won't be.
    
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gpiolib: sanitize the return value of gpio_chip::set_config() [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Mon Feb 10 11:51:57 2025 +0100

    gpiolib: sanitize the return value of gpio_chip::set_config()
    
    [ Upstream commit dcf8f3bffa2de2c7f3b5771b63605194ccd2286f ]
    
    The return value of the set_config() callback may be propagated to
    user-space. If a bad driver returns a positive number, it may confuse
    user programs. Tighten the API contract and check for positive numbers
    returned by GPIO controllers.
    
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: Kconfig: Add LEDS_CLASS_MULTICOLOR dependency to HID_LOGITECH [+ + +]
Author: Kate Hsuan <[email protected]>
Date:   Tue Feb 11 13:02:40 2025 +0800

    HID: Kconfig: Add LEDS_CLASS_MULTICOLOR dependency to HID_LOGITECH
    
    [ Upstream commit 4465f4fa21e0e54c10896db3ed49dbd5a9aad3fd ]
    
    The test bot found an issue with building hid-lg-g15.
    
    All errors (new ones prefixed by >>):
    
       powerpc-linux-ld: drivers/hid/hid-lg-g15.o: in function `lg_g510_kbd_led_write':
    >> drivers/hid/hid-lg-g15.c:241:(.text+0x768): undefined reference to `led_mc_calc_color_components'
       powerpc-linux-ld: drivers/hid/hid-lg-g15.o: in function `lg_g15_register_led':
    >> drivers/hid/hid-lg-g15.c:686:(.text+0xa9c): undefined reference to `devm_led_classdev_multicolor_register_ext'
    
    Since multicolor LED APIs manage the keyboard backlight settings of
    hid-lg-g15, the LEDS_CLASS_MULTICOLOR dependency was added to
    HID_LOGITECH.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Fixes: a3a064146c50 ("HID: hid-lg-g15: Use standard multicolor LED API")
    Signed-off-by: Kate Hsuan <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: usbkbd: Fix the bit shift number for LED_KANA [+ + +]
Author: junan <[email protected]>
Date:   Thu Nov 28 10:35:18 2024 +0800

    HID: usbkbd: Fix the bit shift number for LED_KANA
    
    [ Upstream commit d73a4bfa2881a6859b384b75a414c33d4898b055 ]
    
    Since "LED_KANA" was defined as "0x04", the shift number should be "4".
    
    Signed-off-by: junan <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
highmem: add folio_test_partial_kmap() [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed May 14 18:06:02 2025 +0100

    highmem: add folio_test_partial_kmap()
    
    commit 97dfbbd135cb5e4426f37ca53a8fa87eaaa4e376 upstream.
    
    In commit c749d9b7ebbc ("iov_iter: fix copy_page_from_iter_atomic() if
    KMAP_LOCAL_FORCE_MAP"), Hugh correctly noted that if KMAP_LOCAL_FORCE_MAP
    is enabled, we must limit ourselves to PAGE_SIZE bytes per call to
    kmap_local().  The same problem exists in memcpy_from_folio(),
    memcpy_to_folio(), folio_zero_tail(), folio_fill_tail() and
    memcpy_from_file_folio(), so add folio_test_partial_kmap() to do this more
    succinctly.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 00cdf76012ab ("mm: add memcpy_from_file_folio()")
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Hugh Dickins <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hrtimers: Replace hrtimer_clock_to_base_table with switch-case [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Feb 14 15:43:33 2025 +0200

    hrtimers: Replace hrtimer_clock_to_base_table with switch-case
    
    [ Upstream commit 4441b976dfeff0d3579e8da3c0283300c618a553 ]
    
    Clang and GCC complain about overlapped initialisers in the
    hrtimer_clock_to_base_table definition. With `make W=1` and CONFIG_WERROR=y
    (which is default nowadays) this breaks the build:
    
      CC      kernel/time/hrtimer.o
    kernel/time/hrtimer.c:124:21: error: initializer overrides prior initialization of this subobject [-Werror,-Winitializer-overrides]
      124 |         [CLOCK_REALTIME]        = HRTIMER_BASE_REALTIME,
    
    kernel/time/hrtimer.c:122:27: note: previous initialization is here
      122 |         [0 ... MAX_CLOCKS - 1]  = HRTIMER_MAX_CLOCK_BASES,
    
    (and similar for CLOCK_MONOTONIC, CLOCK_BOOTTIME, and CLOCK_TAI).
    
    hrtimer_clockid_to_base(), which uses the table, is only used in
    __hrtimer_init(), which is not a hotpath.
    
    Therefore replace the table lookup with a switch case in
    hrtimer_clockid_to_base() to avoid this warning.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
hwmon: (acpi_power_meter) Fix the fake power alarm reporting [+ + +]
Author: Huisong Li <[email protected]>
Date:   Thu Feb 20 11:08:32 2025 +0800

    hwmon: (acpi_power_meter) Fix the fake power alarm reporting
    
    [ Upstream commit 0ea627381eb527a0ebd262c690c3992085b87ff4 ]
    
    We encountered a problem that a fake power alarm is reported to
    user on the platform unsupported notifications at the second step
    below:
    1> Query 'power1_alarm' attribute when the power capping occurs.
    2> Query 'power1_alarm' attribute when the power capping is over
       and the current average power is less then power cap value.
    
    The root cause is that the resource->power_alarm is set to true
    at the first step. And power meter use this old value to show
    the power alarm state instead of the current the comparison value.
    
    Signed-off-by: Huisong Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (dell-smm) Increment the number of fans [+ + +]
Author: Kurt Borja <[email protected]>
Date:   Tue Mar 4 00:52:50 2025 -0500

    hwmon: (dell-smm) Increment the number of fans
    
    [ Upstream commit dbcfcb239b3b452ef8782842c36fb17dd1b9092f ]
    
    Some Alienware laptops that support the SMM interface, may have up to 4
    fans.
    
    Tested on an Alienware x15 r1.
    
    Signed-off-by: Kurt Borja <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (gpio-fan) Add missing mutex locks [+ + +]
Author: Alexander Stein <[email protected]>
Date:   Mon Feb 10 15:59:30 2025 +0100

    hwmon: (gpio-fan) Add missing mutex locks
    
    [ Upstream commit 9fee7d19bab635f89223cc40dfd2c8797fdc4988 ]
    
    set_fan_speed() is expected to be called with fan_data->lock being locked.
    Add locking for proper synchronization.
    
    Signed-off-by: Alexander Stein <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (xgene-hwmon) use appropriate type for the latency value [+ + +]
Author: Andrey Vatoropin <[email protected]>
Date:   Tue Feb 4 09:54:08 2025 +0000

    hwmon: (xgene-hwmon) use appropriate type for the latency value
    
    [ Upstream commit 8df0f002827e18632dcd986f7546c1abf1953a6f ]
    
    The expression PCC_NUM_RETRIES * pcc_chan->latency is currently being
    evaluated using 32-bit arithmetic.
    
    Since a value of type 'u64' is used to store the eventual result,
    and this result is later sent to the function usecs_to_jiffies with
    input parameter unsigned int, the current data type is too wide to
    store the value of ctx->usecs_lat.
    
    Change the data type of "usecs_lat" to a more suitable (narrower) type.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Andrey Vatoropin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hypfs_create_cpu_files(): add missing check for hypfs_mkdir() failure [+ + +]
Author: Al Viro <[email protected]>
Date:   Mon Mar 17 22:06:04 2025 -0400

    hypfs_create_cpu_files(): add missing check for hypfs_mkdir() failure
    
    [ Upstream commit 00cdfdcfa0806202aea56b02cedbf87ef1e75df8 ]
    
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: amd-asf: Set cmd variable when encountering an error [+ + +]
Author: Shyam Sundar S K <[email protected]>
Date:   Mon Feb 17 14:32:57 2025 +0530

    i2c: amd-asf: Set cmd variable when encountering an error
    
    [ Upstream commit b719afaa1e5d88a1b51d76adf344ff4a48efdb45 ]
    
    In the event of ASF error during the transfer, update the cmd and exit
    the process, as data processing is not performed when a command fails.
    
    Co-developed-by: Sanket Goswami <[email protected]>
    Signed-off-by: Sanket Goswami <[email protected]>
    Signed-off-by: Shyam Sundar S K <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

i2c: pxa: fix call balance of i2c->clk handling routines [+ + +]
Author: Vitalii Mordan <[email protected]>
Date:   Wed Feb 12 20:28:03 2025 +0300

    i2c: pxa: fix call balance of i2c->clk handling routines
    
    [ Upstream commit be7113d2e2a6f20cbee99c98d261a1fd6fd7b549 ]
    
    If the clock i2c->clk was not enabled in i2c_pxa_probe(), it should not be
    disabled in any path.
    
    Found by Linux Verification Center (linuxtesting.org) with Klever.
    
    Signed-off-by: Vitalii Mordan <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

i2c: qcom-geni: Update i2c frequency table to match hardware guidance [+ + +]
Author: Mukesh Kumar Savaliya <[email protected]>
Date:   Wed Jan 22 12:16:34 2025 +0530

    i2c: qcom-geni: Update i2c frequency table to match hardware guidance
    
    [ Upstream commit a815975cbaeb4ab29f45312ef23be2871b2e8b82 ]
    
    With the current settings, the I2C buses are achieving around 370KHz
    instead of the expected 400KHz. For 100KHz and 1MHz, the settings are
    now more compliant and adhere to the Qualcomm’s internal programming
    guide.
    
    Update the I2C frequency table to align with the recommended values
    outlined in the I2C hardware programming guide, ensuring proper
    communication and performance.
    
    Signed-off-by: Mukesh Kumar Savaliya <[email protected]>
    Reviewed-by: Vladimir Zapolskiy <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i2c: qup: Vote for interconnect bandwidth to DRAM [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Tue Nov 28 10:48:37 2023 +0100

    i2c: qup: Vote for interconnect bandwidth to DRAM
    
    [ Upstream commit d4f35233a6345f62637463ef6e0708f44ffaa583 ]
    
    When the I2C QUP controller is used together with a DMA engine it needs
    to vote for the interconnect path to the DRAM. Otherwise it may be
    unable to access the memory quickly enough.
    
    The requested peak bandwidth is dependent on the I2C core clock.
    
    To avoid sending votes too often the bandwidth is always requested when
    a DMA transfer starts, but dropped only on runtime suspend. Runtime
    suspend should only happen if no transfer is active. After resumption we
    can defer the next vote until the first DMA transfer actually happens.
    
    The implementation is largely identical to the one introduced for
    spi-qup in commit ecdaa9473019 ("spi: qup: Vote for interconnect
    bandwidth to DRAM") since both drivers represent the same hardware
    block.
    
    Signed-off-by: Stephan Gerhold <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work() [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed Mar 19 09:08:01 2025 -0700

    i3c: master: svc: Fix implicit fallthrough in svc_i3c_master_ibi_work()
    
    [ Upstream commit e8d2d287e26d9bd9114cf258a123a6b70812442e ]
    
    Clang warns (or errors with CONFIG_WERROR=y):
    
      drivers/i3c/master/svc-i3c-master.c:596:2: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
        596 |         default:
            |         ^
      drivers/i3c/master/svc-i3c-master.c:596:2: note: insert 'break;' to avoid fall-through
        596 |         default:
            |         ^
            |         break;
      1 error generated.
    
    Clang is a little more pedantic than GCC, which does not warn when
    falling through to a case that is just break or return. Clang's version
    is more in line with the kernel's own stance in deprecated.rst, which
    states that all switch/case blocks must end in either break,
    fallthrough, continue, goto, or return. Add the missing break to silence
    the warning.
    
    Fixes: 0430bf9bc1ac ("i3c: master: svc: Fix missing STOP for master request")
    Signed-off-by: Nathan Chancellor <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i3c: master: svc: Fix missing STOP for master request [+ + +]
Author: Stanley Chu <[email protected]>
Date:   Tue Mar 18 13:36:06 2025 +0800

    i3c: master: svc: Fix missing STOP for master request
    
    [ Upstream commit 0430bf9bc1ac068c8b8c540eb93e5751872efc51 ]
    
    The controller driver nacked the master request but didn't emit a
    STOP to end the transaction. The driver shall refuse the unsupported
    requests and return the controller state to IDLE by emitting a STOP.
    
    Signed-off-by: Stanley Chu <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i3c: master: svc: Flush FIFO before sending Dynamic Address Assignment(DAA) [+ + +]
Author: Frank Li <[email protected]>
Date:   Wed Jan 29 11:22:50 2025 -0500

    i3c: master: svc: Flush FIFO before sending Dynamic Address Assignment(DAA)
    
    [ Upstream commit a892ee4cf22a50e1d6988d0464a9a421f3e5db2f ]
    
    Ensure the FIFO is empty before issuing the DAA command to prevent
    incorrect command data from being sent. Align with other data transfers,
    such as svc_i3c_master_start_xfer_locked(), which flushes the FIFO before
    sending a command.
    
    Signed-off-by: Frank Li <[email protected]>
    Reviewed-by: Miquel Raynal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ice: count combined queues using Rx/Tx count [+ + +]
Author: Michal Swiatkowski <[email protected]>
Date:   Tue Dec 3 07:58:09 2024 +0100

    ice: count combined queues using Rx/Tx count
    
    [ Upstream commit c3a392bdd31adc474f1009ee85c13fdd01fe800d ]
    
    Previous implementation assumes that there is 1:1 matching between
    vectors and queues. It isn't always true.
    
    Get minimum value from Rx/Tx queues to determine combined queues number.
    
    Reviewed-by: Jacob Keller <[email protected]>
    Tested-by: Pucha Himasekhar Reddy <[email protected]>
    Signed-off-by: Michal Swiatkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: Fix LACP bonds without SRIOV environment [+ + +]
Author: Dave Ertman <[email protected]>
Date:   Mon Apr 28 15:33:39 2025 -0400

    ice: Fix LACP bonds without SRIOV environment
    
    [ Upstream commit 6c778f1b839b63525b30046c9d1899424a62be0a ]
    
    If an aggregate has the following conditions:
    - The SRIOV LAG DDP package has been enabled
    - The bond is in 802.3ad LACP mode
    - The bond is disqualified from supporting SRIOV VF LAG
    - Both interfaces were added simultaneously to the bond (same command)
    
    Then there is a chance that the two interfaces will be assigned different
    LACP Aggregator ID's.  This will cause a failure of the LACP control over
    the bond.
    
    To fix this, we can detect if the primary interface for the bond (as
    defined by the driver) is not in switchdev mode, and exit the setup flow
    if so.
    
    Reproduction steps:
    
    %> ip link add bond0 type bond mode 802.3ad miimon 100
    %> ip link set bond0 up
    %> ifenslave bond0 eth0 eth1
    %> cat /proc/net/bonding/bond0 | grep Agg
    
    Check for Aggregator IDs that differ.
    
    Fixes: ec5a6c5f79ed ("ice: process events created by lag netdev event handler")
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Dave Ertman <[email protected]>
    Tested-by: Sujai Buvaneswaran <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: fix vf->num_mac count with port representors [+ + +]
Author: Jacob Keller <[email protected]>
Date:   Thu Apr 10 11:13:52 2025 -0700

    ice: fix vf->num_mac count with port representors
    
    [ Upstream commit bbd95160a03dbfcd01a541f25c27ddb730dfbbd5 ]
    
    The ice_vc_repr_add_mac() function indicates that it does not store the MAC
    address filters in the firmware. However, it still increments vf->num_mac.
    This is incorrect, as vf->num_mac should represent the number of MAC
    filters currently programmed to firmware.
    
    Indeed, we only perform this increment if the requested filter is a unicast
    address that doesn't match the existing vf->hw_lan_addr. In addition,
    ice_vc_repr_del_mac() does not decrement the vf->num_mac counter. This
    results in the counter becoming out of sync with the actual count.
    
    As it turns out, vf->num_mac is currently only used in legacy made without
    port representors. The single place where the value is checked is for
    enforcing a filter limit on untrusted VFs.
    
    Upcoming patches to support VF Live Migration will use this value when
    determining the size of the TLV for MAC address filters. Fix the
    representor mode function to stop incrementing the counter incorrectly.
    
    Fixes: ac19e03ef780 ("ice: allow process VF opcodes in different ways")
    Signed-off-by: Jacob Keller <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Sujai Buvaneswaran <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: init flow director before RDMA [+ + +]
Author: Michal Swiatkowski <[email protected]>
Date:   Tue Dec 3 07:58:17 2024 +0100

    ice: init flow director before RDMA
    
    [ Upstream commit d67627e7b53203ca150e54723abbed81a0716286 ]
    
    Flow director needs only one MSI-X. Load it before RDMA to save MSI-X
    for it.
    
    Reviewed-by: Jacob Keller <[email protected]>
    Tested-by: Pucha Himasekhar Reddy <[email protected]>
    Signed-off-by: Michal Swiatkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: treat dyn_allowed only as suggestion [+ + +]
Author: Michal Swiatkowski <[email protected]>
Date:   Tue Dec 3 07:58:14 2024 +0100

    ice: treat dyn_allowed only as suggestion
    
    [ Upstream commit a8c2d3932c1106af2764cc6869b29bcf3cb5bc47 ]
    
    It can be needed to have some MSI-X allocated as static and rest as
    dynamic. For example on PF VSI. We want to always have minimum one MSI-X
    on it, because of that it is allocated as a static one, rest can be
    dynamic if it is supported.
    
    Change the ice_get_irq_res() to allow using static entries if they are
    free even if caller wants dynamic one.
    
    Adjust limit values to the new approach. Min and max in limit means the
    values that are valid, so decrease max and num_static by one.
    
    Set vsi::irq_dyn_alloc if dynamic allocation is supported.
    
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Wojciech Drewek <[email protected]>
    Tested-by: Pucha Himasekhar Reddy <[email protected]>
    Signed-off-by: Michal Swiatkowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
idpf: fix idpf_vport_splitq_napi_poll() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue May 20 12:40:30 2025 +0000

    idpf: fix idpf_vport_splitq_napi_poll()
    
    [ Upstream commit 407e0efdf8baf1672876d5948b75049860a93e59 ]
    
    idpf_vport_splitq_napi_poll() can incorrectly return @budget
    after napi_complete_done() has been called.
    
    This violates NAPI rules, because after napi_complete_done(),
    current thread lost napi ownership.
    
    Move the test against POLL_MODE before the napi_complete_done().
    
    Fixes: c2d548cad150 ("idpf: add TX splitq napi poll support")
    Reported-by: Peter Newman <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Joshua Hay <[email protected]>
    Cc: Alan Brady <[email protected]>
    Cc: Madhu Chittim <[email protected]>
    Cc: Phani Burra <[email protected]>
    Cc: Pavan Kumar Linga <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

idpf: fix null-ptr-deref in idpf_features_check [+ + +]
Author: Pavan Kumar Linga <[email protected]>
Date:   Fri Apr 11 09:00:35 2025 -0700

    idpf: fix null-ptr-deref in idpf_features_check
    
    [ Upstream commit 2dabe349f7882ff1407a784d54d8541909329088 ]
    
    idpf_features_check is used to validate the TX packet. skb header
    length is compared with the hardware supported value received from
    the device control plane. The value is stored in the adapter structure
    and to access it, vport pointer is used. During reset all the vports
    are released and the vport pointer that the netdev private structure
    points to is NULL.
    
    To avoid null-ptr-deref, store the max header length value in netdev
    private structure. This also helps to cache the value and avoid
    accessing adapter pointer in hot path.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000068
    ...
    RIP: 0010:idpf_features_check+0x6d/0xe0 [idpf]
    Call Trace:
     <TASK>
     ? __die+0x23/0x70
     ? page_fault_oops+0x154/0x520
     ? exc_page_fault+0x76/0x190
     ? asm_exc_page_fault+0x26/0x30
     ? idpf_features_check+0x6d/0xe0 [idpf]
     netif_skb_features+0x88/0x310
     validate_xmit_skb+0x2a/0x2b0
     validate_xmit_skb_list+0x4c/0x70
     sch_direct_xmit+0x19d/0x3a0
     __dev_queue_xmit+0xb74/0xe70
     ...
    
    Fixes: a251eee62133 ("idpf: add SRIOV support and other ndo_ops")
    Reviewed-by: Madhu Chititm <[email protected]>
    Signed-off-by: Pavan Kumar Linga <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Samuel Salin <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ieee802154: ca8210: Use proper setters and getters for bitwise types [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Wed Mar 5 12:55:34 2025 +0200

    ieee802154: ca8210: Use proper setters and getters for bitwise types
    
    [ Upstream commit 169b2262205836a5d1213ff44dca2962276bece1 ]
    
    Sparse complains that the driver doesn't respect the bitwise types:
    
    drivers/net/ieee802154/ca8210.c:1796:27: warning: incorrect type in assignment (different base types)
    drivers/net/ieee802154/ca8210.c:1796:27:    expected restricted __le16 [addressable] [assigned] [usertype] pan_id
    drivers/net/ieee802154/ca8210.c:1796:27:    got unsigned short [usertype]
    drivers/net/ieee802154/ca8210.c:1801:25: warning: incorrect type in assignment (different base types)
    drivers/net/ieee802154/ca8210.c:1801:25:    expected restricted __le16 [addressable] [assigned] [usertype] pan_id
    drivers/net/ieee802154/ca8210.c:1801:25:    got unsigned short [usertype]
    drivers/net/ieee802154/ca8210.c:1928:28: warning: incorrect type in argument 3 (different base types)
    drivers/net/ieee802154/ca8210.c:1928:28:    expected unsigned short [usertype] dst_pan_id
    drivers/net/ieee802154/ca8210.c:1928:28:    got restricted __le16 [addressable] [usertype] pan_id
    
    Use proper setters and getters for bitwise types.
    
    Note, in accordance with [1] the protocol is little endian.
    
    Link: https://www.cascoda.com/wp-content/uploads/2018/11/CA-8210_datasheet_0418.pdf [1]
    Reviewed-by: Miquel Raynal <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Signed-off-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Stefan Schmidt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
igc: Avoid unnecessary link down event in XDP_SETUP_PROG process [+ + +]
Author: Song Yoong Siang <[email protected]>
Date:   Mon Dec 16 15:38:49 2024 +0800

    igc: Avoid unnecessary link down event in XDP_SETUP_PROG process
    
    [ Upstream commit be324b790368c1522f07c6bb5654122e07b5e588 ]
    
    The igc_close()/igc_open() functions are too drastic for installing a new
    XDP prog because they cause undesirable link down event and device reset.
    
    To avoid delays in Ethernet traffic, improve the XDP_SETUP_PROG process by
    using the same sequence as igc_xdp_setup_pool(), which performs only the
    necessary steps, as follows:
     1. stop the traffic and clean buffer
     2. stop NAPI
     3. install the XDP program
     4. resume NAPI
     5. allocate buffer and resume the traffic
    
    This patch has been tested using the 'ip link set xdpdrv' command to attach
    a simple XDP prog that always returns XDP_PASS.
    
    Before this patch, attaching xdp program will cause ptp4l to lose sync for
    few seconds, as shown in ptp4l log below:
      ptp4l[198.082]: rms    4 max    8 freq   +906 +/-   2 delay    12 +/-   0
      ptp4l[199.082]: rms    3 max    4 freq   +906 +/-   3 delay    12 +/-   0
      ptp4l[199.536]: port 1 (enp2s0): link down
      ptp4l[199.536]: port 1 (enp2s0): SLAVE to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED)
      ptp4l[199.600]: selected local clock 22abbc.fffe.bb1234 as best master
      ptp4l[199.600]: port 1 (enp2s0): assuming the grand master role
      ptp4l[199.600]: port 1 (enp2s0): master state recommended in slave only mode
      ptp4l[199.600]: port 1 (enp2s0): defaultDS.priority1 probably misconfigured
      ptp4l[202.266]: port 1 (enp2s0): link up
      ptp4l[202.300]: port 1 (enp2s0): FAULTY to LISTENING on INIT_COMPLETE
      ptp4l[205.558]: port 1 (enp2s0): new foreign master 44abbc.fffe.bb2144-1
      ptp4l[207.558]: selected best master clock 44abbc.fffe.bb2144
      ptp4l[207.559]: port 1 (enp2s0): LISTENING to UNCALIBRATED on RS_SLAVE
      ptp4l[208.308]: port 1 (enp2s0): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
      ptp4l[208.933]: rms  742 max 1303 freq   -195 +/- 682 delay    12 +/-   0
      ptp4l[209.933]: rms  178 max  274 freq   +387 +/- 243 delay    12 +/-   0
    
    After this patch, attaching xdp program no longer cause ptp4l to lose sync,
    as shown in ptp4l log below:
      ptp4l[201.183]: rms    1 max    3 freq   +959 +/-   1 delay     8 +/-   0
      ptp4l[202.183]: rms    1 max    3 freq   +961 +/-   2 delay     8 +/-   0
      ptp4l[203.183]: rms    2 max    3 freq   +958 +/-   2 delay     8 +/-   0
      ptp4l[204.183]: rms    3 max    5 freq   +961 +/-   3 delay     8 +/-   0
      ptp4l[205.183]: rms    2 max    4 freq   +964 +/-   3 delay     8 +/-   0
    
    Besides, before this patch, attaching xdp program will causes flood ping to
    lose 10 packets, as shown in ping statistics below:
      --- 169.254.1.2 ping statistics ---
      100000 packets transmitted, 99990 received, +6 errors, 0.01% packet loss, time 34001ms
      rtt min/avg/max/mdev = 0.028/0.301/3104.360/13.838 ms, pipe 10, ipg/ewma 0.340/0.243 ms
    
    After this patch, attaching xdp program no longer cause flood ping to loss
    any packets, as shown in ping statistics below:
      --- 169.254.1.2 ping statistics ---
      100000 packets transmitted, 100000 received, 0% packet loss, time 32326ms
      rtt min/avg/max/mdev = 0.027/0.231/19.589/0.155 ms, pipe 2, ipg/ewma 0.323/0.322 ms
    
    On the other hand, this patch has been tested with tools/testing/selftests/
    bpf/xdp_hw_metadata app to make sure AF_XDP zero-copy is working fine with
    XDP Tx and Rx metadata. Below is the result of last packet after received
    10000 UDP packets with interval 1 ms:
      poll: 1 (0) skip=0 fail=0 redir=10000
      xsk_ring_cons__peek: 1
      0x55881c7ef7a8: rx_desc[9999]->addr=8f110 addr=8f110 comp_addr=8f110 EoP
      rx_hash: 0xFB9BB6A3 with RSS type:0x1
      HW RX-time:   1733923136269470866 (sec:1733923136.2695) delta to User RX-time sec:0.0000 (43.280 usec)
      XDP RX-time:   1733923136269482482 (sec:1733923136.2695) delta to User RX-time sec:0.0000 (31.664 usec)
      No rx_vlan_tci or rx_vlan_proto, err=-95
      0x55881c7ef7a8: ping-pong with csum=ab19 (want 315b) csum_start=34 csum_offset=6
      0x55881c7ef7a8: complete tx idx=9999 addr=f010
      HW TX-complete-time:   1733923136269591637 (sec:1733923136.2696) delta to User TX-complete-time sec:0.0001 (108.571 usec)
      XDP RX-time:   1733923136269482482 (sec:1733923136.2695) delta to User TX-complete-time sec:0.0002 (217.726 usec)
      HW RX-time:   1733923136269470866 (sec:1733923136.2695) delta to HW TX-complete-time sec:0.0001 (120.771 usec)
      0x55881c7ef7a8: complete rx idx=10127 addr=8f110
    
    Signed-off-by: Song Yoong Siang <[email protected]>
    Tested-by: Avigail Dahan <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: accel: fxls8962af: Fix wakeup source leaks on device unbind [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Apr 6 22:01:42 2025 +0200

    iio: accel: fxls8962af: Fix wakeup source leaks on device unbind
    
    [ Upstream commit 0cd34d98dfd4f2b596415b8f12faf7b946613458 ]
    
    Device can be unbound, so driver must also release memory for the wakeup
    source.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: ad7606: protect register access [+ + +]
Author: Angelo Dureghello <[email protected]>
Date:   Mon Feb 10 17:10:57 2025 +0100

    iio: adc: ad7606: protect register access
    
    [ Upstream commit 0f65f59e632d942cccffd12c36036c24eb7037eb ]
    
    Protect register (and bus) access from concurrent
    read / write. Needed in the backend operating mode.
    
    Signed-off-by: Angelo Dureghello <[email protected]>
    Link: https://patch.msgid.link/20250210-wip-bl-ad7606_add_backend_sw_mode-v4-7-160df18b1da7@baylibre.com
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: ad7944: don't use storagebits for sizing [+ + +]
Author: David Lechner <[email protected]>
Date:   Fri Feb 7 14:09:07 2025 -0600

    iio: adc: ad7944: don't use storagebits for sizing
    
    [ Upstream commit 503d20ed8cf7c7b40ec0bd94f53c490c1d91c31b ]
    
    Replace use of storagebits with realbits for determining the number of
    bytes needed for SPI transfers.
    
    When adding SPI offload support, storagebits will always be 32 rather
    than 16 for 16-bit 16-bit chips so we can no longer rely on storagebits
    being the correct size expected by the SPI framework (it always uses
    4 bytes for > 16-bit xfers and 2 bytes for > 8-bit xfers). Instead,
    derive the correct size from realbits since it will always be correct
    even when SPI offloading is used.
    
    Reviewed-by: Jonathan Cameron <[email protected]>
    Reviewed-vy: Nuno Sa <[email protected]>
    Signed-off-by: David Lechner <[email protected]>
    Link: https://patch.msgid.link/20250207-dlech-mainline-spi-engine-offload-2-v8-10-e48a489be48c@baylibre.com
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: qcom-spmi-iadc: Fix wakeup source leaks on device unbind [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Apr 6 22:01:43 2025 +0200

    iio: adc: qcom-spmi-iadc: Fix wakeup source leaks on device unbind
    
    [ Upstream commit ad3764b45c1524872b621d5667a56f6a574501bd ]
    
    Device can be unbound, so driver must also release memory for the wakeup
    source.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: dac: ad3552r-hs: use instruction mode for configuration [+ + +]
Author: Angelo Dureghello <[email protected]>
Date:   Tue Jan 14 16:30:15 2025 +0100

    iio: dac: ad3552r-hs: use instruction mode for configuration
    
    [ Upstream commit 21889245fb538123ac9968eea0018f878b44c8c8 ]
    
    Use "instruction" mode over initial configuration and all other
    non-streaming operations.
    
    DAC boots in streaming mode as default, and the driver is not
    changing this mode.
    
    Instruction r/w is still working because instruction is processed
    from the DAC after chip select is deasserted, this works until
    loop mode is 0 or greater than the instruction size.
    
    All initial operations should be more safely done in instruction
    mode, a mode provided for this.
    
    Signed-off-by: Angelo Dureghello <[email protected]>
    Link: https://patch.msgid.link/20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-6-979402e33545@baylibre.com
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: dac: adi-axi-dac: add bus mode setup [+ + +]
Author: Angelo Dureghello <[email protected]>
Date:   Tue Jan 14 16:30:13 2025 +0100

    iio: dac: adi-axi-dac: add bus mode setup
    
    [ Upstream commit 8ab67b37b81dfaa00a25e95a5f5a020f374848bb ]
    
    The ad354xr requires DSPI mode (2 data lanes) to work in buffering
    mode, so, depending on the DAC type, target TRANSFER_REGISTER
    "MULTI_IO_MODE" bitfield can be set between:
        SPI  (configuration, entire ad35xxr family),
        DSPI (ad354xr),
        QSPI (ad355xr).
    Also bus IO_MODE must be set accordingly.
    
    About removal of AXI_DAC_CUSTOM_CTRL_SYNCED_TRANSFER, according to
    the HDL history the flag has never been used. So looks like the driver
    was including it by mistake or in anticipation for something that was
    never implemented on HDL side.
    
    Current HDL updated documentation confirm it is actually not in use
    anymore and replaced by the IO_MODE bits.
    
    Reviewed-by: Nuno Sa <[email protected]>
    Signed-off-by: Angelo Dureghello <[email protected]>
    Link: https://patch.msgid.link/20250114-wip-bl-ad3552r-axi-v0-iio-testing-carlos-v4-4-979402e33545@baylibre.com
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: imu: st_lsm6dsx: Fix wakeup source leaks on device unbind [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Sun Apr 6 22:01:44 2025 +0200

    iio: imu: st_lsm6dsx: Fix wakeup source leaks on device unbind
    
    [ Upstream commit 4551383e78d59b34eea3f4ed28ad22df99e25d59 ]
    
    Device can be unbound, so driver must also release memory for the wakeup
    source.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Acked-by: Lorenzo Bianconi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ima: process_measurement() needlessly takes inode_lock() on MAY_READ [+ + +]
Author: Frederick Lawler <[email protected]>
Date:   Thu Mar 27 11:09:11 2025 -0500

    ima: process_measurement() needlessly takes inode_lock() on MAY_READ
    
    [ Upstream commit 30d68cb0c37ebe2dc63aa1d46a28b9163e61caa2 ]
    
    On IMA policy update, if a measure rule exists in the policy,
    IMA_MEASURE is set for ima_policy_flags which makes the violation_check
    variable always true. Coupled with a no-action on MAY_READ for a
    FILE_CHECK call, we're always taking the inode_lock().
    
    This becomes a performance problem for extremely heavy read-only workloads.
    Therefore, prevent this only in the case there's no action to be taken.
    
    Signed-off-by: Frederick Lawler <[email protected]>
    Acked-by: Roberto Sassu <[email protected]>
    Signed-off-by: Mimi Zohar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: xpad - add more controllers [+ + +]
Author: Vicki Pfau <[email protected]>
Date:   Tue May 13 15:59:48 2025 -0700

    Input: xpad - add more controllers
    
    commit f0d17942ea3edec191f1c0fc0d2cd7feca8de2f0 upstream.
    
    Adds support for a revision of the Turtle Beach Recon Wired Controller,
    the Turtle Beach Stealth Ultra, and the PowerA Wired Controller.
    
    Signed-off-by: Vicki Pfau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
intel_th: avoid using deprecated page->mapping, index fields [+ + +]
Author: Lorenzo Stoakes <[email protected]>
Date:   Mon Mar 31 13:56:08 2025 +0100

    intel_th: avoid using deprecated page->mapping, index fields
    
    [ Upstream commit 8e553520596bbd5ce832e26e9d721e6a0c797b8b ]
    
    The struct page->mapping, index fields are deprecated and soon to be only
    available as part of a folio.
    
    It is likely the intel_th code which sets page->mapping, index is was
    implemented out of concern that some aspect of the page fault logic may
    encounter unexpected problems should they not.
    
    However, the appropriate interface for inserting kernel-allocated memory is
    vm_insert_page() in a VM_MIXEDMAP. By using the helper function
    vmf_insert_mixed() we can do this with minimal churn in the existing fault
    handler.
    
    By doing so, we bypass the remainder of the faulting logic. The pages are
    still pinned so there is no possibility of anything unexpected being done
    with the pages once established.
    
    It would also be reasonable to pre-map everything on fault, however to
    minimise churn we retain the fault handler.
    
    We also eliminate all code which clears page->mapping on teardown as this
    has now become unnecessary.
    
    The MSU code relies on faulting to function correctly, so is by definition
    dependent on CONFIG_MMU. We avoid spurious reports about compilation
    failure for unsupported platforms by making this requirement explicit in
    Kconfig as part of this change too.
    
    Signed-off-by: Lorenzo Stoakes <[email protected]>
    Acked-by: Alexander Shishkin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/fdinfo: annotate racy sq/cq head/tail reads [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Wed Apr 30 07:17:17 2025 -0600

    io_uring/fdinfo: annotate racy sq/cq head/tail reads
    
    [ Upstream commit f024d3a8ded0d8d2129ae123d7a5305c29ca44ce ]
    
    syzbot complains about the cached sq head read, and it's totally right.
    But we don't need to care, it's just reading fdinfo, and reading the
    CQ or SQ tail/head entries are known racy in that they are just a view
    into that very instant and may of course be outdated by the time they
    are reported.
    
    Annotate both the SQ head and CQ tail read with data_race() to avoid
    this syzbot complaint.
    
    Link: https://lore.kernel.org/io-uring/[email protected]/
    Reported-by: [email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/msg: initialise msg request opcode [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Fri Mar 28 23:11:50 2025 +0000

    io_uring/msg: initialise msg request opcode
    
    [ Upstream commit 9cc0bbdaba2a66ad90bc6ce45163b7745baffe98 ]
    
    It's risky to have msg request opcode set to garbage, so at least
    initialise it to nop. Later we might want to add a user inaccessible
    opcode for such cases.
    
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/9afe650fcb348414a4529d89f52eb8969ba06efd.1743190078.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/net: only retry recv bundle for a full transfer [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Wed May 21 18:51:49 2025 -0600

    io_uring/net: only retry recv bundle for a full transfer
    
    commit 3a08988123c868dbfdd054541b1090fb891fa49e upstream.
    
    If a shorter than assumed transfer was seen, a partial buffer will have
    been filled. For that case it isn't sane to attempt to fill more into
    the bundle before posting a completion, as that will cause a gap in
    the received data.
    
    Check if the iterator has hit zero and only allow to continue a bundle
    operation if that is the case.
    
    Also ensure that for putting finished buffers, only the current transfer
    is accounted. Otherwise too many buffers may be put for a short transfer.
    
    Link: https://github.com/axboe/liburing/issues/1409
    Cc: [email protected]
    Fixes: 7c71a0af81ba ("io_uring/net: improve recv bundles")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring: don't duplicate flushing in io_req_post_cqe [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Thu Apr 24 12:28:39 2025 +0100

    io_uring: don't duplicate flushing in io_req_post_cqe
    
    [ Upstream commit 5e16f1a68d28965c12b6fa227a306fef8a680f84 ]
    
    io_req_post_cqe() sets submit_state.cq_flush so that
    *flush_completions() can take care of batch commiting CQEs. Don't commit
    it twice by using __io_cq_unlock_post().
    
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/41c416660c509cee676b6cad96081274bcb459f3.1745493861.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

io_uring: fix overflow resched cqe reordering [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Sat May 17 13:27:37 2025 +0100

    io_uring: fix overflow resched cqe reordering
    
    [ Upstream commit a7d755ed9ce9738af3db602eb29d32774a180bc7 ]
    
    Leaving the CQ critical section in the middle of a overflow flushing
    can cause cqe reordering since the cache cq pointers are reset and any
    new cqe emitters that might get called in between are not going to be
    forced into io_cqe_cache_refill().
    
    Fixes: eac2ca2d682f9 ("io_uring: check if we need to reschedule during overflow flush")
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/90ba817f1a458f091f355f407de1c911d2b93bbf.1747483784.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

io_uring: sanitise ring params earlier [+ + +]
Author: Pavel Begunkov <[email protected]>
Date:   Fri Jan 31 17:31:03 2025 +0000

    io_uring: sanitise ring params earlier
    
    [ Upstream commit 92a3bac9a57c39728226ab191859c85f5e2829c0 ]
    
    Do all struct io_uring_params validation early on before allocating the
    context. That makes initialisation easier, especially by having fewer
    places where we need to care about partial de-initialisation.
    
    Signed-off-by: Pavel Begunkov <[email protected]>
    Link: https://lore.kernel.org/r/363ba90b83ff78eefdc88b60e1b2c4a39d182247.1738344646.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

io_uring: use IO_REQ_LINK_FLAGS more [+ + +]
Author: Caleb Sander Mateos <[email protected]>
Date:   Tue Feb 11 13:19:56 2025 -0700

    io_uring: use IO_REQ_LINK_FLAGS more
    
    [ Upstream commit 0e8934724f78602635d6e11c97ef48caa693cb65 ]
    
    Replace the 2 instances of REQ_F_LINK | REQ_F_HARDLINK with
    the more commonly used IO_REQ_LINK_FLAGS.
    
    Signed-off-by: Caleb Sander Mateos <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu/amd/pgtbl_v2: Improve error handling [+ + +]
Author: Vasant Hegde <[email protected]>
Date:   Thu Feb 27 16:23:16 2025 +0000

    iommu/amd/pgtbl_v2: Improve error handling
    
    [ Upstream commit 36a1cfd497435ba5e37572fe9463bb62a7b1b984 ]
    
    Return -ENOMEM if v2_alloc_pte() fails to allocate memory.
    
    Signed-off-by: Vasant Hegde <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu/vt-d: Check if SVA is supported when attaching the SVA domain [+ + +]
Author: Jason Gunthorpe <[email protected]>
Date:   Mon Mar 10 10:47:46 2025 +0800

    iommu/vt-d: Check if SVA is supported when attaching the SVA domain
    
    [ Upstream commit 607ba1bb096110751f6aa4b46666e0ba024ab3c2 ]
    
    Attach of a SVA domain should fail if SVA is not supported, move the check
    for SVA support out of IOMMU_DEV_FEAT_SVA and into attach.
    
    Also check when allocating a SVA domain to match other drivers.
    
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Lu Baolu <[email protected]>
    Reviewed-by: Kevin Tian <[email protected]>
    Reviewed-by: Yi Liu <[email protected]>
    Tested-by: Zhangfei Gao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu: Keep dev->iommu state consistent [+ + +]
Author: Robin Murphy <[email protected]>
Date:   Fri Feb 28 15:46:32 2025 +0000

    iommu: Keep dev->iommu state consistent
    
    [ Upstream commit 3832862eb9c4dfa0e80b2522bfaedbc8a43de97d ]
    
    At the moment, if of_iommu_configure() allocates dev->iommu itself via
    iommu_fwspec_init(), then suffers a DT parsing failure, it cleans up the
    fwspec but leaves the empty dev_iommu hanging around. So far this is
    benign (if a tiny bit wasteful), but we'd like to be able to reason
    about dev->iommu having a consistent and unambiguous lifecycle. Thus
    make sure that the of_iommu cleanup undoes precisely whatever it did.
    
    Signed-off-by: Robin Murphy <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Link: https://lore.kernel.org/r/d219663a3f23001f23d520a883ac622d70b4e642.1740753261.git.robin.murphy@arm.com
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommufd: Disallow allocating nested parent domain with fault ID [+ + +]
Author: Yi Liu <[email protected]>
Date:   Wed Feb 26 02:40:12 2025 -0800

    iommufd: Disallow allocating nested parent domain with fault ID
    
    [ Upstream commit 1062d81086156e42878d701b816d2f368b53a77c ]
    
    Allocating a domain with a fault ID indicates that the domain is faultable.
    However, there is a gap for the nested parent domain to support PRI. Some
    hardware lacks the capability to distinguish whether PRI occurs at stage 1
    or stage 2. This limitation may require software-based page table walking
    to resolve. Since no in-tree IOMMU driver currently supports this
    functionality, it is disallowed. For more details, refer to the related
    discussion at [1].
    
    [1] https://lore.kernel.org/linux-iommu/[email protected]/
    
    Link: https://patch.msgid.link/r/[email protected]
    Suggested-by: Lu Baolu <[email protected]>
    Signed-off-by: Yi Liu <[email protected]>
    Reviewed-by: Kevin Tian <[email protected]>
    Reviewed-by: Lu Baolu <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iommufd: Extend IOMMU_GET_HW_INFO to report PASID capability [+ + +]
Author: Yi Liu <[email protected]>
Date:   Fri Mar 21 11:01:42 2025 -0700

    iommufd: Extend IOMMU_GET_HW_INFO to report PASID capability
    
    [ Upstream commit 803f97298e7de9242eb677a1351dcafbbcc9117e ]
    
    PASID usage requires PASID support in both device and IOMMU. Since the
    iommu drivers always enable the PASID capability for the device if it
    is supported, this extends the IOMMU_GET_HW_INFO to report the PASID
    capability to userspace. Also, enhances the selftest accordingly.
    
    Link: https://patch.msgid.link/r/[email protected]
    Cc: Bjorn Helgaas <[email protected]>
    Reviewed-by: Kevin Tian <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Tested-by: Zhangfei Gao <[email protected]> #aarch64 platform
    Tested-by: Nicolin Chen <[email protected]>
    Signed-off-by: Yi Liu <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Fri Feb 7 16:24:58 2025 +0900

    ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure().
    
    [ Upstream commit 5a1ccffd30a08f5a2428cd5fbb3ab03e8eb6c66d ]
    
    The following patch will not set skb->sk from VRF path.
    
    Let's fetch net from fib_rule->fr_net instead of sock_net(skb->sk)
    in fib[46]_rule_configure().
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Tested-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv4: fib: Hold rtnl_net_lock() in ip_rt_ioctl(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Feb 27 20:23:26 2025 -0800

    ipv4: fib: Hold rtnl_net_lock() in ip_rt_ioctl().
    
    [ Upstream commit c0ebe1cdc2cff0dee092a67f2c50377bb5fcf43d ]
    
    ioctl(SIOCADDRT/SIOCDELRT) calls ip_rt_ioctl() to add/remove a route in
    the netns of the specified socket.
    
    Let's hold rtnl_net_lock() there.
    
    Note that rtentry_to_fib_config() can be called without rtnl_net_lock()
    if we convert rtentry.dev handling to RCU later.
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Feb 27 20:23:27 2025 -0800

    ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config().
    
    [ Upstream commit 254ba7e6032d3fc738050d500b0c1d8197af90ca ]
    
    fib_valid_key_len() is called in the beginning of fib_table_insert()
    or fib_table_delete() to check if the prefix length is valid.
    
    fib_table_insert() and fib_table_delete() are called from 3 paths
    
      - ip_rt_ioctl()
      - inet_rtm_newroute() / inet_rtm_delroute()
      - fib_magic()
    
    In the first ioctl() path, rtentry_to_fib_config() checks the prefix
    length with bad_mask().  Also, fib_magic() always passes the correct
    prefix: 32 or ifa->ifa_prefixlen, which is already validated.
    
    Let's move fib_valid_key_len() to the rtnetlink path, rtm_to_fib_config().
    
    While at it, 2 direct returns in rtm_to_fib_config() are changed to
    goto to match other places in the same function
    
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Tue Feb 4 22:36:54 2025 +0100

    ipv4: ip_gre: Fix set but not used warning in ipgre_err() if IPv4-only
    
    [ Upstream commit 50f37fc2a39c4a8cc4813629b4cf239b71c6097d ]
    
    if CONFIG_NET_IPGRE is enabled, but CONFIG_IPV6 is disabled:
    
        net/ipv4/ip_gre.c: In function ‘ipgre_err’:
        net/ipv4/ip_gre.c:144:22: error: variable ‘data_len’ set but not used [-Werror=unused-but-set-variable]
          144 |         unsigned int data_len = 0;
              |                      ^~~~~~~~
    
    Fix this by moving all data_len processing inside the IPV6-only section
    that uses its result.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/d09113cfe2bfaca02f3dddf832fb5f48dd20958b.1738704881.git.geert@linux-m68k.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ipv6: remove leftover ip6 cookie initializer [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Thu Mar 6 22:34:08 2025 -0500

    ipv6: remove leftover ip6 cookie initializer
    
    [ Upstream commit 54580ccdd8a9c6821fd6f72171d435480867e4c3 ]
    
    As of the blamed commit ipc6.dontfrag is always initialized at the
    start of udpv6_sendmsg, by ipcm6_init_sk, to either 0 or 1.
    
    Later checks against -1 are no longer needed and the branches are now
    dead code.
    
    The blamed commit had removed those branches. But I had overlooked
    this one case.
    
    UDP has both a lockless fast path and a slower path for corked
    requests. This branch remained in the fast path.
    
    Fixes: 096208592b09 ("ipv6: replace ipcm6_init calls with ipcm6_init_sk")
    Signed-off-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: save dontfrag in cork [+ + +]
Author: Willem de Bruijn <[email protected]>
Date:   Thu Mar 6 22:34:09 2025 -0500

    ipv6: save dontfrag in cork
    
    [ Upstream commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a ]
    
    When spanning datagram construction over multiple send calls using
    MSG_MORE, per datagram settings are configured on the first send.
    
    That is when ip(6)_setup_cork stores these settings for subsequent use
    in __ip(6)_append_data and others.
    
    The only flag that escaped this was dontfrag. As a result, a datagram
    could be constructed with df=0 on the first sendmsg, but df=1 on a
    next. Which is what cmsg_ip.sh does in an upcoming MSG_MORE test in
    the "diff" scenario.
    
    Changing datagram conditions in the middle of constructing an skb
    makes this already complex code path even more convoluted. It is here
    unintentional. Bring this flag in line with expected sockopt/cmsg
    behavior.
    
    And stop passing ipc6 to __ip6_append_data, to avoid such issues
    in the future. This is already the case for __ip_append_data.
    
    inet6_cork had a 6 byte hole, so the 1B flag has no impact.
    
    Signed-off-by: Willem de Bruijn <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
irqchip/riscv-aplic: Add support for hart indexes [+ + +]
Author: Vladimir Kondratiev <[email protected]>
Date:   Wed Jan 29 11:16:37 2025 +0200

    irqchip/riscv-aplic: Add support for hart indexes
    
    [ Upstream commit b93afe8a3ac53ae52296d65acfaa9c5f582a48cc ]
    
    RISC-V APLIC specification defines "hart index" in:
    
      https://github.com/riscv/riscv-aia
    
    Within a given interrupt domain, each of the domain’s harts has a unique
    index number in the range 0 to 2^14 − 1 (= 16,383). The index number a
    domain associates with a hart may or may not have any relationship to the
    unique hart identifier (“hart ID”) that the RISC-V Privileged Architecture
    assigns to the hart. Two different interrupt domains may employ entirely
    different index numbers for the same set of harts.
    
    Further, this document says in "4.5 Memory-mapped control region for an
    interrupt domain":
    
    The array of IDC structures may include some for potential hart index
    numbers that are not actual hart index numbers in the domain. For example,
    the first IDC structure is always for hart index 0, but 0 is not
    necessarily a valid index number for any hart in the domain.
    
    Support arbitrary hart indices specified in an optional APLIC property
    "riscv,hart-indexes" which is specified as an array of u32 elements, one
    per interrupt target. If this property is not specified, fallback to use
    logical hart indices within the domain.
    
    Signed-off-by: Vladimir Kondratiev <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Anup Patel <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
irqchip/riscv-imsic: Separate next and previous pointers in IMSIC vector [+ + +]
Author: Anup Patel <[email protected]>
Date:   Mon Feb 17 14:26:53 2025 +0530

    irqchip/riscv-imsic: Separate next and previous pointers in IMSIC vector
    
    [ Upstream commit 0f67911e821c67ecfccc365a2103ce276a9a56fe ]
    
    Currently, there is only one "move" pointer in struct imsic_vector so
    during vector movement the old vector points to the new vector and new
    vector points to itself.
    
    To support forced cleanup of the old vector, add separate "move_next" and
    "move_prev" pointers to struct imsic_vector, where during vector movement
    the "move_next" pointer of the old vector points to the new vector and the
    "move_prev" pointer of the new vector points to the old vector.
    
    Both "move_next" and "move_prev" pointers are cleared separately by
    __imsic_local_sync() with a restriction that "move_prev" on the new
    CPU is cleared only after the old CPU has cleared "move_next".
    
    Signed-off-by: Anup Patel <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

irqchip/riscv-imsic: Set irq_set_affinity() for IMSIC base [+ + +]
Author: Andrew Jones <[email protected]>
Date:   Mon Feb 17 14:26:47 2025 +0530

    irqchip/riscv-imsic: Set irq_set_affinity() for IMSIC base
    
    [ Upstream commit 999f458c1771354371ba367dd84f55f9a62a4233 ]
    
    The IMSIC driver assigns the IMSIC domain specific imsic_irq_set_affinity()
    callback to the per device leaf MSI domain. That's a layering violation as
    it is called with the leaf domain data and not with the IMSIC domain
    data. This prevents moving the IMSIC driver to the common MSI library which
    uses the generic msi_domain_set_affinity() callback for device MSI domains.
    
    Instead of using imsic_irq_set_affinity() for leaf MSI domains, use
    imsic_irq_set_affinity() for the non-leaf IMSIC base domain and use
    irq_chip_set_affinity_parent() for leaf MSI domains.
    
    [ tglx: Massaged change log ]
    
    Signed-off-by: Andrew Jones <[email protected]>
    Signed-off-by: Anup Patel <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

irqchip/riscv-imsic: Start local sync timer on correct CPU [+ + +]
Author: Andrew Bresticker <[email protected]>
Date:   Wed May 14 10:13:20 2025 -0700

    irqchip/riscv-imsic: Start local sync timer on correct CPU
    
    [ Upstream commit 08fb624802d8786253994d8ebdbbcdaa186f04f5 ]
    
    When starting the local sync timer to synchronize the state of a remote
    CPU it should be added on the CPU to be synchronized, not the initiating
    CPU. This results in interrupt delivery being delayed until the timer
    eventually runs (due to another mask/unmask/migrate operation) on the
    target CPU.
    
    Fixes: 0f67911e821c ("irqchip/riscv-imsic: Separate next and previous pointers in IMSIC vector")
    Signed-off-by: Andrew Bresticker <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Anup Patel <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ixgbe: add support for thermal sensor event reception [+ + +]
Author: Jedrzej Jagielski <[email protected]>
Date:   Mon Mar 10 10:44:59 2025 -0700

    ixgbe: add support for thermal sensor event reception
    
    [ Upstream commit affead2d904e8f82c0b89e23b3835242eb8c3e1a ]
    
    E610 NICs unlike the previous devices utilising ixgbe driver
    are notified in the case of overheating by the FW ACI event.
    
    In event of overheat when threshold is exceeded, FW suspends all
    traffic and sends overtemp event to the driver. Then driver
    logs appropriate message and disables the adapter instance.
    The card remains in that state until the platform is rebooted.
    
    This approach is a solution to the fact current version of the
    E610 FW doesn't support reading thermal sensor data by the
    SW. So give to user at least any info that overtemp event
    has occurred, without interface disappearing from the OS
    without any note.
    
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Mateusz Polchlopek <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Jedrzej Jagielski <[email protected]>
    Tested-by: Jeremiah Lokan <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
jbd2: Avoid long replay times due to high number or revoke blocks [+ + +]
Author: Jan Kara <[email protected]>
Date:   Tue Jan 21 15:09:26 2025 +0100

    jbd2: Avoid long replay times due to high number or revoke blocks
    
    [ Upstream commit a399af4e3b1ab2c5d83292d4487c4d18de551659 ]
    
    Some users are reporting journal replay takes a long time when there is
    excessive number of revoke blocks in the journal. Reported times are
    like:
    
    1048576 records - 95 seconds
    2097152 records - 580 seconds
    
    The problem is that hash chains in the revoke table gets excessively
    long in these cases. Fix the problem by sizing the revoke table
    appropriately before the revoke pass.
    
    Thanks to Alexey Zhuravlev <[email protected]> for benchmarking the
    patch with large numbers of revoke blocks [1].
    
    [1] https://lore.kernel.org/all/[email protected]
    
    Signed-off-by: Jan Kara <[email protected]>
    Reviewed-by: Andreas Dilger <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

jbd2: do not try to recover wiped journal [+ + +]
Author: Jan Kara <[email protected]>
Date:   Thu Feb 6 10:46:59 2025 +0100

    jbd2: do not try to recover wiped journal
    
    [ Upstream commit a662f3c03b754e1f97a2781fa242e95bdb139798 ]
    
    If a journal is wiped, we will set journal->j_tail to 0. However if
    'write' argument is not set (as it happens for read-only device or for
    ocfs2), the on-disk superblock is not updated accordingly and thus
    jbd2_journal_recover() cat try to recover the wiped journal. Fix the
    check in jbd2_journal_recover() to use journal->j_tail for checking
    empty journal instead.
    
    Signed-off-by: Jan Kara <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kasan: avoid sleepable page allocation from atomic context [+ + +]
Author: Alexander Gordeev <[email protected]>
Date:   Thu May 15 15:55:38 2025 +0200

    kasan: avoid sleepable page allocation from atomic context
    
    commit b6ea95a34cbd014ab6ade4248107b86b0aaf2d6c upstream.
    
    apply_to_pte_range() enters the lazy MMU mode and then invokes
    kasan_populate_vmalloc_pte() callback on each page table walk iteration.
    However, the callback can go into sleep when trying to allocate a single
    page, e.g.  if an architecutre disables preemption on lazy MMU mode enter.
    
    On s390 if make arch_enter_lazy_mmu_mode() -> preempt_enable() and
    arch_leave_lazy_mmu_mode() -> preempt_disable(), such crash occurs:
    
    [    0.663336] BUG: sleeping function called from invalid context at ./include/linux/sched/mm.h:321
    [    0.663348] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2, name: kthreadd
    [    0.663358] preempt_count: 1, expected: 0
    [    0.663366] RCU nest depth: 0, expected: 0
    [    0.663375] no locks held by kthreadd/2.
    [    0.663383] Preemption disabled at:
    [    0.663386] [<0002f3284cbb4eda>] apply_to_pte_range+0xfa/0x4a0
    [    0.663405] CPU: 0 UID: 0 PID: 2 Comm: kthreadd Not tainted 6.15.0-rc5-gcc-kasan-00043-gd76bb1ebb558-dirty #162 PREEMPT
    [    0.663408] Hardware name: IBM 3931 A01 701 (KVM/Linux)
    [    0.663409] Call Trace:
    [    0.663410]  [<0002f3284c385f58>] dump_stack_lvl+0xe8/0x140
    [    0.663413]  [<0002f3284c507b9e>] __might_resched+0x66e/0x700
    [    0.663415]  [<0002f3284cc4f6c0>] __alloc_frozen_pages_noprof+0x370/0x4b0
    [    0.663419]  [<0002f3284ccc73c0>] alloc_pages_mpol+0x1a0/0x4a0
    [    0.663421]  [<0002f3284ccc8518>] alloc_frozen_pages_noprof+0x88/0xc0
    [    0.663424]  [<0002f3284ccc8572>] alloc_pages_noprof+0x22/0x120
    [    0.663427]  [<0002f3284cc341ac>] get_free_pages_noprof+0x2c/0xc0
    [    0.663429]  [<0002f3284cceba70>] kasan_populate_vmalloc_pte+0x50/0x120
    [    0.663433]  [<0002f3284cbb4ef8>] apply_to_pte_range+0x118/0x4a0
    [    0.663435]  [<0002f3284cbc7c14>] apply_to_pmd_range+0x194/0x3e0
    [    0.663437]  [<0002f3284cbc99be>] __apply_to_page_range+0x2fe/0x7a0
    [    0.663440]  [<0002f3284cbc9e88>] apply_to_page_range+0x28/0x40
    [    0.663442]  [<0002f3284ccebf12>] kasan_populate_vmalloc+0x82/0xa0
    [    0.663445]  [<0002f3284cc1578c>] alloc_vmap_area+0x34c/0xc10
    [    0.663448]  [<0002f3284cc1c2a6>] __get_vm_area_node+0x186/0x2a0
    [    0.663451]  [<0002f3284cc1e696>] __vmalloc_node_range_noprof+0x116/0x310
    [    0.663454]  [<0002f3284cc1d950>] __vmalloc_node_noprof+0xd0/0x110
    [    0.663457]  [<0002f3284c454b88>] alloc_thread_stack_node+0xf8/0x330
    [    0.663460]  [<0002f3284c458d56>] dup_task_struct+0x66/0x4d0
    [    0.663463]  [<0002f3284c45be90>] copy_process+0x280/0x4b90
    [    0.663465]  [<0002f3284c460940>] kernel_clone+0xd0/0x4b0
    [    0.663467]  [<0002f3284c46115e>] kernel_thread+0xbe/0xe0
    [    0.663469]  [<0002f3284c4e440e>] kthreadd+0x50e/0x7f0
    [    0.663472]  [<0002f3284c38c04a>] __ret_from_fork+0x8a/0xf0
    [    0.663475]  [<0002f3284ed57ff2>] ret_from_fork+0xa/0x38
    
    Instead of allocating single pages per-PTE, bulk-allocate the shadow
    memory prior to applying kasan_populate_vmalloc_pte() callback on a page
    range.
    
    Link: https://lkml.kernel.org/r/c61d3560297c93ed044f0b1af085610353a06a58.1747316918.git.agordeev@linux.ibm.com
    Fixes: 3c5c3cfb9ef4 ("kasan: support backing vmalloc space with real shadow memory")
    Signed-off-by: Alexander Gordeev <[email protected]>
    Suggested-by: Andrey Ryabinin <[email protected]>
    Reviewed-by: Harry Yoo <[email protected]>
    Cc: Daniel Axtens <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kbuild: fix argument parsing in scripts/config [+ + +]
Author: Seyediman Seyedarab <[email protected]>
Date:   Sat Mar 1 17:21:37 2025 -0500

    kbuild: fix argument parsing in scripts/config
    
    [ Upstream commit f757f6011c92b5a01db742c39149bed9e526478f ]
    
    The script previously assumed --file was always the first argument,
    which caused issues when it appeared later. This patch updates the
    parsing logic to scan all arguments to find --file, sets the config
    file correctly, and resets the argument list with the remaining
    commands.
    
    It also fixes --refresh to respect --file by passing KCONFIG_CONFIG=$FN
    to make oldconfig.
    
    Signed-off-by: Seyediman Seyedarab <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kbuild: Properly disable -Wunterminated-string-initialization for clang [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed Apr 30 15:56:34 2025 -0700

    kbuild: Properly disable -Wunterminated-string-initialization for clang
    
    commit 4f79eaa2ceac86a0e0f304b0bab556cca5bf4f30 upstream.
    
    Clang and GCC have different behaviors around disabling warnings
    included in -Wall and -Wextra and the order in which flags are
    specified, which is exposed by clang's new support for
    -Wunterminated-string-initialization.
    
      $ cat test.c
      const char foo[3] = "FOO";
      const char bar[3] __attribute__((__nonstring__)) = "BAR";
    
      $ clang -fsyntax-only -Wextra test.c
      test.c:1:21: warning: initializer-string for character array is too long, array size is 3 but initializer has size 4 (including the null terminating character); did you mean to use the 'nonstring' attribute? [-Wunterminated-string-initialization]
          1 | const char foo[3] = "FOO";
            |                     ^~~~~
      $ clang -fsyntax-only -Wextra -Wno-unterminated-string-initialization test.c
      $ clang -fsyntax-only -Wno-unterminated-string-initialization -Wextra test.c
      test.c:1:21: warning: initializer-string for character array is too long, array size is 3 but initializer has size 4 (including the null terminating character); did you mean to use the 'nonstring' attribute? [-Wunterminated-string-initialization]
          1 | const char foo[3] = "FOO";
            |                     ^~~~~
    
      $ gcc -fsyntax-only -Wextra test.c
      test.c:1:21: warning: initializer-string for array of ‘char’ truncates NUL terminator but destination lacks ‘nonstring’ attribute (4 chars into 3 available) [-Wunterminated-string-initialization]
          1 | const char foo[3] = "FOO";
            |                     ^~~~~
      $ gcc -fsyntax-only -Wextra -Wno-unterminated-string-initialization test.c
      $ gcc -fsyntax-only -Wno-unterminated-string-initialization -Wextra test.c
    
    Move -Wextra up right below -Wall in Makefile.extrawarn to ensure these
    flags are at the beginning of the warning options list. Move the couple
    of warning options that have been added to the main Makefile since
    commit e88ca24319e4 ("kbuild: consolidate warning flags in
    scripts/Makefile.extrawarn") to scripts/Makefile.extrawarn after -Wall /
    -Wextra to ensure they get properly disabled for all compilers.
    
    Fixes: 9d7a0577c9db ("gcc-15: disable '-Wunterminated-string-initialization' entirely for now")
    Link: https://github.com/llvm/llvm-project/issues/10359
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kconfig: do not clear SYMBOL_VALID when reading include/config/auto.conf [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sat Feb 8 03:41:55 2025 +0900

    kconfig: do not clear SYMBOL_VALID when reading include/config/auto.conf
    
    [ Upstream commit 226ac19c217f24f0927d0a73cf9ee613971a188d ]
    
    When conf_read_simple() is called with S_DEF_AUTO, it is meant to read
    previous symbol values from include/config/auto.conf to determine which
    include/config/* files should be touched.
    
    This process should not modify the current symbol status in any way.
    However, conf_touch_deps() currently invalidates all symbol values and
    recalculates them, which is totally unneeded.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: merge_config: use an empty file as initfile [+ + +]
Author: Daniel Gomez <[email protected]>
Date:   Fri Mar 28 14:28:37 2025 +0000

    kconfig: merge_config: use an empty file as initfile
    
    [ Upstream commit a26fe287eed112b4e21e854f173c8918a6a8596d ]
    
    The scripts/kconfig/merge_config.sh script requires an existing
    $INITFILE (or the $1 argument) as a base file for merging Kconfig
    fragments. However, an empty $INITFILE can serve as an initial starting
    point, later referenced by the KCONFIG_ALLCONFIG Makefile variable
    if -m is not used. This variable can point to any configuration file
    containing preset config symbols (the merged output) as stated in
    Documentation/kbuild/kconfig.rst. When -m is used $INITFILE will
    contain just the merge output requiring the user to run make (i.e.
    KCONFIG_ALLCONFIG=<$INITFILE> make <allnoconfig/alldefconfig> or make
    olddefconfig).
    
    Instead of failing when `$INITFILE` is missing, create an empty file and
    use it as the starting point for merges.
    
    Signed-off-by: Daniel Gomez <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kernel/fork: only call untrack_pfn_clear() on VMAs duplicated for fork() [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Tue Apr 22 16:49:42 2025 +0200

    kernel/fork: only call untrack_pfn_clear() on VMAs duplicated for fork()
    
    [ Upstream commit e9f180d7cfde23b9f8eebd60272465176373ab2c ]
    
    Not intuitive, but vm_area_dup() located in kernel/fork.c is not only used
    for duplicating VMAs during fork(), but also for duplicating VMAs when
    splitting VMAs or when mremap()'ing them.
    
    VM_PFNMAP mappings can at least get ordinarily mremap()'ed (no change in
    size) and apparently also shrunk during mremap(), which implies
    duplicating the VMA in __split_vma() first.
    
    In case of ordinary mremap() (no change in size), we first duplicate the
    VMA in copy_vma_and_data()->copy_vma() to then call untrack_pfn_clear() on
    the old VMA: we effectively move the VM_PAT reservation.  So the
    untrack_pfn_clear() call on the new VMA duplicating is wrong in that
    context.
    
    Splitting of VMAs seems problematic, because we don't duplicate/adjust the
    reservation when splitting the VMA.  Instead, in memtype_erase() -- called
    during zapping/munmap -- we shrink a reservation in case only the end
    address matches: Assume we split a VMA into A and B, both would share a
    reservation until B is unmapped.
    
    So when unmapping B, the reservation would be updated to cover only A.
    When unmapping A, we would properly remove the now-shrunk reservation.
    That scenario describes the mremap() shrinking (old_size > new_size),
    where we split + unmap B, and the untrack_pfn_clear() on the new VMA when
    is wrong.
    
    What if we manage to split a VM_PFNMAP VMA into A and B and unmap A first?
    It would be broken because we would never free the reservation.  Likely,
    there are ways to trigger such a VMA split outside of mremap().
    
    Affecting other VMA duplication was not intended, vm_area_dup() being used
    outside of kernel/fork.c was an oversight.  So let's fix that for; how to
    handle VMA splits better should be investigated separately.
    
    With a simple reproducer that uses mprotect() to split such a VMA I can
    trigger
    
    x86/PAT: pat_mremap:26448 freeing invalid memtype [mem 0x00000000-0x00000fff]
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: dc84bc2aba85 ("x86/mm/pat: Fix VM_PAT handling when fork() fails in copy_page_range()")
    Signed-off-by: David Hildenbrand <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ksmbd: fix stream write failure [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Thu May 8 16:46:11 2025 +0900

    ksmbd: fix stream write failure
    
    [ Upstream commit 1f4bbedd4e5a69b01cde2cc21d01151ab2d0884f ]
    
    If there is no stream data in file, v_len is zero.
    So, If position(*pos) is zero, stream write will fail
    due to stream write position validation check.
    This patch reorganize stream write position validation.
    
    Fixes: 0ca6df4f40cf ("ksmbd: prevent out-of-bounds stream writes by validating *pos")
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kunit: tool: Fix bug in parsing test plan [+ + +]
Author: Rae Moar <[email protected]>
Date:   Thu Mar 13 19:27:13 2025 +0000

    kunit: tool: Fix bug in parsing test plan
    
    [ Upstream commit 1d4c06d51963f89f67c7b75d5c0c34e9d1bb2ae6 ]
    
    A bug was identified where the KTAP below caused an infinite loop:
    
     TAP version 13
     ok 4 test_case
     1..4
    
    The infinite loop was caused by the parser not parsing a test plan
    if following a test result line.
    
    Fix this bug by parsing test plan line to avoid the infinite loop.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rae Moar <[email protected]>
    Reviewed-by: David Gow <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kunit: tool: Use qboot on QEMU x86_64 [+ + +]
Author: Brendan Jackman <[email protected]>
Date:   Fri Jan 24 11:01:42 2025 +0000

    kunit: tool: Use qboot on QEMU x86_64
    
    [ Upstream commit 08fafac4c9f289a9d9a22d838921e4b3eb22c664 ]
    
    As noted in [0], SeaBIOS (QEMU default) makes a mess of the terminal,
    qboot does not.
    
    It turns out this is actually useful with kunit.py, since the user is
    exposed to this issue if they set --raw_output=all.
    
    qboot is also faster than SeaBIOS, but it's is marginal for this
    usecase.
    
    [0] https://lore.kernel.org/all/CA+i-1C0wYb-gZ8Mwh3WSVpbk-LF-Uo+njVbASJPe1WXDURoV7A@mail.gmail.com/
    
    Both SeaBIOS and qboot are x86-specific.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Brendan Jackman <[email protected]>
    Reviewed-by: David Gow <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
leds: Kconfig: leds-st1202: Add select for required LEDS_TRIGGER_PATTERN [+ + +]
Author: Manuel Fombuena <[email protected]>
Date:   Wed Feb 26 17:12:50 2025 +0000

    leds: Kconfig: leds-st1202: Add select for required LEDS_TRIGGER_PATTERN
    
    [ Upstream commit be2f92844d0f8cb059cb6958c6d9582d381ca68e ]
    
    leds-st1202 requires the LED Pattern Trigger (LEDS_TRIGGER_PATTERN), which
    is not selected when LED Trigger support is (LEDS_TRIGGERS).
    
    To reproduce this:
    
    - make menuconfig KCONFIG_CONFIG=
    - select LEDS_ST1202 dependencies OF, I2C and LEDS_CLASS.
    - select LEDS_ST1202
    - LEDS_TRIGGERS is selected but LEDS_TRIGGER_PATTERN isn't.
    
    The absence of LEDS_TRIGGER_PATTERN explicitly required can lead to builds
    in which LEDS_ST1202 is selected while LEDS_TRIGGER_PATTERN isn't. The direct
    result of that would be that /sys/class/leds/<led>/hw_pattern wouldn't be
    available and there would be no way of interacting with the driver and
    hardware from user space.
    
    Add select LEDS_TRIGGER_PATTERN to Kconfig to meet the requirement and
    indirectly document it as well.
    
    Signed-off-by: Manuel Fombuena <[email protected]>
    Link: https://lore.kernel.org/r/CWLP123MB5473F4DF3A668F7DD057A280C5C22@CWLP123MB5473.GBRP123.PROD.OUTLOOK.COM
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

leds: leds-st1202: Initialize hardware before DT node child operations [+ + +]
Author: Manuel Fombuena <[email protected]>
Date:   Wed Feb 26 17:06:40 2025 +0000

    leds: leds-st1202: Initialize hardware before DT node child operations
    
    [ Upstream commit a17d9e736ddd78323e77d3066c1e86371a99023c ]
    
    Arguably, there are more chances of errors occurring during the
    initialization of the hardware, so this should complete successfully
    before the devicetree node's children are initialized.
    
    st1202_dt_init() fills the led_classdev struct.
    
    st1202_setup() initializes the hardware. Specifically, resets the chip,
    enables its phase-shift delay feature, enables the device and disables all
    the LEDs channels. All that writing to registers, with no input from
    st1202_dt_init().
    
    Real-world testing corroborates that calling st1202_setup() before
    st1202_dt_init() doesn't cause any issue during initialization.
    
    Switch the order of st1202_dt_init() and st1202_setup() to ensure the
    hardware is correctly initialized before the led_classdev struct is
    filled.
    
    Signed-off-by: Manuel Fombuena <[email protected]>
    Link: https://lore.kernel.org/r/CWLP123MB54731877A8DC54EDD33F0229C5C22@CWLP123MB5473.GBRP123.PROD.OUTLOOK.COM
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

leds: pwm-multicolor: Add check for fwnode_property_read_u32 [+ + +]
Author: Yuanjun Gong <[email protected]>
Date:   Sun Feb 23 20:14:59 2025 +0800

    leds: pwm-multicolor: Add check for fwnode_property_read_u32
    
    [ Upstream commit 6d91124e7edc109f114b1afe6d00d85d0d0ac174 ]
    
    Add a check to the return value of fwnode_property_read_u32()
    in case it fails.
    
    Signed-off-by: Yuanjun Gong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

leds: trigger: netdev: Configure LED blink interval for HW offload [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Mon Jan 20 12:36:53 2025 +0100

    leds: trigger: netdev: Configure LED blink interval for HW offload
    
    [ Upstream commit c629c972b310af41e9e072febb6dae9a299edde6 ]
    
    In case a PHY LED implements .blink_set callback to set LED blink
    interval, call it even if .hw_control is already set, as that LED
    blink interval likely controls the blink rate of that HW offloaded
    LED. For PHY LEDs, that can be their activity blinking interval.
    
    The software blinking is not affected by this change.
    
    With this change, the LED interval setting looks something like this:
    $ echo netdev > /sys/class/leds/led:green:lan/trigger
    $ echo 1 > /sys/class/leds/led:green:lan/brightness
    $ echo 250 > /sys/class/leds/led:green:lan/interval
    
    Signed-off-by: Marek Vasut <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libbpf: Fix out-of-bound read [+ + +]
Author: Nandakumar Edamana <[email protected]>
Date:   Sat Feb 22 02:31:11 2025 +0530

    libbpf: Fix out-of-bound read
    
    [ Upstream commit 236d3910117e9f97ebf75e511d8bcc950f1a4e5f ]
    
    In `set_kcfg_value_str`, an untrusted string is accessed with the assumption
    that it will be at least two characters long due to the presence of checks for
    opening and closing quotes. But the check for the closing quote
    (value[len - 1] != '"') misses the fact that it could be checking the opening
    quote itself in case of an invalid input that consists of just the opening
    quote.
    
    This commit adds an explicit check to make sure the string is at least two
    characters long.
    
    Signed-off-by: Nandakumar Edamana <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
libnvdimm/labels: Fix divide error in nd_label_data_init() [+ + +]
Author: Robert Richter <[email protected]>
Date:   Thu Mar 20 12:22:22 2025 +0100

    libnvdimm/labels: Fix divide error in nd_label_data_init()
    
    [ Upstream commit ef1d3455bbc1922f94a91ed58d3d7db440652959 ]
    
    If a faulty CXL memory device returns a broken zero LSA size in its
    memory device information (Identify Memory Device (Opcode 4000h), CXL
    spec. 3.1, 8.2.9.9.1.1), a divide error occurs in the libnvdimm
    driver:
    
     Oops: divide error: 0000 [#1] PREEMPT SMP NOPTI
     RIP: 0010:nd_label_data_init+0x10e/0x800 [libnvdimm]
    
    Code and flow:
    
    1) CXL Command 4000h returns LSA size = 0
    2) config_size is assigned to zero LSA size (CXL pmem driver):
    
    drivers/cxl/pmem.c:             .config_size = mds->lsa_size,
    
    3) max_xfer is set to zero (nvdimm driver):
    
    drivers/nvdimm/label.c: max_xfer = min_t(size_t, ndd->nsarea.max_xfer, config_size);
    
    4) A subsequent DIV_ROUND_UP() causes a division by zero:
    
    drivers/nvdimm/label.c: /* Make our initial read size a multiple of max_xfer size */
    drivers/nvdimm/label.c: read_size = min(DIV_ROUND_UP(read_size, max_xfer) * max_xfer,
    drivers/nvdimm/label.c-                 config_size);
    
    Fix this by checking the config size parameter by extending an
    existing check.
    
    Signed-off-by: Robert Richter <[email protected]>
    Reviewed-by: Pankaj Gupta <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.14.9 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu May 29 11:14:09 2025 +0200

    Linux 6.14.9
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Christian Heusel <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Markus Reichelt <[email protected]>
    Tested-by: Justin M. Forbes <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
llc: fix data loss when reading from a socket in llc_ui_recvmsg() [+ + +]
Author: Ilia Gavrilov <[email protected]>
Date:   Thu May 15 12:20:15 2025 +0000

    llc: fix data loss when reading from a socket in llc_ui_recvmsg()
    
    commit 239af1970bcb039a1551d2c438d113df0010c149 upstream.
    
    For SOCK_STREAM sockets, if user buffer size (len) is less
    than skb size (skb->len), the remaining data from skb
    will be lost after calling kfree_skb().
    
    To fix this, move the statement for partial reading
    above skb deletion.
    
    Found by InfoTeCS on behalf of Linux Verification Center (linuxtesting.org)
    
    Fixes: 30a584d944fb ("[LLX]: SOCK_DGRAM interface fixes")
    Cc: [email protected]
    Signed-off-by: Ilia Gavrilov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lockdep: Fix wait context check on softirq for PREEMPT_RT [+ + +]
Author: Ryo Takakura <[email protected]>
Date:   Fri Mar 21 07:33:22 2025 -0700

    lockdep: Fix wait context check on softirq for PREEMPT_RT
    
    [ Upstream commit 61c39d8c83e2077f33e0a2c8980a76a7f323f0ce ]
    
    Since:
    
      0c1d7a2c2d32 ("lockdep: Remove softirq accounting on PREEMPT_RT.")
    
    the wait context test for mutex usage within "in softirq context" fails
    as it references @softirq_context:
    
        | wait context tests |
        --------------------------------------------------------------------------
                                       | rcu  | raw  | spin |mutex |
        --------------------------------------------------------------------------
                     in hardirq context:  ok  |  ok  |  ok  |  ok  |
      in hardirq context (not threaded):  ok  |  ok  |  ok  |  ok  |
                     in softirq context:  ok  |  ok  |  ok  |FAILED|
    
    As a fix, add lockdep map for BH disabled section. This fixes the
    issue by letting us catch cases when local_bh_disable() gets called
    with preemption disabled where local_lock doesn't get acquired.
    In the case of "in softirq context" selftest, local_bh_disable() was
    being called with preemption disable as it's early in the boot.
    
    [ boqun: Move the lockdep annotations into __local_bh_*() to avoid false
             positives because of unpaired local_bh_disable() reported by
             Borislav Petkov and Peter Zijlstra, and make bh_lock_map
             only exist for PREEMPT_RT. ]
    
    [ mingo: Restored authorship and improved the bh_lock_map definition. ]
    
    Signed-off-by: Ryo Takakura <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
loop: check in LO_FLAGS_DIRECT_IO in loop_default_blocksize [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Fri Jan 31 13:00:40 2025 +0100

    loop: check in LO_FLAGS_DIRECT_IO in loop_default_blocksize
    
    [ Upstream commit f6f9e32fe1e454ae8ac0190b2c2bd6074914beec ]
    
    We can't go below the minimum direct I/O size no matter if direct I/O is
    enabled by passing in an O_DIRECT file descriptor or due to the explicit
    flag.  Now that LO_FLAGS_DIRECT_IO is set earlier after assigning a
    backing file, loop_default_blocksize can check it instead of the
    O_DIRECT flag to handle both conditions.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

loop: don't require ->write_iter for writable files in loop_configure [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Tue May 20 15:54:20 2025 +0200

    loop: don't require ->write_iter for writable files in loop_configure
    
    [ Upstream commit 355341e4359b2d5edf0ed5e117f7e9e7a0a5dac0 ]
    
    Block devices can be opened read-write even if they can't be written to
    for historic reasons.  Remove the check requiring file->f_op->write_iter
    when the block devices was opened in loop_configure. The call to
    loop_check_backing_file just below ensures the ->write_iter is present
    for backing files opened for writing, which is the only check that is
    actually needed.
    
    Fixes: f5c84eff634b ("loop: Add sanity check for read/write_iter")
    Reported-by: Christian Hesse <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

loop: move vfs_fsync() out of loop_update_dio() [+ + +]
Author: Ming Lei <[email protected]>
Date:   Tue Mar 18 15:29:55 2025 +0800

    loop: move vfs_fsync() out of loop_update_dio()
    
    [ Upstream commit 86947bdc28894520ed5aab0cf21b99ff0b659e07 ]
    
    If vfs_flush() is called with queue frozen, the queue freeze lock may be
    connected with FS internal lock, and lockdep warning can be triggered
    because the queue freeze lock is connected with too many global or
    sub-system locks.
    
    Fix the warning by moving vfs_fsync() out of loop_update_dio():
    
    - vfs_fsync() is only needed when switching to dio
    
    - only loop_change_fd() and loop_configure() may switch from buffered
    IO to direct IO, so call vfs_fsync() directly here. This way is safe
    because either loop is in unbound, or new file isn't attached
    
    - for the other two cases of set_status and set_block_size, direct IO
    can only become off, so no need to call vfs_fsync()
    
    Cc: Christoph Hellwig <[email protected]>
    Reported-by: Kun Hu <[email protected]>
    Reported-by: Jiaji Qin <[email protected]>
    Closes: https://lore.kernel.org/linux-block/[email protected]/T/#u
    Signed-off-by: Ming Lei <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mailbox: pcc: Use acpi_os_ioremap() instead of ioremap() [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Thu Mar 13 15:28:51 2025 +0000

    mailbox: pcc: Use acpi_os_ioremap() instead of ioremap()
    
    [ Upstream commit d181acea5b864e91f38f5771b8961215ce5017ae ]
    
    The Platform Communication Channel (PCC) mailbox driver currently uses
    ioremap() to map channel shared memory regions. However it is preferred
    to use acpi_os_ioremap(), which is mapping function specific to EFI/ACPI
    defined memory regions. It ensures that the correct memory attributes
    are applied when mapping ACPI-provided regions.
    
    While at it, also add checks for handling any errors with the mapping.
    
    Acked-by: Huisong Li <[email protected]>
    Tested-by: Huisong Li <[email protected]>
    Tested-by: Adam Young <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mailbox: use error ret code of of_parse_phandle_with_args() [+ + +]
Author: Tudor Ambarus <[email protected]>
Date:   Mon Feb 24 08:27:13 2025 +0000

    mailbox: use error ret code of of_parse_phandle_with_args()
    
    [ Upstream commit 24fdd5074b205cfb0ef4cd0751a2d03031455929 ]
    
    In case of error, of_parse_phandle_with_args() returns -EINVAL when the
    passed index is negative, or -ENOENT when the index is for an empty
    phandle. The mailbox core overwrote the error return code with a less
    precise -ENODEV. Use the error returned code from
    of_parse_phandle_with_args().
    
    Signed-off-by: Tudor Ambarus <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mctp: Fix incorrect tx flow invalidation condition in mctp-i2c [+ + +]
Author: Daniel Hsu <[email protected]>
Date:   Tue Mar 25 16:10:08 2025 +0800

    mctp: Fix incorrect tx flow invalidation condition in mctp-i2c
    
    [ Upstream commit 70facbf978ac90c6da17a3de2a8dd111b06f1bac ]
    
    Previously, the condition for invalidating the tx flow in
    mctp_i2c_invalidate_tx_flow() checked if `rc` was nonzero.
    However, this could incorrectly trigger the invalidation
    even when `rc > 0` was returned as a success status.
    
    This patch updates the condition to explicitly check for `rc < 0`,
    ensuring that only error cases trigger the invalidation.
    
    Signed-off-by: Daniel Hsu <[email protected]>
    Reviewed-by: Jeremy Kerr <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: adv7180: Disable test-pattern control on adv7180 [+ + +]
Author: Niklas Söderlund <[email protected]>
Date:   Sat Feb 22 00:09:07 2025 +0100

    media: adv7180: Disable test-pattern control on adv7180
    
    [ Upstream commit a980bc5f56b0292336e408f657f79e574e8067c0 ]
    
    The register that enables selecting a test-pattern to be outputted in
    free-run mode (FREE_RUN_PAT_SEL[2:0]) is only available on adv7280 based
    devices, not the adv7180 based ones.
    
    Add a flag to mark devices that are capable of generating test-patterns,
    and those that are not. And only register the control on supported
    devices.
    
    Signed-off-by: Niklas Söderlund <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe() [+ + +]
Author: Markus Elfring <[email protected]>
Date:   Fri Oct 4 15:50:15 2024 +0200

    media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()
    
    [ Upstream commit b773530a34df0687020520015057075f8b7b4ac4 ]
    
    An of_node_put(i2c_bus) call was immediately used after a pointer check
    for an of_find_i2c_adapter_by_node() call in this function implementation.
    Thus call such a function only once instead directly before the check.
    
    This issue was transformed by using the Coccinelle software.
    
    Signed-off-by: Markus Elfring <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cec: use us_to_ktime() where appropriate [+ + +]
Author: Vitaliy Shevtsov <[email protected]>
Date:   Wed Mar 5 20:11:25 2025 +0500

    media: cec: use us_to_ktime() where appropriate
    
    [ Upstream commit c0c1a6bf80e9075e3f6b81fd542550d8eb91e57a ]
    
    [Why]
    There are several ns_to_ktime() calls that require using nanoseconds. It is
    better to replace them with us_to_ktime() to make code clear, getting rid
    of multiplication by 1000.
    
    Also the timer function code may have an integer wrap-around issue. Since
    both tx_custom_low_usecs and tx_custom_high_usecs can be set to up to
    9999999 from the user space via cec_pin_error_inj_parse_line(), this may
    cause usecs to be overflowed when adap->monitor_pin_cnt is zero and usecs
    is multiplied by 1000.
    
    [How]
    Take advantage of using an appropriate helper func us_to_ktime() instead of
    ns_to_ktime() to improve readability and to make the code clearer. And this
    also mitigates possible integer wrap-arounds when usecs value is too large
    and it is multiplied by 1000.
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Signed-off-by: Vitaliy Shevtsov <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: cx231xx: set device_caps for 417 [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Mon Feb 24 14:13:24 2025 +0100

    media: cx231xx: set device_caps for 417
    
    [ Upstream commit a79efc44b51432490538a55b9753a721f7d3ea42 ]
    
    The video_device for the MPEG encoder did not set device_caps.
    
    Add this, otherwise the video device can't be registered (you get a
    WARN_ON instead).
    
    Not seen before since currently 417 support is disabled, but I found
    this while experimenting with it.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: imx219: Correct the minimum vblanking value [+ + +]
Author: David Plowman <[email protected]>
Date:   Tue Feb 4 12:34:36 2025 +0530

    media: i2c: imx219: Correct the minimum vblanking value
    
    [ Upstream commit e3b82d49bf676f3c873e642038765eac32ab6d39 ]
    
    The datasheet for this sensor documents the minimum vblanking as being
    32 lines. It does fix some problems with occasional black lines at the
    bottom of images (tested on Raspberry Pi).
    
    Signed-off-by: David Plowman <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Reviewed-by: Dave Stevenson <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: i2c: ov2740: Free control handler on error path [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Fri Jan 10 09:33:33 2025 +0200

    media: i2c: ov2740: Free control handler on error path
    
    [ Upstream commit 71dfb2c7548994aad6cb0a316c2601e7144d15a5 ]
    
    The control handler wasn't freed if v4l2_fwnode_device_parse() failed. Do
    that now.
    
    Co-developed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: imx335: Set vblank immediately [+ + +]
Author: Paul Elder <[email protected]>
Date:   Fri Feb 28 18:17:31 2025 +0900

    media: imx335: Set vblank immediately
    
    [ Upstream commit c0aa40f45fef80b4182704d1bc089cbf8ae8bed0 ]
    
    When the vblank v4l2 control is set, it does not get written to the
    hardware unless exposure is also changed. Change the behavior such that
    the vblank is written immediately when the control is set, as setting
    the vblank without changing the exposure is a valid use case (such as
    for changing the frame rate).
    
    Signed-off-by: Paul Elder <[email protected]>
    Reviewed-by: Kieran Bingham <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: qcom: camss: Add default case in vfe_src_pad_code [+ + +]
Author: Depeng Shao <[email protected]>
Date:   Mon Jan 13 10:01:27 2025 +0530

    media: qcom: camss: Add default case in vfe_src_pad_code
    
    [ Upstream commit 2f4204bb00b32eca3391a468d3b37e87feb96fa9 ]
    
    Add a default case in vfe_src_pad_code to get rid of a compile
    warning if a new hw enum is added.
    
    Signed-off-by: Depeng Shao <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available [+ + +]
Author: Depeng Shao <[email protected]>
Date:   Mon Jan 13 10:01:28 2025 +0530

    media: qcom: camss: csid: Only add TPG v4l2 ctrl if TPG hardware is available
    
    [ Upstream commit 2f1361f862a68063f37362f1beb400e78e289581 ]
    
    There is no CSID TPG on some SoCs, so the v4l2 ctrl in CSID driver
    shouldn't be registered. Checking the supported TPG modes to indicate
    if the TPG hardware exists or not and only registering v4l2 ctrl for
    CSID only when the TPG hardware is present.
    
    Signed-off-by: Depeng Shao <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: stm32: csi: add missing pm_runtime_put on error [+ + +]
Author: Alain Volmat <[email protected]>
Date:   Mon Jan 13 09:57:53 2025 +0100

    media: stm32: csi: add missing pm_runtime_put on error
    
    [ Upstream commit f7cd9c94959e7a5b8c4eca33e20bd6ba1b048a64 ]
    
    Within the stm32_csi_start function, pm_runtime_put should
    be called upon error following pm_runtime_get_sync.
    Rework the function error handling by putting a label in
    order to have common error handling for all calls requiring
    pm_runtime_put.
    
    Signed-off-by: Alain Volmat <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: stm32: csi: use ARRAY_SIZE to search D-PHY table [+ + +]
Author: Alain Volmat <[email protected]>
Date:   Mon Jan 13 09:57:55 2025 +0100

    media: stm32: csi: use ARRAY_SIZE to search D-PHY table
    
    [ Upstream commit a3a91b6e62be24c5df47a800c367504cb41e502b ]
    
    Within stm32_csi_start, use ARRAY_SIZE loop in order to search
    for the right setting.
    Avoid useless init of lanes_ie / lanes_en.
    
    Signed-off-by: Alain Volmat <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: tc358746: improve calculation of the D-PHY timing registers [+ + +]
Author: Matthias Fend <[email protected]>
Date:   Tue Jan 7 17:07:01 2025 +0100

    media: tc358746: improve calculation of the D-PHY timing registers
    
    [ Upstream commit 78d7265e2e1ce349e7f3c6a085f2b66d7b73f4ca ]
    
    When calculating D-PHY registers, using data rates that are not multiples
    of 16 can lead to precision loss in division operations. This can result in
    register values that produce timing violations against the MIPI standard.
    
    An example:
    cfg->hs_clk_rate = 294MHz
    hf_clk = 18
    
    If the desired value in cfg->init is 100us, which is the minimum allowed
    value, then the LINEINITCNT register is calculated as 1799. But since the
    actual clock is 18.375MHz instead of 18MHz, this setting results in a time
    that is shorter than 100us and thus violates the standard. The correct
    value for LINEINITCNT would be 1837.
    
    Improve the precision of calculations by using Hz instead of MHz as unit.
    
    Signed-off-by: Matthias Fend <[email protected]>
    Reviewed-by: Marco Felsch <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: test-drivers: vivid: don't call schedule in loop [+ + +]
Author: Hans Verkuil <[email protected]>
Date:   Mon Dec 9 16:00:16 2024 +0100

    media: test-drivers: vivid: don't call schedule in loop
    
    [ Upstream commit e4740118b752005cbed339aec9a1d1c43620e0b9 ]
    
    Artem reported that the CPU load was 100% when capturing from
    vivid at low resolution with ffmpeg.
    
    This was caused by:
    
    while (time_is_after_jiffies(cur_jiffies + wait_jiffies) &&
           !kthread_should_stop())
            schedule();
    
    If there are no other processes running that can be scheduled,
    then this is basically a busy-loop.
    
    Change it to wait_event_interruptible_timeout() which doesn't
    have that problem.
    
    Signed-off-by: Hans Verkuil <[email protected]>
    Reported-by: Artem S. Tashkinov <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219570
    Reviewed-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 3 11:55:51 2025 +0000

    media: uvcvideo: Add sanity check to uvc_ioctl_xu_ctrl_map
    
    [ Upstream commit 990262fdfce24d6055df9711424343d94d829e6a ]
    
    Do not process unknown data types.
    
    Tested-by: Yunke Cao <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: uvcvideo: Handle uvc menu translation inside uvc_get_le_value [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Mon Feb 3 11:55:40 2025 +0000

    media: uvcvideo: Handle uvc menu translation inside uvc_get_le_value
    
    [ Upstream commit 9109a0b4cb10fd681e9c6e9a4497a6fec5b91c39 ]
    
    map->get() gets a value from an uvc_control in "UVC format" and converts
    it to a value that can be consumed by v4l2.
    
    Instead of using a special get function for V4L2_CTRL_TYPE_MENU, we
    were converting from uvc_get_le_value in two different places.
    
    Move the conversion to uvc_get_le_value().
    
    Reviewed-by: Hans de Goede <[email protected]>
    Tested-by: Yunke Cao <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: v4l: Memset argument to 0 before calling get_mbus_config pad op [+ + +]
Author: Sakari Ailus <[email protected]>
Date:   Mon Dec 16 10:48:49 2024 +0200

    media: v4l: Memset argument to 0 before calling get_mbus_config pad op
    
    [ Upstream commit 91d6a99acfa5ce9f95ede775074b80f7193bd717 ]
    
    Memset the config argument to get_mbus_config V4L2 sub-device pad
    operation to zero before calling the operation. This ensures the callers
    don't need to bother with it nor the implementations need to set all
    fields that may not be relevant to them.
    
    Signed-off-by: Sakari Ailus <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf and rx_buf type [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Tue Mar 18 15:12:03 2025 +0100

    mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf and rx_buf type
    
    [ Upstream commit f88c0c72ffb014e5eba676ee337c4eb3b1d6a119 ]
    
    vsc_tp.tx_buf and vsc_tp.rx_buf point to a struct vsc_tp_packet, use
    the correct type instead of "void *" and use sizeof(*ptr) when allocating
    memory for these buffers.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Alexander Usyskin <[email protected]>
    Reviewed-by: Sakari Ailus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
memcg: always call cond_resched() after fn() [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Fri May 23 10:21:06 2025 -0700

    memcg: always call cond_resched() after fn()
    
    commit 06717a7b6c86514dbd6ab322e8083ffaa4db5712 upstream.
    
    I am seeing soft lockup on certain machine types when a cgroup OOMs.  This
    is happening because killing the process in certain machine might be very
    slow, which causes the soft lockup and RCU stalls.  This happens usually
    when the cgroup has MANY processes and memory.oom.group is set.
    
    Example I am seeing in real production:
    
           [462012.244552] Memory cgroup out of memory: Killed process 3370438 (crosvm) ....
           ....
           [462037.318059] Memory cgroup out of memory: Killed process 4171372 (adb) ....
           [462037.348314] watchdog: BUG: soft lockup - CPU#64 stuck for 26s! [stat_manager-ag:1618982]
           ....
    
    Quick look at why this is so slow, it seems to be related to serial flush
    for certain machine types.  For all the crashes I saw, the target CPU was
    at console_flush_all().
    
    In the case above, there are thousands of processes in the cgroup, and it
    is soft locking up before it reaches the 1024 limit in the code (which
    would call the cond_resched()).  So, cond_resched() in 1024 blocks is not
    sufficient.
    
    Remove the counter-based conditional rescheduling logic and call
    cond_resched() unconditionally after each task iteration, after fn() is
    called.  This avoids the lockup independently of how slow fn() is.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: ade81479c7dd ("memcg: fix soft lockup in the OOM process")
    Signed-off-by: Breno Leitao <[email protected]>
    Suggested-by: Rik van Riel <[email protected]>
    Acked-by: Shakeel Butt <[email protected]>
    Cc: Michael van der Westhuizen <[email protected]>
    Cc: Usama Arif <[email protected]>
    Cc: Pavel Begunkov <[email protected]>
    Cc: Chen Ridong <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Roman Gushchin <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mfd: axp20x: AXP717: Add AXP717_TS_PIN_CFG to writeable regs [+ + +]
Author: Chris Morgan <[email protected]>
Date:   Tue Feb 4 09:58:32 2025 -0600

    mfd: axp20x: AXP717: Add AXP717_TS_PIN_CFG to writeable regs
    
    [ Upstream commit bfad07fe298bfba0c7ddab87c5b5325970203a1e ]
    
    Add AXP717_TS_PIN_CFG (register 0x50) to the table of writeable
    registers so that the temperature sensor can be configured by the
    battery driver.
    
    Signed-off-by: Chris Morgan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: syscon: Add check for invalid resource size [+ + +]
Author: Eder Zulian <[email protected]>
Date:   Wed Feb 12 19:45:24 2025 +0100

    mfd: syscon: Add check for invalid resource size
    
    [ Upstream commit ba09916efb29f80e438a54e634970209ce12750f ]
    
    Add a consistency check to avoid assigning an invalid value to
    max_register due to a possible DT misconfiguration.
    
    Suggested-by: Mark Langsdorf <[email protected]>
    Signed-off-by: Eder Zulian <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: tps65219: Remove TPS65219_REG_TI_DEV_ID check [+ + +]
Author: Shree Ramamoorthy <[email protected]>
Date:   Thu Feb 6 11:37:23 2025 -0600

    mfd: tps65219: Remove TPS65219_REG_TI_DEV_ID check
    
    [ Upstream commit 76b58d5111fdcffce615beb71520bc7a6f1742c9 ]
    
    The chipid macro/variable and regmap_read function call is not needed
    because the TPS65219_REG_TI_DEV_ID register value is not a consistent value
    across TPS65219 PMIC config versions. Reading from the DEV_ID register
    without a consistent value to compare it to isn't useful. There isn't a
    way to verify the match data ID is the same ID read from the DEV_ID device
    register. 0xF0 isn't a DEV_ID value consistent across TPS65219 NVM
    configurations.
    
    For TPS65215, there is a consistent value in bits 5-0 of the DEV_ID
    register. However, there are other error checks in place within probe()
    that apply to both PMICs rather than keeping this isolated check for one
    PMIC.
    
    Signed-off-by: Shree Ramamoorthy <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core [+ + +]
Author: Paul Burton <[email protected]>
Date:   Wed Jan 29 13:32:48 2025 +0100

    MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core
    
    [ Upstream commit 00a134fc2bb4a5f8fada58cf7ff4259149691d64 ]
    
    The pm-cps code has up until now used per-CPU variables indexed by core,
    rather than CPU number, in order to share data amongst sibling CPUs (ie.
    VPs/threads in a core). This works fine for single cluster systems, but
    with multi-cluster systems a core number is no longer unique in the
    system, leading to sharing between CPUs that are not actually siblings.
    
    Avoid this issue by using per-CPU variables as they are more generally
    used - ie. access them using CPU numbers rather than core numbers.
    Sharing between siblings is then accomplished by:
     - Assigning the same pointer to entries for each sibling CPU for the
       nc_asm_enter & ready_count variables, which allow this by virtue of
       being per-CPU pointers.
    
     - Indexing by the first CPU set in a CPUs cpu_sibling_map in the case
       of pm_barrier, for which we can't use the previous approach because
       the per-CPU variable is not a pointer.
    
    Signed-off-by: Paul Burton <[email protected]>
    Signed-off-by: Dragan Mladjenovic <[email protected]>
    Signed-off-by: Aleksandar Rikalo <[email protected]>
    Tested-by: Serge Semin <[email protected]>
    Tested-by: Gregory CLEMENT <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

MIPS: Use arch specific syscall name match function [+ + +]
Author: Bibo Mao <[email protected]>
Date:   Tue Jun 9 10:54:35 2020 +0800

    MIPS: Use arch specific syscall name match function
    
    [ Upstream commit 756276ce78d5624dc814f9d99f7d16c8fd51076e ]
    
    On MIPS system, most of the syscall function name begin with prefix
    sys_. Some syscalls are special such as clone/fork, function name of
    these begin with __sys_. Since scratch registers need be saved in
    stack when these system calls happens.
    
    With ftrace system call method, system call functions are declared with
    SYSCALL_DEFINEx, metadata of the system call symbol name begins with
    sys_. Here mips specific function arch_syscall_match_sym_name is used to
    compare function name between sys_call_table[] and metadata of syscall
    symbol.
    
    Signed-off-by: Bibo Mao <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
misc: pci_endpoint_test: Give disabled BARs a distinct error code [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Thu Jan 23 13:01:48 2025 +0100

    misc: pci_endpoint_test: Give disabled BARs a distinct error code
    
    [ Upstream commit 7e80bbef1d697dbce7a39cfad0df770880fe3f29 ]
    
    The current code returns -ENOMEM if test->bar[barno] is NULL.
    
    There can be two reasons why test->bar[barno] is NULL:
    
      1) The pci_ioremap_bar() call in pci_endpoint_test_probe() failed.
      2) The BAR was skipped, because it is disabled by the endpoint.
    
    Many PCI endpoint controller drivers will disable all BARs in their
    init function. A disabled BAR will have a size of 0.
    
    A PCI endpoint function driver will be able to enable any BAR that
    is not marked as BAR_RESERVED (which means that the BAR should not
    be touched by the EPF driver).
    
    Thus, perform check if the size is 0, before checking if
    test->bar[barno] is NULL, such that we can return different errors.
    
    This will allow the selftests to return SKIP instead of FAIL for
    disabled BARs.
    
    Signed-off-by: Niklas Cassel <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/hugetlb: fix kernel NULL pointer dereference when replacing free hugetlb folios [+ + +]
Author: Ge Yang <[email protected]>
Date:   Thu May 22 11:22:17 2025 +0800

    mm/hugetlb: fix kernel NULL pointer dereference when replacing free hugetlb folios
    
    commit 113ed54ad276c352ee5ce109bdcf0df118a43bda upstream.
    
    A kernel crash was observed when replacing free hugetlb folios:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000028
    PGD 0 P4D 0
    Oops: Oops: 0000 [#1] SMP NOPTI
    CPU: 28 UID: 0 PID: 29639 Comm: test_cma.sh Tainted 6.15.0-rc6-zp #41 PREEMPT(voluntary)
    RIP: 0010:alloc_and_dissolve_hugetlb_folio+0x1d/0x1f0
    RSP: 0018:ffffc9000b30fa90 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000342cca RCX: ffffea0043000000
    RDX: ffffc9000b30fb08 RSI: ffffea0043000000 RDI: 0000000000000000
    RBP: ffffc9000b30fb20 R08: 0000000000001000 R09: 0000000000000000
    R10: ffff88886f92eb00 R11: 0000000000000000 R12: ffffea0043000000
    R13: 0000000000000000 R14: 00000000010c0200 R15: 0000000000000004
    FS:  00007fcda5f14740(0000) GS:ffff8888ec1d8000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000028 CR3: 0000000391402000 CR4: 0000000000350ef0
    Call Trace:
    <TASK>
     replace_free_hugepage_folios+0xb6/0x100
     alloc_contig_range_noprof+0x18a/0x590
     ? srso_return_thunk+0x5/0x5f
     ? down_read+0x12/0xa0
     ? srso_return_thunk+0x5/0x5f
     cma_range_alloc.constprop.0+0x131/0x290
     __cma_alloc+0xcf/0x2c0
     cma_alloc_write+0x43/0xb0
     simple_attr_write_xsigned.constprop.0.isra.0+0xb2/0x110
     debugfs_attr_write+0x46/0x70
     full_proxy_write+0x62/0xa0
     vfs_write+0xf8/0x420
     ? srso_return_thunk+0x5/0x5f
     ? filp_flush+0x86/0xa0
     ? srso_return_thunk+0x5/0x5f
     ? filp_close+0x1f/0x30
     ? srso_return_thunk+0x5/0x5f
     ? do_dup2+0xaf/0x160
     ? srso_return_thunk+0x5/0x5f
     ksys_write+0x65/0xe0
     do_syscall_64+0x64/0x170
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    There is a potential race between __update_and_free_hugetlb_folio() and
    replace_free_hugepage_folios():
    
    CPU1                              CPU2
    __update_and_free_hugetlb_folio   replace_free_hugepage_folios
                                        folio_test_hugetlb(folio)
                                        -- It's still hugetlb folio.
    
      __folio_clear_hugetlb(folio)
      hugetlb_free_folio(folio)
                                        h = folio_hstate(folio)
                                        -- Here, h is NULL pointer
    
    When the above race condition occurs, folio_hstate(folio) returns NULL,
    and subsequent access to this NULL pointer will cause the system to crash.
    To resolve this issue, execute folio_hstate(folio) under the protection
    of the hugetlb_lock lock, ensuring that folio_hstate(folio) does not
    return NULL.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 04f13d241b8b ("mm: replace free hugepage folios after migration")
    Signed-off-by: Ge Yang <[email protected]>
    Reviewed-by: Muchun Song <[email protected]>
    Reviewed-by: Oscar Salvador <[email protected]>
    Cc: Baolin Wang <[email protected]>
    Cc: Barry Song <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/page_alloc.c: avoid infinite retries caused by cpuset race [+ + +]
Author: Tianyang Zhang <[email protected]>
Date:   Wed Apr 16 16:24:05 2025 +0800

    mm/page_alloc.c: avoid infinite retries caused by cpuset race
    
    commit e05741fb10c38d70bbd7ec12b23c197b6355d519 upstream.
    
    __alloc_pages_slowpath has no change detection for ac->nodemask in the
    part of retry path, while cpuset can modify it in parallel.  For some
    processes that set mempolicy as MPOL_BIND, this results ac->nodemask
    changes, and then the should_reclaim_retry will judge based on the latest
    nodemask and jump to retry, while the get_page_from_freelist only
    traverses the zonelist from ac->preferred_zoneref, which selected by a
    expired nodemask and may cause infinite retries in some cases
    
    cpu 64:
    __alloc_pages_slowpath {
            /* ..... */
    retry:
            /* ac->nodemask = 0x1, ac->preferred->zone->nid = 1 */
            if (alloc_flags & ALLOC_KSWAPD)
                    wake_all_kswapds(order, gfp_mask, ac);
            /* cpu 1:
            cpuset_write_resmask
                update_nodemask
                    update_nodemasks_hier
                        update_tasks_nodemask
                            mpol_rebind_task
                             mpol_rebind_policy
                              mpol_rebind_nodemask
                    // mempolicy->nodes has been modified,
                    // which ac->nodemask point to
    
            */
            /* ac->nodemask = 0x3, ac->preferred->zone->nid = 1 */
            if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
                                     did_some_progress > 0, &no_progress_loops))
                    goto retry;
    }
    
    Simultaneously starting multiple cpuset01 from LTP can quickly reproduce
    this issue on a multi node server when the maximum memory pressure is
    reached and the swap is enabled
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c33d6c06f60f ("mm, page_alloc: avoid looking up the first zone in a zonelist twice")
    Signed-off-by: Tianyang Zhang <[email protected]>
    Reviewed-by: Suren Baghdasaryan <[email protected]>
    Reviewed-by: Vlastimil Babka <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Zi Yan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: fix VM_UFFD_MINOR == VM_SHADOW_STACK on USERFAULTFD=y && ARM64_GCS=y [+ + +]
Author: Florent Revest <[email protected]>
Date:   Wed May 7 15:09:57 2025 +0200

    mm: fix VM_UFFD_MINOR == VM_SHADOW_STACK on USERFAULTFD=y && ARM64_GCS=y
    
    commit 0f518255bde881d2a2605bbc080b438b532b6ab2 upstream.
    
    On configs with CONFIG_ARM64_GCS=y, VM_SHADOW_STACK is bit 38.  On configs
    with CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y (selected by CONFIG_ARM64 when
    CONFIG_USERFAULTFD=y), VM_UFFD_MINOR is _also_ bit 38.
    
    This bit being shared by two different VMA flags could lead to all sorts
    of unintended behaviors.  Presumably, a process could maybe call into
    userfaultfd in a way that disables the shadow stack vma flag.  I can't
    think of any attack where this would help (presumably, if an attacker
    tries to disable shadow stacks, they are trying to hijack control flow so
    can't arbitrarily call into userfaultfd yet anyway) but this still feels
    somewhat scary.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: ae80e1629aea ("mm: Define VM_SHADOW_STACK for arm64 when we support GCS")
    Signed-off-by: Florent Revest <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Cc: Borislav Betkov <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Cc: Florent Revest <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Thiago Jung Bauermann <[email protected]>
    Cc: Thomas Gleinxer <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: mmap: map MAP_STACK to VM_NOHUGEPAGE only if THP is enabled [+ + +]
Author: Ignacio Moreno Gonzalez <[email protected]>
Date:   Wed May 7 15:28:06 2025 +0200

    mm: mmap: map MAP_STACK to VM_NOHUGEPAGE only if THP is enabled
    
    commit 7190b3c8bd2b0cde483bd440cf91ba1c518b4261 upstream.
    
    commit c4608d1bf7c6 ("mm: mmap: map MAP_STACK to VM_NOHUGEPAGE") maps the
    mmap option MAP_STACK to VM_NOHUGEPAGE.  This is also done if
    CONFIG_TRANSPARENT_HUGEPAGE is not defined.  But in that case, the
    VM_NOHUGEPAGE does not make sense.
    
    I discovered this issue when trying to use the tool CRIU to checkpoint and
    restore a container.  Our running kernel is compiled without
    CONFIG_TRANSPARENT_HUGEPAGE.  CRIU parses the output of /proc/<pid>/smaps
    and saves the "nh" flag.  When trying to restore the container, CRIU fails
    to restore the "nh" mappings, since madvise() MADV_NOHUGEPAGE always
    returns an error because CONFIG_TRANSPARENT_HUGEPAGE is not defined.
    
    Link: https://lkml.kernel.org/r/20250507-map-map_stack-to-vm_nohugepage-only-if-thp-is-enabled-v5-1-c6c38cfefd6e@kuka.com
    Fixes: c4608d1bf7c6 ("mm: mmap: map MAP_STACK to VM_NOHUGEPAGE")
    Signed-off-by: Ignacio Moreno Gonzalez <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Reviewed-by: Yang Shi <[email protected]>
    Reviewed-by: Liam R. Howlett <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: vmalloc: actually use the in-place vrealloc region [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu May 15 14:42:15 2025 -0700

    mm: vmalloc: actually use the in-place vrealloc region
    
    commit f7a35a3c36d1e36059c5654737d9bee3454f01a3 upstream.
    
    Patch series "mm: vmalloc: Actually use the in-place vrealloc region".
    
    This fixes a performance regression[1] with vrealloc()[1].
    
    
    The refactoring to not build a new vmalloc region only actually worked
    when shrinking.  Actually return the resized area when it grows.  Ugh.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: a0309faf1cb0 ("mm: vmalloc: support more granular vrealloc() sizing")
    Signed-off-by: Kees Cook <[email protected]>
    Reported-by: Shung-Hsi Yu <[email protected]>
    Closes: https://lore.kernel.org/all/20250515-bpf-verifier-slowdown-vwo2meju4cgp2su5ckj@6gi6ssxbnfqg [1]
    Tested-by: Eduard Zingerman <[email protected]>
    Tested-by: Pawan Gupta <[email protected]>
    Tested-by: Shung-Hsi Yu <[email protected]>
    Reviewed-by: "Uladzislau Rezki (Sony)" <[email protected]>
    Reviewed-by: Danilo Krummrich <[email protected]>
    Cc: "Erhard F." <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: vmalloc: only zero-init on vrealloc shrink [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu May 15 14:42:16 2025 -0700

    mm: vmalloc: only zero-init on vrealloc shrink
    
    commit 70d1eb031a68cbde4eed8099674be21778441c94 upstream.
    
    The common case is to grow reallocations, and since init_on_alloc will
    have already zeroed the whole allocation, we only need to zero when
    shrinking the allocation.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: a0309faf1cb0 ("mm: vmalloc: support more granular vrealloc() sizing")
    Signed-off-by: Kees Cook <[email protected]>
    Tested-by: Pawan Gupta <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Eduard Zingerman <[email protected]>
    Cc: "Erhard F." <[email protected]>
    Cc: Shung-Hsi Yu <[email protected]>
    Cc: "Uladzislau Rezki (Sony)" <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: dw_mmc: add exynos7870 DW MMC support [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Wed Feb 19 00:17:49 2025 +0530

    mmc: dw_mmc: add exynos7870 DW MMC support
    
    [ Upstream commit 7cbe799ac10fd8be85af5e0615c4337f81e575f3 ]
    
    Add support for Exynos7870 DW MMC controllers, for both SMU and non-SMU
    variants. These controllers require a quirk to access 64-bit FIFO in 32-bit
    accesses (DW_MMC_QUIRK_FIFO64_32).
    
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mmc: host: Wait for Vdd to settle on card power off [+ + +]
Author: Erick Shepherd <[email protected]>
Date:   Fri Mar 14 14:50:21 2025 -0500

    mmc: host: Wait for Vdd to settle on card power off
    
    [ Upstream commit 31e75ed964582257f59156ce6a42860e1ae4cc39 ]
    
    The SD spec version 6.0 section 6.4.1.5 requires that Vdd must be
    lowered to less than 0.5V for a minimum of 1 ms when powering off a
    card. Increase wait to 15 ms so that voltage has time to drain down
    to 0.5V and cards can power off correctly. Issues with voltage drain
    time were only observed on Apollo Lake and Bay Trail host controllers
    so this fix is limited to those devices.
    
    Signed-off-by: Erick Shepherd <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mmc: sdhci: Disable SD card clock before changing parameters [+ + +]
Author: Erick Shepherd <[email protected]>
Date:   Tue Feb 11 15:46:45 2025 -0600

    mmc: sdhci: Disable SD card clock before changing parameters
    
    [ Upstream commit fb3bbc46c94f261b6156ee863c1b06c84cf157dc ]
    
    Per the SD Host Controller Simplified Specification v4.20 §3.2.3, change
    the SD card clock parameters only after first disabling the external card
    clock. Doing this fixes a spurious clock pulse on Baytrail and Apollo Lake
    SD controllers which otherwise breaks voltage switching with a specific
    Swissbit SD card.
    
    Signed-off-by: Kyle Roeschley <[email protected]>
    Signed-off-by: Brad Mouring <[email protected]>
    Signed-off-by: Erick Shepherd <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mmc: sdhci_am654: Add SDHCI_QUIRK2_SUPPRESS_V1P8_ENA quirk to am62 compatible [+ + +]
Author: Judith Mendez <[email protected]>
Date:   Fri May 16 15:31:21 2025 -0500

    mmc: sdhci_am654: Add SDHCI_QUIRK2_SUPPRESS_V1P8_ENA quirk to am62 compatible
    
    commit 71c9475b1e2cc4d31370b1b7a328bdfeea5d53b4 upstream.
    
    Add a new struct for platform data for the ti,am62-sdhci compatible to
    apply additional quirks, namely "SDHCI_QUIRK2_SUPPRESS_V1P8_ENA", to
    host controllers with am62 compatible.
    
    Note, the fix was originally introduced by commit 941a7abd4666
    ("mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch") but was
    found to be applied too broadly and had to be reverted.
    
    This fixes MMC init failures seen across am62x boards.
    
    Fixes: ac5a41b472b4 ("Revert "mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch"")
    Fixes: 941a7abd4666 ("mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch")
    Cc: [email protected]
    Suggested-by: Nishanth Menon <[email protected]>
    Signed-off-by: Judith Mendez <[email protected]>
    Acked-by: Adrian Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
module: release codetag section when module load fails [+ + +]
Author: David Wang <[email protected]>
Date:   Tue May 20 00:38:23 2025 +0800

    module: release codetag section when module load fails
    
    commit 221fcbf77578826fad8f4bfa0530b5b55bf9676a upstream.
    
    When module load fails after memory for codetag section is ready, codetag
    section memory will not be properly released.  This causes memory leak,
    and if next module load happens to get the same module address, codetag
    may pick the uninitialized section when manipulating tags during module
    unload, and leads to "unable to handle page fault" BUG.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 0db6f8d7820a ("alloc_tag: load module tags into separate contiguous memory")
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: David Wang <[email protected]>
    Acked-by: Suren Baghdasaryan <[email protected]>
    Cc: Petr Pavlu <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mptcp: pm: userspace: flags: clearer msg if no remote addr [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Fri Feb 7 14:59:20 2025 +0100

    mptcp: pm: userspace: flags: clearer msg if no remote addr
    
    [ Upstream commit 58b21309f97b08b6b9814d1ee1419249eba9ef08 ]
    
    Since its introduction in commit 892f396c8e68 ("mptcp: netlink: issue
    MP_PRIO signals from userspace PMs"), it was mandatory to specify the
    remote address, because of the 'if (rem->addr.family == AF_UNSPEC)'
    check done later one.
    
    In theory, this attribute can be optional, but it sounds better to be
    precise to avoid sending the MP_PRIO on the wrong subflow, e.g. if there
    are multiple subflows attached to the same local ID. This can be relaxed
    later on if there is a need to act on multiple subflows with one
    command.
    
    For the moment, the check to see if attr_rem is NULL can be removed,
    because mptcp_pm_parse_entry() will do this check as well, no need to do
    that differently here.
    
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mr: consolidate the ipmr_can_free_table() checks. [+ + +]
Author: Paolo Abeni <[email protected]>
Date:   Thu May 15 18:49:26 2025 +0200

    mr: consolidate the ipmr_can_free_table() checks.
    
    [ Upstream commit c46286fdd6aa1d0e33c245bcffe9ff2428a777bd ]
    
    Guoyu Yin reported a splat in the ipmr netns cleanup path:
    
    WARNING: CPU: 2 PID: 14564 at net/ipv4/ipmr.c:440 ipmr_free_table net/ipv4/ipmr.c:440 [inline]
    WARNING: CPU: 2 PID: 14564 at net/ipv4/ipmr.c:440 ipmr_rules_exit+0x135/0x1c0 net/ipv4/ipmr.c:361
    Modules linked in:
    CPU: 2 UID: 0 PID: 14564 Comm: syz.4.838 Not tainted 6.14.0 #1
    Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    RIP: 0010:ipmr_free_table net/ipv4/ipmr.c:440 [inline]
    RIP: 0010:ipmr_rules_exit+0x135/0x1c0 net/ipv4/ipmr.c:361
    Code: ff df 48 c1 ea 03 80 3c 02 00 75 7d 48 c7 83 60 05 00 00 00 00 00 00 5b 5d 41 5c 41 5d 41 5e e9 71 67 7f 00 e8 4c 2d 8a fd 90 <0f> 0b 90 eb 93 e8 41 2d 8a fd 0f b6 2d 80 54 ea 01 31 ff 89 ee e8
    RSP: 0018:ffff888109547c58 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: ffff888108c12dc0 RCX: ffffffff83e09868
    RDX: ffff8881022b3300 RSI: ffffffff83e098d4 RDI: 0000000000000005
    RBP: ffff888104288000 R08: 0000000000000000 R09: ffffed10211825c9
    R10: 0000000000000001 R11: ffff88801816c4a0 R12: 0000000000000001
    R13: ffff888108c13320 R14: ffff888108c12dc0 R15: fffffbfff0b74058
    FS:  00007f84f39316c0(0000) GS:ffff88811b100000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f84f3930f98 CR3: 0000000113b56000 CR4: 0000000000350ef0
    Call Trace:
     <TASK>
     ipmr_net_exit_batch+0x50/0x90 net/ipv4/ipmr.c:3160
     ops_exit_list+0x10c/0x160 net/core/net_namespace.c:177
     setup_net+0x47d/0x8e0 net/core/net_namespace.c:394
     copy_net_ns+0x25d/0x410 net/core/net_namespace.c:516
     create_new_namespaces+0x3f6/0xaf0 kernel/nsproxy.c:110
     unshare_nsproxy_namespaces+0xc3/0x180 kernel/nsproxy.c:228
     ksys_unshare+0x78d/0x9a0 kernel/fork.c:3342
     __do_sys_unshare kernel/fork.c:3413 [inline]
     __se_sys_unshare kernel/fork.c:3411 [inline]
     __x64_sys_unshare+0x31/0x40 kernel/fork.c:3411
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xa6/0x1a0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f84f532cc29
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f84f3931038 EFLAGS: 00000246 ORIG_RAX: 0000000000000110
    RAX: ffffffffffffffda RBX: 00007f84f5615fa0 RCX: 00007f84f532cc29
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000040000400
    RBP: 00007f84f53fba18 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007f84f5615fa0 R15: 00007fff51c5f328
     </TASK>
    
    The running kernel has CONFIG_IP_MROUTE_MULTIPLE_TABLES disabled, and
    the sanity check for such build is still too loose.
    
    Address the issue consolidating the relevant sanity check in a single
    helper regardless of the kernel configuration. Also share it between
    the ipv4 and ipv6 code.
    
    Reported-by: Guoyu Yin <[email protected]>
    Fixes: 50b94204446e ("ipmr: tune the ipmr_can_free_table() checks.")
    Signed-off-by: Paolo Abeni <[email protected]>
    Link: https://patch.msgid.link/372dc261e1bf12742276e1b984fc5a071b7fc5a8.1747321903.git.pabeni@redhat.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net-sysfs: restore behavior for not running devices [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Feb 21 05:12:23 2025 +0000

    net-sysfs: restore behavior for not running devices
    
    [ Upstream commit 75bc3dab4e49b4daccb27ad6ce8ce2fcd253fc1b ]
    
    modprobe dummy dumdummies=1
    
    Old behavior :
    
    $ cat /sys/class/net/dummy0/carrier
    cat: /sys/class/net/dummy0/carrier: Invalid argument
    
    After blamed commit, an empty string is reported.
    
    $ cat /sys/class/net/dummy0/carrier
    $
    
    In this commit, I restore the old behavior for carrier,
    speed and duplex attributes.
    
    Fixes: 79c61899b5ee ("net-sysfs: remove rtnl_trylock from device attributes")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reported-by: Marco Leogrande <[email protected]>
    Reviewed-by: Antoine Tenart <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mana: fix warning in the writer of client oob [+ + +]
Author: Konstantin Taranov <[email protected]>
Date:   Mon Jan 20 09:27:14 2025 -0800

    net/mana: fix warning in the writer of client oob
    
    [ Upstream commit 5ec7e1c86c441c46a374577bccd9488abea30037 ]
    
    Do not warn on missing pad_data when oob is in sgl.
    
    Signed-off-by: Konstantin Taranov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Shiraz Saleem <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx4_core: Avoid impossible mlx4_db_alloc() order value [+ + +]
Author: Kees Cook <[email protected]>
Date:   Mon Feb 10 09:45:05 2025 -0800

    net/mlx4_core: Avoid impossible mlx4_db_alloc() order value
    
    [ Upstream commit 4a6f18f28627e121bd1f74b5fcc9f945d6dbeb1e ]
    
    GCC can see that the value range for "order" is capped, but this leads
    it to consider that it might be negative, leading to a false positive
    warning (with GCC 15 with -Warray-bounds -fdiagnostics-details):
    
    ../drivers/net/ethernet/mellanox/mlx4/alloc.c:691:47: error: array subscript -1 is below array bounds of 'long unsigned int *[2]' [-Werror=array-bounds=]
      691 |                 i = find_first_bit(pgdir->bits[o], MLX4_DB_PER_PAGE >> o);
          |                                    ~~~~~~~~~~~^~~
      'mlx4_alloc_db_from_pgdir': events 1-2
      691 |                 i = find_first_bit(pgdir->bits[o], MLX4_DB_PER_PAGE >> o);                        |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                     |                         |                                                   |                     |                         (2) out of array bounds here
          |                     (1) when the condition is evaluated to true                             In file included from ../drivers/net/ethernet/mellanox/mlx4/mlx4.h:53,
                     from ../drivers/net/ethernet/mellanox/mlx4/alloc.c:42:
    ../include/linux/mlx4/device.h:664:33: note: while referencing 'bits'
      664 |         unsigned long          *bits[2];
          |                                 ^~~~
    
    Switch the argument to unsigned int, which removes the compiler needing
    to consider negative values.
    
    Signed-off-by: Kees Cook <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Apply rate-limiting to high temperature warning [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Thu Feb 13 11:46:38 2025 +0200

    net/mlx5: Apply rate-limiting to high temperature warning
    
    [ Upstream commit 9dd3d5d258aceb37bdf09c8b91fa448f58ea81f0 ]
    
    Wrap the high temperature warning in a temperature event with
    a call to net_ratelimit() to prevent flooding the kernel log
    with repeated warning messages when temperature exceeds the
    threshold multiple times within a short duration.
    
    Signed-off-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Mateusz Polchlopek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Avoid report two health errors on same syndrome [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Wed Feb 26 14:25:40 2025 +0200

    net/mlx5: Avoid report two health errors on same syndrome
    
    [ Upstream commit b5d7b2f04ebcff740f44ef4d295b3401aeb029f4 ]
    
    In case health counter has not increased for few polling intervals, miss
    counter will reach max misses threshold and health report will be
    triggered for FW health reporter. In case syndrome found on same health
    poll another health report will be triggered.
    
    Avoid two health reports on same syndrome by marking this syndrome as
    already known.
    
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Change POOL_NEXT_SIZE define value and make it global [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Wed Feb 19 10:58:08 2025 +0200

    net/mlx5: Change POOL_NEXT_SIZE define value and make it global
    
    [ Upstream commit 80df31f384b4146a62a01b3d4beb376cc7b9a89e ]
    
    Change POOL_NEXT_SIZE define value from 0 to BIT(30), since this define
    is used to request the available maximum sized flow table, and zero doesn't
    make sense for it, whereas some places in the driver use zero explicitly
    expecting the smallest table size possible but instead due to this
    define they end up allocating the biggest table size unawarely.
    
    In addition move the definition to "include/linux/mlx5/fs.h" to expose the
    define to IB driver as well, while appropriately renaming it.
    
    Signed-off-by: Patrisious Haddad <[email protected]>
    Reviewed-by: Maor Gottlieb <[email protected]>
    Reviewed-by: Mark Bloch <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Sun Feb 9 12:17:15 2025 +0200

    net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB
    
    [ Upstream commit 95b9606b15bb3ce1198d28d2393dd0e1f0a5f3e9 ]
    
    Current loopback test validation ignores non-linear SKB case in
    the SKB access, which can lead to failures in scenarios such as
    when HW GRO is enabled.
    Linearize the SKB so both cases will be handled.
    
    Signed-off-by: Alexei Lazar <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Modify LSB bitmask in temperature event to include only the first bit [+ + +]
Author: Shahar Shitrit <[email protected]>
Date:   Thu Feb 13 11:46:40 2025 +0200

    net/mlx5: Modify LSB bitmask in temperature event to include only the first bit
    
    [ Upstream commit 633f16d7e07c129a36b882c05379e01ce5bdb542 ]
    
    In the sensor_count field of the MTEWE register, bits 1-62 are
    supported only for unmanaged switches, not for NICs, and bit 63
    is reserved for internal use.
    
    To prevent confusing output that may include set bits that are
    not relevant to NIC sensors, we update the bitmask to retain only
    the first bit, which corresponds to the sensor ASIC.
    
    Signed-off-by: Shahar Shitrit <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Mateusz Polchlopek <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Preserve rate settings when creating a rate node [+ + +]
Author: Carolina Jubran <[email protected]>
Date:   Mon Mar 10 23:26:55 2025 +0200

    net/mlx5: Preserve rate settings when creating a rate node
    
    [ Upstream commit f88c349c75e3784a3f5463f5b403ff28dd823782 ]
    
    Modify `esw_qos_create_node_sched_elem()` to receive max_rate and
    bw_share values while maintaining the previous configuration.
    
    This change is essential for the upcoming patch that will modify rate
    nodes and requires the existing settings to be preserved unless
    explicitly changed.
    
    Signed-off-by: Carolina Jubran <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: XDP, Enable TX side XDP multi-buffer support [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Sun Feb 9 12:17:16 2025 +0200

    net/mlx5: XDP, Enable TX side XDP multi-buffer support
    
    [ Upstream commit 1a9304859b3a4119579524c293b902a8927180f3 ]
    
    In XDP scenarios, fragmented packets can occur if the MTU is larger
    than the page size, even when the packet size fits within the linear
    part.
    If XDP multi-buffer support is disabled, the fragmented part won't be
    handled in the TX flow, leading to packet drops.
    
    Since XDP multi-buffer support is always available, this commit removes
    the conditional check for enabling it.
    This ensures that XDP multi-buffer support is always enabled,
    regardless of the `is_xdp_mb` parameter, and guarantees the handling of
    fragmented packets in such scenarios.
    
    Signed-off-by: Alexei Lazar <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Add correct match to check IPSec syndromes for switchdev mode [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Thu Feb 20 23:39:53 2025 +0200

    net/mlx5e: Add correct match to check IPSec syndromes for switchdev mode
    
    [ Upstream commit 85e4a808af2545fefaf18c8fe50071b06fcbdabc ]
    
    In commit dddb49b63d86 ("net/mlx5e: Add IPsec and ASO syndromes check
    in HW"), IPSec and ASO syndromes checks after decryption for the
    specified ASO object were added. But they are correct only for eswith
    in legacy mode. For switchdev mode, metadata register c1 is used to
    save the mapped id (not ASO object id). So, need to change the match
    accordingly for the check rules in status table.
    
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Leon Romanovsky <[email protected]>
    Reviewed-by: Patrisious Haddad <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Avoid WARN_ON when configuring MQPRIO with HTB offload enabled [+ + +]
Author: Carolina Jubran <[email protected]>
Date:   Mon Feb 3 23:35:16 2025 +0200

    net/mlx5e: Avoid WARN_ON when configuring MQPRIO with HTB offload enabled
    
    [ Upstream commit 689805dcc474c2accb5cffbbcea1c06ee4a54570 ]
    
    When attempting to enable MQPRIO while HTB offload is already
    configured, the driver currently returns `-EINVAL` and triggers a
    `WARN_ON`, leading to an unnecessary call trace.
    
    Update the code to handle this case more gracefully by returning
    `-EOPNOTSUPP` instead, while also providing a helpful user message.
    
    Signed-off-by: Carolina Jubran <[email protected]>
    Reviewed-by: Yael Chemla <[email protected]>
    Reviewed-by: Cosmin Ratiu <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: reduce rep rxq depth to 256 for ECPF [+ + +]
Author: William Tu <[email protected]>
Date:   Sun Feb 9 12:17:08 2025 +0200

    net/mlx5e: reduce rep rxq depth to 256 for ECPF
    
    [ Upstream commit b9cc8f9d700867aaa77aedddfea85e53d5e5d584 ]
    
    By experiments, a single queue representor netdev consumes kernel
    memory around 2.8MB, and 1.8MB out of the 2.8MB is due to page
    pool for the RXQ. Scaling to a thousand representors consumes 2.8GB,
    which becomes a memory pressure issue for embedded devices such as
    BlueField-2 16GB / BlueField-3 32GB memory.
    
    Since representor netdevs mostly handles miss traffic, and ideally,
    most of the traffic will be offloaded, reduce the default non-uplink
    rep netdev's RXQ default depth from 1024 to 256 if mdev is ecpf eswitch
    manager. This saves around 1MB of memory per regular RQ,
    (1024 - 256) * 2KB, allocated from page pool.
    
    With rxq depth of 256, the netlink page pool tool reports
    $./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \
             --dump page-pool-get
     {'id': 277,
      'ifindex': 9,
      'inflight': 128,
      'inflight-mem': 786432,
      'napi-id': 775}]
    
    This is due to mtu 1500 + headroom consumes half pages, so 256 rxq
    entries consumes around 128 pages (thus create a page pool with
    size 128), shown above at inflight.
    
    Note that each netdev has multiple types of RQs, including
    Regular RQ, XSK, PTP, Drop, Trap RQ. Since non-uplink representor
    only supports regular rq, this patch only changes the regular RQ's
    default depth.
    
    Signed-off-by: William Tu <[email protected]>
    Reviewed-by: Bodong Wang <[email protected]>
    Reviewed-by: Saeed Mahameed <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: reduce the max log mpwrq sz for ECPF and reps [+ + +]
Author: William Tu <[email protected]>
Date:   Sun Feb 9 12:17:07 2025 +0200

    net/mlx5e: reduce the max log mpwrq sz for ECPF and reps
    
    [ Upstream commit e1d68ea58c7e9ebacd9ad7a99b25a3578fa62182 ]
    
    For the ECPF and representors, reduce the max MPWRQ size from 256KB (18)
    to 128KB (17). This prepares the later patch for saving representor
    memory.
    
    With Striding RQ, there is a minimum of 4 MPWQEs. So with 128KB of max
    MPWRQ size, the minimal memory is 4 * 128KB = 512KB. When creating page
    pool, consider 1500 mtu, the minimal page pool size will be 512KB/4KB =
    128 pages = 256 rx ring entries (2 entries per page).
    
    Before this patch, setting RX ringsize (ethtool -G rx) to 256 causes
    driver to allocate page pool size more than it needs due to max MPWRQ
    is 256KB (18). Ex: 4 * 256KB = 1MB, 1MB/4KB = 256 pages, but actually
    128 pages is good enough. Reducing the max MPWRQ to 128KB fixes the
    limitation.
    
    Signed-off-by: William Tu <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: set the tx_queue_len for pfifo_fast [+ + +]
Author: William Tu <[email protected]>
Date:   Sun Feb 9 12:17:09 2025 +0200

    net/mlx5e: set the tx_queue_len for pfifo_fast
    
    [ Upstream commit a38cc5706fb9f7dc4ee3a443f61de13ce1e410ed ]
    
    By default, the mq netdev creates a pfifo_fast qdisc. On a
    system with 16 core, the pfifo_fast with 3 bands consumes
    16 * 3 * 8 (size of pointer) * 1024 (default tx queue len)
    = 393KB. The patch sets the tx qlen to representor default
    value, 128 (1<<MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE), which
    consumes 16 * 3 * 8 * 128 = 49KB, saving 344KB for each
    representor at ECPF.
    
    Signed-off-by: William Tu <[email protected]>
    Reviewed-by: Daniel Jurgens <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Use right API to free bitmap memory [+ + +]
Author: Mark Zhang <[email protected]>
Date:   Wed Mar 19 21:23:18 2025 +0200

    net/mlx5e: Use right API to free bitmap memory
    
    [ Upstream commit cac48eb6d383ee4f037e320608efa5dec029e26a ]
    
    Use bitmap_free() to free memory allocated with bitmap_zalloc_node().
    This fixes memtrack error:
      mtl rsc inconsistency: memtrack_free: .../drivers/net/ethernet/mellanox/mlx5/core/en_main.c::466: kfree for unknown address=0xFFFF0000CA3619E8, device=0x0
    
    Signed-off-by: Mark Zhang <[email protected]>
    Reviewed-by: Maher Sanalla <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/smc: use the correct ndev to find pnetid by pnetid table [+ + +]
Author: Guangguan Wang <[email protected]>
Date:   Tue Mar 4 20:43:04 2025 +0800

    net/smc: use the correct ndev to find pnetid by pnetid table
    
    [ Upstream commit bfc6c67ec2d64d0ca4e5cc3e1ac84298a10b8d62 ]
    
    When using smc_pnet in SMC, it will only search the pnetid in the
    base_ndev of the netdev hierarchy(both HW PNETID and User-defined
    sw pnetid). This may not work for some scenarios when using SMC in
    container on cloud environment.
    In container, there have choices of different container network,
    such as directly using host network, virtual network IPVLAN, veth,
    etc. Different choices of container network have different netdev
    hierarchy. Examples of netdev hierarchy show below. (eth0 and eth1
    in host below is the netdev directly related to the physical device).
                _______________________________
               |   _________________           |
               |  |POD              |          |
               |  |                 |          |
               |  | eth0_________   |          |
               |  |____|         |__|          |
               |       |         |             |
               |       |         |             |
               |   eth1|base_ndev| eth0_______ |
               |       |         |    | RDMA  ||
               | host  |_________|    |_______||
               ---------------------------------
         netdev hierarchy if directly using host network
               ________________________________
               |   _________________           |
               |  |POD  __________  |          |
               |  |    |upper_ndev| |          |
               |  |eth0|__________| |          |
               |  |_______|_________|          |
               |          |lower netdev        |
               |        __|______              |
               |   eth1|         | eth0_______ |
               |       |base_ndev|    | RDMA  ||
               | host  |_________|    |_______||
               ---------------------------------
                netdev hierarchy if using IPVLAN
                _______________________________
               |   _____________________       |
               |  |POD        _________ |      |
               |  |          |base_ndev||      |
               |  |eth0(veth)|_________||      |
               |  |____________|________|      |
               |               |pairs          |
               |        _______|_              |
               |       |         | eth0_______ |
               |   veth|base_ndev|    | RDMA  ||
               |       |_________|    |_______||
               |        _________              |
               |   eth1|base_ndev|             |
               | host  |_________|             |
               ---------------------------------
                 netdev hierarchy if using veth
    Due to some reasons, the eth1 in host is not RDMA attached netdevice,
    pnetid is needed to map the eth1(in host) with RDMA device so that POD
    can do SMC-R. Because the eth1(in host) is managed by CNI plugin(such
    as Terway, network management plugin in container environment), and in
    cloud environment the eth(in host) can dynamically be inserted by CNI
    when POD create and dynamically be removed by CNI when POD destroy and
    no POD related to the eth(in host) anymore. It is hard to config the
    pnetid to the eth1(in host). But it is easy to config the pnetid to the
    netdevice which can be seen in POD. When do SMC-R, both the container
    directly using host network and the container using veth network can
    successfully match the RDMA device, because the configured pnetid netdev
    is a base_ndev. But the container using IPVLAN can not successfully
    match the RDMA device and 0x03030000 fallback happens, because the
    configured pnetid netdev is not a base_ndev. Additionally, if config
    pnetid to the eth1(in host) also can not work for matching RDMA device
    when using veth network and doing SMC-R in POD.
    
    To resolve the problems list above, this patch extends to search user
    -defined sw pnetid in the clc handshake ndev when no pnetid can be found
    in the base_ndev, and the base_ndev take precedence over ndev for backward
    compatibility. This patch also can unify the pnetid setup of different
    network choices list above in container(Config user-defined sw pnetid in
    the netdevice can be seen in POD).
    
    Signed-off-by: Guangguan Wang <[email protected]>
    Reviewed-by: Wenjia Zhang <[email protected]>
    Reviewed-by: Halil Pasic <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done [+ + +]
Author: Wang Liang <[email protected]>
Date:   Tue May 20 18:14:04 2025 +0800

    net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done
    
    [ Upstream commit e279024617134c94fd3e37470156534d5f2b3472 ]
    
    Syzbot reported a slab-use-after-free with the following call trace:
    
      ==================================================================
      BUG: KASAN: slab-use-after-free in tipc_aead_encrypt_done+0x4bd/0x510 net/tipc/crypto.c:840
      Read of size 8 at addr ffff88807a733000 by task kworker/1:0/25
    
      Call Trace:
       kasan_report+0xd9/0x110 mm/kasan/report.c:601
       tipc_aead_encrypt_done+0x4bd/0x510 net/tipc/crypto.c:840
       crypto_request_complete include/crypto/algapi.h:266
       aead_request_complete include/crypto/internal/aead.h:85
       cryptd_aead_crypt+0x3b8/0x750 crypto/cryptd.c:772
       crypto_request_complete include/crypto/algapi.h:266
       cryptd_queue_worker+0x131/0x200 crypto/cryptd.c:181
       process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
    
      Allocated by task 8355:
       kzalloc_noprof include/linux/slab.h:778
       tipc_crypto_start+0xcc/0x9e0 net/tipc/crypto.c:1466
       tipc_init_net+0x2dd/0x430 net/tipc/core.c:72
       ops_init+0xb9/0x650 net/core/net_namespace.c:139
       setup_net+0x435/0xb40 net/core/net_namespace.c:343
       copy_net_ns+0x2f0/0x670 net/core/net_namespace.c:508
       create_new_namespaces+0x3ea/0xb10 kernel/nsproxy.c:110
       unshare_nsproxy_namespaces+0xc0/0x1f0 kernel/nsproxy.c:228
       ksys_unshare+0x419/0x970 kernel/fork.c:3323
       __do_sys_unshare kernel/fork.c:3394
    
      Freed by task 63:
       kfree+0x12a/0x3b0 mm/slub.c:4557
       tipc_crypto_stop+0x23c/0x500 net/tipc/crypto.c:1539
       tipc_exit_net+0x8c/0x110 net/tipc/core.c:119
       ops_exit_list+0xb0/0x180 net/core/net_namespace.c:173
       cleanup_net+0x5b7/0xbf0 net/core/net_namespace.c:640
       process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
    
    After freed the tipc_crypto tx by delete namespace, tipc_aead_encrypt_done
    may still visit it in cryptd_queue_worker workqueue.
    
    I reproduce this issue by:
      ip netns add ns1
      ip link add veth1 type veth peer name veth2
      ip link set veth1 netns ns1
      ip netns exec ns1 tipc bearer enable media eth dev veth1
      ip netns exec ns1 tipc node set key this_is_a_master_key master
      ip netns exec ns1 tipc bearer disable media eth dev veth1
      ip netns del ns1
    
    The key of reproduction is that, simd_aead_encrypt is interrupted, leading
    to crypto_simd_usable() return false. Thus, the cryptd_queue_worker is
    triggered, and the tipc_crypto tx will be visited.
    
      tipc_disc_timeout
        tipc_bearer_xmit_skb
          tipc_crypto_xmit
            tipc_aead_encrypt
              crypto_aead_encrypt
                // encrypt()
                simd_aead_encrypt
                  // crypto_simd_usable() is false
                  child = &ctx->cryptd_tfm->base;
    
      simd_aead_encrypt
        crypto_aead_encrypt
          // encrypt()
          cryptd_aead_encrypt_enqueue
            cryptd_aead_enqueue
              cryptd_enqueue_request
                // trigger cryptd_queue_worker
                queue_work_on(smp_processor_id(), cryptd_wq, &cpu_queue->work)
    
    Fix this by holding net reference count before encrypt.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=55c12726619ff85ce1f6
    Fixes: fc1b6d6de220 ("tipc: introduce TIPC encryption & authentication")
    Signed-off-by: Wang Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: dsa: microchip: linearize skb for tail-tagging switches [+ + +]
Author: Jakob Unterwurzacher <[email protected]>
Date:   Thu May 15 09:29:19 2025 +0200

    net: dsa: microchip: linearize skb for tail-tagging switches
    
    commit ba54bce747fa9e07896c1abd9b48545f7b4b31d2 upstream.
    
    The pointer arithmentic for accessing the tail tag only works
    for linear skbs.
    
    For nonlinear skbs, it reads uninitialized memory inside the
    skb headroom, essentially randomizing the tag. I have observed
    it gets set to 6 most of the time.
    
    Example where ksz9477_rcv thinks that the packet from port 1 comes from port 6
    (which does not exist for the ksz9896 that's in use), dropping the packet.
    Debug prints added by me (not included in this patch):
    
            [  256.645337] ksz9477_rcv:323 tag0=6
            [  256.645349] skb len=47 headroom=78 headlen=0 tailroom=0
                           mac=(64,14) mac_len=14 net=(78,0) trans=78
                           shinfo(txflags=0 nr_frags=1 gso(size=0 type=0 segs=0))
                           csum(0x0 start=0 offset=0 ip_summed=0 complete_sw=0 valid=0 level=0)
                           hash(0x0 sw=0 l4=0) proto=0x00f8 pkttype=1 iif=3
                           priority=0x0 mark=0x0 alloc_cpu=0 vlan_all=0x0
                           encapsulation=0 inner(proto=0x0000, mac=0, net=0, trans=0)
            [  256.645377] dev name=end1 feat=0x0002e10200114bb3
            [  256.645386] skb headroom: 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645395] skb headroom: 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645403] skb headroom: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645411] skb headroom: 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645420] skb headroom: 00000040: ff ff ff ff ff ff 00 1c 19 f2 e2 db 08 06
            [  256.645428] skb frag:     00000000: 00 01 08 00 06 04 00 01 00 1c 19 f2 e2 db 0a 02
            [  256.645436] skb frag:     00000010: 00 83 00 00 00 00 00 00 0a 02 a0 2f 00 00 00 00
            [  256.645444] skb frag:     00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
            [  256.645452] ksz_common_rcv:92 dsa_conduit_find_user returned NULL
    
    Call skb_linearize before trying to access the tag.
    
    This patch fixes ksz9477_rcv which is used by the ksz9896 I have at
    hand, and also applies the same fix to ksz8795_rcv which seems to have
    the same problem.
    
    Signed-off-by: Jakob Unterwurzacher <[email protected]>
    CC: [email protected]
    Fixes: 016e43a26bab ("net: dsa: ksz: Add KSZ8795 tag code")
    Fixes: 8b8010fb7876 ("dsa: add support for Microchip KSZ tail tagging")
    Reviewed-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: dwmac-sun8i: Use parsed internal PHY address instead of 1 [+ + +]
Author: Paul Kocialkowski <[email protected]>
Date:   Mon May 19 18:49:36 2025 +0200

    net: dwmac-sun8i: Use parsed internal PHY address instead of 1
    
    [ Upstream commit 47653e4243f2b0a26372e481ca098936b51ec3a8 ]
    
    While the MDIO address of the internal PHY on Allwinner sun8i chips is
    generally 1, of_mdio_parse_addr is used to cleanly parse the address
    from the device-tree instead of hardcoding it.
    
    A commit reworking the code ditched the parsed value and hardcoded the
    value 1 instead, which didn't really break anything but is more fragile
    and not future-proof.
    
    Restore the initial behavior using the parsed address returned from the
    helper.
    
    Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
    Signed-off-by: Paul Kocialkowski <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Acked-by: Corentin LABBE <[email protected]>
    Tested-by: Corentin LABBE <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: mtk_ppe_offload: Allow QinQ, double ETH_P_8021Q only [+ + +]
Author: Eric Woudstra <[email protected]>
Date:   Tue Feb 25 21:15:09 2025 +0100

    net: ethernet: mtk_ppe_offload: Allow QinQ, double ETH_P_8021Q only
    
    [ Upstream commit 7fe0353606d77a32c4c7f2814833dd1c043ebdd2 ]
    
    mtk_foe_entry_set_vlan() in mtk_ppe.c already supports double vlan
    tagging, but mtk_flow_offload_replace() in mtk_ppe_offload.c only allows
    for 1 vlan tag, optionally in combination with pppoe and dsa tags.
    
    However, mtk_foe_entry_set_vlan() only allows for setting the vlan id.
    The protocol cannot be set, it is always ETH_P_8021Q, for inner and outer
    tag. This patch adds QinQ support to mtk_flow_offload_replace(), only in
    the case that both inner and outer tags are ETH_P_8021Q.
    
    Only PPPoE-in-Q (as before) and Q-in-Q are allowed. A combination
    of PPPoE and Q-in-Q is not allowed.
    
    Signed-off-by: Eric Woudstra <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ethernet: ti: cpsw_new: populate netdev of_node [+ + +]
Author: Alexander Sverdlin <[email protected]>
Date:   Mon Mar 3 08:46:57 2025 +0100

    net: ethernet: ti: cpsw_new: populate netdev of_node
    
    [ Upstream commit 7ff1c88fc89688c27f773ba956f65f0c11367269 ]
    
    So that of_find_net_device_by_node() can find CPSW ports and other DSA
    switches can be stacked downstream. Tested in conjunction with KSZ8873.
    
    Reviewed-by: Siddharth Vadapalli <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: Alexander Sverdlin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: fec: Refactor MAC reset to function [+ + +]
Author: Csókás, Bence <[email protected]>
Date:   Fri Feb 7 13:12:55 2025 +0100

    net: fec: Refactor MAC reset to function
    
    [ Upstream commit 67800d296191d0a9bde0a7776f99ca1ddfa0fc26 ]
    
    The core is reset both in `fec_restart()` (called on link-up) and
    `fec_stop()` (going to sleep, driver remove etc.). These two functions
    had their separate implementations, which was at first only a register
    write and a `udelay()` (and the accompanying block comment). However,
    since then we got soft-reset (MAC disable) and Wake-on-LAN support, which
    meant that these implementations diverged, often causing bugs.
    
    For instance, as of now, `fec_stop()` does not check for
    `FEC_QUIRK_NO_HARD_RESET`, meaning the MII/RMII mode is cleared on eg.
    a PM power-down event; and `fec_restart()` missed the refactor renaming
    the "magic" constant `1` to `FEC_ECR_RESET`.
    
    To harmonize current implementations, and eliminate this source of
    potential future bugs, refactor implementation to a common function.
    
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Csókás, Bence <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: flush_backlog() small changes [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Feb 4 14:48:25 2025 +0000

    net: flush_backlog() small changes
    
    [ Upstream commit cbe08724c18078564abefbf6591078a7c98e5e0f ]
    
    Add READ_ONCE() around reads of skb->dev->reg_state, because
    this field can be changed from other threads/cpus.
    
    Instead of calling dev_kfree_skb_irq() and kfree_skb()
    while interrupts are masked and locks held,
    use a temporary list and use __skb_queue_purge_reason()
    
    Use SKB_DROP_REASON_DEV_READY drop reason to better
    describe why these skbs are dropped.
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: Fix PRP duplicate detection [+ + +]
Author: Jaakko Karrenpalo <[email protected]>
Date:   Fri Mar 7 18:16:59 2025 +0200

    net: hsr: Fix PRP duplicate detection
    
    [ Upstream commit 05fd00e5e7b1ac60d264f72423fba38cc382b447 ]
    
    Add PRP specific function for handling duplicate
    packets. This is needed because of potential
    L2 802.1p prioritization done by network switches.
    
    The L2 prioritization can re-order the PRP packets
    from a node causing the existing implementation to
    discard the frame(s) that have been received 'late'
    because the sequence number is before the previous
    received packet. This can happen if the node is
    sending multiple frames back-to-back with different
    priority.
    
    Signed-off-by: Jaakko Karrenpalo <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ipv6: Init tunnel link-netns before registering dev [+ + +]
Author: Xiao Liang <[email protected]>
Date:   Wed Feb 19 20:50:33 2025 +0800

    net: ipv6: Init tunnel link-netns before registering dev
    
    [ Upstream commit db014522f35606031d8ac58b4aed6b1ed84f03d1 ]
    
    Currently some IPv6 tunnel drivers set tnl->net to dev_net(dev) in
    ndo_init(), which is called in register_netdevice(). However, it lacks
    the context of link-netns when we enable cross-net tunnels at device
    registration time.
    
    Let's move the init of tunnel link-netns before register_netdevice().
    
    ip6_gre has already initialized netns, so just remove the redundant
    assignment.
    
    Signed-off-by: Xiao Liang <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: lan743x: Restore SGMII CTRL register on resume [+ + +]
Author: Thangaraj Samynathan <[email protected]>
Date:   Fri May 16 09:27:19 2025 +0530

    net: lan743x: Restore SGMII CTRL register on resume
    
    [ Upstream commit 293e38ff4e4c2ba53f3fd47d8a4a9f0f0414a7a6 ]
    
    SGMII_CTRL register, which specifies the active interface, was not
    properly restored when resuming from suspend. This led to incorrect
    interface selection after resume particularly in scenarios involving
    the FPGA.
    
    To fix this:
    - Move the SGMII_CTRL setup out of the probe function.
    - Initialize the register in the hardware initialization helper function,
    which is called during both device initialization and resume.
    
    This ensures the interface configuration is consistently restored after
    suspend/resume cycles.
    
    Fixes: a46d9d37c4f4f ("net: lan743x: Add support for SGMII interface")
    Signed-off-by: Thangaraj Samynathan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: page_pool: avoid false positive warning if NAPI was never added [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Feb 6 14:56:37 2025 -0800

    net: page_pool: avoid false positive warning if NAPI was never added
    
    [ Upstream commit c1e00bc4be06cacee6307cedb9b55bbaddb5044d ]
    
    We expect NAPI to be in disabled state when page pool is torn down.
    But it is also legal if the NAPI is completely uninitialized.
    
    Reviewed-by: Mina Almasry <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: nxp-c45-tja11xx: add match_phy_device to TJA1103/TJA1104 [+ + +]
Author: Andrei Botila <[email protected]>
Date:   Fri Feb 28 17:43:19 2025 +0200

    net: phy: nxp-c45-tja11xx: add match_phy_device to TJA1103/TJA1104
    
    [ Upstream commit a06a868a0cd96bc51401cdea897313a3f6ad01a0 ]
    
    Add .match_phy_device for the existing TJAs to differentiate between
    TJA1103 and TJA1104.
    TJA1103 and TJA1104 share the same PHY_ID but TJA1104 has MACsec
    capabilities while TJA1103 doesn't.
    
    Signed-off-by: Andrei Botila <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phylink: use pl->link_interface in phylink_expects_phy() [+ + +]
Author: Choong Yong Liang <[email protected]>
Date:   Thu Feb 27 20:15:17 2025 +0800

    net: phylink: use pl->link_interface in phylink_expects_phy()
    
    [ Upstream commit b63263555eaafbf9ab1a82f2020bbee872d83759 ]
    
    The phylink_expects_phy() function allows MAC drivers to check if they are
    expecting a PHY to attach. The checking condition in phylink_expects_phy()
    aims to achieve the same result as the checking condition in
    phylink_attach_phy().
    
    However, the checking condition in phylink_expects_phy() uses
    pl->link_config.interface, while phylink_attach_phy() uses
    pl->link_interface.
    
    Initially, both pl->link_interface and pl->link_config.interface are set
    to SGMII, and pl->cfg_link_an_mode is set to MLO_AN_INBAND.
    
    When the interface switches from SGMII to 2500BASE-X,
    pl->link_config.interface is updated by phylink_major_config().
    At this point, pl->cfg_link_an_mode remains MLO_AN_INBAND, and
    pl->link_config.interface is set to 2500BASE-X.
    Subsequently, when the STMMAC interface is taken down
    administratively and brought back up, it is blocked by
    phylink_expects_phy().
    
    Since phylink_expects_phy() and phylink_attach_phy() aim to achieve the
    same result, phylink_expects_phy() should check pl->link_interface,
    which never changes, instead of pl->link_config.interface, which is
    updated by phylink_major_config().
    
    Reviewed-by: Russell King (Oracle) <[email protected]>
    Signed-off-by: Choong Yong Liang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: pktgen: fix access outside of user given buffer in pktgen_thread_write() [+ + +]
Author: Peter Seiderer <[email protected]>
Date:   Wed Feb 19 09:45:27 2025 +0100

    net: pktgen: fix access outside of user given buffer in pktgen_thread_write()
    
    [ Upstream commit 425e64440ad0a2f03bdaf04be0ae53dededbaa77 ]
    
    Honour the user given buffer size for the strn_len() calls (otherwise
    strn_len() will access memory outside of the user given buffer).
    
    Signed-off-by: Peter Seiderer <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: pktgen: fix mpls maximum labels list parsing [+ + +]
Author: Peter Seiderer <[email protected]>
Date:   Thu Feb 27 14:56:00 2025 +0100

    net: pktgen: fix mpls maximum labels list parsing
    
    [ Upstream commit 2b15a0693f70d1e8119743ee89edbfb1271b3ea8 ]
    
    Fix mpls maximum labels list parsing up to MAX_MPLS_LABELS entries (instead
    of up to MAX_MPLS_LABELS - 1).
    
    Addresses the following:
    
            $ echo "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f" > /proc/net/pktgen/lo\@0
            -bash: echo: write error: Argument list too long
    
    Signed-off-by: Peter Seiderer <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: Correct usage of maximum queue number macros [+ + +]
Author: Kunihiko Hayashi <[email protected]>
Date:   Fri Feb 21 14:18:18 2025 +0900

    net: stmmac: Correct usage of maximum queue number macros
    
    [ Upstream commit 352bc4513ec3907db71cb5674fb93a76fc341ca9 ]
    
    The maximum numbers of each Rx and Tx queues are defined by
    MTL_MAX_RX_QUEUES and MTL_MAX_TX_QUEUES respectively.
    
    There are some places where Rx and Tx are used in reverse. There is no
    issue when the Tx and Rx macros have the same value, but should correct
    usage of macros for maximum queue number to keep consistency and prevent
    unexpected mistakes.
    
    Reviewed-by: Russell King (Oracle) <[email protected]>
    Reviewed-by: Huacai Chen <[email protected]>
    Signed-off-by: Kunihiko Hayashi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: dwmac-loongson: Set correct {tx,rx}_fifo_size [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Mon Feb 10 21:43:28 2025 +0800

    net: stmmac: dwmac-loongson: Set correct {tx,rx}_fifo_size
    
    [ Upstream commit 8dbf0c7556454b52af91bae305ca71500c31495c ]
    
    Now for dwmac-loongson {tx,rx}_fifo_size are uninitialised, which means
    zero. This means dwmac-loongson doesn't support changing MTU because in
    stmmac_change_mtu() it requires the fifo size be no less than MTU. Thus,
    set the correct tx_fifo_size and rx_fifo_size for it (16KB multiplied by
    queue counts).
    
    Here {tx,rx}_fifo_size is initialised with the initial value (also the
    maximum value) of {tx,rx}_queues_to_use. So it will keep as 16KB if we
    don't change the queue count, and will be larger than 16KB if we change
    (decrease) the queue count. However stmmac_change_mtu() still work well
    with current logic (MTU cannot be larger than 16KB for stmmac).
    
    Note: the Fixes tag picked here is the oldest commit and key commit of
    the dwmac-loongson series "stmmac: Add Loongson platform support".
    
    Acked-by: Yanteng Si <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Chong Qiao <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: dwmac-rk: Validate GRF and peripheral GRF during probe [+ + +]
Author: Jonas Karlman <[email protected]>
Date:   Sat Mar 8 21:37:14 2025 +0000

    net: stmmac: dwmac-rk: Validate GRF and peripheral GRF during probe
    
    [ Upstream commit 247e84f66a3d1946193d739fec5dc3d69833fd00 ]
    
    All Rockchip GMAC variants typically write to GRF regs to control e.g.
    interface mode, speed and MAC rx/tx delay. Newer SoCs such as RK3576 and
    RK3588 use a mix of GRF and peripheral GRF regs. These syscon regmaps is
    located with help of a rockchip,grf and rockchip,php-grf phandle.
    
    However, validating the rockchip,grf and rockchip,php-grf syscon regmap
    is deferred until e.g. interface mode or speed is configured, inside the
    individual SoC specific operations.
    
    Change to validate the rockchip,grf and rockchip,php-grf syscon regmap
    at probe time to simplify all SoC specific operations.
    
    This should not introduce any backward compatibility issues as all
    GMAC nodes have been added together with a rockchip,grf phandle (and
    rockchip,php-grf where required) in their initial commit.
    
    Signed-off-by: Jonas Karlman <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: tn40xx: add pci-id of the aqr105-based Tehuti TN4010 cards [+ + +]
Author: Hans-Frieder Vogt <[email protected]>
Date:   Sat Mar 22 11:45:58 2025 +0100

    net: tn40xx: add pci-id of the aqr105-based Tehuti TN4010 cards
    
    [ Upstream commit 53377b5c2952097527b01ce2f1d9a9332f042f70 ]
    
    Add the PCI-ID of the AQR105-based Tehuti TN4010 cards to allow loading
    of the tn40xx driver on these cards. Here, I chose the detailed definition
    with the subvendor ID similar to the QT2025 cards with the PCI-ID
    TEHUTI:0x4022, because there is a card with an AQ2104 hiding amongst the
    AQR105 cards, and they all come with the same PCI-ID (TEHUTI:0x4025). But
    the AQ2104 is currently not supported.
    
    Signed-off-by: Hans-Frieder Vogt <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: tn40xx: create swnode for mdio and aqr105 phy and add to mdiobus [+ + +]
Author: Hans-Frieder Vogt <[email protected]>
Date:   Sat Mar 22 11:45:56 2025 +0100

    net: tn40xx: create swnode for mdio and aqr105 phy and add to mdiobus
    
    [ Upstream commit 25b6a6d29d4082f6ac231c056ac321a996eb55c9 ]
    
    In case of an AQR105-based device, create a software node for the mdio
    function, with a child node for the Aquantia AQR105 PHY, providing a
    firmware-name (and a bit more, which may be used for future checks) to
    allow the PHY to load a MAC specific firmware from the file system.
    
    The name of the PHY software node follows the naming convention suggested
    in the patch for the mdiobus_scan function (in the same patch series).
    
    Signed-off-by: Hans-Frieder Vogt <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: xgene-v2: remove incorrect ACPI_PTR annotation [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Tue Feb 25 17:33:33 2025 +0100

    net: xgene-v2: remove incorrect ACPI_PTR annotation
    
    [ Upstream commit 01358e8fe922f716c05d7864ac2213b2440026e7 ]
    
    Building with W=1 shows a warning about xge_acpi_match being unused when
    CONFIG_ACPI is disabled:
    
    drivers/net/ethernet/apm/xgene-v2/main.c:723:36: error: unused variable 'xge_acpi_match' [-Werror,-Wunused-const-variable]
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netdevsim: allow normal queue reset while down [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Thu Feb 6 14:56:38 2025 -0800

    netdevsim: allow normal queue reset while down
    
    [ Upstream commit 285b3f78eabd951e59e98f01f86abaaa6c76cd44 ]
    
    Resetting queues while the device is down should be legal.
    Allow it, test it. Ideally we'd test this with a real device
    supporting devmem but I don't have access to such devices.
    
    Reviewed-by: Mina Almasry <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netdevsim: call napi_schedule from a timer context [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Wed Feb 19 08:41:20 2025 -0800

    netdevsim: call napi_schedule from a timer context
    
    [ Upstream commit bf3624cf1c3708284c53ed99a1c43f2e104dc2dd ]
    
    The netdevsim driver was experiencing NOHZ tick-stop errors during packet
    transmission due to pending softirq work when calling napi_schedule().
    This issue was observed when running the netconsole selftest, which
    triggered the following error message:
    
      NOHZ tick-stop error: local softirq work is pending, handler #08!!!
    
    To fix this issue, introduce a timer that schedules napi_schedule()
    from a timer context instead of calling it directly from the TX path.
    
    Create an hrtimer for each queue and kick it from the TX path,
    which then schedules napi_schedule() from the timer context.
    
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Breno Leitao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: conntrack: Bound nf_conntrack sysctl writes [+ + +]
Author: Nicolas Bouchinet <[email protected]>
Date:   Wed Jan 29 18:06:30 2025 +0100

    netfilter: conntrack: Bound nf_conntrack sysctl writes
    
    [ Upstream commit 8b6861390ffee6b8ed78b9395e3776c16fec6579 ]
    
    nf_conntrack_max and nf_conntrack_expect_max sysctls were authorized to
    be written any negative value, which would then be stored in the
    unsigned int variables nf_conntrack_max and nf_ct_expect_max variables.
    
    While the do_proc_dointvec_conv function is supposed to limit writing
    handled by proc_dointvec proc_handler to INT_MAX. Such a negative value
    being written in an unsigned int leads to a very high value, exceeding
    this limit.
    
    Moreover, the nf_conntrack_expect_max sysctl documentation specifies the
    minimum value is 1.
    
    The proc_handlers have thus been updated to proc_dointvec_minmax in
    order to specify the following write bounds :
    
    * Bound nf_conntrack_max sysctl writings between SYSCTL_ZERO
      and SYSCTL_INT_MAX.
    
    * Bound nf_conntrack_expect_max sysctl writings between SYSCTL_ONE
      and SYSCTL_INT_MAX as defined in the sysctl documentation.
    
    With this patch applied, sysctl writes outside the defined in the bound
    will thus lead to a write error :
    
    ```
    sysctl -w net.netfilter.nf_conntrack_expect_max=-1
    sysctl: setting key "net.netfilter.nf_conntrack_expect_max": Invalid argument
    ```
    
    Signed-off-by: Nicolas Bouchinet <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFS: Don't allow waiting for exiting tasks [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Fri Mar 28 13:19:18 2025 -0400

    NFS: Don't allow waiting for exiting tasks
    
    [ Upstream commit 8d3ca331026a7f9700d3747eed59a67b8f828cdc ]
    
    Once a task calls exit_signals() it can no longer be signalled. So do
    not allow it to do killable waits.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Thu Mar 27 19:20:53 2025 -0400

    NFSv4: Check for delegation validity in nfs_start_delegation_return_locked()
    
    [ Upstream commit 9e8f324bd44c1fe026b582b75213de4eccfa1163 ]
    
    Check that the delegation is still attached after taking the spin lock
    in nfs_start_delegation_return_locked().
    
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

NFSv4: Treat ENETUNREACH errors as fatal for state recovery [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 20:35:33 2025 -0400

    NFSv4: Treat ENETUNREACH errors as fatal for state recovery
    
    [ Upstream commit 0af5fb5ed3d2fd9e110c6112271f022b744a849a ]
    
    If a containerised process is killed and causes an ENETUNREACH or
    ENETDOWN error to be propagated to the state manager, then mark the
    nfs_client as being dead so that we don't loop in functions that are
    expecting recovery to succeed.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nilfs2: fix deadlock warnings caused by lock dependency in init_nilfs() [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Sat May 3 14:33:14 2025 +0900

    nilfs2: fix deadlock warnings caused by lock dependency in init_nilfs()
    
    commit fb881cd7604536b17a1927fb0533f9a6982ffcc5 upstream.
    
    After commit c0e473a0d226 ("block: fix race between set_blocksize and read
    paths") was merged, set_blocksize() called by sb_set_blocksize() now locks
    the inode of the backing device file.  As a result of this change, syzbot
    started reporting deadlock warnings due to a circular dependency involving
    the semaphore "ns_sem" of the nilfs object, the inode lock of the backing
    device file, and the locks that this inode lock is transitively dependent
    on.
    
    This is caused by a new lock dependency added by the above change, since
    init_nilfs() calls sb_set_blocksize() in the lock section of "ns_sem".
    However, these warnings are false positives because init_nilfs() is called
    in the early stage of the mount operation and the filesystem has not yet
    started.
    
    The reason why "ns_sem" is locked in init_nilfs() was to avoid a race
    condition in nilfs_fill_super() caused by sharing a nilfs object among
    multiple filesystem instances (super block structures) in the early
    implementation.  However, nilfs objects and super block structures have
    long ago become one-to-one, and there is no longer any need to use the
    semaphore there.
    
    So, fix this issue by removing the use of the semaphore "ns_sem" in
    init_nilfs().
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c0e473a0d226 ("block: fix race between set_blocksize and read paths")
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=00f7f5b884b117ee6773
    Tested-by: [email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=f30591e72bfc24d4715b
    Tested-by: [email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
null_blk: generate null_blk configfs features string [+ + +]
Author: Shin'ichiro Kawasaki <[email protected]>
Date:   Wed Feb 26 19:06:09 2025 +0900

    null_blk: generate null_blk configfs features string
    
    [ Upstream commit 2cadb8ef25a6157b5bd3e8fe0d3e23f32defec25 ]
    
    The null_blk configfs file 'features' provides a string that lists
    available null_blk features for userspace programs to reference.
    The string is defined as a long constant in the code, which tends to be
    forgotten for updates. It also causes checkpatch.pl to report
    "WARNING: quoted string split across lines".
    
    To avoid these drawbacks, generate the feature string on the fly. Refer
    to the ca_name field of each element in the nullb_device_attrs table and
    concatenate them in the given buffer. Also, sorted nullb_device_attrs
    table elements in alphabetical order.
    
    Of note is that the feature "index" was missing before this commit.
    This commit adds it to the generated string.
    
    Suggested-by: Bart Van Assche <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Chaitanya Kulkarni <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Shin'ichiro Kawasaki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme-pci: add quirks for device 126f:1001 [+ + +]
Author: Wentao Guan <[email protected]>
Date:   Tue Apr 22 20:17:25 2025 +0800

    nvme-pci: add quirks for device 126f:1001
    
    [ Upstream commit 5b960f92ac3e5b4d7f60a506a6b6735eead1da01 ]
    
    This commit adds NVME_QUIRK_NO_DEEPEST_PS and NVME_QUIRK_BOGUS_NID for
    device [126f:1001].
    
    It is similar to commit e89086c43f05 ("drivers/nvme: Add quirks for
    device 126f:2262")
    
    Diff is according the dmesg, use NVME_QUIRK_IGNORE_DEV_SUBNQN.
    
    dmesg | grep -i nvme0:
      nvme nvme0: pci function 0000:01:00.0
      nvme nvme0: missing or invalid SUBNQN field.
      nvme nvme0: 12/0/0 default/read/poll queues
    
    Link:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e89086c43f0500bc7c4ce225495b73b8ce234c1f
    Signed-off-by: Wentao Guan <[email protected]>
    Signed-off-by: WangYuli <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme-pci: add quirks for WDC Blue SN550 15b7:5009 [+ + +]
Author: Wentao Guan <[email protected]>
Date:   Thu Apr 24 10:40:10 2025 +0800

    nvme-pci: add quirks for WDC Blue SN550 15b7:5009
    
    [ Upstream commit ab35ad950d439ec3409509835d229b3d93d3c7f9 ]
    
    Add two quirks for the WDC Blue SN550 (PCI ID 15b7:5009) based on user
    reports and hardware analysis:
    
     - NVME_QUIRK_NO_DEEPEST_PS:
            liaozw talked to me the problem and solved with
            nvme_core.default_ps_max_latency_us=0, so add the quirk.
            I also found some reports in the following link.
    
     - NVME_QUIRK_BROKEN_MSI:
            after get the lspci from Jack Rio.
            I think that the disk also have NVME_QUIRK_BROKEN_MSI.
            described in commit d5887dc6b6c0 ("nvme-pci: Add quirk for broken MSIs")
            as sean said in link which match the MSI 1/32 and MSI-X 17.
    
    Log:
    lspci -nn | grep -i memory
    03:00.0 Non-Volatile memory controller [0108]: Sandisk Corp SanDisk Ultra 3D / WD PC SN530, IX SN530, Blue SN550 NVMe SSD (DRAM-less) [15b7:5009] (rev 01)
    lspci -v -d 15b7:5009
    03:00.0 Non-Volatile memory controller: Sandisk Corp SanDisk Ultra 3D / WD PC SN530, IX SN530, Blue SN550 NVMe SSD (DRAM-less) (rev 01) (prog-if 02 [NVM Express])
            Subsystem: Sandisk Corp WD Blue SN550 NVMe SSD
            Flags: bus master, fast devsel, latency 0, IRQ 35, IOMMU group 10
            Memory at fe800000 (64-bit, non-prefetchable) [size=16K]
            Memory at fe804000 (64-bit, non-prefetchable) [size=256]
            Capabilities: [80] Power Management version 3
            Capabilities: [90] MSI: Enable- Count=1/32 Maskable- 64bit+
            Capabilities: [b0] MSI-X: Enable+ Count=17 Masked-
            Capabilities: [c0] Express Endpoint, MSI 00
            Capabilities: [100] Advanced Error Reporting
            Capabilities: [150] Device Serial Number 00-00-00-00-00-00-00-00
            Capabilities: [1b8] Latency Tolerance Reporting
            Capabilities: [300] Secondary PCI Express
            Capabilities: [900] L1 PM Substates
            Kernel driver in use: nvme
    dmesg | grep nvme
    [    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.12.20-amd64-desktop-rolling root=UUID= ro splash quiet nvme_core.default_ps_max_latency_us=0 DEEPIN_GFXMODE=
    [    0.059301] Kernel command line: BOOT_IMAGE=/vmlinuz-6.12.20-amd64-desktop-rolling root=UUID= ro splash quiet nvme_core.default_ps_max_latency_us=0 DEEPIN_GFXMODE=
    [    0.542430] nvme nvme0: pci function 0000:03:00.0
    [    0.560426] nvme nvme0: allocated 32 MiB host memory buffer.
    [    0.562491] nvme nvme0: 16/0/0 default/read/poll queues
    [    0.567764]  nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8 p9
    [    6.388726] EXT4-fs (nvme0n1p7): mounted filesystem ro with ordered data mode. Quota mode: none.
    [    6.893421] EXT4-fs (nvme0n1p7): re-mounted r/w. Quota mode: none.
    [    7.125419] Adding 16777212k swap on /dev/nvme0n1p8.  Priority:-2 extents:1 across:16777212k SS
    [    7.157588] EXT4-fs (nvme0n1p6): mounted filesystem r/w with ordered data mode. Quota mode: none.
    [    7.165021] EXT4-fs (nvme0n1p9): mounted filesystem r/w with ordered data mode. Quota mode: none.
    [    8.036932] nvme nvme0: using unchecked data buffer
    [    8.096023] block nvme0n1: No UUID available providing old NGUID
    
    Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d5887dc6b6c054d0da3cd053afc15b7be1f45ff6
    Link: https://lore.kernel.org/all/[email protected]/
    Reported-by: liaozw <[email protected]>
    Closes: https://bbs.deepin.org.cn/post/286300
    Reported-by: rugk <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=208123
    Signed-off-by: Wentao Guan <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmem: core: fix bit offsets of more than one byte [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 11 12:22:46 2025 +0100

    nvmem: core: fix bit offsets of more than one byte
    
    [ Upstream commit 7a06ef75107799675ea6e4d73b9df37e18e352a8 ]
    
    If the NVMEM specifies a stride to access data, reading particular cell
    might require bit offset that is bigger than one byte. Rework NVMEM core
    code to support bit offsets of more than 8 bits.
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmem: core: update raw_len if the bit reading is required [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 11 12:22:48 2025 +0100

    nvmem: core: update raw_len if the bit reading is required
    
    [ Upstream commit 6786484223d5705bf7f919c1e5055d478ebeec32 ]
    
    If NVMEM cell uses bit offset or specifies bit truncation, update
    raw_len manually (following the cell->bytes update), ensuring that the
    NVMEM access is still word-aligned.
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmem: core: verify cell's raw_len [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 11 12:22:47 2025 +0100

    nvmem: core: verify cell's raw_len
    
    [ Upstream commit 13bcd440f2ff38cd7e42a179c223d4b833158b33 ]
    
    Check that the NVMEM cell's raw_len is a aligned to word_size. Otherwise
    Otherwise drivers might face incomplete read while accessing the last
    part of the NVMEM cell.
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmem: qfprom: switch to 4-byte aligned reads [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 11 12:22:49 2025 +0100

    nvmem: qfprom: switch to 4-byte aligned reads
    
    [ Upstream commit 3566a737db87a9bf360c2fd36433c5149f805f2e ]
    
    All platforms since Snapdragon 8 Gen1 (SM8450) require using 4-byte
    reads to access QFPROM data. While older platforms were more than happy
    with 1-byte reads, change the qfprom driver to use 4-byte reads for all
    the platforms. Specify stride and word size of 4 bytes. To retain
    compatibility with the existing DT and to simplify porting data from
    vendor kernels, use fixup_dt_cell_info in order to bump alignment
    requirements.
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmem: rockchip-otp: add rk3576 variant data [+ + +]
Author: Heiko Stuebner <[email protected]>
Date:   Fri Apr 11 12:22:42 2025 +0100

    nvmem: rockchip-otp: add rk3576 variant data
    
    [ Upstream commit 50d75a13a9ce880a5ef07a4ccc63ba561cc2e69a ]
    
    The variant works very similar to the rk3588, just with a different
    read-offset and size.
    
    Signed-off-by: Heiko Stuebner <[email protected]>
    Tested-by: Nicolas Frattaroli <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmem: rockchip-otp: Move read-offset into variant-data [+ + +]
Author: Heiko Stuebner <[email protected]>
Date:   Fri Apr 11 12:22:39 2025 +0100

    nvmem: rockchip-otp: Move read-offset into variant-data
    
    [ Upstream commit 6907e8093b3070d877ee607e5ceede60cfd08bde ]
    
    The RK3588 has an offset into the OTP area where the readable area begins
    and automatically adds this to the start address.
    Other variants are very much similar to rk3588, just with a different
    offset, so move that value into variant-data.
    
    To match the size in bytes, store this value also in bytes and not in
    number of blocks.
    
    Signed-off-by: Heiko Stuebner <[email protected]>
    Tested-by: Nicolas Frattaroli <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmet-tcp: don't restore null sk_state_change [+ + +]
Author: Alistair Francis <[email protected]>
Date:   Wed Apr 23 16:06:21 2025 +1000

    nvmet-tcp: don't restore null sk_state_change
    
    [ Upstream commit 46d22b47df2741996af277a2838b95f130436c13 ]
    
    queue->state_change is set as part of nvmet_tcp_set_queue_sock(), but if
    the TCP connection isn't established when nvmet_tcp_set_queue_sock() is
    called then queue->state_change isn't set and sock->sk->sk_state_change
    isn't replaced.
    
    As such we don't need to restore sock->sk->sk_state_change if
    queue->state_change is NULL.
    
    This avoids NULL pointer dereferences such as this:
    
    [  286.462026][    C0] BUG: kernel NULL pointer dereference, address: 0000000000000000
    [  286.462814][    C0] #PF: supervisor instruction fetch in kernel mode
    [  286.463796][    C0] #PF: error_code(0x0010) - not-present page
    [  286.464392][    C0] PGD 8000000140620067 P4D 8000000140620067 PUD 114201067 PMD 0
    [  286.465086][    C0] Oops: Oops: 0010 [#1] SMP KASAN PTI
    [  286.465559][    C0] CPU: 0 UID: 0 PID: 1628 Comm: nvme Not tainted 6.15.0-rc2+ #11 PREEMPT(voluntary)
    [  286.466393][    C0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    [  286.467147][    C0] RIP: 0010:0x0
    [  286.467420][    C0] Code: Unable to access opcode bytes at 0xffffffffffffffd6.
    [  286.467977][    C0] RSP: 0018:ffff8883ae008580 EFLAGS: 00010246
    [  286.468425][    C0] RAX: 0000000000000000 RBX: ffff88813fd34100 RCX: ffffffffa386cc43
    [  286.469019][    C0] RDX: 1ffff11027fa68b6 RSI: 0000000000000008 RDI: ffff88813fd34100
    [  286.469545][    C0] RBP: ffff88813fd34160 R08: 0000000000000000 R09: ffffed1027fa682c
    [  286.470072][    C0] R10: ffff88813fd34167 R11: 0000000000000000 R12: ffff88813fd344c3
    [  286.470585][    C0] R13: ffff88813fd34112 R14: ffff88813fd34aec R15: ffff888132cdd268
    [  286.471070][    C0] FS:  00007fe3c04c7d80(0000) GS:ffff88840743f000(0000) knlGS:0000000000000000
    [  286.471644][    C0] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  286.472543][    C0] CR2: ffffffffffffffd6 CR3: 000000012daca000 CR4: 00000000000006f0
    [  286.473500][    C0] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  286.474467][    C0] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
    [  286.475453][    C0] Call Trace:
    [  286.476102][    C0]  <IRQ>
    [  286.476719][    C0]  tcp_fin+0x2bb/0x440
    [  286.477429][    C0]  tcp_data_queue+0x190f/0x4e60
    [  286.478174][    C0]  ? __build_skb_around+0x234/0x330
    [  286.478940][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.479659][    C0]  ? __pfx_tcp_data_queue+0x10/0x10
    [  286.480431][    C0]  ? tcp_try_undo_loss+0x640/0x6c0
    [  286.481196][    C0]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
    [  286.482046][    C0]  ? kvm_clock_get_cycles+0x14/0x30
    [  286.482769][    C0]  ? ktime_get+0x66/0x150
    [  286.483433][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.484146][    C0]  tcp_rcv_established+0x6e4/0x2050
    [  286.484857][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.485523][    C0]  ? ipv4_dst_check+0x160/0x2b0
    [  286.486203][    C0]  ? __pfx_tcp_rcv_established+0x10/0x10
    [  286.486917][    C0]  ? lock_release+0x217/0x2c0
    [  286.487595][    C0]  tcp_v4_do_rcv+0x4d6/0x9b0
    [  286.488279][    C0]  tcp_v4_rcv+0x2af8/0x3e30
    [  286.488904][    C0]  ? raw_local_deliver+0x51b/0xad0
    [  286.489551][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.490198][    C0]  ? __pfx_tcp_v4_rcv+0x10/0x10
    [  286.490813][    C0]  ? __pfx_raw_local_deliver+0x10/0x10
    [  286.491487][    C0]  ? __pfx_nf_confirm+0x10/0x10 [nf_conntrack]
    [  286.492275][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.492900][    C0]  ip_protocol_deliver_rcu+0x8f/0x370
    [  286.493579][    C0]  ip_local_deliver_finish+0x297/0x420
    [  286.494268][    C0]  ip_local_deliver+0x168/0x430
    [  286.494867][    C0]  ? __pfx_ip_local_deliver+0x10/0x10
    [  286.495498][    C0]  ? __pfx_ip_local_deliver_finish+0x10/0x10
    [  286.496204][    C0]  ? ip_rcv_finish_core+0x19a/0x1f20
    [  286.496806][    C0]  ? lock_release+0x217/0x2c0
    [  286.497414][    C0]  ip_rcv+0x455/0x6e0
    [  286.497945][    C0]  ? __pfx_ip_rcv+0x10/0x10
    [  286.498550][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.499137][    C0]  ? __pfx_ip_rcv_finish+0x10/0x10
    [  286.499763][    C0]  ? lock_release+0x217/0x2c0
    [  286.500327][    C0]  ? dl_scaled_delta_exec+0xd1/0x2c0
    [  286.500922][    C0]  ? __pfx_ip_rcv+0x10/0x10
    [  286.501480][    C0]  __netif_receive_skb_one_core+0x166/0x1b0
    [  286.502173][    C0]  ? __pfx___netif_receive_skb_one_core+0x10/0x10
    [  286.502903][    C0]  ? lock_acquire+0x2b2/0x310
    [  286.503487][    C0]  ? process_backlog+0x372/0x1350
    [  286.504087][    C0]  ? lock_release+0x217/0x2c0
    [  286.504642][    C0]  process_backlog+0x3b9/0x1350
    [  286.505214][    C0]  ? process_backlog+0x372/0x1350
    [  286.505779][    C0]  __napi_poll.constprop.0+0xa6/0x490
    [  286.506363][    C0]  net_rx_action+0x92e/0xe10
    [  286.506889][    C0]  ? __pfx_net_rx_action+0x10/0x10
    [  286.507437][    C0]  ? timerqueue_add+0x1f0/0x320
    [  286.507977][    C0]  ? sched_clock_cpu+0x68/0x540
    [  286.508492][    C0]  ? lock_acquire+0x2b2/0x310
    [  286.509043][    C0]  ? kvm_sched_clock_read+0xd/0x20
    [  286.509607][    C0]  ? handle_softirqs+0x1aa/0x7d0
    [  286.510187][    C0]  handle_softirqs+0x1f2/0x7d0
    [  286.510754][    C0]  ? __pfx_handle_softirqs+0x10/0x10
    [  286.511348][    C0]  ? irqtime_account_irq+0x181/0x290
    [  286.511937][    C0]  ? __dev_queue_xmit+0x85d/0x3450
    [  286.512510][    C0]  do_softirq.part.0+0x89/0xc0
    [  286.513100][    C0]  </IRQ>
    [  286.513548][    C0]  <TASK>
    [  286.513953][    C0]  __local_bh_enable_ip+0x112/0x140
    [  286.514522][    C0]  ? __dev_queue_xmit+0x85d/0x3450
    [  286.515072][    C0]  __dev_queue_xmit+0x872/0x3450
    [  286.515619][    C0]  ? nft_do_chain+0xe16/0x15b0 [nf_tables]
    [  286.516252][    C0]  ? __pfx___dev_queue_xmit+0x10/0x10
    [  286.516817][    C0]  ? selinux_ip_postroute+0x43c/0xc50
    [  286.517433][    C0]  ? __pfx_selinux_ip_postroute+0x10/0x10
    [  286.518061][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.518606][    C0]  ? ip_output+0x164/0x4a0
    [  286.519149][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.519671][    C0]  ? ip_finish_output2+0x17d5/0x1fb0
    [  286.520258][    C0]  ip_finish_output2+0xb4b/0x1fb0
    [  286.520787][    C0]  ? __pfx_ip_finish_output2+0x10/0x10
    [  286.521355][    C0]  ? __ip_finish_output+0x15d/0x750
    [  286.521890][    C0]  ip_output+0x164/0x4a0
    [  286.522372][    C0]  ? __pfx_ip_output+0x10/0x10
    [  286.522872][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.523402][    C0]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
    [  286.524031][    C0]  ? __pfx_ip_finish_output+0x10/0x10
    [  286.524605][    C0]  ? __ip_queue_xmit+0x999/0x2260
    [  286.525200][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.525744][    C0]  ? ipv4_dst_check+0x16a/0x2b0
    [  286.526279][    C0]  ? lock_release+0x217/0x2c0
    [  286.526793][    C0]  __ip_queue_xmit+0x1883/0x2260
    [  286.527324][    C0]  ? __skb_clone+0x54c/0x730
    [  286.527827][    C0]  __tcp_transmit_skb+0x209b/0x37a0
    [  286.528374][    C0]  ? __pfx___tcp_transmit_skb+0x10/0x10
    [  286.528952][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.529472][    C0]  ? seqcount_lockdep_reader_access.constprop.0+0x82/0x90
    [  286.530152][    C0]  ? trace_hardirqs_on+0x12/0x120
    [  286.530691][    C0]  tcp_write_xmit+0xb81/0x88b0
    [  286.531224][    C0]  ? mod_memcg_state+0x4d/0x60
    [  286.531736][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.532253][    C0]  __tcp_push_pending_frames+0x90/0x320
    [  286.532826][    C0]  tcp_send_fin+0x141/0xb50
    [  286.533352][    C0]  ? __pfx_tcp_send_fin+0x10/0x10
    [  286.533908][    C0]  ? __local_bh_enable_ip+0xab/0x140
    [  286.534495][    C0]  inet_shutdown+0x243/0x320
    [  286.535077][    C0]  nvme_tcp_alloc_queue+0xb3b/0x2590 [nvme_tcp]
    [  286.535709][    C0]  ? do_raw_spin_lock+0x129/0x260
    [  286.536314][    C0]  ? __pfx_nvme_tcp_alloc_queue+0x10/0x10 [nvme_tcp]
    [  286.536996][    C0]  ? do_raw_spin_unlock+0x54/0x1e0
    [  286.537550][    C0]  ? _raw_spin_unlock+0x29/0x50
    [  286.538127][    C0]  ? do_raw_spin_lock+0x129/0x260
    [  286.538664][    C0]  ? __pfx_do_raw_spin_lock+0x10/0x10
    [  286.539249][    C0]  ? nvme_tcp_alloc_admin_queue+0xd5/0x340 [nvme_tcp]
    [  286.539892][    C0]  ? __wake_up+0x40/0x60
    [  286.540392][    C0]  nvme_tcp_alloc_admin_queue+0xd5/0x340 [nvme_tcp]
    [  286.541047][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.541589][    C0]  nvme_tcp_setup_ctrl+0x8b/0x7a0 [nvme_tcp]
    [  286.542254][    C0]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
    [  286.542887][    C0]  ? __pfx_nvme_tcp_setup_ctrl+0x10/0x10 [nvme_tcp]
    [  286.543568][    C0]  ? trace_hardirqs_on+0x12/0x120
    [  286.544166][    C0]  ? _raw_spin_unlock_irqrestore+0x35/0x60
    [  286.544792][    C0]  ? nvme_change_ctrl_state+0x196/0x2e0 [nvme_core]
    [  286.545477][    C0]  nvme_tcp_create_ctrl+0x839/0xb90 [nvme_tcp]
    [  286.546126][    C0]  nvmf_dev_write+0x3db/0x7e0 [nvme_fabrics]
    [  286.546775][    C0]  ? rw_verify_area+0x69/0x520
    [  286.547334][    C0]  vfs_write+0x218/0xe90
    [  286.547854][    C0]  ? do_syscall_64+0x9f/0x190
    [  286.548408][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.549037][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.549659][    C0]  ? __pfx_vfs_write+0x10/0x10
    [  286.550259][    C0]  ? do_syscall_64+0x9f/0x190
    [  286.550840][    C0]  ? syscall_exit_to_user_mode+0x8e/0x280
    [  286.551516][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.552180][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.552834][    C0]  ? ksys_read+0xf5/0x1c0
    [  286.553386][    C0]  ? __pfx_ksys_read+0x10/0x10
    [  286.553964][    C0]  ksys_write+0xf5/0x1c0
    [  286.554499][    C0]  ? __pfx_ksys_write+0x10/0x10
    [  286.555072][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.555698][    C0]  ? syscall_exit_to_user_mode+0x93/0x280
    [  286.556319][    C0]  ? do_syscall_64+0x54/0x190
    [  286.556866][    C0]  do_syscall_64+0x93/0x190
    [  286.557420][    C0]  ? rcu_read_unlock+0x17/0x60
    [  286.557986][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.558526][    C0]  ? lock_release+0x217/0x2c0
    [  286.559087][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.559659][    C0]  ? count_memcg_events.constprop.0+0x4a/0x60
    [  286.560476][    C0]  ? exc_page_fault+0x7a/0x110
    [  286.561064][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.561647][    C0]  ? lock_release+0x217/0x2c0
    [  286.562257][    C0]  ? do_user_addr_fault+0x171/0xa00
    [  286.562839][    C0]  ? do_user_addr_fault+0x4a2/0xa00
    [  286.563453][    C0]  ? irqentry_exit_to_user_mode+0x84/0x270
    [  286.564112][    C0]  ? rcu_is_watching+0x11/0xb0
    [  286.564677][    C0]  ? irqentry_exit_to_user_mode+0x84/0x270
    [  286.565317][    C0]  ? trace_hardirqs_on_prepare+0xdb/0x120
    [  286.565922][    C0]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [  286.566542][    C0] RIP: 0033:0x7fe3c05e6504
    [  286.567102][    C0] Code: c7 00 16 00 00 00 b8 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 80 3d c5 8b 10 00 00 74 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 55 48 89 e5 48 83 ec 20 48 89
    [  286.568931][    C0] RSP: 002b:00007fff76444f58 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
    [  286.569807][    C0] RAX: ffffffffffffffda RBX: 000000003b40d930 RCX: 00007fe3c05e6504
    [  286.570621][    C0] RDX: 00000000000000cf RSI: 000000003b40d930 RDI: 0000000000000003
    [  286.571443][    C0] RBP: 0000000000000003 R08: 00000000000000cf R09: 000000003b40d930
    [  286.572246][    C0] R10: 0000000000000000 R11: 0000000000000202 R12: 000000003b40cd60
    [  286.573069][    C0] R13: 00000000000000cf R14: 00007fe3c07417f8 R15: 00007fe3c073502e
    [  286.573886][    C0]  </TASK>
    
    Closes: https://lore.kernel.org/linux-nvme/5hdonndzoqa265oq3bj6iarwtfk5dewxxjtbjvn5uqnwclpwt6@a2n6w3taxxex/
    Signed-off-by: Alistair Francis <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Tested-by: Shin'ichiro Kawasaki <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmet: pci-epf: clear completion queue IRQ flag on delete [+ + +]
Author: Damien Le Moal <[email protected]>
Date:   Fri May 9 08:25:00 2025 +0900

    nvmet: pci-epf: clear completion queue IRQ flag on delete
    
    [ Upstream commit 85adf2094abb9084770dc4ab302aaa9c5d26dd2d ]
    
    The function nvmet_pci_epf_delete_cq() unconditionally calls
    nvmet_pci_epf_remove_irq_vector() even for completion queues that do not
    have interrupts enabled. Furthermore, for completion queues that do
    have IRQ enabled, deleting and re-creating the completion queue leaves
    the flag NVMET_PCI_EPF_Q_IRQ_ENABLED set, even if the completion queue
    is being re-created with IRQ disabled.
    
    Fix these issues by calling nvmet_pci_epf_remove_irq_vector() only if
    NVMET_PCI_EPF_Q_IRQ_ENABLED is set and make sure to always clear that
    flag.
    
    Fixes: 0faa0fe6f90e ("nvmet: New NVMe PCI endpoint function target driver")
    Cc: [email protected]
    Signed-off-by: Damien Le Moal <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvmet: pci-epf: Keep completion queues mapped [+ + +]
Author: Damien Le Moal <[email protected]>
Date:   Thu Mar 13 17:22:18 2025 +0900

    nvmet: pci-epf: Keep completion queues mapped
    
    [ Upstream commit ea7789c1541084a3dae65ffd36778348dd98f61b ]
    
    Instead of mapping and unmapping the completion queues memory to the
    host PCI address space whenever nvmet_pci_epf_cq_work() is called, map
    a completion queue to the host PCI address space when the completion
    queue is created with nvmet_pci_epf_create_cq() and unmap it when the
    completion queue is deleted with nvmet_pci_epf_delete_cq().
    
    This removes the completion queue mapping/unmapping from
    nvmet_pci_epf_cq_work() and significantly increases performance. For
    a single job 4K random read QD=1 workload, the IOPS is increased from
    23 KIOPS to 25 KIOPS. Some significant throughput increasde for high
    queue depth and large IOs workloads can also be seen.
    
    Since the functions nvmet_pci_epf_map_queue() and
    nvmet_pci_epf_unmap_queue() are called respectively only from
    nvmet_pci_epf_create_cq() and nvmet_pci_epf_delete_cq(), these functions
    are removed and open-coded in their respective call sites.
    
    Signed-off-by: Damien Le Moal <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Stable-dep-of: 85adf2094abb ("nvmet: pci-epf: clear completion queue IRQ flag on delete")
    Signed-off-by: Sasha Levin <[email protected]>

 
objtool: Fix error handling inconsistencies in check() [+ + +]
Author: Josh Poimboeuf <[email protected]>
Date:   Fri Mar 14 12:29:00 2025 -0700

    objtool: Fix error handling inconsistencies in check()
    
    [ Upstream commit b745962cb97569aad026806bb0740663cf813147 ]
    
    Make sure all fatal errors are funneled through the 'out' label with a
    negative ret.
    
    Signed-off-by: Josh Poimboeuf <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Brendan Jackman <[email protected]>
    Link: https://lore.kernel.org/r/0f49d6a27a080b4012e84e6df1e23097f44cc082.1741975349.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <[email protected]>

objtool: Properly disable uaccess validation [+ + +]
Author: Josh Poimboeuf <[email protected]>
Date:   Mon Mar 24 14:55:58 2025 -0700

    objtool: Properly disable uaccess validation
    
    [ Upstream commit e1a9dda74dbffbc3fa2069ff418a1876dc99fb14 ]
    
    If opts.uaccess isn't set, the uaccess validation is disabled, but only
    partially: it doesn't read the uaccess_safe_builtin list but still tries
    to do the validation.  Disable it completely to prevent false warnings.
    
    Signed-off-by: Josh Poimboeuf <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/0e95581c1d2107fb5f59418edf2b26bba38b0cbb.1742852846.git.jpoimboe@kernel.org
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Fix APR entry mapping based on APR_LMT_CFG [+ + +]
Author: Geetha sowjanya <[email protected]>
Date:   Wed May 21 11:38:34 2025 +0530

    octeontx2-af: Fix APR entry mapping based on APR_LMT_CFG
    
    [ Upstream commit a6ae7129819ad20788e610261246e71736543b8b ]
    
    The current implementation maps the APR table using a fixed size,
    which can lead to incorrect mapping when the number of PFs and VFs
    varies.
    This patch corrects the mapping by calculating the APR table
    size dynamically based on the values configured in the
    APR_LMT_CFG register, ensuring accurate representation
    of APR entries in debugfs.
    
    Fixes: 0daa55d033b0 ("octeontx2-af: cn10k: debugfs for dumping LMTST map table").
    Signed-off-by: Geetha sowjanya <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Octeontx2-af: RPM: Register driver with PCI subsys IDs [+ + +]
Author: Hariprasad Kelam <[email protected]>
Date:   Mon Feb 24 09:26:03 2025 +0530

    Octeontx2-af: RPM: Register driver with PCI subsys IDs
    
    [ Upstream commit fc9167192f29485be5621e2e9c8208b717b65753 ]
    
    Although the PCI device ID and Vendor ID for the RPM (MAC) block
    have remained the same across Octeon CN10K and the next-generation
    CN20K silicon, Hardware architecture has changed (NIX mapped RPMs
    and RFOE Mapped RPMs).
    
    Add PCI Subsystem IDs to the device table to ensure that this driver
    can be probed from NIX mapped RPM devices only.
    
    Signed-off-by: Hariprasad Kelam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Set LMT_ENA bit for APR table entries [+ + +]
Author: Subbaraya Sundeep <[email protected]>
Date:   Wed May 21 11:38:33 2025 +0530

    octeontx2-af: Set LMT_ENA bit for APR table entries
    
    [ Upstream commit 0eefa27b493306928d88af6368193b134c98fd64 ]
    
    This patch enables the LMT line for a PF/VF by setting the
    LMT_ENA bit in the APR_LMT_MAP_ENTRY_S structure.
    
    Additionally, it simplifies the logic for calculating the
    LMTST table index by consistently using the maximum
    number of hw supported VFs (i.e., 256).
    
    Fixes: 873a1e3d207a ("octeontx2-af: cn10k: Setting up lmtst map table").
    Signed-off-by: Subbaraya Sundeep <[email protected]>
    Signed-off-by: Geetha sowjanya <[email protected]>
    Reviewed-by: Michal Swiatkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-pf: Add AF_XDP non-zero copy support [+ + +]
Author: Suman Ghosh <[email protected]>
Date:   Thu Feb 13 11:01:37 2025 +0530

    octeontx2-pf: Add AF_XDP non-zero copy support
    
    [ Upstream commit b4164de5041b51cda3438e75bce668e2556057c3 ]
    
    Set xdp rx ring memory type as MEM_TYPE_PAGE_POOL for
    af-xdp to work. This is needed since xdp_return_frame
    internally will use page pools.
    
    Fixes: 06059a1a9a4a ("octeontx2-pf: Add XDP support to netdev PF")
    Signed-off-by: Suman Ghosh <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 184fb40f731b ("octeontx2-pf: Avoid adding dcbnl_ops for LBK and SDP vf")
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-pf: AF_XDP zero copy receive support [+ + +]
Author: Suman Ghosh <[email protected]>
Date:   Thu Feb 13 11:01:38 2025 +0530

    octeontx2-pf: AF_XDP zero copy receive support
    
    [ Upstream commit efabce29015189cb5cd8066cf29eb1d754de6c3c ]
    
    This patch adds support to AF_XDP zero copy for CN10K.
    This patch specifically adds receive side support. In this approach once
    a xdp program with zero copy support on a specific rx queue is enabled,
    then that receive quse is disabled/detached from the existing kernel
    queue and re-assigned to the umem memory.
    
    Signed-off-by: Suman Ghosh <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 184fb40f731b ("octeontx2-pf: Avoid adding dcbnl_ops for LBK and SDP vf")
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-pf: Avoid adding dcbnl_ops for LBK and SDP vf [+ + +]
Author: Suman Ghosh <[email protected]>
Date:   Mon May 19 12:56:58 2025 +0530

    octeontx2-pf: Avoid adding dcbnl_ops for LBK and SDP vf
    
    [ Upstream commit 184fb40f731bd3353b0887731f7caba66609e9cd ]
    
    Priority flow control is not supported for LBK and SDP vf. This patch
    adds support to not add dcbnl_ops for LBK and SDP vf.
    
    Fixes: 8e67558177f8 ("octeontx2-pf: PFC config support with DCBx")
    Signed-off-by: Suman Ghosh <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-pf: use xdp_return_frame() to free xdp buffers [+ + +]
Author: Suman Ghosh <[email protected]>
Date:   Thu Feb 13 11:01:36 2025 +0530

    octeontx2-pf: use xdp_return_frame() to free xdp buffers
    
    [ Upstream commit 94c80f748873514af27b9fac3f72acafcde3bcd6 ]
    
    xdp_return_frames() will help to free the xdp frames and their
    associated pages back to page pool.
    
    Signed-off-by: Geetha sowjanya <[email protected]>
    Signed-off-by: Suman Ghosh <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 184fb40f731b ("octeontx2-pf: Avoid adding dcbnl_ops for LBK and SDP vf")
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2: hide unused label [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Wed Feb 19 17:21:14 2025 +0100

    octeontx2: hide unused label
    
    commit ca57d1c56f4015d83fe7840b41d74783ee900b28 upstream.
    
    A previous patch introduces a build-time warning when CONFIG_DCB
    is disabled:
    
    drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c: In function 'otx2_probe':
    drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c:3217:1: error: label 'err_free_zc_bmap' defined but not used [-Werror=unused-label]
    drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c: In function 'otx2vf_probe':
    drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c:740:1: error: label 'err_free_zc_bmap' defined but not used [-Werror=unused-label]
    
    Add the same #ifdef check around it.
    
    Fixes: efabce290151 ("octeontx2-pf: AF_XDP zero copy receive support")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Suman Ghosh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
orangefs: Do not truncate file size [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Mar 5 20:47:25 2025 +0000

    orangefs: Do not truncate file size
    
    [ Upstream commit 062e8093592fb866b8e016641a8b27feb6ac509d ]
    
    'len' is used to store the result of i_size_read(), so making 'len'
    a size_t results in truncation to 4GiB on 32-bit systems.
    
    Signed-off-by: "Matthew Wilcox (Oracle)" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Mike Marshall <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
padata: do not leak refcount in reorder_work [+ + +]
Author: Dominik Grzegorzek <[email protected]>
Date:   Sun May 18 19:45:31 2025 +0200

    padata: do not leak refcount in reorder_work
    
    commit d6ebcde6d4ecf34f8495fb30516645db3aea8993 upstream.
    
    A recent patch that addressed a UAF introduced a reference count leak:
    the parallel_data refcount is incremented unconditionally, regardless
    of the return value of queue_work(). If the work item is already queued,
    the incremented refcount is never decremented.
    
    Fix this by checking the return value of queue_work() and decrementing
    the refcount when necessary.
    
    Resolves:
    
    Unreferenced object 0xffff9d9f421e3d80 (size 192):
      comm "cryptomgr_probe", pid 157, jiffies 4294694003
      hex dump (first 32 bytes):
        80 8b cf 41 9f 9d ff ff b8 97 e0 89 ff ff ff ff  ...A............
        d0 97 e0 89 ff ff ff ff 19 00 00 00 1f 88 23 00  ..............#.
      backtrace (crc 838fb36):
        __kmalloc_cache_noprof+0x284/0x320
        padata_alloc_pd+0x20/0x1e0
        padata_alloc_shell+0x3b/0xa0
        0xffffffffc040a54d
        cryptomgr_probe+0x43/0xc0
        kthread+0xf6/0x1f0
        ret_from_fork+0x2f/0x50
        ret_from_fork_asm+0x1a/0x30
    
    Fixes: dd7d37ccf6b1 ("padata: avoid UAF for reorder_work")
    Cc: <[email protected]>
    Signed-off-by: Dominik Grzegorzek <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI: brcmstb: Add a softdep to MIP MSI-X driver [+ + +]
Author: Stanimir Varbanov <[email protected]>
Date:   Mon Feb 24 10:35:56 2025 +0200

    PCI: brcmstb: Add a softdep to MIP MSI-X driver
    
    [ Upstream commit 2294059118c550464dd8906286324d90c33b152b ]
    
    Then the brcmstb PCIe driver and MIP MSI-X interrupt controller
    drivers are built as modules there could be a race in probing.
    
    To avoid this, add a softdep to MIP driver to guarantee that
    MIP driver will be load first.
    
    Signed-off-by: Stanimir Varbanov <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Tested-by: Ivan T. Ivanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: brcmstb: Expand inbound window size up to 64GB [+ + +]
Author: Stanimir Varbanov <[email protected]>
Date:   Mon Feb 24 10:35:58 2025 +0200

    PCI: brcmstb: Expand inbound window size up to 64GB
    
    [ Upstream commit 25a98c727015638baffcfa236e3f37b70cedcf87 ]
    
    The BCM2712 memory map can support up to 64GB of system memory, thus
    expand the inbound window size in calculation helper function.
    
    The change is safe for the currently supported SoCs that have smaller
    inbound window sizes.
    
    Signed-off-by: Stanimir Varbanov <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Jim Quinlan <[email protected]>
    Tested-by: Ivan T. Ivanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: dwc: ep: Ensure proper iteration over outbound map windows [+ + +]
Author: Frank Li <[email protected]>
Date:   Sat Mar 15 15:15:46 2025 -0500

    PCI: dwc: ep: Ensure proper iteration over outbound map windows
    
    [ Upstream commit f3e1dccba0a0833fc9a05fb838ebeb6ea4ca0e1a ]
    
    Most systems' PCIe outbound map windows have non-zero physical addresses,
    but the possibility of encountering zero increased after following commit
    ("PCI: dwc: Use parent_bus_offset").
    
    'ep->outbound_addr[n]', representing 'parent_bus_address', might be 0 on
    some hardware, which trims high address bits through bus fabric before
    sending to the PCIe controller.
    
    Replace the iteration logic with 'for_each_set_bit()' to ensure only
    allocated map windows are iterated when determining the ATU index from a
    given address.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Frank Li <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: dwc: Use resource start as ioremap() input in dw_pcie_pme_turn_off() [+ + +]
Author: Frank Li <[email protected]>
Date:   Sat Mar 15 15:15:36 2025 -0500

    PCI: dwc: Use resource start as ioremap() input in dw_pcie_pme_turn_off()
    
    [ Upstream commit 8f4a489b370e6612700aa16b9e4373b2d85d7503 ]
    
    The msg_res region translates writes into PCIe Message TLPs. Previously we
    mapped this region using atu.cpu_addr, the input address programmed into
    the ATU.
    
    "cpu_addr" is a misnomer because when a bus fabric translates addresses
    between the CPU and the ATU, the ATU input address is different from the
    CPU address.  A future patch will rename "cpu_addr" and correct the value
    to be the ATU input address instead of the CPU physical address.
    
    Map the msg_res region before writing to it using the msg_res resource
    start, a CPU physical address.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Frank Li <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: endpoint: pci-epf-test: Fix double free that causes kernel to oops [+ + +]
Author: Christian Bruel <[email protected]>
Date:   Fri Jan 24 13:30:43 2025 +0100

    PCI: endpoint: pci-epf-test: Fix double free that causes kernel to oops
    
    [ Upstream commit 934e9d137d937706004c325fa1474f9e3f1ba10a ]
    
    Fix a kernel oops found while testing the stm32_pcie Endpoint driver
    with handling of PERST# deassertion:
    
    During EP initialization, pci_epf_test_alloc_space() allocates all BARs,
    which are further freed if epc_set_bar() fails (for instance, due to no
    free inbound window).
    
    However, when pci_epc_set_bar() fails, the error path:
    
      pci_epc_set_bar() ->
        pci_epf_free_space()
    
    does not clear the previous assignment to epf_test->reg[bar].
    
    Then, if the host reboots, the PERST# deassertion restarts the BAR
    allocation sequence with the same allocation failure (no free inbound
    window), creating a double free situation since epf_test->reg[bar] was
    deallocated and is still non-NULL.
    
    Thus, make sure that pci_epf_alloc_space() and pci_epf_free_space()
    invocations are symmetric, and as such, set epf_test->reg[bar] to NULL
    when memory is freed.
    
    Reviewed-by: Niklas Cassel <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Christian Bruel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: epf-mhi: Update device ID for SA8775P [+ + +]
Author: Mrinmay Sarkar <[email protected]>
Date:   Thu Dec 5 12:24:20 2024 +0530

    PCI: epf-mhi: Update device ID for SA8775P
    
    [ Upstream commit 4f13dd9e2b1d2b317bb36704f8a7bd1d3017f7a2 ]
    
    Update device ID for the Qcom SA8775P SoC.
    
    Signed-off-by: Mrinmay Sarkar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Fix old_size lower bound in calculate_iosize() too [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Mon Dec 16 19:56:12 2024 +0200

    PCI: Fix old_size lower bound in calculate_iosize() too
    
    [ Upstream commit ff61f380de5652e723168341480cc7adf1dd6213 ]
    
    Commit 903534fa7d30 ("PCI: Fix resource double counting on remove &
    rescan") fixed double counting of mem resources because of old_size being
    applied too early.
    
    Fix a similar counting bug on the io resource side.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Xiaochun Lee <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: vmd: Disable MSI remapping bypass under Xen [+ + +]
Author: Roger Pau Monne <[email protected]>
Date:   Wed Feb 19 10:20:56 2025 +0100

    PCI: vmd: Disable MSI remapping bypass under Xen
    
    [ Upstream commit 6c4d5aadf5df31ea0ac025980670eee9beaf466b ]
    
    MSI remapping bypass (directly configuring MSI entries for devices on the
    VMD bus) won't work under Xen, as Xen is not aware of devices in such bus,
    and hence cannot configure the entries using the pIRQ interface in the PV
    case, and in the PVH case traps won't be setup for MSI entries for such
    devices.
    
    Until Xen is aware of devices in the VMD bus prevent the
    VMD_FEAT_CAN_BYPASS_MSI_REMAP capability from being used when running as
    any kind of Xen guest.
    
    The MSI remapping bypass is an optional feature of VMD bridges, and hence
    when running under Xen it will be masked and devices will be forced to
    redirect its interrupts from the VMD bridge.  That mode of operation must
    always be supported by VMD bridges and works when Xen is not aware of
    devices behind the VMD bridge.
    
    Signed-off-by: Roger Pau Monné <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PCI: xilinx-cpm: Add cpm_csr register mapping for CPM5_HOST1 variant [+ + +]
Author: Thippeswamy Havalige <[email protected]>
Date:   Mon Mar 17 18:11:36 2025 +0530

    PCI: xilinx-cpm: Add cpm_csr register mapping for CPM5_HOST1 variant
    
    [ Upstream commit 9e141923cf86b2e1c83d21b87fb4de3d14a20c99 ]
    
    Update the CPM5 check to include CPM5_HOST1 variant. Previously, only
    CPM5 was considered when mapping the "cpm_csr" register.
    
    With this change, CPM5_HOST1 is also supported, ensuring proper
    resource mapping for this variant.
    
    Signed-off-by: Thippeswamy Havalige <[email protected]>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/amd/ibs: Fix ->config to sample period calculation for OP PMU [+ + +]
Author: Ravi Bangoria <[email protected]>
Date:   Wed Jan 15 05:44:32 2025 +0000

    perf/amd/ibs: Fix ->config to sample period calculation for OP PMU
    
    [ Upstream commit 598bdf4fefff5af4ce6d26d16f7b2a20808fc4cb ]
    
    Instead of using standard perf_event_attr->freq=0 and ->sample_period
    fields, IBS event in 'sample period mode' can also be opened by setting
    period value directly in perf_event_attr->config in a MaxCnt bit-field
    format.
    
    IBS OP MaxCnt bits are defined as:
    
      (high bits) IbsOpCtl[26:20] = IbsOpMaxCnt[26:20]
      (low bits)  IbsOpCtl[15:0]  = IbsOpMaxCnt[19:4]
    
    Perf event sample period can be derived from MaxCnt bits as:
    
      sample_period = (high bits) | ((low_bits) << 4);
    
    However, current code just masks MaxCnt bits and shifts all of them,
    including high bits, which is incorrect. Fix it.
    
    Signed-off-by: Ravi Bangoria <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt [+ + +]
Author: Ravi Bangoria <[email protected]>
Date:   Wed Jan 15 05:44:33 2025 +0000

    perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt
    
    [ Upstream commit 46dcf85566170d4528b842bf83ffc350d71771fa ]
    
    IBS Op uses two counters: MaxCnt and CurCnt. MaxCnt is programmed with
    the desired sample period. IBS hw generates sample when CurCnt reaches
    to MaxCnt. The size of these counter used to be 20 bits but later they
    were extended to 27 bits. The 7 bit extension is indicated by CPUID
    Fn8000_001B_EAX[6 / OpCntExt].
    
    perf_ibs->cnt_mask variable contains bit masks for MaxCnt and CurCnt.
    But IBS driver does not set upper 7 bits of CurCnt in cnt_mask even
    when OpCntExt CPUID bit is set. Fix this.
    
    IBS driver uses cnt_mask[CurCnt] bits only while disabling an event.
    Fortunately, CurCnt bits are not read from MSR while re-enabling the
    event, instead MaxCnt is programmed with desired period and CurCnt is
    set to 0. Hence, we did not see any issues so far.
    
    Signed-off-by: Ravi Bangoria <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/core: Clean up perf_try_init_event() [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Wed Feb 5 11:21:28 2025 +0100

    perf/core: Clean up perf_try_init_event()
    
    [ Upstream commit da02f54e81db2f7bf6af9d1d0cfc5b41ec6d0dcb ]
    
    Make sure that perf_try_init_event() doesn't leave event->pmu nor
    event->destroy set on failure.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Ravi Bangoria <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

perf/core: Fix perf_mmap() failure path [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Mon Nov 4 14:39:24 2024 +0100

    perf/core: Fix perf_mmap() failure path
    
    [ Upstream commit 66477c7230eb1f9b90deb8c0f4da2bac2053c329 ]
    
    When f_ops->mmap() returns failure, m_ops->close() is *not* called.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Lorenzo Stoakes <[email protected]>
    Reviewed-by: Ravi Bangoria <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/hw_breakpoint: Return EOPNOTSUPP for unsupported breakpoint type [+ + +]
Author: Saket Kumar Bhaskar <[email protected]>
Date:   Mon Mar 3 14:54:51 2025 +0530

    perf/hw_breakpoint: Return EOPNOTSUPP for unsupported breakpoint type
    
    [ Upstream commit 061c991697062f3bf87b72ed553d1d33a0e370dd ]
    
    Currently, __reserve_bp_slot() returns -ENOSPC for unsupported
    breakpoint types on the architecture. For example, powerpc
    does not support hardware instruction breakpoints. This causes
    the perf_skip BPF selftest to fail, as neither ENOENT nor
    EOPNOTSUPP is returned by perf_event_open for unsupported
    breakpoint types. As a result, the test that should be skipped
    for this arch is not correctly identified.
    
    To resolve this, hw_breakpoint_event_init() should exit early by
    checking for unsupported breakpoint types using
    hw_breakpoint_slots_cached() and return the appropriate error
    (-EOPNOTSUPP).
    
    Signed-off-by: Saket Kumar Bhaskar <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Marco Elver <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Frederic Weisbecker <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/x86/intel: Fix segfault with PEBS-via-PT with sample_freq [+ + +]
Author: Adrian Hunter <[email protected]>
Date:   Thu May 8 16:44:52 2025 +0300

    perf/x86/intel: Fix segfault with PEBS-via-PT with sample_freq
    
    [ Upstream commit 99bcd91fabada0dbb1d5f0de44532d8008db93c6 ]
    
    Currently, using PEBS-via-PT with a sample frequency instead of a sample
    period, causes a segfault.  For example:
    
        BUG: kernel NULL pointer dereference, address: 0000000000000195
        <NMI>
        ? __die_body.cold+0x19/0x27
        ? page_fault_oops+0xca/0x290
        ? exc_page_fault+0x7e/0x1b0
        ? asm_exc_page_fault+0x26/0x30
        ? intel_pmu_pebs_event_update_no_drain+0x40/0x60
        ? intel_pmu_pebs_event_update_no_drain+0x32/0x60
        intel_pmu_drain_pebs_icl+0x333/0x350
        handle_pmi_common+0x272/0x3c0
        intel_pmu_handle_irq+0x10a/0x2e0
        perf_event_nmi_handler+0x2a/0x50
    
    That happens because intel_pmu_pebs_event_update_no_drain() assumes all the
    pebs_enabled bits represent counter indexes, which is not always the case.
    In this particular case, bits 60 and 61 are set for PEBS-via-PT purposes.
    
    The behaviour of PEBS-via-PT with sample frequency is questionable because
    although a PMI is generated (PEBS_PMI_AFTER_EACH_RECORD), the period is not
    adjusted anyway.
    
    Putting that aside, fix intel_pmu_pebs_event_update_no_drain() by passing
    the mask of counter bits instead of 'size'.  Note, prior to the Fixes
    commit, 'size' would be limited to the maximum counter index, so the issue
    was not hit.
    
    Fixes: 722e42e45c2f1 ("perf/x86: Support counter mask")
    Signed-off-by: Adrian Hunter <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Kan Liang <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Arnaldo Carvalho de Melo <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Tue Feb 18 14:39:56 2025 -0600

    perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters
    
    [ Upstream commit 04bd15c4cbc3f7bd2399d1baab958c5e738dbfc9 ]
    
    Counting events related to setup of the PMU is not desired, but
    kvm_vcpu_pmu_resync_el0() is called just after the PMU counters have
    been enabled. Move the call to before enabling the counters.
    
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Tested-by: James Clark <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

perf: Avoid the read if the count is already updated [+ + +]
Author: Peter Zijlstra (Intel) <[email protected]>
Date:   Tue Jan 21 07:23:02 2025 -0800

    perf: Avoid the read if the count is already updated
    
    [ Upstream commit 8ce939a0fa194939cc1f92dbd8bc1a7806e7d40a ]
    
    The event may have been updated in the PMU-specific implementation,
    e.g., Intel PEBS counters snapshotting. The common code should not
    read and overwrite the value.
    
    The PERF_SAMPLE_READ in the data->sample_type can be used to detect
    whether the PMU-specific value is available. If yes, avoid the
    pmu->read() in the common code. Add a new flag, skip_read, to track the
    case.
    
    Factor out a perf_pmu_read() to clean up the code.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Kan Liang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
phy: core: don't require set_mode() callback for phy_get_mode() to work [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Sun Feb 9 14:31:45 2025 +0200

    phy: core: don't require set_mode() callback for phy_get_mode() to work
    
    [ Upstream commit d58c04e305afbaa9dda7969151f06c4efe2c98b0 ]
    
    As reported by Damon Ding, the phy_get_mode() call doesn't work as
    expected unless the PHY driver has a .set_mode() call. This prompts PHY
    drivers to have empty stubs for .set_mode() for the sake of being able
    to get the mode.
    
    Make .set_mode() callback truly optional and update PHY's mode even if
    it there is none.
    
    Cc: Damon Ding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Damon Ding <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: exynos5-usbdrd: fix EDS distribution tuning (gs101) [+ + +]
Author: André Draszik <[email protected]>
Date:   Fri Dec 6 16:31:04 2024 +0000

    phy: exynos5-usbdrd: fix EDS distribution tuning (gs101)
    
    [ Upstream commit 21860f340ba76ee042e5431ff92537f89bc11476 ]
    
    This code's intention is to configure lane0 and lane2 tunings, but for
    lane2 there is a typo and it ends up tuning something else.
    
    Fix the typo, as it doesn't appear to make sense to apply different
    tunings for lane0 vs lane2.
    
    The same typo appears to exist in the bootloader, hence we restore the
    original value in the typo'd registers as well. This can be removed
    once / if the bootloader is updated.
    
    Note that this is incorrect in the downstream driver as well - the
    values had been copied from there.
    
    Reviewed-by: Peter Griffin <[email protected]>
    Tested-by: Peter Griffin <[email protected]>
    Signed-off-by: André Draszik <[email protected]>
    Tested-by: Will McVicker <[email protected]>
    Link: https://lore.kernel.org/r/20241206-gs101-phy-lanes-orientation-phy-v4-4-f5961268b149@linaro.org
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: phy-rockchip-samsung-hdptx: Swap the definitions of LCPLL_REF and ROPLL_REF [+ + +]
Author: Damon Ding <[email protected]>
Date:   Wed Feb 5 18:51:54 2025 +0800

    phy: phy-rockchip-samsung-hdptx: Swap the definitions of LCPLL_REF and ROPLL_REF
    
    [ Upstream commit 2947c8065e9efdd3b6434d2817dc8896234a3fc0 ]
    
    According to the datasheet, setting the dig_clk_sel bit of CMN_REG(0097)
    to 1'b1 selects LCPLL as the reference clock, while setting it to 1'b0
    selects the ROPLL.
    
    Signed-off-by: Damon Ding <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Wed May 7 15:50:31 2025 +0300

    phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off
    
    [ Upstream commit 9ce71e85b29eb63e48e294479742e670513f03a0 ]
    
    Assert PLL reset on PHY power off. This saves power.
    
    Fixes: f3b5a8d9b50d ("phy: rcar-gen3-usb2: Add R-Car Gen3 USB2 PHY driver")
    Cc: [email protected]
    Reviewed-by: Yoshihiro Shimoda <[email protected]>
    Tested-by: Yoshihiro Shimoda <[email protected]>
    Reviewed-by: Lad Prabhakar <[email protected]>
    Signed-off-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: renesas: rcar-gen3-usb2: Lock around hardware registers and driver data [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Wed May 7 15:50:30 2025 +0300

    phy: renesas: rcar-gen3-usb2: Lock around hardware registers and driver data
    
    [ Upstream commit 55a387ebb9219cbe4edfa8ba9996ccb0e7ad4932 ]
    
    The phy-rcar-gen3-usb2 driver exposes four individual PHYs that are
    requested and configured by PHY users. The struct phy_ops APIs access the
    same set of registers to configure all PHYs. Additionally, PHY settings can
    be modified through sysfs or an IRQ handler. While some struct phy_ops APIs
    are protected by a driver-wide mutex, others rely on individual
    PHY-specific mutexes.
    
    This approach can lead to various issues, including:
    1/ the IRQ handler may interrupt PHY settings in progress, racing with
       hardware configuration protected by a mutex lock
    2/ due to msleep(20) in rcar_gen3_init_otg(), while a configuration thread
       suspends to wait for the delay, another thread may try to configure
       another PHY (with phy_init() + phy_power_on()); re-running the
       phy_init() goes to the exact same configuration code, re-running the
       same hardware configuration on the same set of registers (and bits)
       which might impact the result of the msleep for the 1st configuring
       thread
    3/ sysfs can configure the hardware (though role_store()) and it can
       still race with the phy_init()/phy_power_on() APIs calling into the
       drivers struct phy_ops
    
    To address these issues, add a spinlock to protect hardware register access
    and driver private data structures (e.g., calls to
    rcar_gen3_is_any_rphy_initialized()). Checking driver-specific data remains
    necessary as all PHY instances share common settings. With this change,
    the existing mutex protection is removed and the cleanup.h helpers are
    used.
    
    While at it, to keep the code simpler, do not skip
    regulator_enable()/regulator_disable() APIs in
    rcar_gen3_phy_usb2_power_on()/rcar_gen3_phy_usb2_power_off() as the
    regulators enable/disable operations are reference counted anyway.
    
    Fixes: f3b5a8d9b50d ("phy: rcar-gen3-usb2: Add R-Car Gen3 USB2 PHY driver")
    Cc: [email protected]
    Reviewed-by: Yoshihiro Shimoda <[email protected]>
    Tested-by: Yoshihiro Shimoda <[email protected]>
    Reviewed-by: Lad Prabhakar <[email protected]>
    Signed-off-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 9ce71e85b29e ("phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off")
    Signed-off-by: Sasha Levin <[email protected]>

phy: renesas: rcar-gen3-usb2: Move IRQ request in probe [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Wed May 7 15:50:29 2025 +0300

    phy: renesas: rcar-gen3-usb2: Move IRQ request in probe
    
    [ Upstream commit de76809f60cc938d3580bbbd5b04b7d12af6ce3a ]
    
    Commit 08b0ad375ca6 ("phy: renesas: rcar-gen3-usb2: move IRQ registration
    to init") moved the IRQ request operation from probe to
    struct phy_ops::phy_init API to avoid triggering interrupts (which lead to
    register accesses) while the PHY clocks (enabled through runtime PM APIs)
    are not active. If this happens, it results in a synchronous abort.
    
    One way to reproduce this issue is by enabling CONFIG_DEBUG_SHIRQ, which
    calls free_irq() on driver removal.
    
    Move the IRQ request and free operations back to probe, and take the
    runtime PM state into account in IRQ handler. This commit is preparatory
    for the subsequent fixes in this series.
    
    Reviewed-by: Yoshihiro Shimoda <[email protected]>
    Tested-by: Yoshihiro Shimoda <[email protected]>
    Reviewed-by: Lad Prabhakar <[email protected]>
    Signed-off-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 9ce71e85b29e ("phy: renesas: rcar-gen3-usb2: Assert PLL reset on PHY power off")
    Signed-off-by: Sasha Levin <[email protected]>

phy: rockchip: usbdp: Only verify link rates/lanes/voltage when the corresponding set flags are set [+ + +]
Author: Andy Yan <[email protected]>
Date:   Wed Mar 12 16:00:07 2025 +0800

    phy: rockchip: usbdp: Only verify link rates/lanes/voltage when the corresponding set flags are set
    
    [ Upstream commit 969a38be437b68dc9e12e3c3f08911c9f9c8be73 ]
    
    According documentation of phy_configure_opts_dp, at the configure
    stage, link rates should only be verify/configure when set_rate
    flag is set, the same applies to lanes and voltage.
    
    So do it as the documentation says.
    Because voltage setting depends on the lanes, link rates set
    previously, so record the link rates and lanes at it's verify stage.
    
    Signed-off-by: Andy Yan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pidfs: improve multi-threaded exec and premature thread-group leader exit polling [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Thu Mar 20 14:24:08 2025 +0100

    pidfs: improve multi-threaded exec and premature thread-group leader exit polling
    
    [ Upstream commit 0fb482728ba1ee2130eaa461bf551f014447997c ]
    
    This is another attempt trying to make pidfd polling for multi-threaded
    exec and premature thread-group leader exit consistent.
    
    A quick recap of these two cases:
    
    (1) During a multi-threaded exec by a subthread, i.e., non-thread-group
        leader thread, all other threads in the thread-group including the
        thread-group leader are killed and the struct pid of the
        thread-group leader will be taken over by the subthread that called
        exec. IOW, two tasks change their TIDs.
    
    (2) A premature thread-group leader exit means that the thread-group
        leader exited before all of the other subthreads in the thread-group
        have exited.
    
    Both cases lead to inconsistencies for pidfd polling with PIDFD_THREAD.
    Any caller that holds a PIDFD_THREAD pidfd to the current thread-group
    leader may or may not see an exit notification on the file descriptor
    depending on when poll is performed. If the poll is performed before the
    exec of the subthread has concluded an exit notification is generated
    for the old thread-group leader. If the poll is performed after the exec
    of the subthread has concluded no exit notification is generated for the
    old thread-group leader.
    
    The correct behavior would be to simply not generate an exit
    notification on the struct pid of a subhthread exec because the struct
    pid is taken over by the subthread and thus remains alive.
    
    But this is difficult to handle because a thread-group may exit
    prematurely as mentioned in (2). In that case an exit notification is
    reliably generated but the subthreads may continue to run for an
    indeterminate amount of time and thus also may exec at some point.
    
    So far there was no way to distinguish between (1) and (2) internally.
    This tiny series tries to address this problem by discarding
    PIDFD_THREAD notification on premature thread-group leader exit.
    
    If that works correctly then no exit notifications are generated for a
    PIDFD_THREAD pidfd for a thread-group leader until all subthreads have
    been reaped. If a subthread should exec aftewards no exit notification
    will be generated until that task exits or it creates subthreads and
    repeates the cycle.
    
    Co-Developed-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Oleg Nesterov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl-tegra: Restore SFSEL bit when freeing pins [+ + +]
Author: Prathamesh Shete <[email protected]>
Date:   Wed Mar 5 16:19:39 2025 +0530

    pinctrl-tegra: Restore SFSEL bit when freeing pins
    
    [ Upstream commit c12bfa0fee65940b10ff5187349f76c6f6b1df9c ]
    
    Each pin can be configured as a Special Function IO (SFIO) or GPIO,
    where the SFIO enables the pin to operate in alternative modes such as
    I2C, SPI, etc.
    
    The current implementation sets all the pins back to SFIO mode
    even if they were initially in GPIO mode. This can cause glitches
    on the pins when pinctrl_gpio_free() is called.
    
    Avoid these undesired glitches by storing the pin's SFIO/GPIO
    state on GPIO request and restoring it on GPIO free.
    
    Signed-off-by: Prathamesh Shete <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned" [+ + +]
Author: Artur Weber <[email protected]>
Date:   Mon Mar 3 21:54:47 2025 +0100

    pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned"
    
    [ Upstream commit 07b5a2a13f4704c5eae3be7277ec54ffdba45f72 ]
    
    Replace uses of bare "unsigned" with "unsigned int" to fix checkpatch
    warnings. No functional change.
    
    Signed-off-by: Artur Weber <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map [+ + +]
Author: Valentin Caron <[email protected]>
Date:   Thu Jan 16 18:00:09 2025 +0100

    pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map
    
    [ Upstream commit c98868e816209e568c9d72023ba0bc1e4d96e611 ]
    
    Cross case in pinctrl framework make impossible to an hogged pin and
    another, not hogged, used within the same device-tree node. For example
    with this simplified device-tree :
    
      &pinctrl {
        pinctrl_pin_1: pinctrl-pin-1 {
          pins = "dummy-pinctrl-pin";
        };
      };
    
      &rtc {
        pinctrl-names = "default"
        pinctrl-0 = <&pinctrl_pin_1 &rtc_pin_1>
    
        rtc_pin_1: rtc-pin-1 {
          pins = "dummy-rtc-pin";
        };
      };
    
    "pinctrl_pin_1" configuration is never set. This produces this path in
    the code:
    
      really_probe()
        pinctrl_bind_pins()
        | devm_pinctrl_get()
        |   pinctrl_get()
        |     create_pinctrl()
        |       pinctrl_dt_to_map()
        |         // Hog pin create an abort for all pins of the node
        |         ret = dt_to_map_one_config()
        |         | /* Do not defer probing of hogs (circular loop) */
        |         | if (np_pctldev == p->dev->of_node)
        |         |   return -ENODEV;
        |         if (ret)
        |           goto err
        |
        call_driver_probe()
          stm32_rtc_probe()
            pinctrl_enable()
              pinctrl_claim_hogs()
                create_pinctrl()
                  for_each_maps(maps_node, i, map)
                    // Not hog pin is skipped
                    if (pctldev && strcmp(dev_name(pctldev->dev),
                                          map->ctrl_dev_name))
                      continue;
    
    At the first call of create_pinctrl() the hogged pin produces an abort to
    avoid a defer of hogged pins. All other pin configurations are trashed.
    
    At the second call, create_pinctrl is now called with pctldev parameter to
    get hogs, but in this context only hogs are set. And other pins are
    skipped.
    
    To handle this, do not produce an abort in the first call of
    create_pinctrl(). Classic pin configuration will be set in
    pinctrl_bind_pins() context. And the hogged pin configuration will be set
    in pinctrl_claim_hogs() context.
    
    Signed-off-by: Valentin Caron <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: meson: define the pull up/down resistor value as 60 kOhm [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Sat Mar 29 20:01:32 2025 +0100

    pinctrl: meson: define the pull up/down resistor value as 60 kOhm
    
    [ Upstream commit e56088a13708757da68ad035269d69b93ac8c389 ]
    
    The public datasheets of the following Amlogic SoCs describe a typical
    resistor value for the built-in pull up/down resistor:
    - Meson8/8b/8m2: not documented
    - GXBB (S905): 60 kOhm
    - GXL (S905X): 60 kOhm
    - GXM (S912): 60 kOhm
    - G12B (S922X): 60 kOhm
    - SM1 (S905D3): 60 kOhm
    
    The public G12B and SM1 datasheets additionally state min and max
    values:
    - min value: 50 kOhm for both, pull-up and pull-down
    - max value for the pull-up: 70 kOhm
    - max value for the pull-down: 130 kOhm
    
    Use 60 kOhm in the pinctrl-meson driver as well so it's shown in the
    debugfs output. It may not be accurate for Meson8/8b/8m2 but in reality
    60 kOhm is closer to the actual value than 1 Ohm.
    
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: msm8917: Add MSM8937 wsa_reset pin [+ + +]
Author: Dang Huynh <[email protected]>
Date:   Tue Feb 11 23:37:48 2025 +0100

    pinctrl: qcom: msm8917: Add MSM8937 wsa_reset pin
    
    [ Upstream commit 3dd3ab690172b11758e17775cfbf98986ec0cb71 ]
    
    It looks like both 8917 and 8937 are the same except for one pin
    "wsa_reset".
    
    Signed-off-by: Dang Huynh <[email protected]>
    Signed-off-by: Barnabás Czémán <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: switch to devm_register_sys_off_handler() [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue May 13 21:38:58 2025 +0300

    pinctrl: qcom: switch to devm_register_sys_off_handler()
    
    [ Upstream commit 41e452e6933d14146381ea25cff5e4d1ac2abea1 ]
    
    Error-handling paths in msm_pinctrl_probe() don't call
    a function required to unroll restart handler registration,
    unregister_restart_handler(). Instead of adding calls to this function,
    switch the msm pinctrl code into using devm_register_sys_off_handler().
    
    Fixes: cf1fc1876289 ("pinctrl: qcom: use restart_notifier mechanism for ps_hold")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: renesas: rzg2l: Add suspend/resume support for pull up/down [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Wed Feb 5 12:01:16 2025 +0200

    pinctrl: renesas: rzg2l: Add suspend/resume support for pull up/down
    
    [ Upstream commit b2bd65fbb617353e3c46ba5206b3b030fa0f260c ]
    
    The Renesas RZ/G3S supports a power-saving mode where power to most of
    the SoC components is lost, including the PIN controller.  Save and
    restore the pull-up/pull-down register contents to ensure the
    functionality is preserved after a suspend/resume cycle.
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Reviewed-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: sophgo: avoid to modify untouched bit when setting cv1800 pinconf [+ + +]
Author: Inochi Amaoto <[email protected]>
Date:   Tue Feb 11 13:17:49 2025 +0800

    pinctrl: sophgo: avoid to modify untouched bit when setting cv1800 pinconf
    
    [ Upstream commit ef1a5121ae3da02372fcb66d9632ed3d47ad5637 ]
    
    When setting pinconf configuration for cv1800 SoC, the driver just writes
    the value. It may zero some bits of the pinconf register and cause some
    unexpected error. Add a mask to avoid this.
    
    Signed-off-by: Inochi Amaoto <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Mar 19 10:05:47 2025 +0300

    pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group()
    
    [ Upstream commit 5a062c3c3b82004766bc3ece82b594d337076152 ]
    
    This should be >= pmx->soc->ngroups instead of > to avoid an out of
    bounds access.  The pmx->soc->groups[] array is allocated in
    tegra_pinctrl_probe().
    
    Fixes: c12bfa0fee65 ("pinctrl-tegra: Restore SFSEL bit when freeing pins")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Kunwu Chan <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86/intel: hid: Add Pantherlake support [+ + +]
Author: Saranya Gopal <[email protected]>
Date:   Mon Apr 21 09:43:32 2025 +0530

    platform/x86/intel: hid: Add Pantherlake support
    
    [ Upstream commit 12df9ec3e1955aed6a0c839f2375cd8e5d5150cf ]
    
    Add Pantherlake ACPI device ID to the Intel HID driver.
    
    While there, clean up the device ID table to remove the ", 0" parts.
    
    Suggested-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Saranya Gopal <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: asus-wmi: Disable OOBE state after resume from hibernation [+ + +]
Author: Pavel Nikulin <[email protected]>
Date:   Fri Apr 18 20:06:08 2025 +0600

    platform/x86: asus-wmi: Disable OOBE state after resume from hibernation
    
    [ Upstream commit 77bdac73754e4c0c564c1ca80fe3d9c93b0e715a ]
    
    ASUS firmware resets OOBE state during S4 suspend, so the keyboard
    blinks during resume from hibernation. This patch disables OOBE state
    after resume from hibernation.
    
    Signed-off-by: Pavel Nikulin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store() [+ + +]
Author: Vladimir Moskovkin <[email protected]>
Date:   Wed May 14 12:12:55 2025 +0000

    platform/x86: dell-wmi-sysman: Avoid buffer overflow in current_password_store()
    
    commit 4e89a4077490f52cde652d17e32519b666abf3a6 upstream.
    
    If the 'buf' array received from the user contains an empty string, the
    'length' variable will be zero. Accessing the 'buf' array element with
    index 'length - 1' will result in a buffer overflow.
    
    Add a check for an empty string.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: e8a60aa7404b ("platform/x86: Introduce support for Systems Management Driver over WMI for Dell Systems")
    Cc: [email protected]
    Signed-off-by: Vladimir Moskovkin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

platform/x86: ideapad-laptop: add support for some new buttons [+ + +]
Author: Gašper Nemgar <[email protected]>
Date:   Fri Apr 18 09:07:38 2025 +0200

    platform/x86: ideapad-laptop: add support for some new buttons
    
    [ Upstream commit 02c6e43397c39edd0c172859bf8c851b46be09a8 ]
    
    Add entries to unsupported WMI codes in ideapad_keymap[] and one
    check for WMI code 0x13d to trigger platform_profile_cycle().
    
    Signed-off-by: Gašper Nemgar <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ij: joined nested if ()s & major tweaks to changelog]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: think-lmi: Fix attribute name usage for non-compliant items [+ + +]
Author: Mark Pearson <[email protected]>
Date:   Mon May 19 20:50:18 2025 -0400

    platform/x86: think-lmi: Fix attribute name usage for non-compliant items
    
    [ Upstream commit 8508427a6e21c1ef01ae4c9f4e2675fc99deb949 ]
    
    A few, quite rare, WMI attributes have names that are not compatible with
    filenames, e.g. "Intel VT for Directed I/O (VT-d)".
    For these cases the '/' gets replaced with '\' for display, but doesn't
    get switched again when doing the WMI access.
    
    Fix this by keeping the original attribute name and using that for sending
    commands to the BIOS
    
    Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms")
    Signed-off-by: Mark Pearson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PM: sleep: Suppress sleeping parent warning in special case [+ + +]
Author: Xu Yang <[email protected]>
Date:   Mon Feb 24 15:00:49 2025 +0800

    PM: sleep: Suppress sleeping parent warning in special case
    
    [ Upstream commit e8195f0630f1c4c2465074fe81b5fda19efd3148 ]
    
    Currently, if power.no_callbacks is set, device_prepare() will also set
    power.direct_complete for the device.  If power.direct_complete is set
    in device_resume(), the clearing of power.is_prepared will be skipped
    and if new children appear under the device at that point, a warning
    will be printed.
    
    After commit (f76b168b6f11 PM: Rename dev_pm_info.in_suspend to
    is_prepared), power.is_prepared is generally cleared in device_resume()
    before invoking the resume callback for the device which allows that
    callback to add new children without triggering the warning, but this
    does not happen for devices with power.direct_complete set.
    
    This problem is visible in USB where usb_set_interface() can be called
    before device_complete() clears power.is_prepared for interface devices
    and since ep devices are added then, the warning is printed:
    
     usb 1-1: reset high-speed USB device number 3 using ci_hdrc
      ep_81: PM: parent 1-1:1.1 should not be sleeping
     PM: resume devices took 0.936 seconds
    
    Since it is legitimate to add the ep devices at that point, the
    warning above is not particularly useful, so get rid of it by
    clearing power.is_prepared in device_resume() for devices with
    power.direct_complete set if they have no PM callbacks, in which
    case they need not actually resume for the new children to work.
    
    Suggested-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Xu Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: New subject, changelog edits, rephrased new code comment ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu May 8 09:29:23 2025 +0300

    pmdomain: core: Fix error checking in genpd_dev_pm_attach_by_id()
    
    commit 0f5757667ec0aaf2456c3b76fcf0c6c3ea3591fe upstream.
    
    The error checking for of_count_phandle_with_args() does not handle
    negative error codes correctly.  The problem is that "index" is a u32 so
    in the condition "if (index >= num_domains)" negative error codes stored
    in "num_domains" are type promoted to very high positive values and
    "index" is always going to be valid.
    
    Test for negative error codes first and then test if "index" is valid.
    
    Fixes: 3ccf3f0cd197 ("PM / Domains: Enable genpd_dev_pm_attach_by_id|name() for single PM domain")
    Signed-off-by: Dan Carpenter <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pmdomain: imx: gpcv2: use proper helper for property detection [+ + +]
Author: Ahmad Fatoum <[email protected]>
Date:   Tue Feb 18 20:18:32 2025 +0100

    pmdomain: imx: gpcv2: use proper helper for property detection
    
    [ Upstream commit 6568cb40e73163fa25e2779f7234b169b2e1a32e ]
    
    Starting with commit c141ecc3cecd7 ("of: Warn when of_property_read_bool()
    is used on non-boolean properties"), probing the gpcv2 device on i.MX8M
    SoCs leads to warnings when LOCKDEP is enabled.
    
    Fix this by checking property presence with of_property_present as
    intended.
    
    Signed-off-by: Ahmad Fatoum <[email protected]>
    Link: https://lore.kernel.org/r/20250218-gpcv2-of-property-present-v1-1-3bb1a9789654@pengutronix.de
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pmdomain: renesas: rcar: Remove obsolete nullify checks [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Mon Apr 28 13:47:52 2025 +0200

    pmdomain: renesas: rcar: Remove obsolete nullify checks
    
    commit 13a6d4265665201a795a2ff5a3e6e4d183fc9c33 upstream.
    
    All nullify users and helpers were removed, but the R-Car SYSC drivers
    still checked for nullified domains.  Remove the obsolete checks.
    
    Fixes: c8d87704444a8ac7 ("pmdomain: renesas: rcar-sysc: Remove rcar_sysc_nullify() helper")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/107f2bf9f13b29f0f623d2959a5347ec151fb089.1745840768.git.geert+renesas@glider.be
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pNFS/flexfiles: Report ENETDOWN as a connection error [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Thu Mar 20 12:45:01 2025 -0400

    pNFS/flexfiles: Report ENETDOWN as a connection error
    
    [ Upstream commit aa42add73ce9b9e3714723d385c254b75814e335 ]
    
    If the client should see an ENETDOWN when trying to connect to the data
    server, it might still be able to talk to the metadata server through
    another NIC. If so, report the error.
    
    Signed-off-by: Trond Myklebust <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Tested-by: Jeff Layton <[email protected]>
    Acked-by: Chuck Lever <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PNP: Expand length of fixup id string [+ + +]
Author: Kees Cook <[email protected]>
Date:   Mon Mar 10 15:24:33 2025 -0700

    PNP: Expand length of fixup id string
    
    [ Upstream commit 425b1c97b07f2290700f708edabef32861e2b2db ]
    
    GCC 15's -Wunterminated-string-initialization saw that "id" was not
    including the required trailing NUL character. Instead of marking "id"
    with __nonstring[1], expand the length of the string as it is used in
    (debugging) format strings that expect a properly formed C string.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117178 [1]
    Signed-off-by: Kees Cook <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
posix-timers: Add cond_resched() to posix_timer_add() search loop [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Mar 8 17:48:17 2025 +0100

    posix-timers: Add cond_resched() to posix_timer_add() search loop
    
    [ Upstream commit 5f2909c6cd13564a07ae692a95457f52295c4f22 ]
    
    With a large number of POSIX timers the search for a valid ID might cause a
    soft lockup on PREEMPT_NONE/VOLUNTARY kernels.
    
    Add cond_resched() to the loop to prevent that.
    
    [ tglx: Split out from Eric's series ]
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

posix-timers: Ensure that timer initialization is fully visible [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Mar 8 17:48:10 2025 +0100

    posix-timers: Ensure that timer initialization is fully visible
    
    [ Upstream commit 2389c6efd3ad8edb3bcce0019b4edcc7d9c7de19 ]
    
    Frederic pointed out that the memory operations to initialize the timer are
    not guaranteed to be visible, when __lock_timer() observes timer::it_signal
    valid under timer::it_lock:
    
      T0                                      T1
      ---------                               -----------
      do_timer_create()
          // A
          new_timer->.... = ....
          spin_lock(current->sighand)
          // B
          WRITE_ONCE(new_timer->it_signal, current->signal)
          spin_unlock(current->sighand)
                                            sys_timer_*()
                                               t =  __lock_timer()
                                                      spin_lock(&timr->it_lock)
                                                      // observes B
                                                      if (timr->it_signal == current->signal)
                                                        return timr;
                                               if (!t)
                                                   return;
                                            // Is not guaranteed to observe A
    
    Protect the write of timer::it_signal, which makes the timer valid, with
    timer::it_lock as well. This guarantees that T1 must observe the
    initialization A completely, when it observes the valid signal pointer
    under timer::it_lock. sighand::siglock must still be taken to protect the
    signal::posix_timers list.
    
    Reported-by: Frederic Weisbecker <[email protected]>
    Suggested-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

posix-timers: Invoke cond_resched() during exit_itimers() [+ + +]
Author: Benjamin Segall <[email protected]>
Date:   Fri Feb 14 14:12:20 2025 -0800

    posix-timers: Invoke cond_resched() during exit_itimers()
    
    [ Upstream commit f99c5bb396b8d1424ed229d1ffa6f596e3b9c36b ]
    
    exit_itimers() loops through every timer in the process to delete it.  This
    requires taking the system-wide hash_lock for each of these timers, and
    contends with other processes trying to create or delete timers.
    
    When a process creates hundreds of thousands of timers, and then exits
    while other processes contend with it, this can trigger softlockups on
    CONFIG_PREEMPT=n.
    
    Add a cond_resched() invocation into the loop to allow the system to make
    progress.
    
    Signed-off-by: Ben Segall <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
power: supply: axp20x_battery: Update temp sensor for AXP717 from device tree [+ + +]
Author: Chris Morgan <[email protected]>
Date:   Tue Feb 4 09:58:33 2025 -0600

    power: supply: axp20x_battery: Update temp sensor for AXP717 from device tree
    
    [ Upstream commit bbcfe510ecd47f2db4c8653c7dfa9dc7a55b1583 ]
    
    Allow a boolean property of "x-powers,no-thermistor" to specify devices
    where the ts pin is not connected to anything. This works around an
    issue found with some devices where the efuse is not programmed
    correctly from the factory or when the register gets set erroneously.
    
    Signed-off-by: Chris Morgan <[email protected]>
    Tested-by: Philippe Simons <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7 [+ + +]
Author: Andreas Schwab <[email protected]>
Date:   Mon Jan 13 18:19:09 2025 +0100

    powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7
    
    [ Upstream commit 7e67ef889c9ab7246547db73d524459f47403a77 ]
    
    Similar to the PowerMac3,1, the PowerBook6,7 is missing the #size-cells
    property on the i2s node.
    
    Depends-on: commit 045b14ca5c36 ("of: WARN on deprecated #address-cells/#size-cells handling")
    Signed-off-by: Andreas Schwab <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    [maddy: added "commit" work in depends-on to avoid checkpatch error]
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/pseries/iommu: create DDW for devices with DMA mask less than 64-bits [+ + +]
Author: Gaurav Batra <[email protected]>
Date:   Wed Jan 8 10:48:14 2025 -0600

    powerpc/pseries/iommu: create DDW for devices with DMA mask less than 64-bits
    
    [ Upstream commit 67dfc11982f7e3c37f0977e74671da2391b29181 ]
    
    Starting with PAPR level 2.13, platform supports placing PHB in limited
    address mode. Devices that support DMA masks less that 64-bit but greater
    than 32-bits are placed in limited address mode. In this mode, the
    starting DMA address returned by the DDW is 4GB.
    
    When the device driver calls dma_supported, with mask less then 64-bit, the
    PowerPC IOMMU driver places PHB in the Limited Addressing Mode before
    creating DDW.
    
    Signed-off-by: Gaurav Batra <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

powerpc/pseries/iommu: memory notifier incorrectly adds TCEs for pmemory [+ + +]
Author: Gaurav Batra <[email protected]>
Date:   Thu Jan 30 12:38:54 2025 -0600

    powerpc/pseries/iommu: memory notifier incorrectly adds TCEs for pmemory
    
    [ Upstream commit 6aa989ab2bd0d37540c812b4270006ff794662e7 ]
    
    iommu_mem_notifier() is invoked when RAM is dynamically added/removed. This
    notifier call is responsible to add/remove TCEs from the Dynamic DMA Window
    (DDW) when TCEs are pre-mapped. TCEs are pre-mapped only for RAM and not
    for persistent memory (pmemory). For DMA buffers in pmemory, TCEs are
    dynamically mapped when the device driver instructs to do so.
    
    The issue is 'daxctl' command is capable of adding pmemory as "System RAM"
    after LPAR boot. The command to do so is -
    
    daxctl reconfigure-device --mode=system-ram dax0.0 --force
    
    This will dynamically add pmemory range to LPAR RAM eventually invoking
    iommu_mem_notifier(). The address range of pmemory is way beyond the Max
    RAM that the LPAR can have. Which means, this range is beyond the DDW
    created for the device, at device initialization time.
    
    As a result when TCEs are pre-mapped for the pmemory range, by
    iommu_mem_notifier(), PHYP HCALL returns H_PARAMETER. This failed the
    command, daxctl, to add pmemory as RAM.
    
    The solution is to not pre-map TCEs for pmemory.
    
    Signed-off-by: Gaurav Batra <[email protected]>
    Tested-by: Donet Tom <[email protected]>
    Reviewed-by: Donet Tom <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
pps: generators: replace copy of pps-gen info struct with const pointer [+ + +]
Author: Subramanian Mohan <[email protected]>
Date:   Wed Feb 19 09:36:15 2025 +0530

    pps: generators: replace copy of pps-gen info struct with const pointer
    
    [ Upstream commit ac9c5170a18162d45c6edd1f0fa2d2b2504bc2cb ]
    
    Some PPS generator drivers may need to retrieve a pointer to their
    internal data while executing the PPS generator enable() method.
    
    During the driver registration the pps_gen_device pointer is returned
    from the framework, and for that reason, there is difficulty in
    getting generator driver data back in the enable function. We won't be
    able to use container_of macro as it results in static assert, and we
    might end up in using static pointer.
    
    To solve the issue and to get back the generator driver data back, we
    should not copy the struct pps_gen_source_info within the struct
    pps_gen_device during the registration stage, but simply save the
    pointer of the driver one. In this manner, driver may get a pointer
    to their internal data as shown below:
    
    struct pps_gen_foo_data_s {
            ...
            struct pps_gen_source_info gen_info;
            struct pps_gen_device *pps_gen;
            ...
    };
    
    static int __init pps_gen_foo_init(void)
    {
            struct pps_gen_foo_data_s *foo;
            ...
            foo->pps_gen = pps_gen_register_source(&foo->gen_info);
            ...
    }
    
    Then, in the enable() method, we can retrieve the pointer to the main
    struct by using the code below:
    
    static int pps_gen_foo_enable(struct pps_gen_device *pps_gen, bool enable)
    {
            struct pps_gen_foo_data_s *foo = container_of(pps_gen->info,
                                                    struct pps_gen_foo_data_s, gen_info);
            ...
    }
    
    Signed-off-by: Rodolfo Giometti <[email protected]>
    Tested-by: Subramanian Mohan <[email protected]>
    Suggested-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Subramanian Mohan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
printk: Check CON_SUSPEND when unblanking a console [+ + +]
Author: Marcos Paulo de Souza <[email protected]>
Date:   Wed Feb 26 16:59:05 2025 -0300

    printk: Check CON_SUSPEND when unblanking a console
    
    [ Upstream commit 72c96a2dacc0fb056d13a5f02b0845c4c910fe54 ]
    
    The commit 9e70a5e109a4 ("printk: Add per-console suspended state")
    introduced the CON_SUSPENDED flag for consoles. The suspended consoles
    will stop receiving messages, so don't unblank suspended consoles
    because it won't be showing anything either way.
    
    Signed-off-by: Marcos Paulo de Souza <[email protected]>
    Reviewed-by: Petr Mladek <[email protected]>
    Reviewed-by: John Ogness <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Petr Mladek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pstore: Change kmsg_bytes storage size to u32 [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu Feb 6 11:16:59 2025 -0800

    pstore: Change kmsg_bytes storage size to u32
    
    [ Upstream commit 5674609535bafa834ab014d90d9bbe8e89223a0b ]
    
    The types around kmsg_bytes were inconsistent. The global was unsigned
    long, the argument to pstore_set_kmsg_bytes() was int, and the filesystem
    option was u32. Given other internal limits, there's not much sense
    in making a single pstore record larger than INT_MAX and it can't be
    negative, so use u32 everywhere. Additionally, use READ/WRITE_ONCE and a
    local variable in pstore_dump() to avoid kmsg_bytes changing during a
    dump.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ptp: ocp: Limit signal/freq counts in summary output functions [+ + +]
Author: Sagi Maimon <[email protected]>
Date:   Wed May 14 10:35:41 2025 +0300

    ptp: ocp: Limit signal/freq counts in summary output functions
    
    [ Upstream commit c9e455581e2ba87ee38c126e8dc49a424b9df0cf ]
    
    The debugfs summary output could access uninitialized elements in
    the freq_in[] and signal_out[] arrays, causing NULL pointer
    dereferences and triggering a kernel Oops (page_fault_oops).
    This patch adds u8 fields (nr_freq_in, nr_signal_out) to track the
    number of initialized elements, with a maximum of 4 per array.
    The summary output functions are updated to respect these limits,
    preventing out-of-bounds access and ensuring safe array handling.
    
    Widen the label variables because the change confuses GCC about
    max length of the strings.
    
    Fixes: ef61f5528fca ("ptp: ocp: add Adva timecard support")
    Signed-off-by: Sagi Maimon <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
r8152: add vendor/device ID pair for Dell Alienware AW1022z [+ + +]
Author: Aleksander Jan Bajkowski <[email protected]>
Date:   Thu Feb 6 23:40:33 2025 +0100

    r8152: add vendor/device ID pair for Dell Alienware AW1022z
    
    [ Upstream commit 848b09d53d923b4caee5491f57a5c5b22d81febc ]
    
    The Dell AW1022z is an RTL8156B based 2.5G Ethernet controller.
    
    Add the vendor and product ID values to the driver. This makes Ethernet
    work with the adapter.
    
    Signed-off-by: Aleksander Jan Bajkowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
r8169: disable RTL8126 ZRX-DC timeout [+ + +]
Author: ChunHao Lin <[email protected]>
Date:   Tue Mar 18 16:37:21 2025 +0800

    r8169: disable RTL8126 ZRX-DC timeout
    
    [ Upstream commit b48688ea3c9ac8d5d910c6e91fb7f80d846581f0 ]
    
    Disable it due to it dose not meet ZRX-DC specification. If it is enabled,
    device will exit L1 substate every 100ms. Disable it for saving more power
    in L1 substate.
    
    Signed-off-by: ChunHao Lin <[email protected]>
    Reviewed-by: Heiner Kallweit <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

r8169: don't scan PHY addresses > 0 [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Tue Feb 4 07:58:17 2025 +0100

    r8169: don't scan PHY addresses > 0
    
    [ Upstream commit faac69a4ae5abb49e62c79c66b51bb905c9aa5ec ]
    
    The PHY address is a dummy, because r8169 PHY access registers
    don't support a PHY address. Therefore scan address 0 only.
    
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

r8169: increase max jumbo packet size on RTL8125/RTL8126 [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Fri Mar 7 08:29:47 2025 +0100

    r8169: increase max jumbo packet size on RTL8125/RTL8126
    
    [ Upstream commit 473367a5ffe1607a61be481e2feda684eb5faea9 ]
    
    Realtek confirmed that all RTL8125/RTL8126 chip versions support up to
    16K jumbo packets. Reflect this in the driver.
    
    Tested by Rui on RTL8125B with 12K jumbo packets.
    
    Suggested-by: Rui Salvaterra <[email protected]>
    Tested-by: Rui Salvaterra <[email protected]>
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rcu: Fix get_state_synchronize_rcu_full() GP-start detection [+ + +]
Author: Paul E. McKenney <[email protected]>
Date:   Thu Dec 12 14:15:07 2024 -0800

    rcu: Fix get_state_synchronize_rcu_full() GP-start detection
    
    [ Upstream commit 85aad7cc417877054c65bd490dc037b087ef21b4 ]
    
    The get_state_synchronize_rcu_full() and poll_state_synchronize_rcu_full()
    functions use the root rcu_node structure's ->gp_seq field to detect
    the beginnings and ends of grace periods, respectively.  This choice is
    necessary for the poll_state_synchronize_rcu_full() function because
    (give or take counter wrap), the following sequence is guaranteed not
    to trigger:
    
            get_state_synchronize_rcu_full(&rgos);
            synchronize_rcu();
            WARN_ON_ONCE(!poll_state_synchronize_rcu_full(&rgos));
    
    The RCU callbacks that awaken synchronize_rcu() instances are
    guaranteed not to be invoked before the root rcu_node structure's
    ->gp_seq field is updated to indicate the end of the grace period.
    However, these callbacks might start being invoked immediately
    thereafter, in particular, before rcu_state.gp_seq has been updated.
    Therefore, poll_state_synchronize_rcu_full() must refer to the
    root rcu_node structure's ->gp_seq field.  Because this field is
    updated under this structure's ->lock, any code following a call to
    poll_state_synchronize_rcu_full() will be fully ordered after the
    full grace-period computation, as is required by RCU's memory-ordering
    semantics.
    
    By symmetry, the get_state_synchronize_rcu_full() function should also
    use this same root rcu_node structure's ->gp_seq field.  But it turns out
    that symmetry is profoundly (though extremely infrequently) destructive
    in this case.  To see this, consider the following sequence of events:
    
    1.      CPU 0 starts a new grace period, and updates rcu_state.gp_seq
            accordingly.
    
    2.      As its first step of grace-period initialization, CPU 0 examines
            the current CPU hotplug state and decides that it need not wait
            for CPU 1, which is currently offline.
    
    3.      CPU 1 comes online, and updates its state.  But this does not
            affect the current grace period, but rather the one after that.
            After all, CPU 1 was offline when the current grace period
            started, so all pre-existing RCU readers on CPU 1 must have
            completed or been preempted before it last went offline.
            The current grace period therefore has nothing it needs to wait
            for on CPU 1.
    
    4.      CPU 1 switches to an rcutorture kthread which is running
            rcutorture's rcu_torture_reader() function, which starts a new
            RCU reader.
    
    5.      CPU 2 is running rcutorture's rcu_torture_writer() function
            and collects a new polled grace-period "cookie" using
            get_state_synchronize_rcu_full().  Because the newly started
            grace period has not completed initialization, the root rcu_node
            structure's ->gp_seq field has not yet been updated to indicate
            that this new grace period has already started.
    
            This cookie is therefore set up for the end of the current grace
            period (rather than the end of the following grace period).
    
    6.      CPU 0 finishes grace-period initialization.
    
    7.      If CPU 1’s rcutorture reader is preempted, it will be added to
            the ->blkd_tasks list, but because CPU 1’s ->qsmask bit is not
            set in CPU 1's leaf rcu_node structure, the ->gp_tasks pointer
            will not be updated.  Thus, this grace period will not wait on
            it.  Which is only fair, given that the CPU did not come online
            until after the grace period officially started.
    
    8.      CPUs 0 and 2 then detect the new grace period and then report
            a quiescent state to the RCU core.
    
    9.      Because CPU 1 was offline at the start of the current grace
            period, CPUs 0 and 2 are the only CPUs that this grace period
            needs to wait on.  So the grace period ends and post-grace-period
            cleanup starts.  In particular, the root rcu_node structure's
            ->gp_seq field is updated to indicate that this grace period
            has now ended.
    
    10.     CPU 2 continues running rcu_torture_writer() and sees that,
            from the viewpoint of the root rcu_node structure consulted by
            the poll_state_synchronize_rcu_full() function, the grace period
            has ended.  It therefore updates state accordingly.
    
    11.     CPU 1 is still running the same RCU reader, which notices this
            update and thus complains about the too-short grace period.
    
    The fix is for the get_state_synchronize_rcu_full() function to use
    rcu_state.gp_seq instead of the root rcu_node structure's ->gp_seq field.
    With this change in place, if step 5's cookie indicates that the grace
    period has not yet started, then any prior code executed by CPU 2 must
    have happened before CPU 1 came online.  This will in turn prevent CPU
    1's code in steps 3 and 11 from spanning CPU 2's grace-period wait,
    thus preventing CPU 1 from being subjected to a too-short grace period.
    
    This commit therefore makes this change.  Note that there is no change to
    the poll_state_synchronize_rcu_full() function, which as noted above,
    must continue to use the root rcu_node structure's ->gp_seq field.
    This is of course an asymmetry between these two functions, but is an
    asymmetry that is absolutely required for correct operation.  It is a
    common human tendency to greatly value symmetry, and sometimes symmetry
    is a wonderful thing.  Other times, symmetry results in poor performance.
    But in this case, symmetry is just plain wrong.
    
    Nevertheless, the asymmetry does require an additional adjustment.
    It is possible for get_state_synchronize_rcu_full() to see a given
    grace period as having started, but for an immediately following
    poll_state_synchronize_rcu_full() to see it as having not yet started.
    Given the current rcu_seq_done_exact() implementation, this will
    result in a false-positive indication that the grace period is done
    from poll_state_synchronize_rcu_full().  This is dealt with by making
    rcu_seq_done_exact() reach back three grace periods rather than just
    two of them.
    
    However, simply changing get_state_synchronize_rcu_full() function to
    use rcu_state.gp_seq instead of the root rcu_node structure's ->gp_seq
    field results in a theoretical bug in kernels booted with
    rcutree.rcu_normal_wake_from_gp=1 due to the following sequence of
    events:
    
    o       The rcu_gp_init() function invokes rcu_seq_start() to officially
            start a new grace period.
    
    o       A new RCU reader begins, referencing X from some RCU-protected
            list.  The new grace period is not obligated to wait for this
            reader.
    
    o       An updater removes X, then calls synchronize_rcu(), which queues
            a wait element.
    
    o       The grace period ends, awakening the updater, which frees X
            while the reader is still referencing it.
    
    The reason that this is theoretical is that although the grace period
    has officially started, none of the CPUs are officially aware of this,
    and thus will have to assume that the RCU reader pre-dated the start of
    the grace period. Detailed explanation can be found at [2] and [3].
    
    Except for kernels built with CONFIG_PROVE_RCU=y, which use the polled
    grace-period APIs, which can and do complain bitterly when this sequence
    of events occurs.  Not only that, there might be some future RCU
    grace-period mechanism that pulls this sequence of events from theory
    into practice.  This commit therefore also pulls the call to
    rcu_sr_normal_gp_init() to precede that to rcu_seq_start().
    
    Although this fixes commit 91a967fd6934 ("rcu: Add full-sized polling
    for get_completed*() and poll_state*()"), it is not clear that it is
    worth backporting this commit.  First, it took me many weeks to convince
    rcutorture to reproduce this more frequently than once per year.
    Second, this cannot be reproduced at all without frequent CPU-hotplug
    operations, as in waiting all of 50 milliseconds from the end of the
    previous operation until starting the next one.  Third, the TREE03.boot
    settings cause multi-millisecond delays during RCU grace-period
    initialization, which greatly increase the probability of the above
    sequence of events.  (Don't do this in production workloads!) Fourth,
    the TREE03 rcutorture scenario was modified to use four-CPU guest OSes,
    to have a single-rcu_node combining tree, no testing of RCU priority
    boosting, and no random preemption, and these modifications were
    necessary to reproduce this issue in a reasonable timeframe. Fifth,
    extremely heavy use of get_state_synchronize_rcu_full() and/or
    poll_state_synchronize_rcu_full() is required to reproduce this, and as
    of v6.12, only kfree_rcu() uses it, and even then not particularly
    heavily.
    
    [boqun: Apply the fix [1], and add the comment before the moved
    rcu_sr_normal_gp_init(). Additional links are added for explanation.]
    
    Signed-off-by: Paul E. McKenney <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Reviewed-by: Joel Fernandes (Google) <[email protected]>
    Tested-by: Uladzislau Rezki (Sony) <[email protected]>
    Link: https://lore.kernel.org/rcu/d90bd6d9-d15c-4b9b-8a69-95336e74e8f4@paulmck-laptop/ [1]
    Link: https://lore.kernel.org/rcu/20250303001507.GA3994772@joelnvbox/ [2]
    Link: https://lore.kernel.org/rcu/Z8bcUsZ9IpRi1QoP@pc636/ [3]
    Reviewed-by: Joel Fernandes <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcu: fix header guard for rcu_all_qs() [+ + +]
Author: Ankur Arora <[email protected]>
Date:   Thu Dec 12 20:06:52 2024 -0800

    rcu: fix header guard for rcu_all_qs()
    
    [ Upstream commit ad6b5b73ff565e88aca7a7d1286788d80c97ba71 ]
    
    rcu_all_qs() is defined for !CONFIG_PREEMPT_RCU but the declaration
    is conditioned on CONFIG_PREEMPTION.
    
    With CONFIG_PREEMPT_LAZY, CONFIG_PREEMPTION=y does not imply
    CONFIG_PREEMPT_RCU=y.
    
    Decouple the two.
    
    Cc: Paul E. McKenney <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Ankur Arora <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y [+ + +]
Author: Ankur Arora <[email protected]>
Date:   Thu Dec 12 20:06:56 2024 -0800

    rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
    
    [ Upstream commit 83b28cfe796464ebbde1cf7916c126da6d572685 ]
    
    With PREEMPT_RCU=n, cond_resched() provides urgently needed quiescent
    states for read-side critical sections via rcu_all_qs().
    One reason why this was needed: lacking preempt-count, the tick
    handler has no way of knowing whether it is executing in a
    read-side critical section or not.
    
    With (PREEMPT_LAZY=y, PREEMPT_DYNAMIC=n), we get (PREEMPT_COUNT=y,
    PREEMPT_RCU=n). In this configuration cond_resched() is a stub and
    does not provide quiescent states via rcu_all_qs().
    (PREEMPT_RCU=y provides this information via rcu_read_unlock() and
    its nesting counter.)
    
    So, use the availability of preempt_count() to report quiescent states
    in rcu_flavor_sched_clock_irq().
    
    Suggested-by: Paul E. McKenney <[email protected]>
    Reviewed-by: Sebastian Andrzej Siewior <[email protected]>
    Signed-off-by: Ankur Arora <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rcu: handle unstable rdp in rcu_read_unlock_strict() [+ + +]
Author: Ankur Arora <[email protected]>
Date:   Thu Dec 12 20:06:55 2024 -0800

    rcu: handle unstable rdp in rcu_read_unlock_strict()
    
    [ Upstream commit fcf0e25ad4c8d14d2faab4d9a17040f31efce205 ]
    
    rcu_read_unlock_strict() can be called with preemption enabled
    which can make for an unstable rdp and a racy norm value.
    
    Fix this by dropping the preempt-count in __rcu_read_unlock()
    after the call to rcu_read_unlock_strict(), adjusting the
    preempt-count check appropriately.
    
    Suggested-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Ankur Arora <[email protected]>
    Reviewed-by: Frederic Weisbecker <[email protected]>
    Signed-off-by: Paul E. McKenney <[email protected]>
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Fix best page size finding when it can cross SG entries [+ + +]
Author: Michael Margolin <[email protected]>
Date:   Mon Feb 17 14:16:23 2025 +0000

    RDMA/core: Fix best page size finding when it can cross SG entries
    
    [ Upstream commit 486055f5e09df959ad4e3aa4ee75b5c91ddeec2e ]
    
    A single scatter-gather entry is limited by a 32 bits "length" field
    that is practically 4GB - PAGE_SIZE. This means that even when the
    memory is physically contiguous, we might need more than one entry to
    represent it. Additionally when using dmabuf, the sg_table might be
    originated outside the subsystem and optimized for other needs.
    
    For instance an SGT of 16GB GPU continuous memory might look like this:
    (a real life example)
    
    dma_address 34401400000, length fffff000
    dma_address 345013ff000, length fffff000
    dma_address 346013fe000, length fffff000
    dma_address 347013fd000, length fffff000
    dma_address 348013fc000, length 4000
    
    Since ib_umem_find_best_pgsz works within SG entries, in the above case
    we will result with the worst possible 4KB page size.
    
    Fix this by taking into consideration only the alignment of addresses of
    real discontinuity points rather than treating SG entries as such, and
    adjust the page iterator to correctly handle cross SG entry pages.
    
    There is currently an assumption that drivers do not ask for pages
    bigger than maximal DMA size supported by their devices.
    
    Reviewed-by: Firas Jahjah <[email protected]>
    Reviewed-by: Yonatan Nachum <[email protected]>
    Signed-off-by: Michael Margolin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject() [+ + +]
Author: Maher Sanalla <[email protected]>
Date:   Wed Feb 26 15:54:13 2025 +0200

    RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
    
    [ Upstream commit 81f8f7454ad9e0bf95efdec6542afdc9a6ab1e24 ]
    
    Currently, the IB uverbs API calls uobj_get_uobj_read(), which in turn
    uses the rdma_lookup_get_uobject() helper to retrieve user objects.
    In case of failure, uobj_get_uobj_read() returns NULL, overriding the
    error code from rdma_lookup_get_uobject(). The IB uverbs API then
    translates this NULL to -EINVAL, masking the actual error and
    complicating debugging. For example, applications calling ibv_modify_qp
    that fails with EBUSY when retrieving the QP uobject will see the
    overridden error code EINVAL instead, masking the actual error.
    
    Furthermore, based on rdma-core commit:
    "2a22f1ced5f3 ("Merge pull request #1568 from jakemoroni/master")"
    Kernel's IB uverbs return values are either ignored and passed on as is
    to application or overridden with other errnos in a few cases.
    
    Thus, to improve error reporting and debuggability, propagate the
    original error from rdma_lookup_get_uobject() instead of replacing it
    with EINVAL.
    
    Signed-off-by: Maher Sanalla <[email protected]>
    Link: https://patch.msgid.link/64f9d3711b183984e939962c2f83383904f97dfb.1740577869.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: ad5398: Add device tree support [+ + +]
Author: Isaac Scott <[email protected]>
Date:   Tue Jan 28 17:31:43 2025 +0000

    regulator: ad5398: Add device tree support
    
    [ Upstream commit 5a6a461079decea452fdcae955bccecf92e07e97 ]
    
    Previously, the ad5398 driver used only platform_data, which is
    deprecated in favour of device tree. This caused the AD5398 to fail to
    probe as it could not load its init_data. If the AD5398 has a device
    tree node, pull the init_data from there using
    of_get_regulator_init_data.
    
    Signed-off-by: Isaac Scott <[email protected]>
    Acked-by: Michael Hennerich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: qcom_wcnss: Fix on platforms without fallback regulators [+ + +]
Author: Matti Lehtimäki <[email protected]>
Date:   Mon May 12 02:40:15 2025 +0300

    remoteproc: qcom_wcnss: Fix on platforms without fallback regulators
    
    [ Upstream commit 4ca45af0a56d00b86285d6fdd720dca3215059a7 ]
    
    Recent change to handle platforms with only single power domain broke
    pronto-v3 which requires power domains and doesn't have fallback voltage
    regulators in case power domains are missing. Add a check to verify
    the number of fallback voltage regulators before using the code which
    handles single power domain situation.
    
    Fixes: 65991ea8a6d1 ("remoteproc: qcom_wcnss: Handle platforms with only single power domain")
    Signed-off-by: Matti Lehtimäki <[email protected]>
    Tested-by: Luca Weiss <[email protected]> # sdm632-fairphone-fp3
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

remoteproc: qcom_wcnss: Handle platforms with only single power domain [+ + +]
Author: Matti Lehtimäki <[email protected]>
Date:   Thu Feb 6 20:56:48 2025 +0100

    remoteproc: qcom_wcnss: Handle platforms with only single power domain
    
    [ Upstream commit 65991ea8a6d1e68effdc01d95ebe39f1653f7b71 ]
    
    Both MSM8974 and MSM8226 have only CX as power domain with MX & PX being
    handled as regulators. Handle this case by reodering pd_names to have CX
    first, and handling that the driver core will already attach a single
    power domain internally.
    
    Signed-off-by: Matti Lehtimäki <[email protected]>
    [luca: minor changes]
    Signed-off-by: Luca Weiss <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [bjorn: Added missing braces to else after multi-statement if]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection" [+ + +]
Author: Jernej Skrabec <[email protected]>
Date:   Sun Apr 13 15:58:48 2025 +0200

    Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"
    
    [ Upstream commit 573f99c7585f597630f14596550c79e73ffaeef4 ]
    
    This reverts commit 531fdbeedeb89bd32018a35c6e137765c9cc9e97.
    
    Hardware that uses I2C wasn't designed with high speeds in mind, so
    communication with PMIC via RSB can intermittently fail. Go back to I2C
    as higher speed and efficiency isn't worth the trouble.
    
    Fixes: 531fdbeedeb8 ("arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection")
    Link: https://github.com/LibreELEC/LibreELEC.tv/issues/7731
    Signed-off-by: Jernej Skrabec <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "drm/amd/display: Exit idle optimizations before attempt to access PHY" [+ + +]
Author: Brandon Syu <[email protected]>
Date:   Tue Jan 21 13:29:51 2025 +0800

    Revert "drm/amd/display: Exit idle optimizations before attempt to access PHY"
    
    [ Upstream commit be704e5ef4bd66dee9bb3f876964327e3a247d31 ]
    
    This reverts commit de612738e9771bd66aeb20044486c457c512f684.
    
    Reason to revert: screen flashes or gray screen appeared half of the
    screen after resume from S4/S5.
    
    Reviewed-by: Charlene Liu <[email protected]>
    Signed-off-by: Brandon Syu <[email protected]>
    Signed-off-by: Alex Hung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Revert "drm/amd/display: Request HW cursor on DCN3.2 with SubVP" [+ + +]
Author: Leo Zeng <[email protected]>
Date:   Fri Jan 31 11:46:52 2025 -0500

    Revert "drm/amd/display: Request HW cursor on DCN3.2 with SubVP"
    
    [ Upstream commit 8ae6dfc0b61b170cf13832d4cfe2a0c744e621a7 ]
    
    This reverts commit 13437c91606c9232c747475e202fe3827cd53264.
    
    Reason to revert: idle power regression found in testing.
    
    Reviewed-by: Dillon Varone <[email protected]>
    Signed-off-by: Leo Zeng <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "drm/amd: Keep display off while going into S4" [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu May 22 09:13:28 2025 -0500

    Revert "drm/amd: Keep display off while going into S4"
    
    commit 7e7cb7a13c81073d38a10fa7b450d23712281ec4 upstream.
    
    commit 68bfdc8dc0a1a ("drm/amd: Keep display off while going into S4")
    attempted to keep displays off during the S4 sequence by not resuming
    display IP.  This however leads to hangs because DRM clients such as the
    console can try to access registers and cause a hang.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4155
    Fixes: 68bfdc8dc0a1a ("drm/amd: Keep display off while going into S4")
    Reviewed-by: Alex Deucher <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit e485502c37b097b0bd773baa7e2741bf7bd2909a)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ring-buffer: Use kaslr address instead of text delta [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Wed Mar 5 11:45:40 2025 -0500

    ring-buffer: Use kaslr address instead of text delta
    
    [ Upstream commit bcba8d4dbe6880ce9883409df486de35d3946704 ]
    
    Instead of saving off the text and data pointers and using them to compare
    with the current boot's text and data pointers, just save off the KASLR
    offset. Then that can be used to figure out how to read the previous boots
    buffer.
    
    The last_boot_info will now show this offset, but only if it is for a
    previous boot:
    
      ~# cat instances/boot_mapped/last_boot_info
      39000000      [kernel]
    
      ~# echo function > instances/boot_mapped/current_tracer
      ~# cat instances/boot_mapped/last_boot_info
      # Current
    
    If the KASLR offset saved is for the current boot, the last_boot_info will
    show the value of "current".
    
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RISC-V: add vector extension validation checks [+ + +]
Author: Conor Dooley <[email protected]>
Date:   Wed Mar 12 13:11:44 2025 +0000

    RISC-V: add vector extension validation checks
    
    [ Upstream commit 9324571e9eea231321acf0a3d0fbc85a6e0f6ff6 ]
    
    Using Clement's new validation callbacks, support checking that
    dependencies have been satisfied for the vector extensions. From the
    kernel's perfective, it's not required to differentiate between the
    conditions for all the various vector subsets - it's the firmware's job
    to not report impossible combinations. Instead, the kernel only has to
    check that the correct config options are enabled and to enforce its
    requirement of the d extension being present for FPU support.
    
    Since vector will now be disabled proactively, there's no need to clear
    the bit in elf_hwcap in riscv_fill_hwcap() any longer.
    
    Signed-off-by: Conor Dooley <[email protected]>
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Link: https://lore.kernel.org/r/20250312-eclair-affluent-55b098c3602b@spud
    Signed-off-by: Alexandre Ghiti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
riscv: Allow NOMMU kernels to access all of RAM [+ + +]
Author: Samuel Holland <[email protected]>
Date:   Sat Oct 26 10:13:54 2024 -0700

    riscv: Allow NOMMU kernels to access all of RAM
    
    [ Upstream commit 2c0391b29b27f315c1b4c29ffde66f50b29fab99 ]
    
    NOMMU kernels currently cannot access memory below the kernel link
    address. Remove this restriction by setting PAGE_OFFSET to the actual
    start of RAM, as determined from the devicetree. The kernel link address
    must be a constant, so keep using CONFIG_PAGE_OFFSET for that purpose.
    
    Signed-off-by: Samuel Holland <[email protected]>
    Reviewed-by: Jesse Taube <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

riscv: Call secondary mmu notifier when flushing the tlb [+ + +]
Author: Alexandre Ghiti <[email protected]>
Date:   Mon Jan 13 15:24:24 2025 +0100

    riscv: Call secondary mmu notifier when flushing the tlb
    
    [ Upstream commit d9be2b9b60497a82aeceec3a98d8b37fdd2960f2 ]
    
    This is required to allow the IOMMU driver to correctly flush its own
    TLB.
    
    Reviewed-by: Clément Léger <[email protected]>
    Reviewed-by: Samuel Holland <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Ghiti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rseq: Fix segfault on registration when rseq_cs is non-zero [+ + +]
Author: Michael Jeanson <[email protected]>
Date:   Thu Mar 6 16:12:21 2025 -0500

    rseq: Fix segfault on registration when rseq_cs is non-zero
    
    [ Upstream commit fd881d0a085fc54354414aed990ccf05f282ba53 ]
    
    The rseq_cs field is documented as being set to 0 by user-space prior to
    registration, however this is not currently enforced by the kernel. This
    can result in a segfault on return to user-space if the value stored in
    the rseq_cs field doesn't point to a valid struct rseq_cs.
    
    The correct solution to this would be to fail the rseq registration when
    the rseq_cs field is non-zero. However, some older versions of glibc
    will reuse the rseq area of previous threads without clearing the
    rseq_cs field and will also terminate the process if the rseq
    registration fails in a secondary thread. This wasn't caught in testing
    because in this case the leftover rseq_cs does point to a valid struct
    rseq_cs.
    
    What we can do is clear the rseq_cs field on registration when it's
    non-zero which will prevent segfaults on registration and won't break
    the glibc versions that reuse rseq areas on thread creation.
    
    Signed-off-by: Michael Jeanson <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Mathieu Desnoyers <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
rtc: ds1307: stop disabling alarms on probe [+ + +]
Author: Alexandre Belloni <[email protected]>
Date:   Mon Mar 3 23:37:44 2025 +0100

    rtc: ds1307: stop disabling alarms on probe
    
    [ Upstream commit dcec12617ee61beed928e889607bf37e145bf86b ]
    
    It is a bad practice to disable alarms on probe or remove as this will
    prevent alarms across reboots.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtc: rv3032: fix EERD location [+ + +]
Author: Alexandre Belloni <[email protected]>
Date:   Thu Mar 6 22:42:41 2025 +0100

    rtc: rv3032: fix EERD location
    
    [ Upstream commit b0f9cb4a0706b0356e84d67e48500b77b343debe ]
    
    EERD is bit 2 in CTRL1
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rtnetlink: Lookup device in target netns when creating link [+ + +]
Author: Xiao Liang <[email protected]>
Date:   Wed Feb 19 20:50:27 2025 +0800

    rtnetlink: Lookup device in target netns when creating link
    
    [ Upstream commit ec061546c6cffbb8929495bba3953f0cc5e177fa ]
    
    When creating link, lookup for existing device in target net namespace
    instead of current one.
    For example, two links created by:
    
      # ip link add dummy1 type dummy
      # ip link add netns ns1 dummy1 type dummy
    
    should have no conflict since they are in different namespaces.
    
    Signed-off-by: Xiao Liang <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/tlb: Use mm_has_pgste() instead of mm_alloc_pgste() [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Mon Mar 10 12:42:59 2025 +0100

    s390/tlb: Use mm_has_pgste() instead of mm_alloc_pgste()
    
    [ Upstream commit 9291ea091b29bb3e37c4b3416c7c1e49e472c7d5 ]
    
    An mm has pgstes only after s390_enable_sie() has been called, while
    mm_alloc_pgste() may be always true (e.g. via sysctl setting).
    
    Limit the calls to gmap_unlink() in pte_free_tlb() to those cases
    where there might be something to unlink.
    
    Reviewed-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Vasily Gorbik <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/vfio-ap: Fix no AP queue sharing allowed message written to kernel log [+ + +]
Author: Anthony Krowiak <[email protected]>
Date:   Tue Mar 11 06:32:57 2025 -0400

    s390/vfio-ap: Fix no AP queue sharing allowed message written to kernel log
    
    [ Upstream commit d33d729afcc8ad2148d99f9bc499b33fd0c0d73b ]
    
    An erroneous message is written to the kernel log when either of the
    following actions are taken by a user:
    
    1. Assign an adapter or domain to a vfio_ap mediated device via its sysfs
       assign_adapter or assign_domain attributes that would result in one or
       more AP queues being assigned that are already assigned to a different
       mediated device. Sharing of queues between mdevs is not allowed.
    
    2. Reserve an adapter or domain for the host device driver via the AP bus
       driver's sysfs apmask or aqmask attribute that would result in providing
       host access to an AP queue that is in use by a vfio_ap mediated device.
       Reserving a queue for a host driver that is in use by an mdev is not
       allowed.
    
    In both cases, the assignment will return an error; however, a message like
    the following is written to the kernel log:
    
    vfio_ap_mdev e1839397-51a0-4e3c-91e0-c3b9c3d3047d: Userspace may not
    re-assign queue 00.0028 already assigned to \
    e1839397-51a0-4e3c-91e0-c3b9c3d3047d
    
    Notice the mdev reporting the error is the same as the mdev identified
    in the message as the one to which the queue is being assigned.
    It is perfectly okay to assign a queue to an mdev to which it is
    already assigned; the assignment is simply ignored by the vfio_ap device
    driver.
    
    This patch logs more descriptive and accurate messages for both 1 and 2
    above to the kernel log:
    
    Example for 1:
    vfio_ap_mdev 0fe903a0-a323-44db-9daf-134c68627d61: Userspace may not assign
    queue 00.0033 to mdev: already assigned to \
    62177883-f1bb-47f0-914d-32a22e3a8804
    
    Example for 2:
    vfio_ap_mdev 62177883-f1bb-47f0-914d-32a22e3a8804: Can not reserve queue
    00.0033 for host driver: in use by mdev
    
    Signed-off-by: Anthony Krowiak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Vasily Gorbik <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora [+ + +]
Author: Haoran Jiang <[email protected]>
Date:   Fri Apr 25 17:50:42 2025 +0800

    samples/bpf: Fix compilation failure for samples/bpf on LoongArch Fedora
    
    [ Upstream commit 548762f05d19c5542db7590bcdfb9be1fb928376 ]
    
    When building the latest samples/bpf on LoongArch Fedora
    
         make M=samples/bpf
    
    There are compilation errors as follows:
    
    In file included from ./linux/samples/bpf/sockex2_kern.c:2:
    In file included from ./include/uapi/linux/in.h:25:
    In file included from ./include/linux/socket.h:8:
    In file included from ./include/linux/uio.h:9:
    In file included from ./include/linux/thread_info.h:60:
    In file included from ./arch/loongarch/include/asm/thread_info.h:15:
    In file included from ./arch/loongarch/include/asm/processor.h:13:
    In file included from ./arch/loongarch/include/asm/cpu-info.h:11:
    ./arch/loongarch/include/asm/loongarch.h:13:10: fatal error: 'larchintrin.h' file not found
             ^~~~~~~~~~~~~~~
    1 error generated.
    
    larchintrin.h is included in /usr/lib64/clang/14.0.6/include,
    and the header file location is specified at compile time.
    
    Test on LoongArch Fedora:
    https://github.com/fedora-remix-loongarch/releases-info
    
    Signed-off-by: Haoran Jiang <[email protected]>
    Signed-off-by: zhangxi <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue() [+ + +]
Author: Cong Wang <[email protected]>
Date:   Sun May 18 15:20:37 2025 -0700

    sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()
    
    [ Upstream commit 3f981138109f63232a5fb7165938d4c945cc1b9d ]
    
    When enqueuing the first packet to an HFSC class, hfsc_enqueue() calls the
    child qdisc's peek() operation before incrementing sch->q.qlen and
    sch->qstats.backlog. If the child qdisc uses qdisc_peek_dequeued(), this may
    trigger an immediate dequeue and potential packet drop. In such cases,
    qdisc_tree_reduce_backlog() is called, but the HFSC qdisc's qlen and backlog
    have not yet been updated, leading to inconsistent queue accounting. This
    can leave an empty HFSC class in the active list, causing further
    consequences like use-after-free.
    
    This patch fixes the bug by moving the increment of sch->q.qlen and
    sch->qstats.backlog before the call to the child qdisc's peek() operation.
    This ensures that queue length and backlog are always accurate when packet
    drops or dequeues are triggered during the peek.
    
    Fixes: 12d0ad3be9c3 ("net/sched/sch_hfsc.c: handle corner cases where head may change invalidating calculated deadline")
    Reported-by: Mingi Cho <[email protected]>
    Signed-off-by: Cong Wang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Jamal Hadi Salim <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sched: Reduce the default slice to avoid tasks getting an extra tick [+ + +]
Author: zihan zhou <[email protected]>
Date:   Sat Feb 8 15:53:23 2025 +0800

    sched: Reduce the default slice to avoid tasks getting an extra tick
    
    [ Upstream commit 2ae891b826958b60919ea21c727f77bcd6ffcc2c ]
    
    The old default value for slice is 0.75 msec * (1 + ilog(ncpus)) which
    means that we have a default slice of:
    
      0.75 for 1 cpu
      1.50 up to 3 cpus
      2.25 up to 7 cpus
      3.00 for 8 cpus and above.
    
    For HZ=250 and HZ=100, because of the tick accuracy, the runtime of
    tasks is far higher than their slice.
    
    For HZ=1000 with 8 cpus or more, the accuracy of tick is already
    satisfactory, but there is still an issue that tasks will get an extra
    tick because the tick often arrives a little faster than expected. In
    this case, the task can only wait until the next tick to consider that it
    has reached its deadline, and will run 1ms longer.
    
    vruntime + sysctl_sched_base_slice =     deadline
            |-----------|-----------|-----------|-----------|
                 1ms          1ms         1ms         1ms
                       ^           ^           ^           ^
                     tick1       tick2       tick3       tick4(nearly 4ms)
    
    There are two reasons for tick error: clockevent precision and the
    CONFIG_IRQ_TIME_ACCOUNTING/CONFIG_PARAVIRT_TIME_ACCOUNTING. with
    CONFIG_IRQ_TIME_ACCOUNTING every tick will be less than 1ms, but even
    without it, because of clockevent precision, tick still often less than
    1ms.
    
    In order to make scheduling more precise, we changed 0.75 to 0.70,
    Using 0.70 instead of 0.75 should not change much for other configs
    and would fix this issue:
    
      0.70 for 1 cpu
      1.40 up to 3 cpus
      2.10 up to 7 cpus
      2.8 for 8 cpus and above.
    
    This does not guarantee that tasks can run the slice time accurately
    every time, but occasionally running an extra tick has little impact.
    
    Signed-off-by: zihan zhou <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Vincent Guittot <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: logging: Fix scsi_logging_level bounds [+ + +]
Author: Nicolas Bouchinet <[email protected]>
Date:   Mon Feb 24 10:58:19 2025 +0100

    scsi: logging: Fix scsi_logging_level bounds
    
    [ Upstream commit 2cef5b4472c602e6c5a119aca869d9d4050586f3 ]
    
    Bound scsi_logging_level sysctl writings between SYSCTL_ZERO and
    SYSCTL_INT_MAX.
    
    The proc_handler has thus been updated to proc_dointvec_minmax.
    
    Signed-off-by: Nicolas Bouchinet <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Joel Granados <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: lpfc: Free phba irq in lpfc_sli4_enable_msi() when pci_irq_vector() fails [+ + +]
Author: Justin Tee <[email protected]>
Date:   Thu Jan 30 16:05:20 2025 -0800

    scsi: lpfc: Free phba irq in lpfc_sli4_enable_msi() when pci_irq_vector() fails
    
    [ Upstream commit f0842902b383982d1f72c490996aa8fc29a7aa0d ]
    
    Fix smatch warning regarding missed calls to free_irq().  Free the phba IRQ
    in the failed pci_irq_vector cases.
    
    lpfc_init.c: lpfc_sli4_enable_msi() warn: 'phba->pcidev->irq' from
                 request_irq() not released.
    
    Signed-off-by: Justin Tee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine [+ + +]
Author: Justin Tee <[email protected]>
Date:   Thu Jan 30 16:05:22 2025 -0800

    scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine
    
    [ Upstream commit 56c3d809b7b450379162d0b8a70bbe71ab8db706 ]
    
    After a port swap between separate fabrics, there may be multiple nodes in
    the vport's fc_nodes list with the same fabric well known address.
    Duplication is temporary and eventually resolves itself after dev_loss_tmo
    expires, but nameserver queries may still occur before dev_loss_tmo.  This
    possibly results in returning stale fabric ndlp objects.  Fix by adding an
    nlp_state check to ensure the ndlp search routine returns the correct newer
    allocated ndlp fabric object.
    
    Signed-off-by: Justin Tee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: lpfc: Ignore ndlp rport mismatch in dev_loss_tmo callbk [+ + +]
Author: Justin Tee <[email protected]>
Date:   Thu Jan 30 16:05:21 2025 -0800

    scsi: lpfc: Ignore ndlp rport mismatch in dev_loss_tmo callbk
    
    [ Upstream commit 23ed62897746f49f195d819ce6edeb1db27d1b72 ]
    
    With repeated port swaps between separate fabrics, there can be multiple
    registrations for fabric well known address 0xfffffe.  This can cause ndlp
    reference confusion due to the usage of a single ndlp ptr that stores the
    rport object in fc_rport struct private storage during transport
    registration.  Subsequent registrations update the ndlp->rport field with
    the newer rport, so when transport layer triggers dev_loss_tmo for the
    earlier registered rport the ndlp->rport private storage is referencing the
    newer rport instead of the older rport in dev_loss_tmo callbk.
    
    Because the older ndlp->rport object is already cleaned up elsewhere in
    driver code during the time of fabric swap, check that the rport provided
    in dev_loss_tmo callbk actually matches the rport stored in the LLDD's
    ndlp->rport field.  Otherwise, skip dev_loss_tmo work on a stale rport.
    
    Signed-off-by: Justin Tee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: lpfc: Reduce log message generation during ELS ring clean up [+ + +]
Author: Justin Tee <[email protected]>
Date:   Thu Jan 30 16:05:19 2025 -0800

    scsi: lpfc: Reduce log message generation during ELS ring clean up
    
    [ Upstream commit 8eccc58d71eafbd2635077916b68fda15791d270 ]
    
    A clean up log message is output from lpfc_els_flush_cmd() for each
    outstanding ELS I/O and repeated for every NPIV instance.  The log message
    should only be generated for active I/Os matching the NPIV vport.  Thus,
    move the vport check to before logging the message.
    
    Signed-off-by: Justin Tee <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mpi3mr: Add level check to control event logging [+ + +]
Author: Ranjan Kumar <[email protected]>
Date:   Tue Apr 15 15:45:46 2025 +0530

    scsi: mpi3mr: Add level check to control event logging
    
    [ Upstream commit b0b7ee3b574a72283399b9232f6190be07f220c0 ]
    
    Ensure event logs are only generated when the debug logging level
    MPI3_DEBUG_EVENT is enabled. This prevents unnecessary logging.
    
    Signed-off-by: Ranjan Kumar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mpi3mr: Update timestamp only for supervisor IOCs [+ + +]
Author: Ranjan Kumar <[email protected]>
Date:   Thu Feb 20 19:55:26 2025 +0530

    scsi: mpi3mr: Update timestamp only for supervisor IOCs
    
    [ Upstream commit 83a9d30d29f275571f6e8f879f04b2379be7eb6c ]
    
    The driver issues the time stamp update command periodically. Even if the
    command fails with supervisor only IOC Status.
    
    Instead check the Non-Supervisor capability bit reported by IOC as part of
    IOC Facts.
    
    Co-developed-by: Sumit Saxena <[email protected]>
    Signed-off-by: Sumit Saxena <[email protected]>
    Signed-off-by: Ranjan Kumar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mpt3sas: Send a diag reset if target reset fails [+ + +]
Author: Shivasharan S <[email protected]>
Date:   Wed Feb 12 17:26:55 2025 -0800

    scsi: mpt3sas: Send a diag reset if target reset fails
    
    [ Upstream commit 5612d6d51ed2634a033c95de2edec7449409cbb9 ]
    
    When an IOCTL times out and driver issues a target reset, if firmware
    fails the task management elevate the recovery by issuing a diag reset to
    controller.
    
    Signed-off-by: Shivasharan S <[email protected]>
    Link: https://lore.kernel.org/r/1739410016-27503-5-git-send-email-shivasharan.srikanteshwara@broadcom.com
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: scsi_debug: First fixes for tapes [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Thu Feb 13 11:26:30 2025 +0200

    scsi: scsi_debug: First fixes for tapes
    
    [ Upstream commit f69da85d5d5cc5b7dfb963a6c6c1ac0dd9002341 ]
    
    Patch includes the following:
    
     - Enable MODE SENSE/SELECT without actual page (to read/write only the
       Block Descriptor)
    
     - Store the density code and block size in the Block Descriptor (only
       short version for tapes)
    
     - Fix REWIND not to use the wrong page filling function
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: John Meneghini <[email protected]>
    Tested-by: John Meneghini <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: ERASE does not change tape location [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Tue Mar 11 13:25:15 2025 +0200

    scsi: st: ERASE does not change tape location
    
    [ Upstream commit ad77cebf97bd42c93ab4e3bffd09f2b905c1959a ]
    
    The SCSI ERASE command erases from the current position onwards.  Don't
    clear the position variables.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: Restore some drive settings after reset [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Mon Jan 20 21:49:22 2025 +0200

    scsi: st: Restore some drive settings after reset
    
    [ Upstream commit 7081dc75df79696d8322d01821c28e53416c932c ]
    
    Some of the allowed operations put the tape into a known position to
    continue operation assuming only the tape position has changed.  But reset
    sets partition, density and block size to drive default values. These
    should be restored to the values before reset.
    
    Normally the current block size and density are stored by the drive.  If
    the settings have been changed, the changed values have to be saved by the
    driver across reset.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: John Meneghini <[email protected]>
    Tested-by: John Meneghini <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: st: Tighten the page format heuristics with MODE SELECT [+ + +]
Author: Kai Mäkisara <[email protected]>
Date:   Tue Mar 11 13:25:16 2025 +0200

    scsi: st: Tighten the page format heuristics with MODE SELECT
    
    [ Upstream commit 8db816c6f176321e42254badd5c1a8df8bfcfdb4 ]
    
    In the days when SCSI-2 was emerging, some drives did claim SCSI-2 but did
    not correctly implement it. The st driver first tries MODE SELECT with the
    page format bit set to set the block descriptor.  If not successful, the
    non-page format is tried.
    
    The test only tests the sense code and this triggers also from illegal
    parameter in the parameter list. The test is limited to "old" devices and
    made more strict to remove false alarms.
    
    Signed-off-by: Kai Mäkisara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: target: iscsi: Fix timeout on deleted connection [+ + +]
Author: Dmitry Bogdanov <[email protected]>
Date:   Tue Dec 24 13:17:57 2024 +0300

    scsi: target: iscsi: Fix timeout on deleted connection
    
    [ Upstream commit 7f533cc5ee4c4436cee51dc58e81dfd9c3384418 ]
    
    NOPIN response timer may expire on a deleted connection and crash with
    such logs:
    
    Did not receive response to NOPIN on CID: 0, failing connection for I_T Nexus (null),i,0x00023d000125,iqn.2017-01.com.iscsi.target,t,0x3d
    
    BUG: Kernel NULL pointer dereference on read at 0x00000000
    NIP  strlcpy+0x8/0xb0
    LR iscsit_fill_cxn_timeout_err_stats+0x5c/0xc0 [iscsi_target_mod]
    Call Trace:
     iscsit_handle_nopin_response_timeout+0xfc/0x120 [iscsi_target_mod]
     call_timer_fn+0x58/0x1f0
     run_timer_softirq+0x740/0x860
     __do_softirq+0x16c/0x420
     irq_exit+0x188/0x1c0
     timer_interrupt+0x184/0x410
    
    That is because nopin response timer may be re-started on nopin timer
    expiration.
    
    Stop nopin timer before stopping the nopin response timer to be sure
    that no one of them will be re-started.
    
    Signed-off-by: Dmitry Bogdanov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Maurizio Lombardi <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: target: spc: Fix loop traversal in spc_rsoc_get_descr() [+ + +]
Author: Chaohai Chen <[email protected]>
Date:   Fri Jan 24 16:55:42 2025 +0800

    scsi: target: spc: Fix loop traversal in spc_rsoc_get_descr()
    
    [ Upstream commit 04ad06e41d1c74cc323b20a7bd023c47bd0e0c38 ]
    
    Stop traversing after finding the appropriate descriptor.
    
    Signed-off-by: Chaohai Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices [+ + +]
Author: Manish Pandey <[email protected]>
Date:   Fri Apr 11 17:46:30 2025 +0530

    scsi: ufs: Introduce quirk to extend PA_HIBERN8TIME for UFS devices
    
    [ Upstream commit 569330a34a31a52c904239439984a59972c11d28 ]
    
    Samsung UFS devices require additional time in hibern8 mode before
    exiting, beyond the negotiated handshaking phase between the host and
    device.  Introduce a quirk to increase the PA_HIBERN8TIME parameter by
    100 µs, a value derived from experiments, to ensure a proper hibernation
    process.
    
    Signed-off-by: Manish Pandey <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Bean Huo <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: usb: Rename the RESERVE and RELEASE constants [+ + +]
Author: Bart Van Assche <[email protected]>
Date:   Mon Feb 10 12:50:09 2025 -0800

    scsi: usb: Rename the RESERVE and RELEASE constants
    
    [ Upstream commit 0ea163a18b17f9e0f8350bb348ae69c4a376be66 ]
    
    The names RESERVE and RELEASE are not only used in <scsi/scsi_proto.h> but
    also elsewhere in the kernel:
    
    $ git grep -nHE 'define[[:blank:]]*(RESERVE|RELEASE)[[:blank:]]'
    drivers/input/joystick/walkera0701.c:13:#define RESERVE 20000
    drivers/s390/char/tape_std.h:56:#define RELEASE                 0xD4    /* 3420 NOP, 3480 REJECT */
    drivers/s390/char/tape_std.h:58:#define RESERVE                 0xF4    /* 3420 NOP, 3480 REJECT */
    
    Additionally, while the names of the symbolic constants RESERVE_10 and
    RELEASE_10 include the command length, the command length is not included
    in the RESERVE and RELEASE names. Address both issues by renaming the
    RESERVE and RELEASE constants into RESERVE_6 and RELEASE_6 respectively.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Bart Van Assche <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Mitigate sockmap_ktls disconnect_after_delete failure [+ + +]
Author: Ihor Solodrai <[email protected]>
Date:   Wed Apr 16 10:02:46 2025 -0700

    selftests/bpf: Mitigate sockmap_ktls disconnect_after_delete failure
    
    [ Upstream commit f2858f308131a09e33afb766cd70119b5b900569 ]
    
    "sockmap_ktls disconnect_after_delete" test has been failing on BPF CI
    after recent merges from netdev:
    * https://github.com/kernel-patches/bpf/actions/runs/14458537639
    * https://github.com/kernel-patches/bpf/actions/runs/14457178732
    
    It happens because disconnect has been disabled for TLS [1], and it
    renders the test case invalid.
    
    Removing all the test code creates a conflict between bpf and
    bpf-next, so for now only remove the offending assert [2].
    
    The test will be removed later on bpf-next.
    
    [1] https://lore.kernel.org/netdev/[email protected]/
    [2] https://lore.kernel.org/bpf/[email protected]/
    
    Signed-off-by: Ihor Solodrai <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Reviewed-by: Jiayuan Chen <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/net: have `gro.sh -t` return a correct exit code [+ + +]
Author: Kevin Krakauer <[email protected]>
Date:   Wed Feb 26 11:27:23 2025 -0800

    selftests/net: have `gro.sh -t` return a correct exit code
    
    [ Upstream commit 784e6abd99f24024a8998b5916795f0bec9d2fd9 ]
    
    Modify gro.sh to return a useful exit code when the -t flag is used. It
    formerly returned 0 no matter what.
    
    Tested: Ran `gro.sh -t large` and verified that test failures return 1.
    Signed-off-by: Kevin Krakauer <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: pci_endpoint: Skip disabled BARs [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Thu Jan 23 13:01:49 2025 +0100

    selftests: pci_endpoint: Skip disabled BARs
    
    [ Upstream commit af1451b6738ec7cf91f2914f53845424959ec4ee ]
    
    Currently BARs that have been disabled by the endpoint controller driver
    will result in a test FAIL.
    
    Returning FAIL for a BAR that is disabled seems overly pessimistic.
    
    There are EPC that disables one or more BARs intentionally.
    
    One reason for this is that there are certain EPCs that are hardwired to
    expose internal PCIe controller registers over a certain BAR, so the EPC
    driver disables such a BAR, such that the host will not overwrite random
    registers during testing.
    
    Such a BAR will be disabled by the EPC driver's init function, and the
    BAR will be marked as BAR_RESERVED, such that it will be unavailable to
    endpoint function drivers.
    
    Let's return FAIL only for BARs that are actually enabled and failed the
    test, and let's return skip for BARs that are not even enabled.
    
    Signed-off-by: Niklas Cassel <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: mctrl_gpio: split disable_ms into sync and no_sync APIs [+ + +]
Author: Alexis Lothoré <[email protected]>
Date:   Mon Feb 17 07:21:53 2025 +0100

    serial: mctrl_gpio: split disable_ms into sync and no_sync APIs
    
    [ Upstream commit 1bd2aad57da95f7f2d2bb52f7ad15c0f4993a685 ]
    
    The following splat has been observed on a SAMA5D27 platform using
    atmel_serial:
    
    BUG: sleeping function called from invalid context at kernel/irq/manage.c:738
    in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 27, name: kworker/u5:0
    preempt_count: 1, expected: 0
    INFO: lockdep is turned off.
    irq event stamp: 0
    hardirqs last  enabled at (0): [<00000000>] 0x0
    hardirqs last disabled at (0): [<c01588f0>] copy_process+0x1c4c/0x7bec
    softirqs last  enabled at (0): [<c0158944>] copy_process+0x1ca0/0x7bec
    softirqs last disabled at (0): [<00000000>] 0x0
    CPU: 0 UID: 0 PID: 27 Comm: kworker/u5:0 Not tainted 6.13.0-rc7+ #74
    Hardware name: Atmel SAMA5
    Workqueue: hci0 hci_power_on [bluetooth]
    Call trace:
      unwind_backtrace from show_stack+0x18/0x1c
      show_stack from dump_stack_lvl+0x44/0x70
      dump_stack_lvl from __might_resched+0x38c/0x598
      __might_resched from disable_irq+0x1c/0x48
      disable_irq from mctrl_gpio_disable_ms+0x74/0xc0
      mctrl_gpio_disable_ms from atmel_disable_ms.part.0+0x80/0x1f4
      atmel_disable_ms.part.0 from atmel_set_termios+0x764/0x11e8
      atmel_set_termios from uart_change_line_settings+0x15c/0x994
      uart_change_line_settings from uart_set_termios+0x2b0/0x668
      uart_set_termios from tty_set_termios+0x600/0x8ec
      tty_set_termios from ttyport_set_flow_control+0x188/0x1e0
      ttyport_set_flow_control from wilc_setup+0xd0/0x524 [hci_wilc]
      wilc_setup [hci_wilc] from hci_dev_open_sync+0x330/0x203c [bluetooth]
      hci_dev_open_sync [bluetooth] from hci_dev_do_open+0x40/0xb0 [bluetooth]
      hci_dev_do_open [bluetooth] from hci_power_on+0x12c/0x664 [bluetooth]
      hci_power_on [bluetooth] from process_one_work+0x998/0x1a38
      process_one_work from worker_thread+0x6e0/0xfb4
      worker_thread from kthread+0x3d4/0x484
      kthread from ret_from_fork+0x14/0x28
    
    This warning is emitted when trying to toggle, at the highest level,
    some flow control (with serdev_device_set_flow_control) in a device
    driver. At the lowest level, the atmel_serial driver is using
    serial_mctrl_gpio lib to enable/disable the corresponding IRQs
    accordingly.  The warning emitted by CONFIG_DEBUG_ATOMIC_SLEEP is due to
    disable_irq (called in mctrl_gpio_disable_ms) being possibly called in
    some atomic context (some tty drivers perform modem lines configuration
    in regions protected by port lock).
    
    Split mctrl_gpio_disable_ms into two differents APIs, a non-blocking one
    and a blocking one. Replace mctrl_gpio_disable_ms calls with the
    relevant version depending on whether the call is protected by some port
    lock.
    
    Suggested-by: Jiri Slaby <[email protected]>
    Signed-off-by: Alexis Lothoré <[email protected]>
    Acked-by: Richard Genoud <[email protected]>
    Link: https://lore.kernel.org/r/20250217-atomic_sleep_mctrl_serial_gpio-v3-1-59324b313eef@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: sh-sci: Save and restore more registers [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Tue Mar 4 20:06:11 2025 +0100

    serial: sh-sci: Save and restore more registers
    
    [ Upstream commit 81100b9a7b0515132996d62a7a676a77676cb6e3 ]
    
    On (H)SCIF with a Baud Rate Generator for External Clock (BRG), there
    are multiple ways to configure the requested serial speed.  If firmware
    uses a different method than Linux, and if any debug info is printed
    after the Bit Rate Register (SCBRR) is restored, but before termios is
    reconfigured (which configures the alternative method), the system may
    lock-up during resume.
    
    Fix this by saving and restoring the contents of the BRG Frequency
    Division (SCDL) and Clock Select (SCCKS) registers as well.
    
    Also save and restore the HSCIF's Sampling Rate Register (HSSRR), which
    configures the sampling point, and the SCIFA/SCIFB's Serial Port Control
    and Data Registers (SCPCR/SCPDR), which configure the optional control
    flow signals.
    
    After this, all registers that are not saved/restored are either:
      - read-only,
      - write-only,
      - status registers containing flags with clear-after-set semantics,
      - FIFO Data Count Trigger registers, which do not matter much for
        the serial console.
    
    Fixes: 22a6984c5b5df8ea ("serial: sh-sci: Update the suspend/resume support")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Tested-by: Claudiu Beznea <[email protected]>
    Reviewed-by: Claudiu Beznea <[email protected]>
    Link: https://lore.kernel.org/r/11c2eab45d48211e75d8b8202cce60400880fe55.1741114989.git.geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: sh-sci: Update the suspend/resume support [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Fri Feb 7 13:33:13 2025 +0200

    serial: sh-sci: Update the suspend/resume support
    
    [ Upstream commit 22a6984c5b5df8eab864d7f3e8b94d5a554d31ab ]
    
    The Renesas RZ/G3S supports a power saving mode where power to most of the
    SoC components is turned off. When returning from this power saving mode,
    SoC components need to be re-configured.
    
    The SCIFs on the Renesas RZ/G3S need to be re-configured as well when
    returning from this power saving mode. The sh-sci code already configures
    the SCIF clocks, power domain and registers by calling uart_resume_port()
    in sci_resume(). On suspend path the SCIF UART ports are suspended
    accordingly (by calling uart_suspend_port() in sci_suspend()). The only
    missing setting is the reset signal. For this assert/de-assert the reset
    signal on driver suspend/resume.
    
    In case the no_console_suspend is specified by the user, the registers need
    to be saved on suspend path and restore on resume path. To do this the
    sci_console_save()/sci_console_restore() functions were added. There is no
    need to cache/restore the status or FIFO registers. Only the control
    registers. The registers that will be saved/restored on suspend/resume are
    specified by the struct sci_suspend_regs data structure.
    
    Signed-off-by: Claudiu Beznea <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smack: recognize ipv4 CIPSO w/o categories [+ + +]
Author: Konstantin Andreev <[email protected]>
Date:   Fri Jan 17 02:40:34 2025 +0300

    smack: recognize ipv4 CIPSO w/o categories
    
    [ Upstream commit a158a937d864d0034fea14913c1f09c6d5f574b8 ]
    
    If SMACK label has CIPSO representation w/o categories, e.g.:
    
    | # cat /smack/cipso2
    | foo  10
    | @ 250/2
    | ...
    
    then SMACK does not recognize such CIPSO in input ipv4 packets
    and substitues '*' label instead. Audit records may look like
    
    | lsm=SMACK fn=smack_socket_sock_rcv_skb action=denied
    |   subject="*" object="_" requested=w pid=0 comm="swapper/1" ...
    
    This happens in two steps:
    
    1) security/smack/smackfs.c`smk_set_cipso
       does not clear NETLBL_SECATTR_MLS_CAT
       from (struct smack_known *)skp->smk_netlabel.flags
       on assigning CIPSO w/o categories:
    
    | rcu_assign_pointer(skp->smk_netlabel.attr.mls.cat, ncats.attr.mls.cat);
    | skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
    
    2) security/smack/smack_lsm.c`smack_from_secattr
       can not match skp->smk_netlabel with input packet's
       struct netlbl_lsm_secattr *sap
       because sap->flags have not NETLBL_SECATTR_MLS_CAT (what is correct)
       but skp->smk_netlabel.flags have (what is incorrect):
    
    | if ((sap->flags & NETLBL_SECATTR_MLS_CAT) == 0) {
    |       if ((skp->smk_netlabel.flags &
    |                NETLBL_SECATTR_MLS_CAT) == 0)
    |               found = 1;
    |       break;
    | }
    
    This commit sets/clears NETLBL_SECATTR_MLS_CAT in
    skp->smk_netlabel.flags according to the presense of CIPSO categories.
    The update of smk_netlabel is not atomic, so input packets processing
    still may be incorrect during short time while update proceeds.
    
    Signed-off-by: Konstantin Andreev <[email protected]>
    Signed-off-by: Casey Schaufler <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smack: Revert "smackfs: Added check catlen" [+ + +]
Author: Konstantin Andreev <[email protected]>
Date:   Fri Jan 17 02:40:33 2025 +0300

    smack: Revert "smackfs: Added check catlen"
    
    [ Upstream commit c7fb50cecff9cad19fdac5b37337eae4e42b94c7 ]
    
    This reverts commit ccfd889acb06eab10b98deb4b5eef0ec74157ea0
    
    The indicated commit
    * does not describe the problem that change tries to solve
    * has programming issues
    * introduces a bug: forever clears NETLBL_SECATTR_MLS_CAT
             in (struct smack_known *)skp->smk_netlabel.flags
    
    Reverting the commit to reapproach original problem
    
    Signed-off-by: Konstantin Andreev <[email protected]>
    Signed-off-by: Casey Schaufler <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smb: client: Fix use-after-free in cifs_fill_dirent [+ + +]
Author: Wang Zhaolong <[email protected]>
Date:   Fri May 16 17:12:55 2025 +0800

    smb: client: Fix use-after-free in cifs_fill_dirent
    
    commit a7a8fe56e932a36f43e031b398aef92341bf5ea0 upstream.
    
    There is a race condition in the readdir concurrency process, which may
    access the rsp buffer after it has been released, triggering the
    following KASAN warning.
    
     ==================================================================
     BUG: KASAN: slab-use-after-free in cifs_fill_dirent+0xb03/0xb60 [cifs]
     Read of size 4 at addr ffff8880099b819c by task a.out/342975
    
     CPU: 2 UID: 0 PID: 342975 Comm: a.out Not tainted 6.15.0-rc6+ #240 PREEMPT(full)
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
     Call Trace:
      <TASK>
      dump_stack_lvl+0x53/0x70
      print_report+0xce/0x640
      kasan_report+0xb8/0xf0
      cifs_fill_dirent+0xb03/0xb60 [cifs]
      cifs_readdir+0x12cb/0x3190 [cifs]
      iterate_dir+0x1a1/0x520
      __x64_sys_getdents+0x134/0x220
      do_syscall_64+0x4b/0x110
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     RIP: 0033:0x7f996f64b9f9
     Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89
     f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
     f0 ff ff  0d f7 c3 0c 00 f7 d8 64 89 8
     RSP: 002b:00007f996f53de78 EFLAGS: 00000207 ORIG_RAX: 000000000000004e
     RAX: ffffffffffffffda RBX: 00007f996f53ecdc RCX: 00007f996f64b9f9
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
     RBP: 00007f996f53dea0 R08: 0000000000000000 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000207 R12: ffffffffffffff88
     R13: 0000000000000000 R14: 00007ffc8cd9a500 R15: 00007f996f51e000
      </TASK>
    
     Allocated by task 408:
      kasan_save_stack+0x20/0x40
      kasan_save_track+0x14/0x30
      __kasan_slab_alloc+0x6e/0x70
      kmem_cache_alloc_noprof+0x117/0x3d0
      mempool_alloc_noprof+0xf2/0x2c0
      cifs_buf_get+0x36/0x80 [cifs]
      allocate_buffers+0x1d2/0x330 [cifs]
      cifs_demultiplex_thread+0x22b/0x2690 [cifs]
      kthread+0x394/0x720
      ret_from_fork+0x34/0x70
      ret_from_fork_asm+0x1a/0x30
    
     Freed by task 342979:
      kasan_save_stack+0x20/0x40
      kasan_save_track+0x14/0x30
      kasan_save_free_info+0x3b/0x60
      __kasan_slab_free+0x37/0x50
      kmem_cache_free+0x2b8/0x500
      cifs_buf_release+0x3c/0x70 [cifs]
      cifs_readdir+0x1c97/0x3190 [cifs]
      iterate_dir+0x1a1/0x520
      __x64_sys_getdents64+0x134/0x220
      do_syscall_64+0x4b/0x110
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     The buggy address belongs to the object at ffff8880099b8000
      which belongs to the cache cifs_request of size 16588
     The buggy address is located 412 bytes inside of
      freed 16588-byte region [ffff8880099b8000, ffff8880099bc0cc)
    
     The buggy address belongs to the physical page:
     page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x99b8
     head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
     anon flags: 0x80000000000040(head|node=0|zone=1)
     page_type: f5(slab)
     raw: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
     raw: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
     head: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
     head: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
     head: 0080000000000003 ffffea0000266e01 00000000ffffffff 00000000ffffffff
     head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
      ffff8880099b8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8880099b8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     >ffff8880099b8180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                 ^
      ffff8880099b8200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff8880099b8280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ==================================================================
    
    POC is available in the link [1].
    
    The problem triggering process is as follows:
    
    Process 1                       Process 2
    -----------------------------------------------------------------
    cifs_readdir
      /* file->private_data == NULL */
      initiate_cifs_search
        cifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
        smb2_query_dir_first ->query_dir_first()
          SMB2_query_directory
            SMB2_query_directory_init
            cifs_send_recv
            smb2_parse_query_directory
              srch_inf->ntwrk_buf_start = (char *)rsp;
              srch_inf->srch_entries_start = (char *)rsp + ...
              srch_inf->last_entry = (char *)rsp + ...
              srch_inf->smallBuf = true;
      find_cifs_entry
        /* if (cfile->srch_inf.ntwrk_buf_start) */
        cifs_small_buf_release(cfile->srch_inf // free
    
                            cifs_readdir  ->iterate_shared()
                              /* file->private_data != NULL */
                              find_cifs_entry
                                /* in while (...) loop */
                                smb2_query_dir_next  ->query_dir_next()
                                  SMB2_query_directory
                                    SMB2_query_directory_init
                                    cifs_send_recv
                                      compound_send_recv
                                        smb_send_rqst
                                        __smb_send_rqst
                                          rc = -ERESTARTSYS;
                                          /* if (fatal_signal_pending()) */
                                          goto out;
                                          return rc
                                /* if (cfile->srch_inf.last_entry) */
                                cifs_save_resume_key()
                                  cifs_fill_dirent // UAF
                                /* if (rc) */
                                return -ENOENT;
    
    Fix this by ensuring the return code is checked before using pointers
    from the srch_inf.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220131 [1]
    Fixes: a364bc0b37f1 ("[CIFS] fix saving of resume key before CIFSFindNext")
    Cc: [email protected]
    Reviewed-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Wang Zhaolong <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

smb: client: Reset all search buffer pointers when releasing buffer [+ + +]
Author: Wang Zhaolong <[email protected]>
Date:   Fri May 16 17:12:56 2025 +0800

    smb: client: Reset all search buffer pointers when releasing buffer
    
    commit e48f9d849bfdec276eebf782a84fd4dfbe1c14c0 upstream.
    
    Multiple pointers in struct cifs_search_info (ntwrk_buf_start,
    srch_entries_start, and last_entry) point to the same allocated buffer.
    However, when freeing this buffer, only ntwrk_buf_start was set to NULL,
    while the other pointers remained pointing to freed memory.
    
    This is defensive programming to prevent potential issues with stale
    pointers. While the active UAF vulnerability is fixed by the previous
    patch, this change ensures consistent pointer state and more robust error
    handling.
    
    Signed-off-by: Wang Zhaolong <[email protected]>
    Cc: [email protected]
    Reviewed-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

smb: client: Store original IO parameters and prevent zero IO sizes [+ + +]
Author: Wang Zhaolong <[email protected]>
Date:   Mon Mar 31 21:33:14 2025 +0800

    smb: client: Store original IO parameters and prevent zero IO sizes
    
    [ Upstream commit 287906b20035a04a234d1a3c64f760a5678387be ]
    
    During mount option processing and negotiation with the server, the
    original user-specified rsize/wsize values were being modified directly.
    This makes it impossible to recover these values after a connection
    reset, leading to potential degraded performance after reconnection.
    
    The other problem is that When negotiating read and write sizes, there are
    cases where the negotiated values might calculate to zero, especially
    during reconnection when server->max_read or server->max_write might be
    reset. In general, these values come from the negotiation response.
    According to MS-SMB2 specification, these values should be at least 65536
    bytes.
    
    This patch improves IO parameter handling:
    
    1. Adds vol_rsize and vol_wsize fields to store the original user-specified
       values separately from the negotiated values
    2. Uses got_rsize/got_wsize flags to determine if values were
       user-specified rather than checking for non-zero values, which is more
       reliable
    3. Adds a prevent_zero_iosize() helper function to ensure IO sizes are
       never negotiated down to zero, which could happen in edge cases like
       when server->max_read/write is zero
    
    The changes make the CIFS client more resilient to unusual server
    responses and reconnection scenarios, preventing potential failures
    when IO sizes are calculated to be zero.
    
    Signed-off-by: Wang Zhaolong <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smb: server: smb2pdu: check return value of xa_store() [+ + +]
Author: Salah Triki <[email protected]>
Date:   Wed Apr 16 20:26:25 2025 +0100

    smb: server: smb2pdu: check return value of xa_store()
    
    [ Upstream commit af5226abb40cae959f424f7ca614787a1c87ce48 ]
    
    xa_store() may fail so check its return value and return error code if
    error occurred.
    
    Signed-off-by: Salah Triki <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
soc: apple: rtkit: Implement OSLog buffers properly [+ + +]
Author: Hector Martin <[email protected]>
Date:   Wed Feb 26 19:00:04 2025 +0000

    soc: apple: rtkit: Implement OSLog buffers properly
    
    [ Upstream commit a06398687065e0c334dc5fc4d2778b5b87292e43 ]
    
    Apparently nobody can figure out where the old logic came from, but it
    seems like it has never been actually used on any supported firmware to
    this day. OSLog buffers were apparently never requested.
    
    But starting with 13.3, we actually need this implemented properly for
    MTP (and later AOP) to work, so let's actually do that.
    
    Signed-off-by: Hector Martin <[email protected]>
    Reviewed-by: Alyssa Rosenzweig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sven Peter <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: apple: rtkit: Use high prio work queue [+ + +]
Author: Janne Grunau <[email protected]>
Date:   Wed Feb 26 19:00:05 2025 +0000

    soc: apple: rtkit: Use high prio work queue
    
    [ Upstream commit 22af2fac88fa5dbc310bfe7d0b66d4de3ac47305 ]
    
    rtkit messages as communication with the DCP firmware for framebuffer
    swaps or input events are time critical so use WQ_HIGHPRI to prevent
    user space CPU load to increase latency.
    With kwin_wayland 6's explicit sync mode user space load was able to
    delay the IOMFB rtkit communication enough to miss vsync for surface
    swaps. Minimal test scenario is constantly resizing a glxgears
    Xwayland window.
    
    Signed-off-by: Janne Grunau <[email protected]>
    Reviewed-by: Alyssa Rosenzweig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sven Peter <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: mediatek: mtk-mutex: Add DPI1 SOF/EOF to MT8188 mutex tables [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Wed Feb 12 11:00:05 2025 +0100

    soc: mediatek: mtk-mutex: Add DPI1 SOF/EOF to MT8188 mutex tables
    
    [ Upstream commit 694e0b7c1747603243da874de9cbbf8cb806ca44 ]
    
    MT8188 uses DPI1 to output to the HDMI controller: add the
    Start of Frame and End of Frame configuration for the DPI1
    IP to the tables to unblock generation and sending of these
    signals to the GCE.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: samsung: include linux/array_size.h where needed [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Wed Mar 5 22:14:02 2025 +0100

    soc: samsung: include linux/array_size.h where needed
    
    [ Upstream commit 4c57930f68d90e0d52c396d058cfa9ed8447a6c4 ]
    
    This does not necessarily get included through asm/io.h:
    
    drivers/soc/samsung/exynos3250-pmu.c:120:18: error: use of undeclared identifier 'ARRAY_SIZE'
      120 |         for (i = 0; i < ARRAY_SIZE(exynos3250_list_feed); i++) {
          |                         ^
    drivers/soc/samsung/exynos5250-pmu.c:162:18: error: use of undeclared identifier 'ARRAY_SIZE'
      162 |         for (i = 0; i < ARRAY_SIZE(exynos5_list_both_cnt_feed); i++) {
          |                         ^
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: ti: k3-socinfo: Do not use syscon helper to build regmap [+ + +]
Author: Andrew Davis <[email protected]>
Date:   Thu Jan 23 12:17:26 2025 -0600

    soc: ti: k3-socinfo: Do not use syscon helper to build regmap
    
    [ Upstream commit a5caf03188e44388e8c618dcbe5fffad1a249385 ]
    
    The syscon helper device_node_to_regmap() is used to fetch a regmap
    registered to a device node. It also currently creates this regmap
    if the node did not already have a regmap associated with it. This
    should only be used on "syscon" nodes. This driver is not such a
    device and instead uses device_node_to_regmap() on its own node as
    a hacky way to create a regmap for itself.
    
    This will not work going forward and so we should create our regmap
    the normal way by defining our regmap_config, fetching our memory
    resource, then using the normal regmap_init_mmio() function.
    
    Signed-off-by: Andrew Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
soundwire: amd: change the soundwire wake enable/disable sequence [+ + +]
Author: Vijendar Mukunda <[email protected]>
Date:   Fri Feb 7 12:28:36 2025 +0530

    soundwire: amd: change the soundwire wake enable/disable sequence
    
    [ Upstream commit dcc48a73eae7f791b1a6856ea1bcc4079282c88d ]
    
    During runtime suspend scenario, SoundWire wake should be enabled and
    during system level suspend scenario SoundWire wake should be disabled.
    
    Implement the SoundWire wake enable/disable sequence as per design flow
    for SoundWire poweroff mode.
    
    Signed-off-by: Vijendar Mukunda <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soundwire: bus: Fix race on the creation of the IRQ domain [+ + +]
Author: Charles Keepax <[email protected]>
Date:   Wed Apr 9 13:22:39 2025 +0100

    soundwire: bus: Fix race on the creation of the IRQ domain
    
    [ Upstream commit fd15594ba7d559d9da741504c322b9f57c4981e5 ]
    
    The SoundWire IRQ domain needs to be created before any slaves are added
    to the bus, such that the domain is always available when needed. Move
    the call to sdw_irq_create() before the calls to sdw_acpi_find_slaves()
    and sdw_of_find_slaves().
    
    Fixes: 12a95123bfe1 ("soundwire: bus: Allow SoundWire peripherals to register IRQ handlers")
    Signed-off-by: Charles Keepax <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soundwire: cadence_master: set frame shape and divider based on actual clk freq [+ + +]
Author: Bard Liao <[email protected]>
Date:   Wed Feb 5 15:42:31 2025 +0800

    soundwire: cadence_master: set frame shape and divider based on actual clk freq
    
    [ Upstream commit e738d77f78b3ac085dfb51be414e93464abba7ec ]
    
    Frame shape and curr_dr_freq could be updated by sdw_compute_bus_params().
    Peripherals will set curr_dr_freq as their frequency. Managers
    should do the same. Then update frame shape according to the actual
    bus frequency.
    
    Signed-off-by: Bard Liao <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Reviewed-by: Pierre-Louis Bossart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi-rockchip: Fix register out of bounds access [+ + +]
Author: Luis de Arquer <[email protected]>
Date:   Fri Mar 21 13:57:53 2025 +0100

    spi-rockchip: Fix register out of bounds access
    
    [ Upstream commit 7a874e8b54ea21094f7fd2d428b164394c6cb316 ]
    
    Do not write native chip select stuff for GPIO chip selects.
    GPIOs can be numbered much higher than native CS.
    Also, it makes no sense.
    
    Signed-off-by: Luis de Arquer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-fsl-dspi: Halt the module after a new message transfer [+ + +]
Author: Bogdan-Gabriel Roman <[email protected]>
Date:   Thu May 22 15:51:31 2025 +0100

    spi: spi-fsl-dspi: Halt the module after a new message transfer
    
    [ Upstream commit 8a30a6d35a11ff5ccdede7d6740765685385a917 ]
    
    The XSPI mode implementation in this driver still uses the EOQ flag to
    signal the last word in a transmission and deassert the PCS signal.
    However, at speeds lower than ~200kHZ, the PCS signal seems to remain
    asserted even when SR[EOQF] = 1 indicates the end of a transmission.
    This is a problem for target devices which require the deassertation of
    the PCS signal between transfers.
    
    Hence, this commit 'forces' the deassertation of the PCS by stopping the
    module through MCR[HALT] after completing a new transfer. According to
    the reference manual, the module stops or transitions from the Running
    state to the Stopped state after the current frame, when any one of the
    following conditions exist:
    - The value of SR[EOQF] = 1.
    - The chip is in Debug mode and the value of MCR[FRZ] = 1.
    - The value of MCR[HALT] = 1.
    
    This shouldn't be done if the last transfer in the message has cs_change
    set.
    
    Fixes: ea93ed4c181b ("spi: spi-fsl-dspi: Use EOQ for last word in buffer even for XSPI mode")
    Signed-off-by: Bogdan-Gabriel Roman <[email protected]>
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: Reset SR flags before sending a new message [+ + +]
Author: Larisa Grigore <[email protected]>
Date:   Thu May 22 15:51:32 2025 +0100

    spi: spi-fsl-dspi: Reset SR flags before sending a new message
    
    [ Upstream commit 7aba292eb15389073c7f3bd7847e3862dfdf604d ]
    
    If, in a previous transfer, the controller sends more data than expected
    by the DSPI target, SR.RFDF (RX FIFO is not empty) will remain asserted.
    When flushing the FIFOs at the beginning of a new transfer (writing 1
    into MCR.CLR_TXF and MCR.CLR_RXF), SR.RFDF should also be cleared.
    Otherwise, when running in target mode with DMA, if SR.RFDF remains
    asserted, the DMA callback will be fired before the controller sends any
    data.
    
    Take this opportunity to reset all Status Register fields.
    
    Fixes: 5ce3cc567471 ("spi: spi-fsl-dspi: Provide support for DSPI slave mode operation (Vybryd vf610)")
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-fsl-dspi: restrict register range for regmap access [+ + +]
Author: Larisa Grigore <[email protected]>
Date:   Thu May 22 15:51:30 2025 +0100

    spi: spi-fsl-dspi: restrict register range for regmap access
    
    [ Upstream commit 283ae0c65e9c592f4a1ba4f31917f5e766da7f31 ]
    
    DSPI registers are NOT continuous, some registers are reserved and
    accessing them from userspace will trigger external abort, add regmap
    register access table to avoid below abort.
    
      For example on S32G:
    
      # cat /sys/kernel/debug/regmap/401d8000.spi/registers
    
      Internal error: synchronous external abort: 96000210 1 PREEMPT SMP
      ...
      Call trace:
      regmap_mmio_read32le+0x24/0x48
      regmap_mmio_read+0x48/0x70
      _regmap_bus_reg_read+0x38/0x48
      _regmap_read+0x68/0x1b0
      regmap_read+0x50/0x78
      regmap_read_debugfs+0x120/0x338
    
    Fixes: 1acbdeb92c87 ("spi/fsl-dspi: Convert to use regmap and add big-endian support")
    Co-developed-by: Xulin Sun <[email protected]>
    Signed-off-by: Xulin Sun <[email protected]>
    Signed-off-by: Larisa Grigore <[email protected]>
    Signed-off-by: James Clark <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-mux: Fix coverity issue, unchecked return value [+ + +]
Author: Sergio Perez Gonzalez <[email protected]>
Date:   Sat Mar 15 23:46:06 2025 -0600

    spi: spi-mux: Fix coverity issue, unchecked return value
    
    [ Upstream commit 5a5fc308418aca275a898d638bc38c093d101855 ]
    
    The return value of spi_setup() is not captured within
    spi_mux_select() and it is assumed to be always success.
    
    CID: 1638374
    
    Signed-off-by: Sergio Perez Gonzalez <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: use container_of_cont() for to_spi_device() [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu May 22 12:47:31 2025 +0200

    spi: use container_of_cont() for to_spi_device()
    
    [ Upstream commit 1007ae0d464ceb55a3740634790521d3543aaab9 ]
    
    Some places in the spi core pass in a const pointer to a device and the
    default container_of() casts that away, which is not a good idea.
    Preserve the proper const attribute by using container_of_const() for
    to_spi_device() instead, which is what it was designed for.
    
    Note, this removes the NULL check for a device pointer in the call, but
    no one was ever checking for that return value, and a device pointer
    should never be NULL overall anyway, so this should be a safe change.
    
    Cc: Mark Brown <[email protected]>
    Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://patch.msgid.link/2025052230-fidgeting-stooge-66f5@gregkh
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: zynqmp-gqspi: Always acknowledge interrupts [+ + +]
Author: Sean Anderson <[email protected]>
Date:   Thu Jan 16 17:41:30 2025 -0500

    spi: zynqmp-gqspi: Always acknowledge interrupts
    
    [ Upstream commit 89785306453ce6d949e783f6936821a0b7649ee2 ]
    
    RXEMPTY can cause an IRQ, even though we may not do anything about it
    (such as if we are waiting for more received data). We must still handle
    these IRQs because we can tell they were caused by the device.
    
    Signed-off-by: Sean Anderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
staging: vchiq_arm: Create keep-alive thread during probe [+ + +]
Author: Stefan Wahren <[email protected]>
Date:   Sun Mar 9 13:50:13 2025 +0100

    staging: vchiq_arm: Create keep-alive thread during probe
    
    [ Upstream commit 86bc8821700665ad3962f3ef0d93667f59cf7031 ]
    
    Creating the keep-alive thread in vchiq_platform_init_state have
    the following advantages:
    - abort driver probe if kthread_create fails (more consistent behavior)
    - make resource release process easier
    
    Since vchiq_keepalive_thread_func is defined below
    vchiq_platform_init_state, the latter must be moved.
    
    Signed-off-by: Stefan Wahren <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
SUNRPC: Don't allow waiting for exiting tasks [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Fri Mar 28 12:52:52 2025 -0400

    SUNRPC: Don't allow waiting for exiting tasks
    
    [ Upstream commit 14e41b16e8cb677bb440dca2edba8b041646c742 ]
    
    Once a task calls exit_signals() it can no longer be signalled. So do
    not allow it to do killable waits.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

SUNRPC: rpc_clnt_set_transport() must not change the autobind setting [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 19:35:01 2025 -0400

    SUNRPC: rpc_clnt_set_transport() must not change the autobind setting
    
    [ Upstream commit bf9be373b830a3e48117da5d89bb6145a575f880 ]
    
    The autobind setting was supposed to be determined in rpc_create(),
    since commit c2866763b402 ("SUNRPC: use sockaddr + size when creating
    remote transport endpoints").
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

SUNRPC: rpcbind should never reset the port to the value '0' [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Mon Mar 24 19:05:48 2025 -0400

    SUNRPC: rpcbind should never reset the port to the value '0'
    
    [ Upstream commit 214c13e380ad7636631279f426387f9c4e3c14d9 ]
    
    If we already had a valid port number for the RPC service, then we
    should not allow the rpcbind client to set it to the invalid value '0'.
    
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
taskstats: fix struct taskstats breaks backward compatibility since version 15 [+ + +]
Author: Wang Yaxin <[email protected]>
Date:   Sat May 10 15:54:13 2025 +0800

    taskstats: fix struct taskstats breaks backward compatibility since version 15
    
    commit 0bf2d838de1ffb6d0bb6f8d18a6ccc59b7d9a705 upstream.
    
    Problem
    ========
    commit 658eb5ab916d ("delayacct: add delay max to record delay peak")
      - adding more fields
    commit f65c64f311ee ("delayacct: add delay min to record delay peak")
      - adding more fields
    commit b016d0873777 ("taskstats: modify taskstats version")
     - version bump to 15
    
    Since version 15 (TASKSTATS_VERSION=15) the new layout of the structure
    adds fields in the middle of the structure, rendering all old software
    incompatible with newer kernels and software compiled against the new
    kernel headers incompatible with older kernels.
    
    Solution
    =========
    move delay max and delay min to the end of taskstat, and bump
    the version to 16 after the change
    
    [[email protected]: adjust indentation]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: f65c64f311ee ("delayacct: add delay min to record delay peak")
    Signed-off-by: Wang Yaxin <[email protected]>
    Signed-off-by: xu xin <[email protected]>
    Signed-off-by: Kun Jiang <[email protected]>
    Reviewed-by: Yang Yang <[email protected]>
    Cc: Balbir Singh <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: be less liberal in TSEcr received while in SYN_RECV state [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Feb 25 17:10:48 2025 +0000

    tcp: be less liberal in TSEcr received while in SYN_RECV state
    
    [ Upstream commit 3ba075278c11cdb19e2dbb80362042f1b0c08f74 ]
    
    Yong-Hao Zou mentioned that linux was not strict as other OS in 3WHS,
    for flows using TCP TS option (RFC 7323)
    
    As hinted by an old comment in tcp_check_req(),
    we can check the TSEcr value in the incoming packet corresponds
    to one of the SYNACK TSval values we have sent.
    
    In this patch, I record the oldest and most recent values
    that SYNACK packets have used.
    
    Send a challenge ACK if we receive a TSEcr outside
    of this range, and increase a new SNMP counter.
    
    nstat -az | grep TSEcrRejected
    TcpExtTSEcrRejected            0                  0.0
    
    Due to TCP fastopen implementation, do not apply yet these checks
    for fastopen flows.
    
    v2: No longer use req->num_timeout, but treq->snt_tsval_first
        to detect when first SYNACK is prepared. This means
        we make sure to not send an initial zero TSval.
        Make sure MPTCP and TCP selftests are passing.
        Change MIB name to TcpExtTSEcrRejected
    
    v1: https://lore.kernel.org/netdev/CADVnQykD8i4ArpSZaPKaoNxLJ2if2ts9m4As+=Jvdkrgx1qMHw@mail.gmail.com/T/
    
    Reported-by: Yong-Hao Zou <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
    Reviewed-by: Neal Cardwell <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tcp: bring back NUMA dispersion in inet_ehash_locks_alloc() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Mar 5 13:05:50 2025 +0000

    tcp: bring back NUMA dispersion in inet_ehash_locks_alloc()
    
    [ Upstream commit f8ece40786c9342249aa0a1b55e148ee23b2a746 ]
    
    We have platforms with 6 NUMA nodes and 480 cpus.
    
    inet_ehash_locks_alloc() currently allocates a single 64KB page
    to hold all ehash spinlocks. This adds more pressure on a single node.
    
    Change inet_ehash_locks_alloc() to use vmalloc() to spread
    the spinlocks on all online nodes, driven by NUMA policies.
    
    At boot time, NUMA policy is interleave=all, meaning that
    tcp_hashinfo.ehash_locks gets hash dispersion on all nodes.
    
    Tested:
    
    lack5:~# grep inet_ehash_locks_alloc /proc/vmallocinfo
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# echo 8192 >/proc/sys/net/ipv4/tcp_child_ehash_entries
    lack5:~# numactl --interleave=all unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x000000004e99d30c-0x00000000763f3279   36864 inet_ehash_locks_alloc+0x90/0x100 pages=8 vmalloc N0=1 N1=2 N2=2 N3=1 N4=1 N5=1
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# numactl --interleave=0,5 unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x00000000fd73a33e-0x0000000004b9a177   36864 inet_ehash_locks_alloc+0x90/0x100 pages=8 vmalloc N0=4 N5=4
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    lack5:~# echo 1024 >/proc/sys/net/ipv4/tcp_child_ehash_entries
    lack5:~# numactl --interleave=all unshare -n bash -c "grep inet_ehash_locks_alloc /proc/vmallocinfo"
    0x00000000db07d7a2-0x00000000ad697d29    8192 inet_ehash_locks_alloc+0x90/0x100 pages=1 vmalloc N2=1
    0x00000000d9aec4d1-0x00000000a828b652   69632 inet_ehash_locks_alloc+0x90/0x100 pages=16 vmalloc N0=2 N1=3 N2=3 N3=3 N4=3 N5=2
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Tested-by: Jason Xing <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tcp: reorganize tcp_in_ack_event() and tcp_count_delivered() [+ + +]
Author: Ilpo Järvinen <[email protected]>
Date:   Wed Mar 5 23:38:41 2025 +0100

    tcp: reorganize tcp_in_ack_event() and tcp_count_delivered()
    
    [ Upstream commit 149dfb31615e22271d2525f078c95ea49bc4db24 ]
    
    - Move tcp_count_delivered() earlier and split tcp_count_delivered_ce()
      out of it
    - Move tcp_in_ack_event() later
    - While at it, remove the inline from tcp_in_ack_event() and let
      the compiler to decide
    
    Accurate ECN's heuristics does not know if there is going
    to be ACE field based CE counter increase or not until after
    rtx queue has been processed. Only then the number of ACKed
    bytes/pkts is available. As CE or not affects presence of
    FLAG_ECE, that information for tcp_in_ack_event is not yet
    available in the old location of the call to tcp_in_ack_event().
    
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Chia-Yu Chang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/mediatek/lvts: Start sensor interrupts disabled [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Mon Jan 13 10:27:15 2025 -0300

    thermal/drivers/mediatek/lvts: Start sensor interrupts disabled
    
    [ Upstream commit 2738fb3ec6838a10d2c4ce65cefdb3b90b11bd61 ]
    
    Interrupts are enabled per sensor in lvts_update_irq_mask() as needed,
    there's no point in enabling all of them during initialization. Change
    the MONINT register initial value so all sensor interrupts start
    disabled.
    
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Link: https://lore.kernel.org/r/20250113-mt8192-lvts-filtered-suspend-fix-v2-4-07a25200c7c6@collabora.com
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/qoriq: Power down TMU on system suspend [+ + +]
Author: Alice Guo <[email protected]>
Date:   Mon Dec 9 11:48:59 2024 -0500

    thermal/drivers/qoriq: Power down TMU on system suspend
    
    [ Upstream commit 229f3feb4b0442835b27d519679168bea2de96c2 ]
    
    Enable power-down of TMU (Thermal Management Unit) for TMU version 2 during
    system suspend to save power. Save approximately 4.3mW on VDD_ANA_1P8 on
    i.MX93 platforms.
    
    Signed-off-by: Alice Guo <[email protected]>
    Signed-off-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal: intel: x86_pkg_temp_thermal: Fix bogus trip temperature [+ + +]
Author: Zhang Rui <[email protected]>
Date:   Mon May 19 15:09:01 2025 +0800

    thermal: intel: x86_pkg_temp_thermal: Fix bogus trip temperature
    
    commit cf948c8e274e8b406e846cdf6cc48fe47f98cf57 upstream.
    
    The tj_max value obtained from the Intel TCC library are in Celsius,
    whereas the thermal subsystem operates in milli-Celsius.
    
    This discrepancy leads to incorrect trip temperature calculations.
    
    Fix bogus trip temperature by converting tj_max to milli-Celsius Unit.
    
    Fixes: 8ef0ca4a177d ("Merge back other thermal control material for 6.3.")
    Signed-off-by: Zhang Rui <[email protected]>
    Reported-by: zhang ning <[email protected]>
    Closes: https://lore.kernel.org/all/TY2PR01MB3786EF0FE24353026293F5ACCD97A@TY2PR01MB3786.jpnprd01.prod.outlook.com/
    Tested-by: zhang ning <[email protected]>
    Cc: 6.3+ <[email protected]> # 6.3+
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
thunderbolt: Do not add non-active NVM if NVM upgrade is disabled for retimer [+ + +]
Author: Mika Westerberg <[email protected]>
Date:   Wed Mar 5 14:56:20 2025 +0200

    thunderbolt: Do not add non-active NVM if NVM upgrade is disabled for retimer
    
    [ Upstream commit ad79c278e478ca8c1a3bf8e7a0afba8f862a48a1 ]
    
    This is only used to write a new NVM in order to upgrade the retimer
    firmware. It does not make sense to expose it if upgrade is disabled.
    This also makes it consistent with the router NVM upgrade.
    
    Signed-off-by: Mika Westerberg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
timer_list: Don't use %pK through printk() [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Tue Mar 11 10:54:47 2025 +0100

    timer_list: Don't use %pK through printk()
    
    [ Upstream commit a52067c24ccf6ee4c85acffa0f155e9714f9adce ]
    
    This reverts commit f590308536db ("timer debug: Hide kernel addresses via
    %pK in /proc/timer_list")
    
    The timer list helper SEQ_printf() uses either the real seq_printf() for
    procfs output or vprintk() to print to the kernel log, when invoked from
    SysRq-q. It uses %pK for printing pointers.
    
    In the past %pK was prefered over %p as it would not leak raw pointer
    values into the kernel log. Since commit ad67b74d2469 ("printk: hash
    addresses printed with %p") the regular %p has been improved to avoid this
    issue.
    
    Furthermore, restricted pointers ("%pK") were never meant to be used
    through printk(). They can still unintentionally leak raw pointers or
    acquire sleeping looks in atomic contexts.
    
    Switch to the regular pointer formatting which is safer, easier to reason
    about and sufficient here.
    
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/lkml/20250113171731-dc10e3c1-da64-4af0-b767-7c7070468023@linutronix.de/
    Link: https://lore.kernel.org/all/20250311-restricted-pointers-timer-v1-1-6626b91e54ab@linutronix.de
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/build: Don't pass test log files to linker [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Tue Mar 11 14:36:23 2025 -0700

    tools/build: Don't pass test log files to linker
    
    [ Upstream commit 935e7cb5bb80106ff4f2fe39640f430134ef8cd8 ]
    
    Separate test log files from object files. Depend on test log output
    but don't pass to the linker.
    
    Reviewed-by: James Clark <[email protected]>
    Signed-off-by: Ian Rogers <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/power turbostat: Clustered Uncore MHz counters should honor show/hide options [+ + +]
Author: Len Brown <[email protected]>
Date:   Thu Feb 6 21:46:24 2025 -0600

    tools/power turbostat: Clustered Uncore MHz counters should honor show/hide options
    
    [ Upstream commit 1c7c7388e6c31f46b26a884d80b45efbad8237b2 ]
    
    The clustered uncore frequency counters, UMHz*.*
    should honor the --show and --hide options.
    
    All non-specified counters should be implicityly hidden.
    But when --show was used, UMHz*.* showed up anyway:
    
    $ sudo turbostat -q -S --show Busy%
    Busy%  UMHz0.0  UMHz1.0  UMHz2.0  UMHz3.0  UMHz4.0
    
    Indeed, there was no string that can be used to explicitly
    show or hide clustered uncore counters.
    
    Even through they are dynamically probed and added,
    group the clustered UMHz*.* counters with the legacy
    built-in-counter "UncMHz" for show/hide.
    
    turbostat --show Busy%
            does not show UMHz*.*.
    turbostat --show UncMHz
            shows either UncMHz or UMHz*.*, if present
    turbostat --hide UncMHz
            hides either UncMHz or UMHz*.*, if present
    
    Reported-by: Artem Bityutskiy <[email protected]>
    Signed-off-by: Len Brown <[email protected]>
    Tested-by: Artem Bityutskiy <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools: ynl-gen: don't output external constants [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Mon Feb 3 13:55:09 2025 -0800

    tools: ynl-gen: don't output external constants
    
    [ Upstream commit 7e8b24e24ac46038e48c9a042e7d9b31855cbca5 ]
    
    A definition with a "header" property is an "external" definition
    for C code, as in it is defined already in another C header file.
    Other languages will need the exact value but C codegen should
    not recreate it. So don't output those definitions in the uAPI
    header.
    
    Signed-off-by: Jakub Kicinski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tools: ynl-gen: validate 0 len strings from kernel [+ + +]
Author: David Wei <[email protected]>
Date:   Fri May 2 21:30:50 2025 -0700

    tools: ynl-gen: validate 0 len strings from kernel
    
    [ Upstream commit 4720f9707c783f642332dee3d56dccaefa850e42 ]
    
    Strings from the kernel are guaranteed to be null terminated and
    ynl_attr_validate() checks for this. But it doesn't check if the string
    has a len of 0, which would cause problems when trying to access
    data[len - 1]. Fix this by checking that len is positive.
    
    Signed-off-by: David Wei <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tpm: Convert warn to dbg in tpm2_start_auth_session() [+ + +]
Author: Jonathan McDowell <[email protected]>
Date:   Fri Mar 7 10:56:44 2025 +0000

    tpm: Convert warn to dbg in tpm2_start_auth_session()
    
    [ Upstream commit 6359691b4fbcaf3ed86f53043a1f7c6cc54c09be ]
    
    TPM2 sessions have been flushed lazily since commit df745e25098dc ("tpm:
    Lazily flush the auth session").  If /dev/tpm{rm}0 is not accessed
    in-between two in-kernel calls, it is possible that a TPM2 session is
    re-started before the previous one has been completed.
    
    This causes a spurios warning in a legit run-time condition, which is also
    correctly addressed with a fast return path:
    
    [    2.944047] tpm tpm0: auth session is active
    
    Address the issue by changing dev_warn_once() call to a dev_dbg_once()
    call.
    
    [jarkko: Rewrote the commit message, and instead of dropping converted
     to a debug message.]
    Signed-off-by: Jonathan McDowell <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Mark binary printing functions with __printf() attribute [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Mar 21 16:40:49 2025 +0200

    tracing: Mark binary printing functions with __printf() attribute
    
    [ Upstream commit 196a062641fe68d9bfe0ad36b6cd7628c99ad22c ]
    
    Binary printing functions are using printf() type of format, and compiler
    is not happy about them as is:
    
    kernel/trace/trace.c:3292:9: error: function ‘trace_vbprintk’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
    kernel/trace/trace_seq.c:182:9: error: function ‘trace_seq_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
    
    Fix the compilation errors by adding __printf() attribute.
    
    While at it, move existing __printf() attributes from the implementations
    to the declarations. IT also fixes incorrect attribute parameters that are
    used for trace_array_printk().
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Reviewed-by: Petr Mladek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Petr Mladek <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ublk: complete command synchronously on error [+ + +]
Author: Caleb Sander Mateos <[email protected]>
Date:   Tue Feb 25 14:24:55 2025 -0700

    ublk: complete command synchronously on error
    
    [ Upstream commit 603f9be21c1894e462416e3324962d6c9c2b95f8 ]
    
    In case of an error, ublk's ->uring_cmd() functions currently return
    -EIOCBQUEUED and immediately call io_uring_cmd_done(). -EIOCBQUEUED and
    io_uring_cmd_done() are intended for asynchronous completions. For
    synchronous completions, the ->uring_cmd() function can just return the
    negative return code directly. This skips io_uring_cmd_del_cancelable(),
    and deferring the completion to task work. So return the error code
    directly from __ublk_ch_uring_cmd() and ublk_ctrl_uring_cmd().
    
    Update ublk_ch_uring_cmd_cb(), which currently ignores the return value
    from __ublk_ch_uring_cmd(), to call io_uring_cmd_done() for synchronous
    completions.
    
    Signed-off-by: Caleb Sander Mateos <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Reviewed-by: Keith Busch <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ublk: enforce ublks_max only for unprivileged devices [+ + +]
Author: Uday Shankar <[email protected]>
Date:   Fri Feb 28 21:31:48 2025 -0700

    ublk: enforce ublks_max only for unprivileged devices
    
    [ Upstream commit 80bdfbb3545b6f16680a72c825063d08a6b44c7a ]
    
    Commit 403ebc877832 ("ublk_drv: add module parameter of ublks_max for
    limiting max allowed ublk dev"), claimed ublks_max was added to prevent
    a DoS situation with an untrusted user creating too many ublk devices.
    If that's the case, ublks_max should only restrict the number of
    unprivileged ublk devices in the system. Enforce the limit only for
    unprivileged ublk devices, and rename variables accordingly. Leave the
    external-facing parameter name unchanged, since changing it may break
    systems which use it (but still update its documentation to reflect its
    new meaning).
    
    As a result of this change, in a system where there are only normal
    (non-unprivileged) devices, the maximum number of such devices is
    increased to 1 << MINORBITS, or 1048576. That ought to be enough for
    anyone, right?
    
    Signed-off-by: Uday Shankar <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
um: Store full CSGSFS and SS register from mcontext [+ + +]
Author: Benjamin Berg <[email protected]>
Date:   Mon Feb 24 19:18:19 2025 +0100

    um: Store full CSGSFS and SS register from mcontext
    
    [ Upstream commit cef721e0d53d2b64f2ba177c63a0dfdd7c0daf17 ]
    
    Doing this allows using registers as retrieved from an mcontext to be
    pushed to a process using PTRACE_SETREGS.
    
    It is not entirely clear to me why CSGSFS was masked. Doing so creates
    issues when using the mcontext as process state in seccomp and simply
    copying the register appears to work perfectly fine for ptrace.
    
    Signed-off-by: Benjamin Berg <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

um: Update min_low_pfn to match changes in uml_reserved [+ + +]
Author: Tiwei Bie <[email protected]>
Date:   Fri Feb 21 12:18:55 2025 +0800

    um: Update min_low_pfn to match changes in uml_reserved
    
    [ Upstream commit e82cf3051e6193f61e03898f8dba035199064d36 ]
    
    When uml_reserved is updated, min_low_pfn must also be updated
    accordingly. Otherwise, min_low_pfn will not accurately reflect
    the lowest available PFN.
    
    Signed-off-by: Tiwei Bie <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: xhci: Don't change the status of stalled TDs on failed Stop EP [+ + +]
Author: Michal Pecio <[email protected]>
Date:   Tue Mar 11 17:45:50 2025 +0200

    usb: xhci: Don't change the status of stalled TDs on failed Stop EP
    
    [ Upstream commit dfc88357b6b6356dadea06b2c0bc8041f5e11720 ]
    
    When the device stalls an endpoint, current TD is assigned -EPIPE
    status and Reset Endpoint is queued. If a Stop Endpoint is pending
    at the time, it will run before Reset Endpoint and fail due to the
    stall. Its handler will change TD's status to -EPROTO before Reset
    Endpoint handler runs and initiates giveback.
    
    Check if the stall has already been handled and don't try to do it
    again. Since xhci_handle_halted_endpoint() performs this check too,
    not overwriting td->status is the only difference.
    
    I haven't seen this case yet, but I have seen a related one where
    the xHC has already executed Reset Endpoint, EP Context state is
    now Stopped and EP_HALTED is set. If the xHC took a bit longer to
    execute Reset Endpoint, said case would become this one.
    
    Signed-off-by: Michal Pecio <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: xhci: set page size to the xHCI-supported size [+ + +]
Author: Niklas Neronin <[email protected]>
Date:   Thu Mar 6 16:49:48 2025 +0200

    usb: xhci: set page size to the xHCI-supported size
    
    [ Upstream commit 68c1f1671650b49bbd26e6a65ddcf33f2565efa3 ]
    
    The current xHCI driver does not validate whether a page size of 4096
    bytes is supported. Address the issue by setting the page size to the
    value supported by the xHCI controller, as read from the Page Size
    register. In the event of an unexpected value; default to a 4K page size.
    
    Additionally, this commit removes unnecessary debug messages and instead
    prints the supported and used page size once.
    
    The xHCI controller supports page sizes of (2^{(n+12)}) bytes, where 'n'
    is the Page Size Bit. Only one page size is supported, with a maximum
    page size of 128 KB.
    
    Signed-off-by: Niklas Neronin <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vdpa/mlx5: Fix mlx5_vdpa_get_config() endianness on big-endian machines [+ + +]
Author: Konstantin Shkolnyy <[email protected]>
Date:   Tue Feb 4 11:31:27 2025 -0600

    vdpa/mlx5: Fix mlx5_vdpa_get_config() endianness on big-endian machines
    
    [ Upstream commit 439252e167ac45a5d46f573aac1da7d8f3e051ad ]
    
    mlx5_vdpa_dev_add() doesn’t initialize mvdev->actual_features. It’s
    initialized later by mlx5_vdpa_set_driver_features(). However,
    mlx5_vdpa_get_config() depends on the VIRTIO_F_VERSION_1 flag in
    actual_features, to return data with correct endianness. When it’s called
    before mlx5_vdpa_set_driver_features(), the data are incorrectly returned
    as big-endian on big-endian machines, while QEMU then interprets them as
    little-endian.
    
    The fix is to initialize this VIRTIO_F_VERSION_1 as early as possible,
    especially considering that mlx5_vdpa_dev_add() insists on this flag to
    always be set anyway.
    
    Signed-off-by: Konstantin Shkolnyy <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vfio/pci: Handle INTx IRQ_NOTCONNECTED [+ + +]
Author: Alex Williamson <[email protected]>
Date:   Tue Mar 11 17:06:21 2025 -0600

    vfio/pci: Handle INTx IRQ_NOTCONNECTED
    
    [ Upstream commit 860be250fc32de9cb24154bf21b4e36f40925707 ]
    
    Some systems report INTx as not routed by setting pdev->irq to
    IRQ_NOTCONNECTED, resulting in a -ENOTCONN error when trying to
    setup eventfd signaling.  Include this in the set of conditions
    for which the PIN register is virtualized to zero.
    
    Additionally consolidate vfio_pci_get_irq_count() to use this
    virtualized value in reporting INTx support via ioctl and sanity
    checking ioctl paths since pdev->irq is re-used when the device
    is in MSI mode.
    
    The combination of these results in both the config space of the
    device and the ioctl interface behaving as if the device does not
    support INTx.
    
    Reviewed-by: Kevin Tian <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vhost-scsi: protect vq->log_used with vq->mutex [+ + +]
Author: Dongli Zhang <[email protected]>
Date:   Wed Apr 2 23:29:46 2025 -0700

    vhost-scsi: protect vq->log_used with vq->mutex
    
    [ Upstream commit f591cf9fce724e5075cc67488c43c6e39e8cbe27 ]
    
    The vhost-scsi completion path may access vq->log_base when vq->log_used is
    already set to false.
    
        vhost-thread                       QEMU-thread
    
    vhost_scsi_complete_cmd_work()
    -> vhost_add_used()
       -> vhost_add_used_n()
          if (unlikely(vq->log_used))
                                          QEMU disables vq->log_used
                                          via VHOST_SET_VRING_ADDR.
                                          mutex_lock(&vq->mutex);
                                          vq->log_used = false now!
                                          mutex_unlock(&vq->mutex);
    
                                          QEMU gfree(vq->log_base)
            log_used()
            -> log_write(vq->log_base)
    
    Assuming the VMM is QEMU. The vq->log_base is from QEMU userpace and can be
    reclaimed via gfree(). As a result, this causes invalid memory writes to
    QEMU userspace.
    
    The control queue path has the same issue.
    
    Signed-off-by: Dongli Zhang <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Reviewed-by: Mike Christie <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vhost-scsi: Return queue full for page alloc failures during copy [+ + +]
Author: Mike Christie <[email protected]>
Date:   Tue Dec 3 13:15:11 2024 -0600

    vhost-scsi: Return queue full for page alloc failures during copy
    
    [ Upstream commit 891b99eab0f89dbe08d216f4ab71acbeaf7a3102 ]
    
    This has us return queue full if we can't allocate a page during the
    copy operation so the initiator can retry.
    
    Signed-off-by: Mike Christie <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Acked-by: Stefan Hajnoczi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vhost_task: fix vhost_task_create() documentation [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Thu Mar 27 13:44:35 2025 +0100

    vhost_task: fix vhost_task_create() documentation
    
    [ Upstream commit fec0abf52609c20279243699d08b660c142ce0aa ]
    
    Commit cb380909ae3b ("vhost: return task creation error instead of NULL")
    changed the return value of vhost_task_create(), but did not update the
    documentation.
    
    Reflect the change in the documentation: on an error, vhost_task_create()
    returns an ERR_PTR() and no longer NULL.
    
    Signed-off-by: Stefano Garzarella <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
virtgpu: don't reset on shutdown [+ + +]
Author: Michael S. Tsirkin <[email protected]>
Date:   Thu Apr 10 03:16:26 2025 -0400

    virtgpu: don't reset on shutdown
    
    [ Upstream commit 183a08715af1491d381b4e22efd61578fbe05fa5 ]
    
    It looks like GPUs are used after shutdown is invoked.
    Thus, breaking virtio gpu in the shutdown callback is not a good idea -
    guest hangs attempting to finish console drawing, with these warnings:
    
    [   20.504464] WARNING: CPU: 0 PID: 568 at drivers/gpu/drm/virtio/virtgpu_vq.c:358 virtio_gpu_queue_ctrl_sgs+0x236/0x290 [virtio_gpu]
    [   20.505685] Modules linked in: nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 rfkill ip_set nf_tables nfnetlink vfat fat intel_rapl_msr intel_rapl_common intel_uncore_frequency_common nfit libnvdimm kvm_intel kvm rapl iTCO_wdt iTCO_vendor_support virtio_gpu virtio_dma_buf pcspkr drm_shmem_helper i2c_i801 drm_kms_helper lpc_ich i2c_smbus virtio_balloon joydev drm fuse xfs libcrc32c ahci libahci crct10dif_pclmul crc32_pclmul crc32c_intel libata virtio_net ghash_clmulni_intel net_failover virtio_blk failover serio_raw dm_mirror dm_region_hash dm_log dm_mod
    [   20.511847] CPU: 0 PID: 568 Comm: kworker/0:3 Kdump: loaded Tainted: G        W         -------  ---  5.14.0-578.6675_1757216455.el9.x86_64 #1
    [   20.513157] Hardware name: Red Hat KVM/RHEL, BIOS edk2-20241117-3.el9 11/17/2024
    [   20.513918] Workqueue: events drm_fb_helper_damage_work [drm_kms_helper]
    [   20.514626] RIP: 0010:virtio_gpu_queue_ctrl_sgs+0x236/0x290 [virtio_gpu]
    [   20.515332] Code: 00 00 48 85 c0 74 0c 48 8b 78 08 48 89 ee e8 51 50 00 00 65 ff 0d 42 e3 74 3f 0f 85 69 ff ff ff 0f 1f 44 00 00 e9 5f ff ff ff <0f> 0b e9 3f ff ff ff 48 83 3c 24 00 74 0e 49 8b 7f 40 48 85 ff 74
    [   20.517272] RSP: 0018:ff34f0a8c0787ad8 EFLAGS: 00010282
    [   20.517820] RAX: 00000000fffffffb RBX: 0000000000000000 RCX: 0000000000000820
    [   20.518565] RDX: 0000000000000000 RSI: ff34f0a8c0787be0 RDI: ff218bef03a26300
    [   20.519308] RBP: ff218bef03a26300 R08: 0000000000000001 R09: ff218bef07224360
    [   20.520059] R10: 0000000000008dc0 R11: 0000000000000002 R12: ff218bef02630028
    [   20.520806] R13: ff218bef0263fb48 R14: ff218bef00cb8000 R15: ff218bef07224360
    [   20.521555] FS:  0000000000000000(0000) GS:ff218bef7ba00000(0000) knlGS:0000000000000000
    [   20.522397] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   20.522996] CR2: 000055ac4f7871c0 CR3: 000000010b9f2002 CR4: 0000000000771ef0
    [   20.523740] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   20.524477] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400
    [   20.525223] PKRU: 55555554
    [   20.525515] Call Trace:
    [   20.525777]  <TASK>
    [   20.526003]  ? show_trace_log_lvl+0x1c4/0x2df
    [   20.526464]  ? show_trace_log_lvl+0x1c4/0x2df
    [   20.526925]  ? virtio_gpu_queue_fenced_ctrl_buffer+0x82/0x2c0 [virtio_gpu]
    [   20.527643]  ? virtio_gpu_queue_ctrl_sgs+0x236/0x290 [virtio_gpu]
    [   20.528282]  ? __warn+0x7e/0xd0
    [   20.528621]  ? virtio_gpu_queue_ctrl_sgs+0x236/0x290 [virtio_gpu]
    [   20.529256]  ? report_bug+0x100/0x140
    [   20.529643]  ? handle_bug+0x3c/0x70
    [   20.530010]  ? exc_invalid_op+0x14/0x70
    [   20.530421]  ? asm_exc_invalid_op+0x16/0x20
    [   20.530862]  ? virtio_gpu_queue_ctrl_sgs+0x236/0x290 [virtio_gpu]
    [   20.531506]  ? virtio_gpu_queue_ctrl_sgs+0x174/0x290 [virtio_gpu]
    [   20.532148]  virtio_gpu_queue_fenced_ctrl_buffer+0x82/0x2c0 [virtio_gpu]
    [   20.532843]  virtio_gpu_primary_plane_update+0x3e2/0x460 [virtio_gpu]
    [   20.533520]  drm_atomic_helper_commit_planes+0x108/0x320 [drm_kms_helper]
    [   20.534233]  drm_atomic_helper_commit_tail+0x45/0x80 [drm_kms_helper]
    [   20.534914]  commit_tail+0xd2/0x130 [drm_kms_helper]
    [   20.535446]  drm_atomic_helper_commit+0x11b/0x140 [drm_kms_helper]
    [   20.536097]  drm_atomic_commit+0xa4/0xe0 [drm]
    [   20.536588]  ? __pfx___drm_printfn_info+0x10/0x10 [drm]
    [   20.537162]  drm_atomic_helper_dirtyfb+0x192/0x270 [drm_kms_helper]
    [   20.537823]  drm_fbdev_shmem_helper_fb_dirty+0x43/0xa0 [drm_shmem_helper]
    [   20.538536]  drm_fb_helper_damage_work+0x87/0x160 [drm_kms_helper]
    [   20.539188]  process_one_work+0x194/0x380
    [   20.539612]  worker_thread+0x2fe/0x410
    [   20.540007]  ? __pfx_worker_thread+0x10/0x10
    [   20.540456]  kthread+0xdd/0x100
    [   20.540791]  ? __pfx_kthread+0x10/0x10
    [   20.541190]  ret_from_fork+0x29/0x50
    [   20.541566]  </TASK>
    [   20.541802] ---[ end trace 0000000000000000 ]---
    
    It looks like the shutdown is called in the middle of console drawing, so
    we should either wait for it to finish, or let drm handle the shutdown.
    
    This patch implements this second option:
    
    Add an option for drivers to bypass the common break+reset handling.
    As DRM is careful to flush/synchronize outstanding buffers, it looks like
    GPU can just have a NOP there.
    
    Reviewed-by: Eric Auger <[email protected]>
    Tested-by: Eric Auger <[email protected]>
    Fixes: 8bd2fa086a04 ("virtio: break and reset virtio devices on device_shutdown()")
    Cc: Eric Auger <[email protected]>
    Cc: Jocelyn Falempe <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Message-Id: <8490dbeb6f79ed039e6c11d121002618972538a3.1744293540.git.mst@redhat.com>
    Signed-off-by: Sasha Levin <[email protected]>

 
virtio: break and reset virtio devices on device_shutdown() [+ + +]
Author: Michael S. Tsirkin <[email protected]>
Date:   Thu Aug 8 10:51:41 2024 +0300

    virtio: break and reset virtio devices on device_shutdown()
    
    [ Upstream commit 8bd2fa086a04886798b505f28db4002525895203 ]
    
    Hongyu reported a hang on kexec in a VM. QEMU reported invalid memory
    accesses during the hang.
    
            Invalid read at addr 0x102877002, size 2, region '(null)', reason: rejected
            Invalid write at addr 0x102877A44, size 2, region '(null)', reason: rejected
            ...
    
    It was traced down to virtio-console. Kexec works fine if virtio-console
    is not in use.
    
    The issue is that virtio-console continues to write to the MMIO even after
    underlying virtio-pci device is reset.
    
    Additionally, Eric noticed that IOMMUs are reset before devices, if
    devices are not reset on shutdown they continue to poke at guest memory
    and get errors from the IOMMU. Some devices get wedged then.
    
    The problem can be solved by breaking all virtio devices on virtio
    bus shutdown, then resetting them.
    
    Reported-by: Eric Auger <[email protected]>
    Reported-by: Hongyu Ning <[email protected]>
    Message-ID: <c1dbc7dbad9b445245d3348f19e6742b0be07347.1740094946.git.mst@redhat.com>
    Tested-by: Eric Auger <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN [+ + +]
Author: Zhongqiu Han <[email protected]>
Date:   Wed Mar 12 21:04:12 2025 +0800

    virtio_ring: Fix data race by tagging event_triggered as racy for KCSAN
    
    [ Upstream commit 2e2f925fe737576df2373931c95e1a2b66efdfef ]
    
    syzbot reports a data-race when accessing the event_triggered, here is the
    simplified stack when the issue occurred:
    
    ==================================================================
    BUG: KCSAN: data-race in virtqueue_disable_cb / virtqueue_enable_cb_delayed
    
    write to 0xffff8881025bc452 of 1 bytes by task 3288 on cpu 0:
     virtqueue_enable_cb_delayed+0x42/0x3c0 drivers/virtio/virtio_ring.c:2653
     start_xmit+0x230/0x1310 drivers/net/virtio_net.c:3264
     __netdev_start_xmit include/linux/netdevice.h:5151 [inline]
     netdev_start_xmit include/linux/netdevice.h:5160 [inline]
     xmit_one net/core/dev.c:3800 [inline]
    
    read to 0xffff8881025bc452 of 1 bytes by interrupt on cpu 1:
     virtqueue_disable_cb_split drivers/virtio/virtio_ring.c:880 [inline]
     virtqueue_disable_cb+0x92/0x180 drivers/virtio/virtio_ring.c:2566
     skb_xmit_done+0x5f/0x140 drivers/net/virtio_net.c:777
     vring_interrupt+0x161/0x190 drivers/virtio/virtio_ring.c:2715
     __handle_irq_event_percpu+0x95/0x490 kernel/irq/handle.c:158
     handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
    
    value changed: 0x01 -> 0x00
    ==================================================================
    
    When the data race occurs, the function virtqueue_enable_cb_delayed() sets
    event_triggered to false, and virtqueue_disable_cb_split/packed() reads it
    as false due to the race condition. Since event_triggered is an unreliable
    hint used for optimization, this should only cause the driver temporarily
    suggest that the device not send an interrupt notification when the event
    index is used.
    
    Fix this KCSAN reported data-race issue by explicitly tagging the access as
    data_racy.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Zhongqiu Han <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Acked-by: Jason Wang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vmxnet3: update MTU after device quiesce [+ + +]
Author: Ronak Doshi <[email protected]>
Date:   Thu May 15 19:04:56 2025 +0000

    vmxnet3: update MTU after device quiesce
    
    commit 43f0999af011fba646e015f0bb08b6c3002a0170 upstream.
    
    Currently, when device mtu is updated, vmxnet3 updates netdev mtu, quiesces
    the device and then reactivates it for the ESXi to know about the new mtu.
    So, technically the OS stack can start using the new mtu before ESXi knows
    about the new mtu.
    
    This can lead to issues for TSO packets which use mss as per the new mtu
    configured. This patch fixes this issue by moving the mtu write after
    device quiesce.
    
    Cc: [email protected]
    Fixes: d1a890fa37f2 ("net: VMware virtual Ethernet NIC driver: vmxnet3")
    Signed-off-by: Ronak Doshi <[email protected]>
    Acked-by: Guolin Yang <[email protected]>
    Changes v1-> v2:
      Moved MTU write after destroy of rx rings
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vxlan: Annotate FDB data races [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Tue Feb 4 16:55:42 2025 +0200

    vxlan: Annotate FDB data races
    
    [ Upstream commit f6205f8215f12a96518ac9469ff76294ae7bd612 ]
    
    The 'used' and 'updated' fields in the FDB entry structure can be
    accessed concurrently by multiple threads, leading to reports such as
    [1]. Can be reproduced using [2].
    
    Suppress these reports by annotating these accesses using
    READ_ONCE() / WRITE_ONCE().
    
    [1]
    BUG: KCSAN: data-race in vxlan_xmit / vxlan_xmit
    
    write to 0xffff942604d263a8 of 8 bytes by task 286 on cpu 0:
     vxlan_xmit+0xb29/0x2380
     dev_hard_start_xmit+0x84/0x2f0
     __dev_queue_xmit+0x45a/0x1650
     packet_xmit+0x100/0x150
     packet_sendmsg+0x2114/0x2ac0
     __sys_sendto+0x318/0x330
     __x64_sys_sendto+0x76/0x90
     x64_sys_call+0x14e8/0x1c00
     do_syscall_64+0x9e/0x1a0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    read to 0xffff942604d263a8 of 8 bytes by task 287 on cpu 2:
     vxlan_xmit+0xadf/0x2380
     dev_hard_start_xmit+0x84/0x2f0
     __dev_queue_xmit+0x45a/0x1650
     packet_xmit+0x100/0x150
     packet_sendmsg+0x2114/0x2ac0
     __sys_sendto+0x318/0x330
     __x64_sys_sendto+0x76/0x90
     x64_sys_call+0x14e8/0x1c00
     do_syscall_64+0x9e/0x1a0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    value changed: 0x00000000fffbac6e -> 0x00000000fffbac6f
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 2 UID: 0 PID: 287 Comm: mausezahn Not tainted 6.13.0-rc7-01544-gb4b270f11a02 #5
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014
    
    [2]
     #!/bin/bash
    
     set +H
     echo whitelist > /sys/kernel/debug/kcsan
     echo !vxlan_xmit > /sys/kernel/debug/kcsan
    
     ip link add name vx0 up type vxlan id 10010 dstport 4789 local 192.0.2.1
     bridge fdb add 00:11:22:33:44:55 dev vx0 self static dst 198.51.100.1
     taskset -c 0 mausezahn vx0 -a own -b 00:11:22:33:44:55 -c 0 -q &
     taskset -c 2 mausezahn vx0 -a own -b 00:11:22:33:44:55 -c 0 -q &
    
    Reviewed-by: Petr Machata <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vxlan: Join / leave MC group after remote changes [+ + +]
Author: Petr Machata <[email protected]>
Date:   Fri Feb 14 17:18:21 2025 +0100

    vxlan: Join / leave MC group after remote changes
    
    [ Upstream commit d42d543368343c0449a4e433b5f02e063a86209c ]
    
    When a vxlan netdevice is brought up, if its default remote is a multicast
    address, the device joins the indicated group.
    
    Therefore when the multicast remote address changes, the device should
    leave the current group and subscribe to the new one. Similarly when the
    interface used for endpoint communication is changed in a situation when
    multicast remote is configured. This is currently not done.
    
    Both vxlan_igmp_join() and vxlan_igmp_leave() can however fail. So it is
    possible that with such fix, the netdevice will end up in an inconsistent
    situation where the old group is not joined anymore, but joining the new
    group fails. Should we join the new group first, and leave the old one
    second, we might end up in the opposite situation, where both groups are
    joined. Undoing any of this during rollback is going to be similarly
    problematic.
    
    One solution would be to just forbid the change when the netdevice is up.
    However in vnifilter mode, changing the group address is allowed, and these
    problems are simply ignored (see vxlan_vni_update_group()):
    
     # ip link add name br up type bridge vlan_filtering 1
     # ip link add vx1 up master br type vxlan external vnifilter local 192.0.2.1 dev lo dstport 4789
     # bridge vni add dev vx1 vni 200 group 224.0.0.1
     # tcpdump -i lo &
     # bridge vni add dev vx1 vni 200 group 224.0.0.2
     18:55:46.523438 IP 0.0.0.0 > 224.0.0.22: igmp v3 report, 1 group record(s)
     18:55:46.943447 IP 0.0.0.0 > 224.0.0.22: igmp v3 report, 1 group record(s)
     # bridge vni
     dev               vni                group/remote
     vx1               200                224.0.0.2
    
    Having two different modes of operation for conceptually the same interface
    is silly, so in this patch, just do what the vnifilter code does and deal
    with the errors by crossing fingers real hard.
    
    The vnifilter code leaves old before joining new, and in case of join /
    leave failures does not roll back the configuration changes that have
    already been applied, but bails out of joining if it could not leave. Do
    the same here: leave before join, apply changes unconditionally and do not
    attempt to join if we couldn't leave.
    
    Signed-off-by: Petr Machata <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
watchdog: aspeed: fix 64-bit division [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Fri Mar 14 17:02:44 2025 +0100

    watchdog: aspeed: fix 64-bit division
    
    [ Upstream commit 48a136639ec233614a61653e19f559977d5da2b5 ]
    
    On 32-bit architectures, the new calculation causes a build failure:
    
    ld.lld-21: error: undefined symbol: __aeabi_uldivmod
    
    Since neither value is ever larger than a register, cast both
    sides into a uintptr_t.
    
    Fixes: 5c03f9f4d362 ("watchdog: aspeed: Update bootstatus handling")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

watchdog: aspeed: Update bootstatus handling [+ + +]
Author: Chin-Ting Kuo <[email protected]>
Date:   Mon Jan 13 17:37:37 2025 +0800

    watchdog: aspeed: Update bootstatus handling
    
    [ Upstream commit 5c03f9f4d36292150c14ebd90788c4d3273ed9dc ]
    
    The boot status in the watchdog device struct is updated during
    controller probe stage. Application layer can get the boot status
    through the command, cat /sys/class/watchdog/watchdogX/bootstatus.
    The bootstatus can be,
    WDIOF_CARDRESET => System is reset due to WDT timeout occurs.
    Others          => Other reset events, e.g., power on reset.
    
    On ASPEED platforms, boot status is recorded in the SCU registers.
    - AST2400: Only a bit is used to represent system reset triggered by
               any WDT controller.
    - AST2500/AST2600: System reset triggered by different WDT controllers
                       can be distinguished by different SCU bits.
    
    Besides, on AST2400 and AST2500, since alternating boot event is
    also triggered by using WDT timeout mechanism, it is classified
    as WDIOF_CARDRESET.
    
    Signed-off-by: Chin-Ting Kuo <[email protected]>
    Reviewed-by: Andrew Jeffery <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

watchdog: s3c2410_wdt: Fix PMU register bits for ExynosAutoV920 SoC [+ + +]
Author: Kyunghwan Seo <[email protected]>
Date:   Thu Feb 13 09:41:04 2025 +0900

    watchdog: s3c2410_wdt: Fix PMU register bits for ExynosAutoV920 SoC
    
    [ Upstream commit 480ee8a260e6f87cbcdaff77ac2cbf6dc03f0f4f ]
    
    Fix the PMU register bits for the ExynosAutoV920 SoC.
    This SoC has different bit information compared to its previous
    version, ExynosAutoV9, and we have made the necessary adjustments.
    
    rst_stat_bit:
        - ExynosAutoV920 cl0 : 0
        - ExynosAutoV920 cl1 : 1
    
    cnt_en_bit:
        - ExynosAutoV920 cl0 : 8
        - ExynosAutoV920 cl1 : 8
    
    Signed-off-by: Kyunghwan Seo <[email protected]>
    Signed-off-by: Sangwook Shin <[email protected]>
    Reviewed-by: Alim Akhtar <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath11k: Use dma_alloc_noncoherent for rx_tid buffer allocation [+ + +]
Author: P Praneesh <[email protected]>
Date:   Sun Jan 19 22:12:19 2025 +0530

    wifi: ath11k: Use dma_alloc_noncoherent for rx_tid buffer allocation
    
    [ Upstream commit eeadc6baf8b3dcd32787cc84f0473dc2a2850370 ]
    
    Currently, the driver allocates cacheable DMA buffers for the rx_tid
    structure using kzalloc() and dma_map_single(). These buffers are
    long-lived and can persist for the lifetime of the peer, which is not
    advisable. Instead of using kzalloc() and dma_map_single() for allocating
    cacheable DMA buffers, utilize the dma_alloc_noncoherent() helper for the
    allocation of long-lived cacheable DMA buffers, such as the peer's rx_tid.
    Since dma_alloc_noncoherent() returns unaligned physical and virtual
    addresses, align them internally before use within the driver. This
    ensures proper allocation of non-coherent memory through the kernel
    helper.
    
    Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
    
    Signed-off-by: P Praneesh <[email protected]>
    Tested-by: Tim Harvey <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Avoid napi_sync() before napi_enable() [+ + +]
Author: Avula Sri Charan <[email protected]>
Date:   Fri Jan 24 14:30:58 2025 +0530

    wifi: ath12k: Avoid napi_sync() before napi_enable()
    
    [ Upstream commit 268c73d470a5790a492a2fc2ded084b909d144f3 ]
    
    In case of MHI error a reset work will be queued which will try
    napi_disable() after napi_synchronize().
    
    As the napi will be only enabled after qmi_firmware_ready event,
    trying napi_synchronize() before napi_enable() will result in
    indefinite sleep in case of a firmware crash in QMI init sequence.
    
    To avoid this, introduce napi_enabled flag to check if napi is enabled
    or not before calling napi_synchronize().
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Avula Sri Charan <[email protected]>
    Signed-off-by: Tamizh Chelvam Raja <[email protected]>
    Reviewed-by: Aditya Kumar Singh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Enable MLO setup ready and teardown commands for single split-phy device [+ + +]
Author: Aaradhana Sahu <[email protected]>
Date:   Fri Feb 7 10:33:25 2025 +0530

    wifi: ath12k: Enable MLO setup ready and teardown commands for single split-phy device
    
    [ Upstream commit 5cec2d86c7f4242fb30a696d8e6fd48109bf3e8f ]
    
    When multi-link operation(MLO) is enabled through follow-up patches in
    the single split-phy device, the firmware expects hardware links
    (hw_links) information from the driver.
    
    If driver does not send WMI multi-link setup and ready command to the
    firmware during MLO setup for single split-phy device, the firmware will
    be unaware of the hw_links component of the multi-link operation. This may
    lead to firmware assert during multi-link association.
    
    Therefore, enable WMI setup, ready and teardown commands for single
    split-phy PCI device.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Aaradhana Sahu <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fetch regdb.bin file from board-2.bin [+ + +]
Author: Aaradhana Sahu <[email protected]>
Date:   Thu Jan 16 08:58:35 2025 +0530

    wifi: ath12k: Fetch regdb.bin file from board-2.bin
    
    [ Upstream commit 24f587572acf7509127dbdfcbf1b681ef84eeba0 ]
    
    Currently, ath12k_core_fetch_regdb() finds regdb.bin file through
    board id's but in board-2.bin file regdb.bin file is present with
    default board id because of which regdb.bin is not fetched.
    
    Add support to fetch regdb.bin file from board-2.bin through
    default board id.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Aaradhana Sahu <[email protected]>
    Reviewed-by: Aditya Kumar Singh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix ath12k_hal_tx_cmd_ext_desc_setup() info1 override [+ + +]
Author: Nicolas Escande <[email protected]>
Date:   Mon Jan 27 08:13:06 2025 +0100

    wifi: ath12k: fix ath12k_hal_tx_cmd_ext_desc_setup() info1 override
    
    [ Upstream commit df11edfba49e5fb69f4c9e7cb76082b89c417f78 ]
    
    Since inception there is an obvious typo laying around in
    ath12k_hal_tx_cmd_ext_desc_setup(). Instead of initializing + adding
    flags to tcl_ext_cmd->info1, we initialize + override. This will be needed
    in the future to make broadcast frames work with ethernet encapsulation.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Nicolas Escande <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix end offset bit definition in monitor ring descriptor [+ + +]
Author: P Praneesh <[email protected]>
Date:   Mon Dec 23 11:31:25 2024 +0530

    wifi: ath12k: Fix end offset bit definition in monitor ring descriptor
    
    [ Upstream commit 6788a666000d600bd8f2e9f991cad9cc805e7f01 ]
    
    End offset for the monitor destination ring descriptor is defined as
    16 bits, while the firmware definition specifies only 12 bits.
    The remaining bits (bit 12 to bit 15) are reserved and may contain
    junk values, leading to invalid information retrieval. Fix this issue
    by updating the correct genmask values.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: P Praneesh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix the ampdu id fetch in the HAL_RX_MPDU_START TLV [+ + +]
Author: P Praneesh <[email protected]>
Date:   Thu Feb 6 07:08:51 2025 +0530

    wifi: ath12k: fix the ampdu id fetch in the HAL_RX_MPDU_START TLV
    
    [ Upstream commit dff4f278ee1ef12d822b7ed2a1048d27037209bb ]
    
    Currently, ampdu id is update with peer id mask which is incorrect.
    Therefore, update the ampdu id with PPDU id mask value. Also move
    the ampdu_id field inside the user stats since it is a user id based
    statistics.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: P Praneesh <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Signed-off-by: Karthikeyan Periyasamy <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Improve BSS discovery with hidden SSID in 6 GHz band [+ + +]
Author: Ramasamy Kaliappan <[email protected]>
Date:   Fri Feb 7 11:30:05 2025 +0530

    wifi: ath12k: Improve BSS discovery with hidden SSID in 6 GHz band
    
    [ Upstream commit 27d38bdfd416f4db70e09c3bef3b030c86fd235a ]
    
    Currently, sometimes, the station is unable to identify the configured
    AP SSID in its scan results when the AP is not broadcasting its name
    publicly and has a hidden SSID.
    
    Currently, channel dwell time for an ath12k station is 30 ms. Sometimes,
    station can send broadcast probe request to AP close to the end of dwell
    time. In some of these cases, before AP sends a response to the received
    probe request, the dwell time on the station side would come to an end.
    So, the station will move to scan next channel and will not be able to
    acknowledge the unicast probe response.
    
    Resolve this issue by increasing station's channel dwell time to 70 ms,
    so that the it remains on the same channel for a longer period. This
    would increase the station's chance of receiving probe response from the
    AP. The station will then send a response acknowledgment back to the AP,
    thus leading to successful scan and BSS discovery.
    
    With an increased dwell time, scan would take longer than it takes now.
    But, this fix is an improvement for hidden SSID scan issue.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Ramasamy Kaliappan <[email protected]>
    Signed-off-by: Roopni Devanathan <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Report proper tx completion status to mac80211 [+ + +]
Author: Vinith Kumar R <[email protected]>
Date:   Fri Nov 22 23:04:32 2024 +0530

    wifi: ath12k: Report proper tx completion status to mac80211
    
    [ Upstream commit d2d9c9b8de725e1006d3aa3d18678a732f5d3584 ]
    
    Currently Tx completion for few exception packets are received from
    firmware and the tx status updated to mac80211. The tx status values of
    HAL_WBM_REL_HTT_TX_COMP_STATUS_DROP and HAL_WBM_REL_HTT_TX_COMP_STATUS_TTL
    are considered as tx failure and reported as tx failure to mac80211.
    But these failure status is due to internal firmware tx drop and these
    packets were not tried to transmit in the air.
    In case of mesh this invalid tx status report might trigger mpath broken
    issue due to increase in mpath fail average.
    So do not report these tx status as tx failure instead free the skb
    by calling ieee80211_free_txskb(), and that will be accounted as dropped
    frame.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Vinith Kumar R <[email protected]>
    Signed-off-by: Tamizh Chelvam Raja <[email protected]>
    Acked-by: Jeff Johnson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: report station mode receive rate for IEEE 802.11be [+ + +]
Author: Lingbo Kong <[email protected]>
Date:   Wed Jan 15 14:35:36 2025 +0800

    wifi: ath12k: report station mode receive rate for IEEE 802.11be
    
    [ Upstream commit 5e73276c814fc1a5a1bce6be743e1a07baa6d4bc ]
    
    Currently, the receive rate of EHT of "iw dev xxx station dump" command
    always show an invalid value.
    
    This is because ath12k does not pass information about the rx_status of EHT
    to mac80211. So, mac80211 not calculate the receive rate.
    
    To address this issue, add logic for handling rx_status of EHT to the
    ath12k_dp_rx_h_rate() function.
    
    After that, "iw dev xxx station dump" show the correct receive rate.
    Such as:
    
    Station 00:03:7f:12:03:03 (on wlo1)
            inactive time:  48 ms
            rx bytes:       59226
            rx packets:     320
            tx bytes:       26556
            tx packets:     191
            tx retries:     99
            tx failed:      0
            beacon loss:    0
            beacon rx:      79
            rx drop misc:   68
            signal:         -95 dBm
            beacon signal avg:      -20 dBm
            tx bitrate:     688.2 MBit/s 40MHz EHT-MCS 13 EHT-NSS 2 EHT-GI 0
            tx duration:    0 us
            rx bitrate:     619.5 MBit/s 40MHz EHT-MCS 8 EHT-NSS 3 EHT-GI 0
    
    This patch affects the station mode of WCN7850 and QCN9274.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00214-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Lingbo Kong <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219715
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: report station mode transmit rate [+ + +]
Author: Lingbo Kong <[email protected]>
Date:   Wed Jan 15 14:35:35 2025 +0800

    wifi: ath12k: report station mode transmit rate
    
    [ Upstream commit 8a9c06b40882ebea45563059ddc5d57acdec9dda ]
    
    Currently, the transmit rate of "iw dev xxx station dump" command
    always show an invalid value.
    
    To address this issue, ath12k parse the info of transmit complete
    report from firmware and indicate the transmit rate to mac80211.
    
    This patch affects the station mode of WCN7850 and QCN9274.
    
    After that, "iw dev xxx station dump" show the correct transmit rate.
    Such as:
    
    Station 00:03:7f:12:03:03 (on wlo1)
            inactive time:  872 ms
            rx bytes:       219111
            rx packets:     1133
            tx bytes:       53767
            tx packets:     462
            tx retries:     51
            tx failed:      0
            beacon loss:    0
            beacon rx:      403
            rx drop misc:   74
            signal:         -95 dBm
            beacon signal avg:      -18 dBm
            tx bitrate:     1441.1 MBit/s 80MHz EHT-MCS 13 EHT-NSS 2 EHT-GI 0
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00214-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: Lingbo Kong <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219715
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Update the peer id in PPDU end user stats TLV [+ + +]
Author: Karthikeyan Periyasamy <[email protected]>
Date:   Thu Feb 6 07:08:50 2025 +0530

    wifi: ath12k: Update the peer id in PPDU end user stats TLV
    
    [ Upstream commit 0cded0e413468183a3b2dd445ab3bdc4d4375967 ]
    
    Currently, peer id get reported in the PPDU end user TLV tag. But the
    monitor status handler is inherited from ath11k, but it was not updated
    to incorporate the changes made to ath12k 802.11be hardware architecture.
    Therefore, update the peer id from the PPDU end user TLV data to get latest
    peer id update, it helps to populate accurate peer information on the
    statistics data.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Co-developed-by: P Praneesh <[email protected]>
    Signed-off-by: P Praneesh <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Signed-off-by: Karthikeyan Periyasamy <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: use arvif instead of link_conf in ath12k_mac_set_key() [+ + +]
Author: Aditya Kumar Singh <[email protected]>
Date:   Tue Feb 4 22:35:11 2025 +0530

    wifi: ath12k: use arvif instead of link_conf in ath12k_mac_set_key()
    
    [ Upstream commit 00e4dc11695d48322780812b503314682659e98b ]
    
    Currently, in ath12k_mac_set_key(), if sta is not present, the address is
    retrieved from link_conf's bssid or addr member, depending on the interface
    type.
    
    When operating as an ML station and during shutdown, link_conf will not be
    available. This can result in the following error:
    
    ath12k_pci 0004:01:00.0: unable to access bss link conf in set key for vif AA:BB:CC:DD:EE:FF link 1
    
    The primary purpose of accessing link_conf is to obtain the address for
    finding the peer. However, since arvif is always valid in this call, it can
    be used instead.
    
    Add change to use arvif instead of link_conf.
    
    A subsequent change will expose this issue but since tear down will give
    error, this is included first.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1.97421.5 # Nicolas Escande
    
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Signed-off-by: Aditya Kumar Singh <[email protected]>
    Tested-by: Nicolas Escande <[email protected]>
    Link: https://patch.msgid.link/20250204-unlink_link_arvif_from_chanctx-v2-5-764fb5973c1a@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath9k: return by of_get_mac_address [+ + +]
Author: Rosen Penev <[email protected]>
Date:   Tue Nov 5 14:23:26 2024 -0800

    wifi: ath9k: return by of_get_mac_address
    
    [ Upstream commit dfffb317519f88534bb82797f055f0a2fd867e7b ]
    
    When using nvmem, ath9k could potentially be loaded before nvmem, which
    loads after mtd. This is an issue if DT contains an nvmem mac address.
    
    If nvmem is not ready in time for ath9k, -EPROBE_DEFER is returned. Pass
    it to _probe so that ath9k can properly grab a potentially present MAC
    address.
    
    Signed-off-by: Rosen Penev <[email protected]>
    Acked-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: allow IR in 20 MHz configurations [+ + +]
Author: Anjaneyulu <[email protected]>
Date:   Sat Mar 8 23:03:30 2025 +0200

    wifi: cfg80211: allow IR in 20 MHz configurations
    
    [ Upstream commit cf4bd1608882792d4742e27a819493312904a680 ]
    
    Some regulatory bodies doesn't allow IR (initiate radioation) on a
    specific subband, but allows it for channels with a bandwidth of 20 MHz.
    Add a channel flag that indicates that, and consider it in
    cfg80211_reg_check_beaconing.
    
    While on it, fix the kernel doc of enum nl80211_reg_rule_flags and
    change it to use BIT().
    
    Signed-off-by: Anjaneyulu <[email protected]>
    Co-developed-by: Somashekhar Puttagangaiah <[email protected]>
    Signed-off-by: Somashekhar Puttagangaiah <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.d3ab352a73ff.I8a8f79e1c9eb74936929463960ee2a324712fe51@changeid
    [fix typo]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: Update the link address when a link is added [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Sat Mar 8 23:03:37 2025 +0200

    wifi: cfg80211: Update the link address when a link is added
    
    [ Upstream commit e16caea70610ed4226034dfcdaa5c43b36ff9e0a ]
    
    When links are added, update the wireless device link addresses based
    on the information provided by the driver.
    
    Signed-off-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.d694a9125aba.I79b010ea9aab47893e4f22c266362fde30b7f9ac@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: add support for Killer on MTL [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Tue May 6 21:42:59 2025 +0200

    wifi: iwlwifi: add support for Killer on MTL
    
    [ Upstream commit ebedf8b7f05b9c886d68d63025db8d1b12343157 ]
    
    For now, we need another entry for these devices, this
    will be changed completely for 6.16.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219926
    Link: https://patch.msgid.link/20250506214258.2efbdc9e9a82.I31915ec252bd1c74bd53b89a0e214e42a74b6f2e@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: don't warn during reprobe [+ + +]
Author: Miri Korenblit <[email protected]>
Date:   Wed Feb 5 14:55:35 2025 +0200

    wifi: iwlwifi: don't warn during reprobe
    
    [ Upstream commit 696cca64308dc641d0bbe4aa2c09dd9752aa288d ]
    
    During reprobe, the sw state is being destroyd, and so is the
    connection. When the peer STA is being removed, the opmode sends a
    command to flush the TXQs of the STA and uses iwl_trans_wait_txq_empty.
    
    This one warns if the FW is not alive, but it really shouldn't if
    there is a FW error - and return silently instead, just like we do when
    sending a hcmd.
    
    Signed-off-by: Miri Korenblit <[email protected]>
    Reviewed-by: Johannes Berg <[email protected]>
    Link: https://patch.msgid.link/20250205145347.76425b10e5a0.I3bf0de2eb090a8b94c4e36d93dd91df61fadb808@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: don't warn when if there is a FW error [+ + +]
Author: Miri Korenblit <[email protected]>
Date:   Sat Mar 8 23:19:23 2025 +0200

    wifi: iwlwifi: don't warn when if there is a FW error
    
    [ Upstream commit c7f50d0433a016d43681592836a3d484817bfb34 ]
    
    iwl_trans_reclaim is warning if it is called when the FW is not alive.
    But if it is called when there is a pending restart, i.e. after a FW
    error, there is no need to warn, instead - return silently.
    
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231427.ba3d90b22c25.I9332506af1997faefcf0bdb51d98d5e874051722@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: fix debug actions order [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Sat Mar 8 23:19:18 2025 +0200

    wifi: iwlwifi: fix debug actions order
    
    [ Upstream commit eb29b4ffafb20281624dcd2cbb768d6f30edf600 ]
    
    The order of actions taken for debug was implemented incorrectly.
    Now we implemented the dump split and do the FW reset only in the
    middle of the dump (rather than the FW killing itself on error.)
    As a result, some of the actions taken when applying the config
    will now crash the device, so we need to fix the order.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231427.6de7fa8e63ed.I40632c48e2a67a8aca05def572a934b88ce7934b@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: fix the ECKV UEFI variable name [+ + +]
Author: Emmanuel Grumbach <[email protected]>
Date:   Sat Mar 8 23:19:13 2025 +0200

    wifi: iwlwifi: fix the ECKV UEFI variable name
    
    [ Upstream commit 3ea2970b0578011ab8402ad0cff39712255f63df ]
    
    This UEFI variable name was badly named. Fix its name and also use the
    right GUID to find it: we need to use the BT_WIFI (a.k.a. Common) GUID.
    
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231426.78c998d0fa71.I2bc9d72c1dc2c4d7028f0265634a940c2fadbbb5@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mark Br device not integrated [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Sat Mar 8 23:19:17 2025 +0200

    wifi: iwlwifi: mark Br device not integrated
    
    [ Upstream commit 5f0ab2f35a43773a0dfe1297129a8dbff906b932 ]
    
    This is a discrete device, don't mark it as integrated.
    This also means we cannot set the LTR delay.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231427.9bb69393fcc9.I197129383e5441c8139cbb0e810ae0b71198a37c@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: fix setting the TK when associated [+ + +]
Author: Avraham Stern <[email protected]>
Date:   Sat Mar 8 23:19:25 2025 +0200

    wifi: iwlwifi: mvm: fix setting the TK when associated
    
    [ Upstream commit 3ad61970ac9e164be1b09b46c01aa942e8966132 ]
    
    When running secured ranging and the initiator is associated with
    the responder, the TK was not set in the range request command.
    Fix it.
    
    Signed-off-by: Avraham Stern <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231427.603dc31579d9.Icd19d797e56483c08dd22c55b96fee481c4d2f3d@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: use correct IMR dump variable [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 14:55:46 2025 +0200

    wifi: iwlwifi: use correct IMR dump variable
    
    [ Upstream commit 21e4d29ac0def546d57bacebe4a51cbed1209b03 ]
    
    We shouldn't dump the reg_data here which dumps the last
    entry again, it should use the imr_reg_data.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205145347.3313b18667d1.Iaa9ab66b1d397912a573525e060d39ea01b29d19@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: w/a FW SMPS mode selection [+ + +]
Author: Daniel Gabay <[email protected]>
Date:   Sat Mar 8 23:19:19 2025 +0200

    wifi: iwlwifi: w/a FW SMPS mode selection
    
    [ Upstream commit b2e709805ce955f80803b7cab3421813c79e1df4 ]
    
    The FW is now responsible of determining the SMPS mode.
    If the user disabled power save in a certain vif, we send the vif-level
    power command to clear out the POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK bit
    for that vif.
    But erroneously, the FW checks DEVICE_POWER_FLAGS_POWER_SAVE_ENA_MSK in
    the device-level command to determine the SMPS mode.
    
    To W/A this, send also the device-level command when the power save of a
    vif changes, and disable power save if there is any vif that has power
    save disabled.
    
    Signed-off-by: Daniel Gabay <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308231427.7bf205efa027.I2c793ff1fc2a6779a95faaee1ded348100fd97f1@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: Add counter for all monitor interfaces [+ + +]
Author: Alexander Wetzel <[email protected]>
Date:   Thu Feb 20 10:41:39 2025 +0100

    wifi: mac80211: Add counter for all monitor interfaces
    
    [ Upstream commit 129860044c611008be37f49d04cf41874e3659e6 ]
    
    Count open monitor interfaces regardless of the monitor interface type.
    The new counter virt_monitors takes over counting interfaces depending
    on the virtual monitor interface while monitors is used for all active
    monitor interfaces.
    
    This fixes monitor packet mirroring when using MONITOR_FLAG_ACTIVE or
    NO_VIRTUAL_MONITOR interfaces.
    
    Fixes: 286e69677065 ("wifi: mac80211: Drop cooked monitor support")
    Reported-by: Karthikeyan Periyasamy <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexander Wetzel <[email protected]>
    Tested-by: Karthikeyan Periyasamy <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: add HT and VHT basic set verification [+ + +]
Author: Benjamin Berg <[email protected]>
Date:   Wed Feb 5 11:39:18 2025 +0200

    wifi: mac80211: add HT and VHT basic set verification
    
    [ Upstream commit 574faa0e936d12718e2cadad11ce1e184d9e5a32 ]
    
    So far we did not verify the HT and VHT basic MCS set. However, in
    P802.11REVme/D7.0 (6.5.4.2.4) says that the MLME-JOIN.request shall
    return an error if the VHT and HT basic set requirements are not met.
    
    Given broken APs, apply VHT basic MCS/NSS set checks only in
    strict mode.
    
    Signed-off-by: Benjamin Berg <[email protected]>
    Reviewed-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.e2d8d4095f6b.I66bcf6c2de3b9d3325e4ffd9f573f4cd26ce5685@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: always send max agg subframe num in strict mode [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 11:39:23 2025 +0200

    wifi: mac80211: always send max agg subframe num in strict mode
    
    [ Upstream commit 3fca951123b68df8d1b47bbf90409f8a3671362b ]
    
    Instead of only sending the correct number for EHT and up,
    always send the correct number as it should be in strict
    mode.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.5910263db6da.Icd1f93fabc9705e4e760d834095c29b60b934d9e@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: don't include MLE in ML reconf per-STA profile [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Sat Mar 8 23:03:40 2025 +0200

    wifi: mac80211: don't include MLE in ML reconf per-STA profile
    
    [ Upstream commit c3171bed65ec323803b6b73f74017f7d0fd7aa6c ]
    
    In the multi-link reconfiguration frame, the per-STA profile for
    added links shouldn't include the multi-link element. Set the
    association ID to an invalid value, so it doesn't erroneously
    match the link ID if that happens to be zero.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.8e5be244c70f.I3472cd5c347814ee3600869a88488997bcd43224@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: don't unconditionally call drv_mgd_complete_tx() [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 11:39:22 2025 +0200

    wifi: mac80211: don't unconditionally call drv_mgd_complete_tx()
    
    [ Upstream commit 1798271b3604b902d45033ec569f2bf77e94ecc2 ]
    
    We might not have called drv_mgd_prepare_tx(), so only call
    drv_mgd_complete_tx() under the same conditions.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.e091fc39a351.Ie6a3cdca070612a0aa4b3c6914ab9ed602d1f456@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: Drop cooked monitor support [+ + +]
Author: Alexander Wetzel <[email protected]>
Date:   Tue Feb 4 12:13:52 2025 +0100

    wifi: mac80211: Drop cooked monitor support
    
    [ Upstream commit 286e696770654d79b34bd15953e7101a1c4784c7 ]
    
    Hostapd switched from cooked monitor interfaces to nl80211 Dec 2011.
    Drop support for the outdated cooked monitor interfaces and fix
    creating the virtual monitor interfaces in the following cases:
    
     1) We have one non-monitor and one monitor interface with
        %MONITOR_FLAG_ACTIVE enabled and then delete the non-monitor
        interface.
    
     2) We only have monitor interfaces enabled on resume while at least one
        has %MONITOR_FLAG_ACTIVE set.
    
    Signed-off-by: Alexander Wetzel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: fix U-APSD check in ML reconfiguration [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Sat Mar 8 23:03:31 2025 +0200

    wifi: mac80211: fix U-APSD check in ML reconfiguration
    
    [ Upstream commit 7a6a740be17e049a2742c76bb1dadb3d78c930d9 ]
    
    If U-APSD isn't enabled by us, then IEEE80211_STA_UAPSD_ENABLED
    won't be set, but the AP can still support it in that case. Only
    require U-APSD from the AP if we enabled it, don't require it to
    be disabled on the AP if we didn't.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.b4674be12a38.I01959e448c6a2a3e8bc5d561bbae9e8d2cca616a@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: fix warning on disconnect during failed ML reconf [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Sat Mar 8 23:03:36 2025 +0200

    wifi: mac80211: fix warning on disconnect during failed ML reconf
    
    [ Upstream commit 0e104aa3676d020f6c442cd7fbaeb72adaaab6fc ]
    
    If multi-link reconfiguration fails, we can disconnect with a local link
    already allocated but the BSS entry not assigned yet, which leads to a
    warning in cfg80211. Add a check to avoid the warning.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.699bd9cbabe5.I599d5ff69092a65e916e2acd25137ae9df8debe8@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: remove misplaced drv_mgd_complete_tx() call [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Feb 5 11:39:21 2025 +0200

    wifi: mac80211: remove misplaced drv_mgd_complete_tx() call
    
    [ Upstream commit f4995cdc4d02d0abc8e9fcccad5c71ce676c1e3f ]
    
    In the original commit 15fae3410f1d ("mac80211: notify driver on
    mgd TX completion") I evidently made a mistake and placed the
    call in the "associated" if, rather than the "assoc_data". Later
    I noticed the missing call and placed it in commit c042600c17d8
    ("wifi: mac80211: adding missing drv_mgd_complete_tx() call"),
    but didn't remove the wrong one. Remove it now.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.6ed954179bbf.Id8ef8835b7e6da3bf913c76f77d201017dc8a3c9@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: restore monitor for outgoing frames [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Tue Apr 22 21:32:51 2025 +0200

    wifi: mac80211: restore monitor for outgoing frames
    
    commit abf078c0a322159f5ebe2adaa0cd69dc45b1e710 upstream.
    
    This code was accidentally dropped during the cooked
    monitor removal, but really should've been simplified
    instead. Add the simple version back.
    
    Fixes: 286e69677065 ("wifi: mac80211: Drop cooked monitor support")
    Link: https://patch.msgid.link/20250422213251.b3d65fd0f323.Id2a6901583f7af86bbe94deb355968b238f350c6@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mac80211: set ieee80211_prep_tx_info::link_id upon Auth Rx [+ + +]
Author: Emmanuel Grumbach <[email protected]>
Date:   Wed Feb 5 11:39:20 2025 +0200

    wifi: mac80211: set ieee80211_prep_tx_info::link_id upon Auth Rx
    
    [ Upstream commit 8c60179b64434894eac1ffab7396bac131bc8b6e ]
    
    This will be used by the low level driver.
    Note that link_id  will be 0 in case of a non-MLO authentication.
    Also fix a call-site of mgd_prepare_tx() where the link_id was not
    populated.
    
    Update the documentation to reflect the current state
    ieee80211_prep_tx_info::link_id is also available in mgd_complete_tx().
    
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250205110958.6a590f189ce5.I1fc5c0da26b143f5b07191eb592f01f7083d55ae@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211_hwsim: Fix MLD address translation [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Sat Mar 8 23:03:34 2025 +0200

    wifi: mac80211_hwsim: Fix MLD address translation
    
    [ Upstream commit 65bff0be9b154621b617fc2e4bd89f1e18e97cdb ]
    
    Do address translations only between shared links. It is
    possible that while an non-AP MLD station and an AP MLD
    station have shared links, the frame is intended to be sent
    on a link which is not shared (for example when sending a
    probe response).
    
    Signed-off-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250308225541.1aa461270bb6.Ic21592e1b1634653f02b80628cb2152f6e9de367@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: Check link_conf pointer in mt76_connac_mcu_sta_basic_tlv() [+ + +]
Author: Shayne Chen <[email protected]>
Date:   Tue Mar 11 18:45:09 2025 +0100

    wifi: mt76: Check link_conf pointer in mt76_connac_mcu_sta_basic_tlv()
    
    [ Upstream commit 9890624c1b3948c1c7f1d0e19ef0bb7680b8c80d ]
    
    This is a preliminary patch to introduce MLO support for MT7996 driver.
    
    Signed-off-by: Shayne Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: fix fails to enter low power mode in suspend state [+ + +]
Author: Quan Zhou <[email protected]>
Date:   Tue Jan 14 13:06:22 2025 +0800

    wifi: mt76: mt7925: fix fails to enter low power mode in suspend state
    
    [ Upstream commit 2d5630b0c9466ac6549495828aa7dce7424a272a ]
    
    The mt7925 sometimes fails to enter low power mode during suspend.
    This is caused by the chip firmware sending an additional ACK event
    to the host after processing the suspend command. Due to timing issues,
    this event may not reach the host, causing the chip to get stuck.
    To resolve this, the ACK flag in the suspend command is removed,
    as it is not needed in the MT7925 architecture. This prevents the
    firmware from sending the additional ACK event, ensuring the device
    can reliably enter low power mode during suspend.
    
    Signed-off-by: Quan Zhou <[email protected]>
    Link: https://patch.msgid.link/d056938144a3a0336c3a4e3cec6f271899f32bf7.1736775666.git.quan.zhou@mediatek.com
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: load the appropriate CLC data based on hardware type [+ + +]
Author: Ming Yen Hsieh <[email protected]>
Date:   Tue Mar 4 19:36:44 2025 +0800

    wifi: mt76: mt7925: load the appropriate CLC data based on hardware type
    
    [ Upstream commit f2027ef3f733d3f0bb7f27fa3343784058f946ab ]
    
    Read the EEPROM to determine the hardware type and uses this to load the
    correct CLC data.
    
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: Simplify HIF suspend handling to avoid suspend fail [+ + +]
Author: Quan Zhou <[email protected]>
Date:   Mon Feb 24 21:05:14 2025 +0800

    wifi: mt76: mt7925: Simplify HIF suspend handling to avoid suspend fail
    
    [ Upstream commit bf39813599b0375a3eebbbc6837f728554b3883a ]
    
    System suspend failures may occur due to inappropriate
    handling of traffic not idle event by the WiFi driver.
    The WiFi firmware's traffic not idle indication does
    not need to be tied to suspend. Fix the flow to ensuring
    the system can suspend properly.
    
    Signed-off-by: Quan Zhou <[email protected]>
    Link: https://patch.msgid.link/34208c7280325f57a651363d339399eb1744d3b7.1740400998.git.quan.zhou@mediatek.com
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: fix SER reset trigger on WED reset [+ + +]
Author: Rex Lu <[email protected]>
Date:   Tue Mar 11 11:36:39 2025 +0100

    wifi: mt76: mt7996: fix SER reset trigger on WED reset
    
    [ Upstream commit 8d38abdf6c182225c5c0a81451fa51b7b36a635d ]
    
    The firmware needs a specific trigger when WED is being reset due to an
    ethernet reset condition. This helps prevent further L1 SER failure.
    
    Signed-off-by: Rex Lu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: implement driver specific get_txpower function [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:44 2025 +0100

    wifi: mt76: mt7996: implement driver specific get_txpower function
    
    [ Upstream commit 86db2c5d4ed390b97a5b455a97e2cd9c4f3eff2b ]
    
    Fixes reporting tx power for vifs that don't have a channel context
    assigned. Report the tx power of a phy that is covered by the vif's
    radio mask.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: revise TXS size [+ + +]
Author: Benjamin Lin <[email protected]>
Date:   Tue Mar 11 11:36:38 2025 +0100

    wifi: mt76: mt7996: revise TXS size
    
    [ Upstream commit 593c829b4326f7b3b15a69e97c9044ecbad3c319 ]
    
    Size of MPDU/PPDU TXS is 12 DWs.
    In mt7996/mt7992, last 4 DWs are reserved, so TXS size was mistakenly
    considered to be 8 DWs. However, in mt7990, 9th DW of TXS starts to be used.
    
    Signed-off-by: Benjamin Lin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: use the correct vif link for scanning/roc [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:42 2025 +0100

    wifi: mt76: mt7996: use the correct vif link for scanning/roc
    
    [ Upstream commit 13b4c81083cc4b59fb639a511c0a9a7c38efde7e ]
    
    Use the newly added offchannel_link pointer in vif data
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2 [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:43 2025 +0100

    wifi: mt76: only mark tx-status-failed frames as ACKed on mt76x0/2
    
    [ Upstream commit 0c5a89ceddc1728a40cb3313948401dd70e3c649 ]
    
    The interrupt status polling is unreliable, which can cause status events
    to get lost. On all newer chips, txs-timeout is an indication that the
    packet was either never sent, or never acked.
    Fixes issues with inactivity polling.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: scan: fix setting tx_info fields [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:45 2025 +0100

    wifi: mt76: scan: fix setting tx_info fields
    
    [ Upstream commit 5b5f1ca9ce73ab6c35e5cd3348f8432ba190d7f4 ]
    
    ieee80211_tx_prepare_skb initializes the skb cb, so fields need to be set
    afterwards.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: scan: set vif offchannel link for scanning/roc [+ + +]
Author: Felix Fietkau <[email protected]>
Date:   Tue Mar 11 11:36:41 2025 +0100

    wifi: mt76: scan: set vif offchannel link for scanning/roc
    
    [ Upstream commit 3ba20af886d1f604dceeb4d4c8ff872e2c4e885e ]
    
    The driver needs to know what vif link to use
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mwifiex: Fix HT40 bandwidth issue. [+ + +]
Author: Jeff Chen <[email protected]>
Date:   Fri Mar 14 17:42:38 2025 +0800

    wifi: mwifiex: Fix HT40 bandwidth issue.
    
    [ Upstream commit 4fcfcbe457349267fe048524078e8970807c1a5b ]
    
    This patch addresses an issue where, despite the AP supporting 40MHz
    bandwidth, the connection was limited to 20MHz. Without this fix,
    even if the access point supports 40MHz, the bandwidth after
    connection remains at 20MHz. This issue is not a regression.
    
    Signed-off-by: Jeff Chen <[email protected]>
    Reviewed-by: Francesco Dolcini <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtl8xxxu: retry firmware download on error [+ + +]
Author: Soeren Moch <[email protected]>
Date:   Mon Jan 27 20:48:28 2025 +0100

    wifi: rtl8xxxu: retry firmware download on error
    
    [ Upstream commit 3d3e28feca7ac8c6cf2a390dbbe1f97e3feb7f36 ]
    
    Occasionally there is an EPROTO error during firmware download.
    This error is converted to EAGAIN in the download function.
    But nobody tries again and so device probe fails.
    
    Implement download retry to fix this.
    
    This error was observed (and fix tested) on a tbs2910 board [1]
    with an embedded RTL8188EU (0bda:8179) device behind a USB hub.
    
    [1] arch/arm/boot/dts/nxp/imx/imx6q-tbs2910.dts
    
    Signed-off-by: Soeren Moch <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Sun Jan 26 16:03:11 2025 +0200

    wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate
    
    [ Upstream commit 00451eb3bec763f708e7e58326468c1e575e5a66 ]
    
    Some users want to plug two identical USB devices at the same time.
    This static variable could theoretically cause them to use incorrect
    TX power values.
    
    Move the variable to the caller and pass a pointer to it to
    rtw8822b_set_tx_power_index_by_rate().
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Extend rtw_fw_send_ra_info() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 4 20:39:29 2025 +0200

    wifi: rtw88: Extend rtw_fw_send_ra_info() for RTL8814AU
    
    [ Upstream commit 8f0076726b66a70727a1bef5c087c60291e90ad8 ]
    
    The existing code is suitable for chips with up to 2 spatial streams.
    Inform the firmware about the rates it's allowed to use when
    transmitting 3 spatial streams.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 4 20:36:56 2025 +0200

    wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU
    
    [ Upstream commit 8425f5c8f04dbcf11ade78f984a494fc0b90e7a0 ]
    
    Don't call ltecoex_read_reg() and ltecoex_reg_write() when the
    ltecoex_addr member of struct rtw_chip_info is NULL. The RTL8814AU
    doesn't have this feature.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix download_firmware_validate() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 4 20:37:36 2025 +0200

    wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
    
    [ Upstream commit 9e8243025cc06abc975c876dffda052073207ab3 ]
    
    After the firmware is uploaded, download_firmware_validate() checks some
    bits in REG_MCUFW_CTRL to see if everything went okay. The
    RTL8814AU power on sequence sets bits 13 and 12 to 2, which this
    function does not expect, so it thinks the firmware upload failed.
    
    Make download_firmware_validate() ignore bits 13 and 12.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31 [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:29:52 2025 +0200

    wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
    
    [ Upstream commit 86d04f8f991a0509e318fe886d5a1cf795736c7d ]
    
    This function translates the rate number reported by the hardware into
    something mac80211 can understand. It was ignoring the 3SS and 4SS HT
    rates. Translate them too.
    
    Also set *nss to 0 for the HT rates, just to make sure it's
    initialised.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:30:22 2025 +0200

    wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
    
    [ Upstream commit c7eea1ba05ca5b0dbf77a27cf2e1e6e2fb3c0043 ]
    
    Set the RX mask and the highest RX rate according to the number of
    spatial streams the chip can receive. For RTL8814AU that is 3.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:30:48 2025 +0200

    wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
    
    [ Upstream commit 6be7544d19fcfcb729495e793bc6181f85bb8949 ]
    
    Set the MCS maps and the highest rates according to the number of
    spatial streams the chip has. For RTL8814AU that is 3.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_mac_power_switch() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 18 01:28:59 2025 +0200

    wifi: rtw88: Fix rtw_mac_power_switch() for RTL8814AU
    
    [ Upstream commit e66bca16638ee59e997f9d9a3711b3ae587d04d9 ]
    
    rtw_mac_power_switch() checks bit 8 of REG_SYS_STATUS1 to see if the
    chip is powered on. This bit appears to be always on in the RTL8814AU,
    so ignore it.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: Fix rtw_update_sta_info() for RTL8814AU [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Tue Feb 4 20:42:08 2025 +0200

    wifi: rtw88: Fix rtw_update_sta_info() for RTL8814AU
    
    [ Upstream commit 9f00e2218e15a2ea3c284567424a100c10b6fb85 ]
    
    This function tells the firmware what rates it can use.
    
    Put the 3SS and 4SS HT rates supported by the other station into the
    rate mask.
    
    Remove the 3SS and 4SS rates from the rate mask if the hardware only has
    2 spatial streams.
    
    And finally, select the right rate ID (a parameter for the firmware)
    when the hardware has 3 spatial streams.
    
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: 8922a: fix incorrect STA-ID in EHT MU PPDU [+ + +]
Author: Kuan-Chung Chen <[email protected]>
Date:   Mon Feb 17 14:12:35 2025 +0800

    wifi: rtw89: 8922a: fix incorrect STA-ID in EHT MU PPDU
    
    [ Upstream commit bdce0574243b43b3bb2064f609c0c326df44c4c6 ]
    
    EHT MU PPDU contains user field of EHT-SIG field with STA-ID that
    must match AID subfield in the Associate Response. Add a necessary
    setting to prevent these from being inconsistent.
    
    Signed-off-by: Kuan-Chung Chen <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: add wiphy_lock() to work that isn't held wiphy_lock() yet [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Wed Jan 22 14:03:01 2025 +0800

    wifi: rtw89: add wiphy_lock() to work that isn't held wiphy_lock() yet
    
    [ Upstream commit ebfc9199df05d37b67f4d1b7ee997193f3d2e7c8 ]
    
    To ensure where are protected by driver mutex can also be protected by
    wiphy_lock(), so afterward we can remove driver mutex safely.
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: call power_on ahead before selecting firmware [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 3 15:29:08 2025 +0800

    wifi: rtw89: call power_on ahead before selecting firmware
    
    [ Upstream commit d078f5857a00c06fa0ddee26d3cb722e938e1688 ]
    
    Driver selects firmware by hardware version, which normally can be read
    from registers before selecting firmware. However, certain chips such as
    RTL8851B, it needs to read hardware version from efuse while doing
    power_on, but do power_on after selecting firmware in current flow.
    
    To resolve this flow problem, move power_on out from
    rtw89_mac_partial_init(), and call rtw89_mac_pwr_on() separately at
    proper places to have expected flow.
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: coex: Add protect to avoid A2DP lag while Wi-Fi connecting [+ + +]
Author: Ching-Te Ku <[email protected]>
Date:   Fri Jan 10 09:54:14 2025 +0800

    wifi: rtw89: coex: Add protect to avoid A2DP lag while Wi-Fi connecting
    
    [ Upstream commit 5251fd321684b591245a072b765d01a6c22a112c ]
    
    To get a well Wi-Fi RF quality, Wi-Fi need to do RF calibrations. While
    Wi-Fi is doing RF calibrations, driver will pause the Bluetooth traffic
    to make sure the RF calibration will not be interfered by Bluetooth.
    However, if the RF calibrations take too much time, Bluetooth audio
    will perform a lag sound. Add a function to make Bluetooth can do
    traffic between the individual calibrations to avoid Bluetooth sound
    lag. And patch related A2DP coexistence mechanism actions.
    
    Signed-off-by: Ching-Te Ku <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: coex: Assign value over than 0 to avoid firmware timer hang [+ + +]
Author: Ching-Te Ku <[email protected]>
Date:   Wed Feb 5 09:32:31 2025 +0800

    wifi: rtw89: coex: Assign value over than 0 to avoid firmware timer hang
    
    [ Upstream commit 2e4c4717b3f6f019c71af984564b6e4d0ae8d0bd ]
    
    If the slot duration is 0, the firmware timer will trigger timer hang at
    the timer initializing state in a low rate due to hardware algorithm.
    
    Signed-off-by: Ching-Te Ku <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: coex: Fix coexistence report not show as expected [+ + +]
Author: Ching-Te Ku <[email protected]>
Date:   Sat Mar 8 10:58:30 2025 +0800

    wifi: rtw89: coex: Fix coexistence report not show as expected
    
    [ Upstream commit a36230aa5f5efceaf5f81682673732a921b91518 ]
    
    This report will feedback some basic information from firmware(PTA counter,
    report counter, mailbox counter etc). And the report version need to match
    driver & firmware both side. The original logic break the switch case logic
    before driver update the report version. It made the report can not be
    parsed correctly. Delete the break at the version 7 and 8.
    Add logic to count C2H event report.
    
    Signed-off-by: Ching-Te Ku <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: coex: Separated Wi-Fi connecting event from Wi-Fi scan event [+ + +]
Author: Ching-Te Ku <[email protected]>
Date:   Fri Jan 10 09:54:15 2025 +0800

    wifi: rtw89: coex: Separated Wi-Fi connecting event from Wi-Fi scan event
    
    [ Upstream commit 4a57346652154bb339c48b41166df9154cff33f5 ]
    
    Wi-Fi connecting process don't need to assign to firmware slot control,
    if assign firmware slot control for Wi-Fi connecting event, firmware will
    not toggle slots because driver don't tell the slot schedule to firmware.
    Wi-Fi connecting event end should also cancel the 4way handshake status.
    
    Signed-off-by: Ching-Te Ku <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fw: add blacklist to avoid obsolete secure firmware [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 17 14:43:04 2025 +0800

    wifi: rtw89: fw: add blacklist to avoid obsolete secure firmware
    
    [ Upstream commit f11d042b3a2e92ab1aa10e0da8e290bcdcf31d39 ]
    
    To ensure secure chip only runs expected secure firmware, stop using
    obsolete firmware in blacklist which weakness or flaw was found.
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fw: get sb_sel_ver via get_unaligned_le32() [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 17 14:43:05 2025 +0800

    wifi: rtw89: fw: get sb_sel_ver via get_unaligned_le32()
    
    [ Upstream commit 2f9da853f4d848d23bade4c22931ea0f5a011674 ]
    
    The sb_sel_ver is selection version for secure boot recorded in firmware
    binary data, and its size is 4 and offset is 58 (not natural alignment).
    Use get_unaligned_le32() to get this value safely. Find this by reviewing.
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fw: propagate error code from rtw89_h2c_tx() [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 17 14:43:06 2025 +0800

    wifi: rtw89: fw: propagate error code from rtw89_h2c_tx()
    
    [ Upstream commit 56e1acaa0f80620b8e2c3410db35b4b975782b0a ]
    
    The error code should be propagated to callers during downloading firmware
    header and body. Remove unnecessary assignment of -1.
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fw: validate multi-firmware header before accessing [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 3 15:29:10 2025 +0800

    wifi: rtw89: fw: validate multi-firmware header before accessing
    
    [ Upstream commit 1f0efffd597893404aea5c3d4f1bdaa1c61d4434 ]
    
    A firmeware file contains multi-firmware with a header to represent
    contents. The mfw_hdr->fw_nr is to define number of firmware in file.
    
             +-----+-------+------+---------+--------------+
             | sig | fw_nr | rsvd | version | reserved     |
             +---------------------------------------------+ --
     fw 0    | cv | type | mp | rsvd | shift | size | rsvd |   \
             +---------------------------------------------+   |
     fw 1    | cv | type | mp | rsvd | shift | size | rsvd |   | mfw_hdr->fw_nr
             +---------------------------------------------+   |
     fw N-1  |                  ...                        |   /
             +=============================================+ --
             |               fw 0 content                  |
             |       (pointed by fw0 shift/size)           |
             +=============================================+
    
    To avoid Coverity warning, validate header is in range of firmware size,
    and also validate the range of actual firmware content is in range.
    
    Addresses-Coverity-ID: 1494046 ("Untrusted loop bound")
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fw: validate multi-firmware header before getting its size [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Mon Feb 3 15:29:11 2025 +0800

    wifi: rtw89: fw: validate multi-firmware header before getting its size
    
    [ Upstream commit 2b8bdc5237014cc61784b3676cbaca5325959f3d ]
    
    To access firmware elements appended after multi-firmware, add its size
    as offset to get start address of firmware elements.
    
             +-----+-------+------+---------+--------------+ --
             | sig | fw_nr | rsvd | version | reserved     |   \
             +---------------------------------------------+   |
     fw 0    | cv | type | mp | rsvd | shift | size | rsvd |   |
             +---------------------------------------------+   |
     fw 1    | cv | type | mp | rsvd | shift | size | rsvd |   |
             +---------------------------------------------+   |
     fw N-1  |                  ...                        |   |
             +=============================================+   | mfw size
             |               fw 0 content                  |   |
             +=============================================+   |
             |               fw 1 content                  |   |
             +=============================================+   |
             |                  ...                        |   |
             +=============================================+   |
             |               fw N -1 content               |   |
             +=============================================+ --/
             |             fw element TLV X                |
             +=============================================+
             |             fw element TLV Y                |
             +=============================================+
             |             fw element TLV Z                |
             +=============================================+
    
    To avoid Coverity warning when getting mfw size, validate it header ahead.
    
    Addresses-Coverity-ID: 1544385 ("Untrusted array index read")
    
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: Parse channel from IE to correct invalid hardware reports during scanning [+ + +]
Author: Chih-Kang Chang <[email protected]>
Date:   Thu Feb 20 14:43:57 2025 +0800

    wifi: rtw89: Parse channel from IE to correct invalid hardware reports during scanning
    
    [ Upstream commit e16acf907a3c66b9996a5df43e177a5edec8e0a5 ]
    
    For some packets, we could not get channel information from PPDU status.
    And this causes wrong frequencies being reported. Parse the channel
    information from IE if provided by AP to fix this.
    
    Signed-off-by: Chih-Kang Chang <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: set force HE TB mode when connecting to 11ax AP [+ + +]
Author: Dian-Syuan Yang <[email protected]>
Date:   Thu Mar 6 10:11:44 2025 +0800

    wifi: rtw89: set force HE TB mode when connecting to 11ax AP
    
    [ Upstream commit a9b56f219a0fa550f92e65ac58443a7892380e09 ]
    
    Some of 11ax AP set the UL HE-SIG-A2 reserved subfield to all 0s, which
    will cause the 11be chip to recognize trigger frame as EHT. We propose
    a method to bypass the "UL HE-SIG-A2 reserved subfield" and always uses
    HE TB in response to the AP's trigger frame.
    
    Signed-off-by: Dian-Syuan Yang <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/amd_node: Add SMN offsets to exclusive region access [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Jan 30 19:48:56 2025 +0000

    x86/amd_node: Add SMN offsets to exclusive region access
    
    [ Upstream commit 83518453074d1f3eadbf7e61652b608a60087317 ]
    
    Offsets 0x60 and 0x64 are used internally by kernel drivers that call
    the amd_smn_read() and amd_smn_write() functions. If userspace accesses
    the regions at the same time as the kernel it may cause malfunctions in
    drivers using the offsets.
    
    Add these offsets to the exclusions so that the kernel is tainted if a
    non locked down userspace tries to access them.
    
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Yazen Ghannam <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/boot: Mark start_secondary() with __noendbr [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Fri Feb 7 13:15:34 2025 +0100

    x86/boot: Mark start_secondary() with __noendbr
    
    [ Upstream commit 93f16a1ab78ca56e3cd997d1ea54c214774781ac ]
    
    The handoff between the boot stubs and start_secondary() are before IBT is
    enabled and is definitely not subject to kCFI. As such, suppress all that for
    this function.
    
    Notably when the ENDBR poison would become fatal (ud1 instead of nop) this will
    trigger a tripple fault because we haven't set up the IDT to handle #UD yet.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Sami Tolvanen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2 [+ + +]
Author: Breno Leitao <[email protected]>
Date:   Thu Oct 31 04:06:17 2024 -0700

    x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2
    
    [ Upstream commit 98fdaeb296f51ef08e727a7cc72e5b5c864c4f4d ]
    
    Change the default value of spectre v2 in user mode to respect the
    CONFIG_MITIGATION_SPECTRE_V2 config option.
    
    Currently, user mode spectre v2 is set to auto
    (SPECTRE_V2_USER_CMD_AUTO) by default, even if
    CONFIG_MITIGATION_SPECTRE_V2 is disabled.
    
    Set the spectre_v2 value to auto (SPECTRE_V2_USER_CMD_AUTO) if the
    Spectre v2 config (CONFIG_MITIGATION_SPECTRE_V2) is enabled, otherwise
    set the value to none (SPECTRE_V2_USER_CMD_NONE).
    
    Important to say the command line argument "spectre_v2_user" overwrites
    the default value in both cases.
    
    When CONFIG_MITIGATION_SPECTRE_V2 is not set, users have the flexibility
    to opt-in for specific mitigations independently. In this scenario,
    setting spectre_v2= will not enable spectre_v2_user=, and command line
    options spectre_v2_user and spectre_v2 are independent when
    CONFIG_MITIGATION_SPECTRE_V2=n.
    
    Signed-off-by: Breno Leitao <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Pawan Gupta <[email protected]>
    Acked-by: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: David Kaplan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/build: Fix broken copy command in genimage.sh when making isoimage [+ + +]
Author: Nir Lichtman <[email protected]>
Date:   Fri Jan 10 12:05:00 2025 +0000

    x86/build: Fix broken copy command in genimage.sh when making isoimage
    
    [ Upstream commit e451630226bd09dc730eedb4e32cab1cc7155ae8 ]
    
    Problem: Currently when running the "make isoimage" command there is an
    error related to wrong parameters passed to the cp command:
    
      "cp: missing destination file operand after 'arch/x86/boot/isoimage/'"
    
    This is caused because FDINITRDS is an empty array.
    
    Solution: Check if FDINITRDS is empty before executing the "cp" command,
    similar to how it is done in the case of hdimage.
    
    Signed-off-by: Nir Lichtman <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Masahiro Yamada <[email protected]>
    Cc: Michal Marek <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/fred: Fix system hang during S4 resume with FRED enabled [+ + +]
Author: Xin Li (Intel) <[email protected]>
Date:   Tue Apr 1 00:57:27 2025 -0700

    x86/fred: Fix system hang during S4 resume with FRED enabled
    
    [ Upstream commit e5f1e8af9c9e151ecd665f6d2e36fb25fec3b110 ]
    
    Upon a wakeup from S4, the restore kernel starts and initializes the
    FRED MSRs as needed from its perspective.  It then loads a hibernation
    image, including the image kernel, and attempts to load image pages
    directly into their original page frames used before hibernation unless
    those frames are currently in use.  Once all pages are moved to their
    original locations, it jumps to a "trampoline" page in the image kernel.
    
    At this point, the image kernel takes control, but the FRED MSRs still
    contain values set by the restore kernel, which may differ from those
    set by the image kernel before hibernation.  Therefore, the image kernel
    must ensure the FRED MSRs have the same values as before hibernation.
    Since these values depend only on the location of the kernel text and
    data, they can be recomputed from scratch.
    
    Reported-by: Xi Pardee <[email protected]>
    Reported-by: Todd Brandt <[email protected]>
    Tested-by: Todd Brandt <[email protected]>
    Suggested-by: H. Peter Anvin (Intel) <[email protected]>
    Signed-off-by: Xin Li (Intel) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: H. Peter Anvin (Intel) <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Juergen Gross <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-UAPI headers [+ + +]
Author: Thomas Huth <[email protected]>
Date:   Wed Mar 19 11:30:57 2025 +0100

    x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-UAPI headers
    
    [ Upstream commit 24a295e4ef1ca8e97d8b7015e1887b6e83e1c8be ]
    
    While the GCC and Clang compilers already define __ASSEMBLER__
    automatically when compiling assembly code, __ASSEMBLY__ is a
    macro that only gets defined by the Makefiles in the kernel.
    
    This can be very confusing when switching between userspace
    and kernelspace coding, or when dealing with UAPI headers that
    rather should use __ASSEMBLER__ instead. So let's standardize on
    the __ASSEMBLER__ macro that is provided by the compilers now.
    
    This is mostly a mechanical patch (done with a simple "sed -i"
    statement), with some manual tweaks in <asm/frame.h>, <asm/hw_irq.h>
    and <asm/setup.h> that mentioned this macro in comments with some
    missing underscores.
    
    Signed-off-by: Thomas Huth <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Juergen Gross <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in UAPI headers [+ + +]
Author: Thomas Huth <[email protected]>
Date:   Mon Mar 10 11:42:56 2025 +0100

    x86/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in UAPI headers
    
    [ Upstream commit 8a141be3233af7d4f7014ebc44d5452d46b2b1be ]
    
    __ASSEMBLY__ is only defined by the Makefile of the kernel, so
    this is not really useful for UAPI headers (unless the userspace
    Makefile defines it, too). Let's switch to __ASSEMBLER__ which
    gets set automatically by the compiler when compiling assembly
    code.
    
    Signed-off-by: Thomas Huth <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/ibt: Handle FineIBT in handle_cfi_failure() [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Thu Feb 13 12:45:47 2025 +0100

    x86/ibt: Handle FineIBT in handle_cfi_failure()
    
    [ Upstream commit 882b86fd4e0d49bf91148dbadcdbece19ded40e6 ]
    
    Sami reminded me that FineIBT failure does not hook into the regular
    CFI failure case, and as such CFI_PERMISSIVE does not work.
    
    Reported-by: Sami Tolvanen <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Sami Tolvanen <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/kaslr: Reduce KASLR entropy on most x86 systems [+ + +]
Author: Balbir Singh <[email protected]>
Date:   Fri Feb 7 10:42:34 2025 +1100

    x86/kaslr: Reduce KASLR entropy on most x86 systems
    
    [ Upstream commit 7ffb791423c7c518269a9aad35039ef824a40adb ]
    
    When CONFIG_PCI_P2PDMA=y (which is basically enabled on all
    large x86 distros), it maps the PFN's via a ZONE_DEVICE
    mapping using devm_memremap_pages(). The mapped virtual
    address range corresponds to the pci_resource_start()
    of the BAR address and size corresponding to the BAR length.
    
    When KASLR is enabled, the direct map range of the kernel is
    reduced to the size of physical memory plus additional padding.
    If the BAR address is beyond this limit, PCI peer to peer DMA
    mappings fail.
    
    Fix this by not shrinking the size of the direct map when
    CONFIG_PCI_P2PDMA=y.
    
    This reduces the total available entropy, but it's better than
    the current work around of having to disable KASLR completely.
    
    [ mingo: Clarified the changelog to point out the broad impact ... ]
    
    Signed-off-by: Balbir Singh <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]> # drivers/pci/Kconfig
    Cc: Linus Torvalds <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Link: https://lore.kernel.org/lkml/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    --
     arch/x86/mm/kaslr.c | 10 ++++++++--
     drivers/pci/Kconfig |  6 ++++++
     2 files changed, 14 insertions(+), 2 deletions(-)
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/Kconfig: make CFI_AUTO_DEFAULT depend on !RUST or Rust >= 1.88 [+ + +]
Author: Paweł Anikiel <[email protected]>
Date:   Thu Apr 10 11:54:20 2025 +0000

    x86/Kconfig: make CFI_AUTO_DEFAULT depend on !RUST or Rust >= 1.88
    
    [ Upstream commit 5595c31c370957aabe739ac3996aedba8267603f ]
    
    Calling core::fmt::write() from rust code while FineIBT is enabled
    results in a kernel panic:
    
    [ 4614.199779] kernel BUG at arch/x86/kernel/cet.c:132!
    [ 4614.205343] Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    [ 4614.211781] CPU: 2 UID: 0 PID: 6057 Comm: dmabuf_dump Tainted: G     U     O       6.12.17-android16-0-g6ab38c534a43 #1 9da040f27673ec3945e23b998a0f8bd64c846599
    [ 4614.227832] Tainted: [U]=USER, [O]=OOT_MODULE
    [ 4614.241247] RIP: 0010:do_kernel_cp_fault+0xea/0xf0
    ...
    [ 4614.398144] RIP: 0010:_RNvXs5_NtNtNtCs3o2tGsuHyou_4core3fmt3num3impyNtB9_7Display3fmt+0x0/0x20
    [ 4614.407792] Code: 48 f7 df 48 0f 48 f9 48 89 f2 89 c6 5d e9 18 fd ff ff 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 41 81 ea 14 61 af 2c 74 03 0f 0b 90 <66> 0f 1f 00 55 48 89 e5 48 89 f2 48 8b 3f be 01 00 00 00 5d e9 e7
    [ 4614.428775] RSP: 0018:ffffb95acfa4ba68 EFLAGS: 00010246
    [ 4614.434609] RAX: 0000000000000000 RBX: 0000000000000010 RCX: 0000000000000000
    [ 4614.442587] RDX: 0000000000000007 RSI: ffffb95acfa4ba70 RDI: ffffb95acfa4bc88
    [ 4614.450557] RBP: ffffb95acfa4bae0 R08: ffff0a00ffffff05 R09: 0000000000000070
    [ 4614.458527] R10: 0000000000000000 R11: ffffffffab67eaf0 R12: ffffb95acfa4bcc8
    [ 4614.466493] R13: ffffffffac5d50f0 R14: 0000000000000000 R15: 0000000000000000
    [ 4614.474473]  ? __cfi__RNvXs5_NtNtNtCs3o2tGsuHyou_4core3fmt3num3impyNtB9_7Display3fmt+0x10/0x10
    [ 4614.484118]  ? _RNvNtCs3o2tGsuHyou_4core3fmt5write+0x1d2/0x250
    
    This happens because core::fmt::write() calls
    core::fmt::rt::Argument::fmt(), which currently has CFI disabled:
    
    library/core/src/fmt/rt.rs:
    171     // FIXME: Transmuting formatter in new and indirectly branching to/calling
    172     // it here is an explicit CFI violation.
    173     #[allow(inline_no_sanitize)]
    174     #[no_sanitize(cfi, kcfi)]
    175     #[inline]
    176     pub(super) unsafe fn fmt(&self, f: &mut Formatter<'_>) -> Result {
    
    This causes a Control Protection exception, because FineIBT has sealed
    off the original function's endbr64.
    
    This makes rust currently incompatible with FineIBT. Add a Kconfig
    dependency that prevents FineIBT from getting turned on by default
    if rust is enabled.
    
    [ Rust 1.88.0 (scheduled for 2025-06-26) should have this fixed [1],
      and thus we relaxed the condition with Rust >= 1.88.
    
      When `objtool` lands checking for this with e.g. [2], the plan is
      to ideally run that in upstream Rust's CI to prevent regressions
      early [3], since we do not control `core`'s source code.
    
      Alice tested the Rust PR backported to an older compiler.
    
      Peter would like that Rust provides a stable `core` which can be
      pulled into the kernel: "Relying on that much out of tree code is
      'unfortunate'".
    
        - Miguel ]
    
    Signed-off-by: Paweł Anikiel <[email protected]>
    Reviewed-by: Alice Ryhl <[email protected]>
    Acked-by: Peter Zijlstra <[email protected]>
    Link: https://github.com/rust-lang/rust/pull/139632 [1]
    Link: https://lore.kernel.org/rust-for-linux/[email protected]/ [2]
    Link: https://github.com/rust-lang/rust/pull/139632#issuecomment-2801950873 [3]
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/att0-CANiq72kjDM0cKALVy4POEzhfdT4nO7tqz0Pm7xM+3=_0+L1t=A@mail.gmail.com
    [ Reduced splat. - Miguel ]
    Signed-off-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/locking: Use ALT_OUTPUT_SP() for percpu_{,try_}cmpxchg{64,128}_op() [+ + +]
Author: Uros Bizjak <[email protected]>
Date:   Fri Feb 14 16:07:46 2025 +0100

    x86/locking: Use ALT_OUTPUT_SP() for percpu_{,try_}cmpxchg{64,128}_op()
    
    [ Upstream commit 4087e16b033140cf2ce509ec23503bddec818a16 ]
    
    percpu_{,try_}cmpxchg{64,128}() macros use CALL instruction inside
    asm statement in one of their alternatives. Use ALT_OUTPUT_SP()
    macro to add required dependence on %esp register.
    
    ALT_OUTPUT_SP() implements the above dependence by adding
    ASM_CALL_CONSTRAINT to its arguments. This constraint should be used
    for any inline asm which has a CALL instruction, otherwise the
    compiler may schedule the asm before the frame pointer gets set up
    by the containing function, causing objtool to print a "call without
    frame pointer save/setup" warning.
    
    Signed-off-by: Uros Bizjak <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/microcode: Update the Intel processor flag scan check [+ + +]
Author: Sohil Mehta <[email protected]>
Date:   Wed Feb 19 18:41:21 2025 +0000

    x86/microcode: Update the Intel processor flag scan check
    
    [ Upstream commit 7e6b0a2e4152f4046af95eeb46f8b4f9b2a7398d ]
    
    The Family model check to read the processor flag MSR is misleading and
    potentially incorrect. It doesn't consider Family while comparing the
    model number. The original check did have a Family number but it got
    lost/moved during refactoring.
    
    intel_collect_cpu_info() is called through multiple paths such as early
    initialization, CPU hotplug as well as IFS image load. Some of these
    flows would be error prone due to the ambiguous check.
    
    Correct the processor flag scan check to use a Family number and update
    it to a VFM based one to make it more readable.
    
    Signed-off-by: Sohil Mehta <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Dave Hansen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/mm/init: Handle the special case of device private pages in add_pages(), to not increase max_pfn and trigger dma_addressing_limited() bounce buffers [+ + +]
Author: Balbir Singh <[email protected]>
Date:   Tue Apr 1 11:07:52 2025 +1100

    x86/mm/init: Handle the special case of device private pages in add_pages(), to not increase max_pfn and trigger dma_addressing_limited() bounce buffers
    
    [ Upstream commit 7170130e4c72ce0caa0cb42a1627c635cc262821 ]
    
    As Bert Karwatzki reported, the following recent commit causes a
    performance regression on AMD iGPU and dGPU systems:
    
      7ffb791423c7 ("x86/kaslr: Reduce KASLR entropy on most x86 systems")
    
    It exposed a bug with nokaslr and zone device interaction.
    
    The root cause of the bug is that, the GPU driver registers a zone
    device private memory region. When KASLR is disabled or the above commit
    is applied, the direct_map_physmem_end is set to much higher than 10 TiB
    typically to the 64TiB address. When zone device private memory is added
    to the system via add_pages(), it bumps up the max_pfn to the same
    value. This causes dma_addressing_limited() to return true, since the
    device cannot address memory all the way up to max_pfn.
    
    This caused a regression for games played on the iGPU, as it resulted in
    the DMA32 zone being used for GPU allocations.
    
    Fix this by not bumping up max_pfn on x86 systems, when pgmap is passed
    into add_pages(). The presence of pgmap is used to determine if device
    private memory is being added via add_pages().
    
    More details:
    
    devm_request_mem_region() and request_free_mem_region() request for
    device private memory. iomem_resource is passed as the base resource
    with start and end parameters. iomem_resource's end depends on several
    factors, including the platform and virtualization. On x86 for example
    on bare metal, this value is set to boot_cpu_data.x86_phys_bits.
    boot_cpu_data.x86_phys_bits can change depending on support for MKTME.
    By default it is set to the same as log2(direct_map_physmem_end) which
    is 46 to 52 bits depending on the number of levels in the page table.
    The allocation routines used iomem_resource's end and
    direct_map_physmem_end to figure out where to allocate the region.
    
    [ arch/powerpc is also impacted by this problem, but this patch does not fix
      the issue for PowerPC. ]
    
    Testing:
    
     1. Tested on a virtual machine with test_hmm for zone device inseration
    
     2. A previous version of this patch was tested by Bert, please see:
        https://lore.kernel.org/lkml/[email protected]/
    
    [ mingo: Clarified the comments and the changelog. ]
    
    Reported-by: Bert Karwatzki <[email protected]>
    Tested-by: Bert Karwatzki <[email protected]>
    Fixes: 7ffb791423c7 ("x86/kaslr: Reduce KASLR entropy on most x86 systems")
    Signed-off-by: Balbir Singh <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Juergen Gross <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Pierre-Eric Pelloux-Prayer <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/mm: Check return value from memblock_phys_alloc_range() [+ + +]
Author: Philip Redkin <[email protected]>
Date:   Fri Nov 15 20:36:59 2024 +0300

    x86/mm: Check return value from memblock_phys_alloc_range()
    
    [ Upstream commit 631ca8909fd5c62b9fda9edda93924311a78a9c4 ]
    
    At least with CONFIG_PHYSICAL_START=0x100000, if there is < 4 MiB of
    contiguous free memory available at this point, the kernel will crash
    and burn because memblock_phys_alloc_range() returns 0 on failure,
    which leads memblock_phys_free() to throw the first 4 MiB of physical
    memory to the wolves.
    
    At a minimum it should fail gracefully with a meaningful diagnostic,
    but in fact everything seems to work fine without the weird reserve
    allocation.
    
    Signed-off-by: Philip Redkin <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

x86/mm: Make MMU_GATHER_RCU_TABLE_FREE unconditional [+ + +]
Author: Rik van Riel <[email protected]>
Date:   Thu Feb 13 11:13:52 2025 -0500

    x86/mm: Make MMU_GATHER_RCU_TABLE_FREE unconditional
    
    [ Upstream commit a37259732a7dc33047fa1e4f9a338088f452e017 ]
    
    Currently x86 uses CONFIG_MMU_GATHER_TABLE_FREE when using
    paravirt, and not when running on bare metal.
    
    There is no real good reason to do things differently for
    each setup. Make them all the same.
    
    Currently get_user_pages_fast synchronizes against page table
    freeing in two different ways:
    
     - on bare metal, by blocking IRQs, which block TLB flush IPIs
     - on paravirt, with MMU_GATHER_RCU_TABLE_FREE
    
    This is done because some paravirt TLB flush implementations
    handle the TLB flush in the hypervisor, and will do the flush
    even when the target CPU has interrupts disabled.
    
    Always handle page table freeing with MMU_GATHER_RCU_TABLE_FREE.
    Using RCU synchronization between page table freeing and get_user_pages_fast()
    allows bare metal to also do TLB flushing while interrupts are disabled.
    
    Various places in the mm do still block IRQs or disable preemption
    as an implicit way to block RCU frees.
    
    That makes it safe to use INVLPGB on AMD CPUs.
    
    Suggested-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Rik van Riel <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Tested-by: Manali Shukla <[email protected]>
    Tested-by: Brendan Jackman <[email protected]>
    Tested-by: Michael Kelley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus() [+ + +]
Author: Waiman Long <[email protected]>
Date:   Thu Feb 6 14:18:44 2025 -0500

    x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus()
    
    [ Upstream commit fe37c699ae3eed6e02ee55fbf5cb9ceb7fcfd76c ]
    
    Depending on the type of panics, it was found that the
    __register_nmi_handler() function can be called in NMI context from
    nmi_shootdown_cpus() leading to a lockdep splat:
    
      WARNING: inconsistent lock state
      inconsistent {INITIAL USE} -> {IN-NMI} usage.
    
       lock(&nmi_desc[0].lock);
       <Interrupt>
         lock(&nmi_desc[0].lock);
    
      Call Trace:
        _raw_spin_lock_irqsave
        __register_nmi_handler
        nmi_shootdown_cpus
        kdump_nmi_shootdown_cpus
        native_machine_crash_shutdown
        __crash_kexec
    
    In this particular case, the following panic message was printed before:
    
      Kernel panic - not syncing: Fatal hardware error!
    
    This message seemed to be given out from __ghes_panic() running in
    NMI context.
    
    The __register_nmi_handler() function which takes the nmi_desc lock
    with irq disabled shouldn't be called from NMI context as this can
    lead to deadlock.
    
    The nmi_shootdown_cpus() function can only be invoked once. After the
    first invocation, all other CPUs should be stuck in the newly added
    crash_nmi_callback() and cannot respond to a second NMI.
    
    Fix it by adding a new emergency NMI handler to the nmi_desc
    structure and provide a new set_emergency_nmi_handler() helper to set
    crash_nmi_callback() in any context. The new emergency handler will
    preempt other handlers in the linked list. That will eliminate the need
    to take any lock and serve the panic in NMI use case.
    
    Signed-off-by: Waiman Long <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Rik van Riel <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/sev: Fix operator precedence in GHCB_MSR_VMPL_REQ_LEVEL macro [+ + +]
Author: Seongman Lee <[email protected]>
Date:   Sun May 11 18:23:28 2025 +0900

    x86/sev: Fix operator precedence in GHCB_MSR_VMPL_REQ_LEVEL macro
    
    [ Upstream commit f7387eff4bad33d12719c66c43541c095556ae4e ]
    
    The GHCB_MSR_VMPL_REQ_LEVEL macro lacked parentheses around the bitmask
    expression, causing the shift operation to bind too early. As a result,
    when requesting VMPL1 (e.g., GHCB_MSR_VMPL_REQ_LEVEL(1)), incorrect
    values such as 0x000000016 were generated instead of the intended
    0x100000016 (the requested VMPL level is specified in GHCBData[39:32]).
    
    Fix the precedence issue by grouping the masked value before applying
    the shift.
    
      [ bp: Massage commit message. ]
    
    Fixes: 34ff65901735 ("x86/sev: Use kernel provided SVSM Calling Areas")
    Signed-off-by: Seongman Lee <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/smpboot: Fix INIT delay assignment for extended Intel Families [+ + +]
Author: Sohil Mehta <[email protected]>
Date:   Wed Feb 19 18:41:28 2025 +0000

    x86/smpboot: Fix INIT delay assignment for extended Intel Families
    
    [ Upstream commit 7a2ad752746bfb13e89a83984ecc52a48bae4969 ]
    
    Some old crusty CPUs need an extra delay that slows down booting. See
    the comment above 'init_udelay' for details. Newer CPUs don't need the
    delay.
    
    Right now, for Intel, Family 6 and only Family 6 skips the delay. That
    leaves out both the Family 15 (Pentium 4s) and brand new Family 18/19
    models.
    
    The omission of Family 15 (Pentium 4s) seems like an oversight and 18/19
    do not need the delay.
    
    Skip the delay on all Intel processors Family 6 and beyond.
    
    Signed-off-by: Sohil Mehta <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/stackprotector/64: Only export __ref_stack_chk_guard on CONFIG_SMP [+ + +]
Author: Ingo Molnar <[email protected]>
Date:   Wed Mar 12 12:48:49 2025 +0100

    x86/stackprotector/64: Only export __ref_stack_chk_guard on CONFIG_SMP
    
    [ Upstream commit 91d5451d97ce35cbd510277fa3b7abf9caa4e34d ]
    
    The __ref_stack_chk_guard symbol doesn't exist on UP:
    
      <stdin>:4:15: error: ‘__ref_stack_chk_guard’ undeclared here (not in a function)
    
    Fix the #ifdef around the entry.S export.
    
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Uros Bizjak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/traps: Cleanup and robustify decode_bug() [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Fri Feb 7 13:15:36 2025 +0100

    x86/traps: Cleanup and robustify decode_bug()
    
    [ Upstream commit c20ad96c9a8f0aeaf4e4057730a22de2657ad0c2 ]
    
    Notably, don't attempt to decode an immediate when MOD == 3.
    
    Additionally have it return the instruction length, such that WARN
    like bugs can more reliably skip to the correct instruction.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Sami Tolvanen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
xen/pci: Do not register devices with segments >= 0x10000 [+ + +]
Author: Roger Pau Monne <[email protected]>
Date:   Wed Feb 19 10:20:55 2025 +0100

    xen/pci: Do not register devices with segments >= 0x10000
    
    [ Upstream commit 5ccf1b8ae76ddf348e02a0d1564ff9baf8b6c415 ]
    
    The current hypercall interface for doing PCI device operations always uses
    a segment field that has a 16 bit width.  However on Linux there are buses
    like VMD that hook up devices into the PCI hierarchy at segment >= 0x10000,
    after the maximum possible segment enumerated in ACPI.
    
    Attempting to register or manage those devices with Xen would result in
    errors at best, or overlaps with existing devices living on the truncated
    equivalent segment values.  Note also that the VMD segment numbers are
    arbitrarily assigned by the OS, and hence there would need to be some
    negotiation between Xen and the OS to agree on how to enumerate VMD
    segments and devices behind them.
    
    Skip notifying Xen about those devices.  Given how VMD bridges can
    multiplex interrupts on behalf of devices behind them there's no need for
    Xen to be aware of such devices for them to be usable by Linux.
    
    Signed-off-by: Roger Pau Monné <[email protected]>
    Acked-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xen: Add support for XenServer 6.1 platform device [+ + +]
Author: Frediano Ziglio <[email protected]>
Date:   Thu Feb 27 14:50:15 2025 +0000

    xen: Add support for XenServer 6.1 platform device
    
    [ Upstream commit 2356f15caefc0cc63d9cc5122641754f76ef9b25 ]
    
    On XenServer on Windows machine a platform device with ID 2 instead of
    1 is used.
    
    This device is mainly identical to device 1 but due to some Windows
    update behaviour it was decided to use a device with a different ID.
    
    This causes compatibility issues with Linux which expects, if Xen
    is detected, to find a Xen platform device (5853:0001) otherwise code
    will crash due to some missing initialization (specifically grant
    tables). Specifically from dmesg
    
        RIP: 0010:gnttab_expand+0x29/0x210
        Code: 90 0f 1f 44 00 00 55 31 d2 48 89 e5 41 57 41 56 41 55 41 89 fd
              41 54 53 48 83 ec 10 48 8b 05 7e 9a 49 02 44 8b 35 a7 9a 49 02
              <8b> 48 04 8d 44 39 ff f7 f1 45 8d 24 06 89 c3 e8 43 fe ff ff
              44 39
        RSP: 0000:ffffba34c01fbc88 EFLAGS: 00010086
        ...
    
    The device 2 is presented by Xapi adding device specification to
    Qemu command line.
    
    Signed-off-by: Frediano Ziglio <[email protected]>
    Acked-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xenbus: Allow PVH dom0 a non-local xenstore [+ + +]
Author: Jason Andryuk <[email protected]>
Date:   Tue May 6 16:44:56 2025 -0400

    xenbus: Allow PVH dom0 a non-local xenstore
    
    [ Upstream commit 90989869baae47ee2aa3bcb6f6eb9fbbe4287958 ]
    
    Make xenbus_init() allow a non-local xenstore for a PVH dom0 - it is
    currently forced to XS_LOCAL.  With Hyperlaunch booting dom0 and a
    xenstore stubdom, dom0 can be handled as a regular XS_HVM following the
    late init path.
    
    Ideally we'd drop the use of xen_initial_domain() and just check for the
    event channel instead.  However, ARM has a xen,enhanced no-xenstore
    mode, where the event channel and PFN would both be 0.  Retain the
    xen_initial_domain() check, and use that for an additional check when
    the event channel is 0.
    
    Check the full 64bit HVM_PARAM_STORE_EVTCHN value to catch the off
    chance that high bits are set for the 32bit event channel.
    
    Signed-off-by: Jason Andryuk <[email protected]>
    Change-Id: I5506da42e4c6b8e85079fefb2f193c8de17c7437
    Reviewed-by: Stefano Stabellini <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: Fix UDP GRO handling for some corner cases [+ + +]
Author: Tobias Brunner <[email protected]>
Date:   Tue Apr 15 13:13:18 2025 +0200

    xfrm: Fix UDP GRO handling for some corner cases
    
    [ Upstream commit e3fd0577768584ece824c8b661c40fb3d912812a ]
    
    This fixes an issue that's caused if there is a mismatch between the data
    offset in the GRO header and the length fields in the regular sk_buff due
    to the pskb_pull()/skb_push() calls.  That's because the UDP GRO layer
    stripped off the UDP header via skb_gro_pull() already while the UDP
    header was explicitly not pulled/pushed in this function.
    
    For example, an IKE packet that triggered this had len=data_len=1268 and
    the data_offset in the GRO header was 28 (IPv4 + UDP).  So pskb_pull()
    was called with an offset of 28-8=20, which reduced len to 1248 and via
    pskb_may_pull() and __pskb_pull_tail() it also set data_len to 1248.
    As the ESP offload module was not loaded, the function bailed out and
    called skb_push(), which restored len to 1268, however, data_len remained
    at 1248.
    
    So while skb_headlen() was 0 before, it was now 20.  The latter caused a
    difference of 8 instead of 28 (or 0 if pskb_pull()/skb_push() was called
    with the complete GRO data_offset) in gro_try_pull_from_frag0() that
    triggered a call to gro_pull_from_frag0() that corrupted the packet.
    
    This change uses a more GRO-like approach seen in other GRO receivers
    via skb_gro_header() to just read the actual data we are interested in
    and does not try to "restore" the UDP header at this point to call the
    existing function.  If the offload module is not loaded, it immediately
    bails out, otherwise, it only does a quick check to see if the packet
    is an IKE or keepalive packet instead of calling the existing function.
    
    Fixes: 172bf009c18d ("xfrm: Support GRO for IPv4 ESP in UDP encapsulation")
    Fixes: 221ddb723d90 ("xfrm: Support GRO for IPv6 ESP in UDP encapsulation")
    Signed-off-by: Tobias Brunner <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfrm: prevent high SEQ input in non-ESN mode [+ + +]
Author: Leon Romanovsky <[email protected]>
Date:   Wed Feb 5 20:27:49 2025 +0200

    xfrm: prevent high SEQ input in non-ESN mode
    
    [ Upstream commit e3aa43a50a6455831e3c32dabc7ece38d9cd9d05 ]
    
    In non-ESN mode, the SEQ numbers are limited to 32 bits and seq_hi/oseq_hi
    are not used. So make sure that user gets proper error message, in case
    such assignment occurred.
    
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

xfrm: Sanitize marks before insert [+ + +]
Author: Paul Chaignon <[email protected]>
Date:   Wed May 7 13:31:58 2025 +0200

    xfrm: Sanitize marks before insert
    
    [ Upstream commit 0b91fda3a1f044141e1e615456ff62508c32b202 ]
    
    Prior to this patch, the mark is sanitized (applying the state's mask to
    the state's value) only on inserts when checking if a conflicting XFRM
    state or policy exists.
    
    We discovered in Cilium that this same sanitization does not occur
    in the hot-path __xfrm_state_lookup. In the hot-path, the sk_buff's mark
    is simply compared to the state's value:
    
        if ((mark & x->mark.m) != x->mark.v)
            continue;
    
    Therefore, users can define unsanitized marks (ex. 0xf42/0xf00) which will
    never match any packet.
    
    This commit updates __xfrm_state_insert and xfrm_policy_insert to store
    the sanitized marks, thus removing this footgun.
    
    This has the side effect of changing the ip output, as the
    returned mark will have the mask applied to it when printed.
    
    Fixes: 3d6acfa7641f ("xfrm: SA lookups with mark")
    Signed-off-by: Paul Chaignon <[email protected]>
    Signed-off-by: Louis DeLosSantos <[email protected]>
    Co-developed-by: Louis DeLosSantos <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xsk: Bring back busy polling support in XDP_COPY [+ + +]
Author: Samiullah Khawaja <[email protected]>
Date:   Fri May 16 21:36:38 2025 +0000

    xsk: Bring back busy polling support in XDP_COPY
    
    [ Upstream commit b95ed5517354a5f451fb9b3771776ca4c0b65ac3 ]
    
    Commit 5ef44b3cb43b ("xsk: Bring back busy polling support") fixed the
    busy polling support in xsk for XDP_ZEROCOPY after it was broken in
    commit 86e25f40aa1e ("net: napi: Add napi_config"). The busy polling
    support with XDP_COPY remained broken since the napi_id setup in
    xsk_rcv_check was removed.
    
    Bring back the setup of napi_id for XDP_COPY so socket level SO_BUSYPOLL
    can be used to poll the underlying napi.
    
    Do the setup of napi_id for XDP_COPY in xsk_bind, as it is done
    currently for XDP_ZEROCOPY. The setup of napi_id for XDP_COPY in
    xsk_bind is safe because xsk_rcv_check checks that the rx queue at which
    the packet arrives is equal to the queue_id that was supplied in bind.
    This is done for both XDP_COPY and XDP_ZEROCOPY mode.
    
    Tested using AF_XDP support in virtio-net by running the xsk_rr AF_XDP
    benchmarking tool shared here:
    https://lore.kernel.org/all/[email protected]/T/
    
    Enabled socket busy polling using following commands in qemu,
    
    ```
    sudo ethtool -L eth0 combined 1
    echo 400 | sudo tee /proc/sys/net/core/busy_read
    echo 100 | sudo tee /sys/class/net/eth0/napi_defer_hard_irqs
    echo 15000   | sudo tee /sys/class/net/eth0/gro_flush_timeout
    ```
    
    Fixes: 5ef44b3cb43b ("xsk: Bring back busy polling support")
    Signed-off-by: Samiullah Khawaja <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>