aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/enlighten.c
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2014-09-17 00:12:36 -0400
committerDavid Vrabel <david.vrabel@citrix.com>2014-10-03 07:34:52 -0400
commitd1e9abd630fe66046087f6501a4e4b8de55f7ab9 (patch)
tree6c14a52812979042afe7729c7e3097f3976eb7fa /arch/x86/xen/enlighten.c
parentbca9b6855888d978d6e5399b0a8a8ed9a11e9236 (diff)
xen: eliminate scalability issues from initrd handling
Size restrictions native kernels wouldn't have resulted from the initrd getting mapped into the initial mapping. The kernel doesn't really need the initrd to be mapped, so use infrastructure available in Xen to avoid the mapping and hence the restriction. Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r--arch/x86/xen/enlighten.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index be1cff572ccf..f7e01fa1545f 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1519,6 +1519,7 @@ static void __init xen_pvh_early_guest_init(void)
1519asmlinkage __visible void __init xen_start_kernel(void) 1519asmlinkage __visible void __init xen_start_kernel(void)
1520{ 1520{
1521 struct physdev_set_iopl set_iopl; 1521 struct physdev_set_iopl set_iopl;
1522 unsigned long initrd_start = 0;
1522 int rc; 1523 int rc;
1523 1524
1524 if (!xen_start_info) 1525 if (!xen_start_info)
@@ -1665,10 +1666,16 @@ asmlinkage __visible void __init xen_start_kernel(void)
1665 new_cpu_data.x86_capability[0] = cpuid_edx(1); 1666 new_cpu_data.x86_capability[0] = cpuid_edx(1);
1666#endif 1667#endif
1667 1668
1669 if (xen_start_info->mod_start) {
1670 if (xen_start_info->flags & SIF_MOD_START_PFN)
1671 initrd_start = PFN_PHYS(xen_start_info->mod_start);
1672 else
1673 initrd_start = __pa(xen_start_info->mod_start);
1674 }
1675
1668 /* Poke various useful things into boot_params */ 1676 /* Poke various useful things into boot_params */
1669 boot_params.hdr.type_of_loader = (9 << 4) | 0; 1677 boot_params.hdr.type_of_loader = (9 << 4) | 0;
1670 boot_params.hdr.ramdisk_image = xen_start_info->mod_start 1678 boot_params.hdr.ramdisk_image = initrd_start;
1671 ? __pa(xen_start_info->mod_start) : 0;
1672 boot_params.hdr.ramdisk_size = xen_start_info->mod_len; 1679 boot_params.hdr.ramdisk_size = xen_start_info->mod_len;
1673 boot_params.hdr.cmd_line_ptr = __pa(xen_start_info->cmd_line); 1680 boot_params.hdr.cmd_line_ptr = __pa(xen_start_info->cmd_line);
1674 1681