# 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
|