[PATCH v4] arm: Fix memory attribute inconsistencies when using fixmap

Jon Medhurst (Tixy) tixy at linaro.org
Mon Apr 10 03:16:34 PDT 2017


On Sat, 2017-04-08 at 22:21 +0530, afzal mohammed wrote:
> Hi,
> 
> On Thu, Apr 06, 2017 at 05:03:14PM +0100, Jon Medhurst (Tixy) wrote:
> > To cope with the variety in ARM architectures and configurations, the
> > pagetable attributes for kernel memory are generated at runtime to match
> > the system the kernel finds itself on. This calculated value is stored
> > in pgprot_kernel.
> > 
> > However, when early fixmap support was added for ARM (commit
> > a5f4c561b3b1) the attributes used for mappings were hard coded because
> > pgprot_kernel is not set up early enough. Unfortunately, when fixmap is
> > used after early boot this means the memory being mapped can have
> > different attributes to existing mappings, potentially leading to
> > unpredictable behaviour. A specific problem also exists due to the hard
> > coded values not include the 'shareable' attribute which means on
> > systems where this matters (e.g. those with multiple CPU clusters) the
> > cache contents for a memory location can become inconsistent between
> > CPUs.
> > 
> > To resolve these issues we change fixmap to use the same memory
> > attributes (from pgprot_kernel) that the rest of the kernel uses. To
> > enable this we need to refactor the initialisation code so
> > build_mem_type_table() is called early enough. Note, that relies on early
> > param parsing for memory type overrides passed via the kernel command
> > line, so we need to make sure this call is still after
> > parse_early_params().
> 
> Tested-by: afzal mohammed <afzal.mohd.ma at gmail.com>
> 
> with an emphasis on no-MMU's

Thanks. I've now submitted this new version to the patch tracker...
http://www.armlinux.org.uk/developer/patches/viewpatch.php?id=8667/3



More information about the linux-arm-kernel mailing list