Re: [PATCH V7 4/5] arm64: apei: implement arch_apei_get_mem_attributes()

From: Zhang, Jonathan Zhixiong
Date: Tue Jul 28 2015 - 20:58:55 EST


On 7/27/2015 2:54 AM, Matt Fleming wrote:
On Mon, 2015-07-27 at 10:45 +0100, Will Deacon wrote:

That bit's fine. The weird bit is:

pgprot_t prot;

prot = efi_mem_attributes(addr);

Since that's putting the arch-independent format into the pg_prot.

Oops, missed that. Yeah that's funky.
Sorry, that was my mistake. Corrected at V8.
I don't see how you can do that any other way than by using pgprot_t.

Really, the problem here is that ioremap_page_caller() has no notion of
"map this range in a firmware-compatible manner". If we could do, for
example,

ioremap_page_range(vaddr, vend, paddr, PAGE_FW_COMPAT);

that would allow the innards of the arch-ioremap to figure out exactly
how to map this range so that the firmware could access it coherently.
With this patch set, arch_apei_get_mem_attribute() is defined for above
mentioned PAGE_FW_COMPAT. If in future there are additional use case for
mapping page in atomic context according to UEFI memory map, the
function name/definition can be generalized.

I suggested this previously but it didn't gain any traction.

Yeah, or just ioremap_efi.

</me runs away>

Someone beat you to it ;-)

arch/x86/include/asm/efi.h:#define efi_ioremap(addr, size, type, attr) ioremap_cache(addr, size)
arch/x86/include/asm/efi.h:extern void __iomem *__init efi_ioremap(unsigned long addr, unsigned long size,
arch/x86/platform/efi/efi.c: va = efi_ioremap(md->phys_addr, size,
arch/x86/platform/efi/efi_64.c:void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size,
arch/x86/platform/efi/efi_64.c: efi_ioremap(top, size - (top - phys_addr), type, attribute);
x86's efi_ioremap() is intended to run at init time only. For the
purpose of this patch set, we would need to define something new
for both archs. We may want to keep it simple at this time, how do you
prefer?

--
Jonathan (Zhixiong) Zhang
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/