hvmloader: remove videoram allocation; move reserve base to 0xfc000000.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 13 Jan 2009 15:42:47 +0000 (15:42 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 13 Jan 2009 15:42:47 +0000 (15:42 +0000)
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
tools/firmware/hvmloader/config.h
tools/firmware/hvmloader/hvmloader.c

index e5b4fc4a8083da35f4ec3b4db66e6afcc9fc3411..660190be7791f4aa34963d69ed164dc6f6734c99 100644 (file)
@@ -19,8 +19,8 @@
 #define PCI_MEM_END         0xfc000000
 extern unsigned long pci_mem_start, pci_mem_end;
 
-/* We reserve 16MB at the top of the 4GB memory hole. */
-#define RESERVED_MEMBASE    0xff000000
+/* We reserve 16MB for special BIOS mappings, etc. */
+#define RESERVED_MEMBASE    0xfc000000
 #define RESERVED_MEMSIZE    0x01000000
 
 #define ROMBIOS_SEG            0xF000
index 19e35bc5e40e1488986fcdc1691229a94a14506d..cfc225bf7c117992d52435d036146f546e944d74 100644 (file)
@@ -622,7 +622,11 @@ static void build_e820_table(void)
     e820[nr].type = E820_RAM;
     nr++;
 
-    /* Explicitly reserve space for special pages. */
+    /*
+     * Explicitly reserve space for special pages.
+     * This space starts at RESERVED_MEMBASE an extends to cover various
+     * fixed hardware mappings (e.g., LAPIC, IOAPIC, default SVGA framebuffer).
+     */
     e820[nr].addr = RESERVED_MEMBASE;
     e820[nr].size = (uint32_t)-e820[nr].addr;
     e820[nr].type = E820_RESERVED;
@@ -644,7 +648,7 @@ int main(void)
 {
     int option_rom_sz = 0, vgabios_sz = 0, etherboot_sz = 0;
     int rombios_sz, smbios_sz;
-    uint32_t etherboot_phys_addr, option_rom_phys_addr, vga_ram = 0;
+    uint32_t etherboot_phys_addr, option_rom_phys_addr;
     uint16_t xen_pfiob;
 
     printf("HVM Loader\n");
@@ -692,12 +696,6 @@ int main(void)
         break;
     }
 
-    if ( virtual_vga != VGA_none )
-    {
-        vga_ram = virt_to_phys(mem_alloc(8 << 20, 4096));
-        printf("VGA RAM at %08x\n", vga_ram);
-    }
-
     etherboot_phys_addr = VGABIOS_PHYSICAL_ADDRESS + vgabios_sz;
     if ( etherboot_phys_addr < OPTIONROM_PHYSICAL_ADDRESS )
         etherboot_phys_addr = OPTIONROM_PHYSICAL_ADDRESS;
@@ -739,8 +737,6 @@ int main(void)
                ROMBIOS_PHYSICAL_ADDRESS + rombios_sz - 1);
 
     xen_pfiob = init_xen_platform_io_base();
-    if ( xen_pfiob && vga_ram )
-        outl(xen_pfiob + 4, vga_ram);
 
     build_e820_table();