public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: "Arnd Bergmann" <arnd@arndb.de>
To: "Geert Uytterhoeven" <geert@linux-m68k.org>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>
Cc: "Mateusz Jończyk" <mat.jonczyk@o2.pl>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	Linux-Arch <linux-arch@vger.kernel.org>,
	linux-kernel@vger.kernel.org, "Baoquan He" <bhe@redhat.com>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	regressions@lists.linux.dev
Subject: Re: [REGRESSION] mipsel: no RTC CMOS on the Malta platform in QEMU
Date: Tue, 14 Jan 2025 10:59:33 +0100	[thread overview]
Message-ID: <08fe1ebb-b9c4-46c7-a6ab-5a336ec3b771@app.fastmail.com> (raw)
In-Reply-To: <CAMuHMdXbuRLgDP2JtmdhnJF=AhpPa88356KU1yF1f8GMirWrcQ@mail.gmail.com>

On Tue, Jan 14, 2025, at 09:02, Geert Uytterhoeven wrote:
> On Tue, Jan 14, 2025 at 12:32 AM Jiaxun Yang <jiaxun.yang@flygoat.com> wrote:
>> 在2025年1月13日一月 下午10:16,Mateusz Jończyk写道:

>> > #ifndef PCI_IOBASE
>> > #define PCI_IOBASE ((void __iomem *)0)
>> > #endif
>> >
>> > That PCI_IOBASE value above is AFAIK incorrect for MIPS (it should be
>> > defined to mips_io_port_base as far as I can tell), but this does not
>> > matter much here.
>>
>> You are right, this is what should be done.
>>
>> A quick fix would be #undef PCI_IOBASE in arch/mips/include/asm/io.h
>> just after including #include <asm-generic/io.h>, with ralink and loongson64
>> as exception.
>
> Shouldn't arch/mips/include/asm/io.h do
>
>     #define PCI_IOBASE mips_io_port_base
>
> unconditionally, _before_ including  <asm-generic/io.h>?

Yes, I think this would make the most sense, but the ordering
with the PCI initialization needs to be done carefully,
to ensure that PCI_IOBASE has its final value before the first
call to pci_remap_iospace().

>> In the long term, we should scrutinize platform usage of mips_io_base
>> following ralink's approach.
>
> Currently ralink handles that in a mach-specific include:
>
>     arch/mips/include/asm/mach-ralink/spaces.h:#define PCI_IOBASE
> mips_io_port_base
>
> Loongson does it differently:
>
>     arch/mips/include/asm/mach-loongson64/spaces.h:#define PCI_IOBASE
>      _AC(0xc000000000000000 + SZ_128K, UL)
>
> But still sets mips_io_port_base in prom_init():
>
>     arch/mips/loongson64/init.c:    set_io_port_base(PCI_IOBASE);
>
> so defining PCI_IOBASE to mips_io_port_base in the main <asm/io.h>
> should work.

This probably requires calling set_io_port_base() with the
actual virtual address rather than self-assigning the
uninitialized mips_io_port_base.

I assume the reason for loongson64 being different from every
other mips platform is the same as why it calls into the
logic_pio_register_range() directly. I don't understand that
code, but it's probably because it has ISA/LPC devices that
are directly wired to a non-memory-mapped set of registers
instead of them being behind a PCI bridge like the other
platforms. The idea of logic_pio is to have a more generic
way to redirect arbitrary port ranges into bus specific
function calls, where normal PCI (on non-x86) assumes that
all I/O ports are mapped into a small contiguous ranges
of virtual addresses.

   Arnd

  reply	other threads:[~2025-01-14  9:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-13 22:16 [REGRESSION] mipsel: no RTC CMOS on the Malta platform in QEMU Mateusz Jończyk
2025-01-13 23:29 ` Jiaxun Yang
2025-01-14  7:01   ` Arnd Bergmann
2025-01-14  8:02   ` Geert Uytterhoeven
2025-01-14  9:59     ` Arnd Bergmann [this message]
2025-01-14 10:22       ` Jiaxun Yang
2025-01-14 16:11       ` Maciej W. Rozycki
2025-01-14 17:04         ` Arnd Bergmann
2025-01-14 19:10           ` Maciej W. Rozycki
2025-01-15  8:15             ` Arnd Bergmann
2025-01-14 17:56         ` Jiaxun Yang
2025-01-14 10:09     ` Jiaxun Yang
2025-01-14 10:30       ` Arnd Bergmann

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=08fe1ebb-b9c4-46c7-a6ab-5a336ec3b771@app.fastmail.com \
    --to=arnd@arndb.de \
    --cc=alexandre.belloni@bootlin.com \
    --cc=bhe@redhat.com \
    --cc=geert@linux-m68k.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=mat.jonczyk@o2.pl \
    --cc=regressions@lists.linux.dev \
    --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