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

[Xen-changelog] [xen-unstable] [IA64] re-add efi support to acpi_os_get_root_pointer()



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1213281861 -3600
# Node ID 4ebd8f3774263b4cd10fd9b1b7a93864acf88ab0
# Parent  0089fe3d209d13d752215b0214c9a7c9f5ee4fad
[IA64] re-add efi support to acpi_os_get_root_pointer()

On ia64 RSDP address is obtained from efi table instead of
memory scan. Otherwise it may use wrong table to fail to find
tables.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/drivers/acpi/osl.c        |   25 ++++++++++++++++++++++---
 xen/include/asm-ia64/config.h |    1 +
 2 files changed, 23 insertions(+), 3 deletions(-)

diff -r 0089fe3d209d -r 4ebd8f377426 xen/drivers/acpi/osl.c
--- a/xen/drivers/acpi/osl.c    Thu Jun 12 15:42:09 2008 +0100
+++ b/xen/drivers/acpi/osl.c    Thu Jun 12 15:44:21 2008 +0100
@@ -37,6 +37,9 @@
 #include <acpi/platform/aclinux.h>
 #include <xen/spinlock.h>
 #include <xen/domain_page.h>
+#ifdef __ia64__
+#include <linux/efi.h>
+#endif
 
 #define _COMPONENT             ACPI_OS_SERVICES
 ACPI_MODULE_NAME("osl")
@@ -82,9 +85,25 @@ void acpi_os_vprintf(const char *fmt, va
 
 acpi_physical_address __init acpi_os_get_root_pointer(void)
 {
-       acpi_physical_address pa = 0;
-       acpi_find_root_pointer(&pa);
-       return pa;
+#ifdef __ia64__
+       if (efi_enabled) {
+               if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
+                       return efi.acpi20;
+               else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
+                       return efi.acpi;
+               else {
+                       printk(KERN_ERR PREFIX
+                              "System description tables not found\n");
+                       return 0;
+               }
+       } else
+#endif
+       {
+               acpi_physical_address pa = 0;
+
+               acpi_find_root_pointer(&pa);
+               return pa;
+       }
 }
 
 void __iomem *
diff -r 0089fe3d209d -r 4ebd8f377426 xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     Thu Jun 12 15:42:09 2008 +0100
+++ b/xen/include/asm-ia64/config.h     Thu Jun 12 15:44:21 2008 +0100
@@ -17,6 +17,7 @@
 // this needs to be on to run on system with large memory hole
 #define        CONFIG_VIRTUAL_FRAME_TABLE
 
+#define CONFIG_EFI
 #define CONFIG_EFI_PCDP
 #define CONFIG_SERIAL_SGI_L1_CONSOLE
 

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


 


Rackspace

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