Messages in this thread | | | Date | Tue, 28 Aug 2012 11:06:31 -0500 | From | Jacob Shin <> | Subject | Re: [PATCH 3/5] x86: Only direct map addresses that are marked as E820_RAM |
| |
On Fri, Aug 24, 2012 at 09:54:04PM -0700, Yinghai Lu wrote: > On Fri, Aug 24, 2012 at 9:24 PM, Jacob Shin <jacob.shin@amd.com> wrote: > > On Fri, Aug 24, 2012 at 06:07:01PM -0700, Yinghai Lu wrote: > >> On Fri, Aug 24, 2012 at 4:55 PM, Jacob Shin <jacob.shin@amd.com> wrote: > >> > >> looks like you could avoid add pfn_mapped[] array. > >> > >> pfn_range_is_mapped() should be > >> check max_low_pfn_mapped, max_pfn_mapped with > >> e820_all_mapped(start, end, E820_RAM). > > > > Hmm .. I guess that could work .. but what about EFI code that keys off of > > EFI memory map? Does the EFI code update e820 and mark as E820_RAM whatever > > ranges that it calls init_memory_mapping on (via efi_ioremap?) > > they are converted to e820 memmap before init_memory_mapping is called.
Yinghai, looking into this further on my EFI enabled machine, there is a memory range where:
- e820 marks it as E820_RESERVED - EFI memory map marks it as EFI_RUNTIME_SERVICES_DATA
During EFI init, the range is added (redundantly) to e820 as E820_RESERVED, but during efi_enter_virtual_mode, direct mappings are created for the range with a call to efi_ioremap.
Another such region is EFI_RUNTIME_SERVICES_CODE which is marked as ACPI NVS.
So these are not E820_RAM, but direct mapped by EFI code path .. what do we do here? I think we should just stick with keeping the pfn_mapped[] array .. no?
-Jacob
> > Thanks > > Yinghai >
| |