From nobody Sat Feb 7 12:19:29 2026 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08384FBF0 for ; Tue, 27 Jan 2026 01:02:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769475739; cv=none; b=EOEJGUQCnfre/vih/bup9agCKtmkezuHlIiv9GwDJh4hh39idbIXegXqeq0odwxAQDfPtKNxxc98cMd3j6e5BnLM5OF50Qj/1z5D5fN54Zv5KkfZnxkslzvhChCNVl9XRAvLVWRT5WsfEu7U7K1wKr3VAuY/AVwM1ODW/gzLoHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769475739; c=relaxed/simple; bh=zdJetp1O1ZvORiNn20moSdrXX3DYESBa1u9PB56wF/g=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=ZoSqOLkKnkZaDsWxklV0iLEn86Jkxbyxu4Stj3WKWPuMHEQ6w6a9jtH1+gXqlySbAq65ZfUs7g+NiqyUm6rv2HkYbk//e0qQxKJGw59MJU+M48mHe2JI5KhCEt/Ktdi8kHEr4f3z33RrReNW7DssweWTg4Jzhd0YgIQayl9Nsgg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=wE4SUt2M; arc=none smtp.client-ip=209.85.216.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--hramamurthy.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="wE4SUt2M" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-352e214cce9so3675697a91.1 for ; Mon, 26 Jan 2026 17:02:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1769475737; x=1770080537; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=4NgOfh1zEVM6ALsnvG7+EC5XrWm0zt0eNhDfo1U5SRc=; b=wE4SUt2M1jZnWGP5HdQKkElDQIrrIROm3081rBvNg+Fo7Un1f7r4oGEFg+WWllCbkP TXs0qsV0MnezNzs8tX2J3HWmBmE03x+kuGQgaFI30yIve2AoZniCc5KsAqA2V2sO1wT7 +3HtkThw7xNu3SYbQyQlV5/jJlRhx1zGZnvdkWa4lnt/eypjfHq2HEPEeQZC8tV8Dcip Pmuq5q5Igd7sbtRs/XmKFzVjXSrPcBdXW6/7gbUSDtIpEH0QMqRD6F0t5NuB1+v2zlFu jgZnL8X89LvEunTM5FBMdCw0L/axmGznuFEoTm9ixhMmMriMbiHp/p8uPA4ne6HOaobk 0ykQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769475737; x=1770080537; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=4NgOfh1zEVM6ALsnvG7+EC5XrWm0zt0eNhDfo1U5SRc=; b=nW3eNYFN8hm3apc6BruoVeWT+hKpuQc+arHIJ+pUmZ7olvczFEj1i+m29z/LSpbXFv +IFnPqIMJyj4+nENrgfKbg3wj1lNgVTXu+AOCvMFg0+b/Pj89wThy8cJCgvAMwJSMj3s U5RBS3uf9SAofGsbFypj5EsXfB+xUlR5nYPNDpir8uY3yfSpCTjrXIkK8wBY+XerMKZ1 p6BhiDIdBt8RtCI5n1/P6+mXCqHSwOyNijj9JxI7vpNfVBm9xRKrCo7n6ZvYqJg9IiEh 3aXDEaYEmMsep7pF9DAAnYpUMvU+uN5iQrFejvXdL5oEzAX7flx6X5pI89pQh9GADqFE URlg== X-Forwarded-Encrypted: i=1; AJvYcCUYL1tSgblRQjc2DjY+ArOUzExuqVNbB9mUtwwDse7m4VEr5aOLhqfjkNmGjG5CpZpGMorfiHzzPId+9Wg=@vger.kernel.org X-Gm-Message-State: AOJu0YzT+jb8X8jv3bjrgL1A51DAaaVtrzCBulhws+YNb6RcyDtGQY5j Yj78KS3/bXqZhG67rZ/Vi+9PfGDUvXQY6OKXaarQl3iZR++MQ7X6E1upvABNdaVKUoSCW+j5L69 kPpKxLBxaZue3qyp00azVTHRDWw== X-Received: from pjbjx12.prod.google.com ([2002:a17:90b:46cc:b0:34f:8ef8:5834]) (user=hramamurthy job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2d83:b0:34e:5aa2:cf68 with SMTP id 98e67ed59e1d1-353fed8a891mr81138a91.30.1769475737301; Mon, 26 Jan 2026 17:02:17 -0800 (PST) Date: Tue, 27 Jan 2026 01:02:10 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.52.0.457.g6b5491de43-goog Message-ID: <20260127010210.969823-1-hramamurthy@google.com> Subject: [PATCH net] gve: fix probe failure if clock read fails From: Harshitha Ramamurthy To: netdev@vger.kernel.org Cc: joshwash@google.com, hramamurthy@google.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, richardcochran@gmail.com, willemb@google.com, pkaligineedi@google.com, ziweixiao@google.com, jordanrhee@google.com, nktgrg@google.com, thostet@google.com, horms@kernel.org, yyd@google.com, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Shachar Raindel Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jordan Rhee If timestamping is supported, GVE reads the clock during probe, which can fail for various reasons. Previously, this failure would abort the driver probe, rendering the device unusable. This behavior has been observed on production GCP VMs, causing driver initialization to fail completely. This patch allows the driver to degrade gracefully. If gve_init_clock() fails, it logs a warning and continues loading the driver without PTP support. Cc: stable@vger.kernel.org Fixes: a479a27f4da4 ("gve: Move gve_init_clock to after AQ CONFIGURE_DEVICE= _RESOURCES call") Signed-off-by: Jordan Rhee Reviewed-by: Shachar Raindel Signed-off-by: Harshitha Ramamurthy --- drivers/net/ethernet/google/gve/gve.h | 5 +++++ drivers/net/ethernet/google/gve/gve_ethtool.c | 2 +- drivers/net/ethernet/google/gve/gve_main.c | 12 +++++++----- drivers/net/ethernet/google/gve/gve_ptp.c | 8 -------- drivers/net/ethernet/google/gve/gve_rx_dqo.c | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/g= oogle/gve/gve.h index 970d5ca8..cbdf3a84 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -1206,6 +1206,11 @@ static inline bool gve_supports_xdp_xmit(struct gve_= priv *priv) } } =20 +static inline bool gve_is_clock_enabled(struct gve_priv *priv) +{ + return priv->nic_ts_report; +} + /* gqi napi handler defined in gve_main.c */ int gve_napi_poll(struct napi_struct *napi, int budget); =20 diff --git a/drivers/net/ethernet/google/gve/gve_ethtool.c b/drivers/net/et= hernet/google/gve/gve_ethtool.c index f7864ae7..137dd728 100644 --- a/drivers/net/ethernet/google/gve/gve_ethtool.c +++ b/drivers/net/ethernet/google/gve/gve_ethtool.c @@ -952,7 +952,7 @@ static int gve_get_ts_info(struct net_device *netdev, =20 ethtool_op_get_ts_info(netdev, info); =20 - if (priv->nic_timestamp_supported) { + if (gve_is_clock_enabled(priv)) { info->so_timestamping |=3D SOF_TIMESTAMPING_RX_HARDWARE | SOF_TIMESTAMPING_RAW_HARDWARE; =20 diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 96adbbe1..dbc84de3 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -680,10 +680,12 @@ static int gve_setup_device_resources(struct gve_priv= *priv) } } =20 - err =3D gve_init_clock(priv); - if (err) { - dev_err(&priv->pdev->dev, "Failed to init clock"); - goto abort_with_ptype_lut; + if (priv->nic_timestamp_supported) { + err =3D gve_init_clock(priv); + if (err) { + dev_warn(&priv->pdev->dev, "Failed to init clock, continuing without PT= P support"); + err =3D 0; + } } =20 err =3D gve_init_rss_config(priv, priv->rx_cfg.num_queues); @@ -2183,7 +2185,7 @@ static int gve_set_ts_config(struct net_device *dev, } =20 if (kernel_config->rx_filter !=3D HWTSTAMP_FILTER_NONE) { - if (!priv->nic_ts_report) { + if (!gve_is_clock_enabled(priv)) { NL_SET_ERR_MSG_MOD(extack, "RX timestamping is not supported"); kernel_config->rx_filter =3D HWTSTAMP_FILTER_NONE; diff --git a/drivers/net/ethernet/google/gve/gve_ptp.c b/drivers/net/ethern= et/google/gve/gve_ptp.c index 073677d8..de42fc2c 100644 --- a/drivers/net/ethernet/google/gve/gve_ptp.c +++ b/drivers/net/ethernet/google/gve/gve_ptp.c @@ -70,11 +70,6 @@ static int gve_ptp_init(struct gve_priv *priv) struct gve_ptp *ptp; int err; =20 - if (!priv->nic_timestamp_supported) { - dev_dbg(&priv->pdev->dev, "Device does not support PTP\n"); - return -EOPNOTSUPP; - } - priv->ptp =3D kzalloc(sizeof(*priv->ptp), GFP_KERNEL); if (!priv->ptp) return -ENOMEM; @@ -116,9 +111,6 @@ int gve_init_clock(struct gve_priv *priv) { int err; =20 - if (!priv->nic_timestamp_supported) - return 0; - err =3D gve_ptp_init(priv); if (err) return err; diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/eth= ernet/google/gve/gve_rx_dqo.c index f1bd8f5d..63a96106 100644 --- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c +++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c @@ -484,7 +484,7 @@ int gve_xdp_rx_timestamp(const struct xdp_md *_ctx, u64= *timestamp) { const struct gve_xdp_buff *ctx =3D (void *)_ctx; =20 - if (!ctx->gve->nic_ts_report) + if (!gve_is_clock_enabled(ctx->gve)) return -ENODATA; =20 if (!(ctx->compl_desc->ts_sub_nsecs_low & GVE_DQO_RX_HWTSTAMP_VALID)) --=20 2.52.0.457.g6b5491de43-goog