W dniu 14.01.2025 o 19:11, Jiaxun Yang pisze:
pci-legacy systems are not using logic_pio to managed PIO allocations, thus the generic pci_address_to_pio won't work when PCI_IOBASE is defined.
Override the function to use architecture implementation to fix the problem.
Cc: stable@vger.kernel.org Fixes: 4bfb53e7d317 ("mips: add <asm-generic/io.h> including") Reported-by: Mateusz Jończyk mat.jonczyk@o2.pl Closes: https://lore.kernel.org/r/99f75c66-4c2d-45dc-a808-b5ba440c7551@app.fastmail.... Signed-off-by: Jiaxun Yang jiaxun.yang@flygoat.com
This is a quick fix for fixes tree and stable backporting. In long term, we should get logic_pio accept fixed mapping, and make PCI core code aware of platforms not using vmap for PCI_IOBASE.
arch/mips/pci/pci-legacy.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/arch/mips/pci/pci-legacy.c b/arch/mips/pci/pci-legacy.c index ec2567f8efd83bff7b106cbbd9ec7a6de0308c4c..66898fd182dc1fec1d1e9ae4c908873d59777182 100644 --- a/arch/mips/pci/pci-legacy.c +++ b/arch/mips/pci/pci-legacy.c @@ -29,6 +29,14 @@ static LIST_HEAD(controllers); static int pci_initialized; +unsigned long pci_address_to_pio(phys_addr_t address) +{
- if (address > IO_SPACE_LIMIT)
return (unsigned long)-1;
- return (unsigned long) address;
+}
Hello,
Thank you for this patch, I'm testing it right now.
Shouldn't this be #ifndef-ed CONFIG_MACH_LOONGSON64 and perhaps CONFIG_RALINK?
Loongson64 explicitly calls logic_pio_register_range(), so seems not to need this. Ralink also defined PCI_IOBASE a long time ago.
Greetings,
Mateusz