From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "Maciej W. Rozycki" <macro@orcam.me.uk>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Guenter Roeck <linux@roeck-us.net>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 03/24] MIPS: PCI: Use pci_enable_resources()
Date: Tue, 14 Oct 2025 13:54:22 +0300 (EEST) [thread overview]
Message-ID: <74ed2ce0-744a-264f-6042-df4bbec0f58e@linux.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2510132229120.39634@angie.orcam.me.uk>
[-- Attachment #1: Type: text/plain, Size: 6328 bytes --]
On Tue, 14 Oct 2025, Maciej W. Rozycki wrote:
> On Mon, 13 Oct 2025, Thomas Bogendoerfer wrote:
>
> > > This patch causes boot failures when trying to boot mips images from
> > > ide drive in qemu. As far as I can see the interface no longer instantiates.
> > >
> > > Reverting this patch fixes the problem. Bisect log attached for reference.
> >
> > Patch below fixes my qemu malta setup. Now I'm wondering, why this is
> > needed. It was added with commit
> >
> > aa0980b80908 ("Fixes for system controllers for Atlas/Malta core cards.")
> >
> > Maciej, do you remember why this is needed ?
>
> I do. The reason is preventing PCI port I/O mappings below 0x100, which
> interferes badly with how the PIIX4 decodes port I/O cycles. That did
> happen in the field, wreaking havoc and prompting my change.
>
> By the look of the code it would definitely trigger for the Bonito64
> system controller, which has a fixed port I/O target address range and,
> depending on the settings left by the firmware, it might also trigger for
> the Galileo GT64120A and SOC-it 101 system controllers, which have
> variable port I/O target address ranges.
>
> Here's an example map of Malta port I/O resources (SOC-it 101 variant):
>
> 00000000-0000001f : dma1
> 00000020-00000021 : pic1
> 00000040-0000005f : timer
> 00000060-0000006f : keyboard
> 00000070-00000077 : rtc0
> 00000080-0000008f : dma page reg
> 000000a0-000000a1 : pic2
> 000000c0-000000df : dma2
> 00000170-00000177 : ata_piix
> 000001f0-000001f7 : ata_piix
> 000002f8-000002ff : serial
> 00000376-00000376 : ata_piix
> 00000378-0000037a : parport0
> 0000037b-0000037f : parport0
> 000003f6-000003f6 : ata_piix
> 000003f8-000003ff : serial
> 00001000-00ffffff : MSC PCI I/O
> 00001000-0000103f : 0000:00:0a.3
> 00001040-0000105f : 0000:00:0a.2
> 00001040-0000105f : uhci_hcd
> 00001060-0000107f : 0000:00:0b.0
> 00001060-0000107f : pcnet32_probe_pci
> 00001080-000010ff : 0000:00:12.0
> 00001080-000010ff : defxx
> 00001100-0000110f : 0000:00:0a.3
> 00001400-000014ff : 0000:00:13.0
> 00001800-0000180f : 0000:00:0a.1
> 00001800-0000180f : ata_piix
>
> As you can see there are holes in the map below 0x100, so e.g. if the bus
> master IDE I/O space registers (claimed last in the list by `ata_piix')
> were assigned to 00000030-0000003f, then all hell would break loose. It
> is exactly the mapping that happened in the absence of the code piece in
> question IIRC.
>
> The choice of 0x1000 as the lower boundary IIRC has something to do with
> alignment; I think the decoding base has to be a multiple of 0x1000 and
> given that the ACPI resource is decoded by a non-standard BAR at 0x40 in
> the configuration space (set up by `malta_piix_func3_base_fixup' BTW) we
> just need to match its setting.
>
> Can you please check what the port I/O map looks like with your setup
> with and without your patch applied?
>
> NB there is still something fishy with the setup of SOC-it 101's PCI
> decoding windows, which is why I have forced `defxx' with a patch to use
> port I/O, as reported above. The driver uses MMIO unconditionally on PCI
> systems nowadays, but using MMIO prevents it from working with the SOC-it
> 101 system controller and I yet need to debug it. Conversely MMIO used to
> work just fine with the Galileo GT64120A system controller while I still
> had one operational.
Are you sure pci-malta.c has to do anything like this as
pcibios_align_resource() does lower bound IO resource start addresses if
PCIBIOS_MIN_IO is set?
How about this patch below?
(I'm not sure if it should actually be
PCIBIOS_MIN_IO = 0x1000 - hose->io_resource->start;
to allow resources starting from 0x1000 if ->start is not at 0.)
--
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>
Date: Tue, 14 Oct 2025 13:47:49 +0300
Subject: [PATCH 1/1] MIPS: Malta: Use pcibios_align_resource() to block io range
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
According to Maciej W. Rozycki <macro@orcam.me.uk>, the
mips_pcibios_init() for malta adjusts root bus IO resource start
address to prevent interfering with PIIX4 I/O cycle decoding. Adjusting
lower bound leaves PIIX4 IO resources outside of the root bus resource
and assign_fixed_resource_on_bus() does not put the resources into the
resource tree.
Prior to commit ae81aad5c2e1 ("MIPS: PCI: Use pci_enable_resources()")
the arch specific pcibios_enable_resources() did not check if the
resources were assigned which diverges from what PCI core checks,
effectively hiding the PIIX4 IO resources were not properly within the
resource tree. After starting to use pcibios_enable_resources() from
PCI core, enabling PIIX4 fails:
ata_piix 0000:00:0a.1: BAR 0 [io 0x01f0-0x01f7]: not claimed; can't enable device
ata_piix 0000:00:0a.1: probe with driver ata_piix failed with error -22
MIPS PCI code already has support for enforcing lower bounds using
PCIBIOS_MIN_IO in pcibios_align_resource(). Make malta PCI code too to
use PCIBIOS_MIN_IO.
Fixes: ae81aad5c2e1 ("MIPS: PCI: Use pci_enable_resources()")
Fixes: aa0980b80908 ("Fixes for system controllers for Atlas/Malta core cards.")
Link: https://lore.kernel.org/linux-pci/9085ab12-1559-4462-9b18-f03dcb9a4088@roeck-us.net/
Link: https://lore.kernel.org/linux-pci/alpine.DEB.2.21.2510132229120.39634@angie.orcam.me.uk/
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
arch/mips/pci/pci-malta.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/mips/pci/pci-malta.c b/arch/mips/pci/pci-malta.c
index 6aefdf20ca05..f4ea1c99852f 100644
--- a/arch/mips/pci/pci-malta.c
+++ b/arch/mips/pci/pci-malta.c
@@ -231,7 +231,7 @@ void __init mips_pcibios_init(void)
/* PIIX4 ACPI starts at 0x1000 */
if (controller->io_resource->start < 0x00001000UL)
- controller->io_resource->start = 0x00001000UL;
+ PCIBIOS_MIN_IO = 0x1000;
iomem_resource.end &= 0xfffffffffULL; /* 64 GB */
ioport_resource.end = controller->io_resource->end;
base-commit: 2f2c7254931f41b5736e3ba12aaa9ac1bbeeeb92
--
2.39.5
next prev parent reply other threads:[~2025-10-14 10:54 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 13:10 [PATCH v2 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 01/24] m68k/PCI: Use pci_enable_resources() in pcibios_enable_device() Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 02/24] sparc/PCI: Remove pcibios_enable_device() as they do nothing extra Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 03/24] MIPS: PCI: Use pci_enable_resources() Ilpo Järvinen
2025-10-13 19:54 ` Guenter Roeck
2025-10-13 21:02 ` Bjorn Helgaas
2025-10-28 22:45 ` Bjorn Helgaas
2025-10-13 21:17 ` Thomas Bogendoerfer
2025-10-13 23:00 ` Maciej W. Rozycki
2025-10-14 10:54 ` Ilpo Järvinen [this message]
2025-10-14 12:22 ` Maciej W. Rozycki
2025-10-14 12:41 ` Ilpo Järvinen
2025-10-14 12:58 ` Maciej W. Rozycki
2025-10-17 10:49 ` Thomas Bogendoerfer
2025-10-17 10:58 ` Ilpo Järvinen
2025-10-17 12:11 ` Thomas Bogendoerfer
2025-10-18 21:32 ` Maciej W. Rozycki
2025-08-29 13:10 ` [PATCH v2 04/24] PCI: Move find_bus_resource_of_type() earlier Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 05/24] PCI: Refactor find_bus_resource_of_type() logic checks Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 06/24] PCI: Always claim bridge window before its setup Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 07/24] PCI: Disable non-claimed bridge window Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 08/24] PCI: Use pci_release_resource() instead of release_resource() Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 09/24] PCI: Enable bridge even if bridge window fails to assign Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 10/24] PCI: Preserve bridge window resource type flags Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 11/24] PCI: Add defines for bridge window indexing Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 12/24] PCI: Add bridge window selection functions Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 13/24] PCI: Fix finding bridge window in pci_reassign_bridge_resources() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 14/24] PCI: Warn if bridge window cannot be released when resizing BAR Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 15/24] PCI: Use pbus_select_window() during BAR resize Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 16/24] PCI: Use pbus_select_window_for_type() during IO window sizing Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 17/24] PCI: Rename resource variable from r to res Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 18/24] PCI: Use pbus_select_window() in space available checker Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 19/24] PCI: Use pbus_select_window_for_type() during mem window sizing Ilpo Järvinen
2025-10-18 8:14 ` WARNING at drivers/pci/setup-bus.c:2373, bisected to "PCI: Use pbus_select_window_for_type() during mem window sizing" Klaus Kudielka
2025-10-25 10:11 ` Klaus Kudielka
2025-10-25 12:44 ` Klaus Kudielka
2025-10-27 13:29 ` Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 20/24] PCI: Refactor distributing available memory to use loops Ilpo Järvinen
2025-10-08 14:47 ` john_chen_chn
2025-08-29 13:11 ` [PATCH v2 21/24] PCI: Refactor remove_dev_resources() to use pbus_select_window() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 22/24] PCI: Add pci_setup_one_bridge_window() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 23/24] PCI: Pass bridge window to pci_bus_release_bridge_resources() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 24/24] PCI: Alter misleading recursion " Ilpo Järvinen
2025-09-16 16:02 ` [PATCH v2 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-09-16 16:23 ` Bjorn Helgaas
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=74ed2ce0-744a-264f-6042-df4bbec0f58e@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=macro@orcam.me.uk \
--cc=tsbogend@alpha.franken.de \
/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;
as well as URLs for NNTP newsgroup(s).