为什么启动后到BIOS-provided physical RAM map就停住了?

编译打包和其他
回复
cnmyth
帖子: 38
注册时间: 2007-03-15 14:27

为什么启动后到BIOS-provided physical RAM map就停住了?

#1

帖子 cnmyth » 2007-10-02 14:09

为什么启动后到BIOS-provided physical RAM map就停住了?
屏幕显示
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 – 000000000009F800 (usable)
BIOS-e820: 00000000000009f800-00000000000a0000 (reserved)
.
.
.
BIOS-e820: 000000000fffe0000-0000001000000000 (reserved)

然后就卡住了,打印出来显示在copy_edd()前就停住了

ARCH_SETUP /* x86系列没有任何的动作 */
if (efi_enabled)
efi_init();
else {
printk(KERN_INFO "BIOS-provided physical RAM map:\n");
print_memory_map(machine_specific_memory_setup()); /* 处理内存图,最后保存在e820中 */
}

copy_edd(); /* 复制增强磁盘参数(来之setup自检信息),实验性质,CONFIG_EDD */
cnmyth
帖子: 38
注册时间: 2007-03-15 14:27

#2

帖子 cnmyth » 2007-10-02 15:14

static void __init print_memory_map(char *who)
{
int i;

for (i = 0; i < e820.nr_map; i++) {
printk(" %s: %016Lx - %016Lx ", who,
e820.map.addr,
e820.map.addr + e820.map.size);
switch (e820.map.type) {
case E820_RAM: printk("(usable)\n");
break;
case E820_RESERVED:
printk("(reserved)\n");
break;
case E820_ACPI:
printk("(ACPI data)\n");
break;
case E820_NVS:
printk("(ACPI NVS)\n");
break;
default: printk("type %lu\n", e820.map.type);
break;
}
}
}

打印出来e820.nr_map的大小为11,循环到10就停了
回复