On Thu, 09 Jun, at 11:16:40AM, Tom Lendacky wrote: > > So maybe something along the lines of an enum that would have entries > (initially) like KERNEL_DATA (equal to zero) and EFI_DATA. Others could > be added later as needed. Sure, that works for me, though maybe BOOT_DATA would be more applicable considering the devicetree case too.
> Would you then want to allow the protection attributes to be updated > by architecture specific code through something like a __weak function? > In the x86 case I can add this function as a non-SME specific function > that would initially just have the SME-related mask modification in it. Would we need a new function? Couldn't we just have a new FIXMAP_PAGE_* constant? e.g. would something like this work? --- enum memremap_owner { KERNEL_DATA = 0, BOOT_DATA, }; void __init * early_memremap(resource_size_t phys_addr, unsigned long size, enum memremap_owner owner) { pgprot_t prot; switch (owner) { case BOOT_DATA: prot = FIXMAP_PAGE_BOOT; break; case KERNEL_DATA: /* FALLTHROUGH */ default: prot = FIXMAP_PAGE_NORMAL; } return (__force void *)__early_ioremap(phys_addr, size, prot); }