[{"id":3688761,"web_url":"http://patchwork.ozlabs.org/comment/3688761/","msgid":"<20260508230040.GA29318@bhelgaas>","date":"2026-05-08T23:00:40","subject":"Re: [PATCH v7 00/24] PCI: Convert all dynamic sysfs attributes to\n static","submitter":{"id":67298,"url":"http://patchwork.ozlabs.org/api/people/67298/","name":"Bjorn Helgaas","email":"helgaas@kernel.org"},"content":"On Fri, May 08, 2026 at 04:35:19AM +0000, Krzysztof Wilczyński wrote:\n> Hello,\n> \n> This series converts every dynamically allocated PCI sysfs attribute to\n> a static const definition.  After the full series, pci_sysfs_init() and\n> sysfs_initialized are gone, and every sysfs file is created by the\n> driver model at device_add() time.\n> \n> Currently, the PCI resource files (resourceN, resourceN_wc) and the\n> legacy bus files (legacy_io, legacy_mem) are created dynamically\n> from two unsynchronised paths:\n> \n> Path A: late_initcall\n> \n>   pci_sysfs_init()                        (late_initcall)\n>     sysfs_initialized = 1\n>     for_each_pci_dev()\n>       pci_create_sysfs_dev_files()\n>         sysfs_create_bin_file()           (resourceN, resourceN_wc)\n>     pci_find_next_bus()\n>       pci_create_legacy_files()\n>         sysfs_create_bin_file()           (legacy_io, legacy_mem)\n> \n> Path B: device registration / hotplug\n> \n>   pci_bus_add_devices()\n>     pci_bus_add_device()\n>       pci_create_sysfs_dev_files()\n>         if (!sysfs_initialized)           <- only guard\n>           return\n>         sysfs_create_bin_file()           (resourceN, resourceN_wc)\n> \n> On most ACPI systems this does not race because PCI enumeration\n> completes at subsys_initcall time, before pci_sysfs_init() runs:\n> \n>   subsys_initcall (level 4):\n>     acpi_pci_root_add()\n>       pci_bus_add_device()\n>         pci_create_sysfs_dev_files()\n>           if (!sysfs_initialized)         <- variable not yet set\n>             return -EACCES\n> \n>   late_initcall (level 7):\n>     pci_sysfs_init()\n>       sysfs_initialized = 1\n>       for_each_pci_dev()\n>         pci_create_sysfs_dev_files()      <- creates the files, no race\n> \n> On Devicetree platforms the host controller is a platform driver that\n> probes via the driver model, often on a workqueue, and overlaps with the\n> late_initcall:\n> \n>   CPU 0 (late_initcall)                CPU 1 (driver probe)\n>   ---------------------------          ----------------------------\n>   pci_sysfs_init()\n>     sysfs_initialized = 1\n>     for_each_pci_dev()                 pci_bus_add_device()\n>       pci_create_sysfs_dev_files()       pci_create_sysfs_dev_files()\n>         sysfs_create_bin_file()            sysfs_create_bin_file()\n>                                              -> \"duplicate filename\"\n> \n> The same happens on ACPI when probing is asynchronous (hv_pci on\n> Azure, RISC-V with ACPI).\n> \n> The duplicate causes sysfs_create_bin_file() to fail with -EEXIST.\n> pci_create_resource_files() then calls pci_remove_resource_files() in\n> its error unwind, tearing down files the other thread created and\n> still references through pdev->res_attr[].  This has caused kernel\n> panics on i.MX6 and boot failures on other platforms.\n> \n> Several different fixes have been proposed over the years: reordering\n> the sysfs_initialized assignment, adding locks, checking\n> pci_dev_is_added(), setting pdev->res_attr[] to NULL after kfree\n> (which only prevents a double-free on the teardown path, not the\n> error unwind removing the other thread's files).  None would address the\n> root cause.\n> \n> This has been reported a few times:\n> \n>   - https://lore.kernel.org/linux-pci/20250702155112.40124-1-heshuan@bytedance.com/\n>   - https://lore.kernel.org/linux-pci/b51519d6-ce45-4b6d-8135-c70169bd110e@h-partners.com/\n>   - https://lore.kernel.org/linux-pci/1702093576-30405-1-git-send-email-ssengar@linux.microsoft.com/\n>   - https://lore.kernel.org/linux-pci/SY0P300MB04687548090B73E40AF97D8897B82@SY0P300MB0468.AUSP300.PROD.OUTLOOK.COM/\n>   - https://lore.kernel.org/linux-pci/20230105174736.GA1154719@bhelgaas/\n>   - https://lore.kernel.org/linux-pci/m3eebg9puj.fsf@t19.piap.pl/\n>   - https://lore.kernel.org/linux-pci/20200716110423.xtfyb3n6tn5ixedh@pali/\n>   - https://lore.kernel.org/linux-pci/1366196798-15929-1-git-send-email-artem.savkov@gmail.com/\n>   - https://bugzilla.kernel.org/show_bug.cgi?id=215515\n>   - https://bugzilla.kernel.org/show_bug.cgi?id=216888\n> \n> With static attributes the driver model creates sysfs entries once per\n> device at device_add() time, under the device lock, eliminating the\n> late_initcall iteration and the race along with it.\n> \n> \tKrzysztof\n> \n> ---\n> Changes in v7:\n>   https://lore.kernel.org/linux-pci/20260422161407.118748-1-kwilczynski@kernel.org/\n> \n>   - Addded Alex Williamson (author of the resource resize sysfs\n>     attributes) to the list of recipients for visibility.\n>   - Split pci_llseek_resource() into pci_llseek_resource() and\n>     pci_llseek_resource_legacy() since legacy attributes operate\n>     on a struct pci_bus where to_pci_dev() would be invalid,\n>     as per Bjorn Helgaas' feedback.\n>   - Moved each llseek variant inside its respective #ifdef guard\n>     during the corresponding dynamic-to-static conversion commit,\n>     dropping the __maybe_unused annotations.\n>   - Extended the WARN macro removal to also cover __legacy_mmap_fits().\n>   - Updated commit message of patch 18, so that it correctly mentions\n>     pci_stop_dev() rather than pci_stop_bus_device().\n>   - Updated commit message of patch 24 to clarify the indirect\n>     relationship between ReBAR and the HAVE_PCI_MMAP and/or\n>     ARCH_GENERIC_PCI_MMAP_RESOURCE guards.\n> \n> Changes in v6:\n>   https://lore.kernel.org/linux-pci/20260416180107.777065-1-kwilczynski@kernel.org/\n> \n>    - Fixed commit message for patch 13, removing reference to\n>      pci_resource_flags() which was no longer changed there.\n>    - Added a new patch (24) to move the BAR resource resize\n>      (ReBAR) support behind existing PCI mmap #ifdef guard,\n>      so that the code is not included on architectures that\n>      do not support resource resizing (i.e., Alpha, etc.).\n> \n> Changes in v5:\n>   https://lore.kernel.org/linux-pci/20260411080148.471335-1-kwilczynski@kernel.org/\n>   \n>    - Added new Tested-by, Reviewed-by, and Acked-by tags.\n>    - Used the existing _io function names in the static macro\n>      definitions, deferring the rename to the conversion commit\n>      where it belongs, to avoid a forward reference across\n>      commits. This was reported by Sashiko, see:\n>      https://sashiko.dev/#/patchset/20260411080148.471335-1-kwilczynski%40kernel.org?part=6\n>    - Folded the __resource_resize_store() conversion into the\n>      main static attributes commit so the resize path is never\n>      broken between commits. This was reported by Sashiko, see:\n>      https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=6\n>      https://sashiko.dev/#/patchset/20260411080148.471335-1-kwilczynski%40kernel.org?part=7\n>    - Dropped the unnecessary parentheses cleanup from the Alpha\n>      BAR index commit, as the line is replaced two commits later\n>      anyway, as per Ilpo Järvinen's feedback.\n>    - Squashed the Alpha accessor macro and cleanup commits into\n>      one, using pci_resource_is_mem() directly instead of the\n>      intermediate pci_resource_flags() step, as per Ilpo\n>      Järvinen's feedback.\n>    - Moved the raw literal conversion in pci_create_legacy_files()\n>      into the macro definition commit, so the macros and their\n>      usage are introduced together, as per Ilpo Järvinen's\n>      feedback.\n>    - Removed unnecessary backslash line continuation from the\n>      ternary in pci_mmap_legacy_page_range().\n>    - Kept pci_resource_len() for visibility checks instead of\n>      resource_assigned().  The static is_visible() callback\n>      runs at device_add() time during the PCI enumeration,\n>      before the pci_assign_unassigned_bus_resources() populates\n>      res->parent, as such, resource_assigned() returned false\n>      for every BAR, hiding all resource files.  This is related\n>      to review feedback from Ilpo Järvinen.\n> \n> Changes in v4:\n>   https://lore.kernel.org/linux-pci/20260410055040.39233-1-kwilczynski@kernel.org/\n> \n>    - Added new Reviewed-by tags.\n>    - Added pci_resource_is_io() and pci_resource_is_mem() helpers\n>      for resource type checks, replacing the open-coded bitwise\n>      flag tests in pci_mmap_resource(), pci_resource_io(), and\n>      Alpha's pci_mmap_resource(), as per Ilpo Järvinen's\n>      suggestion.\n>    - Split the __pci_mmap_fits() cleanup into two patches.  An\n>      overflow fix for zero-length BARs, which now includes a\n>      Fixes: tag referencing the original Alpha PCI sysfs commit,\n>      and the WARN macro removal is a separate cleanup as per Ilpo\n>      Järvinen's suggestion.\n>    - Added a missing Fixes: tag to the Alpha lockdown check,\n>      referencing the commit that added the check to the generic\n>      path but missed Alpha's implementation.\n>    - Added PCI_LEGACY_IO_SIZE and PCI_LEGACY_MEM_SIZE macros to\n>      replace the raw literals used for legacy address space sizes.\n>      These are used in both Alpha's pci_mmap_legacy_page_range()\n>      and the static legacy attribute definitions, as per Ilpo\n>      Järvinen's suggestion.\n>    - Replaced sysfs_update_groups() in the BAR resize path with\n>      sysfs_remove_groups() before the resize and sysfs_create_groups()\n>      after, restoring the original teardown before BAR resize\n>      ordering.  This was reported by Sashiko, see:\n>      https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=7\n>    - Defined pci_dev_resource_attr_groups as a NULL macro when\n>      HAVE_PCI_MMAP and ARCH_GENERIC_PCI_MMAP_RESOURCE are both\n>      absent, so the resize path compiles unconditionally without\n>      #ifdef guards in the function body.  This was reported by\n>      Sashiko, see:\n>      https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=7\n>    - Moved the pci_legacy_has_sparse() prototype into the patch\n>      that introduces the function, alongside the existing\n>      pci_adjust_legacy_attr() declaration, to fix a bisection\n>      issue where Alpha would warn on -Wmissing-prototypes.\n>      This was reported by Sashiko, see:\n>      https://sashiko.dev/#/patchset/20260410055040.39233-1-kwilczynski%40kernel.org?part=18\n> \n> Changes in v3:\n>   https://lore.kernel.org/linux-pci/20210910202623.2293708-1-kw@linux.com/\n> \n>   - Updated for modern kernel releases and expanded scope.  The\n>     v2 only covered the generic resource files.  This version\n>     also converts Alpha's sparse/dense resource files and the\n>     legacy bus attributes, removing pci_sysfs_init() entirely.\n>   - Split the single macro definition into three distinct ones\n>     (per I/O, UC, and WC), to make sure that each carries only\n>     the callbacks its resource type needs.\n>   - Updated to use the new .bin_size callback, as the attributes\n>     are const, to replace using a->size directly, which was not\n>     ideal.  This required changes to pci_llseek_resource(), to\n>     ensure that it would work for device and bus-level attributes.\n>   - Updated the __resource_resize_store() to include CAP_SYS_ADMIN\n>     capabilities check.\n>   - Added the security_locked_down() check to Alpha's\n>     pci_mmap_resource(), to align with other architectures.\n> \n> Changes in v2:\n>   https://lore.kernel.org/linux-pci/20210825212255.878043-1-kw@linux.com/\n> \n>   - Refactored code so that the macros, helpers and internal\n>     functions can be used to correctly leverage the read(),\n>     write() and mmap() callbacks rather than to use the\n>     .is_bin_visible() callback to set up sysfs objects\n>     internals as this is not supported.\n>   - Refactored some if-statements to check for a resource\n>     flag first, and then call either arch_can_pci_mmap_io()\n>     or arch_can_pci_mmap_wc(), plus store result of testing\n>     for IORESOURCE_MEM and IORESOURCE_PREFETCH flags into\n>     a boolean variable, as per Bjorn Helgaas' suggestion.\n>   - Renamed pci_read_resource_io() and pci_write_resource_io()\n>     callbacks so that these are not specifically tied to I/O\n>     BARs read() and write() operations also as per Bjorn\n>     Helgaas' suggestion.\n>   - Updated style for code handling bitwise operations to\n>     match the style that is preferred as per Bjorn Helgaas'\n>     suggestion.\n>   - Updated commit messages adding more details about the\n>     implementation as requested by Bjorn Helgaas.\n> \n> Krzysztof Wilczyński (24):\n>   PCI/sysfs: Use PCI resource accessor macros\n>   PCI: Add pci_resource_is_io() and pci_resource_is_mem() helpers\n>   PCI/sysfs: Only allow supported resource types in I/O and MMIO helpers\n>   PCI/sysfs: Split pci_llseek_resource() for device and legacy\n>     attributes\n>   PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store()\n>   PCI/sysfs: Add static PCI resource attribute macros\n>   PCI/sysfs: Convert PCI resource files to static attributes\n>   PCI/sysfs: Warn about BAR resize failure in __resource_resize_store()\n>   PCI/sysfs: Add stubs for pci_{create,remove}_sysfs_dev_files()\n>   PCI/sysfs: Limit pci_sysfs_init() late_initcall compile scope\n>   alpha/PCI: Add security_locked_down() check to pci_mmap_resource()\n>   alpha/PCI: Use BAR index in sysfs attr->private instead of resource\n>     pointer\n>   alpha/PCI: Use PCI resource accessor macros\n>   alpha/PCI: Fix __pci_mmap_fits() overflow for zero-length BARs\n>   alpha/PCI: Remove WARN from __pci_mmap_fits() and __legacy_mmap_fits()\n>   alpha/PCI: Add static PCI resource attribute macros\n>   alpha/PCI: Convert resource files to static attributes\n>   PCI/sysfs: Remove pci_{create,remove}_sysfs_dev_files()\n>   PCI: Add macros for legacy I/O and memory address space sizes\n>   alpha/PCI: Compute legacy size in pci_mmap_legacy_page_range()\n>   PCI/sysfs: Add __weak pci_legacy_has_sparse() helper\n>   PCI/sysfs: Convert legacy I/O and memory attributes to static\n>     definitions\n>   PCI/sysfs: Remove pci_create_legacy_files() and pci_sysfs_init()\n>   PCI/sysfs: Limit BAR resize attribute scope to platforms with PCI mmap\n> \n>  arch/alpha/include/asm/pci.h   |  13 +-\n>  arch/alpha/kernel/pci-sysfs.c  | 385 +++++++++++----------\n>  arch/powerpc/include/asm/pci.h |   2 -\n>  drivers/pci/bus.c              |   1 -\n>  drivers/pci/pci-sysfs.c        | 592 +++++++++++++++++++--------------\n>  drivers/pci/pci.h              |  16 +-\n>  drivers/pci/probe.c            |   6 -\n>  drivers/pci/remove.c           |   3 -\n>  include/linux/pci.h            |  39 ++-\n>  9 files changed, 589 insertions(+), 468 deletions(-)\n\nUpdated pci/sysfs to this series, thank you very much!  Looks great!","headers":{"Return-Path":"\n <linuxppc-dev+bounces-20629-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.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=avPUFc4g;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-20629-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2600:3c04:e001:324:0:1991:8:25\"","lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org","lists.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=avPUFc4g;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org\n (client-ip=2600:3c04:e001:324:0:1991:8:25; helo=tor.source.kernel.org;\n envelope-from=helgaas@kernel.org; receiver=lists.ozlabs.org)"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gC4NN0Dt9z1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 09 May 2026 09:00:49 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4gC4NJ2gh1z2xpt;\n\tSat, 09 May 2026 09:00:48 +1000 (AEST)","from tor.source.kernel.org (tor.source.kernel.org\n [IPv6:2600:3c04:e001:324:0:1991:8:25])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4gC4NF6CNYz2xnK\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sat, 09 May 2026 09:00:45 +1000 (AEST)","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby tor.source.kernel.org (Postfix) with ESMTP id A17156024D;\n\tFri,  8 May 2026 23:00:42 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 3BBF4C2BCB0;\n\tFri,  8 May 2026 23:00:42 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1778281248;\n\tcv=none;\n b=GIdra6kWpXpM/Ba6LwDYOhNC0nA8fl38qFcGqTgNT9ffUCamna5hrpIQNJhc26yOMIOmW2CmOnEeY/5CGGbcdMCXQOIA6QW+cBudMPhRriv5tuB+EybkBhOwB+8q5fWI4nxyJC3VoE70o6j9hv/t+GXvLdrsPgk/wIcf275OHEbZ1N6AYSoyG9SYh2StFZGKEoTu8i4bVECqVEqgeD18yS88sDNb00AdIDEfBwP58y6K3RY1JRa64RS+o4xooIY1hkj3g2PRqiaNGguSd/8o+9m3mo9+EUOEXl8/3/aOHkykg5HvyvXZOI1Q7msho+z/07ExsT3B+GKZrnDOcpyADA==","ARC-Message-Signature":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1778281248; c=relaxed/relaxed;\n\tbh=O2G/ziMEFdL0pgo+p1zjbUQko3gkhEyDn5d9XvTMn+8=;\n\th=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:\n\t Content-Disposition:In-Reply-To;\n b=B4D4u8eeJXI5Nl70Mink6mxb12B6e4e0zkGaojk9AXxixn0Z90bv5YXH8lfgqyFAd3+NFgW9WV35pThIITgnnzFX3XT27rXrcr97aArosCh7t7vm6nzvWMbLZkjndthljYm+LX17J601+D16xeSaNZAP1hEHQO6BPdojZT18w7iMT1uDzM+tZWR3JsT+OyK1uMRpMlx6vHnjLJNHrejne0aiKw5viS2XDxbXD+EJajzqS8yTiJWhPIxe6yma3U4JiGHBIEPzZFn7KEvg2Tkj7K2pDCSEnIcloH3YHql4FhwW1ITX8GXMv33MuLZi9o1hpVchNrz1zHe3fPJSUihgNg==","ARC-Authentication-Results":"i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=avPUFc4g; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c04:e001:324:0:1991:8:25;\n helo=tor.source.kernel.org; envelope-from=helgaas@kernel.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=kernel.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778281242;\n\tbh=oEngaZAwPI7Pm3q4uwFuvqJJYnhHy4MdMYAlYUFGwjQ=;\n\th=Date:From:To:Cc:Subject:In-Reply-To:From;\n\tb=avPUFc4g1/52FD+STEoTVCWmzaJsKjBNzKgnEU+3Hn0UPRk4N7bHeZh7p6f9OpN+8\n\t prH9FbfDoR9Vx9PPZJuLGQdmz3X7ulei/I9O0VCFsuNdu/pvKs7Jr8X4qlcAaR5M9k\n\t rgmNOz2LRsKerr9tFAR6L9o97i4W21yLJXWx7NyXdvAcaRA5ix92PBhZVblsP7nWrw\n\t KxtUhYe5iWj13tQrbCPcjqX2qoLfzupRzg93WEgmUYVsr+3eGsbW+YKg9cuY4ADtFx\n\t rWxjxnHO+bJSKbdVCtClaUfBwRiM7LQwET4n3jLBCdi18llx14FFt7aQt3E3IJ7Qjv\n\t jgMDmAO7kiSCA==","Date":"Fri, 8 May 2026 18:00:40 -0500","From":"Bjorn Helgaas <helgaas@kernel.org>","To":"Krzysztof =?utf-8?q?Wilczy=C5=84ski?= <kwilczynski@kernel.org>","Cc":"Bjorn Helgaas <bhelgaas@google.com>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>,\n Alex Williamson <alex@shazbot.org>, Magnus Lindholm <linmag7@gmail.com>,\n Matt Turner <mattst88@gmail.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Christophe Leroy <chleroy@kernel.org>,\n Madhavan Srinivasan <maddy@linux.ibm.com>,\n Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,\n Dexuan Cui <decui@microsoft.com>,\n Krzysztof =?utf-8?q?Ha=C5=82asa?= <khalasa@piap.pl>,\n Lukas Wunner <lukas@wunner.de>, Oliver O'Halloran <oohall@gmail.com>,\n Saurabh Singh Sengar <ssengar@microsoft.com>,\n Shuan He <heshuan@bytedance.com>, Srivatsa Bhat <srivatsabhat@microsoft.com>,\n Ilpo =?utf-8?b?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,\n linux-pci@vger.kernel.org, linux-alpha@vger.kernel.org,\n linuxppc-dev@lists.ozlabs.org","Subject":"Re: [PATCH v7 00/24] PCI: Convert all dynamic sysfs attributes to\n static","Message-ID":"<20260508230040.GA29318@bhelgaas>","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260508043543.217179-1-kwilczynski@kernel.org>","X-Spam-Status":"No, score=-0.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"}}]