[{"id":3686730,"web_url":"http://patchwork.ozlabs.org/comment/3686730/","msgid":"<20260505215228.8E5B1C2BCB4@smtp.kernel.org>","list_archive_url":null,"date":"2026-05-05T21:52:28","subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","submitter":{"id":93311,"url":"http://patchwork.ozlabs.org/api/people/93311/","name":null,"email":"sashiko-bot@kernel.org"},"content":"Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:\n- [High] Deadlock risk in CPER kfifo registration functions due to non-IRQ-safe spinlocks.\n--\n\ncommit 49bcf423cba32ca4c5cff3926588ae3d815744d1\nAuthor: Dan Williams <djbw@kernel.org>\n\ncxl: Limit CXL-CPER kfifo registration functions scope\n\nThis commit replaces EXPORT_SYMBOL_NS_GPL with EXPORT_SYMBOL_FOR_MODULES\nfor CXL-CPER kfifo registration functions to improve access control. It also\nchanges the register and unregister functions to return void and adds\nsynchronous cancellation during unregistration.\n\n> diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c\n> index 3236a3ce79d6b..dd0a073af93c3 100644\n> --- a/drivers/acpi/apei/ghes.c\n> +++ b/drivers/acpi/apei/ghes.c\n> @@ -778,33 +778,34 @@ static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,\n>  #endif\n>  }\n>  \n> -int cxl_cper_register_prot_err_work(struct work_struct *work)\n> +void cxl_cper_register_prot_err_work(struct work_struct *work)\n>  {\n> -\tif (cxl_cper_prot_err_work)\n> -\t\treturn -EINVAL;\n> -\n>  \tguard(spinlock)(&cxl_cper_prot_err_work_lock);\n\nCould this lead to a deadlock with the hardware error interrupt handler?\n\nLooking at cxl_cper_post_prot_err() which is called from GHES error handling\nin hard IRQ context, it uses the IRQ-safe variant to acquire the same lock:\n\n\tguard(spinlock_irqsave)(&cxl_cper_prot_err_work_lock);\n\nSince guard(spinlock) in cxl_cper_register_prot_err_work() leaves local\ninterrupts enabled, if a hardware error interrupt occurs on the same CPU\nwhile the lock is held here, the interrupt handler will execute\ncxl_cper_post_prot_err() and spin indefinitely waiting for the lock.\n\nWould it be better to use guard(spinlock_irqsave) here and in the unregister\nfunction to prevent this lockup?\n\n> +\tWARN_ONCE(cxl_cper_prot_err_work,\n> +\t\t  \"CPER-CXL kfifo consumer already registered\\n\");\n>  \tcxl_cper_prot_err_work = work;\n> -\treturn 0;\n>  }\n> -EXPORT_SYMBOL_NS_GPL(cxl_cper_register_prot_err_work, \"CXL\");\n> +EXPORT_SYMBOL_FOR_MODULES(cxl_cper_register_prot_err_work, \"cxl_core\");\n>  \n> -int cxl_cper_unregister_prot_err_work(struct work_struct *work)\n> +void cxl_cper_unregister_prot_err_work(void)\n>  {\n> -\tif (cxl_cper_prot_err_work != work)\n> -\t\treturn -EINVAL;\n> +\tstruct work_struct *work;\n>  \n> -\tguard(spinlock)(&cxl_cper_prot_err_work_lock);\n> +\tspin_lock(&cxl_cper_prot_err_work_lock);\n\nSimilarly, does this need to be spin_lock_irqsave() to protect against\nthe same deadlock scenario?\n\n> +\twork = cxl_cper_prot_err_work;\n>  \tcxl_cper_prot_err_work = NULL;\n> -\treturn 0;\n> +\tspin_unlock(&cxl_cper_prot_err_work_lock);\n> +\n> +\tif (work)\n> +\t\tcancel_work_sync(work);\n>  }","headers":{"Return-Path":"\n <linux-pci+bounces-53801-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=sutITQFK;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-53801-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"sutITQFK\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\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 4g9C0w2wpLz1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 07:52:32 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 2837530128D3\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 21:52:30 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 30EBE2F616A;\n\tTue,  5 May 2026 21:52:29 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E29021255A\n\tfor <linux-pci@vger.kernel.org>; Tue,  5 May 2026 21:52:28 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 8E5B1C2BCB4;\n\tTue,  5 May 2026 21:52:28 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778017949; cv=none;\n b=acBj2DaWDhJSROizpnlCHlTZUOZnSddrKlIHnFV4f0ZP+BI+e2w8Q1pfjPa7/wVa5MgHOF5IKUdjER2dWZ1U56ST9bdxNRtpS5gQlt1Xt/RgZfCNJRW9tHJNZa/zqXpiIk8sqhrHrrGsy1t/4Y88dzSG3AMZIXmQzskw9MUA2UM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778017949; c=relaxed/simple;\n\tbh=QkCArRIELECPz1MzPTUCGcwOmLkdbVvcH6SbNnQVk4M=;\n\th=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date:\n\t Message-Id;\n b=rvIJyUBPLURSQ4EkCShQICx3gHbjARyq16jdNiNWCDyMIwNsqocJYbLprjyLQONYgDMvwsL1vsLq9FHXLvglWD6L47G4X9DOVumssK2cxOgzqSEwfc7uQF/UxRC17SrFINU2f3ORtqhOD+jwJ7n0SzVVSC0jgecyyTFoJob6uK0=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=sutITQFK; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778017948;\n\tbh=QkCArRIELECPz1MzPTUCGcwOmLkdbVvcH6SbNnQVk4M=;\n\th=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date:From;\n\tb=sutITQFKa55HHJgIUMf7xgwPgPYLC+GhW7Uxrf2YCE00LFio1IOthPCB8NyI0rsYw\n\t j4nFVxpbiwMfqJxCAyvwIvb0bO7oqKmdTuu4CNwwFhZ/Q/uMJIOABspFjm0UFIqf3X\n\t h0PEMKrNfsYybcXh1Hq1gDtaBLoIEhaH5pnQ5qQ5YsmrMrBXdg5TmHcHM72N14Uj2N\n\t EuclYIYEOcUkcwGuFolx+mosELFGJfUEHZmGdqv11kJp2L9Q9fHDm9wN7j99lLYtsC\n\t T+R8mKXaG+SggVfpprpueKytJQmoKTNpqsV0JiFq1HjusD8iNqYFZ0xGwQTFZybXih\n\t b4irP3PyIY+bw==","From":"sashiko-bot@kernel.org","Subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","Reply-To":"sashiko@lists.linux.dev","To":"\"Terry Bowman\" <terry.bowman@amd.com>","Cc":"linux-pci@vger.kernel.org","In-Reply-To":"<20260505173029.2718246-6-terry.bowman@amd.com>","References":"<20260505173029.2718246-6-terry.bowman@amd.com>","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","Date":"Tue, 05 May 2026 21:52:28 +0000","Message-Id":"<20260505215228.8E5B1C2BCB4@smtp.kernel.org>","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>"}},{"id":3686745,"web_url":"http://patchwork.ozlabs.org/comment/3686745/","msgid":"<0a372718-a3ae-4c8c-94a6-6b6c334cab16@intel.com>","list_archive_url":null,"date":"2026-05-05T22:16:30","subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","submitter":{"id":13225,"url":"http://patchwork.ozlabs.org/api/people/13225/","name":"Dave Jiang","email":"dave.jiang@intel.com"},"content":"On 5/5/26 10:30 AM, Terry Bowman wrote:\n> From: Dan Williams <djbw@kernel.org>\n> \n> Some CPER functions used by CXL drivers are exported using the\n> EXPORT_SYMBOL_NS_GPL(fn, ns) macro. This doesn't provide compile time\n> enforcement or visibility of the consumers.\n> \n> This can be improved by using EXPORT_SYMBOL_FOR_MODULES() instead.\n> EXPORT_SYMBOL_FOR_MODULES() explicitly names the modules that can access\n> the function. This provides more precise control and visibility of symbol\n> exposure than the namespace macro. It also provides compile time checking.\n> \n> To improve control and clarity, update cxl_cper_register_prot_err_work(),\n> cxl_cper_unregister_prot_err_work(), and cxl_cper_prot_err_kfifo_get()\n> to use EXPORT_SYMBOL_FOR_MODULES(). Also, update the register and unregister\n> functions to return void type.\n> \n> Update the CPER kfifo unregister to cancel work while using\n> synchronization.\n> \n> Co-developed-by: Terry Bowman <terry.bowman@amd.com>\n> Signed-off-by: Terry Bowman <terry.bowman@amd.com>\n> Signed-off-by: Dan Williams <djbw@kernel.org>\n\nReviewed-by: Dave Jiang <dave.jiang@intel.com>\n\n\n> \n> ---\n> \n> Changes in v16->v17:\n> - Split from v16 02/10 (\"Update unregistration for AER-CXL and\n>   CPER-CXL kfifos\"); AER-CXL half folded into v17 01/10.\n> - Convert exports to EXPORT_SYMBOL_FOR_MODULES(\"cxl_core\").\n> - Change register/unregister return type from int to void.\n> - Drop work_struct argument from cxl_cper_unregister_prot_err_work();\n>   it now cancels its own work.\n> - Remove now-redundant cancel_work_sync() from cxl_ras_exit().\n> - Add WARN_ONCE() in cxl_cper_register_prot_err_work() for\n>   double-registration.\n> ---\n>  drivers/acpi/apei/ghes.c | 27 ++++++++++++++-------------\n>  drivers/cxl/core/ras.c   |  6 +++---\n>  include/cxl/event.h      | 10 ++++------\n>  3 files changed, 21 insertions(+), 22 deletions(-)\n> \n> diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c\n> index 3236a3ce79d6..dd0a073af93c 100644\n> --- a/drivers/acpi/apei/ghes.c\n> +++ b/drivers/acpi/apei/ghes.c\n> @@ -778,33 +778,34 @@ static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,\n>  #endif\n>  }\n>  \n> -int cxl_cper_register_prot_err_work(struct work_struct *work)\n> +void cxl_cper_register_prot_err_work(struct work_struct *work)\n>  {\n> -\tif (cxl_cper_prot_err_work)\n> -\t\treturn -EINVAL;\n> -\n>  \tguard(spinlock)(&cxl_cper_prot_err_work_lock);\n> +\tWARN_ONCE(cxl_cper_prot_err_work,\n> +\t\t  \"CPER-CXL kfifo consumer already registered\\n\");\n>  \tcxl_cper_prot_err_work = work;\n> -\treturn 0;\n>  }\n> -EXPORT_SYMBOL_NS_GPL(cxl_cper_register_prot_err_work, \"CXL\");\n> +EXPORT_SYMBOL_FOR_MODULES(cxl_cper_register_prot_err_work, \"cxl_core\");\n>  \n> -int cxl_cper_unregister_prot_err_work(struct work_struct *work)\n> +void cxl_cper_unregister_prot_err_work(void)\n>  {\n> -\tif (cxl_cper_prot_err_work != work)\n> -\t\treturn -EINVAL;\n> +\tstruct work_struct *work;\n>  \n> -\tguard(spinlock)(&cxl_cper_prot_err_work_lock);\n> +\tspin_lock(&cxl_cper_prot_err_work_lock);\n> +\twork = cxl_cper_prot_err_work;\n>  \tcxl_cper_prot_err_work = NULL;\n> -\treturn 0;\n> +\tspin_unlock(&cxl_cper_prot_err_work_lock);\n> +\n> +\tif (work)\n> +\t\tcancel_work_sync(work);\n>  }\n> -EXPORT_SYMBOL_NS_GPL(cxl_cper_unregister_prot_err_work, \"CXL\");\n> +EXPORT_SYMBOL_FOR_MODULES(cxl_cper_unregister_prot_err_work, \"cxl_core\");\n>  \n>  int cxl_cper_prot_err_kfifo_get(struct cxl_cper_prot_err_work_data *wd)\n>  {\n>  \treturn kfifo_get(&cxl_cper_prot_err_fifo, wd);\n>  }\n> -EXPORT_SYMBOL_NS_GPL(cxl_cper_prot_err_kfifo_get, \"CXL\");\n> +EXPORT_SYMBOL_FOR_MODULES(cxl_cper_prot_err_kfifo_get, \"cxl_core\");\n>  \n>  /* Room for 8 entries for each of the 4 event log queues */\n>  #define CXL_CPER_FIFO_DEPTH 32\n> diff --git a/drivers/cxl/core/ras.c b/drivers/cxl/core/ras.c\n> index 56611da8357a..9193dac4e507 100644\n> --- a/drivers/cxl/core/ras.c\n> +++ b/drivers/cxl/core/ras.c\n> @@ -68,13 +68,13 @@ static DECLARE_WORK(cxl_cper_prot_err_work, cxl_cper_prot_err_work_fn);\n>  \n>  int cxl_ras_init(void)\n>  {\n> -\treturn cxl_cper_register_prot_err_work(&cxl_cper_prot_err_work);\n> +\tcxl_cper_register_prot_err_work(&cxl_cper_prot_err_work);\n> +\treturn 0;\n>  }\n>  \n>  void cxl_ras_exit(void)\n>  {\n> -\tcxl_cper_unregister_prot_err_work(&cxl_cper_prot_err_work);\n> -\tcancel_work_sync(&cxl_cper_prot_err_work);\n> +\tcxl_cper_unregister_prot_err_work();\n>  }\n>  \n>  static void cxl_dport_map_ras(struct cxl_dport *dport)\n> diff --git a/include/cxl/event.h b/include/cxl/event.h\n> index ff97fea718d2..51acedb0d683 100644\n> --- a/include/cxl/event.h\n> +++ b/include/cxl/event.h\n> @@ -289,8 +289,8 @@ struct cxl_cper_prot_err_work_data {\n>  int cxl_cper_register_work(struct work_struct *work);\n>  int cxl_cper_unregister_work(struct work_struct *work);\n>  int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd);\n> -int cxl_cper_register_prot_err_work(struct work_struct *work);\n> -int cxl_cper_unregister_prot_err_work(struct work_struct *work);\n> +void cxl_cper_register_prot_err_work(struct work_struct *work);\n> +void cxl_cper_unregister_prot_err_work(void);\n>  int cxl_cper_prot_err_kfifo_get(struct cxl_cper_prot_err_work_data *wd);\n>  #else\n>  static inline int cxl_cper_register_work(struct work_struct *work)\n> @@ -306,13 +306,11 @@ static inline int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd)\n>  {\n>  \treturn 0;\n>  }\n> -static inline int cxl_cper_register_prot_err_work(struct work_struct *work)\n> +static inline void cxl_cper_register_prot_err_work(struct work_struct *work)\n>  {\n> -\treturn 0;\n>  }\n> -static inline int cxl_cper_unregister_prot_err_work(struct work_struct *work)\n> +static inline void cxl_cper_unregister_prot_err_work(void)\n>  {\n> -\treturn 0;\n>  }\n>  static inline int cxl_cper_prot_err_kfifo_get(struct cxl_cper_prot_err_work_data *wd)\n>  {","headers":{"Return-Path":"\n <linux-pci+bounces-53806-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=WKMhNlH2;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53806-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"WKMhNlH2\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=192.198.163.15","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=intel.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4g9CXk5h4nz1yJq\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 08:16:38 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 6F9AB30432E7\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 22:16:36 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A138233F5B3;\n\tTue,  5 May 2026 22:16:35 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.15])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 6674B31716D;\n\tTue,  5 May 2026 22:16:33 +0000 (UTC)","from orviesa006.jf.intel.com ([10.64.159.146])\n  by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 May 2026 15:16:32 -0700","from spandruv-mobl5.amr.corp.intel.com (HELO [10.125.110.85])\n ([10.125.110.85])\n  by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 May 2026 15:16:31 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778019395; cv=none;\n b=ubwFbgqYHi2N2zC/16qHCoGfGFD15qlTM8MzpwLH6E0HJxvgzAwKHi6QAb2IwFbB7Dr6BiRBil9G/dweCQLMsoo3IPL5ESMMdGx/l/u+V5QH39kI6cA7y/uihM9vneWNkaH/SUKSf2H5ta4kLqvYU7Ks/PxUa/R00jgXu+jGYAI=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778019395; c=relaxed/simple;\n\tbh=2kn9vnW/RQZlq9cSKZLyrOnx2FcEcdncD2IH1ClVi+s=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=ZhICr71kdeEkEXp/CltqQ/wjTUwlXcEb+AYj78WjgXTIsG2b0MjgG0xu6952/nA+3jnz8lZWALqsgVX3MoJ077DBHEX3PLyoix+Ie/19yZNTumlGCVN9eBpgU0WcPACAugbh3Z79fJGrT5qWt7kmf02pmPXdNoNKieLZtxFu/oQ=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com;\n spf=pass smtp.mailfrom=intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=WKMhNlH2; arc=none smtp.client-ip=192.198.163.15","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1778019393; x=1809555393;\n  h=message-id:date:mime-version:subject:to:cc:references:\n   from:in-reply-to:content-transfer-encoding;\n  bh=2kn9vnW/RQZlq9cSKZLyrOnx2FcEcdncD2IH1ClVi+s=;\n  b=WKMhNlH2bvtEL0//pY3DJl5pqWueH8xnIRnbSe0KmNSDdAaEbYMbSfS0\n   YXDTHNJgxf0Xq+vyGJ93WKB9O+iaNssgrK5VT6pnPc44EQVlFdcXIJ33D\n   DCfhdq2+pnlWtyUSy3U82QJVWeds/C+KKpsybHmGIuiTHQFISN3spnxz3\n   W64s1WM0w2fRNYvQgrSJ47KO1j5VGa+nUjYyV58QFcKV+0nIqJGfv9Y8K\n   9JEhid6dMupkg+Dsusj4RYNQYPc/PxyiZQpdMZqnkgFa7sHPqYfUzSPWV\n   mB25au8kG0zULh03dhNpyyuDp/u7iDnz4mwnj5dZpaco2YAnYlce7fMob\n   Q==;","X-CSE-ConnectionGUID":["i8xO3omuTGCrN/1YrZ+Kpw==","Zm8/Zq25Rem6IsII6PyFkQ=="],"X-CSE-MsgGUID":["i1+jg5jFTPGb4Ldk6a/H+A==","FrPtP51RQhmnzK0vxrlPVg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11777\"; a=\"79004777\"","E=Sophos;i=\"6.23,218,1770624000\";\n   d=\"scan'208\";a=\"79004777\"","E=Sophos;i=\"6.23,218,1770624000\";\n   d=\"scan'208\";a=\"234940856\""],"X-ExtLoop1":"1","Message-ID":"<0a372718-a3ae-4c8c-94a6-6b6c334cab16@intel.com>","Date":"Tue, 5 May 2026 15:16:30 -0700","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","To":"Terry Bowman <terry.bowman@amd.com>, dave@stgolabs.net, jic23@kernel.org,\n alison.schofield@intel.com, djbw@kernel.org, bhelgaas@google.com,\n ming.li@zohomail.com, Smita.KoralahalliChannabasappa@amd.com,\n rrichter@amd.com, PradeepVineshReddy.Kodamati@amd.com, lukas@wunner.de,\n Benjamin.Cheatham@amd.com, sathyanarayanan.kuppuswamy@linux.intel.com,\n vishal.l.verma@intel.com, alucerop@amd.com, ira.weiny@intel.com,\n corbet@lwn.net, rafael@kernel.org, xueshuai@linux.alibaba.com,\n linux-cxl@vger.kernel.org","Cc":"linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org","References":"<20260505173029.2718246-1-terry.bowman@amd.com>\n <20260505173029.2718246-6-terry.bowman@amd.com>","Content-Language":"en-US","From":"Dave Jiang <dave.jiang@intel.com>","In-Reply-To":"<20260505173029.2718246-6-terry.bowman@amd.com>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit"}},{"id":3687980,"web_url":"http://patchwork.ozlabs.org/comment/3687980/","msgid":"<20260507191450.45bc94c9@jic23-huawei>","list_archive_url":null,"date":"2026-05-07T18:14:50","subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","submitter":{"id":10151,"url":"http://patchwork.ozlabs.org/api/people/10151/","name":"Jonathan Cameron","email":"jic23@kernel.org"},"content":"On Tue, 5 May 2026 12:30:23 -0500\nTerry Bowman <terry.bowman@amd.com> wrote:\n\n> From: Dan Williams <djbw@kernel.org>\n> \n> Some CPER functions used by CXL drivers are exported using the\n> EXPORT_SYMBOL_NS_GPL(fn, ns) macro. This doesn't provide compile time\n> enforcement or visibility of the consumers.\n> \n> This can be improved by using EXPORT_SYMBOL_FOR_MODULES() instead.\n> EXPORT_SYMBOL_FOR_MODULES() explicitly names the modules that can access\n> the function. This provides more precise control and visibility of symbol\n> exposure than the namespace macro. It also provides compile time checking.\n> \n> To improve control and clarity, update cxl_cper_register_prot_err_work(),\n> cxl_cper_unregister_prot_err_work(), and cxl_cper_prot_err_kfifo_get()\n> to use EXPORT_SYMBOL_FOR_MODULES(). Also, update the register and unregister\n> functions to return void type.\n> \n> Update the CPER kfifo unregister to cancel work while using\n> synchronization.\n> \n> Co-developed-by: Terry Bowman <terry.bowman@amd.com>\n> Signed-off-by: Terry Bowman <terry.bowman@amd.com>\n> Signed-off-by: Dan Williams <djbw@kernel.org>\nOne suggestion on simplifying the code by removing any assumption that\ncxl_ras_init() can fail.\n\n\n> diff --git a/drivers/cxl/core/ras.c b/drivers/cxl/core/ras.c\n> index 56611da8357a..9193dac4e507 100644\n> --- a/drivers/cxl/core/ras.c\n> +++ b/drivers/cxl/core/ras.c\n> @@ -68,13 +68,13 @@ static DECLARE_WORK(cxl_cper_prot_err_work, cxl_cper_prot_err_work_fn);\n>  \n>  int cxl_ras_init(void)\n>  {\n> -\treturn cxl_cper_register_prot_err_work(&cxl_cper_prot_err_work);\n> +\tcxl_cper_register_prot_err_work(&cxl_cper_prot_err_work);\n> +\treturn 0;\n\nI'm lazy and haven't read on, but if this never gains a failure\npath can we change the signature whilst we are here to stop\npretending it does?\n\n>  }","headers":{"Return-Path":"\n <linux-pci+bounces-54113-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=odT3AOTy;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-54113-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"odT3AOTy\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBL5Q10yyz1yKd\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 04:15:21 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 2CC93302AE3D\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  7 May 2026 18:15:06 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 4C3664534BA;\n\tThu,  7 May 2026 18:15:05 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 268D23254BB;\n\tThu,  7 May 2026 18:15:04 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 2F234C2BCF4;\n\tThu,  7 May 2026 18:14:54 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778177705; cv=none;\n b=OLtHlrY3E3ts9vfavL5uNLXeI9tOk+NtY78ylZ9Jlq7ZmHeycbzVe0hhisZ67epBdJhEaOVBtvll2zqrihvGLxTQmwcHySnSpIBdRA5KBqlU1W4IThV1bm2VJXraMv6diKTz/kUhOh4imFoIkcwXi5AmiWQkH1a5cDLCFbDRHCE=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778177705; c=relaxed/simple;\n\tbh=1ZHpkraCUVfj/DVCsCLxIvmiS48UB4Veqo9jiYhmobk=;\n\th=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=J1Ef5L1tg0XvoUGNYaD6qk3krmMqdNzA9kmY+sGwJSWORCreMsaEPAQJy1bPkJnziIBwrUYzhTdHW29xaITzLlsGiUVyr/4A5YrQPy1EMR0SB9Z2pkDP8lioHdIF/rR9zrYmpcuIJrtKVYrxZV3zozlghgcCNkHBGJNwogutWqI=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=odT3AOTy; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778177704;\n\tbh=1ZHpkraCUVfj/DVCsCLxIvmiS48UB4Veqo9jiYhmobk=;\n\th=Date:From:To:Cc:Subject:In-Reply-To:References:From;\n\tb=odT3AOTyYMwi0Ux+dDOMJroN1MjBQkY1pJLUSScRDC0Wxig7lWZ0XN0Trg1fPCFAC\n\t BuoXyfMnAqUzYJhqvaLVpsskP9pBTJsoJzAJGcdJYkYhTOi2AnkcLIDuCUTDrblTSV\n\t 8YmI+clFFR2hUgsQTMU98ab5VxOa8hIOSo7Gd7w3p8XktEn/ny/FV8TeSNNHI6zTFZ\n\t JoRSi7iy7QvgPKLaZ6mii9hYc50IIZiqMBpgOC9Uy3n+8SGhyw9Nqng3fQVy/Hzfqn\n\t LV3WzLvNhTJ/nqjWSRCUrM2e4nxQbNGpwsLKehRdXNem8dG7f8B5t+MlsDy6I/NZ8g\n\t VyZiUbM3V5tAg==","Date":"Thu, 7 May 2026 19:14:50 +0100","From":"Jonathan Cameron <jic23@kernel.org>","To":"Terry Bowman <terry.bowman@amd.com>","Cc":"<dave@stgolabs.net>, <dave.jiang@intel.com>,\n <alison.schofield@intel.com>, <djbw@kernel.org>, <bhelgaas@google.com>,\n <shiju.jose@huawei.com>, <ming.li@zohomail.com>,\n <Smita.KoralahalliChannabasappa@amd.com>, <rrichter@amd.com>,\n <dan.carpenter@linaro.org>, <PradeepVineshReddy.Kodamati@amd.com>,\n <lukas@wunner.de>, <Benjamin.Cheatham@amd.com>,\n <sathyanarayanan.kuppuswamy@linux.intel.com>, <vishal.l.verma@intel.com>,\n <alucerop@amd.com>, <ira.weiny@intel.com>, <corbet@lwn.net>,\n <rafael@kernel.org>, <xueshuai@linux.alibaba.com>,\n <linux-cxl@vger.kernel.org>, <linux-kernel@vger.kernel.org>,\n <linux-pci@vger.kernel.org>, <linux-acpi@vger.kernel.org>,\n <linux-doc@vger.kernel.org>","Subject":"Re: [PATCH v17 05/11] cxl: Limit CXL-CPER kfifo registration\n functions scope","Message-ID":"<20260507191450.45bc94c9@jic23-huawei>","In-Reply-To":"<20260505173029.2718246-6-terry.bowman@amd.com>","References":"<20260505173029.2718246-1-terry.bowman@amd.com>\n\t<20260505173029.2718246-6-terry.bowman@amd.com>","X-Mailer":"Claws Mail 4.4.0 (GTK 3.24.52; x86_64-pc-linux-gnu)","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","Content-Transfer-Encoding":"7bit"}}]