From patchwork Thu Jul 24 11:30:26 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiejun Chen X-Patchwork-Id: 373373 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id AA45814001A for ; Thu, 24 Jul 2014 21:34:10 +1000 (EST) Received: from localhost ([::1]:49264 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XAHHk-0006bq-3Q for incoming@patchwork.ozlabs.org; Thu, 24 Jul 2014 07:34:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39321) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XAHHA-0005mQ-FR for qemu-devel@nongnu.org; Thu, 24 Jul 2014 07:33:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XAHH4-00035g-Ow for qemu-devel@nongnu.org; Thu, 24 Jul 2014 07:33:32 -0400 Received: from mga03.intel.com ([143.182.124.21]:6800) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XAHH4-00034T-Iv for qemu-devel@nongnu.org; Thu, 24 Jul 2014 07:33:26 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 24 Jul 2014 04:33:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,723,1400050800"; d="scan'208";a="460837134" Received: from tchen0-linux.bj.intel.com ([10.238.154.58]) by azsmga001.ch.intel.com with ESMTP; 24 Jul 2014 04:33:01 -0700 From: Tiejun Chen To: mst@redhat.com, stefano.stabellini@eu.citrix.com, pbonzini@redhat.com Date: Thu, 24 Jul 2014 19:30:26 +0800 Message-Id: <1406201429-21700-2-git-send-email-tiejun.chen@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1406201429-21700-1-git-send-email-tiejun.chen@intel.com> References: <1406201429-21700-1-git-send-email-tiejun.chen@intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 143.182.124.21 Cc: qemu-devel@nongnu.org, xen-devel@lists.xen.org Subject: [Qemu-devel] [PATCH 1/4] hw:i386:pc_piix: split pc_init1() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org We'd like to split pc_init1 and then we can share something with other stuff. Signed-off-by: Tiejun Chen --- hw/i386/pc_piix.c | 93 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 7081c08..2391fda 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -70,34 +70,21 @@ static bool smbios_legacy_mode; static bool gigabyte_align = true; static bool has_reserved_memory = true; -/* PC hardware initialisation */ -static void pc_init1(MachineState *machine, +static ram_addr_t below_4g_mem_size; +static ram_addr_t above_4g_mem_size; +static void pc_machine_base_init(MachineState *machine, int pci_enabled, - int kvmclock_enabled) + int kvmclock_enabled, + DeviceState *icc_bridge, + MemoryRegion *ram_memory, + MemoryRegion *pci_memory, + qemu_irq *gsi, + GSIState *gsi_state, + FWCfgState *fw_cfg) { PCMachineState *pc_machine = PC_MACHINE(machine); MemoryRegion *system_memory = get_system_memory(); - MemoryRegion *system_io = get_system_io(); - int i; - ram_addr_t below_4g_mem_size, above_4g_mem_size; - PCIBus *pci_bus; - ISABus *isa_bus; - PCII440FXState *i440fx_state; - int piix3_devfn = -1; - qemu_irq *cpu_irq; - qemu_irq *gsi; - qemu_irq *i8259; - qemu_irq *smi_irq; - GSIState *gsi_state; - DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; - BusState *idebus[MAX_IDE_BUS]; - ISADevice *rtc_state; - ISADevice *floppy; - MemoryRegion *ram_memory; - MemoryRegion *pci_memory; MemoryRegion *rom_memory; - DeviceState *icc_bridge; - FWCfgState *fw_cfg = NULL; PcGuestInfo *guest_info; ram_addr_t lowmem; @@ -190,6 +177,20 @@ static void pc_init1(MachineState *machine, } else { gsi = qemu_allocate_irqs(gsi_handler, gsi_state, GSI_NUM_PINS); } +} + +static void pc_machine_pci_bus_init(MachineState *machine, + int pci_enabled, + PCII440FXState *i440fx_state, + int piix3_devfn, + PCIBus *pci_bus, + ISABus *isa_bus, + qemu_irq *gsi, + MemoryRegion *pci_memory, + MemoryRegion *ram_memory) +{ + MemoryRegion *system_memory = get_system_memory(); + MemoryRegion *system_io = get_system_io(); if (pci_enabled) { pci_bus = i440fx_init(&i440fx_state, &piix3_devfn, &isa_bus, gsi, @@ -203,6 +204,28 @@ static void pc_init1(MachineState *machine, isa_bus = isa_bus_new(NULL, system_io); no_hpet = 1; } +} + +static void pc_machine_device_init(MachineState *machine, + int pci_enabled, + GSIState *gsi_state, + DeviceState *icc_bridge, + int piix3_devfn, + FWCfgState *fw_cfg, + PCIBus *pci_bus, + ISABus *isa_bus, + qemu_irq *gsi) +{ + int i; + DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; + BusState *idebus[MAX_IDE_BUS]; + qemu_irq *smi_irq; + PCMachineState *pc_machine = PC_MACHINE(machine); + qemu_irq *cpu_irq; + qemu_irq *i8259; + ISADevice *rtc_state; + ISADevice *floppy; + isa_bus_irqs(isa_bus, gsi); if (kvm_irqchip_in_kernel()) { @@ -290,6 +313,30 @@ static void pc_init1(MachineState *machine, } } +/* PC hardware initialisation */ +static void pc_init1(MachineState *machine, + int pci_enabled, + int kvmclock_enabled) +{ + PCIBus *pci_bus = NULL; + ISABus *isa_bus = NULL; + PCII440FXState *i440fx_state = NULL; + int piix3_devfn = -1; + qemu_irq *gsi = NULL; + GSIState *gsi_state = NULL; + MemoryRegion *ram_memory = NULL; + MemoryRegion *pci_memory = NULL; + DeviceState *icc_bridge = NULL; + FWCfgState *fw_cfg = NULL; + + pc_machine_base_init(machine, pci_enabled, kvmclock_enabled, icc_bridge, + ram_memory, pci_memory, gsi, gsi_state, fw_cfg); + pc_machine_pci_bus_init(machine, pci_enabled, i440fx_state, piix3_devfn, + pci_bus, isa_bus, gsi, pci_memory, ram_memory); + pc_machine_device_init(machine, pci_enabled, gsi_state, icc_bridge, + piix3_devfn, fw_cfg, pci_bus, isa_bus, gsi); +} + static void pc_init_pci(MachineState *machine) { pc_init1(machine, 1, 1);