Re: [PATCH] mips: fix PCI_IOBASE definition

From: Sergio Paracuellos
Date: Wed Mar 19 2025 - 05:51:03 EST


Hi Arnd,

On Tue, Mar 18, 2025 at 10:44 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote:
>
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> After my previous patch, the ioport_map() function changed from
> the lib/iomap.c version to the asm-generic/io.h version, which
> requires a correct PCI_IOBASE definition.
>
> Unfortunately the types are also different, so add the correct
> definition for ioport_map() in asm/io.h and change the machine
> specific ones to have the correct type.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> This is not pretty, but it seems to address the remaining problems.
> I've applied it on top of my cross-architecture io.h cleanup that
> has the other mips patch.
>
> Let me know if there are still any other concerns.
>
>
> arch/mips/include/asm/io.h | 6 +++++-
> arch/mips/include/asm/mach-loongson64/spaces.h | 5 +++--
> arch/mips/include/asm/mach-ralink/spaces.h | 2 +-
> arch/mips/loongson64/init.c | 4 ++--
> 4 files changed, 11 insertions(+), 6 deletions(-)

I have built and booted an image from your git tree 'master' branch on
GNUBee PC2 board which is a MIPS mt7621 ralink based SoC:

commit ac4e3b09c90480e17939f432da37a5328bad76ab (HEAD,
arndtree/master, arndtree/asm-generic)
Author: Arnd Bergmann <arnd@xxxxxxxx>
Date: Tue Mar 18 22:15:35 2025 +0100

mips: fix PCI_IOBASE definition

After my previous patch, the ioport_map() function changed from
the lib/iomap.c version to the asm-generic/io.h version, which
requires a correct PCI_IOBASE definition.

Unfortunately the types are also different, so add the correct
definition for ioport_map() in asm/io.h and change the machine
specific ones to have the correct type.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

It looks like nothing got broken regarding PCI enumeration on boot
trace. I don't have real PCI cards with IO resources to test, but FWIW
the enumeration is the same as from my stable 6.12 kernel boot.

For completeness:

[ 0.000000] Linux version 6.14.0-rc1+ (sergio@camaron)
(mipsel-unknown-linux-gnu-gcc (GCC) 9.4.1 20211208, GNU ld (GNU
Binutils) 2.37) #17 SMP Wed Mar 19 10:30:35 CET 2025
[ 0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[ 0.000000] printk: legacy bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[ 0.000000] MIPS: machine is GnuBee GB-PC2
...
[ 21.149742] mt7621-pci 1e140000.pcie: host bridge /pcie@1e140000 ranges:
[ 21.163163] mt7621-pci 1e140000.pcie: MEM
0x0060000000..0x006fffffff -> 0x0060000000
[ 21.179519] mt7621-pci 1e140000.pcie: IO
0x001e160000..0x001e16ffff -> 0x0000000000
[ 21.524679] mt7621-pci 1e140000.pcie: PCIE0 enabled
[ 21.534290] mt7621-pci 1e140000.pcie: PCIE1 enabled
[ 21.544141] mt7621-pci 1e140000.pcie: PCIE2 enabled
[ 21.554040] PCI coherence region base: 0x60000000, mask/settings: 0xf0000002
[ 21.568419] mt7621-pci 1e140000.pcie: PCI host bridge to bus 0000:00
[ 21.581116] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 21.592079] pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff]
[ 21.605788] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
[ 21.618237] pci 0000:00:00.0: [0e8d:0801] type 01 class 0x060400
PCIe Root Port
[ 21.632822] pci 0000:00:00.0: BAR 0 [mem 0x00000000-0x7fffffff]
[ 21.644670] pci 0000:00:00.0: BAR 1 [mem 0x00000000-0x0000ffff]
[ 21.656445] pci 0000:00:00.0: PCI bridge to [bus 00]
[ 21.666309] pci 0000:00:00.0: bridge window [io 0x0000-0x0fff]
[ 21.678361] pci 0000:00:00.0: bridge window [mem 0x00000000-0x000fffff]
[ 21.691828] pci 0000:00:00.0: bridge window [mem
0x00000000-0x000fffff pref]
[ 21.706279] pci 0000:00:00.0: supports D1
[ 21.714103] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[ 21.726449] pci 0000:00:01.0: [0e8d:0801] type 01 class 0x060400
PCIe Root Port
[ 21.740986] pci 0000:00:01.0: BAR 0 [mem 0x00000000-0x7fffffff]
[ 21.752680] pci 0000:00:01.0: BAR 1 [mem 0x00000000-0x0000ffff]
[ 21.764437] pci 0000:00:01.0: PCI bridge to [bus 00]
[ 21.774292] pci 0000:00:01.0: bridge window [io 0x0000-0x0fff]
[ 21.786381] pci 0000:00:01.0: bridge window [mem 0x00000000-0x000fffff]
[ 21.799858] pci 0000:00:01.0: bridge window [mem
0x00000000-0x000fffff pref]
[ 21.814286] pci 0000:00:01.0: supports D1
[ 21.822144] pci 0000:00:01.0: PME# supported from D0 D1 D3hot
[ 21.834438] pci 0000:00:02.0: [0e8d:0801] type 01 class 0x060400
PCIe Root Port
[ 21.849019] pci 0000:00:02.0: BAR 0 [mem 0x00000000-0x7fffffff]
[ 21.860731] pci 0000:00:02.0: BAR 1 [mem 0x00000000-0x0000ffff]
[ 21.872487] pci 0000:00:02.0: PCI bridge to [bus 00]
[ 21.882335] pci 0000:00:02.0: bridge window [io 0x0000-0x0fff]
[ 21.894437] pci 0000:00:02.0: bridge window [mem 0x00000000-0x000fffff]
[ 21.907913] pci 0000:00:02.0: bridge window [mem
0x00000000-0x000fffff pref]
[ 21.922343] pci 0000:00:02.0: supports D1
[ 21.930194] pci 0000:00:02.0: PME# supported from D0 D1 D3hot
[ 21.943428] pci 0000:00:00.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[ 21.959309] pci 0000:00:01.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[ 21.975168] pci 0000:00:02.0: bridge configuration invalid ([bus
00-00]), reconfiguring
[ 21.991373] pci 0000:01:00.0: [1b21:0611] type 00 class 0x010185
PCIe Legacy Endpoint
[ 22.006936] pci 0000:01:00.0: BAR 0 [io 0x0000-0x0007]
[ 22.017235] pci 0000:01:00.0: BAR 1 [io 0x0000-0x0003]
[ 22.027589] pci 0000:01:00.0: BAR 2 [io 0x0000-0x0007]
[ 22.037957] pci 0000:01:00.0: BAR 3 [io 0x0000-0x0003]
[ 22.048325] pci 0000:01:00.0: BAR 4 [io 0x0000-0x000f]
[ 22.058693] pci 0000:01:00.0: BAR 5 [mem 0x00000000-0x000001ff]
[ 22.070611] pci 0000:01:00.0: 2.000 Gb/s available PCIe bandwidth,
limited by 2.5 GT/s PCIe x1 link at 0000:00:00.0 (capable of 4.000
Gb/s with 5.0 GT/s PCIe x1 link)
[ 22.114603] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[ 22.124936] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[ 22.138347] pci 0000:02:00.0: [1b21:0611] type 00 class 0x010185
PCIe Legacy Endpoint
[ 22.153917] pci 0000:02:00.0: BAR 0 [io 0x0000-0x0007]
[ 22.164212] pci 0000:02:00.0: BAR 1 [io 0x0000-0x0003]
[ 22.174587] pci 0000:02:00.0: BAR 2 [io 0x0000-0x0007]
[ 22.184948] pci 0000:02:00.0: BAR 3 [io 0x0000-0x0003]
[ 22.195311] pci 0000:02:00.0: BAR 4 [io 0x0000-0x000f]
[ 22.205685] pci 0000:02:00.0: BAR 5 [mem 0x00000000-0x000001ff]
[ 22.217590] pci 0000:02:00.0: 2.000 Gb/s available PCIe bandwidth,
limited by 2.5 GT/s PCIe x1 link at 0000:00:01.0 (capable of 4.000
Gb/s with 5.0 GT/s PCIe x1 link)
[ 22.264617] pci 0000:00:01.0: PCI bridge to [bus 02-ff]
[ 22.274959] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 02
[ 22.288402] pci 0000:03:00.0: [1b21:0611] type 00 class 0x010185
PCIe Legacy Endpoint
[ 22.303981] pci 0000:03:00.0: BAR 0 [io 0x0000-0x0007]
[ 22.314270] pci 0000:03:00.0: BAR 1 [io 0x0000-0x0003]
[ 22.324651] pci 0000:03:00.0: BAR 2 [io 0x0000-0x0007]
[ 22.335005] pci 0000:03:00.0: BAR 3 [io 0x0000-0x0003]
[ 22.345372] pci 0000:03:00.0: BAR 4 [io 0x0000-0x000f]
[ 22.355745] pci 0000:03:00.0: BAR 5 [mem 0x00000000-0x000001ff]
[ 22.367654] pci 0000:03:00.0: 2.000 Gb/s available PCIe bandwidth,
limited by 2.5 GT/s PCIe x1 link at 0000:00:02.0 (capable of 4.000
Gb/s with 5.0 GT/s PCIe x1 link)
[ 22.414605] pci 0000:00:02.0: PCI bridge to [bus 03-ff]
[ 22.424945] pci_bus 0000:03: busn_res: [bus 03-ff] end is updated to 03
[ 22.438133] pci 0000:00:00.0: BAR 0 [mem size 0x80000000]: can't
assign; no space
[ 22.452906] pci 0000:00:00.0: BAR 0 [mem size 0x80000000]: failed to assign
[ 22.466731] pci 0000:00:01.0: BAR 0 [mem size 0x80000000]: can't
assign; no space
[ 22.481599] pci 0000:00:01.0: BAR 0 [mem size 0x80000000]: failed to assign
[ 22.495413] pci 0000:00:02.0: BAR 0 [mem size 0x80000000]: can't
assign; no space
[ 22.510272] pci 0000:00:02.0: BAR 0 [mem size 0x80000000]: failed to assign
[ 22.524106] pci 0000:00:00.0: bridge window [mem
0x60000000-0x600fffff]: assigned
[ 22.538973] pci 0000:00:00.0: bridge window [mem
0x60100000-0x601fffff pref]: assigned
[ 22.554690] pci 0000:00:01.0: bridge window [mem
0x60200000-0x602fffff]: assigned
[ 22.569548] pci 0000:00:01.0: bridge window [mem
0x60300000-0x603fffff pref]: assigned
[ 22.585270] pci 0000:00:02.0: bridge window [mem
0x60400000-0x604fffff]: assigned
[ 22.600145] pci 0000:00:02.0: bridge window [mem
0x60500000-0x605fffff pref]: assigned
[ 22.615856] pci 0000:00:00.0: BAR 1 [mem 0x60600000-0x6060ffff]: assigned
[ 22.629342] pci 0000:00:01.0: BAR 1 [mem 0x60610000-0x6061ffff]: assigned
[ 22.642816] pci 0000:00:02.0: BAR 1 [mem 0x60620000-0x6062ffff]: assigned
[ 22.656306] pci 0000:00:00.0: bridge window [io 0x0000-0x0fff]: assigned
[ 22.669776] pci 0000:00:01.0: bridge window [io 0x1000-0x1fff]: assigned
[ 22.683249] pci 0000:00:02.0: bridge window [io 0x2000-0x2fff]: assigned
[ 22.696739] pci 0000:01:00.0: BAR 5 [mem 0x60000000-0x600001ff]: assigned
[ 22.710216] pci 0000:01:00.0: BAR 4 [io 0x0000-0x000f]: assigned
[ 22.722313] pci 0000:01:00.0: BAR 0 [io 0x0010-0x0017]: assigned
[ 22.734402] pci 0000:01:00.0: BAR 2 [io 0x0018-0x001f]: assigned
[ 22.746496] pci 0000:01:00.0: BAR 1 [io 0x0020-0x0023]: assigned
[ 22.758594] pci 0000:01:00.0: BAR 3 [io 0x0024-0x0027]: assigned
[ 22.770695] pci 0000:00:00.0: PCI bridge to [bus 01]
[ 22.780547] pci 0000:00:00.0: bridge window [io 0x0000-0x0fff]
[ 22.792631] pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff]
[ 22.806106] pci 0000:00:00.0: bridge window [mem
0x60100000-0x601fffff pref]
[ 22.820461] pci 0000:02:00.0: BAR 5 [mem 0x60200000-0x602001ff]: assigned
[ 22.833940] pci 0000:02:00.0: BAR 4 [io 0x1000-0x100f]: assigned
[ 22.846037] pci 0000:02:00.0: BAR 0 [io 0x1010-0x1017]: assigned
[ 22.858127] pci 0000:02:00.0: BAR 2 [io 0x1018-0x101f]: assigned
[ 22.870223] pci 0000:02:00.0: BAR 1 [io 0x1020-0x1023]: assigned
[ 22.882319] pci 0000:02:00.0: BAR 3 [io 0x1024-0x1027]: assigned
[ 22.894423] pci 0000:00:01.0: PCI bridge to [bus 02]
[ 22.904263] pci 0000:00:01.0: bridge window [io 0x1000-0x1fff]
[ 22.916359] pci 0000:00:01.0: bridge window [mem 0x60200000-0x602fffff]
[ 22.929833] pci 0000:00:01.0: bridge window [mem
0x60300000-0x603fffff pref]
[ 22.944185] pci 0000:03:00.0: BAR 5 [mem 0x60400000-0x604001ff]: assigned
[ 22.957663] pci 0000:03:00.0: BAR 4 [io 0x2000-0x200f]: assigned
[ 22.969756] pci 0000:03:00.0: BAR 0 [io 0x2010-0x2017]: assigned
[ 22.981859] pci 0000:03:00.0: BAR 2 [io 0x2018-0x201f]: assigned
[ 22.993949] pci 0000:03:00.0: BAR 1 [io 0x2020-0x2023]: assigned
[ 23.006046] pci 0000:03:00.0: BAR 3 [io 0x2024-0x2027]: assigned
[ 23.018150] pci 0000:00:02.0: PCI bridge to [bus 03]
[ 23.027983] pci 0000:00:02.0: bridge window [io 0x2000-0x2fff]
[ 23.040087] pci 0000:00:02.0: bridge window [mem 0x60400000-0x604fffff]
[ 23.053557] pci 0000:00:02.0: bridge window [mem
0x60500000-0x605fffff pref]
[ 23.067900] pci_bus 0000:00: Some PCI device resources are
unassigned, try booting with pci=realloc
[ 23.085874] pci_bus 0000:00: resource 4 [mem 0x60000000-0x6fffffff]
[ 23.098318] pci_bus 0000:00: resource 5 [io 0x0000-0xffff]
[ 23.109370] pci_bus 0000:01: resource 0 [io 0x0000-0x0fff]
[ 23.120434] pci_bus 0000:01: resource 1 [mem 0x60000000-0x600fffff]
[ 23.132870] pci_bus 0000:01: resource 2 [mem 0x60100000-0x601fffff pref]
[ 23.146184] pci_bus 0000:02: resource 0 [io 0x1000-0x1fff]
[ 23.157242] pci_bus 0000:02: resource 1 [mem 0x60200000-0x602fffff]
[ 23.169680] pci_bus 0000:02: resource 2 [mem 0x60300000-0x603fffff pref]
[ 23.182983] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff]
[ 23.194041] pci_bus 0000:03: resource 1 [mem 0x60400000-0x604fffff]
[ 23.206488] pci_bus 0000:03: resource 2 [mem 0x60500000-0x605fffff pref]
...

So, feel free to add my:

Tested-by: Sergio Paracuellos <sergio.paracuellos@xxxxxxxxx> # Mt7621 Ralink

Let me know if you want me to check anything else.

Best regards,
Sergio Paracuellos