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-changelog

[Xen-changelog] [xen-unstable] tools: hvmloader: refactor highbios and b

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] tools: hvmloader: refactor highbios and bios_info setup into struct bios_config
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Wed, 13 Apr 2011 01:05:17 +0100
Delivery-date: Tue, 12 Apr 2011 17:07:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1302612359 -3600
# Node ID 8fc9d810fd1651e3582b8cd3eb70fc563c29d36f
# Parent  aedd22b43b9d71a530a2ef2a8b049c86e324fb87
tools: hvmloader: refactor highbios and bios_info setup into struct bios_config

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Keir Fraser <keir@xxxxxxx>
---


diff -r aedd22b43b9d -r 8fc9d810fd16 
tools/firmware/hvmloader/32bitbios_support.c
--- a/tools/firmware/hvmloader/32bitbios_support.c      Tue Apr 12 13:45:31 
2011 +0100
+++ b/tools/firmware/hvmloader/32bitbios_support.c      Tue Apr 12 13:45:59 
2011 +0100
@@ -144,7 +144,7 @@
     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 aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/config.h
--- a/tools/firmware/hvmloader/config.h Tue Apr 12 13:45:31 2011 +0100
+++ b/tools/firmware/hvmloader/config.h Tue Apr 12 13:45:59 2011 +0100
@@ -28,6 +28,9 @@
     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 aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 13:45:31 2011 +0100
+++ b/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 13:45:59 2011 +0100
@@ -364,10 +364,10 @@
 
 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 @@
     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 @@
     *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 aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/rombios.c
--- a/tools/firmware/hvmloader/rombios.c        Tue Apr 12 13:45:31 2011 +0100
+++ b/tools/firmware/hvmloader/rombios.c        Tue Apr 12 13:45:59 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 @@
     .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 aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/util.h
--- a/tools/firmware/hvmloader/util.h   Tue Apr 12 13:45:31 2011 +0100
+++ b/tools/firmware/hvmloader/util.h   Tue Apr 12 13:45:59 2011 +0100
@@ -181,7 +181,7 @@
 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-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] tools: hvmloader: refactor highbios and bios_info setup into struct bios_config, Xen patchbot-unstable <=