From: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Bjorn Helgaas" <bhelgaas@google.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Magnus Lindholm" <linmag7@gmail.com>,
"Matt Turner" <mattst88@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Christophe Leroy" <chleroy@kernel.org>,
"Madhavan Srinivasan" <maddy@linux.ibm.com>,
"Michael Ellerman" <mpe@ellerman.id.au>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Dexuan Cui" <decui@microsoft.com>,
"Krzysztof Hałasa" <khalasa@piap.pl>,
"Lukas Wunner" <lukas@wunner.de>,
"Oliver O'Halloran" <oohall@gmail.com>,
"Saurabh Singh Sengar" <ssengar@microsoft.com>,
"Shuan He" <heshuan@bytedance.com>,
"Srivatsa Bhat" <srivatsabhat@microsoft.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
linux-pci@vger.kernel.org, linux-alpha@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v6 24/24] PCI/sysfs: Limit BAR resize attribute scope to platforms with PCI mmap
Date: Wed, 6 May 2026 08:42:00 +0900 [thread overview]
Message-ID: <20260505231945.GB1410272@rocinante> (raw)
In-Reply-To: <20260505220135.GA752411@bhelgaas>
Hello,
> > > The only platform without these aforementioned defines is Alpha, which is
> > > conventional PCI only and cannot have ReBAR. So this guard removes dead
> > > sysfs code on platforms where it can never be executed.
> >
> > Having a closer look:
> >
> > resource_resize_attr_is_visible()
> > pci_rebar_get_current_size() <- returns -ENOTSUPP, so is_visible callback returns 0
> > pci_rebar_find_pos()
> > pos = pdev->rebar_cap <- set to 0 on a conventional PCI
> > if (!pos)
> > return -ENOTSUPP <- no ReBAR support
> >
> > The pdev->rebar_cap is set during PCI enumeration:
> >
> > pci_init_capabilities()
> > pci_rebar_init()
> > pdev->rebar_cap = pci_find_ext_capability()
> > pci_find_next_ext_capability()
> > if (dev->cfg_size <= PCI_CFG_SPACE_SIZE)
> > return 0; <- dev->cfg_size set to 256 here for conventional PCI
> >
> > The PCI_CFG_SPACE_SIZE is 256 here.
> >
> > When the platform has support for PCI Express, the dev->cfg_size is then
> > set to 4096. On an architecture that supports conventional PCI only (such
> > as Alpha), the pdev->rebar_cap will be set to 0, the is_visible callback
> > will then return 0, and the resize sysfs attribute is never created, as
> > such, the __resource_resize_store() callback will never be executed.
> >
> > To make the connetion here to the #ifdef guards:
> >
> > For the pci_rebar_get_current_size() to return >= 0, the device needs
> > PCI Express and extended configuration space support. As of today,
> > every architecture with PCI Express support defines HAVE_PCI_MMAP or
> > ARCH_GENERIC_PCI_MMAP_RESOURCE.
> >
> > I hope the reasoning here works.
>
> We're talking about this #ifdef:
>
> +#if defined(HAVE_PCI_MMAP) || defined(ARCH_GENERIC_PCI_MMAP_RESOURCE)
> static ssize_t __resource_resize_show(struct device *dev, int n, char *buf)
> ...
> +#endif
>
> I follow the reasoning now but by next week I won't, so I think it
> requires too much background knowledge. Future changes involving
> HAVE_PCI_MMAP or ARCH_GENERIC_PCI_MMAP_RESOURCE could easily break
> this.
>
> IIUC it's basically doing what "#ifdef CONFIG_PCI_REBAR" or even
> "#ifdef CONFIG_PCI_EXPRESS" would do, if we had such a thing.
We don't sadly have such guards at the moment, so using the guards like
HAVE_PCI_MMAP or ARCH_GENERIC_PCI_MMAP_RESOURCE would be the next best
thing. We already rely on these throughout the pci-sysfs.c already, and
will also rely on either for the static sysfs attributes, so if there was
some issues with either of these, if these "broke" somehow, then we would
have other more severe problems. Note, that architectures rely on these
macros to let us know about what "feature" is expected to be enabled, so to
speak, so I would imagine nobody would break this accidentally (famous last
words) and perhaps with extreme caution would do it on purpose.
> How terrible would it be if we just accepted this dead code on Alpha?
I would prefer not to build any dead code anywhere if it can be helped,
especially with as little as two lines of code added. Plus, most of the
code setting up resources that are not specific to Alpha, would have been
disabled using exactly the same guard as the one proposed to be added
here, not like this sets any precedent or adds something new.
That being said, I will drop this from the next version.
Thank you!
Krzysztof
next prev parent reply other threads:[~2026-05-05 23:42 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-22 16:13 [PATCH v6 00/24] PCI: Convert all dynamic sysfs attributes to static Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 01/24] PCI/sysfs: Use PCI resource accessor macros Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 02/24] PCI: Add pci_resource_is_io() and pci_resource_is_mem() helpers Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 03/24] PCI/sysfs: Only allow supported resource types in I/O and MMIO helpers Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 04/24] PCI/sysfs: Use BAR length in pci_llseek_resource() when attr->size is zero Krzysztof Wilczyński
2026-04-29 19:50 ` Bjorn Helgaas
2026-04-29 20:53 ` Krzysztof Wilczyński
2026-04-30 23:32 ` Krzysztof Wilczyński
2026-05-05 21:46 ` Bjorn Helgaas
2026-05-05 23:19 ` Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 05/24] PCI/sysfs: Add CAP_SYS_ADMIN check to __resource_resize_store() Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 06/24] PCI/sysfs: Add static PCI resource attribute macros Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 07/24] PCI/sysfs: Convert PCI resource files to static attributes Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 08/24] PCI/sysfs: Warn about BAR resize failure in __resource_resize_store() Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 09/24] PCI/sysfs: Add stubs for pci_{create,remove}_sysfs_dev_files() Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 10/24] PCI/sysfs: Limit pci_sysfs_init() late_initcall compile scope Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 11/24] alpha/PCI: Add security_locked_down() check to pci_mmap_resource() Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 12/24] alpha/PCI: Use BAR index in sysfs attr->private instead of resource pointer Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 13/24] alpha/PCI: Use PCI resource accessor macros Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 14/24] alpha/PCI: Fix __pci_mmap_fits() overflow for zero-length BARs Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 15/24] alpha/PCI: Remove WARN from __pci_mmap_fits() Krzysztof Wilczyński
2026-04-22 16:13 ` [PATCH v6 16/24] alpha/PCI: Add static PCI resource attribute macros Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 17/24] alpha/PCI: Convert resource files to static attributes Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 18/24] PCI/sysfs: Remove pci_{create,remove}_sysfs_dev_files() Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 19/24] PCI: Add macros for legacy I/O and memory address space sizes Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 20/24] alpha/PCI: Compute legacy size in pci_mmap_legacy_page_range() Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 21/24] PCI/sysfs: Add __weak pci_legacy_has_sparse() helper Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 22/24] PCI/sysfs: Convert legacy I/O and memory attributes to static definitions Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 23/24] PCI/sysfs: Remove pci_create_legacy_files() and pci_sysfs_init() Krzysztof Wilczyński
2026-04-22 16:14 ` [PATCH v6 24/24] PCI/sysfs: Limit BAR resize attribute scope to platforms with PCI mmap Krzysztof Wilczyński
2026-04-29 20:49 ` Bjorn Helgaas
2026-04-29 21:53 ` Krzysztof Wilczyński
2026-04-30 2:51 ` Krzysztof Wilczyński
2026-05-05 22:01 ` Bjorn Helgaas
2026-05-05 23:42 ` Krzysztof Wilczyński [this message]
2026-05-06 17:48 ` Bjorn Helgaas
2026-04-23 17:22 ` [PATCH v6 00/24] PCI: Convert all dynamic sysfs attributes to static Krzysztof Wilczyński
2026-04-23 18:23 ` Bjorn Helgaas
2026-04-23 19:00 ` Krzysztof Wilczyński
2026-04-27 14:09 ` Shivaprasad G Bhat
2026-04-27 23:34 ` Krzysztof Wilczyński
2026-04-29 20:04 ` Bjorn Helgaas
2026-04-30 1:31 ` Krzysztof Wilczyński
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260505231945.GB1410272@rocinante \
--to=kwilczynski@kernel.org \
--cc=bhelgaas@google.com \
--cc=chleroy@kernel.org \
--cc=decui@microsoft.com \
--cc=helgaas@kernel.org \
--cc=heshuan@bytedance.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=khalasa@piap.pl \
--cc=linmag7@gmail.com \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lpieralisi@kernel.org \
--cc=lukas@wunner.de \
--cc=maddy@linux.ibm.com \
--cc=mani@kernel.org \
--cc=mattst88@gmail.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=oohall@gmail.com \
--cc=richard.henderson@linaro.org \
--cc=srivatsabhat@microsoft.com \
--cc=ssengar@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox