[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 16/17] pc.c: split out pci device init from pc_init1
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH 16/17] pc.c: split out pci device init from pc_init1() into pc_pci_device_init() |
Date: |
Wed, 15 Jul 2009 16:19:16 +0900 |
Split out pci device initialization from pc_init1() into pc_pci_device_init().
and removed unnecessary braces.
Signed-off-by: Isaku Yamahata <address@hidden>
---
hw/pc.c | 102 ++++++++++++++++++++++++++++++++++++--------------------------
1 files changed, 59 insertions(+), 43 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index d6b4f6a..a7ae1fa 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1332,6 +1332,64 @@ static void pc_basic_device_init(qemu_irq *i8259,
*floppy_controller = fdctrl_init(i8259[6], 2, 0, 0x3f0, fd);
}
+static void pc_pci_device_init1(PCIBus *pci_bus,
+ const char* virtio_blk_name,
+ const char* virtio_console_name)
+{
+ DeviceState *qdev;
+ DriveInfo *dinfo;
+ int i;
+ int max_bus;
+ int unit_id;
+
+ max_bus = drive_get_max_bus(IF_SCSI);
+ for (i = 0; i <= max_bus; i++) {
+ pci_create_simple(pci_bus, -1, "lsi53c895a");
+ }
+
+ /* Add virtio block devices */
+ unit_id = 0;
+ while ((dinfo = drive_get(IF_VIRTIO, 0, unit_id)) != NULL) {
+ qdev = pci_create(virtio_blk_name, dinfo->devaddr);
+ qdev_init(qdev);
+ unit_id++;
+ }
+
+ /* Add virtio console devices */
+ for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
+ if (virtcon_hds[i]) {
+ pci_create_simple(pci_bus, -1, virtio_console_name);
+ }
+ }
+}
+
+static void pc_pci_device_init_compat(PCIBus *pci_bus, int compat_level)
+{
+ const char *virtio_blk_name, *virtio_console_name;
+
+ switch (compat_level) {
+ case COMPAT_DEFAULT:
+ default:
+ virtio_blk_name = "virtio-blk-pci";
+ virtio_console_name = "virtio-console-pci";
+ break;
+
+ case COMPAT_0_10:
+ virtio_blk_name = "virtio-blk-pci-0-10";
+ virtio_console_name = "virtio-console-pci-0-10";
+ break;
+ }
+
+ pc_pci_device_init1(pci_bus, virtio_blk_name, virtio_console_name);
+}
+
+#if 0
+void pc_pci_device_init(PCIBus *pci_bus)
+{
+ pc_pci_device_init(pci_bus, "virtio-blk-pci", "virtio-console-pci");
+}
+#endif
+
/* PC hardware initialisation */
static void pc_init1(ram_addr_t ram_size,
const char *boot_device,
@@ -1345,14 +1403,12 @@ static void pc_init1(ram_addr_t ram_size,
int i;
ram_addr_t below_4g_mem_size, above_4g_mem_size;
PCIBus *pci_bus;
- DeviceState *qdev;
PCIDevice *i440fx_state;
int piix3_devfn = -1;
qemu_irq *cpu_irq;
qemu_irq *i8259;
DriveInfo *dinfo;
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
- const char *virtio_blk_name, *virtio_console_name;
fdctrl_t *floppy_controller;
RTCState *rtc_state;
@@ -1448,47 +1504,7 @@ static void pc_init1(ram_addr_t ram_size,
}
if (pci_enabled) {
- int max_bus;
- int bus;
-
- max_bus = drive_get_max_bus(IF_SCSI);
- for (bus = 0; bus <= max_bus; bus++) {
- pci_create_simple(pci_bus, -1, "lsi53c895a");
- }
- }
-
- switch (compat_level) {
- case COMPAT_DEFAULT:
- default:
- virtio_blk_name = "virtio-blk-pci";
- virtio_console_name = "virtio-console-pci";
- break;
-
- case COMPAT_0_10:
- virtio_blk_name = "virtio-blk-pci-0-10";
- virtio_console_name = "virtio-console-pci-0-10";
- break;
- }
-
- /* Add virtio block devices */
- if (pci_enabled) {
- int unit_id = 0;
-
- while ((dinfo = drive_get(IF_VIRTIO, 0, unit_id)) != NULL) {
- qdev = pci_create(virtio_blk_name,
- dinfo->devaddr);
- qdev_init(qdev);
- unit_id++;
- }
- }
-
- /* Add virtio console devices */
- if (pci_enabled) {
- for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
- if (virtcon_hds[i]) {
- pci_create_simple(pci_bus, -1, virtio_console_name);
- }
- }
+ pc_pci_device_init_compat(pci_bus, compat_level);
}
}
--
1.6.0.2
- [Qemu-devel] [PATCH 00/17] split out piix specific part from pc emulator. v5, Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 06/17] pc.c: Make smm enable/disable function i440fx independent., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 07/17] pc.c: remove unnecessary global variables, pit and ioapic., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 10/17] pc.c: introduce a function to allocate cpu irq., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 11/17] pc.c: make pc_init1() not refer ferr_irq directly., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 16/17] pc.c: split out pci device init from pc_init1() into pc_pci_device_init(),
Isaku Yamahata <=
- [Qemu-devel] [PATCH 13/17] pc.c: split out memory allocation from pc_init1() into pc_memory_init(), Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 15/17] pc.c: split out basic device init from pc_init1() into pc_basic_device_init(), Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 08/17] pc.c: remove a global variable, floppy_controller., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 01/17] acpi.c: split out pc smbus routines from acpi.c into pc_smbus.c, Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 03/17] acpi.c: make qemu_system_powerdown() piix independent., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 12/17] pc.c: split out cpu initialization from pc_init1() into pc_cpus_init()., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 17/17] pc.c: split out piix specific part from pc.c into pc_piix.c, Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 09/17] pc.c: remove a global variable, RTCState *rtc_state., Isaku Yamahata, 2009/07/15
- [Qemu-devel] [PATCH 02/17] acpi.c: split out apm register emulation., Isaku Yamahata, 2009/07/15