[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-ia64-devel] [patch 1/1] Dont use dummy set_virtual_address_map



Instead of relying on purgatory to set up a dummy
set_virtual_address_map(), which requires purgatory
to know how to do __va() opperations, just test to see
if efi has already been mapped at boot time.

Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: linux-2.6/arch/ia64/kernel/efi.c
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/efi.c       2007-02-19 15:28:02.000000000 
+0900
+++ linux-2.6/arch/ia64/kernel/efi.c    2007-02-19 18:08:35.000000000 +0900
@@ -586,15 +586,28 @@
                }
        }
 
-       status = efi_call_phys(__va(runtime->set_virtual_address_map),
-                              ia64_boot_param->efi_memmap_size,
-                              efi_desc_size, 
ia64_boot_param->efi_memdesc_version,
-                              ia64_boot_param->efi_memmap);
-       if (status != EFI_SUCCESS) {
-               printk(KERN_WARNING "warning: unable to switch EFI into virtual 
mode "
-                      "(status=%lu)\n", status);
+       if ((unsigned long)__va(runtime->set_virtual_address_map) ==
+           runtime->set_virtual_address_map) {
+               printk(KERN_WARNING "warning: EFI is already mapped "
+                      "in the right place\n");
+       }
+       else if (runtime->set_virtual_address_map & (0xfUL << 60)) {
+               printk(KERN_WARNING "warning: EFI is already mapped "
+                      "in the wrong place\n");
                return;
        }
+       else {
+               status = efi_call_phys(__va(runtime->set_virtual_address_map),
+                                      ia64_boot_param->efi_memmap_size,
+                                      efi_desc_size,
+                                      ia64_boot_param->efi_memdesc_version,
+                                      ia64_boot_param->efi_memmap);
+               if (status != EFI_SUCCESS) {
+                       printk(KERN_WARNING "warning: unable to switch EFI "
+                              "into virtual mode (status=%lu)\n", status);
+                       return;
+               }
+       }
 
        /*
         * Now that EFI is in virtual mode, we call the EFI functions more 
efficiently:

-- 

-- 
Horms
  H: http://www.vergenet.net/~horms/
  W: http://www.valinux.co.jp/en/


_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.