[yocto] [PATCH 3/3] x86, efi: Convert efi_phys_get_time() args to physical addresses

Darren Hart darren at dvhart.com
Wed Dec 7 11:19:09 PST 2011


From: Maurice Ma <maurice.ma at intel.com>

Because callers of efi_phys_get_time() pass virtual stack addresses as
arguments, we need to find their corresponding physical addresses and
when calling GetTime() in physical mode.

Without this patch the following line is printed on boot,

	"Oops: efitime: can't read time!"

Cc: Matthew Garrett <mjg at redhat.com>
Cc: Thomas Gleixner <tglx at linutronix.de>
Cc: Ingo Molnar <mingo at elte.hu>
Cc: "H. Peter Anvin" <hpa at zytor.com>
Cc: x86 at kernel.org
Cc: Zhang Rui <rui.zhang at intel.com>
Signed-off-by: Maurice Ma <maurice.ma at intel.com>
Signed-off-by: Matt Fleming <matt.fleming at intel.com>
Integrated-by: Darren Hart <dvhart at linux.intel.com>
---
 arch/x86/platform/efi/efi.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 899e393..4fd8217 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -167,7 +167,8 @@ static efi_status_t __init phys_efi_get_time(efi_time_t *tm,
 	efi_status_t status;
 
 	efi_call_phys_prelog();
-	status = efi_call_phys2(efi_phys.get_time, tm, tc);
+	status = efi_call_phys2(efi_phys.get_time, virt_to_phys(tm),
+				virt_to_phys(tc));
 	efi_call_phys_epilog();
 	return status;
 }
-- 
1.7.6.4




More information about the yocto mailing list