lkml.org 
[lkml]   [2008]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH] Fix left over EFI cache mapping problems
From
Date
On Thu, 2008-02-14 at 17:12 +0100, Ingo Molnar wrote: 
> this is indeed a bug (we change the attributes for a larger area than
> needed), but your fix is unclean. Find below a cleaner solution.
>
> Ying, if you agree with this fix could you please test and ACK it before
> we push it to Linus? (this fix is also in the latest x86.git#mm)

I think the patch following may be better, because it is possible that
the EFI_PAGE_SHIFT and PAGE_SHIFT are different.

Best Regards,
Huang Ying

------------------------->
The EFI-runtime mapping code changed a larger memory area than it
should have, due to a pages/bytes parameter mixup.

noticed by Andi Kleen.

This patch has been tested on Intel x86 platform with EFI 32/64.

Signed-off-by: Huang Ying <ying.huang@intel.com>

---
arch/x86/kernel/efi.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

--- a/arch/x86/kernel/efi.c
+++ b/arch/x86/kernel/efi.c
@@ -386,12 +386,13 @@ static void __init runtime_code_page_mke

/* Make EFI runtime service code area executable */
for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
- md = p;
+ unsigned long num_pages;

+ md = p;
if (md->type != EFI_RUNTIME_SERVICES_CODE)
continue;
-
- set_memory_x(md->virt_addr, md->num_pages << EFI_PAGE_SHIFT);
+ num_pages = (md->num_pages << EFI_PAGE_SHIFT) >> PAGE_SHIFT;
+ set_memory_x(md->virt_addr, num_pages);
}
}

@@ -434,7 +435,7 @@ void __init efi_enter_virtual_mode(void)
}

if (!(md->attribute & EFI_MEMORY_WB))
- set_memory_uc(md->virt_addr, size);
+ set_memory_uc(md->virt_addr, size >> PAGE_SHIFT);

systab = (u64) (unsigned long) efi_phys.systab;
if (md->phys_addr <= systab && systab < end) {


\
 
 \ /
  Last update: 2008-02-15 05:53    [W:0.157 / U:0.900 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site