您的位置:首页 > 其它

kvm启动虚拟机流程(8)

2013-05-25 22:35 375 查看
分配内存、加载rom/bios

/* allocate ram and load rom/bios */

if (!xen_enabled()) {

pc_memory_init(system_memory,

kernel_filename, kernel_cmdline, initrd_filename,

below_4g_mem_size, above_4g_mem_size,

pci_enabled ? rom_memory : system_memory, &ram_memory);

}

gsi_state = g_malloc0(sizeof(*gsi_state));

qemu为gsi状态分配中断

gsi = qemu_allocate_irqs(gsi_handler, gsi_state, GSI_NUM_PINS);

为cpu中断分配内存

if (!xen_enabled()) {

cpu_irq = pc_allocate_cpu_irq();

i8259 = i8259_init(cpu_irq[0]);

} else {

i8259 = xen_interrupt_controller_init();

}

ioapic初始化

if (pci_enabled) {

ioapic_init(gsi_state);

}

vga初始化

pc_vga_init(pci_enabled? pci_bus: NULL);

虚拟机基本设备初始化

/* init basic PC hardware */

pc_basic_device_init(gsi, &rtc_state, &floppy, xen_enabled());

for(i = 0; i < nb_nics; i++) {

NICInfo *nd = &nd_table[i];

if (!pci_enabled || (nd->model && strcmp(nd->model, "ne2k_isa") == 0))

pc_init_ne2k_isa(nd);

else

网卡初始化

pci_nic_init_nofail(nd, "rtl8139", NULL);

}

if (pci_enabled) {

PCIDevice *dev;

if (xen_enabled()) {

dev = pci_piix3_xen_ide_init(pci_bus, hd, piix3_devfn + 1);

} else {

磁盘初始化

dev = pci_piix3_ide_init(pci_bus, hd, piix3_devfn + 1);

}

声卡初始化

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