From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: "Andreas Larsson" <andreas@gaisler.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"David S. Miller" <davem@davemloft.net>,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org,
linux-pci@vger.kernel.org, sparclinux@vger.kernel.org,
"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
"Christian König" <christian.koenig@amd.com>,
"Yinghai Lu" <yinghai@kernel.org>,
"Igor Mammedov" <imammedo@redhat.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Krzysztof Wilczyński" <kw@linux.com>,
LKML <linux-kernel@vger.kernel.org>,
"Michał Winiarski" <michal.winiarski@intel.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 02/24] sparc/PCI: Remove pcibios_enable_device() as they do nothing extra
Date: Mon, 10 Nov 2025 19:04:32 +0200 (EET) [thread overview]
Message-ID: <d221be13-f652-cc75-90d1-92cf38e0110e@linux.intel.com> (raw)
In-Reply-To: <8fcc0fd4b74f99d5c4d80d3907e7607a7d4c89da.camel@physik.fu-berlin.de>
[-- Attachment #1: Type: text/plain, Size: 4631 bytes --]
On Thu, 6 Nov 2025, John Paul Adrian Glaubitz wrote:
> Hello Ilpo,
>
> On Fri, 2025-08-22 at 17:55 +0300, Ilpo Järvinen wrote:
> > Under arch/sparc/ there are multiple copies of pcibios_enable_device()
> > but none of those seem to do anything extra beyond what
> > pci_enable_resources() is supposed to do. These functions could lead to
> > inconsistencies in behavior, especially now as pci_enable_resources()
> > and the bridge window resource flags behavior are going to be altered
> > by upcoming changes.
> >
> > Remove all pcibios_enable_device() from arch/sparc/ so that PCI core
> > can simply call into pci_enable_resources() instead using it's __weak
> > version of pcibios_enable_device().
> >
> > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> > ---
> > arch/sparc/kernel/leon_pci.c | 27 ---------------------------
> > arch/sparc/kernel/pci.c | 27 ---------------------------
> > arch/sparc/kernel/pcic.c | 27 ---------------------------
> > 3 files changed, 81 deletions(-)
> >
> > diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c
> > index 8de6646e9ce8..10934dfa987a 100644
> > --- a/arch/sparc/kernel/leon_pci.c
> > +++ b/arch/sparc/kernel/leon_pci.c
> > @@ -60,30 +60,3 @@ void leon_pci_init(struct platform_device *ofdev, struct leon_pci_info *info)
> > pci_assign_unassigned_resources();
> > pci_bus_add_devices(root_bus);
> > }
> > -
> > -int pcibios_enable_device(struct pci_dev *dev, int mask)
> > -{
> > - struct resource *res;
> > - u16 cmd, oldcmd;
> > - int i;
> > -
> > - pci_read_config_word(dev, PCI_COMMAND, &cmd);
> > - oldcmd = cmd;
> > -
> > - pci_dev_for_each_resource(dev, res, i) {
> > - /* Only set up the requested stuff */
> > - if (!(mask & (1<<i)))
> > - continue;
> > -
> > - if (res->flags & IORESOURCE_IO)
> > - cmd |= PCI_COMMAND_IO;
> > - if (res->flags & IORESOURCE_MEM)
> > - cmd |= PCI_COMMAND_MEMORY;
> > - }
> > -
> > - if (cmd != oldcmd) {
> > - pci_info(dev, "enabling device (%04x -> %04x)\n", oldcmd, cmd);
> > - pci_write_config_word(dev, PCI_COMMAND, cmd);
> > - }
> > - return 0;
> > -}
> > diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
> > index ddac216a2aff..a9448088e762 100644
> > --- a/arch/sparc/kernel/pci.c
> > +++ b/arch/sparc/kernel/pci.c
> > @@ -722,33 +722,6 @@ struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm,
> > return bus;
> > }
> >
> > -int pcibios_enable_device(struct pci_dev *dev, int mask)
> > -{
> > - struct resource *res;
> > - u16 cmd, oldcmd;
> > - int i;
> > -
> > - pci_read_config_word(dev, PCI_COMMAND, &cmd);
> > - oldcmd = cmd;
> > -
> > - pci_dev_for_each_resource(dev, res, i) {
> > - /* Only set up the requested stuff */
> > - if (!(mask & (1<<i)))
> > - continue;
> > -
> > - if (res->flags & IORESOURCE_IO)
> > - cmd |= PCI_COMMAND_IO;
> > - if (res->flags & IORESOURCE_MEM)
> > - cmd |= PCI_COMMAND_MEMORY;
> > - }
> > -
> > - if (cmd != oldcmd) {
> > - pci_info(dev, "enabling device (%04x -> %04x)\n", oldcmd, cmd);
> > - pci_write_config_word(dev, PCI_COMMAND, cmd);
> > - }
> > - return 0;
> > -}
> > -
> > /* Platform support for /proc/bus/pci/X/Y mmap()s. */
> > int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma)
> > {
> > diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
> > index 25fe0a061732..3d54ad5656a4 100644
> > --- a/arch/sparc/kernel/pcic.c
> > +++ b/arch/sparc/kernel/pcic.c
> > @@ -641,33 +641,6 @@ void pcibios_fixup_bus(struct pci_bus *bus)
> > }
> > }
> >
> > -int pcibios_enable_device(struct pci_dev *dev, int mask)
> > -{
> > - struct resource *res;
> > - u16 cmd, oldcmd;
> > - int i;
> > -
> > - pci_read_config_word(dev, PCI_COMMAND, &cmd);
> > - oldcmd = cmd;
> > -
> > - pci_dev_for_each_resource(dev, res, i) {
> > - /* Only set up the requested stuff */
> > - if (!(mask & (1<<i)))
> > - continue;
> > -
> > - if (res->flags & IORESOURCE_IO)
> > - cmd |= PCI_COMMAND_IO;
> > - if (res->flags & IORESOURCE_MEM)
> > - cmd |= PCI_COMMAND_MEMORY;
> > - }
> > -
> > - if (cmd != oldcmd) {
> > - pci_info(dev, "enabling device (%04x -> %04x)\n", oldcmd, cmd);
> > - pci_write_config_word(dev, PCI_COMMAND, cmd);
> > - }
> > - return 0;
> > -}
> > -
> > /* Makes compiler happy */
> > static volatile int pcic_timer_dummy;
>
> This change actually broke driver initialization on SPARC, see:
>
> https://github.com/sparclinux/issues/issues/22
Does the attached patch help?
--
i.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-diff; name=sparc-pref.patch, Size: 1487 bytes --]
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Subject: [PATCH] SPARC/PCI: Correct 64-bit non-pref -> pref
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
arch/sparc/kernel/of_device_64.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c
index f53092b07b9e..ea21d90e3f94 100644
--- a/arch/sparc/kernel/of_device_64.c
+++ b/arch/sparc/kernel/of_device_64.c
@@ -311,6 +311,23 @@ static int __init use_1to1_mapping(struct device_node *pp)
return 1;
}
+static void of_fixup_pci_pref(struct device_node *dp, int index,
+ struct device_node *pp, struct resource *res)
+{
+ if (!resource_size(res))
+ return;
+ if (res->end <= ~((u32)0))
+ return;
+
+ if (!of_node_is_type(pp, "pci") && !of_node_is_type(pp, "pciex"))
+ return;
+
+ if (!(res->flags & IORESOURCE_PREFETCH)) {
+ res->flags |= IORESOURCE_PREFETCH;
+ printk("%pOF reg[%d] fixup: pref corrected\n", dp, index);
+ }
+}
+
static int of_resource_verbose;
static void __init build_device_resources(struct platform_device *op,
@@ -412,6 +429,7 @@ static void __init build_device_resources(struct platform_device *op,
r->start = result;
r->end = result + size - 1;
r->flags = flags;
+ of_fixup_pci_pref(dp, index, pp, r);
}
r->name = op->dev.of_node->full_name;
}
--
tg: (3a8660878839..) sparc/dt-fixup-pref (depends on: main)
next prev parent reply other threads:[~2025-11-10 17:04 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 14:55 [PATCH 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 01/24] m68k/PCI: Use pci_enable_resources() in pcibios_enable_device() Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 02/24] sparc/PCI: Remove pcibios_enable_device() as they do nothing extra Ilpo Järvinen
2025-11-06 7:49 ` John Paul Adrian Glaubitz
2025-11-07 0:12 ` Bjorn Helgaas
2025-11-10 17:04 ` Ilpo Järvinen [this message]
2025-11-13 15:56 ` Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 03/24] MIPS: PCI: Use pci_enable_resources() Ilpo Järvinen
2025-08-28 6:57 ` Thomas Bogendoerfer
2025-08-22 14:55 ` [PATCH 04/24] PCI: Move find_bus_resource_of_type() earlier Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 05/24] PCI: Refactor find_bus_resource_of_type() logic checks Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 06/24] PCI: Always claim bridge window before its setup Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 07/24] PCI: Disable non-claimed bridge window Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 08/24] PCI: Use pci_release_resource() instead of release_resource() Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 09/24] PCI: Enable bridge even if bridge window fails to assign Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 10/24] PCI: Preserve bridge window resource type flags Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 11/24] PCI: Add defines for bridge window indexing Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 12/24] PCI: Add bridge window selection functions Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 13/24] PCI: Fix finding bridge window in pci_reassign_bridge_resources() Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 14/24] PCI: Warn if bridge window cannot be released when resizing BAR Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 15/24] PCI: Use pbus_select_window() during BAR resize Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 16/24] PCI: Use pbus_select_window_for_type() during IO window sizing Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 17/24] PCI: Rename resource variable from r to res Ilpo Järvinen
2025-08-22 14:55 ` [PATCH 18/24] PCI: Use pbus_select_window() in space available checker Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 19/24] PCI: Use pbus_select_window_for_type() during mem window sizing Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 20/24] PCI: Refactor distributing available memory to use loops Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 21/24] PCI: Refactor remove_dev_resources() to use pbus_select_window() Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 22/24] PCI: Add pci_setup_one_bridge_window() Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 23/24] PCI: Pass bridge window to pci_bus_release_bridge_resources() Ilpo Järvinen
2025-08-22 14:56 ` [PATCH 24/24] PCI: Alter misleading recursion " Ilpo Järvinen
2025-08-22 15:04 ` [PATCH 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-08-27 22:36 ` Bjorn Helgaas
2025-08-28 16:47 ` Ilpo Järvinen
2025-08-28 17:31 ` Bjorn Helgaas
2025-09-01 8:38 ` Geert Uytterhoeven
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=d221be13-f652-cc75-90d1-92cf38e0110e@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=andreas@gaisler.com \
--cc=bhelgaas@google.com \
--cc=christian.koenig@amd.com \
--cc=davem@davemloft.net \
--cc=geert@linux-m68k.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=imammedo@redhat.com \
--cc=kw@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=michal.winiarski@intel.com \
--cc=rafael@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=tsbogend@alpha.franken.de \
--cc=yinghai@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.