mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[IA64] Reseve memory of domain0 (fix dom0 boot panic)
Our patch fix domain0 boot panic on large memory system. (e.g. amount of installed memory is 16GB) Memory of domain0 is not reserved now. Our patch can make this memory reserved. And we clean up initrd_start of domain0. Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com> Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com>
This commit is contained in:
1 parent
4f49eae794
commit
c6c867acc7
6 files changed
+22
-6
No files matched your search
@@ -235,7 +235,13 @@ reserve_memory (void)
|
||||
#endif
|
||||
n++;
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
#ifdef XEN
|
||||
rsvd_region[n].start = (unsigned long) __va(ia64_boot_param->domain_start);
|
||||
rsvd_region[n].end = (rsvd_region[n].start + ia64_boot_param->domain_size);
|
||||
n++;
|
||||
#endif
|
||||
|
||||
#if defined(XEN)||defined(CONFIG_BLK_DEV_INITRD)
|
||||
if (ia64_boot_param->initrd_start) {
|
||||
rsvd_region[n].start = (unsigned long)__va(ia64_boot_param->initrd_start);
|
||||
rsvd_region[n].end = rsvd_region[n].start + ia64_boot_param->initrd_size;
|
||||
|
||||
@@ -1019,8 +1019,7 @@ dom_fw_init (struct domain *d, const char *args, int arglen, char *fw_mem, int f
|
||||
if (d == dom0) {
|
||||
// XXX CONFIG_XEN_IA64_DOM0_VP
|
||||
// initrd_start address is hard coded in start_kernel()
|
||||
bp->initrd_start = (dom0_start+dom0_size) -
|
||||
(PAGE_ALIGN(ia64_boot_param->initrd_size) + 4*1024*1024);
|
||||
bp->initrd_start = ia64_boot_param->initrd_start;
|
||||
bp->initrd_size = ia64_boot_param->initrd_size;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -279,16 +279,17 @@ void start_kernel(void)
|
||||
memmove(__va(initial_images_start),
|
||||
__va(ia64_boot_param->domain_start),
|
||||
ia64_boot_param->domain_size);
|
||||
// ia64_boot_param->domain_start = initial_images_start;
|
||||
ia64_boot_param->domain_start = initial_images_start;
|
||||
|
||||
printk("ready to move initrd to 0x%lx with len %lx...",
|
||||
initial_images_start+PAGE_ALIGN(ia64_boot_param->domain_size),
|
||||
ia64_boot_param->initrd_size);
|
||||
memmove(__va(initial_images_start+PAGE_ALIGN(ia64_boot_param->domain_size)),
|
||||
|
||||
__va(ia64_boot_param->initrd_start),
|
||||
ia64_boot_param->initrd_size);
|
||||
printk("Done\n");
|
||||
ia64_boot_param->initrd_start = initial_images_start +
|
||||
PAGE_ALIGN(ia64_boot_param->domain_size);
|
||||
|
||||
/* first find highest page frame number */
|
||||
max_page = 0;
|
||||
|
||||
@@ -11,6 +11,7 @@ ia64regs.h -> linux/include/asm-ia64/ia64regs.h
|
||||
io.h -> linux/include/asm-ia64/io.h
|
||||
kregs.h -> linux/include/asm-ia64/kregs.h
|
||||
mca_asm.h -> linux/include/asm-ia64/mca_asm.h
|
||||
meminit.h -> linux/include/asm-ia64/meminit.h
|
||||
page.h -> linux/include/asm-ia64/page.h
|
||||
pal.h -> linux/include/asm-ia64/pal.h
|
||||
pgalloc.h -> linux/include/asm-ia64/pgalloc.h
|
||||
|
||||
+10
@@ -13,13 +13,23 @@
|
||||
* Entries defined so far:
|
||||
* - boot param structure itself
|
||||
* - memory map
|
||||
#ifndef XEN
|
||||
* - initrd (optional)
|
||||
#endif
|
||||
* - command line string
|
||||
* - kernel code & data
|
||||
#ifdef XEN
|
||||
* - dom0 code & data
|
||||
* - initrd (optional)
|
||||
#endif
|
||||
*
|
||||
* More could be added if necessary
|
||||
*/
|
||||
#ifndef XEN
|
||||
#define IA64_MAX_RSVD_REGIONS 5
|
||||
#else
|
||||
#define IA64_MAX_RSVD_REGIONS 6
|
||||
#endif
|
||||
|
||||
struct rsvd_region {
|
||||
unsigned long start; /* virtual address of beginning of element */
|
||||
@@ -27,7 +27,6 @@ linkage.h -> linux/include/asm-ia64/linkage.h
|
||||
machvec.h -> linux/include/asm-ia64/machvec.h
|
||||
machvec_hpsim.h -> linux/include/asm-ia64/machvec_hpsim.h
|
||||
mca.h -> linux/include/asm-ia64/mca.h
|
||||
meminit.h -> linux/include/asm-ia64/meminit.h
|
||||
numa.h -> linux/include/asm-ia64/numa.h
|
||||
numnodes.h -> linux/include/asm-ia64/numnodes.h
|
||||
param.h -> linux/include/asm-ia64/param.h
|
||||
|
||||