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

[Xen-devel] [PATCH 2/5] EFI: seperate get efi table info code to single function



Seperate get efi table info code to generic function,
xen efi driver will call it too.

Signed-off-by: Tang Liang <liang.tang@xxxxxxxxxx>
Suggested-by:: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 arch/x86/platform/efi/efi.c |   77 ++++++++++++++++++++++++-------------------
 include/linux/efi.h         |    2 +
 2 files changed, 45 insertions(+), 34 deletions(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index d567e29..d7b19ee 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -446,6 +446,47 @@ static void __init efi_free_boot_services(void)
        }
 }
 
+void get_efi_table_info(efi_config_table_t *config_tables, int nr_tables,
+                       struct efi *efi_t)
+{
+       int i;
+
+       printk(KERN_INFO);
+       for (i = 0; i < nr_tables; i++) {
+               if (!efi_guidcmp(config_tables[i].guid, MPS_TABLE_GUID)) {
+                       efi_t->mps = config_tables[i].table;
+                       printk(" MPS=0x%lx ", config_tables[i].table);
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       ACPI_20_TABLE_GUID)) {
+                       efi_t->acpi20 = config_tables[i].table;
+                       printk(" ACPI 2.0=0x%lx ", config_tables[i].table);
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       ACPI_TABLE_GUID)) {
+                       efi_t->acpi = config_tables[i].table;
+                       printk(" ACPI=0x%lx ", config_tables[i].table);
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       SMBIOS_TABLE_GUID)) {
+                       efi_t->smbios = config_tables[i].table;
+                       printk(" SMBIOS=0x%lx ", config_tables[i].table);
+#ifdef CONFIG_X86_UV
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       UV_SYSTEM_TABLE_GUID)) {
+                       efi_t->uv_systab = config_tables[i].table;
+                       printk(" UVsystab=0x%lx ", config_tables[i].table);
+#endif
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       HCDP_TABLE_GUID)) {
+                       efi_t->hcdp = config_tables[i].table;
+                       printk(" HCDP=0x%lx ", config_tables[i].table);
+               } else if (!efi_guidcmp(config_tables[i].guid,
+                                       UGA_IO_PROTOCOL_GUID)) {
+                       efi_t->uga = config_tables[i].table;
+                       printk(" UGA=0x%lx ", config_tables[i].table);
+               }
+       }
+       printk("\n");
+}
+
 static void efi_init_generic(void)
 {
        efi_config_table_t *config_tables;
@@ -507,40 +548,8 @@ static void efi_init_generic(void)
        if (config_tables == NULL)
                printk(KERN_ERR "Could not map EFI Configuration Table!\n");
 
-       printk(KERN_INFO);
-       for (i = 0; i < efi.systab->nr_tables; i++) {
-               if (!efi_guidcmp(config_tables[i].guid, MPS_TABLE_GUID)) {
-                       efi.mps = config_tables[i].table;
-                       printk(" MPS=0x%lx ", config_tables[i].table);
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       ACPI_20_TABLE_GUID)) {
-                       efi.acpi20 = config_tables[i].table;
-                       printk(" ACPI 2.0=0x%lx ", config_tables[i].table);
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       ACPI_TABLE_GUID)) {
-                       efi.acpi = config_tables[i].table;
-                       printk(" ACPI=0x%lx ", config_tables[i].table);
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       SMBIOS_TABLE_GUID)) {
-                       efi.smbios = config_tables[i].table;
-                       printk(" SMBIOS=0x%lx ", config_tables[i].table);
-#ifdef CONFIG_X86_UV
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       UV_SYSTEM_TABLE_GUID)) {
-                       efi.uv_systab = config_tables[i].table;
-                       printk(" UVsystab=0x%lx ", config_tables[i].table);
-#endif
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       HCDP_TABLE_GUID)) {
-                       efi.hcdp = config_tables[i].table;
-                       printk(" HCDP=0x%lx ", config_tables[i].table);
-               } else if (!efi_guidcmp(config_tables[i].guid,
-                                       UGA_IO_PROTOCOL_GUID)) {
-                       efi.uga = config_tables[i].table;
-                       printk(" UGA=0x%lx ", config_tables[i].table);
-               }
-       }
-       printk("\n");
+       get_efi_table_info(config_tables, efi.systab->nr_tables, &efi);
+
        early_iounmap(config_tables,
                          efi.systab->nr_tables * sizeof(efi_config_table_t));
 
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 62e0a1f..633371c 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -474,6 +474,8 @@ extern int efi_set_rtc_mmss(unsigned long nowtime);
 extern void efi_reserve_boot_services(void);
 extern struct efi_memory_map memmap;
 extern void efi_init_function_register(struct efi_init_funcs *funcs);
+extern void get_efi_table_info(efi_config_table_t *config_tables, int 
nr_tables,
+                              struct efi *efi_t);
 
 /**
  * efi_range_is_wc - check the WC bit on an address range
-- 
1.7.7.5


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


 


Rackspace

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