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);
/* 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);
相关文章推荐
- kvm启动虚拟机流程(7)
- kvm启动虚拟机流程(10)
- kvm启动虚拟机流程(9)
- kvm启动虚拟机流程(1)
- kvm启动虚拟机流程(3)
- kvm启动虚拟机流程(2)
- kvm启动虚拟机流程(6)
- kvm启动虚拟机流程(5)
- kvm启动虚拟机流程(4)
- 【OpenStack源码分析之六】从虚拟机启动流程看安全认证
- OpenStack启动虚拟机时Nova内部工作流程
- openstack:nova中“从镜像启动”创建虚拟机的流程
- kvm 启动虚拟机提示“Viewer was disconnected.”
- openstack:nova中“从镜像启动(创建一个新卷)”创建虚拟机的流程
- Mitaka版Openstack虚拟机启动流程
- OpenStack Nova启动一个虚拟机内部流程
- kvm创建虚拟机流程(3)
- kvm 虚拟机的启动
- openstack:nova中“从云硬盘启动”创建虚拟机的流程
- KVM直接启动虚拟机