[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Keep start_info in page provided by domain builder instead of making a copy.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |