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] hvmloader: Expand iomem allocation pool t

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] hvmloader: Expand iomem allocation pool to 0xf0000000-0xfc000000.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 23 Jan 2008 01:10:17 -0800
Delivery-date: Wed, 23 Jan 2008 01:11:30 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1201000690 0
# Node ID b006c58b055e779391d579656bdd77a3984d5e2e
# Parent  824ffb1efa9ccd2dc5c900ec66ce42c0cac65819
hvmloader: Expand iomem allocation pool to 0xf0000000-0xfc000000.

Check for exhaustion of allocation pool, warn user, and fail to
initialise the relevant PCI BAR.

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 tools/firmware/hvmloader/acpi/build.c |    2 +-
 tools/firmware/hvmloader/hvmloader.c  |   33 ++++++++++++++++++++++++---------
 2 files changed, 25 insertions(+), 10 deletions(-)

diff -r 824ffb1efa9c -r b006c58b055e tools/firmware/hvmloader/acpi/build.c
--- a/tools/firmware/hvmloader/acpi/build.c     Tue Jan 22 10:54:00 2008 +0000
+++ b/tools/firmware/hvmloader/acpi/build.c     Tue Jan 22 11:18:10 2008 +0000
@@ -76,7 +76,7 @@ static int construct_bios_info_table(uin
     bios_info->com2_present = uart_exists(0x2f8);
 
     bios_info->pci_min = 0xf0000000;
-    bios_info->pci_len = 0x05000000;
+    bios_info->pci_len = 0x0c000000;
 
     return align16(sizeof(*bios_info));
 }
diff -r 824ffb1efa9c -r b006c58b055e tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Tue Jan 22 10:54:00 2008 +0000
+++ b/tools/firmware/hvmloader/hvmloader.c      Tue Jan 22 11:18:10 2008 +0000
@@ -183,10 +183,16 @@ static void apic_setup(void)
 
 static void pci_setup(void)
 {
-    uint32_t devfn, bar_reg, bar_data, bar_sz, cmd;
-    uint32_t *base, io_base = 0xc000, mem_base = HVM_BELOW_4G_MMIO_START;
+    uint32_t base, devfn, bar_reg, bar_data, bar_sz, cmd;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+
+    /* Resources assignable to PCI devices via BARs. */
+    struct resource {
+        uint32_t base, max;
+    } *resource;
+    struct resource mem_resource = { 0xf0000000, 0xfc000000 };
+    struct resource io_resource  = { 0xc000, 0x10000 };
 
     /* Create a list of device BARs in descending order of size. */
     struct bars {
@@ -301,22 +307,31 @@ static void pci_setup(void)
         if ( (bar_data & PCI_BASE_ADDRESS_SPACE) ==
              PCI_BASE_ADDRESS_SPACE_MEMORY )
         {
-            base = &mem_base;
+            resource = &mem_resource;
             bar_data &= ~PCI_BASE_ADDRESS_MEM_MASK;
         }
         else
         {
-            base = &io_base;
+            resource = &io_resource;
             bar_data &= ~PCI_BASE_ADDRESS_IO_MASK;
         }
 
-        *base = (*base + bar_sz - 1) & ~(bar_sz - 1);
-        bar_data |= *base;
-        *base += bar_sz;
+        base = (resource->base + bar_sz - 1) & ~(bar_sz - 1);
+        bar_data |= base;
+        base += bar_sz;
+
+        if ( (base < resource->base) || (base > resource->max) )
+        {
+            printf("pci dev %02x:%x bar %02x size %08x: no space for "
+                   "resource!\n", devfn>>3, devfn&7, bar_reg, bar_sz);
+            continue;
+        }
+
+        resource->base = base;
 
         pci_writel(devfn, bar_reg, bar_data);
-        printf("pci dev %02x:%x bar %02x size %08x: %08x %08x/%08x\n",
-               devfn>>3, devfn&7, bar_reg, bar_sz, bar_data, i, nr_bars);
+        printf("pci dev %02x:%x bar %02x size %08x: %08x\n",
+               devfn>>3, devfn&7, bar_reg, bar_sz, bar_data);
 
         /* Now enable the memory or I/O mapping. */
         cmd = pci_readw(devfn, PCI_COMMAND);

_______________________________________________
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] hvmloader: Expand iomem allocation pool to 0xf0000000-0xfc000000., Xen patchbot-unstable <=