On 18.03.2025 16:31, Roger Pau Monné wrote: > On Tue, Mar 18, 2025 at 03:28:32PM +0100, Jan Beulich wrote: >> On 18.03.2025 14:11, Andrew Cooper wrote: >>> On 18/03/2025 9:19 am, Roger Pau Monne wrote: >>>> The call to ioremap_wc() in video_init() will always fail, because >>>> video_init() is called ahead of vm_init_type(), and so the underlying >>>> __vmap() call will fail to allocate the linear address space. >>>> >>>> Fix by reverting to the previous behavior and using ioremap() for the VGA >>>> text buffer. >>>> >>>> Fixes: 81d195c6c0e2 ('x86: introduce ioremap_wc()') >>>> Signed-off-by: Roger Pau Monné <roger....@citrix.com> >>> >>> This is somewhat ugly. >>> >>> ioremap() isn't really any better than ioremap_wc(); this only works >>> because plain ioremap() has a special case for the bottom 1M where it >>> does nothing and exits. >> >> And this is exactly why I screwed up back then. Imo we would be better >> off moving to using __va() directly here. Otherwise the same mistake >> could be made again by someone (perhaps even me) noticing the less >> efficient ioremap(), when ioremap_wc() really would be wanted. > > I can switch to using __va(), that's fine. I guess we should then > remove the special casing for the low 1MB in ioremap()?
I'm not sure we can - DMI and ACPI might use that, and who knows what else. But of course if you're sure nothing depends on that anymore ... Jan