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] Keep start_info in page provided by domain builder inste

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Keep start_info in page provided by domain builder instead of making a copy.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 05 Sep 2005 14:54:10 +0000
Delivery-date: Mon, 05 Sep 2005 14:52:36 +0000
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/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 cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 79658ef5892523c2342ca14baf612d20039881cc
# Parent  85aca042b8028604c1626816999bb8b5919e8faf
Keep start_info in page provided by domain builder instead of making a copy.
- page is moved next to store/console pages -- these are never put in the
  free page pool by the domain
- xen_start_info is now a pointer to the original page instead of the copy
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/cpu/mtrr/main.c Mon Sep  5 
14:04:36 2005
@@ -147,7 +147,7 @@
 {
        struct cpuinfo_x86 *c = &boot_cpu_data;
 
-       if (!(xen_start_info.flags & SIF_PRIVILEGED))
+       if (!(xen_start_info->flags & SIF_PRIVILEGED))
                return -ENODEV;
 
        if ((!cpu_has(c, X86_FEATURE_MTRR)) &&
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S  Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/head.S  Mon Sep  5 14:04:36 2005
@@ -38,17 +38,13 @@
 #define X86_VENDOR_ID  new_cpu_data+CPUINFO_x86_vendor_id
 
 ENTRY(startup_32)
-       cld
-
-       /* Copy the necessary stuff from xen_start_info structure. */
-       mov  $xen_start_info_union,%edi
-       mov  $512,%ecx
-       rep movsl
+       movl %esi,xen_start_info
 
 #ifdef CONFIG_SMP
 ENTRY(startup_32_smp)
+#endif /* CONFIG_SMP */
+
        cld
-#endif /* CONFIG_SMP */
 
        /* Set up the stack pointer */
        lss stack_start,%esp
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c Mon Sep  5 14:04:36 2005
@@ -289,7 +289,7 @@
        int           i;
 
        /* Nothing to do if not running in dom0. */
-       if (!(xen_start_info.flags & SIF_INITDOMAIN))
+       if (!(xen_start_info->flags & SIF_INITDOMAIN))
                return;
 
        /* video rom */
@@ -363,7 +363,7 @@
 EXPORT_SYMBOL(phys_to_machine_mapping);
 
 /* Raw start-of-day parameters from the hypervisor. */
-union xen_start_info_union xen_start_info_union;
+start_info_t *xen_start_info;
 
 static void __init limit_regions(unsigned long long size)
 {
@@ -703,7 +703,7 @@
 
        if ((max_cmdline = MAX_GUEST_CMDLINE) > COMMAND_LINE_SIZE)
                max_cmdline = COMMAND_LINE_SIZE;
-       memcpy(saved_command_line, xen_start_info.cmd_line, max_cmdline);
+       memcpy(saved_command_line, xen_start_info->cmd_line, max_cmdline);
        /* Save unparsed command line copy for /proc/cmdline */
        saved_command_line[max_cmdline-1] = '\0';
 
@@ -934,8 +934,8 @@
 /* We don't use the fake e820 because we need to respond to user override. */
 void __init find_max_pfn(void)
 {
-       if ( xen_override_max_pfn < xen_start_info.nr_pages )
-               xen_override_max_pfn = xen_start_info.nr_pages;
+       if ( xen_override_max_pfn < xen_start_info->nr_pages )
+               xen_override_max_pfn = xen_start_info->nr_pages;
        max_pfn = xen_override_max_pfn;
 }
 #endif /* XEN */
@@ -1082,8 +1082,8 @@
         * partially used pages are not usable - thus
         * we are rounding upwards:
         */
-       min_low_pfn = PFN_UP(__pa(xen_start_info.pt_base)) +
-               xen_start_info.nr_pt_frames;
+       min_low_pfn = PFN_UP(__pa(xen_start_info->pt_base)) +
+               xen_start_info->nr_pt_frames;
 
        find_max_pfn();
 
@@ -1189,7 +1189,7 @@
 #endif /* !CONFIG_XEN */
 
 #ifdef CONFIG_BLK_DEV_INITRD
-       if (xen_start_info.mod_start) {
+       if (xen_start_info->mod_start) {
                if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
                        /*reserve_bootmem(INITRD_START, INITRD_SIZE);*/
                        initrd_start = INITRD_START + PAGE_OFFSET;
@@ -1206,7 +1206,7 @@
        }
 #endif
 
-       phys_to_machine_mapping = (unsigned int *)xen_start_info.mfn_list;
+       phys_to_machine_mapping = (unsigned int *)xen_start_info->mfn_list;
 }
 
 /*
@@ -1280,7 +1280,7 @@
        else
                legacy_init_iomem_resources(&code_resource, &data_resource);
 
-       if (xen_start_info.flags & SIF_INITDOMAIN)
+       if (xen_start_info->flags & SIF_INITDOMAIN)
                /* EFI systems may still have VGA */
                request_resource(&iomem_resource, &video_ram_resource);
 
@@ -1536,8 +1536,8 @@
        init_mm.start_code = (unsigned long) _text;
        init_mm.end_code = (unsigned long) _etext;
        init_mm.end_data = (unsigned long) _edata;
-       init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) +
-                      xen_start_info.nr_pt_frames) << PAGE_SHIFT;
+       init_mm.brk = (PFN_UP(__pa(xen_start_info->pt_base)) +
+                      xen_start_info->nr_pt_frames) << PAGE_SHIFT;
 
        /* XEN: This is nonsense: kernel may not even be contiguous in RAM. */
        /*code_resource.start = virt_to_phys(_text);*/
@@ -1574,37 +1574,37 @@
 #endif
 
        /* Make sure we have a correctly sized P->M table. */
-       if (max_pfn != xen_start_info.nr_pages) {
+       if (max_pfn != xen_start_info->nr_pages) {
                phys_to_machine_mapping = alloc_bootmem_low_pages(
                        max_pfn * sizeof(unsigned int));
 
-               if (max_pfn > xen_start_info.nr_pages) {
+               if (max_pfn > xen_start_info->nr_pages) {
                        /* set to INVALID_P2M_ENTRY */
                        memset(phys_to_machine_mapping, ~0,
                                max_pfn * sizeof(unsigned int));
                        memcpy(phys_to_machine_mapping,
-                               (unsigned int *)xen_start_info.mfn_list,
-                               xen_start_info.nr_pages * sizeof(unsigned int));
+                               (unsigned int *)xen_start_info->mfn_list,
+                               xen_start_info->nr_pages * sizeof(unsigned 
int));
                } else {
                        struct xen_memory_reservation reservation = {
-                               .extent_start = (unsigned long 
*)xen_start_info.mfn_list + max_pfn,
-                               .nr_extents   = xen_start_info.nr_pages - 
max_pfn,
+                               .extent_start = (unsigned long 
*)xen_start_info->mfn_list + max_pfn,
+                               .nr_extents   = xen_start_info->nr_pages - 
max_pfn,
                                .extent_order = 0,
                                .domid        = DOMID_SELF
                        };
 
                        memcpy(phys_to_machine_mapping,
-                               (unsigned int *)xen_start_info.mfn_list,
+                               (unsigned int *)xen_start_info->mfn_list,
                                max_pfn * sizeof(unsigned int));
                        /* N.B. below relies on sizeof(int) == sizeof(long). */
                        BUG_ON(HYPERVISOR_memory_op(
                                XENMEM_decrease_reservation,
                                &reservation) !=
-                           (xen_start_info.nr_pages - max_pfn));
+                           (xen_start_info->nr_pages - max_pfn));
                }
                free_bootmem(
-                       __pa(xen_start_info.mfn_list), 
-                       PFN_PHYS(PFN_UP(xen_start_info.nr_pages *
+                       __pa(xen_start_info->mfn_list), 
+                       PFN_PHYS(PFN_UP(xen_start_info->nr_pages *
                        sizeof(unsigned int))));
        }
 
@@ -1633,7 +1633,7 @@
        }
 #endif
 
-       if (xen_start_info.flags & SIF_INITDOMAIN)
+       if (xen_start_info->flags & SIF_INITDOMAIN)
                dmi_scan_machine();
 
 #ifdef CONFIG_X86_GENERICARCH
@@ -1647,7 +1647,7 @@
        HYPERVISOR_physdev_op(&op);
 
 #ifdef CONFIG_ACPI_BOOT
-       if (!(xen_start_info.flags & SIF_INITDOMAIN)) {
+       if (!(xen_start_info->flags & SIF_INITDOMAIN)) {
                printk(KERN_INFO "ACPI in unprivileged domain disabled\n");
                acpi_disabled = 1;
                acpi_ht = 0;
@@ -1673,8 +1673,8 @@
 
        register_memory();
 
-       if (xen_start_info.flags & SIF_INITDOMAIN) {
-               if (!(xen_start_info.flags & SIF_PRIVILEGED))
+       if (xen_start_info->flags & SIF_INITDOMAIN) {
+               if (!(xen_start_info->flags & SIF_PRIVILEGED))
                        panic("Xen granted us console access "
                              "but not privileged status");
 
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c       Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c       Mon Sep  5 
14:04:36 2005
@@ -181,7 +181,7 @@
          * Otherwise, enable for domain 0 if the machine has 'lots of memory',
          * which we take to mean more than 2GB.
          */
-       if (xen_start_info.flags & SIF_INITDOMAIN) {
+       if (xen_start_info->flags & SIF_INITDOMAIN) {
                dom0_op_t op;
                op.cmd = DOM0_PHYSINFO;
                if ((HYPERVISOR_dom0_op(&op) == 0) &&
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c  Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c  Mon Sep  5 14:04:36 2005
@@ -445,7 +445,7 @@
        sec = tv->tv_sec;
        __normalize_time(&sec, &nsec);
 
-       if ((xen_start_info.flags & SIF_INITDOMAIN) &&
+       if ((xen_start_info->flags & SIF_INITDOMAIN) &&
            !independent_wallclock) {
                op.cmd = DOM0_SETTIME;
                op.u.settime.secs        = sec;
@@ -476,7 +476,7 @@
 
        WARN_ON(irqs_disabled());
 
-       if (!(xen_start_info.flags & SIF_INITDOMAIN))
+       if (!(xen_start_info->flags & SIF_INITDOMAIN))
                return 0;
 
        /* gets recalled with irq locally disabled */
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/mm/init.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c      Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c      Mon Sep  5 14:04:36 2005
@@ -159,7 +159,7 @@
        pte_t *pte;
        int pgd_idx, pmd_idx, pte_ofs;
 
-       unsigned long max_ram_pfn = xen_start_info.nr_pages;
+       unsigned long max_ram_pfn = xen_start_info->nr_pages;
        if (max_ram_pfn > max_low_pfn)
                max_ram_pfn = max_low_pfn;
 
@@ -317,7 +317,7 @@
                ClearPageReserved(page);
                set_bit(PG_highmem, &page->flags);
                set_page_count(page, 1);
-               if (pfn < xen_start_info.nr_pages)
+               if (pfn < xen_start_info->nr_pages)
                        __free_page(page);
                totalhigh_pages++;
        } else
@@ -356,7 +356,7 @@
 static void __init pagetable_init (void)
 {
        unsigned long vaddr;
-       pgd_t *pgd_base = (pgd_t *)xen_start_info.pt_base;
+       pgd_t *pgd_base = (pgd_t *)xen_start_info->pt_base;
        int i;
 
        swapper_pg_dir = pgd_base;
@@ -535,14 +535,14 @@
        kmap_init();
 
        /* Switch to the real shared_info page, and clear the dummy page. */
-       set_fixmap(FIX_SHARED_INFO, xen_start_info.shared_info);
+       set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info);
        HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
        memset(empty_zero_page, 0, sizeof(empty_zero_page));
 
 #ifdef CONFIG_XEN_PHYSDEV_ACCESS
        /* Setup mapping of lower 1st MB */
        for (i = 0; i < NR_FIX_ISAMAPS; i++)
-               if (xen_start_info.flags & SIF_PRIVILEGED)
+               if (xen_start_info->flags & SIF_PRIVILEGED)
                        set_fixmap(FIX_ISAMAP_BEGIN - i, i * PAGE_SIZE);
                else
                        __set_fixmap(FIX_ISAMAP_BEGIN - i,
@@ -639,7 +639,7 @@
        /* this will put all low memory onto the freelists */
        totalram_pages += free_all_bootmem();
        /* XEN: init and count low-mem pages outside initial allocation. */
-       for (pfn = xen_start_info.nr_pages; pfn < max_low_pfn; pfn++) {
+       for (pfn = xen_start_info->nr_pages; pfn < max_low_pfn; pfn++) {
                ClearPageReserved(&mem_map[pfn]);
                set_page_count(&mem_map[pfn], 1);
                totalram_pages++;
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c   Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/ioremap.c   Mon Sep  5 14:04:36 2005
@@ -178,7 +178,7 @@
        /*
         * Don't remap the low PCI/ISA area, it's always mapped..
         */
-       if (xen_start_info.flags & SIF_PRIVILEGED &&
+       if (xen_start_info->flags & SIF_PRIVILEGED &&
            phys_addr >= ISA_START_ADDRESS && last_addr < ISA_END_ADDRESS)
                return (void __iomem *) isa_bus_to_virt(phys_addr);
 
@@ -332,7 +332,7 @@
        /*
         * Don't remap the low PCI/ISA area, it's always mapped..
         */
-       if (xen_start_info.flags & SIF_PRIVILEGED &&
+       if (xen_start_info->flags & SIF_PRIVILEGED &&
            phys_addr >= ISA_START_ADDRESS && last_addr < ISA_END_ADDRESS)
                return isa_bus_to_virt(phys_addr);
 
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c    Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c    Mon Sep  5 14:04:36 2005
@@ -483,7 +483,7 @@
 {
     control_if_t *ctrl_if = get_ctrl_if();
 
-    if ( xen_start_info.flags & SIF_INITDOMAIN )
+    if ( xen_start_info->flags & SIF_INITDOMAIN )
     {
         /*
          * The initial domain must create its own domain-controller link.
@@ -500,7 +500,7 @@
         op.u.bind_interdomain.port2 = 0;
         if ( HYPERVISOR_event_channel_op(&op) != 0 )
             BUG();
-        xen_start_info.domain_controller_evtchn = op.u.bind_interdomain.port1;
+        xen_start_info->domain_controller_evtchn = op.u.bind_interdomain.port1;
         initdom_ctrlif_domcontroller_port   = op.u.bind_interdomain.port2;
        bind_evtchn_to_cpu(op.u.bind_interdomain.port1, 0);
     }
@@ -509,7 +509,7 @@
     FRONT_RING_ATTACH(&ctrl_if_tx_ring, &ctrl_if->tx_ring, CONTROL_RING_MEM);
     BACK_RING_ATTACH(&ctrl_if_rx_ring, &ctrl_if->rx_ring, CONTROL_RING_MEM);
 
-    ctrl_if_evtchn = xen_start_info.domain_controller_evtchn;
+    ctrl_if_evtchn = xen_start_info->domain_controller_evtchn;
     ctrl_if_irq    = bind_evtchn_to_irq(ctrl_if_evtchn);
 
     memset(&ctrl_if_irq_action, 0, sizeof(ctrl_if_irq_action));
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Mon Sep  5 14:04:36 2005
@@ -185,8 +185,8 @@
     HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
     clear_fixmap(FIX_SHARED_INFO);
 
-    memcpy(&suspend_record->resume_info, &xen_start_info,
-           sizeof(xen_start_info));
+    memcpy(&suspend_record->resume_info, xen_start_info,
+           sizeof(*xen_start_info));
 
     /* We'll stop somewhere inside this hypercall.  When it returns,
        we'll start resuming after the restore. */
@@ -194,10 +194,10 @@
 
     shutting_down = SHUTDOWN_INVALID; 
 
-    memcpy(&xen_start_info, &suspend_record->resume_info,
-           sizeof(xen_start_info));
-
-    set_fixmap(FIX_SHARED_INFO, xen_start_info.shared_info);
+    memcpy(xen_start_info, &suspend_record->resume_info,
+           sizeof(*xen_start_info));
+
+    set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info);
 
     HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
 
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c        Mon Sep  5 
14:04:36 2005
@@ -524,7 +524,7 @@
  */
 unsigned long __init e820_end_of_ram(void)
 {
-        unsigned long max_end_pfn = xen_start_info.nr_pages;
+        unsigned long max_end_pfn = xen_start_info->nr_pages;
 
        if ( xen_override_max_pfn <  max_end_pfn)
                xen_override_max_pfn = max_end_pfn;
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head.S        Mon Sep  5 
14:04:36 2005
@@ -40,16 +40,13 @@
        .globl startup_64
 startup_64:
 ENTRY(_start)
-        cld                
-       /* Copy the necessary stuff from xen_start_info structure. */
-       movq  $xen_start_info_union,%rdi
-       movq  $256,%rcx
-       rep movsq
+       movq %rsi,xen_start_info(%rip)
 
 #ifdef CONFIG_SMP
-        ENTRY(startup_64_smp)
+ENTRY(startup_64_smp)
+#endif /* CONFIG_SMP */
+
        cld
-#endif /* CONFIG_SMP */
 
        movq init_rsp(%rip),%rsp
        /* zero EFLAGS after setting rsp */
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c      Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/head64.c      Mon Sep  5 
14:04:36 2005
@@ -90,8 +90,9 @@
 {
        int i;
 
-        phys_to_machine_mapping = (u32 *)xen_start_info.mfn_list;
-        start_pfn = (__pa(xen_start_info.pt_base) >> PAGE_SHIFT) +  
xen_start_info.nr_pt_frames;
+        phys_to_machine_mapping = (u32 *)xen_start_info->mfn_list;
+        start_pfn = (__pa(xen_start_info->pt_base) >> PAGE_SHIFT) + 
+               xen_start_info->nr_pt_frames;
 
        for (i = 0; i < 256; i++)
                set_intr_gate(i, early_idt_handler);
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c       Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c       Mon Sep  5 
14:04:36 2005
@@ -84,7 +84,7 @@
 DEFINE_PER_CPU(int, nr_multicall_ents);
 
 /* Raw start-of-day parameters from the hypervisor. */
-union xen_start_info_union xen_start_info_union;
+start_info_t *xen_start_info;
 #endif
 
 /*
@@ -314,7 +314,7 @@
        
        if ((max_cmdline = MAX_GUEST_CMDLINE) > COMMAND_LINE_SIZE)
                max_cmdline = COMMAND_LINE_SIZE;
-       memcpy(saved_command_line, xen_start_info.cmd_line, max_cmdline);
+       memcpy(saved_command_line, xen_start_info->cmd_line, max_cmdline);
        saved_command_line[max_cmdline-1] = '\0';
 #else
        memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
@@ -687,7 +687,7 @@
 #endif
 #ifdef CONFIG_XEN
 #ifdef CONFIG_BLK_DEV_INITRD
-       if (xen_start_info.mod_start) {
+       if (xen_start_info->mod_start) {
                if (INITRD_START + INITRD_SIZE <= (end_pfn << PAGE_SHIFT)) {
                        /*reserve_bootmem_generic(INITRD_START, INITRD_SIZE);*/
                        initrd_start = INITRD_START + PAGE_OFFSET;
@@ -732,17 +732,17 @@
        {
                int i, j;
                /* Make sure we have a large enough P->M table. */
-               if (end_pfn > xen_start_info.nr_pages) {
+               if (end_pfn > xen_start_info->nr_pages) {
                        phys_to_machine_mapping = alloc_bootmem(
                                end_pfn * sizeof(u32));
                        memset(phys_to_machine_mapping, ~0,
                               end_pfn * sizeof(u32));
                        memcpy(phys_to_machine_mapping,
-                              (u32 *)xen_start_info.mfn_list,
-                              xen_start_info.nr_pages * sizeof(u32));
+                              (u32 *)xen_start_info->mfn_list,
+                              xen_start_info->nr_pages * sizeof(u32));
                        free_bootmem(
-                               __pa(xen_start_info.mfn_list), 
-                               PFN_PHYS(PFN_UP(xen_start_info.nr_pages *
+                               __pa(xen_start_info->mfn_list), 
+                               PFN_PHYS(PFN_UP(xen_start_info->nr_pages *
                                                sizeof(u32))));
                }
 
@@ -814,8 +814,8 @@
               op.u.set_iopl.iopl = 1;
               HYPERVISOR_physdev_op(&op);
 
-              if (xen_start_info.flags & SIF_INITDOMAIN) {
-                      if (!(xen_start_info.flags & SIF_PRIVILEGED))
+              if (xen_start_info->flags & SIF_INITDOMAIN) {
+                      if (!(xen_start_info->flags & SIF_PRIVILEGED))
                               panic("Xen granted us console access "
                                     "but not privileged status");
                       
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c    Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c    Mon Sep  5 14:04:36 2005
@@ -423,7 +423,7 @@
        int readonly = 0;
 
        /* Make old and new page tables read-only. */
-       if ((paddr >= (xen_start_info.pt_base - __START_KERNEL_map))
+       if ((paddr >= (xen_start_info->pt_base - __START_KERNEL_map))
            && (paddr < ((table_start << PAGE_SHIFT) + tables_space)))
                readonly = 1;
        /*
@@ -474,8 +474,8 @@
                         pte_save = pte;
                         for (k = 0; k < PTRS_PER_PTE; pte++, k++, paddr += 
PTE_SIZE) {
                                 if ((paddr >= end) ||
-                                    ((paddr >> PAGE_SHIFT)
-                                     >= xen_start_info.nr_pages)) { 
+                                    ((paddr >> PAGE_SHIFT) >=
+                                     xen_start_info->nr_pages)) { 
                                         __set_pte(pte, __pte(0)); 
                                         continue;
                                 }
@@ -522,7 +522,7 @@
        memset((void *)level2_kernel_pgt, 0, PAGE_SIZE);
 
        /* Find the initial pte page that was built for us. */
-       page = (unsigned long *)xen_start_info.pt_base;
+       page = (unsigned long *)xen_start_info->pt_base;
        addr = page[pgd_index(__START_KERNEL_map)];
        addr_to_page(addr, page);
        addr = page[pud_index(__START_KERNEL_map)];
@@ -671,7 +671,7 @@
                free_area_init(zones_size);
        }
 
-        set_fixmap(FIX_SHARED_INFO, xen_start_info.shared_info);
+        set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info);
         HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
 
         memset(empty_zero_page, 0, sizeof(empty_zero_page));
@@ -682,7 +682,7 @@
                int i;
         /* Setup mapping of lower 1st MB */
                for (i = 0; i < NR_FIX_ISAMAPS; i++)
-                       if (xen_start_info.flags & SIF_PRIVILEGED)
+                       if (xen_start_info->flags & SIF_PRIVILEGED)
                                set_fixmap(FIX_ISAMAP_BEGIN - i, i * PAGE_SIZE);
                        else
                                __set_fixmap(FIX_ISAMAP_BEGIN - i,
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c
--- a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c        Mon Sep  5 
14:04:36 2005
@@ -402,7 +402,7 @@
 
        IPRINTK("Initialising balloon driver.\n");
 
-       current_pages = min(xen_start_info.nr_pages, max_pfn);
+       current_pages = min(xen_start_info->nr_pages, max_pfn);
        target_pages  = current_pages;
        balloon_low   = 0;
        balloon_high  = 0;
@@ -422,7 +422,7 @@
        balloon_pde->write_proc = balloon_write;
     
        /* Initialise the balloon with excess memory space. */
-       for (pfn = xen_start_info.nr_pages; pfn < max_pfn; pfn++) {
+       for (pfn = xen_start_info->nr_pages; pfn < max_pfn; pfn++) {
                page = &mem_map[pfn];
                if (!PageReserved(page))
                        balloon_append(page);
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c        Mon Sep  5 
14:04:36 2005
@@ -504,8 +504,8 @@
     int i;
     struct page *page;
 
-    if ( !(xen_start_info.flags & SIF_INITDOMAIN) &&
-         !(xen_start_info.flags & SIF_BLK_BE_DOMAIN) )
+    if ( !(xen_start_info->flags & SIF_INITDOMAIN) &&
+         !(xen_start_info->flags & SIF_BLK_BE_DOMAIN) )
         return 0;
 
     blkif_interface_init();
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c      Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c      Mon Sep  5 
14:04:36 2005
@@ -757,8 +757,8 @@
 
 static int __init xlblk_init(void)
 {
-       if ((xen_start_info.flags & SIF_INITDOMAIN)
-           || (xen_start_info.flags & SIF_BLK_BE_DOMAIN) )
+       if ((xen_start_info->flags & SIF_INITDOMAIN) ||
+           (xen_start_info->flags & SIF_BLK_BE_DOMAIN) )
                return 0;
 
        IPRINTK("Initialising virtual block device driver\n");
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c
--- a/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c  Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c  Mon Sep  5 14:04:36 2005
@@ -873,8 +873,8 @@
     int i, j, err;
     struct page *page;
 /*
-    if ( !(xen_start_info.flags & SIF_INITDOMAIN) &&
-         !(xen_start_info.flags & SIF_BLK_BE_DOMAIN) )
+    if ( !(xen_start_info->flags & SIF_INITDOMAIN) &&
+         !(xen_start_info->flags & SIF_BLK_BE_DOMAIN) )
         return 0;
 */
     blkif_interface_init();
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/console/console.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/console.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c        Mon Sep  5 
14:04:36 2005
@@ -195,7 +195,7 @@
 void xen_console_init(void)
 #endif
 {
-    if ( xen_start_info.flags & SIF_INITDOMAIN )
+    if ( xen_start_info->flags & SIF_INITDOMAIN )
     {
         if ( xc_mode == XC_DEFAULT )
             xc_mode = XC_SERIAL;
@@ -266,7 +266,7 @@
     int        sz;
 
     /* Emergency console is synchronous, so there's nothing to flush. */
-    if ( xen_start_info.flags & SIF_INITDOMAIN )
+    if ( xen_start_info->flags & SIF_INITDOMAIN )
         return;
 
 
@@ -342,7 +342,7 @@
 {
     int        sz, work_done = 0;
 
-    if ( xen_start_info.flags & SIF_INITDOMAIN )
+    if ( xen_start_info->flags & SIF_INITDOMAIN )
     {
         if ( x_char )
         {
@@ -770,7 +770,7 @@
     tty_register_device(xencons_driver, 0, NULL);
 #endif
 
-    if ( xen_start_info.flags & SIF_INITDOMAIN )
+    if ( xen_start_info->flags & SIF_INITDOMAIN )
     {
         xencons_priv_irq = bind_virq_to_irq(VIRQ_CONSOLE);
         (void)request_irq(xencons_priv_irq,
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c   Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c   Mon Sep  5 
14:04:36 2005
@@ -36,12 +36,12 @@
 
 static inline struct ring_head *outring(void)
 {
-       return machine_to_virt(xen_start_info.console_mfn << PAGE_SHIFT);
+       return machine_to_virt(xen_start_info->console_mfn << PAGE_SHIFT);
 }
 
 static inline struct ring_head *inring(void)
 {
-       return machine_to_virt(xen_start_info.console_mfn << PAGE_SHIFT)
+       return machine_to_virt(xen_start_info->console_mfn << PAGE_SHIFT)
                + PAGE_SIZE/2;
 }
 
@@ -68,7 +68,7 @@
        int sent = 0;
        
        sent = __xencons_ring_send(out, data, len);
-       notify_via_evtchn(xen_start_info.console_evtchn);
+       notify_via_evtchn(xen_start_info->console_evtchn);
        return sent;
 
 }      
@@ -98,10 +98,10 @@
 {
        int err;
 
-       if (!xen_start_info.console_evtchn)
+       if (!xen_start_info->console_evtchn)
                return 0;
 
-       err = bind_evtchn_to_irqhandler(xen_start_info.console_evtchn,
+       err = bind_evtchn_to_irqhandler(xen_start_info->console_evtchn,
                                        handle_input, 0, "xencons", inring());
        if (err) {
                xprintk("XEN console request irq failed %i\n", err);
@@ -114,10 +114,11 @@
 void xencons_suspend(void)
 {
 
-       if (!xen_start_info.console_evtchn)
+       if (!xen_start_info->console_evtchn)
                return;
 
-       unbind_evtchn_from_irqhandler(xen_start_info.console_evtchn, inring());
+       unbind_evtchn_from_irqhandler(xen_start_info->console_evtchn,
+                                     inring());
 }
 
 void xencons_resume(void)
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/netback/netback.c
--- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c        Mon Sep  5 
14:04:36 2005
@@ -940,8 +940,8 @@
     int i;
     struct page *page;
 
-    if ( !(xen_start_info.flags & SIF_NET_BE_DOMAIN) &&
-         !(xen_start_info.flags & SIF_INITDOMAIN) )
+    if ( !(xen_start_info->flags & SIF_NET_BE_DOMAIN) &&
+         !(xen_start_info->flags & SIF_INITDOMAIN) )
         return 0;
 
     IPRINTK("Initialising Xen netif backend.\n");
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Mon Sep  5 
14:04:36 2005
@@ -1369,7 +1369,7 @@
 {
     int err = 0;
 
-    if (xen_start_info.flags & SIF_INITDOMAIN)
+    if (xen_start_info->flags & SIF_INITDOMAIN)
         return 0;
 
     if ((err = xennet_proc_init()) != 0)
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c
--- a/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c        Mon Sep  5 
14:04:36 2005
@@ -205,8 +205,8 @@
         extern int do_xenbus_probe(void*);
         unsigned long page;
 
-        if (xen_start_info.store_evtchn != 0) {
-            ret = xen_start_info.store_mfn;
+        if (xen_start_info->store_evtchn != 0) {
+            ret = xen_start_info->store_mfn;
             break;
         }
 
@@ -222,10 +222,10 @@
         SetPageReserved(virt_to_page(page));
 
         /* Initial connect. Setup channel and page. */
-        xen_start_info.store_evtchn = data;
-        xen_start_info.store_mfn = pfn_to_mfn(virt_to_phys((void *)page) >>
+        xen_start_info->store_evtchn = data;
+        xen_start_info->store_mfn = pfn_to_mfn(virt_to_phys((void *)page) >>
                                               PAGE_SHIFT);
-        ret = xen_start_info.store_mfn;
+        ret = xen_start_info->store_mfn;
 
         /* We'll return then this will wait for daemon to answer */
         kthread_run(do_xenbus_probe, NULL, "xenbus_probe");
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c
--- a/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/tpmback/tpmback.c        Mon Sep  5 
14:04:36 2005
@@ -1047,8 +1047,8 @@
 tpmback_init(void)
 {
        int rc;
-       if (!(xen_start_info.flags & SIF_TPM_BE_DOMAIN) &&
-           !(xen_start_info.flags & SIF_INITDOMAIN)) {
+       if (!(xen_start_info->flags & SIF_TPM_BE_DOMAIN) &&
+           !(xen_start_info->flags & SIF_INITDOMAIN)) {
                printk(KERN_ALERT "Neither TPM-BE Domain nor INIT domain!\n");
                return 0;
        }
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/usbback/usbback.c
--- a/linux-2.6-xen-sparse/drivers/xen/usbback/usbback.c        Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/usbback/usbback.c        Mon Sep  5 
14:04:36 2005
@@ -1029,8 +1029,8 @@
     int i;
     struct page *page;
 
-    if ( !(xen_start_info.flags & SIF_INITDOMAIN) &&
-         !(xen_start_info.flags & SIF_USB_BE_DOMAIN) )
+    if ( !(xen_start_info->flags & SIF_INITDOMAIN) &&
+         !(xen_start_info->flags & SIF_USB_BE_DOMAIN) )
         return 0;
 
     page = balloon_alloc_empty_page_range(MMAP_PAGES);
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/usbfront/usbfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/usbfront/usbfront.c      Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/usbfront/usbfront.c      Mon Sep  5 
14:04:36 2005
@@ -1675,8 +1675,8 @@
 {
        int retval = -ENOMEM, i;
 
-       if ( (xen_start_info.flags & SIF_INITDOMAIN)
-            || (xen_start_info.flags & SIF_USB_BE_DOMAIN) )
+       if ( (xen_start_info->flags & SIF_INITDOMAIN) ||
+            (xen_start_info->flags & SIF_USB_BE_DOMAIN) )
                 return 0;
 
        info(DRIVER_DESC " " DRIVER_VERSION);
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c    Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c    Mon Sep  5 
14:04:36 2005
@@ -48,12 +48,12 @@
 
 static inline struct ringbuf_head *outbuf(void)
 {
-       return mfn_to_virt(xen_start_info.store_mfn);
+       return mfn_to_virt(xen_start_info->store_mfn);
 }
 
 static inline struct ringbuf_head *inbuf(void)
 {
-       return mfn_to_virt(xen_start_info.store_mfn) + PAGE_SIZE/2;
+       return mfn_to_virt(xen_start_info->store_mfn) + PAGE_SIZE/2;
 }
 
 static irqreturn_t wake_waiting(int irq, void *unused, struct pt_regs *regs)
@@ -145,7 +145,7 @@
                data += avail;
                len -= avail;
                update_output_chunk(out, avail);
-               notify_via_evtchn(xen_start_info.store_evtchn);
+               notify_via_evtchn(xen_start_info->store_evtchn);
        } while (len != 0);
 
        return 0;
@@ -190,7 +190,7 @@
                pr_debug("Finished read of %i bytes (%i to go)\n", avail, len);
                /* If it was full, tell them we've taken some. */
                if (was_full)
-                       notify_via_evtchn(xen_start_info.store_evtchn);
+                       notify_via_evtchn(xen_start_info->store_evtchn);
        }
 
        /* If we left something, wake watch thread to deal with it. */
@@ -205,20 +205,20 @@
 {
        int err;
 
-       if (!xen_start_info.store_evtchn)
+       if (!xen_start_info->store_evtchn)
                return 0;
 
        err = bind_evtchn_to_irqhandler(
-               xen_start_info.store_evtchn, wake_waiting,
+               xen_start_info->store_evtchn, wake_waiting,
                0, "xenbus", &xb_waitq);
        if (err) {
                printk(KERN_ERR "XENBUS request irq failed %i\n", err);
-               unbind_evtchn_from_irq(xen_start_info.store_evtchn);
+               unbind_evtchn_from_irq(xen_start_info->store_evtchn);
                return err;
        }
 
        /* FIXME zero out page -- domain builder should probably do this*/
-       memset(mfn_to_virt(xen_start_info.store_mfn), 0, PAGE_SIZE);
+       memset(mfn_to_virt(xen_start_info->store_mfn), 0, PAGE_SIZE);
 
        return 0;
 }
@@ -226,8 +226,8 @@
 void xb_suspend_comms(void)
 {
 
-       if (!xen_start_info.store_evtchn)
+       if (!xen_start_info->store_evtchn)
                return;
 
-       unbind_evtchn_from_irqhandler(xen_start_info.store_evtchn, &xb_waitq);
-}
+       unbind_evtchn_from_irqhandler(xen_start_info->store_evtchn, &xb_waitq);
+}
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Mon Sep  5 
14:04:36 2005
@@ -621,7 +621,7 @@
 
        down(&xenbus_lock);
 
-       if (xen_start_info.store_evtchn) {
+       if (xen_start_info->store_evtchn) {
                ret = nb->notifier_call(nb, 0, NULL);
        } else {
                notifier_chain_register(&xenstore_chain, nb);
@@ -647,7 +647,7 @@
        int err = 0;
 
        /* Initialize xenstore comms unless already done. */
-       printk("store_evtchn = %i\n", xen_start_info.store_evtchn);
+       printk("store_evtchn = %i\n", xen_start_info->store_evtchn);
        err = xs_init();
        if (err) {
                printk("XENBUS: Error initializing xenstore comms:"
@@ -675,7 +675,7 @@
        device_register(&xenbus_frontend.dev);
        device_register(&xenbus_backend.dev);
 
-       if (!xen_start_info.store_evtchn)
+       if (!xen_start_info->store_evtchn)
                return 0;
 
        do_xenbus_probe(NULL);
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h
--- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h  
Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h  
Mon Sep  5 14:04:36 2005
@@ -8,7 +8,7 @@
 
 static char * __init machine_specific_memory_setup(void)
 {
-       unsigned long max_pfn = xen_start_info.nr_pages;
+       unsigned long max_pfn = xen_start_info->nr_pages;
 
        e820.nr_map = 0;
        add_memory_region(0, PFN_PHYS(max_pfn), E820_RAM);
@@ -23,7 +23,7 @@
        clear_bit(X86_FEATURE_PSE, c->x86_capability);
        clear_bit(X86_FEATURE_PGE, c->x86_capability);
        clear_bit(X86_FEATURE_SEP, c->x86_capability);
-       if (!(xen_start_info.flags & SIF_PRIVILEGED))
+       if (!(xen_start_info->flags & SIF_PRIVILEGED))
                clear_bit(X86_FEATURE_MTRR, c->x86_capability);
 }
 
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h
--- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h     Mon Sep  5 
08:23:05 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/setup.h     Mon Sep  5 
14:04:36 2005
@@ -53,8 +53,8 @@
 #define AUX_DEVICE_INFO (*(unsigned char *) (PARAM+0x1FF))
 #define LOADER_TYPE (*(unsigned char *) (PARAM+0x210))
 #define KERNEL_START (*(unsigned long *) (PARAM+0x214))
-#define INITRD_START (__pa(xen_start_info.mod_start))
-#define INITRD_SIZE (xen_start_info.mod_len)
+#define INITRD_START (__pa(xen_start_info->mod_start))
+#define INITRD_SIZE (xen_start_info->mod_len)
 #define EDID_INFO   (*(struct edid_info *) (PARAM+0x440))
 #define EDD_NR     (*(unsigned char *) (PARAM+EDDNR))
 #define EDD_MBR_SIG_NR (*(unsigned char *) (PARAM+EDD_MBR_SIG_NR_BUF))
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h
--- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h       Mon Sep 
 5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/bootsetup.h       Mon Sep 
 5 14:04:36 2005
@@ -25,8 +25,8 @@
 #define LOADER_TYPE (*(unsigned char *) (PARAM+0x210))
 #define KERNEL_START (*(unsigned int *) (PARAM+0x214))
 
-#define INITRD_START (__pa(xen_start_info.mod_start))
-#define INITRD_SIZE (xen_start_info.mod_len)
+#define INITRD_START (__pa(xen_start_info->mod_start))
+#define INITRD_SIZE (xen_start_info->mod_len)
 #define EDID_INFO   (*(struct edid_info *) (PARAM+0x440))
 
 #define EDD_NR     (*(unsigned char *) (PARAM+EDDNR))
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h
--- 
a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h    
    Mon Sep  5 08:23:05 2005
+++ 
b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h    
    Mon Sep  5 14:04:36 2005
@@ -14,7 +14,7 @@
        who = "Xen";
 
        start_pfn = 0;
-       max_pfn = xen_start_info.nr_pages;
+       max_pfn = xen_start_info->nr_pages;
 
        e820.nr_map = 0;
        add_memory_region(PFN_PHYS(start_pfn), PFN_PHYS(max_pfn) - 
PFN_PHYS(start_pfn), E820_RAM);
@@ -29,7 +29,7 @@
        clear_bit(X86_FEATURE_PSE, c->x86_capability);
        clear_bit(X86_FEATURE_PGE, c->x86_capability);
        clear_bit(X86_FEATURE_SEP, c->x86_capability);
-       if (!(xen_start_info.flags & SIF_PRIVILEGED))
+       if (!(xen_start_info->flags & SIF_PRIVILEGED))
                clear_bit(X86_FEATURE_MTRR, c->x86_capability);
 }
 
diff -r 85aca042b802 -r 79658ef58925 
linux-2.6-xen-sparse/include/asm-xen/hypervisor.h
--- a/linux-2.6-xen-sparse/include/asm-xen/hypervisor.h Mon Sep  5 08:23:05 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/hypervisor.h Mon Sep  5 14:04:36 2005
@@ -52,13 +52,7 @@
 #endif
 
 /* arch/xen/i386/kernel/setup.c */
-union xen_start_info_union
-{
-    start_info_t xen_start_info;
-    char padding[2048];
-};
-extern union xen_start_info_union xen_start_info_union;
-#define xen_start_info (xen_start_info_union.xen_start_info)
+extern start_info_t *xen_start_info;
 
 /* arch/xen/kernel/evtchn.c */
 /* Force a proper event-channel callback from Xen. */
diff -r 85aca042b802 -r 79658ef58925 tools/libxc/xc_linux_build.c
--- a/tools/libxc/xc_linux_build.c      Mon Sep  5 08:23:05 2005
+++ b/tools/libxc/xc_linux_build.c      Mon Sep  5 14:04:36 2005
@@ -395,18 +395,18 @@
     vinitrd_end      = vinitrd_start + initrd_len;
     vphysmap_start   = round_pgup(vinitrd_end);
     vphysmap_end     = vphysmap_start + (nr_pages * sizeof(unsigned long));
-    vstoreinfo_start = round_pgup(vphysmap_end);
+    vstartinfo_start = round_pgup(vphysmap_end);
+    vstartinfo_end   = vstartinfo_start + PAGE_SIZE;
+    vstoreinfo_start = vstartinfo_end;
     vstoreinfo_end   = vstoreinfo_start + PAGE_SIZE;
     vconsole_start   = vstoreinfo_end;
-    vconsole_end     = vstoreinfo_end + PAGE_SIZE;
+    vconsole_end     = vconsole_start + PAGE_SIZE;
     vpt_start        = vconsole_end; 
 
     for ( nr_pt_pages = 2; ; nr_pt_pages++ )
     {
         vpt_end          = vpt_start + (nr_pt_pages * PAGE_SIZE);
-        vstartinfo_start = vpt_end;
-        vstartinfo_end   = vstartinfo_start + PAGE_SIZE;
-        vstack_start     = vstartinfo_end;
+        vstack_start     = vpt_end;
         vstack_end       = vstack_start + PAGE_SIZE;
         v_end            = (vstack_end + (1UL<<22)-1) & ~((1UL<<22)-1);
         if ( (v_end - vstack_end) < (512UL << 10) )
@@ -442,19 +442,19 @@
            " Loaded kernel: %p->%p\n"
            " Init. ramdisk: %p->%p\n"
            " Phys-Mach map: %p->%p\n"
+           " Start info:    %p->%p\n"
            " Store page:    %p->%p\n"
            " Console page:  %p->%p\n"
            " Page tables:   %p->%p\n"
-           " Start info:    %p->%p\n"
            " Boot stack:    %p->%p\n"
            " TOTAL:         %p->%p\n",
            _p(dsi.v_kernstart), _p(dsi.v_kernend), 
            _p(vinitrd_start), _p(vinitrd_end),
            _p(vphysmap_start), _p(vphysmap_end),
+           _p(vstartinfo_start), _p(vstartinfo_end),
            _p(vstoreinfo_start), _p(vstoreinfo_end),
            _p(vconsole_start), _p(vconsole_end),
            _p(vpt_start), _p(vpt_end),
-           _p(vstartinfo_start), _p(vstartinfo_end),
            _p(vstack_start), _p(vstack_end),
            _p(dsi.v_start), _p(v_end));
     printf(" ENTRY ADDRESS: %p\n", _p(dsi.v_kernentry));
diff -r 85aca042b802 -r 79658ef58925 xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       Mon Sep  5 08:23:05 2005
+++ b/xen/arch/x86/domain_build.c       Mon Sep  5 14:04:36 2005
@@ -219,13 +219,13 @@
     vinitrd_end      = vinitrd_start + initrd_len;
     vphysmap_start   = round_pgup(vinitrd_end);
     vphysmap_end     = vphysmap_start + (nr_pages * sizeof(u32));
-    vpt_start        = round_pgup(vphysmap_end);
+    vstartinfo_start = round_pgup(vphysmap_end);
+    vstartinfo_end   = vstartinfo_start + PAGE_SIZE;
+    vpt_start        = vstartinfo_end;
     for ( nr_pt_pages = 2; ; nr_pt_pages++ )
     {
         vpt_end          = vpt_start + (nr_pt_pages * PAGE_SIZE);
-        vstartinfo_start = vpt_end;
-        vstartinfo_end   = vstartinfo_start + PAGE_SIZE;
-        vstack_start     = vstartinfo_end;
+        vstack_start     = vpt_end;
         vstack_end       = vstack_start + PAGE_SIZE;
         v_end            = (vstack_end + (1UL<<22)-1) & ~((1UL<<22)-1);
         if ( (v_end - vstack_end) < (512UL << 10) )
@@ -272,15 +272,15 @@
            " Loaded kernel: %p->%p\n"
            " Init. ramdisk: %p->%p\n"
            " Phys-Mach map: %p->%p\n"
+           " Start info:    %p->%p\n"
            " Page tables:   %p->%p\n"
-           " Start info:    %p->%p\n"
            " Boot stack:    %p->%p\n"
            " TOTAL:         %p->%p\n",
            _p(dsi.v_kernstart), _p(dsi.v_kernend), 
            _p(vinitrd_start), _p(vinitrd_end),
            _p(vphysmap_start), _p(vphysmap_end),
+           _p(vstartinfo_start), _p(vstartinfo_end),
            _p(vpt_start), _p(vpt_end),
-           _p(vstartinfo_start), _p(vstartinfo_end),
            _p(vstack_start), _p(vstack_end),
            _p(dsi.v_start), _p(v_end));
     printk(" ENTRY ADDRESS: %p\n", _p(dsi.v_kernentry));

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Keep start_info in page provided by domain builder instead of making a copy., Xen patchbot -unstable <=