Re: [PATCH 2/2] efi/esrt: mark ESRT memory region as nomap

From: Tyler Baicar
Date: Mon Feb 26 2018 - 10:09:00 EST


Hello Ard,


On 2/24/2018 3:03 AM, Ard Biesheuvel wrote:
Hi Tyler,

On 23 February 2018 at 19:42, Tyler Baicar <tbaicar@xxxxxxxxxxxxxx> wrote:
The ESRT memory region is being exposed as System RAM in /proc/iomem
which is wrong because it cannot be overwritten. This memory is needed
for kexec kernels in order to properly initialize ESRT, so if it is
overwritten it will cause ESRT failures in the kexec kernel. Mark this
region as nomap so that it is not overwritten.

This is not the right fix. We should only mark regions NOMAP if it is
uncertain whether the firmware may have a mapping of the same region
with mismatched attributes. NOMAP regions punch holes in the linear
region, increasing its TLB footprint significantly, so we should avoid
them if we can.
Thanks for the explanation, that makes sense.
This same issue has come up in relation to mapping ACPI tables after
kexec. This should simply be a matter of ensuring that all
memblock_reserve()d region appear as such in /proc/iomem rather than
as 'System RAM'
Do you know why this memory region would be coming up as System RAM rather than reserved if we're
calling memblock_reserve() on it in efi_mem_reserve()?

Thanks,
Tyler

--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.