On Thu, 2008-02-14 at 17:12 +0100, Ingo Molnar wrote: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) { --
| Sunil Naidu | Re: Linux 2.6.20-rc6 |
| Alan Cox | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Chris Snook | Re: init's children list is long and slows reaping children. |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Eric W. Biederman | Re: [PATCH 10/11] avoid kobject name conflict with different namespaces |
