您的位置:首页 > 其它

kvm启动虚拟机流程(7)

2013-05-25 22:34 274 查看
cpu执行初始化(内存映射初始化、io内存初始化)

cpu_exec_init_all();

块设备初始化

bdrv_init_with_whitelist();

blk_mig_init();

打开虚拟块设备

/* open the virtual block devices */

if (snapshot)

qemu_opts_foreach(qemu_find_opts("drive"), drive_enable_snapshot, NULL, 0);

if (qemu_opts_foreach(qemu_find_opts("drive"), drive_init_func, &machine->use_scsi, 1) != 0)

exit(1);

default_drive(default_cdrom, snapshot, machine->use_scsi,

IF_DEFAULT, 2, CDROM_OPTS);

default_drive(default_floppy, snapshot, machine->use_scsi,

IF_FLOPPY, 0, FD_OPTS);

default_drive(default_sdcard, snapshot, machine->use_scsi,

IF_SD, 0, SD_OPTS);

register_savevm_live(NULL, "ram", 0, 4, NULL, ram_save_live, NULL,

ram_load, NULL);

模块调用初始化(wdt_ib700_register_devices/ vmport_dev_register/ testdev_register_devices/ sga_register/ i440fx_register/ port92_register/ isa_qdev_register/ kvmclock_register_device/ kvm_tpr_opt_setup/ ivshmem_register_devices/ ioapic_register_devices/ pic_register/
pit_register/ pci_qdev_register/ debugcon_register_devices……

module_call_init(MODULE_INIT_DEVICE);

机器初始化(pc_init_pci-> pc_init1 PC硬件初始化)

machine->init(ram_size, boot_devices,

kernel_filename, kernel_cmdline, initrd_filename, cpu_model);

pc的cpu初始化

pc_cpus_init(cpu_model);

if (kvmclock_enabled) {

kvm时钟创建

kvmclock_create();

}

pci内存初始化

if (pci_enabled) {

pci_memory = g_new(MemoryRegion, 1);

memory_region_init(pci_memory, "pci", INT64_MAX);

rom_memory = pci_memory;

} else {

pci_memory = NULL;

rom_memory = system_memory;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: