[PATCH v2 07/12] ARM: split off core mapping logic from create_mapping

Ard Biesheuvel ard.biesheuvel at linaro.org
Mon Nov 16 11:01:03 PST 2015

On 16 November 2015 at 19:55, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Mon, Nov 16, 2015 at 07:32:32PM +0100, Ard Biesheuvel wrote:
>> In order to be able to reuse the core mapping logic of create_mapping
>> for mapping the UEFI Runtime Services into a private set of page tables,
>> split it off from create_mapping() into a separate function
>> __create_mapping which we will wire up in a subsequent patch.
> I'm slightly worried about this.  Generally, these functions setup
> global mappings.  If you're wanting to have a private set of page
> tables for UEFI, and those private page tables contain global
> mappings which are different from the mappings in the kernel's page
> tables, then you need careful break-TLBflush-make handling when
> switching from the kernel's page tables to the private UEFI ones,
> and vice versa.
> Has this aspect been considered?

Yes. The UEFI mappings are all below 1 GB, and the top kernel end is
reused as we do for ordinary userland page tables. The switch to the
UEFI page tables performs a full TLB flush. What it does not do is
break before make, as far as I can tell, so any pointers regarding how
to implement that would be appreciated (this is implemented in 11/12)


More information about the linux-arm-kernel mailing list