From mboxrd@z Thu Jan 1 00:00:00 1970 From: matt@codeblueprint.co.uk (Matt Fleming) Date: Mon, 12 Jan 2015 11:46:00 +0000 Subject: [PATCH v5 6/8] arm64/efi: move SetVirtualAddressMap() to UEFI stub In-Reply-To: <1420742914-2404-7-git-send-email-ard.biesheuvel@linaro.org> References: <1420742914-2404-1-git-send-email-ard.biesheuvel@linaro.org> <1420742914-2404-7-git-send-email-ard.biesheuvel@linaro.org> Message-ID: <20150112114600.GE26589@codeblueprint.co.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, 08 Jan, at 06:48:32PM, Ard Biesheuvel wrote: > @@ -46,4 +54,26 @@ extern void efi_idmap_init(void); > > #define EFI_ALLOC_ALIGN SZ_64K > > +/* > + * On ARM systems, virtually remapped UEFI runtime services are set up in three > + * distinct stages: > + * - The stub retrieves the final version of the memory map from UEFI, populates > + * the virt_addr fields and calls the SetVirtualAddressMap() [SVAM] runtime > + * service to communicate the new mapping to the firmware (Note that the new > + * mapping is not live at this time) > + * - During early boot, the page tables are allocated and populated based on the > + * virt_addr fields in the memory map, but only if all descriptors with the > + * EFI_MEMORY_RUNTIME attribute have a non-zero value for virt_addr. If this > + * succeeds, the EFI_VIRTMAP flag is set to indicate that the virtual mappings > + * have been installed successfully. > + * - During an early initcall(), the UEFI Runtime Services are enabled and the > + * EFI_RUNTIME_SERVICES bit set if some conditions are met, i.e., we need a > + * non-early mapping of the UEFI system table, and we need to have the virtmap > + * installed. > + */ > +#define EFI_VIRTMAP EFI_ARCH_1 Lucid. Thanks, Ard! -- Matt Fleming, Intel Open Source Technology Center