Re: [PATCH v9 07/38] x86/mm: Remove phys_to_virt() usage in ioremap()
From: Arnd Bergmann
Date: Tue Jul 11 2017 - 04:35:32 EST
On Tue, Jul 11, 2017 at 6:58 AM, Brian Gerst <brgerst@xxxxxxxxx> wrote:
> On Mon, Jul 10, 2017 at 3:50 PM, Tom Lendacky <thomas.lendacky@xxxxxxx> wrote:
>> On 7/8/2017 7:57 AM, Brian Gerst wrote:
>>> On Fri, Jul 7, 2017 at 9:39 AM, Tom Lendacky <thomas.lendacky@xxxxxxx>
>>
>> I originally had a check for SME here in a previous version of the
>> patch. Thomas Gleixner recommended removing the check so that the code
>> path was always exercised regardless of the state of SME in order to
>> better detect issues:
>>
>> http://marc.info/?l=linux-kernel&m=149803067811436&w=2
>
> Looking a bit closer, this shortcut doesn't set the caching
> attributes. So it's probably best to get rid of it anyways. Also
> note, there is a corresponding check in iounmap().
Could that cause regressions if a driver relies on (write-through)
cacheable access to the VGA frame buffer RAM or an read-only
cached access to an option ROM but now gets uncached access?
I also tried to find out whether we can stop mapping the ISA MMIO
area into the linear mapping, but at least the VGA code uses
VGA_MAP_MEM() to get access to the same pointers. I'm pretty
sure this got copied incorrectly into most other architectures, but
it is definitely still used on x86 with vga16fb/vgacon/mdacon.
On the plus side, I see that removing this code path will end up
restoring MMIOTRACE support for the ISA MMIO range that was
apparently removed by accident in commit d61fc44853f4
("x86: mmiotrace, preview 2") in linux-2.6.27.
Arnd