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: pass option ROM end add

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] tools: hvmloader: pass option ROM end address around as a parameter.
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Wed, 13 Apr 2011 01:05:13 +0100
Delivery-date: Tue, 12 Apr 2011 17:06:38 -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 1302611918 -3600
# Node ID ca43f04eaa8e4096909004e0631c4f122ec2d215
# Parent  b5180edfccda1df7d721ad4e5cae40034a01ec98
tools: hvmloader: pass option ROM end address around as a parameter.

Reduces the cross talk between ROMBIOS and hvmloader.

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


diff -r b5180edfccda -r ca43f04eaa8e tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 13:38:01 2011 +0100
+++ b/tools/firmware/hvmloader/hvmloader.c      Tue Apr 12 13:38:38 2011 +0100
@@ -378,10 +378,11 @@
  * Scan the list of Option ROMs at @roms for one which supports 
  * PCI (@vendor_id, @device_id) found at slot @devfn. If one is found,
  * copy it to @dest and return its size rounded up to a multiple 2kB. This
- * function will not copy ROMs beyond address OPTIONROM_PHYSICAL_END.
+ * function will not copy ROMs beyond address option_rom_end.
  */
 #define round_option_rom(x) (((x) + 2047) & ~2047)
 static int scan_option_rom(
+    unsigned int option_rom_end,
     uint8_t devfn, uint16_t vendor_id, uint16_t device_id,
     void *roms, uint32_t dest)
 {
@@ -449,7 +450,7 @@
         printf(" - Product name: %s\n",
                (char *)rom + pnph->product_name_offset);
 
-    if ( (dest + rom->rom_size * 512 + 1) > OPTIONROM_PHYSICAL_END )
+    if ( (dest + rom->rom_size * 512 + 1) > option_rom_end )
     {
         printf("Option ROM size %x exceeds available space\n",
                rom->rom_size * 512);
@@ -467,7 +468,8 @@
  * the corresponding rom data to *copy_rom_dest. Returns the length of the
  * selected rom, or 0 if no NIC found.
  */
-static int scan_etherboot_nic(uint32_t copy_rom_dest)
+static int scan_etherboot_nic(unsigned int option_rom_end,
+                              uint32_t copy_rom_dest)
 {
     uint16_t class, vendor_id, device_id, devfn;
     int rom_size = 0;
@@ -483,6 +485,7 @@
              (device_id != 0xffff) &&
              (class == 0x0200) )
             rom_size = scan_option_rom(
+                option_rom_end,
                 devfn, vendor_id, device_id, etherboot, copy_rom_dest);
     }
 
@@ -493,7 +496,8 @@
  * Scan the PCI bus for the devices that have an option ROM, and copy
  * the corresponding rom data to rom_phys_addr.
  */
-static int pci_load_option_roms(uint32_t rom_base_addr)
+static int pci_load_option_roms(unsigned int option_rom_end,
+                                uint32_t rom_base_addr)
 {
     uint32_t option_rom_addr, rom_phys_addr = rom_base_addr;
     uint16_t vendor_id, device_id, devfn, class;
@@ -522,6 +526,7 @@
         pci_writel(devfn, PCI_ROM_ADDRESS, option_rom_addr | 0x1);
 
         rom_phys_addr += scan_option_rom(
+            option_rom_end,
             devfn, vendor_id, device_id,
             (void *)(option_rom_addr & ~2047), rom_phys_addr);
 
@@ -640,10 +645,12 @@
     etherboot_phys_addr = VGABIOS_PHYSICAL_ADDRESS + vgabios_sz;
     if ( etherboot_phys_addr < OPTIONROM_PHYSICAL_ADDRESS )
         etherboot_phys_addr = OPTIONROM_PHYSICAL_ADDRESS;
-    etherboot_sz = scan_etherboot_nic(etherboot_phys_addr);
+    etherboot_sz = scan_etherboot_nic(OPTIONROM_PHYSICAL_END,
+                                      etherboot_phys_addr);
 
     option_rom_phys_addr = etherboot_phys_addr + etherboot_sz;
-    option_rom_sz = pci_load_option_roms(option_rom_phys_addr);
+    option_rom_sz = pci_load_option_roms(OPTIONROM_PHYSICAL_END,
+                                         option_rom_phys_addr);
 
     if ( hvm_info->acpi_enabled )
     {

_______________________________________________
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: pass option ROM end address around as a parameter., Xen patchbot-unstable <=