Skip to content

Conversation

@PlaidCat
Copy link
Collaborator

@PlaidCat PlaidCat commented Feb 3, 2026

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

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

Rebase Log

[rolling release update] Rolling Product:  rlc-10
[rolling release update] Checking out branch:  rlc-10/6.12.0-124.28.1.el10_1
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 8 RESF kernel tags
[rolling release update] Checking out branch:  rocky10_1
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 9 RESF kernel tags
[rolling release update] Common tag sha:  b'f77e30dbf8f3'
"f77e30dbf8f31375951fef4061237e1e458da1e1 Rebuild rocky10_1 with kernel-6.12.0-124.28.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 f77e30dbf8f3..HEAD
[rolling release update] Number of commits to check:  26
[rolling release update] Checking modifications of shas
[rolling release update] Checked 2 of 26 commits
[rolling release update] Checked 4 of 26 commits
[rolling release update] Checked 6 of 26 commits
[rolling release update] Checked 8 of 26 commits
[rolling release update] Checked 10 of 26 commits
[rolling release update] Checked 12 of 26 commits
[rolling release update] Checked 14 of 26 commits
[rolling release update] Checked 16 of 26 commits
[rolling release update] Checked 18 of 26 commits
[rolling release update] Checked 20 of 26 commits
[rolling release update] Checked 22 of 26 commits
[rolling release update] Checked 24 of 26 commits
[rolling release update] Checked 26 of 26 commits
[rolling release update] 0 of 26 commits have FIPS protected changes
[rolling release update] Checking out old rolling branch:  rlc-10/6.12.0-124.28.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 f77e30dbf8f3..HEAD
[rolling release update] Last RESF tag sha:  b'f77e30dbf8f3'
[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.29.1.el10_1
[rolling release update] Creating new branch: rlc-10/6.12.0-124.29.1.el10_1
[rolling release update] Creating new branch for PR:  jmaple_rlc-10/6.12.0-124.29.1.el10_1
[rolling release update] Creating Map of all new commits from last rolling release fork
[rolling release update] Total commits in new branch: 25
[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] d33d4b427939 tools: hv: Enable debug logs for hv_kvp_daemon
  [2/18] 367d468d92b4 RDMA/mana_ib: Add device statistics support
  [3/18] 64bbfb4062fc PCI/MSI: Export pci_msix_prepare_desc() for dynamic MSI-X allocations
  [4/18] 368525876a02 PCI: hv: Allow dynamic MSI-X vector allocation
  [5/18] 4f9ea9f10fb8 net: mana: explain irq_setup() algorithm
  [6/18] debe1aa0533b net: mana: Allow irq_setup() to skip cpus for affinity
  [7/18] 4b1c6ffbcf96 net: mana: Allocate MSI-X vectors dynamically
  [8/18] 35aea5fa2216 net: mana: Add support for net_shaper_ops
  [9/18] fec425dbe2d9 net: mana: Add speed support in mana_get_link_ksettings
  [10/18] e89d355c3b3c net: mana: Handle unsupported HWC commands
  [11/18] 27029d3c4227 net: mana: Fix build errors when CONFIG_NET_SHAPER is disabled
  [12/18] 05d2edc6e0dc RDMA/mana_ib: add additional port counters
  [13/18] 82fd98a4e486 RDMA/mana_ib: Drain send wrs of GSI QP
  [14/18] 6abf1f4afbe4 net: hv_netvsc: fix loss of early receive events from host during channel open.
  [15/18] 6f2e53a16adf net: mana: Reduce waiting time if HWC not responding
  [16/18] 6e994630ec9f RDMA/mana_ib: Extend modify QP
  [17/18] 89e0ecc96597 scsi: storvsc: Prefer returning channel with the same CPU as on the I/O issuing CPU
  [18/18] 40617b6ca669 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

[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.29.1.el10_1-ff7f77f09d8a"
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
--
  LD [M]  virt/lib/irqbypass.ko
  BTF [M] net/hsr/hsr.ko
  BTF [M] net/qrtr/qrtr.ko
  BTF [M] net/qrtr/qrtr-mhi.ko
  BTF [M] virt/lib/irqbypass.ko
[TIMER]{BUILD}: 1985s
Making Modules
  SYMLINK /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/build
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/modules.order
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/modules.builtin
  INSTALL /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/modules.builtin.modinfo
--
  STRIP   /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/kernel/net/qrtr/qrtr-mhi.ko
  SIGN    /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+/kernel/net/qrtr/qrtr.ko
  DEPMOD  /lib/modules/6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+
[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.29.1.el10_1-ff7f77f09d8a+ and Index to 3
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 1985s
[TIMER]{MODULES}: 8s
[TIMER]{INSTALL}: 17s
[TIMER]{TOTAL} 2021s
Rebooting in 10 seconds

KSelfTests

[jmaple@devbox code]$ ~/workspace/auto_kernel_history_rebuild/Rocky10/rocky10/code/get_kselftest_diff.sh
kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.28.1.el10_1-19cb071a47bd+.log
457
kselftest.6.12.0-rocky10_1_rebuild-55f749008285+.log
448
kselftest.6.12.0-rocky10_1_rebuild-8224a053ff60+.log
447
kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+.log
447
Before: kselftest.6.12.0-rocky10_1_rebuild-8224a053ff60+.log
After: kselftest.6.12.0-jmaple_rlc-10_6.12.0-124.29.1.el10_1-ff7f77f09d8a+.log
Diff:
No differences found.

PlaidCat and others added 18 commits February 2, 2026 15:01
jira LE-3207
feature tools_hv
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
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 <shradhagupta@linux.microsoft.com>
	Reviewed-by: Naman Jain <namjain@linux.microsoft.com>
	Reviewed-by: Dexuan Cui <decui@microsoft.com>
Link: https://lore.kernel.org/r/1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com
	Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com>
(cherry picked from commit a9c0b33)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira LE-4478
commit-author Shiraz Saleem <shirazsaleem@microsoft.com>
commit baa640d

Add support for mana device level statistics.

Co-developed-by: Solom Tamawy <solom.tamawy@microsoft.com>
	Signed-off-by: Solom Tamawy <solom.tamawy@microsoft.com>
	Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com>
	Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com>
Link: https://patch.msgid.link/1749559717-3424-1-git-send-email-kotaranov@linux.microsoft.com
	Reviewed-by: Long Li <longli@microsoft.com>
	Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit baa640d)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4467
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
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 <shradhagupta@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
	Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
	Acked-by: Bjorn Helgaas <bhelgaas@google.com>
(cherry picked from commit 5da8a8b)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4467
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
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 <shradhagupta@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
	Acked-by: Bjorn Helgaas <bhelgaas@google.com>
(cherry picked from commit ad518f2)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4467
commit-author Yury Norov <yury.norov@gmail.com>
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 <yury.norov@gmail.com>
	Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
(cherry picked from commit 4607617)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4467
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
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 <shradhagupta@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Yury Norov [NVIDIA] <yury.norov@gmail.com>
(cherry picked from commit 845c62c)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4467
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
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 <shradhagupta@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
(cherry picked from commit 7553911)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4473
commit-author Erni Sri Satya Vennela <ernis@linux.microsoft.com>
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 <ernis@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
	Reviewed-by: Saurabh Singh Sengar <ssengar@linux.microsoft.com>
	Reviewed-by: Long Li <longli@microsoft.com>
Link: https://patch.msgid.link/1750144656-2021-3-git-send-email-ernis@linux.microsoft.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit 75cabb4)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4473
commit-author Erni Sri Satya Vennela <ernis@linux.microsoft.com>
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 <ernis@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
	Reviewed-by: Saurabh Singh Sengar <ssengar@linux.microsoft.com>
	Reviewed-by: Long Li <longli@microsoft.com>
Link: https://patch.msgid.link/1750144656-2021-4-git-send-email-ernis@linux.microsoft.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit a6d5edf)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4473
commit-author Erni Sri Satya Vennela <ernis@linux.microsoft.com>
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 <ernis@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Reviewed-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
	Reviewed-by: Saurabh Singh Sengar <ssengar@linux.microsoft.com>
	Reviewed-by: Dipayaan Roy <dipayanroy@linux.microsoft.com>
Link: https://patch.msgid.link/1750144656-2021-5-git-send-email-ernis@linux.microsoft.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit ca8ac48)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4473
commit-author Erni Sri Satya Vennela <ernis@linux.microsoft.com>
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 <ernis@linux.microsoft.com>
Fixes: 75cabb4 ("net: mana: Add support for net_shaper_ops")
	Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202506230625.bfUlqb8o-lkp@intel.com/
	Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/1750851355-8067-1-git-send-email-ernis@linux.microsoft.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 11cd020)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4527
commit-author Zhiyue Qiu <zhiyueqiu@microsoft.com>
commit 084f35b

Add packet and request port counters to mana_ib.

	Signed-off-by: Zhiyue Qiu <zhiyueqiu@microsoft.com>
	Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com>
Link: https://patch.msgid.link/1752143395-5324-1-git-send-email-kotaranov@linux.microsoft.com
	Reviewed-by: Long Li <longli@microsoft.com>
	Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit 084f35b)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4524
commit-author Konstantin Taranov <kotaranov@microsoft.com>
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 <kotaranov@microsoft.com>
Link: https://patch.msgid.link/1753779618-23629-1-git-send-email-kotaranov@linux.microsoft.com
	Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit 44d69d3)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
…nnel open.

jira LE-4494
commit-author Dipayaan Roy <dipayanroy@linux.microsoft.com>
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 <dipayanroy@linux.microsoft.com>
Link: https://patch.msgid.link/20250825115627.GA32189@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 9448ccd)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4497
commit-author Haiyang Zhang <haiyangz@microsoft.com>
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 <haiyangz@microsoft.com>
Link: https://patch.msgid.link/1757537841-5063-1-git-send-email-haiyangz@linux.microsoft.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit c4deabb)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira LE-4521
commit-author Shiraz Saleem <shirazsaleem@microsoft.com>
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 <shirazsaleem@microsoft.com>
	Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com>
Link: https://patch.msgid.link/1757923172-4475-1-git-send-email-kotaranov@linux.microsoft.com
	Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit 2bd7dd3)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
…/O issuing CPU

jira LE-4537
commit-author Long Li <longli@microsoft.com>
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 <rabdulfaizy@microsoft.com>
	Signed-off-by: Long Li <longli@microsoft.com>
Message-Id: <1759381530-7414-1-git-send-email-longli@linux.microsoft.com>
	Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit b69ffea)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
…es to improve memory efficiency.

jira LE-4490
commit-author Dipayaan Roy <dipayanroy@linux.microsoft.com>
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 <jacob.e.keller@intel.com>
	Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
	Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
	Signed-off-by: Dipayaan Roy <dipayanroy@linux.microsoft.com>
Link: https://patch.msgid.link/20250814140410.GA22089@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit 730ff06)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
@PlaidCat PlaidCat self-assigned this Feb 3, 2026
@PlaidCat PlaidCat requested a review from a team February 3, 2026 20:43
@bmastbergen
Copy link
Collaborator

@PlaidCat Changes look fine, but I expected to see a rolling-release-update log, not a rebuild log 🤔

@PlaidCat
Copy link
Collaborator Author

PlaidCat commented Feb 3, 2026

@PlaidCat Changes look fine, but I expected to see a rolling-release-update log, not a rebuild log 🤔

You're absolutely right! Let me correct that for you!

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.

4 participants