{"id":2231049,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2231049/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260430094238.987976-4-grzegorz.nitka@intel.com/","project":{"id":46,"url":"http://patchwork.ozlabs.org/api/1.1/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":""},"msgid":"<20260430094238.987976-4-grzegorz.nitka@intel.com>","date":"2026-04-30T09:42:33","name":"[v7,net-next,3/8] dpll: extend pin notifier and netlink events with notification source ID","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"d5e8b7683bd37b5975a3675c60f60810b8edb566","submitter":{"id":82711,"url":"http://patchwork.ozlabs.org/api/1.1/people/82711/?format=json","name":"Nitka, Grzegorz","email":"grzegorz.nitka@intel.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260430094238.987976-4-grzegorz.nitka@intel.com/mbox/","series":[{"id":502259,"url":"http://patchwork.ozlabs.org/api/1.1/series/502259/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=502259","date":"2026-04-30T09:42:30","name":"dpll/ice: Add generic DPLL type and full TX reference clock control for E825","version":7,"mbox":"http://patchwork.ozlabs.org/series/502259/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2231049/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2231049/checks/","tags":{},"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=lnduLsWD;\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 4g5q8K1Sq2z1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 19:47:12 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 269FB42798;\n\tThu, 30 Apr 2026 09:47:08 +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 dHZcW1OHxl4h; Thu, 30 Apr 2026 09:47:05 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id B6D6242791;\n\tThu, 30 Apr 2026 09:47:05 +0000 (UTC)","from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists1.osuosl.org (Postfix) with ESMTP id 6A031192\n for <intel-wired-lan@lists.osuosl.org>; Thu, 30 Apr 2026 09:47:04 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id 509AB84467\n for <intel-wired-lan@lists.osuosl.org>; Thu, 30 Apr 2026 09:47:04 +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 P84LXRQMy_2y for <intel-wired-lan@lists.osuosl.org>;\n Thu, 30 Apr 2026 09:47:00 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.12])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 70A868446E\n for <intel-wired-lan@lists.osuosl.org>; Thu, 30 Apr 2026 09:46:59 +0000 (UTC)","from orviesa001.jf.intel.com ([10.64.159.141])\n by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 02:46:59 -0700","from gklab-003-001.igk.intel.com ([10.91.173.48])\n by orviesa001.jf.intel.com with ESMTP; 30 Apr 2026 02:46:54 -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 B6D6242791","OpenDKIM Filter v2.11.0 smtp1.osuosl.org 70A868446E"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1777542425;\n\tbh=hK7DxD5Tfg64626F9FfmdzbzbLLaFnSmmQAzgjoIjuA=;\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=lnduLsWDQwHF5veHDDN4wSCz/1Fo8WrSKWnJ8Smm+yaiC3Qi3XoNgcaSExPR3v3vq\n\t f+P8isJS06eRgTh8CL/mXZ22y/XuValMlLJed6Y0on3To1t0pQaRUEDKEEzmX28MHx\n\t h7YlIMIdofjSRev7NWDwzZk/qAc+AWJAsIcRurptMuEkiIpFnSUtslioNzty6dD18c\n\t PVw+VTKxngCWUriySowzswqsIwGQbnZg9SKXVx7B32i+s5/GdiWow76CQkLWhOA77Y\n\t SPPYq8pb2BkpKJ7D9ujeIN2HBcGEfQq7RgJoLhBGxMkm64uAMktEJFMKUIgdhRsSjr\n\t 2bqkqm1e9Oc2w==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.12;\n helo=mgamail.intel.com; envelope-from=grzegorz.nitka@intel.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp1.osuosl.org 70A868446E","X-CSE-ConnectionGUID":["HegiiSb6SxGDD1lnI7bQnA==","uRdSpdM6SOiiNRft5sKYZw=="],"X-CSE-MsgGUID":["A7EYXPTqRBmQdY2+Wxsxlg==","e1p1h0mySzqIfXyOIQu5hA=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11771\"; a=\"82342603\"","E=Sophos;i=\"6.23,207,1770624000\"; d=\"scan'208\";a=\"82342603\"","E=Sophos;i=\"6.23,207,1770624000\"; d=\"scan'208\";a=\"272649775\""],"X-ExtLoop1":"1","From":"Grzegorz Nitka <grzegorz.nitka@intel.com>","To":"netdev@vger.kernel.org","Date":"Thu, 30 Apr 2026 11:42:33 +0200","Message-Id":"<20260430094238.987976-4-grzegorz.nitka@intel.com>","X-Mailer":"git-send-email 2.39.3","In-Reply-To":"<20260430094238.987976-1-grzegorz.nitka@intel.com>","References":"<20260430094238.987976-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=1777542420; x=1809078420;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=EOgihlParWdvZQu0pqNNQEy4sT2tgqQbBXWYV2xn2Lg=;\n b=jve0scR5J0qfDxdwX/JVzahYtw4OwyVFkkKOok4YXgG0DEh/HLFpHt3a\n HZqBZmarA5leYq2pwPn6Dy/QgOTzGwhhiEsuVof3ZTpnr2wIK3/YwO7EF\n Fo0vuaZN3uBU8sRr2nvrq01SAc2qRMskswecl6Njwk0lh2a/udW+6RSGs\n q2f5plkvUu/w4s7lms7elMqE05GbH6B6bt2H6fh5iKc48B5l5PCcMXd1i\n A73NRVvkzKYhxcoQwqalPClm1l2TC3dWFUFjHlaSKl3LqvRwWUy6HwLOp\n y+NCd6y9jm5qwmSwfVaMZMsrxkHtBaKNlRAiNOo1vQQAtnCg6SUozo/Pa\n w==;","X-Mailman-Original-Authentication-Results":["smtp1.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com","smtp1.osuosl.org;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.a=rsa-sha256 header.s=Intel header.b=jve0scR5"],"Subject":"[Intel-wired-lan] [PATCH v7 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 afe4552bdcd4..857bd02da7ba 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@@ -949,7 +951,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@@ -995,7 +997,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@@ -1006,7 +1008,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@@ -1032,7 +1034,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 af7ce62ec55c..aeae5afe71c8 100644\n--- a/drivers/dpll/dpll_netlink.c\n+++ b/drivers/dpll/dpll_netlink.c\n@@ -888,21 +888,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 b7277a8b484d..299cef38b657 100644\n--- a/include/linux/dpll.h\n+++ b/include/linux/dpll.h\n@@ -212,6 +212,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":["v7","net-next","3/8"]}