Re: [PATCH 1/3] x86: Honour passed pgprot in track_pfn_insert() and track_pfn_remap()

From: Andy Lutomirski
Date: Mon Jan 25 2016 - 12:34:03 EST


On Mon, Jan 25, 2016 at 9:25 AM, Matthew Wilcox
<matthew.r.wilcox@xxxxxxxxx> wrote:
> From: Matthew Wilcox <willy@xxxxxxxxxxxxxxx>
>
> track_pfn_insert() overwrites the pgprot that is passed in with a value
> based on the VMA's page_prot. This is a problem for people trying to
> do clever things with the new vm_insert_pfn_prot() as it will simply
> overwrite the passed protection flags. If we use the current value of
> the pgprot as the base, then it will behave as people are expecting.
>
> Also fix track_pfn_remap() in the same way.

Well that's embarrassing. Presumably it worked for me because I only
overrode the cacheability bits and lookup_memtype did the right thing.

But shouldn't the PAT code change the memtype if vm_insert_pfn_prot
requests it? Or are there no callers that actually need that? (HPET
doesn't, because there's a plain old ioremapped mapping.)

--Andy