[{"id":3683384,"web_url":"http://patchwork.ozlabs.org/comment/3683384/","msgid":"<afCU-3Xmole6v4X4@FV6GYCPJ69>","list_archive_url":null,"date":"2026-04-28T11:10:01","subject":"Re: [Intel-wired-lan] [PATCH net-next 1/2] devlink,\n mlx5: add init/fini ops for shared devlink","submitter":{"id":15321,"url":"http://patchwork.ozlabs.org/api/people/15321/","name":"Jiri Pirko","email":"jiri@resnulli.us"},"content":"Tue, Apr 28, 2026 at 11:09:11AM +0200, przemyslaw.kitszel@intel.com wrote:\n>Add .shd_init() and .shd_fini() ops, that will be called for the first\n>devlink_shd_get() (to initialize driver' priv data) and on the last\n>devlink_shd_put() (to allow for the cleanup). Both ops are optional.\n>\n>.shd_init() could return an error, which will stop creation of shd\n>instance. The initializer also gets an additional, optional param,\n>that driver could use for any needs.\n>\n>If any of the callbacks will need to get devlink instance, it could\n>be accessed by shd_priv_to_devlink().\n>\n>Both callbacks are called with devl_lock held and devlink registered.\n>\n>Next commit will make use of the callbacks, another one will make use also\n>of the non-null additional param (outside of this series).\n>\n>Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\n>Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>\n>---\n>first discussed at:\n>https://lore.kernel.org/netdev/20260325063143.261806-3-przemyslaw.kitszel@intel.com\n>\n>Sashiko suggested to convert devlink_shd_create() to return ERR_PTR(),\n>and propagate that up to the driver. It think it will just make code more\n>verbose for not much benefit. And drivers could just store err if they\n>want in the passed @init_param.\n>\n>---\n> include/net/devlink.h                         | 26 +++++++++++++\n> .../ethernet/mellanox/mlx5/core/sh_devlink.c  |  2 +-\n> net/devlink/sh_dev.c                          | 39 ++++++++++++++++++-\n> 3 files changed, 64 insertions(+), 3 deletions(-)\n>\n>diff --git a/include/net/devlink.h b/include/net/devlink.h\n>index bcd31de1f890..5d3a1337bfa1 100644\n>--- a/include/net/devlink.h\n>+++ b/include/net/devlink.h\n>@@ -1586,6 +1586,30 @@ struct devlink_ops {\n> \t\t\t\t    struct devlink_rate *parent,\n> \t\t\t\t    void *priv_child, void *priv_parent,\n> \t\t\t\t    struct netlink_ext_ack *extack);\n>+\n>+\t/**\n>+\t * shd_init: Shared devlink instance initializer\n>+\t * @priv: shd_devlink' priv\n>+\t * @init_param: additional param to pass to driver callback\n>+\t *\n>+\t * Called once when the shared instance is first created (by the first\n>+\t * devlink_shd_get() call).\n>+\t * Should initialize the driver's private data embedded in the shared\n>+\t * devlink. May be NULL.\n>+\t *\n>+\t * Return: 0 on success, negative to prevent shared instance usage.\n>+\t */\n>+\tint (*shd_init)(void *priv, void *init_param);\n\n1. \"param\" has specific meaning in devlink context\n2. You don't use the arg in driver\n\nCare to drop it?\n\nOtherwise, this looks fine to me. Thanks! (small nitpick below)\n\n\n>+\t/**\n>+\t * shd_fini: Shared devlink instance finalizer\n>+\t * @priv: shd_devlink' priv\n>+\t *\n>+\t * Called once when the last reference is dropped and the shared\n>+\t * instance is destroyed. Should clean up the driver's private data.\n>+\t * May be NULL.\n>+\t */\n>+\tvoid (*shd_fini)(void *priv);\n>+\n> \t/**\n> \t * selftests_check() - queries if selftest is supported\n> \t * @devlink: devlink instance\n>@@ -1651,9 +1675,11 @@ void devlink_free(struct devlink *devlink);\n> struct devlink *devlink_shd_get(const char *id,\n> \t\t\t\tconst struct devlink_ops *ops,\n> \t\t\t\tsize_t priv_size,\n>+\t\t\t\tvoid *init_param,\n> \t\t\t\tconst struct device_driver *driver);\n> void devlink_shd_put(struct devlink *devlink);\n> void *devlink_shd_get_priv(struct devlink *devlink);\n>+struct devlink *shd_priv_to_devlink(void *priv);\n> \n> /**\n>  * struct devlink_port_ops - Port operations\n>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sh_devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/sh_devlink.c\n>index b925364765ac..1b8b1ce7e72d 100644\n>--- a/drivers/net/ethernet/mellanox/mlx5/core/sh_devlink.c\n>+++ b/drivers/net/ethernet/mellanox/mlx5/core/sh_devlink.c\n>@@ -43,7 +43,7 @@ int mlx5_shd_init(struct mlx5_core_dev *dev)\n> \t*end = '\\0';\n> \n> \t/* Get or create shared devlink instance */\n>-\tdevlink = devlink_shd_get(sn, &mlx5_shd_ops, 0, pdev->dev.driver);\n>+\tdevlink = devlink_shd_get(sn, &mlx5_shd_ops, 0, NULL, pdev->dev.driver);\n> \tkfree(sn);\n> \tif (!devlink)\n> \t\treturn -ENOMEM;\n>diff --git a/net/devlink/sh_dev.c b/net/devlink/sh_dev.c\n>index 85acce97e788..048a2a6adc9e 100644\n>--- a/net/devlink/sh_dev.c\n>+++ b/net/devlink/sh_dev.c\n>@@ -34,6 +34,7 @@ static struct devlink_shd *devlink_shd_lookup(const char *id)\n> static struct devlink_shd *devlink_shd_create(const char *id,\n> \t\t\t\t\t      const struct devlink_ops *ops,\n> \t\t\t\t\t      size_t priv_size,\n>+\t\t\t\t\t      void *init_param,\n> \t\t\t\t\t      const struct device_driver *driver)\n> {\n> \tstruct devlink_shd *shd;\n>@@ -49,16 +50,30 @@ static struct devlink_shd *devlink_shd_create(const char *id,\n> \tif (!shd->id)\n> \t\tgoto err_devlink_free;\n> \tshd->priv_size = priv_size;\n>-\trefcount_set(&shd->refcount, 1);\n> \n> \tdevl_lock(devlink);\n> \tdevl_register(devlink);\n>+\n>+\tif (ops->shd_init) {\n>+\t\tint err;\n>+\n>+\t\terr = ops->shd_init(shd->priv, init_param);\n>+\t\tif (err)\n>+\t\t\tgoto err_unregister;\n>+\t}\n>+\n> \tdevl_unlock(devlink);\n> \n>+\trefcount_set(&shd->refcount, 1);\n> \tlist_add_tail(&shd->list, &shd_list);\n> \n> \treturn shd;\n> \n>+err_unregister:\n>+\tdevl_unregister(devlink);\n>+\tdevl_unlock(devlink);\n>+\tkfree(shd->id);\n>+\n> err_devlink_free:\n> \tdevlink_free(devlink);\n> \treturn NULL;\n>@@ -69,7 +84,12 @@ static void devlink_shd_destroy(struct devlink_shd *shd)\n> \tstruct devlink *devlink = priv_to_devlink(shd);\n> \n> \tlist_del(&shd->list);\n>+\n\nNot sure why to add empty line here.\n\n\n> \tdevl_lock(devlink);\n>+\n>+\tif (devlink->ops->shd_fini)\n>+\t\tdevlink->ops->shd_fini(shd->priv);\n>+\n> \tdevl_unregister(devlink);\n> \tdevl_unlock(devlink);\n> \tkfree(shd->id);\n>@@ -81,6 +101,7 @@ static void devlink_shd_destroy(struct devlink_shd *shd)\n>  * @id: Identifier string (e.g., serial number) for the shared instance\n>  * @ops: Devlink operations structure\n>  * @priv_size: Size of private data structure\n>+ * @init_param: Passed to .shd_init() callback alongside driver's priv\n>  * @driver: Driver associated with the shared devlink instance\n>  *\n>  * Get an existing shared devlink instance identified by @id, or create\n>@@ -96,16 +117,17 @@ static void devlink_shd_destroy(struct devlink_shd *shd)\n> struct devlink *devlink_shd_get(const char *id,\n> \t\t\t\tconst struct devlink_ops *ops,\n> \t\t\t\tsize_t priv_size,\n>+\t\t\t\tvoid *init_param,\n> \t\t\t\tconst struct device_driver *driver)\n> {\n> \tstruct devlink *devlink;\n> \tstruct devlink_shd *shd;\n> \n> \tmutex_lock(&shd_mutex);\n> \n> \tshd = devlink_shd_lookup(id);\n> \tif (!shd) {\n>-\t\tshd = devlink_shd_create(id, ops, priv_size, driver);\n>+\t\tshd = devlink_shd_create(id, ops, priv_size, init_param, driver);\n> \t\tgoto unlock;\n> \t}\n> \n>@@ -159,3 +181,16 @@ void *devlink_shd_get_priv(struct devlink *devlink)\n> \treturn shd->priv;\n> }\n> EXPORT_SYMBOL_GPL(devlink_shd_get_priv);\n>+\n>+/** shd_priv_to_devlink - Get devlink instance from shd_devlink's priv\n>+ * @priv: Driver's priv data\n>+ *\n>+ * Return: pointer to shared devlink instance the @priv belongs to.\n>+ */\n>+struct devlink *shd_priv_to_devlink(void *priv)\n>+{\n>+\tstruct devlink_shd *shd = container_of(priv, struct devlink_shd, priv);\n>+\n>+\treturn priv_to_devlink(shd);\n>+}\n>+EXPORT_SYMBOL_GPL(shd_priv_to_devlink);\n>-- \n>2.39.3\n>","headers":{"Return-Path":"<intel-wired-lan-bounces@osuosl.org>","X-Original-To":["incoming@patchwork.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=aluMnU8o;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4d5832XBz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 21:10:19 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id A4BA180CD9;\n\tTue, 28 Apr 2026 11:10:17 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id n4SF0aXV5N1F; Tue, 28 Apr 2026 11:10:15 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id BFF3880C84;\n\tTue, 28 Apr 2026 11:10:15 +0000 (UTC)","from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\n by lists1.osuosl.org (Postfix) with ESMTP id 08CD8231\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 11:10:15 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id EE291608DC\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 11:10:14 +0000 (UTC)","from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id Xk95yf0Zk_bh for <intel-wired-lan@lists.osuosl.org>;\n Tue, 28 Apr 2026 11:10:12 +0000 (UTC)","from mail-wm1-x334.google.com (mail-wm1-x334.google.com\n [IPv6:2a00:1450:4864:20::334])\n by smtp3.osuosl.org (Postfix) with ESMTPS id 0B7D46077F\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 11:10:09 +0000 (UTC)","by mail-wm1-x334.google.com with SMTP id\n 5b1f17b1804b1-483487335c2so109663875e9.2\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 04:10:09 -0700 (PDT)","from FV6GYCPJ69 ([85.163.81.98]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48a773aeb49sm48738645e9.4.2026.04.28.04.10.03\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 28 Apr 2026 04:10:05 -0700 (PDT)"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp1.osuosl.org BFF3880C84","OpenDKIM Filter v2.11.0 smtp3.osuosl.org 0B7D46077F"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1777374615;\n\tbh=O1AkPynYqIymYpL+Gq8gW6WV8NTbD1Q/jdfJ1I78mNE=;\n\th=Date:From:To:Cc:References:In-Reply-To:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=aluMnU8oM/VpDccQ4x+AWqLw81gASrZ0egyrF3kke4ukvG6xLGXGJDHrQgsGNh8fh\n\t UUsuzVwcaU0WJz/zjgIPsxQE7oXLQeBfe7hrnonB7LVnnSpfUYgsOJQLnGdzIpmKZ5\n\t UHr+ZkuRI/3F5MctOb07vP32ppNJQdWi85xvbe48DAUNCJPE8PbVBUDADGYmkNeQDa\n\t zDKLFbDs/mPjG0Lc+q73iYALoVc/X3KfvTqjhD6kPhsxp5kzZZ3eJMMK384zciPGi8\n\t wF9762nvSCdrINoqxtLt/xumKAXLJgxrSFmO2Gmttqd2w5STUywRkqe8Wsbe+HprqM\n\t NqE1y2LkQuegQ==","Received-SPF":"None (mailfrom) identity=mailfrom;\n client-ip=2a00:1450:4864:20::334; helo=mail-wm1-x334.google.com;\n envelope-from=jiri@resnulli.us; receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp3.osuosl.org 0B7D46077F","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777374607; x=1777979407;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=O1AkPynYqIymYpL+Gq8gW6WV8NTbD1Q/jdfJ1I78mNE=;\n b=b4Qhoq0aoIMqCaRqfOQbk9WWLX45nGS9D3E4yUKVHRg8GGP3Yv7d9FEFkwVeWE8ocG\n gpZZtFtmmRz3iTKNAJlpulSP9Nb2NCr8oCSrufgoHwkLDkrk45qemGqjMLZK3fmphx4P\n LSROtNgr0M0wKBPf+fB/e9oiwx6TZI4j3GltT26jM0BGlW5IHyiVZhRnhB1GAXtUjFbL\n PH0dHxOQ0NfY42Kd8Plr2szUVALEt18eJ05G3SxHH07V1CK+kw4sGydQYJ/lFVEWIrnW\n QDJJK0YCnsawmjNothRBOagW8B/3ArNEphBhVCl4qdckp+ugGcCqePq4OEuU31FGpcc0\n sGnA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+SNLYR1RA+wHO4Q+51M2GHU3C4qkGxRLdDRlCMwQQeVOtbpnhnwMacgC/Q+25fvy9G9IFsw8sRh/Z2LU4eAgM=@lists.osuosl.org","X-Gm-Message-State":"AOJu0YzF2QP0OOJyzrcj+X4dT0UEtCPnnc1aexI5cGS4Jq/VWM9myP2U\n /kL62/lHlxQmHs+NK+mvsv4gDsgRgC60OzX/F9lsEdp7rnsJ60+IAqyIRIuxwboHzMI=","X-Gm-Gg":"AeBDieuy3rFC1gIJ3uJJf5aZntdCn5852J25lCPTlQ2ooFCtLOqmcH9jEW3UsNZUZPk\n dkVaccucXJIWyb6+yeGYtYmvZqa1xqKBKDbyzMtCCSAX4K7458c/Twzs4pxzX1a2P/bIELq3rLJ\n neZPWbHIIC5Ed2mhFoAnpFY2z0hotgAuCAt8ThXi7525ncPl1FfiMRsswkkH+rL90VNLcCKPD9a\n yUlbwTK5XRCQ71Ml0bo7y7qAL/dzYb9qYLSJOsIyVzcvt/30w1vAuxsIAf34VxnGMwF1w51fT2F\n 6sLm4Wdtxbamd0AEEj/Hh13MZUIr1cNmTr69EG0E1IpEj1/Za4Qa62Z+ewWA8RcSw70weDHGx5F\n T4EuZbOoOAjas/2VdADP7OEcv8nlduBSxdyOLNiW5cTymOccr5XVPXXRNAs+8LlxmEDk8r92DqH\n ZWc/6hVmkTPm++rLGFRGD+o4p4Ag0KL11sCEieUGGQNw==","X-Received":"by 2002:a05:600c:3208:b0:486:fb0b:ad79 with SMTP id\n 5b1f17b1804b1-48a77e64f4cmr23425765e9.20.1777374606361;\n Tue, 28 Apr 2026 04:10:06 -0700 (PDT)","Date":"Tue, 28 Apr 2026 13:10:01 +0200","From":"Jiri Pirko <jiri@resnulli.us>","To":"Przemek Kitszel <przemyslaw.kitszel@intel.com>","Cc":"netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,\n intel-wired-lan@lists.osuosl.org, Tony Nguyen <anthony.l.nguyen@intel.com>,\n Jacob Keller <jacob.e.keller@intel.com>,\n Lukasz Czapnik <lukasz.czapnik@intel.com>,\n Jedrzej Jagielski <jedrzej.jagielski@intel.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>,\n \"David S. Miller\" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,\n Paolo Abeni <pabeni@redhat.com>, Saeed Mahameed <saeedm@nvidia.com>,\n Leon Romanovsky <leon@kernel.org>, Tariq Toukan <tariqt@nvidia.com>,\n Mark Bloch <mbloch@nvidia.com>, Simon Horman <horms@kernel.org>,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>","Message-ID":"<afCU-3Xmole6v4X4@FV6GYCPJ69>","References":"<20260428090912.3461-1-przemyslaw.kitszel@intel.com>\n <20260428090912.3461-2-przemyslaw.kitszel@intel.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260428090912.3461-2-przemyslaw.kitszel@intel.com>","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=resnulli-us.20251104.gappssmtp.com; s=20251104; t=1777374607; x=1777979407;\n darn=lists.osuosl.org;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;\n bh=O1AkPynYqIymYpL+Gq8gW6WV8NTbD1Q/jdfJ1I78mNE=;\n b=r52Km7hyLbtMaBvgjLEoav185Q7d0kr6syzFgP4n+YJUVOgTy+FPFztXhfNK6oGUc0\n Ys/+StbbhU6mE+Cx20et+UQAgWLQK/IU6pQVQkp8bQD0kZSdTbfCIEOEIXwuhTiBI7R8\n ytElmDZamE3QwV10yGRQGK/SB0iBGuNUmCVXRbIdgazy7U5NMNSacv1oGfF/BTaDbXbT\n s9qhfDInsB2f2M5bfon7fEPKds5SsNm7rew0RT9qO7AE1J/xGwCwkgMuCLzPVDpG/tdU\n f7wQsi/Vj/Hn53AkqlYvMAFGxvFZB12vyPskhAxPSQvGV9dLLIS2JYHIHZIV/iXSwELP\n XHyA==","X-Mailman-Original-Authentication-Results":["smtp3.osuosl.org;\n dmarc=none (p=none dis=none)\n header.from=resnulli.us","smtp3.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=resnulli-us.20251104.gappssmtp.com\n header.i=@resnulli-us.20251104.gappssmtp.com header.a=rsa-sha256\n header.s=20251104 header.b=r52Km7hy"],"Subject":"Re: [Intel-wired-lan] [PATCH net-next 1/2] devlink,\n mlx5: add init/fini ops for shared devlink","X-BeenThere":"intel-wired-lan@osuosl.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>","List-Unsubscribe":"<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>","List-Archive":"<http://lists.osuosl.org/pipermail/intel-wired-lan/>","List-Post":"<mailto:intel-wired-lan@osuosl.org>","List-Help":"<mailto:intel-wired-lan-request@osuosl.org?subject=help>","List-Subscribe":"<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>","Errors-To":"intel-wired-lan-bounces@osuosl.org","Sender":"\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"}},{"id":3683474,"web_url":"http://patchwork.ozlabs.org/comment/3683474/","msgid":"<b94a55c7-3d86-47bf-8acc-b82e31766116@intel.com>","list_archive_url":null,"date":"2026-04-28T13:44:54","subject":"Re: [Intel-wired-lan] [PATCH net-next 1/2] devlink,\n mlx5: add init/fini ops for shared devlink","submitter":{"id":85252,"url":"http://patchwork.ozlabs.org/api/people/85252/","name":"Przemek Kitszel","email":"przemyslaw.kitszel@intel.com"},"content":"On 4/28/26 13:10, Jiri Pirko wrote:\n> Tue, Apr 28, 2026 at 11:09:11AM +0200, przemyslaw.kitszel@intel.com wrote:\n>> Add .shd_init() and .shd_fini() ops, that will be called for the first\n>> devlink_shd_get() (to initialize driver' priv data) and on the last\n>> devlink_shd_put() (to allow for the cleanup). Both ops are optional.\n>>\n>> .shd_init() could return an error, which will stop creation of shd\n>> instance. The initializer also gets an additional, optional param,\n>> that driver could use for any needs.\n>>\n>> If any of the callbacks will need to get devlink instance, it could\n>> be accessed by shd_priv_to_devlink().\n>>\n>> Both callbacks are called with devl_lock held and devlink registered.\n>>\n>> Next commit will make use of the callbacks, another one will make use also\n>> of the non-null additional param (outside of this series).\n>>\n>> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\n>> Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>\n>> ---\n>> first discussed at:\n>> https://lore.kernel.org/netdev/20260325063143.261806-3-przemyslaw.kitszel@intel.com\n>>\n>> Sashiko suggested to convert devlink_shd_create() to return ERR_PTR(),\n>> and propagate that up to the driver. It think it will just make code more\n>> verbose for not much benefit. And drivers could just store err if they\n>> want in the passed @init_param.\n>>\n>> ---\n>> include/net/devlink.h                         | 26 +++++++++++++\n>> .../ethernet/mellanox/mlx5/core/sh_devlink.c  |  2 +-\n>> net/devlink/sh_dev.c                          | 39 ++++++++++++++++++-\n>> 3 files changed, 64 insertions(+), 3 deletions(-)\n>>\n>> diff --git a/include/net/devlink.h b/include/net/devlink.h\n>> index bcd31de1f890..5d3a1337bfa1 100644\n>> --- a/include/net/devlink.h\n>> +++ b/include/net/devlink.h\n>> @@ -1586,6 +1586,30 @@ struct devlink_ops {\n>> \t\t\t\t    struct devlink_rate *parent,\n>> \t\t\t\t    void *priv_child, void *priv_parent,\n>> \t\t\t\t    struct netlink_ext_ack *extack);\n>> +\n>> +\t/**\n>> +\t * shd_init: Shared devlink instance initializer\n>> +\t * @priv: shd_devlink' priv\n>> +\t * @init_param: additional param to pass to driver callback\n>> +\t *\n>> +\t * Called once when the shared instance is first created (by the first\n>> +\t * devlink_shd_get() call).\n>> +\t * Should initialize the driver's private data embedded in the shared\n>> +\t * devlink. May be NULL.\n>> +\t *\n>> +\t * Return: 0 on success, negative to prevent shared instance usage.\n>> +\t */\n>> +\tint (*shd_init)(void *priv, void *init_param);\n> \n> 1. \"param\" has specific meaning in devlink context\n> 2. You don't use the arg in driver\n> \n> Care to drop it?\n\nI have a user for it, but it will be a separate series\n(I have already 15 patches there), will post RFC to link here\nto the user, will that work?\n\nmy intention was to not tie touching mlx code with big series for intel\n\n> \n> Otherwise, this looks fine to me. Thanks! (small nitpick below)\n\nack for the nit","headers":{"Return-Path":"<intel-wired-lan-bounces@osuosl.org>","X-Original-To":["incoming@patchwork.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=2ThZA887;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g4hXj3PZVz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 28 Apr 2026 23:45:55 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 846CB83B6B;\n\tTue, 28 Apr 2026 13:45:53 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id ZNU8OEh7lnck; Tue, 28 Apr 2026 13:45:52 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id A8FE783BDA;\n\tTue, 28 Apr 2026 13:45:52 +0000 (UTC)","from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\n by lists1.osuosl.org (Postfix) with ESMTP id BE64B1B8\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 13:45:50 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id A3C6F60D8D\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 13:45:50 +0000 (UTC)","from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 5XKkJ9rSMf8x for <intel-wired-lan@lists.osuosl.org>;\n Tue, 28 Apr 2026 13:45:49 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [198.175.65.10])\n by smtp3.osuosl.org (Postfix) with ESMTPS id D4E4260C0A\n for <intel-wired-lan@lists.osuosl.org>; Tue, 28 Apr 2026 13:45:48 +0000 (UTC)","from orviesa010.jf.intel.com ([10.64.159.150])\n by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 06:45:48 -0700","from orsmsx902.amr.corp.intel.com ([10.22.229.24])\n by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Apr 2026 06:45:47 -0700","from ORSMSX901.amr.corp.intel.com (10.22.229.23) by\n ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Tue, 28 Apr 2026 06:45:46 -0700","from ORSEDG902.ED.cps.intel.com (10.7.248.12) by\n ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37 via Frontend Transport; Tue, 28 Apr 2026 06:45:46 -0700","from CO1PR03CU002.outbound.protection.outlook.com (52.101.46.1) by\n edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Tue, 28 Apr 2026 06:45:46 -0700","from MN6PR11MB8102.namprd11.prod.outlook.com (2603:10b6:208:46d::9)\n by CH0PR11MB5281.namprd11.prod.outlook.com (2603:10b6:610:bc::21)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.18; Tue, 28 Apr\n 2026 13:45:44 +0000","from MN6PR11MB8102.namprd11.prod.outlook.com\n ([fe80::8d98:e538:8d7:6311]) by MN6PR11MB8102.namprd11.prod.outlook.com\n ([fe80::8d98:e538:8d7:6311%5]) with mapi id 15.20.9870.013; Tue, 28 Apr 2026\n 13:45:43 +0000"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp1.osuosl.org A8FE783BDA","OpenDKIM Filter v2.11.0 smtp3.osuosl.org D4E4260C0A"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1777383952;\n\tbh=lzhmgOuEbX2puRzO4QcsGD27lGpX2+bW+EKJUXp5JUI=;\n\th=Date:To:CC:References:From:In-Reply-To:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=2ThZA8872amjk26yVxzY8+skcEmm6QX00g8+KOnjv+uPtvqDxnQnv5oaK+q7d5Vnx\n\t WxWtY8N5jfhLSpJHzNORGF4keffpHYP3tsiyxnfvguOuRu8ALXhfEzoclVwL47y1Cu\n\t sr98QBfRaUlWfTXkIjSuWRtUayiuh6fDw08maptN/KWVSYSSaVCTvrhmrjnnePNKRh\n\t Ztx3+UN5Q2MgB1eyQC9u+N5vQGO5p8TdocuEKnE8ygTAM23q2usPj2+qokE9jK2kYU\n\t WwiLT1GZHy7tj9VxPQnxX82jG4xCkDpgPZu9h9E8QKdxjPTDANxKq1ntyKXzDm/Unc\n\t v1p/BcSgxA4Fg==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=198.175.65.10;\n helo=mgamail.intel.com; envelope-from=przemyslaw.kitszel@intel.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp3.osuosl.org D4E4260C0A","X-CSE-ConnectionGUID":["hun0+JnTQ7yXN5BsLCpKnQ==","yfl540+RQ42torE9qse+tw=="],"X-CSE-MsgGUID":["Lz/pH4PtSOKDJcadL7m+wQ==","TDEwl5HHT/+2duay61dbMg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11770\"; a=\"95707547\"","E=Sophos;i=\"6.23,204,1770624000\"; d=\"scan'208\";a=\"95707547\"","E=Sophos;i=\"6.23,204,1770624000\"; d=\"scan'208\";a=\"233104734\""],"X-ExtLoop1":"1","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=LHQGqF9n36SG4biSOVLIxSPmR3gWnYXyAbH1SBOnFEkgxo1Vtf3qtmFOH+6CmIpRpGib6z6x8eOuS25aX/nWo3dk71b//SNb8kP1h+ZzdCr9UQplOoa6Sjyesij7Ny0Yx+hgB/3KgLSg1TpYAzRX8IVk0VADpor9V2HlJwzHRX72t0e6AdOMm4SGCN0qLA/vVWrKY0ZkhgOgmm7oizRa1OuVox6fc5i+SzQ62kk+QU0YFMlBikzwbEH/Is6gEB13g29dMIgEmXh8KTNDhOskbdcasZcoxv6mhLMkV6KWSVG16gMYZueHggLP4HhcMac/mbwlUj5OHU3vQkwTZprpyA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=lzhmgOuEbX2puRzO4QcsGD27lGpX2+bW+EKJUXp5JUI=;\n b=oX5aDwg/lwgq48dEu7K9h3r9zyn7gjW4P613qUoqYkAPyIKJB2eL0h9woXKduUjJfyE6yKpBVU7/HVBmMUItgbfUpEOXkGpHq0CBMqdMTiPoERW4qI92PiZYECwbnoVuE8kfKN0mimRwkO9KWVwufxQ9xzi5DGXrCcj/mxI5vYhbAdcF3BOLnR26h129RvckxWP+MbCXVITRN0jCb/CFNFDAw5t/hV67fWO7l4mZZvRgY0CeAxsK7n0lgXBHFlIBN1nr9NSaeh122HpAzI1efBP46IAs6dVbuzNWF9V4CRIl8AYlB1SMfIwZfiEPS0Ah/wtHb5PIPhoJzU3fgsCFeA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;\n dkim=pass header.d=intel.com; arc=none","Message-ID":"<b94a55c7-3d86-47bf-8acc-b82e31766116@intel.com>","Date":"Tue, 28 Apr 2026 15:44:54 +0200","User-Agent":"Mozilla Thunderbird","To":"Jiri Pirko <jiri@resnulli.us>","CC":"<netdev@vger.kernel.org>, Jakub Kicinski <kuba@kernel.org>,\n <intel-wired-lan@lists.osuosl.org>, Tony Nguyen <anthony.l.nguyen@intel.com>,\n Jacob Keller <jacob.e.keller@intel.com>, Lukasz Czapnik\n <lukasz.czapnik@intel.com>, Jedrzej Jagielski <jedrzej.jagielski@intel.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>, \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Paolo Abeni <pabeni@redhat.com>, \"Saeed\n Mahameed\" <saeedm@nvidia.com>, Leon Romanovsky <leon@kernel.org>, Tariq\n Toukan <tariqt@nvidia.com>, Mark Bloch <mbloch@nvidia.com>, Simon Horman\n <horms@kernel.org>, Aleksandr Loktionov <aleksandr.loktionov@intel.com>","References":"<20260428090912.3461-1-przemyslaw.kitszel@intel.com>\n <20260428090912.3461-2-przemyslaw.kitszel@intel.com>\n <afCU-3Xmole6v4X4@FV6GYCPJ69>","From":"Przemek Kitszel <przemyslaw.kitszel@intel.com>","Content-Language":"en-US","In-Reply-To":"<afCU-3Xmole6v4X4@FV6GYCPJ69>","Content-Type":"text/plain; charset=\"UTF-8\"; format=flowed","Content-Transfer-Encoding":"7bit","X-ClientProxiedBy":"VI1PR09CA0142.eurprd09.prod.outlook.com\n (2603:10a6:803:12c::26) To MN6PR11MB8102.namprd11.prod.outlook.com\n (2603:10b6:208:46d::9)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"MN6PR11MB8102:EE_|CH0PR11MB5281:EE_","X-MS-Office365-Filtering-Correlation-Id":"8acf86ce-a400-4e18-329e-08dea52c7196","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n uEE0NF4RQQ0MpTSfEp/v9l7/qbSO+54oSEAYuwTeANwrSFTU/k/n8Tcbgy63jD1USclfgzCcQ9447M9DLlPtplV5Rn5m64EjzUspwuVow7P1Chh3uy6YMN74Ic7Je2lLEGamO6DmWlN5lVWdmVwi3xYf2x/TzISd/uvjFhFQ3S8zw0tM8akCwpg75srkQZlaa0kAL39NhWGO6j8W/qf9T04LjgwDtRD0Xk/65vJE4438w1fswBPHFnPl43PwPHxTq437H9iWAmKs4gMh/kFy+J9eBYaDwc/GQaQUz0gzUUf+lAFTVAnflqohunQ+f+23N4ivNtBJgN2Va/XH92ipWAPdUAwIEGx83R6TKJ84a40BshgXo3pyZxb5J5Nc02+4sNfarArTEPXn1fn7mYOadifGVYoRr5pOl0HwVP/XU+5Gk/Wur2HblJFK8i661HPAUSjGwsqVTlh24M3BYTWLPG1cjpHoC607RKRQtFYk9s3N0OxOeTU0EY1PzjTAEwzzkj6EtZsn8CNI0yUsPrUcaIU7p3FBYjyGfrabbmU6its1qpsNz1FnAdvFpCgQttA8s/OLkcP/eSg7kZnHhRM7pYcV71UQMXySXOl2w47h4mDhe2QXmSbAWzORfFyNuCwRk+q7ViA6tR0ha4jLpMeWuU0lwrchSBtdAI/aa87EMV+591mngvsTWQlmBUpySM+4w9wfqzzPe8Dup/f7Usjpl1GCcnBL5XJhuUG6gvbzvwUV6hIaWqSmzuCgfjiWIVjf","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:MN6PR11MB8102.namprd11.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?za/3vw83+S+MdDwbN7k76B4yPVzi?=\n\t=?utf-8?q?iK4tVpji4h4cqqSURODbaQ+e0rntq/1cXkwpMdjH+Rc3TkPauggZe82uvrbPwh9oj?=\n\t=?utf-8?q?avH0co1uX9QWpDPaHjUcvwklgWroBo/to9GNa/euSxJpp6xIVwlkB8Xgh861mkAjW?=\n\t=?utf-8?q?Yf5u4v9kfAHBAIZrtwX2J4lwouryxJRlBARaegGKVNpSWUOz35dfnNu3I2+6hAuLf?=\n\t=?utf-8?q?momXg00JjRKoXrxWPcTzC8WdaJc+K2QoFfKneyNsfeYQJwOdnErKiEXXk9ONlJPqC?=\n\t=?utf-8?q?xogfGE2RolX/aymSRnsx8VgMO4JRN5TawDaBIhzkRSD4VXLxOuGCfA69nlJ2uGYCN?=\n\t=?utf-8?q?EzNAvbZde12GLWP4pONWRLPw9B3e/PQZAIiN8tjzsc3zh+KnZ8x4xOocRQFIFiXuh?=\n\t=?utf-8?q?XfZJH9ya22Suzl2Shl/5VsqahfgCfLiabdQnvozxdlBAFTlqfxfeBgLl+HMlsvTfd?=\n\t=?utf-8?q?RpAOBk+Zea2FGG4LajghoUJP2D1ygMbRLZf/cssSK+BhIH4s2ghJAZUS3lgxPqMkT?=\n\t=?utf-8?q?VajGa7QRm6rGYGo7S1RlOs72+5jV4zxB4x+YrlSrGhqjS6eA6t1AhR3P0fcdbQz25?=\n\t=?utf-8?q?KcWKMlh95Lnt8rZ/gigl3kgS51Ar5Tps83P3x8wsBu70tjEsYcqcQ/Kh7OyRlZQxf?=\n\t=?utf-8?q?lRwMVQNcMo68zY9UPLTK0hMoiIQsHsifN83DwAvWwcoaLNPbdEvfBK7mguecy8Rjw?=\n\t=?utf-8?q?TRB7KgusdWWSbe/kQzRw14r/lWHyU3pIHu90uu03H3MGascDInrVlX/aL+5tmzxFd?=\n\t=?utf-8?q?Aee7xfm5wMBNnkP2U5dt6sH50f0JTrKgdiNxb7v0u6IB/tEJ62nNzxtjusMMN3gRL?=\n\t=?utf-8?q?NT+uO8k+dsitGT6AFTdzx0qy7MPdUkolyd8ZdL4HkOTITdnX1WpJD3G2GFB5QsAzP?=\n\t=?utf-8?q?QDmXzhBTyVkANmRd5m4WuCPnyGR3o5mkb5BKbfP0yhmqRw/vhbpYcUDW/BNeeiopL?=\n\t=?utf-8?q?1oTmjCYkR1LctHOoxhjAVYmgRoQQEL2X5R8iZb0/mefg6pwKtXPi/rnyiKtT8ZeOE?=\n\t=?utf-8?q?bcm+k+DzK6sj3QNU2JXX1RJ1+jkIx0DNu3uyyWW0upelQMpXgisJyLsQ6PI9GEROY?=\n\t=?utf-8?q?iag0nlq2YeczTaVzEqKOaCz6b/DB9Qn6tolmRCZM0GLC5qLfBV/7Qeal2pFguF9fY?=\n\t=?utf-8?q?GK+Y4AxSaU6gaErYPp9gslvRceO6k7sYJfpcYM+don+v4eLw5OCvX4dA+Oad4e2ZT?=\n\t=?utf-8?q?TgDIKT5NTBPproTWoaj+nhnX7dBMWphjIQZ7A2RQTMAfTUng/DZ9nORzl3X+SHmI9?=\n\t=?utf-8?q?hC9avNFMY2YvnReKynvrrIXi7+irQNhZEOIXB3iWcrtaMhpRAQwBLuUcxr6hyDyQM?=\n\t=?utf-8?q?LmgTVwiHrq2LOlSjbQGIXvcdRHTyMYjY4NXhMifhJQZMD3V5EDxppZJNfDK8he0+O?=\n\t=?utf-8?q?X0diClh/2j7e1tfZaxAdId7OMsv968ZO19922+MxODvMiOWlQ7uECrBfHFjRFjgci?=\n\t=?utf-8?q?7jKlZ8LN0sahvvATEq6Uf1qXwt1shm2hQb9UgB3RW/fjw+2BfsP+95srhgUrUpCra?=\n\t=?utf-8?q?9L9SWVgrY+n7oeDnNOvFNtlTRRsX/lzpzF956DQYDjOHFk/A7OYbNazS+FlcqNrdP?=\n\t=?utf-8?q?dHJYLqx1LxkzZONCxAPT+aPpVqwl3kUOOIFeklDQaTeL2sYagBUIlJWUyws2GfRAF?=\n\t=?utf-8?q?y9b8i3qV7joQvfeG5/H5mrL5LYMbxREZB29pw4IjtaAy2DHCoRe8I=3D?=","X-Exchange-RoutingPolicyChecked":"\n e4ojeDHzdFMOdM6J8SqIhzPnDsbFKbYDUtgE9ne/US693Nwh57bvOcuTs9PP+zOLfwzlb6pQWDEWYAek3VuldLiNB0rhmmSac9a+ijNXUHvjM2jJOl4kB0b2SOYc3L6KWBIAzgFEalH4QIQlvoqDMwMPyn882MZvXYMqZsyEocqTrVtPtOc0XDMJMY9nQOHVb5SgsUbGP0AMx1YYL3QFsilOgvFUplZlRTGLbSgJNLx4JoanL3WoTqqehgMYzo/5MEIBAp5VWKHaYjuNXC4th/0IwTp8Xa27tUndCr0d7hYqTNGcjAAnpcUqmMFphGyC1UR1MbBzGEOh6F5FSQITYA==","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 8acf86ce-a400-4e18-329e-08dea52c7196","X-MS-Exchange-CrossTenant-AuthSource":"MN6PR11MB8102.namprd11.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"28 Apr 2026 13:45:43.8158 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"46c98d88-e344-4ed4-8496-4ed7712e255d","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n ZNWk52lA7m5VZQvBcrHddWXtmMk+WrU5eYYVgLXgLu3cWmNARQSGlyXr0EubL5su8SAIwHGqV3xJb946Iu1ugS4Z/DURlNEPQ7wYdJcz1n0=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CH0PR11MB5281","X-OriginatorOrg":"intel.com","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777383950; x=1808919950;\n h=message-id:date:subject:to:cc:references:from:\n in-reply-to:content-transfer-encoding:mime-version;\n bh=hJle0brecgWuY1KVyu9vb/RvI98bVYn2NfbhGlitQC0=;\n b=V1ABwJozX6VF9ZalApLF6fEtcrytgSdRCX0rfQwSYeOu2oxfE1+LaEgc\n rtge2/8e2fqtqkKeDZC2lQjlqqR0V2A/YDu1SyiqZF7q1YYdqe96vdi6S\n 7CxIordN5ViiNTp41krFsS+4ZsFjeNZqwDvNSJvac4WxtNSYXfueFbygy\n 0Z8PvOYsH6hKYFyJIQQq1P2wS9qdxv6mR77mDOpj8WDp5g5cCZZUDeM2r\n OxUOLPlHWOQlKfpludwaAgi7+A5OrPrByBPNRRuGNnMsFUU3sxg/e5x8X\n X8NLBVyjDUQ9xQq8QhSnO47IsePFHAbNQOnKsRzLdgG/H8LMnUk37fnQD\n g==;","X-Mailman-Original-Authentication-Results":["smtp3.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com","smtp3.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=V1ABwJoz","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=intel.com;"],"Subject":"Re: [Intel-wired-lan] [PATCH net-next 1/2] devlink,\n mlx5: add init/fini ops for shared devlink","X-BeenThere":"intel-wired-lan@osuosl.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>","List-Unsubscribe":"<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>","List-Archive":"<http://lists.osuosl.org/pipermail/intel-wired-lan/>","List-Post":"<mailto:intel-wired-lan@osuosl.org>","List-Help":"<mailto:intel-wired-lan-request@osuosl.org?subject=help>","List-Subscribe":"<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>","Errors-To":"intel-wired-lan-bounces@osuosl.org","Sender":"\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"}}]