pc: Move compat boolean globals to PCMachineClass
This way the compat flags can be initialized in the machine_options() function. This will help us to eventually eliminate the pc_compat_*() functions. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
This commit is contained in:
		
							parent
							
								
									097a50d0d8
								
							
						
					
					
						commit
						7102fa7073
					
				@ -1953,6 +1953,14 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
 | 
				
			|||||||
    HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
 | 
					    HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pcmc->get_hotplug_handler = mc->get_hotplug_handler;
 | 
					    pcmc->get_hotplug_handler = mc->get_hotplug_handler;
 | 
				
			||||||
 | 
					    pcmc->pci_enabled = true;
 | 
				
			||||||
 | 
					    pcmc->has_acpi_build = true;
 | 
				
			||||||
 | 
					    pcmc->rsdp_in_ram = true;
 | 
				
			||||||
 | 
					    pcmc->smbios_defaults = true;
 | 
				
			||||||
 | 
					    pcmc->smbios_uuid_encoded = true;
 | 
				
			||||||
 | 
					    pcmc->gigabyte_align = true;
 | 
				
			||||||
 | 
					    pcmc->has_reserved_memory = true;
 | 
				
			||||||
 | 
					    pcmc->kvmclock_enabled = true;
 | 
				
			||||||
    mc->get_hotplug_handler = pc_get_hotpug_handler;
 | 
					    mc->get_hotplug_handler = pc_get_hotpug_handler;
 | 
				
			||||||
    mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id;
 | 
					    mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id;
 | 
				
			||||||
    mc->default_boot_order = "cad";
 | 
					    mc->default_boot_order = "cad";
 | 
				
			||||||
 | 
				
			|||||||
@ -61,26 +61,14 @@ static const int ide_iobase[MAX_IDE_BUS] = { 0x1f0, 0x170 };
 | 
				
			|||||||
static const int ide_iobase2[MAX_IDE_BUS] = { 0x3f6, 0x376 };
 | 
					static const int ide_iobase2[MAX_IDE_BUS] = { 0x3f6, 0x376 };
 | 
				
			||||||
static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
 | 
					static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool pci_enabled = true;
 | 
					 | 
				
			||||||
static bool has_acpi_build = true;
 | 
					 | 
				
			||||||
static bool rsdp_in_ram = true;
 | 
					 | 
				
			||||||
static int legacy_acpi_table_size;
 | 
					static int legacy_acpi_table_size;
 | 
				
			||||||
static bool smbios_defaults = true;
 | 
					 | 
				
			||||||
static bool smbios_legacy_mode;
 | 
					 | 
				
			||||||
static bool smbios_uuid_encoded = true;
 | 
					 | 
				
			||||||
/* Make sure that guest addresses aligned at 1Gbyte boundaries get mapped to
 | 
					 | 
				
			||||||
 * host addresses aligned at 1Gbyte boundaries.  This way we can use 1GByte
 | 
					 | 
				
			||||||
 * pages in the host.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
static bool gigabyte_align = true;
 | 
					 | 
				
			||||||
static bool has_reserved_memory = true;
 | 
					 | 
				
			||||||
static bool kvmclock_enabled = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* PC hardware initialisation */
 | 
					/* PC hardware initialisation */
 | 
				
			||||||
static void pc_init1(MachineState *machine,
 | 
					static void pc_init1(MachineState *machine,
 | 
				
			||||||
                     const char *host_type, const char *pci_type)
 | 
					                     const char *host_type, const char *pci_type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    PCMachineState *pcms = PC_MACHINE(machine);
 | 
					    PCMachineState *pcms = PC_MACHINE(machine);
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
 | 
				
			||||||
    MemoryRegion *system_memory = get_system_memory();
 | 
					    MemoryRegion *system_memory = get_system_memory();
 | 
				
			||||||
    MemoryRegion *system_io = get_system_io();
 | 
					    MemoryRegion *system_io = get_system_io();
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
@ -109,7 +97,7 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
     * breaking migration.
 | 
					     * breaking migration.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    if (machine->ram_size >= 0xe0000000) {
 | 
					    if (machine->ram_size >= 0xe0000000) {
 | 
				
			||||||
        lowmem = gigabyte_align ? 0xc0000000 : 0xe0000000;
 | 
					        lowmem = pcmc->gigabyte_align ? 0xc0000000 : 0xe0000000;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        lowmem = 0xe0000000;
 | 
					        lowmem = 0xe0000000;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -142,11 +130,11 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    pc_cpus_init(pcms);
 | 
					    pc_cpus_init(pcms);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (kvm_enabled() && kvmclock_enabled) {
 | 
					    if (kvm_enabled() && pcmc->kvmclock_enabled) {
 | 
				
			||||||
        kvmclock_create();
 | 
					        kvmclock_create();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        pci_memory = g_new(MemoryRegion, 1);
 | 
					        pci_memory = g_new(MemoryRegion, 1);
 | 
				
			||||||
        memory_region_init(pci_memory, NULL, "pci", UINT64_MAX);
 | 
					        memory_region_init(pci_memory, NULL, "pci", UINT64_MAX);
 | 
				
			||||||
        rom_memory = pci_memory;
 | 
					        rom_memory = pci_memory;
 | 
				
			||||||
@ -157,18 +145,19 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    guest_info = pc_guest_info_init(pcms);
 | 
					    guest_info = pc_guest_info_init(pcms);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    guest_info->has_acpi_build = has_acpi_build;
 | 
					    guest_info->has_acpi_build = pcmc->has_acpi_build;
 | 
				
			||||||
    guest_info->legacy_acpi_table_size = legacy_acpi_table_size;
 | 
					    guest_info->legacy_acpi_table_size = legacy_acpi_table_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    guest_info->isapc_ram_fw = !pci_enabled;
 | 
					    guest_info->isapc_ram_fw = !pcmc->pci_enabled;
 | 
				
			||||||
    guest_info->has_reserved_memory = has_reserved_memory;
 | 
					    guest_info->has_reserved_memory = pcmc->has_reserved_memory;
 | 
				
			||||||
    guest_info->rsdp_in_ram = rsdp_in_ram;
 | 
					    guest_info->rsdp_in_ram = pcmc->rsdp_in_ram;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (smbios_defaults) {
 | 
					    if (pcmc->smbios_defaults) {
 | 
				
			||||||
        MachineClass *mc = MACHINE_GET_CLASS(machine);
 | 
					        MachineClass *mc = MACHINE_GET_CLASS(machine);
 | 
				
			||||||
        /* These values are guest ABI, do not change */
 | 
					        /* These values are guest ABI, do not change */
 | 
				
			||||||
        smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)",
 | 
					        smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)",
 | 
				
			||||||
                            mc->name, smbios_legacy_mode, smbios_uuid_encoded,
 | 
					                            mc->name, pcmc->smbios_legacy_mode,
 | 
				
			||||||
 | 
					                            pcmc->smbios_uuid_encoded,
 | 
				
			||||||
                            SMBIOS_ENTRY_POINT_21);
 | 
					                            SMBIOS_ENTRY_POINT_21);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -183,14 +172,14 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    gsi_state = g_malloc0(sizeof(*gsi_state));
 | 
					    gsi_state = g_malloc0(sizeof(*gsi_state));
 | 
				
			||||||
    if (kvm_ioapic_in_kernel()) {
 | 
					    if (kvm_ioapic_in_kernel()) {
 | 
				
			||||||
        kvm_pc_setup_irq_routing(pci_enabled);
 | 
					        kvm_pc_setup_irq_routing(pcmc->pci_enabled);
 | 
				
			||||||
        gsi = qemu_allocate_irqs(kvm_pc_gsi_handler, gsi_state,
 | 
					        gsi = qemu_allocate_irqs(kvm_pc_gsi_handler, gsi_state,
 | 
				
			||||||
                                 GSI_NUM_PINS);
 | 
					                                 GSI_NUM_PINS);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        gsi = qemu_allocate_irqs(gsi_handler, gsi_state, GSI_NUM_PINS);
 | 
					        gsi = qemu_allocate_irqs(gsi_handler, gsi_state, GSI_NUM_PINS);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        pci_bus = i440fx_init(host_type,
 | 
					        pci_bus = i440fx_init(host_type,
 | 
				
			||||||
                              pci_type,
 | 
					                              pci_type,
 | 
				
			||||||
                              &i440fx_state, &piix3_devfn, &isa_bus, gsi,
 | 
					                              &i440fx_state, &piix3_devfn, &isa_bus, gsi,
 | 
				
			||||||
@ -218,13 +207,13 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
        gsi_state->i8259_irq[i] = i8259[i];
 | 
					        gsi_state->i8259_irq[i] = i8259[i];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    g_free(i8259);
 | 
					    g_free(i8259);
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        ioapic_init_gsi(gsi_state, "i440fx");
 | 
					        ioapic_init_gsi(gsi_state, "i440fx");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pc_register_ferr_irq(gsi[13]);
 | 
					    pc_register_ferr_irq(gsi[13]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pc_vga_init(isa_bus, pci_enabled ? pci_bus : NULL);
 | 
					    pc_vga_init(isa_bus, pcmc->pci_enabled ? pci_bus : NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert(pcms->vmport != ON_OFF_AUTO__MAX);
 | 
					    assert(pcms->vmport != ON_OFF_AUTO__MAX);
 | 
				
			||||||
    if (pcms->vmport == ON_OFF_AUTO_AUTO) {
 | 
					    if (pcms->vmport == ON_OFF_AUTO_AUTO) {
 | 
				
			||||||
@ -238,7 +227,7 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
    pc_nic_init(isa_bus, pci_bus);
 | 
					    pc_nic_init(isa_bus, pci_bus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ide_drive_get(hd, ARRAY_SIZE(hd));
 | 
					    ide_drive_get(hd, ARRAY_SIZE(hd));
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        PCIDevice *dev;
 | 
					        PCIDevice *dev;
 | 
				
			||||||
        if (xen_enabled()) {
 | 
					        if (xen_enabled()) {
 | 
				
			||||||
            dev = pci_piix3_xen_ide_init(pci_bus, hd, piix3_devfn + 1);
 | 
					            dev = pci_piix3_xen_ide_init(pci_bus, hd, piix3_devfn + 1);
 | 
				
			||||||
@ -265,11 +254,11 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
 | 
					    pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pci_enabled && usb_enabled()) {
 | 
					    if (pcmc->pci_enabled && usb_enabled()) {
 | 
				
			||||||
        pci_create_simple(pci_bus, piix3_devfn + 2, "piix3-usb-uhci");
 | 
					        pci_create_simple(pci_bus, piix3_devfn + 2, "piix3-usb-uhci");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pci_enabled && acpi_enabled) {
 | 
					    if (pcmc->pci_enabled && acpi_enabled) {
 | 
				
			||||||
        DeviceState *piix4_pm;
 | 
					        DeviceState *piix4_pm;
 | 
				
			||||||
        I2CBus *smbus;
 | 
					        I2CBus *smbus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -290,7 +279,7 @@ static void pc_init1(MachineState *machine,
 | 
				
			|||||||
                                 PC_MACHINE_ACPI_DEVICE_PROP, &error_abort);
 | 
					                                 PC_MACHINE_ACPI_DEVICE_PROP, &error_abort);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        pc_pci_device_init(pci_bus);
 | 
					        pc_pci_device_init(pci_bus);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -316,7 +305,6 @@ static void pc_compat_2_3(MachineState *machine)
 | 
				
			|||||||
static void pc_compat_2_2(MachineState *machine)
 | 
					static void pc_compat_2_2(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_2_3(machine);
 | 
					    pc_compat_2_3(machine);
 | 
				
			||||||
    rsdp_in_ram = false;
 | 
					 | 
				
			||||||
    machine->suppress_vmdesc = true;
 | 
					    machine->suppress_vmdesc = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -325,7 +313,6 @@ static void pc_compat_2_1(MachineState *machine)
 | 
				
			|||||||
    PCMachineState *pcms = PC_MACHINE(machine);
 | 
					    PCMachineState *pcms = PC_MACHINE(machine);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pc_compat_2_2(machine);
 | 
					    pc_compat_2_2(machine);
 | 
				
			||||||
    smbios_uuid_encoded = false;
 | 
					 | 
				
			||||||
    x86_cpu_change_kvm_default("svm", NULL);
 | 
					    x86_cpu_change_kvm_default("svm", NULL);
 | 
				
			||||||
    pcms->enforce_aligned_dimm = false;
 | 
					    pcms->enforce_aligned_dimm = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -350,16 +337,12 @@ static void pc_compat_2_0(MachineState *machine)
 | 
				
			|||||||
     * QEMU 1.7 it is 6414.  For RHEL/CentOS 7.0 it is 6418.
 | 
					     * QEMU 1.7 it is 6414.  For RHEL/CentOS 7.0 it is 6418.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    legacy_acpi_table_size = 6652;
 | 
					    legacy_acpi_table_size = 6652;
 | 
				
			||||||
    smbios_legacy_mode = true;
 | 
					 | 
				
			||||||
    has_reserved_memory = false;
 | 
					 | 
				
			||||||
    pc_set_legacy_acpi_data_size();
 | 
					    pc_set_legacy_acpi_data_size();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_compat_1_7(MachineState *machine)
 | 
					static void pc_compat_1_7(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_2_0(machine);
 | 
					    pc_compat_2_0(machine);
 | 
				
			||||||
    smbios_defaults = false;
 | 
					 | 
				
			||||||
    gigabyte_align = false;
 | 
					 | 
				
			||||||
    option_rom_has_mr = true;
 | 
					    option_rom_has_mr = true;
 | 
				
			||||||
    legacy_acpi_table_size = 6414;
 | 
					    legacy_acpi_table_size = 6414;
 | 
				
			||||||
    x86_cpu_change_kvm_default("x2apic", NULL);
 | 
					    x86_cpu_change_kvm_default("x2apic", NULL);
 | 
				
			||||||
@ -369,7 +352,6 @@ static void pc_compat_1_6(MachineState *machine)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_1_7(machine);
 | 
					    pc_compat_1_7(machine);
 | 
				
			||||||
    rom_file_has_mr = false;
 | 
					    rom_file_has_mr = false;
 | 
				
			||||||
    has_acpi_build = false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_compat_1_5(MachineState *machine)
 | 
					static void pc_compat_1_5(MachineState *machine)
 | 
				
			||||||
@ -399,17 +381,10 @@ static void pc_compat_1_2(MachineState *machine)
 | 
				
			|||||||
static void pc_compat_0_13(MachineState *machine)
 | 
					static void pc_compat_0_13(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_1_2(machine);
 | 
					    pc_compat_1_2(machine);
 | 
				
			||||||
    kvmclock_enabled = false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_init_isa(MachineState *machine)
 | 
					static void pc_init_isa(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pci_enabled = false;
 | 
					 | 
				
			||||||
    has_acpi_build = false;
 | 
					 | 
				
			||||||
    smbios_defaults = false;
 | 
					 | 
				
			||||||
    gigabyte_align = false;
 | 
					 | 
				
			||||||
    smbios_legacy_mode = true;
 | 
					 | 
				
			||||||
    has_reserved_memory = false;
 | 
					 | 
				
			||||||
    option_rom_has_mr = true;
 | 
					    option_rom_has_mr = true;
 | 
				
			||||||
    rom_file_has_mr = false;
 | 
					    rom_file_has_mr = false;
 | 
				
			||||||
    if (!machine->cpu_model) {
 | 
					    if (!machine->cpu_model) {
 | 
				
			||||||
@ -511,9 +486,11 @@ DEFINE_I440FX_MACHINE(v2_3, "pc-i440fx-2.3", pc_compat_2_3,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_2_2_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_2_2_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_2_3_machine_options(m);
 | 
					    pc_i440fx_2_3_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.2.0";
 | 
					    m->hw_version = "2.2.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_2);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_2);
 | 
				
			||||||
 | 
					    pcmc->rsdp_in_ram = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2,
 | 
					DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2,
 | 
				
			||||||
@ -522,10 +499,12 @@ DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_2_1_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_2_1_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_2_2_machine_options(m);
 | 
					    pc_i440fx_2_2_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.1.0";
 | 
					    m->hw_version = "2.1.0";
 | 
				
			||||||
    m->default_display = NULL;
 | 
					    m->default_display = NULL;
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_1);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_1);
 | 
				
			||||||
 | 
					    pcmc->smbios_uuid_encoded = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v2_1, "pc-i440fx-2.1", pc_compat_2_1,
 | 
					DEFINE_I440FX_MACHINE(v2_1, "pc-i440fx-2.1", pc_compat_2_1,
 | 
				
			||||||
@ -535,9 +514,12 @@ DEFINE_I440FX_MACHINE(v2_1, "pc-i440fx-2.1", pc_compat_2_1,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_2_0_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_2_0_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_2_1_machine_options(m);
 | 
					    pc_i440fx_2_1_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.0.0";
 | 
					    m->hw_version = "2.0.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_0);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_0);
 | 
				
			||||||
 | 
					    pcmc->smbios_legacy_mode = true;
 | 
				
			||||||
 | 
					    pcmc->has_reserved_memory = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0,
 | 
					DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0,
 | 
				
			||||||
@ -546,10 +528,13 @@ DEFINE_I440FX_MACHINE(v2_0, "pc-i440fx-2.0", pc_compat_2_0,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_1_7_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_1_7_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_2_0_machine_options(m);
 | 
					    pc_i440fx_2_0_machine_options(m);
 | 
				
			||||||
    m->hw_version = "1.7.0";
 | 
					    m->hw_version = "1.7.0";
 | 
				
			||||||
    m->default_machine_opts = NULL;
 | 
					    m->default_machine_opts = NULL;
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
 | 
				
			||||||
 | 
					    pcmc->smbios_defaults = false;
 | 
				
			||||||
 | 
					    pcmc->gigabyte_align = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v1_7, "pc-i440fx-1.7", pc_compat_1_7,
 | 
					DEFINE_I440FX_MACHINE(v1_7, "pc-i440fx-1.7", pc_compat_1_7,
 | 
				
			||||||
@ -558,9 +543,11 @@ DEFINE_I440FX_MACHINE(v1_7, "pc-i440fx-1.7", pc_compat_1_7,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_1_6_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_1_6_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_1_7_machine_options(m);
 | 
					    pc_i440fx_1_7_machine_options(m);
 | 
				
			||||||
    m->hw_version = "1.6.0";
 | 
					    m->hw_version = "1.6.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
 | 
				
			||||||
 | 
					    pcmc->has_acpi_build = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v1_6, "pc-i440fx-1.6", pc_compat_1_6,
 | 
					DEFINE_I440FX_MACHINE(v1_6, "pc-i440fx-1.6", pc_compat_1_6,
 | 
				
			||||||
@ -814,9 +801,11 @@ DEFINE_I440FX_MACHINE(v0_14, "pc-0.14", pc_compat_1_2,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_i440fx_0_13_machine_options(MachineClass *m)
 | 
					static void pc_i440fx_0_13_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_i440fx_0_14_machine_options(m);
 | 
					    pc_i440fx_0_14_machine_options(m);
 | 
				
			||||||
    m->hw_version = "0.13";
 | 
					    m->hw_version = "0.13";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_0_13);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_0_13);
 | 
				
			||||||
 | 
					    pcmc->kvmclock_enabled = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_I440FX_MACHINE(v0_13, "pc-0.13", pc_compat_0_13,
 | 
					DEFINE_I440FX_MACHINE(v0_13, "pc-0.13", pc_compat_0_13,
 | 
				
			||||||
@ -1038,8 +1027,15 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void isapc_machine_options(MachineClass *m)
 | 
					static void isapc_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    m->desc = "ISA-only PC";
 | 
					    m->desc = "ISA-only PC";
 | 
				
			||||||
    m->max_cpus = 1;
 | 
					    m->max_cpus = 1;
 | 
				
			||||||
 | 
					    pcmc->pci_enabled = false;
 | 
				
			||||||
 | 
					    pcmc->has_acpi_build = false;
 | 
				
			||||||
 | 
					    pcmc->smbios_defaults = false;
 | 
				
			||||||
 | 
					    pcmc->gigabyte_align = false;
 | 
				
			||||||
 | 
					    pcmc->smbios_legacy_mode = true;
 | 
				
			||||||
 | 
					    pcmc->has_reserved_memory = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
 | 
					DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
 | 
				
			||||||
 | 
				
			|||||||
@ -49,22 +49,11 @@
 | 
				
			|||||||
/* ICH9 AHCI has 6 ports */
 | 
					/* ICH9 AHCI has 6 ports */
 | 
				
			||||||
#define MAX_SATA_PORTS     6
 | 
					#define MAX_SATA_PORTS     6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool has_acpi_build = true;
 | 
					 | 
				
			||||||
static bool rsdp_in_ram = true;
 | 
					 | 
				
			||||||
static bool smbios_defaults = true;
 | 
					 | 
				
			||||||
static bool smbios_legacy_mode;
 | 
					 | 
				
			||||||
static bool smbios_uuid_encoded = true;
 | 
					 | 
				
			||||||
/* Make sure that guest addresses aligned at 1Gbyte boundaries get mapped to
 | 
					 | 
				
			||||||
 * host addresses aligned at 1Gbyte boundaries.  This way we can use 1GByte
 | 
					 | 
				
			||||||
 * pages in the host.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
static bool gigabyte_align = true;
 | 
					 | 
				
			||||||
static bool has_reserved_memory = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* PC hardware initialisation */
 | 
					/* PC hardware initialisation */
 | 
				
			||||||
static void pc_q35_init(MachineState *machine)
 | 
					static void pc_q35_init(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    PCMachineState *pcms = PC_MACHINE(machine);
 | 
					    PCMachineState *pcms = PC_MACHINE(machine);
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
 | 
				
			||||||
    Q35PCIHost *q35_host;
 | 
					    Q35PCIHost *q35_host;
 | 
				
			||||||
    PCIHostState *phb;
 | 
					    PCIHostState *phb;
 | 
				
			||||||
    PCIBus *host_bus;
 | 
					    PCIBus *host_bus;
 | 
				
			||||||
@ -76,7 +65,6 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
    MemoryRegion *ram_memory;
 | 
					    MemoryRegion *ram_memory;
 | 
				
			||||||
    GSIState *gsi_state;
 | 
					    GSIState *gsi_state;
 | 
				
			||||||
    ISABus *isa_bus;
 | 
					    ISABus *isa_bus;
 | 
				
			||||||
    int pci_enabled = 1;
 | 
					 | 
				
			||||||
    qemu_irq *gsi;
 | 
					    qemu_irq *gsi;
 | 
				
			||||||
    qemu_irq *i8259;
 | 
					    qemu_irq *i8259;
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
@ -97,7 +85,7 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
     * breaking migration.
 | 
					     * breaking migration.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    if (machine->ram_size >= 0xb0000000) {
 | 
					    if (machine->ram_size >= 0xb0000000) {
 | 
				
			||||||
        lowmem = gigabyte_align ? 0x80000000 : 0xb0000000;
 | 
					        lowmem = pcmc->gigabyte_align ? 0x80000000 : 0xb0000000;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        lowmem = 0xb0000000;
 | 
					        lowmem = 0xb0000000;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -134,7 +122,7 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
    kvmclock_create();
 | 
					    kvmclock_create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* pci enabled */
 | 
					    /* pci enabled */
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        pci_memory = g_new(MemoryRegion, 1);
 | 
					        pci_memory = g_new(MemoryRegion, 1);
 | 
				
			||||||
        memory_region_init(pci_memory, NULL, "pci", UINT64_MAX);
 | 
					        memory_region_init(pci_memory, NULL, "pci", UINT64_MAX);
 | 
				
			||||||
        rom_memory = pci_memory;
 | 
					        rom_memory = pci_memory;
 | 
				
			||||||
@ -145,19 +133,20 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    guest_info = pc_guest_info_init(pcms);
 | 
					    guest_info = pc_guest_info_init(pcms);
 | 
				
			||||||
    guest_info->isapc_ram_fw = false;
 | 
					    guest_info->isapc_ram_fw = false;
 | 
				
			||||||
    guest_info->has_acpi_build = has_acpi_build;
 | 
					    guest_info->has_acpi_build = pcmc->has_acpi_build;
 | 
				
			||||||
    guest_info->has_reserved_memory = has_reserved_memory;
 | 
					    guest_info->has_reserved_memory = pcmc->has_reserved_memory;
 | 
				
			||||||
    guest_info->rsdp_in_ram = rsdp_in_ram;
 | 
					    guest_info->rsdp_in_ram = pcmc->rsdp_in_ram;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Migration was not supported in 2.0 for Q35, so do not bother
 | 
					    /* Migration was not supported in 2.0 for Q35, so do not bother
 | 
				
			||||||
     * with this hack (see hw/i386/acpi-build.c).
 | 
					     * with this hack (see hw/i386/acpi-build.c).
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    guest_info->legacy_acpi_table_size = 0;
 | 
					    guest_info->legacy_acpi_table_size = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (smbios_defaults) {
 | 
					    if (pcmc->smbios_defaults) {
 | 
				
			||||||
        /* These values are guest ABI, do not change */
 | 
					        /* These values are guest ABI, do not change */
 | 
				
			||||||
        smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)",
 | 
					        smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)",
 | 
				
			||||||
                            mc->name, smbios_legacy_mode, smbios_uuid_encoded,
 | 
					                            mc->name, pcmc->smbios_legacy_mode,
 | 
				
			||||||
 | 
					                            pcmc->smbios_uuid_encoded,
 | 
				
			||||||
                            SMBIOS_ENTRY_POINT_21);
 | 
					                            SMBIOS_ENTRY_POINT_21);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -170,7 +159,7 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
    /* irq lines */
 | 
					    /* irq lines */
 | 
				
			||||||
    gsi_state = g_malloc0(sizeof(*gsi_state));
 | 
					    gsi_state = g_malloc0(sizeof(*gsi_state));
 | 
				
			||||||
    if (kvm_irqchip_in_kernel()) {
 | 
					    if (kvm_irqchip_in_kernel()) {
 | 
				
			||||||
        kvm_pc_setup_irq_routing(pci_enabled);
 | 
					        kvm_pc_setup_irq_routing(pcmc->pci_enabled);
 | 
				
			||||||
        gsi = qemu_allocate_irqs(kvm_pc_gsi_handler, gsi_state,
 | 
					        gsi = qemu_allocate_irqs(kvm_pc_gsi_handler, gsi_state,
 | 
				
			||||||
                                 GSI_NUM_PINS);
 | 
					                                 GSI_NUM_PINS);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@ -227,7 +216,7 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
    for (i = 0; i < ISA_NUM_IRQS; i++) {
 | 
					    for (i = 0; i < ISA_NUM_IRQS; i++) {
 | 
				
			||||||
        gsi_state->i8259_irq[i] = i8259[i];
 | 
					        gsi_state->i8259_irq[i] = i8259[i];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        ioapic_init_gsi(gsi_state, "q35");
 | 
					        ioapic_init_gsi(gsi_state, "q35");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -272,7 +261,7 @@ static void pc_q35_init(MachineState *machine)
 | 
				
			|||||||
    /* the rest devices to which pci devfn is automatically assigned */
 | 
					    /* the rest devices to which pci devfn is automatically assigned */
 | 
				
			||||||
    pc_vga_init(isa_bus, host_bus);
 | 
					    pc_vga_init(isa_bus, host_bus);
 | 
				
			||||||
    pc_nic_init(isa_bus, host_bus);
 | 
					    pc_nic_init(isa_bus, host_bus);
 | 
				
			||||||
    if (pci_enabled) {
 | 
					    if (pcmc->pci_enabled) {
 | 
				
			||||||
        pc_pci_device_init(host_bus);
 | 
					        pc_pci_device_init(host_bus);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -298,7 +287,6 @@ static void pc_compat_2_3(MachineState *machine)
 | 
				
			|||||||
static void pc_compat_2_2(MachineState *machine)
 | 
					static void pc_compat_2_2(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_2_3(machine);
 | 
					    pc_compat_2_3(machine);
 | 
				
			||||||
    rsdp_in_ram = false;
 | 
					 | 
				
			||||||
    machine->suppress_vmdesc = true;
 | 
					    machine->suppress_vmdesc = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -308,23 +296,18 @@ static void pc_compat_2_1(MachineState *machine)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    pc_compat_2_2(machine);
 | 
					    pc_compat_2_2(machine);
 | 
				
			||||||
    pcms->enforce_aligned_dimm = false;
 | 
					    pcms->enforce_aligned_dimm = false;
 | 
				
			||||||
    smbios_uuid_encoded = false;
 | 
					 | 
				
			||||||
    x86_cpu_change_kvm_default("svm", NULL);
 | 
					    x86_cpu_change_kvm_default("svm", NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_compat_2_0(MachineState *machine)
 | 
					static void pc_compat_2_0(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_2_1(machine);
 | 
					    pc_compat_2_1(machine);
 | 
				
			||||||
    smbios_legacy_mode = true;
 | 
					 | 
				
			||||||
    has_reserved_memory = false;
 | 
					 | 
				
			||||||
    pc_set_legacy_acpi_data_size();
 | 
					    pc_set_legacy_acpi_data_size();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_compat_1_7(MachineState *machine)
 | 
					static void pc_compat_1_7(MachineState *machine)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_2_0(machine);
 | 
					    pc_compat_2_0(machine);
 | 
				
			||||||
    smbios_defaults = false;
 | 
					 | 
				
			||||||
    gigabyte_align = false;
 | 
					 | 
				
			||||||
    option_rom_has_mr = true;
 | 
					    option_rom_has_mr = true;
 | 
				
			||||||
    x86_cpu_change_kvm_default("x2apic", NULL);
 | 
					    x86_cpu_change_kvm_default("x2apic", NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -333,7 +316,6 @@ static void pc_compat_1_6(MachineState *machine)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    pc_compat_1_7(machine);
 | 
					    pc_compat_1_7(machine);
 | 
				
			||||||
    rom_file_has_mr = false;
 | 
					    rom_file_has_mr = false;
 | 
				
			||||||
    has_acpi_build = false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void pc_compat_1_5(MachineState *machine)
 | 
					static void pc_compat_1_5(MachineState *machine)
 | 
				
			||||||
@ -409,9 +391,11 @@ DEFINE_Q35_MACHINE(v2_3, "pc-q35-2.3", pc_compat_2_3,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_q35_2_2_machine_options(MachineClass *m)
 | 
					static void pc_q35_2_2_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_q35_2_3_machine_options(m);
 | 
					    pc_q35_2_3_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.2.0";
 | 
					    m->hw_version = "2.2.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_2);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_2);
 | 
				
			||||||
 | 
					    pcmc->rsdp_in_ram = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_Q35_MACHINE(v2_2, "pc-q35-2.2", pc_compat_2_2,
 | 
					DEFINE_Q35_MACHINE(v2_2, "pc-q35-2.2", pc_compat_2_2,
 | 
				
			||||||
@ -420,10 +404,12 @@ DEFINE_Q35_MACHINE(v2_2, "pc-q35-2.2", pc_compat_2_2,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_q35_2_1_machine_options(MachineClass *m)
 | 
					static void pc_q35_2_1_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_q35_2_2_machine_options(m);
 | 
					    pc_q35_2_2_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.1.0";
 | 
					    m->hw_version = "2.1.0";
 | 
				
			||||||
    m->default_display = NULL;
 | 
					    m->default_display = NULL;
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_1);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_1);
 | 
				
			||||||
 | 
					    pcmc->smbios_uuid_encoded = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_Q35_MACHINE(v2_1, "pc-q35-2.1", pc_compat_2_1,
 | 
					DEFINE_Q35_MACHINE(v2_1, "pc-q35-2.1", pc_compat_2_1,
 | 
				
			||||||
@ -432,9 +418,12 @@ DEFINE_Q35_MACHINE(v2_1, "pc-q35-2.1", pc_compat_2_1,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_q35_2_0_machine_options(MachineClass *m)
 | 
					static void pc_q35_2_0_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_q35_2_1_machine_options(m);
 | 
					    pc_q35_2_1_machine_options(m);
 | 
				
			||||||
    m->hw_version = "2.0.0";
 | 
					    m->hw_version = "2.0.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_2_0);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_2_0);
 | 
				
			||||||
 | 
					    pcmc->has_reserved_memory = false;
 | 
				
			||||||
 | 
					    pcmc->smbios_legacy_mode = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_Q35_MACHINE(v2_0, "pc-q35-2.0", pc_compat_2_0,
 | 
					DEFINE_Q35_MACHINE(v2_0, "pc-q35-2.0", pc_compat_2_0,
 | 
				
			||||||
@ -443,10 +432,13 @@ DEFINE_Q35_MACHINE(v2_0, "pc-q35-2.0", pc_compat_2_0,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_q35_1_7_machine_options(MachineClass *m)
 | 
					static void pc_q35_1_7_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_q35_2_0_machine_options(m);
 | 
					    pc_q35_2_0_machine_options(m);
 | 
				
			||||||
    m->hw_version = "1.7.0";
 | 
					    m->hw_version = "1.7.0";
 | 
				
			||||||
    m->default_machine_opts = NULL;
 | 
					    m->default_machine_opts = NULL;
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_1_7);
 | 
				
			||||||
 | 
					    pcmc->smbios_defaults = false;
 | 
				
			||||||
 | 
					    pcmc->gigabyte_align = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_Q35_MACHINE(v1_7, "pc-q35-1.7", pc_compat_1_7,
 | 
					DEFINE_Q35_MACHINE(v1_7, "pc-q35-1.7", pc_compat_1_7,
 | 
				
			||||||
@ -455,9 +447,11 @@ DEFINE_Q35_MACHINE(v1_7, "pc-q35-1.7", pc_compat_1_7,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void pc_q35_1_6_machine_options(MachineClass *m)
 | 
					static void pc_q35_1_6_machine_options(MachineClass *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
 | 
				
			||||||
    pc_q35_machine_options(m);
 | 
					    pc_q35_machine_options(m);
 | 
				
			||||||
    m->hw_version = "1.6.0";
 | 
					    m->hw_version = "1.6.0";
 | 
				
			||||||
    SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
 | 
					    SET_MACHINE_COMPAT(m, PC_COMPAT_1_6);
 | 
				
			||||||
 | 
					    pcmc->has_acpi_build = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFINE_Q35_MACHINE(v1_6, "pc-q35-1.6", pc_compat_1_6,
 | 
					DEFINE_Q35_MACHINE(v1_6, "pc-q35-1.6", pc_compat_1_6,
 | 
				
			||||||
 | 
				
			|||||||
@ -75,6 +75,20 @@ struct PCMachineClass {
 | 
				
			|||||||
    bool broken_reserved_end;
 | 
					    bool broken_reserved_end;
 | 
				
			||||||
    HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
 | 
					    HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
 | 
				
			||||||
                                           DeviceState *dev);
 | 
					                                           DeviceState *dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool pci_enabled;
 | 
				
			||||||
 | 
					    bool has_acpi_build;
 | 
				
			||||||
 | 
					    bool rsdp_in_ram;
 | 
				
			||||||
 | 
					    bool smbios_defaults;
 | 
				
			||||||
 | 
					    bool smbios_legacy_mode;
 | 
				
			||||||
 | 
					    bool smbios_uuid_encoded;
 | 
				
			||||||
 | 
					    /* Make sure that guest addresses aligned at 1Gbyte boundaries get
 | 
				
			||||||
 | 
					     * mapped to host addresses aligned at 1Gbyte boundaries.  This way
 | 
				
			||||||
 | 
					     * we can use 1GByte pages in the host.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    bool gigabyte_align;
 | 
				
			||||||
 | 
					    bool has_reserved_memory;
 | 
				
			||||||
 | 
					    bool kvmclock_enabled;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TYPE_PC_MACHINE "generic-pc-machine"
 | 
					#define TYPE_PC_MACHINE "generic-pc-machine"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user