Skip to content

[rlc-10/6.12.0-211.39.1.el10_2] Multiple patches tested (4 commits) - #1497

Open
ciq-kernel-automation[bot] wants to merge 4 commits into
rlc-10/6.12.0-211.39.1.el10_2from
{shreeya_gce}_rlc-10/6.12.0-211.39.1.el10_2
Open

[rlc-10/6.12.0-211.39.1.el10_2] Multiple patches tested (4 commits)#1497
ciq-kernel-automation[bot] wants to merge 4 commits into
rlc-10/6.12.0-211.39.1.el10_2from
{shreeya_gce}_rlc-10/6.12.0-211.39.1.el10_2

Conversation

@ciq-kernel-automation

@ciq-kernel-automation ciq-kernel-automation Bot commented Jul 31, 2026

Copy link
Copy Markdown

Summary

This PR has been automatically created after successful completion of all CI stages.

Commit Message(s)

gve: move DQO rx buffer management related code to a new file

jira KERNEL-1217
commit-author Harshitha Ramamurthy <hramamurthy@google.com>
commit 93c68f1275f9e21ccfed9ee292aedb11c3f6241b
gve: Update QPL page registration logic

jira KERNEL-1217
commit-author Matt Olson <maolson@google.com>
commit 07993df560917357610e0625a9a2e7531c3211fc
upstream-diff Conflicts from the gve_queue_config split and page_pool/
  netmem/XDP refactors not in RLC 10. Kept RLC 10 struct names (qcfg/
  qcfg_tx, no num_xdp_rings) and datapath (no page_pool/xsk); the
  gve_update_num_qpl_pages() body is applied verbatim except
  rx_alloc_cfg->qcfg_rx->num_queues -> ->qcfg->num_queues. buffer-mgmt
  and rx_dqo num_buf_states use cfg->pages_per_qpl / priv->rx_pages_per_qpl.
gve: Enable reading max ring size from the device in DQO-QPL mode

jira KERNEL-1217
commit-author Matt Olson <maolson@google.com>
commit a2f19184014f309165d2d4cfb41088b75c1121a4
gve: fix XDP allocation path in edge cases

jira KERNEL-1217
commit-author Joshua Washington <joshwash@google.com>
commit de63ac44a527b6c626ba7adb54873d4d6bd8de23
upstream-diff Kept RLC 10's cfg->pages_per_qpl assignment in
  gve_tx_get_curr_alloc_cfg alongside this commit's num_rings change
  (which now derives num_xdp_queues locally rather than from the
  possibly-stale priv->num_xdp_queues). No other deviation.

Testing

[spatel_ciq_com@kernel-gve-test-1 ~]$ uname -r 
6.12.0-shreeya_rlc-10_gve_ring_size-a4cc0e62a685+
[spatel_ciq_com@kernel-gve-test-1 ~]$ sudo ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:			4096
RX Mini:		n/a
RX Jumbo:		n/a
TX:			4096
TX push buff len:	n/a
HDS thresh:		n/a
Current hardware settings:
RX:			1024
RX Mini:		n/a
RX Jumbo:		n/a
TX:			1024
RX Buf Len:		n/a
CQE Size:		n/a
TX Push:		off
RX Push:		off
TX push buff len:	n/a
TCP data split:		n/a
HDS thresh:		n/a
[spatel_ciq_com@kernel-gve-test-1 ~]$ sudo ethtool -G eth0 rx 4096 tx 4096
[spatel_ciq_com@kernel-gve-test-1 ~]$ sudo ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:			4096
RX Mini:		n/a
RX Jumbo:		n/a
TX:			4096
TX push buff len:	n/a
HDS thresh:		n/a
Current hardware settings:
RX:			4096
RX Mini:		n/a
RX Jumbo:		n/a
TX:			4096
RX Buf Len:		n/a
CQE Size:		n/a
TX Push:		off
RX Push:		off
TX push buff len:	n/a
TCP data split:		n/a
HDS thresh:		n/a
[spatel_ciq_com@kernel-gve-test-1 ~]$ 

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 39m 39s 40m 30s
aarch64 24m 35s 25m 10s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 428 64 rlc-10/6.12.0-211.39.1.el10_2 ⚠️ No baseline available
aarch64 377 58 rlc-10/6.12.0-211.39.1.el10_2 ⚠️ No baseline available

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1479 81 rlc-10/6.12.0-211.39.1.el10_2 ⚠️ No baseline available
aarch64 1451 81 rlc-10/6.12.0-211.39.1.el10_2 ⚠️ No baseline available

🤖 This PR was automatically generated by GitHub Actions
Run ID: 30629866776

jira KERNEL-1217
commit-author Harshitha Ramamurthy <hramamurthy@google.com>
commit 93c68f1

In preparation for the upcoming page pool adoption for DQO
raw addressing mode, move RX buffer management code to a new
file. In the follow on patches, page pool code will be added
to this file.

No functional change, just movement of code.

	Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
	Reviewed-by: Shailend Chand <shailend@google.com>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
	Signed-off-by: Harshitha Ramamurthy <hramamurthy@google.com>
	Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20241014202108.1051963-2-pkaligineedi@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 93c68f1)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
@ciq-kernel-automation ciq-kernel-automation Bot added the created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI) label Jul 31, 2026
@shreeya-patel98
shreeya-patel98 requested a review from a team July 31, 2026 16:55
@PlaidCat

PlaidCat commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

This commit isn't in mainline yet, which "-next" does it belong

gve: fix XDP allocation path in edge cases
commit-author Joshua Washington <joshwash@google.com>
commit de63ac44a527b6c626ba7adb54873d4d6bd8de23

shreeya-patel98 and others added 3 commits August 6, 2026 11:13
jira KERNEL-1217
commit-author Matt Olson <maolson@google.com>
commit 07993df
upstream-diff Conflicts from the gve_queue_config split and page_pool/
  netmem/XDP refactors not in RLC 10. Kept RLC 10 struct names (qcfg/
  qcfg_tx) and datapath (no page_pool/xsk); gve_update_num_qpl_pages()
  applied verbatim except ->qcfg_rx->num_queues -> ->qcfg->num_queues.
  CIQ review fixes folded in: this commit's ring-proportional sizing
  (replacing the base's fixed tx_pages_per_qpl) is what routes a large
  count into two s16 free lists, so clamp num_tx_qpl_bufs and the
  DQO-QPL num_buf_states arm to S16_MAX (min_t). The overflow sites match
  upstream, which is unclamped; upstream-report candidates.

For DQO, change QPL page registration logic to be more flexible to honor
the "max_registered_pages" parameter from the gVNIC device.

Previously the number of RX pages per QPL was hardcoded to twice the
ring size, and the number of TX pages per QPL was dictated by the device
in the DQO-QPL device option. Now [in DQO-QPL mode], the driver will
ignore the "tx_pages_per_qpl" parameter indicated in the DQO-QPL device
option and instead allocate up to (tx_queue_length / 2) pages per TX QPL
and up to (rx_queue_length * 2) pages per RX QPL while keeping the total
number of pages under the "max_registered_pages".

Merge DQO and GQI QPL page calculation logic into a unified
gve_update_num_qpl_pages function. Add rx_pages_per_qpl to the priv
struct for consumption by both DQO and GQI.

	Signed-off-by: Matt Olson <maolson@google.com>
	Signed-off-by: Max Yuan <maxyuan@google.com>
	Reviewed-by: Jordan Rhee <jordanrhee@google.com>
	Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
	Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
	Signed-off-by: Joshua Washington <joshwash@google.com>
	Link: https://patch.msgid.link/20260225182342.1049816-2-joshwash@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 07993df)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira KERNEL-1217
commit-author Matt Olson <maolson@google.com>
commit a2f1918

The gVNIC device indicates a device option (MODIFY_RING) to the driver,
which presents a range of ring sizes from which the user is allowed to
select. But in DQO-QPL queue format, the driver ignores the "max" of
this range and instead allows the user to configure the ring size in the
range [min, default]. This was done because increasing the ring size
could result in the number of registered pages being higher than the max
allowed by the device.

In order to support large ring sizes, stop ignoring the "max" of the
range presented in the MODIFY_RING option.

	Signed-off-by: Matt Olson <maolson@google.com>
	Signed-off-by: Max Yuan <maxyuan@google.com>
	Reviewed-by: Jordan Rhee <jordanrhee@google.com>
	Reviewed-by: Harshitha Ramamurthy <hramamurthy@google.com>
	Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
	Signed-off-by: Joshua Washington <joshwash@google.com>
Link: https://patch.msgid.link/20260225182342.1049816-3-joshwash@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit a2f1918)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira KERNEL-1217
commit-author Joshua Washington <joshwash@google.com>
commit de63ac4
upstream-diff Kept RLC 10's cfg->pages_per_qpl assignment in
  gve_tx_get_curr_alloc_cfg alongside this commit's num_rings change
  (which derives num_xdp_queues locally rather than from the possibly-
  stale priv->num_xdp_queues). No other deviation.

This patch fixes a number of consistency issues in the queue allocation
path related to XDP.

As it stands, the number of allocated XDP queues changes in three
different scenarios.
1) Adding an XDP program while the interface is up via
   gve_add_xdp_queues
2) Removing an XDP program while the interface is up via
   gve_remove_xdp_queues
3) After queues have been allocated and the old queue memory has been
   removed in gve_queues_start.

However, the requirement for the interface to be up for
gve_(add|remove)_xdp_queues to be called, in conjunction with the fact
that the number of queues stored in priv isn't updated until _after_ XDP
queues have been allocated in the normal queue allocation path means
that if an XDP program is added while the interface is down, XDP queues
won't be added until the _second_ if_up, not the first.

Given the expectation that the number of XDP queues is equal to the
number of RX queues, scenario (3) has another problematic implication.
When changing the number of queues while an XDP program is loaded, the
number of XDP queues must be updated as well, as there is logic in the
driver (gve_xdp_tx_queue_id()) which relies on every RX queue having a
corresponding XDP TX queue. However, the number of XDP queues stored in
priv would not be updated until _after_ a close/open leading to a
mismatch in the number of XDP queues reported vs the number of XDP
queues which actually exist after the queue count update completes.

This patch remedies these issues by doing the following:
1) The allocation config getter function is set up to retrieve the
   _expected_ number of XDP queues to allocate instead of relying
   on the value stored in `priv` which is only updated once the queues
   have been allocated.
2) When adjusting queues, XDP queues are adjusted to match the number of
   RX queues when XDP is enabled. This only works in the case when
   queues are live, so part (1) of the fix must still be available in
   the case that queues are adjusted when there is an XDP program and
   the interface is down.

Fixes: 5f08cd3 ("gve: Alloc before freeing when adjusting queues")
Cc: stable@vger.kernel.org
	Signed-off-by: Joshua Washington <joshwash@google.com>
	Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
	Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
	Reviewed-by: Shailend Chand <shailend@google.com>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
	Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit de63ac4)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
@shreeya-patel98
shreeya-patel98 force-pushed the {shreeya_gce}_rlc-10/6.12.0-211.39.1.el10_2 branch from d679eb4 to f69f71c Compare August 6, 2026 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI)

Development

Successfully merging this pull request may close these issues.

3 participants