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);
}

Reply via email to