From: Niklas Schnelle <schnelle@linux.ibm.com>
To: Arnd Bergmann <arnd@arndb.de>, Heiko Carstens <hca@linux.ibm.com>,
Danilo Krummrich <dakr@kernel.org>,
Gerd Bayer <gbayer@linux.ibm.com>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
driver-core@lists.linux.dev,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Sven Schnelle" <svens@linux.ibm.com>,
linux-s390@vger.kernel.org,
Linux-Arch <linux-arch@vger.kernel.org>,
"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
"Tamir Duberstein" <tamird@kernel.org>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Onur Özkan" <work@onurozkan.dev>,
rust-for-linux@vger.kernel.org
Subject: Re: `io{re,un}map()` build error in s390 under `!CONFIG_HAS_IOMEM`
Date: Wed, 05 Aug 2026 17:36:13 +0200 [thread overview]
Message-ID: <94c3ebc645e80feae1044a57b8b5c82d4d4ff408.camel@linux.ibm.com> (raw)
In-Reply-To: <57ac7553-4034-49e2-b686-b7272591da00@app.fastmail.com>
On Tue, 2026-08-04 at 17:52 +0200, Arnd Bergmann wrote:
> On Tue, Aug 4, 2026, at 14:21, Niklas Schnelle wrote:
> >
> > I think there is also an interesting interaction with memremap().
> > That calls ioremap() under some circumstances and it's a known issue that on
> > s390 memremap() will work if the PCI memory-I/O (MIO) instructions are
> > enabled (e.g. on modern LPARs) because then ioremap() actually maps,
> > but won't work if they aren't enabled. With your proposal it would also
> > work for !PCI.
>
> Right, that is an interesting one, as there are somewhat conflicting
> requirements:
>
> - On PCI MMIO areas, memremap() and memremap_wt() should return a
> normal kernel pointer that can be dereferenced, e.g. for
> option ROM contents for a framebuffer console. This can't work
> on non-MIO guests but might work on MIO depending on which
> instructions are allowed those mappings (I can never quite
> remember how this part works on z, does this have to use
> pcistgi or does a normal aligned load/store work as well?).
You still have to use pcistgi/pcilgi/pcistbi normal aligned
loads/stores will fail as the physical address is beyond the memory
limit. On the other hand the PCI instructions can't access normal
memory. So you when using memremap() you'd have to know which kind of
memory you're remapping and use the right accessors.
>
> - On areas that are backed by physical RAM but not part of the
> kernel memory (something like z/VM DCSS) should be mapped
> using memremap(), which would fail with the current !MIO
> implementation. On x86 and arm, this is done for mapping
> firmware blobs, but I don't think anything tries to do
> this on s390.
> Right now, not having memremap() defined on !PCI configs is
> the one thing that lets you know if some non-PCI code ever
> start using it, other than crashing a non-MIO guest.
>
> > I actually have a prototype lying around where ioremap() always remaps
> > by mapping the address cookies much like we do for user-space access
> > via the s390 specific MMIO syscalls and then doing a page table walk in
> > the accessors for the case where we don't have PCI MIO support. That
> > would also allow us to implement the s390 MMIO syscall via
> > generic_access_phys() getting rid of quite nasty inline assembly and
> > over 300 lines removed in total. On the other hand it would cause
> > overhead for non-MIO systems and sadly this currently includes all KVM
> > and z/VM guests which is why it remains on my prototype pile. I haven't
> > actually been able to measure the overhead but clearly more work is
> > done.
>
> This would not help with either memremap() or the !CONFIG_HAS_MMIO
> issue though, right?
>
> Arnd
I think it would help with memremap() because it would mean that when
used on normal memory and accessed with normal loads/stores memremap()
works and when used on PCI BAR / MIO addresses and accessed by I/O
accessors it would also work. So it should behave the same no matter if
memory-I/O is available.
Thanks,
Niklas
next prev parent reply other threads:[~2026-08-05 15:37 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 18:09 `io{re,un}map()` build error in s390 under `!CONFIG_HAS_IOMEM` Miguel Ojeda
2026-08-03 19:56 ` Arnd Bergmann
2026-08-03 20:09 ` Danilo Krummrich
2026-08-04 7:13 ` Heiko Carstens
2026-08-04 10:36 ` Arnd Bergmann
2026-08-04 11:10 ` Danilo Krummrich
2026-08-04 12:02 ` Arnd Bergmann
2026-08-04 12:26 ` Gary Guo
2026-08-05 15:08 ` Danilo Krummrich
2026-08-04 12:21 ` Niklas Schnelle
2026-08-04 15:52 ` Arnd Bergmann
2026-08-05 15:36 ` Niklas Schnelle [this message]
2026-08-05 15:56 ` Arnd Bergmann
2026-08-06 13:25 ` Niklas Schnelle
2026-08-06 13:44 ` Arnd Bergmann
2026-08-06 15:21 ` 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=94c3ebc645e80feae1044a57b8b5c82d4d4ff408.camel@linux.ibm.com \
--to=schnelle@linux.ibm.com \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=agordeev@linux.ibm.com \
--cc=aliceryhl@google.com \
--cc=arnd@arndb.de \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=borntraeger@linux.ibm.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=driver-core@lists.linux.dev \
--cc=gary@garyguo.net \
--cc=gbayer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=svens@linux.ibm.com \
--cc=tamird@kernel.org \
--cc=tmgross@umich.edu \
--cc=work@onurozkan.dev \
/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