WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 13 of 19] tools: hvmloader: refactor highbios and bio

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 13 of 19] tools: hvmloader: refactor highbios and bios_info setup into struct bios_config
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Tue, 12 Apr 2011 12:29:12 +0100
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Delivery-date: Tue, 12 Apr 2011 04:52:08 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1302607739@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1302607739@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.6.4
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1302602206 -3600
# Node ID 99d1e52175a3d7770ab0cfe286133cf84954cf8d
# Parent  f153a0d91b9f7cc9fe9d84bf7d97ac6371793b03
tools: hvmloader: refactor highbios and bios_info setup into struct bios_config

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff -r f153a0d91b9f -r 99d1e52175a3 
tools/firmware/hvmloader/32bitbios_support.c
--- a/tools/firmware/hvmloader/32bitbios_support.c      Tue Apr 12 10:54:21 
2011 +0100
+++ b/tools/firmware/hvmloader/32bitbios_support.c      Tue Apr 12 10:56:46 
2011 +0100
@@ -144,7 +144,7 @@ static uint32_t relocate_32bitbios(char 
     return (uint32_t)highbiosarea;
 }
 
-uint32_t highbios_setup(void)
+uint32_t rombios_highbios_setup(void)
 {
     return relocate_32bitbios((char *)highbios_array, sizeof(highbios_array));
 }
diff -r f153a0d91b9f -r 99d1e52175a3 tools/firmware/hvmloader/config.h
--- a/tools/firmware/hvmloader/config.h Tue Apr 12 10:54:21 2011 +0100
+++ b/tools/firmware/hvmloader/config.h Tue Apr 12 10:56:46 2011 +0100
@@ -28,6 +28,9 @@ struct bios_config {
     void (*apic_setup)(void);
     void (*pci_setup)(void);
     void (*smp_setup)(void);
+
+    uint32_t (*bios_high_setup)(void);
+    void (*bios_info_setup)(uint32_t);
 };
 
 extern struct bios_config rombios_config;
diff -r f153a0d91b9f -r 99d1e52175a3 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 10:54:21 2011 +0100
+++ b/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 10:56:46 2011 +0100
@@ -364,10 +364,10 @@ static const struct bios_config *detect_
 
 int main(void)
 {
+    uint32_t highbios = 0;
     const struct bios_config *bios;
     int option_rom_sz = 0, vgabios_sz = 0, etherboot_sz = 0, smbios_sz = 0;
-    uint32_t etherboot_phys_addr, option_rom_phys_addr, bios32_addr;
-    struct bios_info *bios_info;
+    uint32_t etherboot_phys_addr, option_rom_phys_addr;
 
     printf("HVM Loader\n");
 
@@ -400,7 +400,9 @@ int main(void)
     printf("Loading %s ...\n", bios->name);
     memcpy((void *)bios->bios_address, bios->image,
            bios->image_size);
-    bios32_addr = highbios_setup();
+
+    if (bios->bios_high_setup)
+        highbios = bios->bios_high_setup();
 
     if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode )
         create_mp_tables();
@@ -480,17 +482,8 @@ int main(void)
     *E820_NR = build_e820_table(E820);
     dump_e820_table(E820, *E820_NR);
 
-    bios_info = (struct bios_info *)BIOS_INFO_PHYSICAL_ADDRESS;
-    memset(bios_info, 0, sizeof(*bios_info));
-    bios_info->com1_present = uart_exists(0x3f8);
-    bios_info->com2_present = uart_exists(0x2f8);
-    bios_info->lpt1_present = lpt_exists(0x378);
-    bios_info->hpet_present = hpet_exists(ACPI_HPET_ADDRESS);
-    bios_info->pci_min = pci_mem_start;
-    bios_info->pci_len = pci_mem_end - pci_mem_start;
-    bios_info->madt_csum_addr = madt_csum_addr;
-    bios_info->madt_lapic0_addr = madt_lapic0_addr;
-    bios_info->bios32_entry = bios32_addr;
+    if (bios->bios_info_setup)
+        bios->bios_info_setup(highbios);
 
     xenbus_shutdown();
 
diff -r f153a0d91b9f -r 99d1e52175a3 tools/firmware/hvmloader/rombios.c
--- a/tools/firmware/hvmloader/rombios.c        Tue Apr 12 10:54:21 2011 +0100
+++ b/tools/firmware/hvmloader/rombios.c        Tue Apr 12 10:56:46 2011 +0100
@@ -24,6 +24,7 @@
 
 #include "../rombios/config.h"
 
+#include "acpi/acpi2_0.h"
 #include "apic_regs.h"
 #include "pci_regs.h"
 #include "util.h"
@@ -35,6 +36,23 @@
 #define ROM_INCLUDE_ROMBIOS
 #include "roms.inc"
 
+static void rombios_setup_bios_info(uint32_t bioshigh)
+{
+    struct bios_info *bios_info;
+
+    bios_info = (struct bios_info *)BIOS_INFO_PHYSICAL_ADDRESS;
+    memset(bios_info, 0, sizeof(*bios_info));
+    bios_info->com1_present = uart_exists(0x3f8);
+    bios_info->com2_present = uart_exists(0x2f8);
+    bios_info->lpt1_present = lpt_exists(0x378);
+    bios_info->hpet_present = hpet_exists(ACPI_HPET_ADDRESS);
+    bios_info->pci_min = pci_mem_start;
+    bios_info->pci_len = pci_mem_end - pci_mem_start;
+    bios_info->madt_csum_addr = madt_csum_addr;
+    bios_info->madt_lapic0_addr = madt_lapic0_addr;
+    bios_info->bios32_entry = bioshigh;
+}
+
 static void rombios_apic_setup(void)
 {
     /* Set the IOAPIC ID to the static value used in the MP/ACPI tables. */
@@ -280,6 +298,9 @@ struct bios_config rombios_config =  {
     .apic_setup = rombios_apic_setup,
     .pci_setup = rombios_pci_setup,
     .smp_setup = smp_initialise,
+
+    .bios_high_setup = rombios_highbios_setup,
+    .bios_info_setup = rombios_setup_bios_info,
 };
 
 /*
diff -r f153a0d91b9f -r 99d1e52175a3 tools/firmware/hvmloader/util.h
--- a/tools/firmware/hvmloader/util.h   Tue Apr 12 10:54:21 2011 +0100
+++ b/tools/firmware/hvmloader/util.h   Tue Apr 12 10:56:46 2011 +0100
@@ -181,7 +181,7 @@ void xenbus_shutdown(void);
 char *xenstore_read(char *path);
 
 /* Prepare the 32bit BIOS */
-uint32_t highbios_setup(void);
+uint32_t rombios_highbios_setup(void);
 
 /* Miscellaneous. */
 void cacheattr_init(void);

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

<Prev in Thread] Current Thread [Next in Thread>