Re: [PATCH net-next v8 00/12] gve: AdminQ mode related refactors

From: Harshitha Ramamurthy

Date: Sun Sep 27 2026 - 22:47:34 EST


On Thu, Sep 24, 2026 at 11:53 AM Harshitha Ramamurthy
<hramamurthy@xxxxxxxxxx> wrote:
>
> This series is preparing the driver for the addition of a new control
> plane mode(MailboxQ) by commonizing and reusing as much code as possible.
> MailboxQ is a new control plane infrastructure which uses mailbox queues.
> This is a new control plane to communicate with the device when the driver
> is running on bare-metal instances as well as newer versions of the device.
>
> This series contains 2 main changes to the gve driver's existing control
> plane(AdminQ):
> 1) refactor some initialization/teardown path methods to make it work for
> both control planes.
> 2) add gve_ctrl_ops structure to the driver for various control plane
> operations
>
> The refactors are mainly around the init, reset and recover paths so that
> functionalities could be moved into the control ops like 'set_num_queues',
> 'set_num_ntfy_blks' etc.
>
> This patch series only sets the control ops for AdminQ mode. This is
> intended as a preparation for adding MailboxQ mode in upcoming series
> which will add the new control plane infrastructure and then introduce
> the corresponding control ops for MailboxQ mode.
>
> The entire list of future patches can be found here for reference:
> https://github.com/hramamurthy12/linux/commits/gve-mailbox-queues/
>
> Changes in v8:
> - Patch 6(Sashiko):
> - call gve_queues_stop() directly in gve_queues_start() to handle XDP
> info unregistration
> - drop gve_queues_mem_remove() from gve_queues_start() and leave it to
> the caller; this moves a few function definitions around to avoid
> forward declarations
> - revert the gve_mgmnt_intr() behavior change from v7
> - handle the TOCTOU when checking for a pending reset
> - record all configurations in priv before sending an AQ command that
> can result in a reset
> - update the commit description regarding teardown-related resets
> - Patch 8(Sashiko):
> - gate mgmt IRQ and notify block teardown on different conditions
> - move gve_teardown_notify_blocks() from gve_reset_device() to
> gve_teardown_device(), and tear down notify blocks as part of the
> device reset
> - don't set block->irq when tearing down notify blocks; instead guard
> the disable_irq() call in gve_remove_napi() on whether the IRQ was
> requested
> - v7: https://lore.kernel.org/netdev/20260916165533.2187434-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v7:
> - All changes are in patch 6(Sashiko):
> - Return IRQ_HANDLED instead of IRQ_NONE in gve_mgmnt_intr()
> - disable service task instead of stats report task for gve_probe() error
> - cancel stats report in gve_free_stats_report()
> - extract gve_teardown_control_plane_resouces() and gve_adminq_free() into
> new gve_reset_device() to ensure the device reset is triggered before
> stopping queues
> - don't call gve_queues_stop() in the gve_close() error path since the
> gve_reset() takes care of that.
> - v6: https://lore.kernel.org/netdev/20260909191136.3811892-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v6:
> - update commit message to be more consistent with code (patch 1,9 Sashiko)
> - call out MTU validation change (patch 1, Sashiko)
> - A few other Sashiko related fixes (error propagation in patch 2, drop double
> logging in patch 5, drop unintentional type conversion in patch 11)
> - v5: https://lore.kernel.org/netdev/20260903215606.31633-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v5:
> - This series contains 12 patches since 3 patches from v4 were applied
> - Picked up Przemek Kitszel's Reviewed-by tag
> - Honor device provided default no. of Qs and max rx buffer size correctly (patch 1, Sashiko)
> - drop unnecessary header files and __maybe_unused tag (patch 4, Sashiko)
> - fix workqueue disable count, destroy rings before stopping Qs, stop queues in error path
> in gve_close, preserve ordering of gve_turndown->gve_destroy_rings->gve_queues_stop
> during close and reset (patch 6, Sashiko)
> - drop double logging in all paths for queue creation/destruction (patch 11, Sashiko)
> - v4: https://lore.kernel.org/netdev/20260814021406.3044324-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v4:
> - Reduce code churn by placing new functions directly in gve_adminq.c, introducing final tab spacing
> and using local variable (Przemek Kitszel)
> - Fix kdoc formatting and drop spurious management interrupt(patch 9)
> - Propagate release_db_resources naming change (patch 12)
> - Remove double logging in destroy queues path (patch 14)
> - v3: https://lore.kernel.org/netdev/20260803184630.3813311-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v3:
> - Fix driver compatibility verification in the reset and recovery paths (patches 2, 8).
> - Mark gve_adminq_get_device_properties() with __maybe_unused ahead of its usage (patch 7).
> - Refine error handling and resource cleanup in reset, probe, and queue creation paths (patches 8, 9, 11, 14).
> - Keep IRQ doorbell allocation/release in control plane resource helpers (patch 12).
> - Minor fixes: fix TOCTOU issue for link speed, correct kdoc comments, and remove redundant teardown calls (patches 4, 11, 15).
> - v2: https://lore.kernel.org/netdev/20260602235900.3050782-1-hramamurthy@xxxxxxxxxx/
>
> Changes in v2:
> - Rebased against latest net-next to resolve apply failure for patch 5
> - Fixed a few typos in commit messages of patch 9 and 14
> - Fixed a kdoc warning in patch 9
> - v1: https://lore.kernel.org/netdev/20260601175437.3767283-1-hramamurthy@xxxxxxxxxx/
>
> Harshitha Ramamurthy (6):
> gve: add struct gve_device_info to hold device properties
> gve: introduce control plane operations structure
> gve: introduce ctrl ops to set vectors and Qs
> gve: introduce gve_adminq_get_device_properties()
> gve: refactor gve_init_priv for reset path
> gve: add ctrl ops for queue operations
>
> Joshua Washington (6):
> gve: simplify reset logic
> gve: add gve_ctrl_ops for gve initialization/teardown sequences
> gve: split up notify block allocation and setup paths
> gve: introduce new methods to handle IRQ doorbells
> gve: setup and teardown management interrupts
> gve: add link status/speed ctrl ops

There are a few high/medium issues that Sashiko has spotted for patch
6. Will fix in v9.

>
> drivers/net/ethernet/google/gve/gve.h | 87 +-
> drivers/net/ethernet/google/gve/gve_adminq.c | 376 ++++++--
> drivers/net/ethernet/google/gve/gve_adminq.h | 30 +-
> drivers/net/ethernet/google/gve/gve_ethtool.c | 5 +-
> drivers/net/ethernet/google/gve/gve_flow_rule.c | 15 +-
> drivers/net/ethernet/google/gve/gve_main.c | 1067 ++++++++++++-----------
> drivers/net/ethernet/google/gve/gve_utils.c | 4 +-
> 7 files changed, 972 insertions(+), 612 deletions(-)
>
> --
> 2.56.0.rc1.310.g51773c2048-goog
>