{"id":2219413,"url":"http://patchwork.ozlabs.org/api/patches/2219413/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260402230626.3826719-4-grzegorz.nitka@intel.com/","project":{"id":46,"url":"http://patchwork.ozlabs.org/api/projects/46/?format=json","name":"Intel Wired Ethernet development","link_name":"intel-wired-lan","list_id":"intel-wired-lan.osuosl.org","list_email":"intel-wired-lan@osuosl.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260402230626.3826719-4-grzegorz.nitka@intel.com>","list_archive_url":null,"date":"2026-04-02T23:06:21","name":"[v5,net-next,3/8] dpll: extend pin notifier and netlink events with notification source ID","commit_ref":null,"pull_url":null,"state":"handled-elsewhere","archived":false,"hash":"d5e8b7683bd37b5975a3675c60f60810b8edb566","submitter":{"id":82711,"url":"http://patchwork.ozlabs.org/api/people/82711/?format=json","name":"Grzegorz Nitka","email":"grzegorz.nitka@intel.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260402230626.3826719-4-grzegorz.nitka@intel.com/mbox/","series":[{"id":498564,"url":"http://patchwork.ozlabs.org/api/series/498564/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=498564","date":"2026-04-02T23:06:18","name":"dpll/ice: Add TXC DPLL type and full TX reference clock control for E825","version":5,"mbox":"http://patchwork.ozlabs.org/series/498564/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2219413/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2219413/checks/","tags":{},"related":[],"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=WTB23JjY;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\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 4fmyJC3snSz1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 10:10:35 +1100 (AEDT)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 9297840834;\n\tThu,  2 Apr 2026 23:10:33 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id JaDwiJ5bT8_j; Thu,  2 Apr 2026 23:10:32 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id C8FA9403EB;\n\tThu,  2 Apr 2026 23:10:32 +0000 (UTC)","from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n by lists1.osuosl.org (Postfix) with ESMTP id 29CE52A2\n for <intel-wired-lan@lists.osuosl.org>; Thu,  2 Apr 2026 23:10:31 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id 0FF8040074\n for <intel-wired-lan@lists.osuosl.org>; Thu,  2 Apr 2026 23:10:31 +0000 (UTC)","from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 8qxUbcBpjfZY for <intel-wired-lan@lists.osuosl.org>;\n Thu,  2 Apr 2026 23:10:30 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [198.175.65.19])\n by smtp2.osuosl.org (Postfix) with ESMTPS id 00AF54002D\n for <intel-wired-lan@lists.osuosl.org>; Thu,  2 Apr 2026 23:10:29 +0000 (UTC)","from orviesa008.jf.intel.com ([10.64.159.148])\n by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Apr 2026 16:10:29 -0700","from gklab-003-001.igk.intel.com ([10.91.173.48])\n by orviesa008.jf.intel.com with ESMTP; 02 Apr 2026 16:10:25 -0700"],"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 smtp4.osuosl.org C8FA9403EB","OpenDKIM Filter v2.11.0 smtp2.osuosl.org 00AF54002D"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1775171432;\n\tbh=0xMBGNR4cSE4RfXHw4AF9xJ095juFwnbA7Yqs3C9ULA=;\n\th=From:To:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t Cc:From;\n\tb=WTB23JjYi9phGBvI/LwqIMqYwa3TANe0ayQdyasegdr/OG4DxvuD9LKGKQpr6bInB\n\t TPa7A6+xZdQAnbIvCH9AkTE4nR4Bli+iLQ0l0PWj/Xkkohm2xxdk1fEMc8OklOpJOX\n\t drfJ8OixztSMLS9ghtLkoRiaiP/PQ93EbL83mTObJLTuJ/zS99NG1KDwVU68PSwJIq\n\t FBjWI06gTYXaYvxb0GEMjlLxWB02kE2Z+WwNmJetUistR5rV2dL98bbC0w5uqvKlrs\n\t JJ+3dtJIlJvegYdcPYAeB+vmqcm9L4UwSWnzwU6xYlx61qtfRVUT7WCzw4XtzHG9q5\n\t Jo52zoLYsiX4A==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=198.175.65.19;\n helo=mgamail.intel.com; envelope-from=grzegorz.nitka@intel.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp2.osuosl.org 00AF54002D","X-CSE-ConnectionGUID":["JipFrEPfTd65IU59JX7SQQ==","NYqS7SUuQta8FxuF3BR6Hg=="],"X-CSE-MsgGUID":["1Qll1dIBSTyaKVKMecgxMQ==","7jTaZLZgRwOxtU1MScu6MQ=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11747\"; a=\"76123088\"","E=Sophos;i=\"6.23,156,1770624000\"; d=\"scan'208\";a=\"76123088\"","E=Sophos;i=\"6.23,156,1770624000\"; d=\"scan'208\";a=\"227044434\""],"X-ExtLoop1":"1","From":"Grzegorz Nitka <grzegorz.nitka@intel.com>","To":"netdev@vger.kernel.org","Date":"Fri,  3 Apr 2026 01:06:21 +0200","Message-Id":"<20260402230626.3826719-4-grzegorz.nitka@intel.com>","X-Mailer":"git-send-email 2.39.3","In-Reply-To":"<20260402230626.3826719-1-grzegorz.nitka@intel.com>","References":"<20260402230626.3826719-1-grzegorz.nitka@intel.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","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=1775171430; x=1806707430;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=+LB3oOadrf+m9vAYcAXYEILVaa/nM5vv/ZNf2+PNEtE=;\n b=EstF/9mt8lCWcUkRluldaGwSvYUyqn0bIsNfiOYUECsaMPJhysFm5RiA\n CdjrGgFcNJCzaMAcAdBe25PrAv6woaq1QcB+w4S+8l2Mo0N/5v9OIoWfy\n +D4Cc9WHQ+VZdDpoh5RkRgKGqD8pLcXpu0Dpi+K9MFmsOXrDZgYQDWWP6\n jhvjsSdho0oI5r+7cZK9J+CsGH9iuq+Pi4zdVq8wwexNS7WMkmKrBiwAK\n h3xU3jgzxWpzq3eOC9DaDOSqNhrq6GWwnpPgQECJjiU+IgOKVDH0/wURE\n dpIES/I3ZczYdFHuzu0dSzEFuwF59dmLCxs6oeQk2etMIpmN8hCyknmA3\n Q==;","X-Mailman-Original-Authentication-Results":["smtp2.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com","smtp2.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=EstF/9mt"],"Subject":"[Intel-wired-lan] [PATCH v5 net-next 3/8] dpll: extend pin notifier\n and netlink events with notification source ID","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>","Cc":"ivecera@redhat.com, vadim.fedorenko@linux.dev, kuba@kernel.org,\n jiri@resnulli.us, edumazet@google.com, przemyslaw.kitszel@intel.com,\n richardcochran@gmail.com, donald.hunter@gmail.com,\n linux-kernel@vger.kernel.org, arkadiusz.kubalewski@intel.com,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>, andrew+netdev@lunn.ch,\n intel-wired-lan@lists.osuosl.org, horms@kernel.org,\n Prathosh.Satish@microchip.com, anthony.l.nguyen@intel.com, pabeni@redhat.com,\n davem@davemloft.net","Errors-To":"intel-wired-lan-bounces@osuosl.org","Sender":"\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"},"content":"Extend the DPLL pin notification API to include a source identifier\nindicating where the notification originates. This allows notifier\nconsumers and netlink listeners to distinguish between notifications\ncoming from an associated DPLL instance, a parent pin, or the pin\nitself.\n\nA new field, src_id, is added to struct dpll_pin_notifier_info and is\npassed through all pin-related notification paths. Callers of\ndpll_pin_notify() are updated to provide a meaningful source identifier\nbased on their context:\n  - pin registration/unregistration uses the DPLL's clock_id,\n  - pin-on-pin operations use the parent pin's clock_id,\n  - pin changes use the pin's own clock_id.\n\nAs introduced in the commit (\"dpll: allow registering FW-identified pin\nwith a different DPLL\"), it is possible to share the same physical pin\nvia firmware description (fwnode) with DPLL objects from different\nkernel modules. This means that a given pin can be registered multiple\ntimes.\n\nDriver such as ICE (E825 devices) rely on this mechanism when listening\nfor the event where a shared-fwnode pin appears, while avoiding reacting\nto events triggered by their own registration logic.\n\nThis change only extends the notification metadata and does not alter\nexisting semantics for drivers that do not use the new field.\n\nReviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>\nReviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\nSigned-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>\n---\n drivers/dpll/dpll_core.c    | 14 ++++++++------\n drivers/dpll/dpll_core.h    |  3 ++-\n drivers/dpll/dpll_netlink.c | 10 +++++-----\n drivers/dpll/dpll_netlink.h |  4 ++--\n include/linux/dpll.h        |  1 +\n 5 files changed, 18 insertions(+), 14 deletions(-)","diff":"diff --git a/drivers/dpll/dpll_core.c b/drivers/dpll/dpll_core.c\nindex 55ad03977d6d..7d653a29c294 100644\n--- a/drivers/dpll/dpll_core.c\n+++ b/drivers/dpll/dpll_core.c\n@@ -71,7 +71,8 @@ void dpll_device_notify(struct dpll_device *dpll, unsigned long action)\n \tcall_dpll_notifiers(action, &info);\n }\n \n-void dpll_pin_notify(struct dpll_pin *pin, unsigned long action)\n+void dpll_pin_notify(struct dpll_pin *pin, u64 src_clock_id,\n+\t\t     unsigned long action)\n {\n \tstruct dpll_pin_notifier_info info = {\n \t\t.pin = pin,\n@@ -80,6 +81,7 @@ void dpll_pin_notify(struct dpll_pin *pin, unsigned long action)\n \t\t.clock_id = pin->clock_id,\n \t\t.fwnode = pin->fwnode,\n \t\t.prop = &pin->prop,\n+\t\t.src_clock_id = src_clock_id,\n \t};\n \n \tcall_dpll_notifiers(action, &info);\n@@ -847,7 +849,7 @@ __dpll_pin_register(struct dpll_device *dpll, struct dpll_pin *pin,\n \tif (ret)\n \t\tgoto ref_pin_del;\n \txa_set_mark(&dpll_pin_xa, pin->id, DPLL_REGISTERED);\n-\tdpll_pin_create_ntf(pin);\n+\tdpll_pin_create_ntf(pin, dpll->clock_id);\n \n \treturn ret;\n \n@@ -946,7 +948,7 @@ void dpll_pin_unregister(struct dpll_device *dpll, struct dpll_pin *pin,\n \t\treturn;\n \n \tmutex_lock(&dpll_lock);\n-\tdpll_pin_delete_ntf(pin);\n+\tdpll_pin_delete_ntf(pin, dpll->clock_id);\n \t__dpll_pin_unregister(dpll, pin, ops, priv, NULL);\n \tmutex_unlock(&dpll_lock);\n }\n@@ -992,7 +994,7 @@ int dpll_pin_on_pin_register(struct dpll_pin *parent, struct dpll_pin *pin,\n \t\t\tstop = i;\n \t\t\tgoto dpll_unregister;\n \t\t}\n-\t\tdpll_pin_create_ntf(pin);\n+\t\tdpll_pin_create_ntf(pin, parent->clock_id);\n \t}\n \tmutex_unlock(&dpll_lock);\n \n@@ -1003,7 +1005,7 @@ int dpll_pin_on_pin_register(struct dpll_pin *parent, struct dpll_pin *pin,\n \t\tif (i < stop) {\n \t\t\t__dpll_pin_unregister(ref->dpll, pin, ops, priv,\n \t\t\t\t\t      parent);\n-\t\t\tdpll_pin_delete_ntf(pin);\n+\t\t\tdpll_pin_delete_ntf(pin, parent->clock_id);\n \t\t}\n \tdpll_xa_ref_pin_del(&pin->parent_refs, parent, ops, priv, pin);\n unlock:\n@@ -1029,7 +1031,7 @@ void dpll_pin_on_pin_unregister(struct dpll_pin *parent, struct dpll_pin *pin,\n \tunsigned long i;\n \n \tmutex_lock(&dpll_lock);\n-\tdpll_pin_delete_ntf(pin);\n+\tdpll_pin_delete_ntf(pin, parent->clock_id);\n \tdpll_xa_ref_pin_del(&pin->parent_refs, parent, ops, priv, pin);\n \txa_for_each(&pin->dpll_refs, i, ref)\n \t\t__dpll_pin_unregister(ref->dpll, pin, ops, priv, parent);\ndiff --git a/drivers/dpll/dpll_core.h b/drivers/dpll/dpll_core.h\nindex 71ac88ef2017..92cb919317eb 100644\n--- a/drivers/dpll/dpll_core.h\n+++ b/drivers/dpll/dpll_core.h\n@@ -98,6 +98,7 @@ extern struct xarray dpll_pin_xa;\n extern struct mutex dpll_lock;\n \n void dpll_device_notify(struct dpll_device *dpll, unsigned long action);\n-void dpll_pin_notify(struct dpll_pin *pin, unsigned long action);\n+void dpll_pin_notify(struct dpll_pin *pin, u64 src_clock_id,\n+\t\t     unsigned long action);\n \n #endif\ndiff --git a/drivers/dpll/dpll_netlink.c b/drivers/dpll/dpll_netlink.c\nindex 83cbd64abf5a..5fe6635dd672 100644\n--- a/drivers/dpll/dpll_netlink.c\n+++ b/drivers/dpll/dpll_netlink.c\n@@ -830,21 +830,21 @@ dpll_pin_event_send(enum dpll_cmd event, struct dpll_pin *pin)\n \treturn ret;\n }\n \n-int dpll_pin_create_ntf(struct dpll_pin *pin)\n+int dpll_pin_create_ntf(struct dpll_pin *pin, u64 src_clock_id)\n {\n-\tdpll_pin_notify(pin, DPLL_PIN_CREATED);\n+\tdpll_pin_notify(pin, src_clock_id, DPLL_PIN_CREATED);\n \treturn dpll_pin_event_send(DPLL_CMD_PIN_CREATE_NTF, pin);\n }\n \n-int dpll_pin_delete_ntf(struct dpll_pin *pin)\n+int dpll_pin_delete_ntf(struct dpll_pin *pin,  u64 src_clock_id)\n {\n-\tdpll_pin_notify(pin, DPLL_PIN_DELETED);\n+\tdpll_pin_notify(pin, src_clock_id, DPLL_PIN_DELETED);\n \treturn dpll_pin_event_send(DPLL_CMD_PIN_DELETE_NTF, pin);\n }\n \n int __dpll_pin_change_ntf(struct dpll_pin *pin)\n {\n-\tdpll_pin_notify(pin, DPLL_PIN_CHANGED);\n+\tdpll_pin_notify(pin, pin->clock_id, DPLL_PIN_CHANGED);\n \treturn dpll_pin_event_send(DPLL_CMD_PIN_CHANGE_NTF, pin);\n }\n \ndiff --git a/drivers/dpll/dpll_netlink.h b/drivers/dpll/dpll_netlink.h\nindex dd28b56d27c5..89fef266392f 100644\n--- a/drivers/dpll/dpll_netlink.h\n+++ b/drivers/dpll/dpll_netlink.h\n@@ -8,8 +8,8 @@ int dpll_device_create_ntf(struct dpll_device *dpll);\n \n int dpll_device_delete_ntf(struct dpll_device *dpll);\n \n-int dpll_pin_create_ntf(struct dpll_pin *pin);\n+int dpll_pin_create_ntf(struct dpll_pin *pin, u64 src_clock_id);\n \n-int dpll_pin_delete_ntf(struct dpll_pin *pin);\n+int dpll_pin_delete_ntf(struct dpll_pin *pin, u64 src_clock_id);\n \n int __dpll_pin_change_ntf(struct dpll_pin *pin);\ndiff --git a/include/linux/dpll.h b/include/linux/dpll.h\nindex 2ce295b46b8c..efa8ef8b6fae 100644\n--- a/include/linux/dpll.h\n+++ b/include/linux/dpll.h\n@@ -202,6 +202,7 @@ struct dpll_pin_notifier_info {\n \tu64 clock_id;\n \tconst struct fwnode_handle *fwnode;\n \tconst struct dpll_pin_properties *prop;\n+\tu64 src_clock_id;\n };\n \n #if IS_ENABLED(CONFIG_DPLL)\n","prefixes":["v5","net-next","3/8"]}