[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:
awilliam@xenbuild.aw committed 2006-04-25 22:52:49 -06:00
1 parent 4f49eae794
commit c6c867acc7
6 files changed
+22 -6

No files matched your search

+7 -1
View File
@@ -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;
+1 -2
View File
@@ -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 {
+3 -2
View File
@@ -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
@@ -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
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.