Skip to content

Conversation

@PlaidCat
Copy link
Collaborator

https://ciqinc.atlassian.net/browse/KERNEL-485

Update process (This kernel CentOS base for 6.12.0-124)

  • Kernel History Rebuild Process for all src.rpms hosted by RESF
  • Create rlc-10/6.12.0-124.X.1.el10_1 branch
  • Check if any maintained code is included in the new el release.
  • Cherry-pick all code from previous branch into new branch (skipping unneeded code)
    • Fix conflicts as they arise
  • Build and Test

Rebuild Log

[jmaple@devbox kernel-src-tree-tools]$ python3.11 rolling-release-update.py --repo ../kernel-src-tree-rolling/ --new-base-branch rocky10_1 --old-rolling-branch rlc-10/6.12.0-124.27.1.el10_1
[rolling release update] Rolling Product:  rlc-10
[rolling release update] Checking out branch:  rlc-10/6.12.0-124.27.1.el10_1
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 7 RESF kernel tags
[rolling release update] Checking out branch:  rocky10_1
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 8 RESF kernel tags
[rolling release update] Common tag sha:  b'8f812d0ef9e7'
"8f812d0ef9e74b0fd8caed04f2a621ecc6690801 Rebuild rocky10_1 with kernel-6.12.0-124.27.1.el10_1"
[rolling release update] Checking for FIPS protected changes between the common tag and HEAD
[rolling release update] Checking for FIPS protected changes
[rolling release update] Getting SHAS 8f812d0ef9e7..HEAD
[rolling release update] Number of commits to check:  3
[rolling release update] Checking modifications of shas
[rolling release update] Checked 1 of 3 commits
[rolling release update] Checked 2 of 3 commits
[rolling release update] Checked 3 of 3 commits
[rolling release update] 0 of 3 commits have FIPS protected changes
[rolling release update] Checking out old rolling branch:  rlc-10/6.12.0-124.27.1.el10_1
[rolling release update] Finding the CIQ Kernel and Associated Upstream commits between the last resf tag and HEAD
[rolling release update] Getting SHAS 8f812d0ef9e7..HEAD
Already on 'rlc-10/6.12.0-124.27.1.el10_1'
[rolling release update] Last RESF tag sha:  b'8f812d0ef9e7'
[rolling release update] Total commits in old branch: 18
[rolling release update] Checking out new base branch:  rocky10_1
[rolling release update] Finding the kernel version for the new rolling release
[rolling release update] New Branch to create: rlc-10/6.12.0-124.28.1.el10_1
[rolling release update] Creating new branch: rlc-10/6.12.0-124.28.1.el10_1
[rolling release update] Creating new branch for PR:  jmaple_rlc-10/6.12.0-124.28.1.el10_1
[rolling release update] Creating Map of all new commits from last rolling release fork
Already on 'jmaple_rlc-10/6.12.0-124.28.1.el10_1'
[rolling release update] Total commits in new branch: 2
[rolling release update] Checking if any of the commits from the old rolling release are already present in the new base branch
[rolling release update] Found 0 duplicate commits to remove
[rolling release update] Applying 18 remaining commits to the new branch
  [1/18] 6887c2725d65 tools: hv: Enable debug logs for hv_kvp_daemon
  [2/18] 02126fc1c765 RDMA/mana_ib: Add device statistics support
  [3/18] 8d38cdac8daa PCI/MSI: Export pci_msix_prepare_desc() for dynamic MSI-X allocations
  [4/18] 6e3239751572 PCI: hv: Allow dynamic MSI-X vector allocation
  [5/18] c05d6a365f75 net: mana: explain irq_setup() algorithm
  [6/18] 008a1c84739f net: mana: Allow irq_setup() to skip cpus for affinity
  [7/18] 54749d34da20 net: mana: Allocate MSI-X vectors dynamically
  [8/18] 8fa5a7aa4214 net: mana: Add support for net_shaper_ops
  [9/18] 128297425dd6 net: mana: Add speed support in mana_get_link_ksettings
  [10/18] f8d20e9d7a0e net: mana: Handle unsupported HWC commands
  [11/18] f1a9e9621a94 net: mana: Fix build errors when CONFIG_NET_SHAPER is disabled
  [12/18] 6cd90d16e33e RDMA/mana_ib: add additional port counters
  [13/18] e016fc536092 RDMA/mana_ib: Drain send wrs of GSI QP
  [14/18] a6d5b7ad549f net: hv_netvsc: fix loss of early receive events from host during channel open.
  [15/18] c87f7146ce15 net: mana: Reduce waiting time if HWC not responding
  [16/18] 233f5df13569 RDMA/mana_ib: Extend modify QP
  [17/18] 2298af04a71e scsi: storvsc: Prefer returning channel with the same CPU as on the I/O issuing CPU
  [18/18] 2bc909b44747 net: mana: Use page pool fragments for RX buffers instead of full pages to improve memory efficiency.
[rolling release update] Successfully applied all 18 commits

Build Log

[jmaple@devbox code]$ egrep -B 5 -A 5 "\[TIMER\]|^Starting Build" $(ls -t kbuild* | head -n1)
/mnt/code/kernel-src-tree-build
Running make mrproper...
[TIMER]{MRPROPER}: 6s
x86_64 architecture detected, copying config
'configs/kernel-x86_64-rhel.config' -> '.config'
Setting Local Version for build
CONFIG_LOCALVERSION="-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd"
Making olddefconfig
--
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
Starting Build
  GEN     arch/x86/include/generated/asm/orc_hash.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
--
  BTF [M] net/qrtr/qrtr.ko
  BTF [M] net/hsr/hsr.ko
  LD [M]  virt/lib/irqbypass.ko
  BTF [M] virt/lib/irqbypass.ko
  BTF [M] net/qrtr/qrtr-mhi.ko
[TIMER]{BUILD}: 1962s
Making Modules
  SYMLINK /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/build
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/modules.order
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/modules.builtin
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/modules.builtin.modinfo
--
  STRIP   /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/kernel/virt/lib/irqbypass.ko
  STRIP   /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/kernel/net/qrtr/qrtr-mhi.ko
  SIGN    /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/kernel/net/qrtr/qrtr-mhi.ko
  SIGN    /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+/kernel/virt/lib/irqbypass.ko
  DEPMOD  /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+
[TIMER]{MODULES}: 8s
Making Install
  INSTALL /boot
[TIMER]{INSTALL}: 17s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+ and Index to 3
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 1962s
[TIMER]{MODULES}: 8s
[TIMER]{INSTALL}: 17s
[TIMER]{TOTAL} 1998s
Rebooting in 10 seconds

KSelfTests

[jmaple@devbox code]$ ~/workspace/auto_kernel_history_rebuild/Rocky10/rocky10/code/get_kselftest_diff.sh
kselftest.6.12.0-rocky10_1_rebuild-8f812d0ef9e7+.log
459
kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.27.1.el10_1-2bc909b44747+.log
457
kselftest.6.12.0-rocky10_1_rebuild-f77e30dbf8f3+.log
459
kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+.log
457
Before: kselftest.6.12.0-rocky10_1_rebuild-f77e30dbf8f3+.log
After: kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+.log
Diff:
-ok 1 selftests: filesystems: devpts_pts # SKIP
-ok 2 selftests: seccomp: seccomp_benchmark
-ok 7 selftests: timers: raw_skew
+ok 7 selftests: timers: raw_skew # SKIP

PlaidCat and others added 18 commits January 27, 2026 12:47
jira LE-3207
feature tools_hv
commit-author Shradha Gupta <[email protected]>
commit a9c0b33

Allow the KVP daemon to log the KVP updates triggered in the VM
with a new debug flag(-d).
When the daemon is started with this flag, it logs updates and debug
information in syslog with loglevel LOG_DEBUG. This information comes
in handy for debugging issues where the key-value pairs for certain
pools show mismatch/incorrect values.
The distro-vendors can further consume these changes and modify the
respective service files to redirect the logs to specific files as
needed.

	Signed-off-by: Shradha Gupta <[email protected]>
	Reviewed-by: Naman Jain <[email protected]>
	Reviewed-by: Dexuan Cui <[email protected]>
Link: https://lore.kernel.org/r/1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com
	Signed-off-by: Wei Liu <[email protected]>
Message-ID: <1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com>
(cherry picked from commit a9c0b33)
	Signed-off-by: Jonathan Maple <[email protected]>
jira LE-4478
commit-author Shiraz Saleem <[email protected]>
commit baa640d

Add support for mana device level statistics.

Co-developed-by: Solom Tamawy <[email protected]>
	Signed-off-by: Solom Tamawy <[email protected]>
	Signed-off-by: Shiraz Saleem <[email protected]>
	Signed-off-by: Konstantin Taranov <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Reviewed-by: Long Li <[email protected]>
	Signed-off-by: Leon Romanovsky <[email protected]>
(cherry picked from commit baa640d)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4467
commit-author Shradha Gupta <[email protected]>
commit 5da8a8b

For supporting dynamic MSI-X vector allocation by PCI controllers, enabling
the flag MSI_FLAG_PCI_MSIX_ALLOC_DYN is not enough, msix_prepare_msi_desc()
to prepare the MSI descriptor is also needed.

Export pci_msix_prepare_desc() to allow PCI controllers to support dynamic
MSI-X vector allocation.

	Signed-off-by: Shradha Gupta <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Thomas Gleixner <[email protected]>
	Reviewed-by: Saurabh Sengar <[email protected]>
	Acked-by: Bjorn Helgaas <[email protected]>
(cherry picked from commit 5da8a8b)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4467
commit-author Shradha Gupta <[email protected]>
commit ad518f2

Allow dynamic MSI-X vector allocation for pci_hyperv PCI controller
by adding support for the flag MSI_FLAG_PCI_MSIX_ALLOC_DYN and using
pci_msix_prepare_desc() to prepare the MSI-X descriptors.

Feature support added for both x86 and ARM64

	Signed-off-by: Shradha Gupta <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Saurabh Sengar <[email protected]>
	Acked-by: Bjorn Helgaas <[email protected]>
(cherry picked from commit ad518f2)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4467
commit-author Yury Norov <[email protected]>
commit 4607617

Commit 91bfe21 ("net: mana: add a function to spread IRQs per CPUs")
added the irq_setup() function that distributes IRQs on CPUs according
to a tricky heuristic. The corresponding commit message explains the
heuristic.

Duplicate it in the source code to make available for readers without
digging git in history. Also, add more detailed explanation about how
the heuristics is implemented.

	Signed-off-by: Yury Norov <[email protected]>
	Signed-off-by: Shradha Gupta <[email protected]>
(cherry picked from commit 4607617)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4467
commit-author Shradha Gupta <[email protected]>
commit 845c62c

In order to prepare the MANA driver to allocate the MSI-X IRQs
dynamically, we need to enhance irq_setup() to allow skipping
affinitizing IRQs to the first CPU sibling group.

This would be for cases when the number of IRQs is less than or equal
to the number of online CPUs. In such cases for dynamically added IRQs
the first CPU sibling group would already be affinitized with HWC IRQ.

	Signed-off-by: Shradha Gupta <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Yury Norov [NVIDIA] <[email protected]>
(cherry picked from commit 845c62c)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4467
commit-author Shradha Gupta <[email protected]>
commit 7553911
upstream-diff There were conflicts seen when applying this patch
due to following commit present in our tree before this patch.
590bcf1 ("net: mana: Add handler for hardware servicing events")

Currently, the MANA driver allocates MSI-X vectors statically based on
MANA_MAX_NUM_QUEUES and num_online_cpus() values and in some cases ends
up allocating more vectors than it needs. This is because, by this time
we do not have a HW channel and do not know how many IRQs should be
allocated.

To avoid this, we allocate 1 MSI-X vector during the creation of HWC and
after getting the value supported by hardware, dynamically add the
remaining MSI-X vectors.

	Signed-off-by: Shradha Gupta <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
(cherry picked from commit 7553911)
	Signed-off-by: Shreeya Patel <[email protected]>
Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4473
commit-author Erni Sri Satya Vennela <[email protected]>
commit 75cabb4

Introduce support for net_shaper_ops in the MANA driver,
enabling configuration of rate limiting on the MANA NIC.

To apply rate limiting, the driver issues a HWC command via
mana_set_bw_clamp() and updates the corresponding shaper object
in the net_shaper cache. If an error occurs during this process,
the driver restores the previous speed by querying the current link
configuration using mana_query_link_cfg().

The minimum supported bandwidth is 100 Mbps, and only values that are
exact multiples of 100 Mbps are allowed. Any other values are rejected.

To remove a shaper, the driver resets the bandwidth to the maximum
supported by the SKU using mana_set_bw_clamp() and clears the
associated cache entry. If an error occurs during this process,
the shaper details are retained.

On the hardware that does not support these APIs, the net-shaper
calls to set speed would fail.

Set the speed:
./tools/net/ynl/pyynl/cli.py \
 --spec Documentation/netlink/specs/net_shaper.yaml \
 --do set --json '{"ifindex":'$IFINDEX',
		   "handle":{"scope": "netdev", "id":'$ID' },
		   "bw-max": 200000000 }'

Get the shaper details:
./tools/net/ynl/pyynl/cli.py \
 --spec Documentation/netlink/specs/net_shaper.yaml \
 --do get --json '{"ifindex":'$IFINDEX',
		      "handle":{"scope": "netdev", "id":'$ID' }}'

> {'bw-max': 200000000,
> 'handle': {'scope': 'netdev'},
> 'ifindex': $IFINDEX,
> 'metric': 'bps'}

Delete the shaper object:
./tools/net/ynl/pyynl/cli.py \
 --spec Documentation/netlink/specs/net_shaper.yaml \
 --do delete --json '{"ifindex":'$IFINDEX',
		      "handle":{"scope": "netdev","id":'$ID' }}'

	Signed-off-by: Erni Sri Satya Vennela <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Shradha Gupta <[email protected]>
	Reviewed-by: Saurabh Singh Sengar <[email protected]>
	Reviewed-by: Long Li <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Paolo Abeni <[email protected]>

(cherry picked from commit 75cabb4)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4473
commit-author Erni Sri Satya Vennela <[email protected]>
commit a6d5edf

Allow mana ethtool get_link_ksettings operation to report
the maximum speed supported by the SKU in mbps.

The driver retrieves this information by issuing a
HWC command to the hardware via mana_query_link_cfg(),
which retrieves the SKU's maximum supported speed.

These APIs when invoked on hardware that are older/do
not support these APIs, the speed would be reported as UNKNOWN.

Before:
$ethtool enP30832s1
> Settings for enP30832s1:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Full
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Link detected: yes

After:
$ethtool enP30832s1
> Settings for enP30832s1:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 16000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Link detected: yes

	Signed-off-by: Erni Sri Satya Vennela <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Shradha Gupta <[email protected]>
	Reviewed-by: Saurabh Singh Sengar <[email protected]>
	Reviewed-by: Long Li <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Paolo Abeni <[email protected]>

(cherry picked from commit a6d5edf)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4473
commit-author Erni Sri Satya Vennela <[email protected]>
commit ca8ac48
upstream-diff There were conflicts seen when applying this
patch due to the following patch being in our tree before
this one.
7a3c235 ("net: mana: Handle Reset Request from MANA NIC")

If any of the HWC commands are not recognized by the
underlying hardware, the hardware returns the response
header status of -1. Log the information using
netdev_info_once to avoid multiple error logs in dmesg.

	Signed-off-by: Erni Sri Satya Vennela <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Reviewed-by: Shradha Gupta <[email protected]>
	Reviewed-by: Saurabh Singh Sengar <[email protected]>
	Reviewed-by: Dipayaan Roy <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Paolo Abeni <[email protected]>

(cherry picked from commit ca8ac48)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4473
commit-author Erni Sri Satya Vennela <[email protected]>
commit 11cd020

Fix build errors when CONFIG_NET_SHAPER is disabled, including:

drivers/net/ethernet/microsoft/mana/mana_en.c:804:10: error:
'const struct net_device_ops' has no member named 'net_shaper_ops'

     804 |         .net_shaper_ops         = &mana_shaper_ops,

drivers/net/ethernet/microsoft/mana/mana_en.c:804:35: error:
initialization of 'int (*)(struct net_device *, struct neigh_parms *)'
from incompatible pointer type 'const struct net_shaper_ops *'
[-Werror=incompatible-pointer-types]

     804 |         .net_shaper_ops         = &mana_shaper_ops,

	Signed-off-by: Erni Sri Satya Vennela <[email protected]>
Fixes: 75cabb4 ("net: mana: Add support for net_shaper_ops")
	Reported-by: kernel test robot <[email protected]>
Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
	Reviewed-by: Simon Horman <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Jakub Kicinski <[email protected]>
(cherry picked from commit 11cd020)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4527
commit-author Zhiyue Qiu <[email protected]>
commit 084f35b

Add packet and request port counters to mana_ib.

	Signed-off-by: Zhiyue Qiu <[email protected]>
	Signed-off-by: Konstantin Taranov <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Reviewed-by: Long Li <[email protected]>
	Signed-off-by: Leon Romanovsky <[email protected]>
(cherry picked from commit 084f35b)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4524
commit-author Konstantin Taranov <[email protected]>
commit 44d69d3

Drain send WRs of the GSI QP on device removal.

In rare servicing scenarios, the hardware may delete the
state of the GSI QP, preventing it from generating CQEs
for pending send WRs. Since WRs submitted to the GSI QP
hold CM resources, the device cannot be removed until
those WRs are completed. This patch marks all pending
send WRs as failed, allowing the GSI QP to release the CM
resources and enabling safe device removal.

	Signed-off-by: Konstantin Taranov <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Leon Romanovsky <[email protected]>
(cherry picked from commit 44d69d3)
	Signed-off-by: Shreeya Patel <[email protected]>
…nnel open.

jira LE-4494
commit-author Dipayaan Roy <[email protected]>
commit 9448ccd

The hv_netvsc driver currently enables NAPI after opening the primary and
subchannels. This ordering creates a race: if the Hyper-V host places data
in the host -> guest ring buffer and signals the channel before
napi_enable() has been called, the channel callback will run but
napi_schedule_prep() will return false. As a result, the NAPI poller never
gets scheduled, the data in the ring buffer is not consumed, and the
receive queue may remain permanently stuck until another interrupt happens
to arrive.

Fix this by enabling NAPI and registering it with the RX/TX queues before
vmbus channel is opened. This guarantees that any early host signal after
open will correctly trigger NAPI scheduling and the ring buffer will be
drained.

Fixes: 76bb5db ("netvsc: fix use after free on module removal")
	Signed-off-by: Dipayaan Roy <[email protected]>
Link: https://patch.msgid.link/20250825115627.GA32189@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net
	Signed-off-by: Jakub Kicinski <[email protected]>
(cherry picked from commit 9448ccd)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4497
commit-author Haiyang Zhang <[email protected]>
commit c4deabb

If HW Channel (HWC) is not responding, reduce the waiting time, so further
steps will fail quickly.
This will prevent getting stuck for a long time (30 minutes or more), for
example, during unloading while HWC is not responding.

	Signed-off-by: Haiyang Zhang <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Jakub Kicinski <[email protected]>
(cherry picked from commit c4deabb)
	Signed-off-by: Shreeya Patel <[email protected]>
jira LE-4521
commit-author Shiraz Saleem <[email protected]>
commit 2bd7dd3

Extend modify QP to support further attributes: local_ack_timeout, UD qkey,
rate_limit, qp_access_flags, flow_label, max_rd_atomic.

	Signed-off-by: Shiraz Saleem <[email protected]>
	Signed-off-by: Konstantin Taranov <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Leon Romanovsky <[email protected]>
(cherry picked from commit 2bd7dd3)
	Signed-off-by: Shreeya Patel <[email protected]>
…/O issuing CPU

jira LE-4537
commit-author Long Li <[email protected]>
commit b69ffea

When selecting an outgoing channel for I/O, storvsc tries to select a
channel with a returning CPU that is not the same as issuing CPU. This
worked well in the past, however it doesn't work well when the Hyper-V
exposes a large number of channels (up to the number of all CPUs). Use a
different CPU for returning channel is not efficient on Hyper-V.

Change this behavior by preferring to the channel with the same CPU as
the current I/O issuing CPU whenever possible.

Tests have shown improvements in newer Hyper-V/Azure environment, and no
regression with older Hyper-V/Azure environments.

	Tested-by: Raheel Abdul Faizy <[email protected]>
	Signed-off-by: Long Li <[email protected]>
Message-Id: <[email protected]>
	Signed-off-by: Martin K. Petersen <[email protected]>
(cherry picked from commit b69ffea)
	Signed-off-by: Shreeya Patel <[email protected]>
…es to improve memory efficiency.

jira LE-4490
commit-author Dipayaan Roy <[email protected]>
commit 730ff06
upstream-diff This patch was causing build failures due to missing
commit 0f92140 ("memory-provider: dmabuf devmem memory provider")
To fix it, we have removed pprm.queue_idx parameter which seems
redundant in this case.

This patch enhances RX buffer handling in the mana driver by allocating
pages from a page pool and slicing them into MTU-sized fragments, rather
than dedicating a full page per packet. This approach is especially
beneficial on systems with large base page sizes like 64KB.

Key improvements:

- Proper integration of page pool for RX buffer allocations.
- MTU-sized buffer slicing to improve memory utilization.
- Reduce overall per Rx queue memory footprint.
- Automatic fallback to full-page buffers when:
   * Jumbo frames are enabled (MTU > PAGE_SIZE / 2).
   * The XDP path is active, to avoid complexities with fragment reuse.

Testing on VMs with 64KB pages shows around 200% throughput improvement.
Memory efficiency is significantly improved due to reduced wastage in page
allocations. Example: We are now able to fit 35 rx buffers in a single 64kb
page for MTU size of 1500, instead of 1 rx buffer per page previously.

Tested:

- iperf3, iperf2, and nttcp benchmarks.
- Jumbo frames with MTU 9000.
- Native XDP programs (XDP_PASS, XDP_DROP, XDP_TX, XDP_REDIRECT) for
  testing the XDP path in driver.
- Memory leak detection (kmemleak).
- Driver load/unload, reboot, and stress scenarios.

	Reviewed-by: Jacob Keller <[email protected]>
	Reviewed-by: Saurabh Sengar <[email protected]>
	Reviewed-by: Haiyang Zhang <[email protected]>
	Signed-off-by: Dipayaan Roy <[email protected]>
Link: https://patch.msgid.link/20250814140410.GA22089@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net
	Signed-off-by: Paolo Abeni <[email protected]>

(cherry picked from commit 730ff06)
	Signed-off-by: Shreeya Patel <[email protected]>
@PlaidCat PlaidCat self-assigned this Jan 27, 2026
@PlaidCat PlaidCat requested a review from a team January 27, 2026 23:46
@bmastbergen bmastbergen self-requested a review January 28, 2026 14:29
Copy link
Collaborator

@bmastbergen bmastbergen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥌

@jdieter
Copy link

jdieter commented Jan 30, 2026

If this is good, can we please get it merged and run the Jenkins dist-git MR job so I can do the builds?

@roxanan1996 roxanan1996 merged commit 40617b6 into rlc-10/6.12.0-124.28.1.el10_1 Jan 30, 2026
4 checks passed
@roxanan1996 roxanan1996 deleted the jmaple_rlc-10/6.12.0-124.28.1.el10_1 branch January 30, 2026 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

6 participants