From: netdev-bot+sashiko@kernel.org
To: hramamurthy@google.com
Cc: netdev@vger.kernel.org, joshwash@google.com,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, ast@kernel.org,
daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com,
sdf@fomichev.me, jordanrhee@google.com, willemb@google.com,
nktgrg@google.com, maolson@google.com, thostet@google.com,
jacob.e.keller@intel.com, debarghyak@google.com, kees@kernel.org,
bpf@vger.kernel.org, linux-kernel@vger.kernel.org,
przemyslaw.kitszel@intel.com
Subject: Re: [PATCH net-next v5 02/12] gve: introduce control plane operations structure
Date: Mon, 07 Sep 2026 00:03:54 +0000 [thread overview]
Message-ID: <178873943498.219967.6969502968707920039@kernel.org> (raw)
In-Reply-To: <20260903215606.31633-3-hramamurthy@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 0 · Low: 1
- [Low] New indirect control-plane op return value is discarded in
gve_probe().
--
gve: introduce control plane operations structure
This adds a gve_ctrl_ops structure to abstract control plane operations
between the existing Adminq ABI and an upcoming Mailbox ABI, and moves the
doorbell BAR map/unmap into the first two ops. Only the Adminq ops are
populated by this patch, and gve_probe()/gve_remove() now call through
priv->ctrl_ops.
> diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/google/gve/gve.h
> index 021adb9108dff..56148ea3cfbf5 100644
> --- a/drivers/net/ethernet/google/gve/gve.h
> +++ b/drivers/net/ethernet/google/gve/gve.h
> @@ -825,6 +825,16 @@ struct gve_device_info {
> bool cache_rss_config;
> };
>
> +/**
> + * struct gve_ctrl_ops - Control plane operations structure
> + * @map_db_bar: Maps the doorbell BAR for the device and store in @priv.
> + * @unmap_db_bar: Unmaps the doorbell BAR previously mapped by @map_db_bar.
> + */
> +struct gve_ctrl_ops {
> + int (*map_db_bar)(struct gve_priv *priv);
> + void (*unmap_db_bar)(struct gve_priv *priv);
> +};
[ ... ]
> diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c
> index 512349c5517f4..08d8e49d563eb 100644
> --- a/drivers/net/ethernet/google/gve/gve_adminq.c
> +++ b/drivers/net/ethernet/google/gve/gve_adminq.c
> @@ -1637,3 +1637,24 @@ void gve_set_num_queues(struct gve_priv *priv)
> +int gve_adminq_map_db_bar(struct gve_priv *priv)
> +{
> + struct pci_dev *pdev = priv->pdev;
> + void __iomem *db_bar;
> +
> + db_bar = pci_iomap(pdev, GVE_DOORBELL_BAR, 0);
> + if (!db_bar) {
> + dev_err(&pdev->dev, "Failed to map doorbell bar!\n");
> + return -ENOMEM;
> + }
> + priv->db_bar2 = db_bar;
> + return 0;
> +}
[ ... ]
> diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c
> index d3882de584e36..93b714e1d1307 100644
> --- a/drivers/net/ethernet/google/gve/gve_main.c
> +++ b/drivers/net/ethernet/google/gve/gve_main.c
[ ... ]
> @@ -2937,19 +2934,27 @@ static int gve_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> priv->rx_cfg.packet_buffer_size = GVE_DEFAULT_RX_BUFFER_SIZE;
> priv->max_rx_buffer_size = GVE_DEFAULT_RX_BUFFER_SIZE;
>
> + /* Set adminq ctrl ops */
> + priv->ctrl_ops = &gve_adminq_ops;
> +
> + err = priv->ctrl_ops->map_db_bar(priv);
> + if (err) {
> + err = -ENOMEM;
^^^^
[Severity: Low]
Is the err = -ENOMEM; assignment here intentional? The new op is declared
as returning an int errno in struct gve_ctrl_ops, and
gve_adminq_map_db_bar() already returns 0 or -ENOMEM and prints its own
dev_err(), so the captured value is overwritten before it is ever used.
With only the Adminq implementation present the resulting errno happens to
be identical, so there is no change in behaviour today. Once the Mailbox
op mentioned in the commit message is added, would an -EINVAL, -EIO,
-ENODEV or -EPROBE_DEFER from map_db_bar() be reported to the PCI core as
-ENOMEM instead? -EPROBE_DEFER in particular would turn a deferred probe
into a hard failure.
The other failure sites in gve_probe(), for example gve_init_priv() and
register_netdev(), propagate err unchanged, so would just dropping the
err = -ENOMEM; line match the surrounding convention?
> + goto abort_with_netdev;
> + }
> +
> gve_set_probe_in_progress(priv);
> priv->gve_wq = alloc_ordered_workqueue("gve", 0);
> if (!priv->gve_wq) {
> dev_err(&pdev->dev, "Could not allocate workqueue");
> err = -ENOMEM;
> - goto abort_with_netdev;
> + goto abort_with_unmap_db_bar;
> }
[ ... ]
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260903215606.31633-1-hramamurthy%40google.com
next prev parent reply other threads:[~2026-09-07 0:03 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 21:55 [PATCH net-next v5 00/12] gve: AdminQ mode related refactors Harshitha Ramamurthy
2026-09-03 21:55 ` [PATCH net-next v5 01/12] gve: add struct gve_device_info to hold device properties Harshitha Ramamurthy
2026-09-07 0:03 ` netdev-bot+sashiko
2026-09-03 21:55 ` [PATCH net-next v5 02/12] gve: introduce control plane operations structure Harshitha Ramamurthy
2026-09-07 0:03 ` netdev-bot+sashiko [this message]
2026-09-03 21:55 ` [PATCH net-next v5 03/12] gve: introduce ctrl ops to set vectors and Qs Harshitha Ramamurthy
2026-09-03 21:55 ` [PATCH net-next v5 04/12] gve: introduce gve_adminq_get_device_properties() Harshitha Ramamurthy
2026-09-03 21:55 ` [PATCH net-next v5 05/12] gve: refactor gve_init_priv for reset path Harshitha Ramamurthy
2026-09-07 0:03 ` netdev-bot+sashiko
2026-09-03 21:56 ` [PATCH net-next v5 06/12] gve: simplify reset logic Harshitha Ramamurthy
2026-09-07 0:03 ` netdev-bot+sashiko
2026-09-03 21:56 ` [PATCH net-next v5 07/12] gve: add gve_ctrl_ops for gve initialization/teardown sequences Harshitha Ramamurthy
2026-09-03 21:56 ` [PATCH net-next v5 08/12] gve: split up notify block allocation and setup paths Harshitha Ramamurthy
2026-09-07 0:04 ` netdev-bot+sashiko
2026-09-03 21:56 ` [PATCH net-next v5 09/12] gve: introduce new methods to handle IRQ doorbells Harshitha Ramamurthy
2026-09-07 0:04 ` netdev-bot+sashiko
2026-09-03 21:56 ` [PATCH net-next v5 10/12] gve: setup and teardown management interrupts Harshitha Ramamurthy
2026-09-03 21:56 ` [PATCH net-next v5 11/12] gve: add ctrl ops to for queue operations Harshitha Ramamurthy
2026-09-07 0:04 ` netdev-bot+sashiko
2026-09-03 21:56 ` [PATCH net-next v5 12/12] gve: add link status/speed ctrl ops Harshitha Ramamurthy
2026-09-07 0:04 ` netdev-bot+sashiko
2026-09-08 10:09 ` [PATCH net-next v5 00/12] gve: AdminQ mode related refactors Paolo Abeni
2026-09-08 15:12 ` Harshitha Ramamurthy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178873943498.219967.6969502968707920039@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=debarghyak@google.com \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=hramamurthy@google.com \
--cc=jacob.e.keller@intel.com \
--cc=john.fastabend@gmail.com \
--cc=jordanrhee@google.com \
--cc=joshwash@google.com \
--cc=kees@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maolson@google.com \
--cc=netdev@vger.kernel.org \
--cc=nktgrg@google.com \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=sdf@fomichev.me \
--cc=thostet@google.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox