Re: [PATCH] always print note when trimming EFI memory map

Bjorn Helgaas
2003-09-26T21:07:44Z

On Friday 26 September 2003 2:32 pm, David Mosberger wrote:
> The intention was to give the user an idea how much real & available
> memory is lost due to the trimming. When reporting unavailable
> memory, you'll lose that info. However, maybe we should be more
> verbose if EFI_DEBUG is enabled?

How about something like the following? It still always prints a
note when trimming, but identifies "reserved" memory to distinguish
it from the normal case.

This is the second or third time I've had to debug the problem,
and the failure mode doesn't obviously point to EFI_DEBUG. It
just MCAs because you try to access main memory with a UC access.
In fact, I think on most boxes you don't even get an MCA; it
just appears to work, even though it introduces attribute
aliasing.

=== arch/ia64/kernel/efi.c 1.23 vs edited ==--- 1.23/arch/ia64/kernel/efi.c Wed Aug 27 10:47:27 2003
+++ edited/arch/ia64/kernel/efi.c Fri Sep 26 17:33:36 2003
@@ -249,11 +249,11 @@
if (num_skipped_pages > md->num_pages)
num_skipped_pages = md->num_pages;

- if (is_available_memory(md))
- printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole "
- "at 0x%lx\n", __FUNCTION__,
- (num_skipped_pages << EFI_PAGE_SHIFT) >> 10,
- md->phys_addr, start_addr - IA64_GRANULE_SIZE);
+ printk(KERN_NOTICE "efi.%s: ignoring %luKB of %smemory at 0x%lx due to granule hole "
+ "at 0x%lx\n", __FUNCTION__,
+ (num_skipped_pages << EFI_PAGE_SHIFT) >> 10,
+ is_available_memory(md) ? "" : "reserved ",
+ md->phys_addr, start_addr - IA64_GRANULE_SIZE);
/*
* NOTE: Don't set md->phys_addr to START_ADDR because that could cause the memory
* descriptor list to become unsorted. In such a case, md->num_pages will be
@@ -277,11 +277,11 @@
if (num_dropped_pages > md->num_pages)
num_dropped_pages = md->num_pages;

- if (is_available_memory(md))
- printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole "
- "at 0x%lx\n", __FUNCTION__,
- (num_dropped_pages << EFI_PAGE_SHIFT) >> 10,
- md->phys_addr, end_addr);
+ printk(KERN_NOTICE "efi.%s: ignoring %luKB of %smemory at 0x%lx due to granule hole "
+ "at 0x%lx\n", __FUNCTION__,
+ (num_dropped_pages << EFI_PAGE_SHIFT) >> 10,
+ is_available_memory(md) ? "" : "reserved ",
+ md->phys_addr, end_addr);
md->num_pages -= num_dropped_pages;
}