[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/7] pc: pass QEMUMachineInitArgs down to pc_cpu
From: |
li guang |
Subject: |
Re: [Qemu-devel] [PATCH 4/7] pc: pass QEMUMachineInitArgs down to pc_cpus_init() |
Date: |
Tue, 30 Apr 2013 13:43:56 +0800 |
Reviewed-by: liguang <address@hidden>
在 2013-04-29一的 17:02 +0200,Igor Mammedov写道:
> It allows to store default cpu_model if none was specified.
>
> As side effect reduces size of the pc_piix.c code.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> hw/i386/pc.c | 13 ++++++-----
> hw/i386/pc_piix.c | 66
> +++++++++++++---------------------------------------
> hw/i386/pc_q35.c | 23 +++++++-----------
> include/hw/i386/pc.h | 3 ++-
> 4 files changed, 34 insertions(+), 71 deletions(-)
>
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index ce9357e..26644a1 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -915,23 +915,23 @@ static X86CPU *pc_new_cpu(const char *cpu_model,
> int64_t apic_id,
> return cpu;
> }
>
> -void pc_cpus_init(const char *cpu_model, DeviceState *icc_bridge)
> +void pc_cpus_init(QEMUMachineInitArgs *args, DeviceState *icc_bridge)
> {
> int i;
> X86CPU *cpu = NULL;
> Error *error = NULL;
>
> /* init CPUs */
> - if (cpu_model == NULL) {
> + if (args->cpu_model == NULL) {
> #ifdef TARGET_X86_64
> - cpu_model = "qemu64";
> + args->cpu_model = "qemu64";
> #else
> - cpu_model = "qemu32";
> + args->cpu_model = "qemu32";
> #endif
> }
>
> for (i = 0; i < smp_cpus; i++) {
> - cpu = pc_new_cpu(cpu_model, x86_cpu_apic_id_from_index(i),
> + cpu = pc_new_cpu(args->cpu_model, x86_cpu_apic_id_from_index(i),
> icc_bridge, &error);
> if (error) {
> fprintf(stderr, "%s\n", error_get_pretty(error));
> @@ -943,7 +943,8 @@ void pc_cpus_init(const char *cpu_model, DeviceState
> *icc_bridge)
> /* map APIC MMIO area if CPU has APIC */
> if (cpu && cpu->env.apic_state) {
> /* XXX: what if the base changes? */
> - sysbus_mmio_map_overlap(icc_bridge, 0, APIC_DEFAULT_ADDRESS, 0x1000);
> + sysbus_mmio_map_overlap(SYS_BUS_DEVICE(icc_bridge), 0,
> + APIC_DEFAULT_ADDRESS, 0x1000);
> }
> }
>
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 2190f0a..bdfac59 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -59,12 +59,7 @@ static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
> /* PC hardware initialisation */
> static void pc_init1(MemoryRegion *system_memory,
> MemoryRegion *system_io,
> - ram_addr_t ram_size,
> - const char *boot_device,
> - const char *kernel_filename,
> - const char *kernel_cmdline,
> - const char *initrd_filename,
> - const char *cpu_model,
> + QEMUMachineInitArgs *args,
> int pci_enabled,
> int kvmclock_enabled)
> {
> @@ -93,19 +88,19 @@ static void pc_init1(MemoryRegion *system_memory,
> object_property_add_child(qdev_get_machine(), "icc-bridge",
> OBJECT(icc_bridge), NULL);
>
> - pc_cpus_init(cpu_model, icc_bridge);
> + pc_cpus_init(args, icc_bridge);
> pc_acpi_init("acpi-dsdt.aml");
>
> if (kvmclock_enabled) {
> kvmclock_create();
> }
>
> - if (ram_size >= 0xe0000000 ) {
> - above_4g_mem_size = ram_size - 0xe0000000;
> + if (args->ram_size >= 0xe0000000 ) {
> + above_4g_mem_size = args->ram_size - 0xe0000000;
> below_4g_mem_size = 0xe0000000;
> } else {
> above_4g_mem_size = 0;
> - below_4g_mem_size = ram_size;
> + below_4g_mem_size = args->ram_size;
> }
>
> if (pci_enabled) {
> @@ -120,9 +115,9 @@ static void pc_init1(MemoryRegion *system_memory,
> /* allocate ram and load rom/bios */
> if (!xen_enabled()) {
> fw_cfg = pc_memory_init(system_memory,
> - kernel_filename, kernel_cmdline, initrd_filename,
> - below_4g_mem_size, above_4g_mem_size,
> - rom_memory, &ram_memory);
> + args->kernel_filename, args->kernel_cmdline,
> + args->initrd_filename, below_4g_mem_size,
> + above_4g_mem_size, rom_memory, &ram_memory);
> }
>
> gsi_state = g_malloc0(sizeof(*gsi_state));
> @@ -136,7 +131,7 @@ static void pc_init1(MemoryRegion *system_memory,
>
> if (pci_enabled) {
> pci_bus = i440fx_init(&i440fx_state, &piix3_devfn, &isa_bus, gsi,
> - system_memory, system_io, ram_size,
> + system_memory, system_io, args->ram_size,
> below_4g_mem_size,
> 0x100000000ULL - below_4g_mem_size,
> 0x100000000ULL + above_4g_mem_size,
> @@ -203,7 +198,7 @@ static void pc_init1(MemoryRegion *system_memory,
>
> audio_init(isa_bus, pci_enabled ? pci_bus : NULL);
>
> - pc_cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device,
> + pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_device,
> floppy, idebus[0], idebus[1], rtc_state);
>
> if (pci_enabled && usb_enabled(false)) {
> @@ -229,17 +224,7 @@ static void pc_init1(MemoryRegion *system_memory,
>
> static void pc_init_pci(QEMUMachineInitArgs *args)
> {
> - ram_addr_t ram_size = args->ram_size;
> - const char *cpu_model = args->cpu_model;
> - const char *kernel_filename = args->kernel_filename;
> - const char *kernel_cmdline = args->kernel_cmdline;
> - const char *initrd_filename = args->initrd_filename;
> - const char *boot_device = args->boot_device;
> - pc_init1(get_system_memory(),
> - get_system_io(),
> - ram_size, boot_device,
> - kernel_filename, kernel_cmdline,
> - initrd_filename, cpu_model, 1, 1);
> + pc_init1(get_system_memory(), get_system_io(), args, 1, 1);
> }
>
> static void pc_init_pci_1_4(QEMUMachineInitArgs *args)
> @@ -275,38 +260,19 @@ static void pc_init_pci_1_0(QEMUMachineInitArgs *args)
> /* PC init function for pc-0.10 to pc-0.13, and reused by xenfv */
> static void pc_init_pci_no_kvmclock(QEMUMachineInitArgs *args)
> {
> - ram_addr_t ram_size = args->ram_size;
> - const char *cpu_model = args->cpu_model;
> - const char *kernel_filename = args->kernel_filename;
> - const char *kernel_cmdline = args->kernel_cmdline;
> - const char *initrd_filename = args->initrd_filename;
> - const char *boot_device = args->boot_device;
> disable_kvm_pv_eoi();
> enable_compat_apic_id_mode();
> - pc_init1(get_system_memory(),
> - get_system_io(),
> - ram_size, boot_device,
> - kernel_filename, kernel_cmdline,
> - initrd_filename, cpu_model, 1, 0);
> + pc_init1(get_system_memory(), get_system_io(), args, 1, 0);
> }
>
> static void pc_init_isa(QEMUMachineInitArgs *args)
> {
> - ram_addr_t ram_size = args->ram_size;
> - const char *cpu_model = args->cpu_model;
> - const char *kernel_filename = args->kernel_filename;
> - const char *kernel_cmdline = args->kernel_cmdline;
> - const char *initrd_filename = args->initrd_filename;
> - const char *boot_device = args->boot_device;
> - if (cpu_model == NULL)
> - cpu_model = "486";
> + if (args->cpu_model == NULL) {
> + args->cpu_model = "486";
> + }
> disable_kvm_pv_eoi();
> enable_compat_apic_id_mode();
> - pc_init1(get_system_memory(),
> - get_system_io(),
> - ram_size, boot_device,
> - kernel_filename, kernel_cmdline,
> - initrd_filename, cpu_model, 0, 1);
> + pc_init1(get_system_memory(), get_system_io(), args, 0, 1);
> }
>
> #ifdef CONFIG_XEN
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index a926e38..a6f0960 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -49,12 +49,6 @@
> /* PC hardware initialisation */
> static void pc_q35_init(QEMUMachineInitArgs *args)
> {
> - ram_addr_t ram_size = args->ram_size;
> - const char *cpu_model = args->cpu_model;
> - const char *kernel_filename = args->kernel_filename;
> - const char *kernel_cmdline = args->kernel_cmdline;
> - const char *initrd_filename = args->initrd_filename;
> - const char *boot_device = args->boot_device;
> ram_addr_t below_4g_mem_size, above_4g_mem_size;
> Q35PCIHost *q35_host;
> PCIBus *host_bus;
> @@ -80,17 +74,17 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
> object_property_add_child(qdev_get_machine(), "icc-bridge",
> OBJECT(icc_bridge), NULL);
>
> - pc_cpus_init(cpu_model, icc_bridge);
> + pc_cpus_init(args, icc_bridge);
> pc_acpi_init("q35-acpi-dsdt.aml");
>
> kvmclock_create();
>
> - if (ram_size >= 0xb0000000) {
> - above_4g_mem_size = ram_size - 0xb0000000;
> + if (args->ram_size >= 0xb0000000) {
> + above_4g_mem_size = args->ram_size - 0xb0000000;
> below_4g_mem_size = 0xb0000000;
> } else {
> above_4g_mem_size = 0;
> - below_4g_mem_size = ram_size;
> + below_4g_mem_size = args->ram_size;
> }
>
> /* pci enabled */
> @@ -105,9 +99,10 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
>
> /* allocate ram and load rom/bios */
> if (!xen_enabled()) {
> - pc_memory_init(get_system_memory(), kernel_filename, kernel_cmdline,
> - initrd_filename, below_4g_mem_size, above_4g_mem_size,
> - rom_memory, &ram_memory);
> + pc_memory_init(get_system_memory(),
> + args->kernel_filename, args->kernel_cmdline,
> + args->initrd_filename, below_4g_mem_size,
> + above_4g_mem_size, rom_memory, &ram_memory);
> }
>
> /* irq lines */
> @@ -191,7 +186,7 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
> 0xb100),
> 8, NULL, 0);
>
> - pc_cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device,
> + pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_device,
> floppy, idebus[0], idebus[1], rtc_state);
>
> /* the rest devices to which pci devfn is automatically assigned */
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 8a6e76c..c86059f 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -9,6 +9,7 @@
> #include "net/net.h"
> #include "exec/memory.h"
> #include "hw/i386/ioapic.h"
> +#include "hw/boards.h"
>
> /* PC-style peripherals (also used by other machines). */
>
> @@ -78,7 +79,7 @@ extern int fd_bootchk;
> void pc_register_ferr_irq(qemu_irq irq);
> void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
>
> -void pc_cpus_init(const char *cpu_model, DeviceState *icc_bridge);
> +void pc_cpus_init(QEMUMachineInitArgs *args, DeviceState *icc_bridge);
> void pc_acpi_init(const char *default_dsdt);
> void *pc_memory_init(MemoryRegion *system_memory,
> const char *kernel_filename,
- Re: [Qemu-devel] [PATCH 1/7] target-i386: Introduce ICC bus/device/bridge, (continued)
- [Qemu-devel] [PATCH 2/7] target-i386: Attach ICC bus to CPU on its creation, Igor Mammedov, 2013/04/29
- [Qemu-devel] [PATCH 5/7] add hot_add_cpu hook to QEMUMachine and export machine_args, Igor Mammedov, 2013/04/29
- [Qemu-devel] [PATCH 6/7] target-i386: implement machine->hot_add_cpu hook, Igor Mammedov, 2013/04/29
- [Qemu-devel] [PATCH 4/7] pc: pass QEMUMachineInitArgs down to pc_cpus_init(), Igor Mammedov, 2013/04/29
- Re: [Qemu-devel] [PATCH 4/7] pc: pass QEMUMachineInitArgs down to pc_cpus_init(),
li guang <=
- [Qemu-devel] [PATCH 3/7] target-i386: Move APIC to ICC bus, Igor Mammedov, 2013/04/29
- [Qemu-devel] [PATCH 7/7] QMP: add cpu-add command, Igor Mammedov, 2013/04/29