|
|
26ba25 |
From 6f781f8512bbc6ae19184c8e26c96c48ffa31d93 Mon Sep 17 00:00:00 2001
|
|
|
26ba25 |
From: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
Date: Sun, 14 Dec 2014 18:32:18 +0100
|
|
|
26ba25 |
Subject: Add RHEL 7 machine types
|
|
|
26ba25 |
|
|
|
26ba25 |
This commit adds all changes related to machine types applied since
|
|
|
26ba25 |
qemu-kvm-rhev-2.1.2-16.el7.
|
|
|
26ba25 |
|
|
|
26ba25 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
--
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes for RHEL-8 (2.12.0):
|
|
|
26ba25 |
- replace has_dynamic_sysbus with list of dynamic devices (upstream)
|
|
|
26ba25 |
- Changed force_rev1_fadt handling
|
|
|
26ba25 |
- Added default nic to machine options for pc_piix and pc_q35
|
|
|
26ba25 |
- Disabled m48t59-test for ppc64
|
|
|
26ba25 |
- Disabled unsupported machine types in boot-serial-test
|
|
|
26ba25 |
- Disabled pseries-rhel7.2.0 machine type for cpu-plug-test
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes for RHEL-8 (2.11.0):
|
|
|
26ba25 |
- Removed references to rhel6 rom files (virtio.rom, pcnet, rtl3193,
|
|
|
26ba25 |
net2k_pci e1000)
|
|
|
26ba25 |
- Removed CONFIG_RHV usage from hw/ppc/spapr.c
|
|
|
26ba25 |
- Removed x-write-pointer-available property from compat.h
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.11.0):
|
|
|
26ba25 |
- Return type for VMStateDescription.pre_save changed (upstream)
|
|
|
26ba25 |
- Use default_cpu_type instead of tcg_default_cpu for sPAPRMachineClass
|
|
|
26ba25 |
- Use virt_get_default_cpu_node_id in arm rhel machine type
|
|
|
26ba25 |
- Set default_cpu_type to cortex-a57
|
|
|
26ba25 |
- Disable options for arm boards instead of object file remove
|
|
|
26ba25 |
- Changed order with device disable commit - removed unnecessary changes
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.10.0):
|
|
|
26ba25 |
- Commented out new unused functions in hw/arm/virt.c
|
|
|
26ba25 |
- savevm_skip_section_footers changed to COMPAT variable (upstream)
|
|
|
26ba25 |
- global_state_set_optional changed to COMPAT variable (upstream)
|
|
|
26ba25 |
- savevm_skip_configuration changed to COMPAT variable (upstream)
|
|
|
26ba25 |
- move shadow_bios() to separate module with stub version available
|
|
|
26ba25 |
- set possible_cpu_arch_ids and cpu_index_to_instance_props fields for arm machine type
|
|
|
26ba25 |
- Re-enable older machine types for ppc64
|
|
|
26ba25 |
- Commented 7.2 rebase error for compat qemu-extended-regs
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.9.0):
|
|
|
26ba25 |
- new header file for arm (upstream)
|
|
|
26ba25 |
- query_hotpluggable_cpus renamed to has_hotpluggable_cpus (upstream)
|
|
|
26ba25 |
- replace MAX_CPUMASK_BITS with max_cpus
|
|
|
26ba25 |
- Adding rhel6-e1000.rom moved to Initial redhat commit
|
|
|
26ba25 |
- Fixed conflict on cirrus_vga.c
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.8.0):
|
|
|
26ba25 |
- new "m->max_cpus = 288" in pc_q35_machine_options hw/i386/pc_q35.c
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.7.0):
|
|
|
26ba25 |
- Additional fsl-imx6.o sabrelito.o files in arm hw dir
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.6.0):
|
|
|
26ba25 |
- Changes in handling of some compat properties
|
|
|
26ba25 |
- Fixes in x86_64 copmat models
|
|
|
26ba25 |
- Added required devices for aarch64
|
|
|
26ba25 |
- Fixes for ppc machine types
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.5.0):
|
|
|
26ba25 |
- changed cpu defaults structure
|
|
|
26ba25 |
- chnaged cpu compat properties handling
|
|
|
26ba25 |
- added fix for arm machine type
|
|
|
26ba25 |
|
|
|
26ba25 |
Rebase notes (2.4.0)
|
|
|
26ba25 |
- Moved needed attribute (due to 5cd8cadae8db905afcbf877cae568c27d1d55a8a)
|
|
|
26ba25 |
- Fixes to machine types changes
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.12.0):
|
|
|
26ba25 |
- 402de2c redhat: Define the pseries-rhel7.5-sxxm machine type
|
|
|
26ba25 |
- a232ba5 redhat: Define the pseries-rhel7.4-sxxm machine type
|
|
|
26ba25 |
- 54f90c2 redhat: Define the pseries-rhel7.3-sxxm machine type
|
|
|
26ba25 |
- 3fe3c44 Disable GeForce quirks in vfio-pci for RHEL machines
|
|
|
26ba25 |
- 4780659 target-i386: cpu: add new CPU models for indirect branch predictor restrictions
|
|
|
26ba25 |
- d486f00 hw/ppc/spapr_caps: Rework spapr_caps to use uint8 internal representation
|
|
|
26ba25 |
- cc06449 spapr: Handle Decimal Floating Point (DFP) as an optional capability
|
|
|
26ba25 |
- 64ef8ed spapr: Handle VMX/VSX presence as an spapr capability flag
|
|
|
26ba25 |
- acad5a1 spapr: Treat Hardware Transactional Memory (HTM) as an optional capability
|
|
|
26ba25 |
- b1163e4 serial: always transmit send/receive buffers on migration
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.11.0):
|
|
|
26ba25 |
- 58702e8dbb redhat: fix HW_COMPAT_RHEL7_3
|
|
|
26ba25 |
- ea157600da redhat: define HW_COMPAT_RHEL7_4
|
|
|
26ba25 |
- 86ef5cd189 redhat: define pseries-rhel7.5.0 machine type
|
|
|
26ba25 |
- d8bf28e9ec qemu-kvm-ma: define only pseries-rhel7.5.0 machine type for -ma
|
|
|
26ba25 |
- 9b07271835 Create x86 7.5.0 machine types
|
|
|
26ba25 |
- e63d707db9 acpi: Force rev1 FADT on old q35 machine types
|
|
|
26ba25 |
- c091cd7a1b pc: make pc_rom RO only on new machine types
|
|
|
26ba25 |
- 082bd3ba3d arm/virt: Add RHEL 7.5 machine typei
|
|
|
26ba25 |
- 8663586f2b qemu-kvm-rhev: only allows pseries-rhel7.5.0 machine type with POWER9 guest
|
|
|
26ba25 |
- 229441f111 machine compat: pci_bridge/shpc always enable
|
|
|
26ba25 |
- 917c9e7df7 pcie_root_port: Fix x-migrate-msix compat
|
|
|
26ba25 |
- b0c0614041 q35: Fix mismerge
|
|
|
26ba25 |
- 888e98c6d6 hw/pci-host: Fix x86 Host Bridges 64bit PCI hole (partial)
|
|
|
26ba25 |
- b2f9f4fcaa i386/cpu/hyperv: support over 64 vcpus for windows guests (partial)
|
|
|
26ba25 |
- cc306393d7 migcompat/e1000e: Work around 7.3 msi/intr_state field
|
|
|
26ba25 |
- c4753f76a3 migcompat/rtl8139: Work around version bump
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.10.0)
|
|
|
26ba25 |
- 5090ba1 Fix qemu-kvm does not quit when booting guest w/ 241 vcpus and "-no-kvm"
|
|
|
26ba25 |
- 3c52050 x86: bump maximum vcpu count of pc-q35-rhel7.4.0 to 288
|
|
|
26ba25 |
- 0ed92ca x86: Work around SMI breakages
|
|
|
26ba25 |
- f7b5a7f spapr: update SPAPR_COMPAT_RHEL7_3
|
|
|
26ba25 |
- 04faf4d migration: update HW_COMPAT_RHEL7_3
|
|
|
26ba25 |
- 9982768 x86: bump maximum vcpu count of pc-q35-rhel7.4.0 to 384
|
|
|
26ba25 |
- f5095ba re-enable DMA for 7.3 machine type
|
|
|
26ba25 |
- d6ec65d x86 machine compat: 2.9 stragglers
|
|
|
26ba25 |
- eda659a disable linuxboot_dma.bin option rom for 7.3 machine types
|
|
|
26ba25 |
- 8c122a5 Revert "hw/pci: disable pci-bridge's shpc by default" (partial)
|
|
|
26ba25 |
- 627adfa virtio_net: Bypass backends for MTU feature negotiation (partial)
|
|
|
26ba25 |
- b430787 pc: Use "min[x]level" on compat_props on RHEL machine-types
|
|
|
26ba25 |
- 8c3f45a AArch64: remove mach-virt-7.3 machine type
|
|
|
26ba25 |
- d5df1ef Downstream: Update pseries machine types for RHEL-ALT-7.4
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.9.0)
|
|
|
26ba25 |
- 8475d69 hw/arm/virt: Disable virtio-net-pci option ROM file loading
|
|
|
26ba25 |
- 73fe1f6 Workaround rhel6 ctrl_guest_offloads machine type mismatch
|
|
|
26ba25 |
- 21d32ca pc_piix: fix compat props typo for RHEL6 machine types
|
|
|
26ba25 |
- 55a5002 compat: define HW_COMPAT_RHEL7_3
|
|
|
26ba25 |
- 1b8e927 spapr: define pseries-rhel7.4.0 machine type
|
|
|
26ba25 |
- cdb76ec hw/arm/virt: remove aarch64 rhel machine type
|
|
|
26ba25 |
- 7dfa88b hw/arm/virt: create virt-rhel7.3.0 machine type
|
|
|
26ba25 |
- 6894f91 hw/arm/virt: create virt-rhel7.4.0 machine type
|
|
|
26ba25 |
- a9d2d39 x86: Split out options for the head rhel7 machine types
|
|
|
26ba25 |
- fdafbdc x86: Create PC_RHEL7_3_COMPAT definition
|
|
|
26ba25 |
- 3427c72 x86: Define pc-i440fx-rhel7.4.0
|
|
|
26ba25 |
- aea20ab x86: Define pc-q35-rhel7.4.0
|
|
|
26ba25 |
- 0185c0f x86: Remove downstream opteron rdtscp override
|
|
|
26ba25 |
- 6b51073 fix abort in acpi_setup() since 2.8 with rhel6 machine types
|
|
|
26ba25 |
- 954fc0d intel-hda: fix rhel6 compat property
|
|
|
26ba25 |
- 1b57274 kvmclock: reduce kvmclock difference on migration (rhel only part)
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.8.0)
|
|
|
26ba25 |
- a1da2f0 virtio-pci: reduce modern_mem_bar size (rhel only part)
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.7.0):
|
|
|
26ba25 |
- fe9d1cf pc: Use right HW_COMPAT_* macros at PC_RHEL7* compat macros
|
|
|
26ba25 |
- 3938189 compat: Add missing "any_layout" in HW_COMPAT_RHEL7_1
|
|
|
26ba25 |
- 6dffc9d spapr: update RHEL-7.2 machine type
|
|
|
26ba25 |
- c5d5910 migration: fix HW_COMPAT_RHEL7_2
|
|
|
26ba25 |
- 2da9bb8 pc: New (default) pc-i440fx-rhel7.3.0 machine-type
|
|
|
26ba25 |
- 0520d7e 7.3 mismerge fix: Fix ich9-intel-hda compatibility
|
|
|
26ba25 |
- 89528b3 PC migration compat: Section footers/global state
|
|
|
26ba25 |
- 2231e35 fw_cfg for 7.2 compatibility
|
|
|
26ba25 |
- b8a3ade pc: Create new pc-q35-rhel7.3.0 machine-type
|
|
|
26ba25 |
- 340929b q35: Remove 7.0, 7.1, 7.2 machine types
|
|
|
26ba25 |
- bb7fc95 machine types: fix pc_machine_*_options chain
|
|
|
26ba25 |
- d9fa9aa Fix rhel6 rom file
|
|
|
26ba25 |
- dc39363 fix vga type for older machines
|
|
|
26ba25 |
- 255a2d1 7.2 machine type compatibility
|
|
|
26ba25 |
- 16c3d25 target-i386: Remove SSE4a from qemu64 CPU model (rhel only part)
|
|
|
26ba25 |
- 76a1796 target-i386: Remove ABM from qemu64 CPU model (rhel only part)
|
|
|
26ba25 |
- a9f8773 pc: Recover PC_RHEL7_1_COMPAT from RHEL-7.2 code
|
|
|
26ba25 |
- 7a6ed67 pc: Include missing PC_COMPAT_2_3 entries in PC_RHEL7_2_COMPAT
|
|
|
26ba25 |
- 07428f6 Revert "static checker: e1000-82540em got aliased to e1000"
|
|
|
26ba25 |
- 446cf1f Revert "e1000: use alias for default model"
|
|
|
26ba25 |
- 615096e 7.x compat: e1000-82540em
|
|
|
26ba25 |
- 0855905 hw/arm/virt: kill 7.2 machine type
|
|
|
26ba25 |
- 18bbea2 usbredir: turn off streams for rhel7.2 & older
|
|
|
26ba25 |
- 910cf4a target-i386: Fill high bits of mtrr mask (rhel only part)
|
|
|
26ba25 |
- 0e8ab1b target-i386: Enable host-phys-bits on RHEL
|
|
|
26ba25 |
- 8c5f8a5 pc: Fix rhel6.3.0 compat_props setting
|
|
|
26ba25 |
- 8f869f1 pc: use new CPU hotplug interface since 2.7 machine type (rhel only part)
|
|
|
26ba25 |
- d9d646f machine: add properties to compat_props incrementaly (rhel only part)
|
|
|
26ba25 |
- acb18fd apic: Use apic_id as apic's migration instance_id (rhel only part)
|
|
|
26ba25 |
- c7e37d4 apic: fix broken migration for kvm-apic (rhel only part)
|
|
|
26ba25 |
- eca64aee hw/virtio-pci: fix virtio behaviour
|
|
|
26ba25 |
- c56b8F6e pc-rhel-7.2: pcie: fix link active status bit migration
|
|
|
26ba25 |
- 5522aa3 q35-rhel: allow dynamic sysbus
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.6.0):
|
|
|
26ba25 |
- f915d7f arm: virt: Add an abstract RHEL ARM virt machine type
|
|
|
26ba25 |
- deffcc0 arm: virt: Add RHEL 7.3.0 virt machine type
|
|
|
26ba25 |
- 04ca07d arm: virt: Consolidate the naming of RHEL virt machine types
|
|
|
26ba25 |
- 2856ce2 Define HW_COMPAT_RHEL7_2
|
|
|
26ba25 |
- 1869242 spapr: move pseries-2.5 machine to RHEL disabled machine zone
|
|
|
26ba25 |
- cc59ce7 spapr: add RHEL-7.3 machine type
|
|
|
26ba25 |
- 98549c5 pc: Fix property names on CPU compat code
|
|
|
26ba25 |
- caa47bb Fix ich9-intel-hda compatibility
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.3.0):
|
|
|
26ba25 |
- bb4e53c2 pc: add rhel6.6.0 machine type
|
|
|
26ba25 |
- 129a2b3 Downstream-only: Restore "pseries" machine alias
|
|
|
26ba25 |
|
|
|
26ba25 |
Merged patches (2.4.0):
|
|
|
26ba25 |
- 8e8107c numa: Don't allow memdev= on RHEL-6 machine-types
|
|
|
26ba25 |
- 8b220c0 pc_sysfw: prevent pflash and/or mis-sized firmware for rhel6.x.0 machtypes
|
|
|
26ba25 |
- 9dba3a5 Add pc-i440fx-rhel7.2.0 machine type
|
|
|
26ba25 |
- 1c88ffa Add pc-q35-rhel7.2.0 machine type
|
|
|
26ba25 |
- 6f74d0c Downstream-only: Add rhel7.2.0 machine type
|
|
|
26ba25 |
- a7d6105 Add flag for pre-2.2 migration compatibility
|
|
|
26ba25 |
- 17f9a18 Serial: Migration compatibility pre 2.2/7.2
|
|
|
26ba25 |
- 3799a57 Migration compat for mc146818rtc/irq_reinject_on_ack_count subsection
|
|
|
26ba25 |
- 5668cc1 Fix reported machine type
|
|
|
26ba25 |
- 2417534 386: drop FDC in pc-q35-rhel7.2.0 if neither it nor fl. drives are anted
|
|
|
26ba25 |
- f42eee5 global_state: Make section optional
|
|
|
26ba25 |
- 8640f84 migration: Add configuration section
|
|
|
26ba25 |
- 48c857b pc: memhotplug: fix incorrectly set reserved-memory-end
|
|
|
26ba25 |
- f33f0b6 pc: memhotplug: keep reserved-memory-end broken on rhel71 and earlier machines
|
|
|
26ba25 |
|
|
|
26ba25 |
(cherry picked from commit 44f7e7595c416686a00015e317e74183037a8136)
|
|
|
26ba25 |
|
|
|
26ba25 |
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
26ba25 |
Message-id: <20180111135644.16253-1-pbonzini@redhat.com>
|
|
|
26ba25 |
Patchwork-id: 78551
|
|
|
26ba25 |
O-Subject: [RHEL7.5 qemu-kvm-rhev PATCH v2] serial: always transmit send/receive buffers on migration
|
|
|
26ba25 |
Bugzilla: 1459945
|
|
|
26ba25 |
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
When subsections were added in qemu 2.3, they were all disabled
|
|
|
26ba25 |
for machine types that require pre-2.3 compatibility. The commit
|
|
|
26ba25 |
message says "disabling these subsections on older machine types should
|
|
|
26ba25 |
leave it no worse than existing qemu", but actually migrating from
|
|
|
26ba25 |
new QEMU to new QEMU (but with old machine type) will detect an
|
|
|
26ba25 |
inconsistent migration state and fail the migration:
|
|
|
26ba25 |
|
|
|
26ba25 |
qemu-system-x86_64: inconsistent state in serial device (tsr not empty, tsr_retry=0
|
|
|
26ba25 |
qemu-system-x86_64: Failed to load serial:state
|
|
|
26ba25 |
qemu-system-x86_64: error while loading state for instance 0x0 of device 'serial'
|
|
|
26ba25 |
|
|
|
26ba25 |
In fact, this shows that migration from new source to old destination
|
|
|
26ba25 |
might have also eaten the data in the FIFO or transmit/receive buffers.
|
|
|
26ba25 |
|
|
|
26ba25 |
It's actually pretty easy to trigger the failure by connecting a console
|
|
|
26ba25 |
to a hung-up reader (not a *disconnected* reader!). The fix is to
|
|
|
26ba25 |
handle the subsections the same as we did in the qemu-kvm BZ1452067.
|
|
|
26ba25 |
The data registers are migrated, which may indeed cause some more migrations
|
|
|
26ba25 |
to fail to old qemu-kvm-rhev, but it will fix migration to new qemu-kvm-rhev.
|
|
|
26ba25 |
Some subsections are still keyed on migrate_pre_2_2; from the commit message
|
|
|
26ba25 |
of downstream commit 7d2e8f9662feb64c0b15b6fd53e06e3c56921f27:
|
|
|
26ba25 |
|
|
|
26ba25 |
thr_ipending can be reconstructed fairly
|
|
|
26ba25 |
reliably by serial_post_load. The others are features that are
|
|
|
26ba25 |
unlikely to be used in RHEL, respectively receive timeout (Linux
|
|
|
26ba25 |
does not even have the UART_IIR_CTI symbol in the driver) and
|
|
|
26ba25 |
physical serial ports connected to a modem
|
|
|
26ba25 |
|
|
|
26ba25 |
I consider this okay because nobody has yet complained about it for
|
|
|
26ba25 |
qemu-kvm. It's also safer because the failure avoids serial data loss
|
|
|
26ba25 |
on migration. This is consistent with the intended use of subsections.
|
|
|
26ba25 |
|
|
|
26ba25 |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
(cherry picked from commit 10564d0bb819113f925e32b989b24fb26dca45ef)
|
|
|
26ba25 |
(cherry picked from commit 9e1104c955c05c7b850cda3a02f69bf3e931c765)
|
|
|
26ba25 |
---
|
|
|
26ba25 |
hw/acpi/ich9.c | 16 +
|
|
|
26ba25 |
hw/acpi/piix4.c | 6 +-
|
|
|
26ba25 |
hw/arm/virt.c | 121 +++++-
|
|
|
26ba25 |
hw/char/serial.c | 16 +
|
|
|
26ba25 |
hw/display/cirrus_vga.c | 4 +-
|
|
|
26ba25 |
hw/display/vga-isa.c | 2 +-
|
|
|
26ba25 |
hw/i386/Makefile.objs | 1 +
|
|
|
26ba25 |
hw/i386/acpi-build.c | 3 +
|
|
|
26ba25 |
hw/i386/pc.c | 7 +-
|
|
|
26ba25 |
hw/i386/pc_piix.c | 872 +++++++++++++++++++++++++++++++++++++-
|
|
|
26ba25 |
hw/i386/pc_q35.c | 74 +++-
|
|
|
26ba25 |
hw/i386/pc_sysfw.c | 16 +
|
|
|
26ba25 |
hw/i386/shadow-bios.c | 64 +++
|
|
|
26ba25 |
hw/net/e1000.c | 18 +-
|
|
|
26ba25 |
hw/net/e1000e.c | 21 +
|
|
|
26ba25 |
hw/net/rtl8139.c | 4 +-
|
|
|
26ba25 |
hw/ppc/spapr.c | 208 +++++++++
|
|
|
26ba25 |
hw/ppc/spapr_cpu_core.c | 13 +
|
|
|
26ba25 |
hw/s390x/s390-virtio-ccw.c | 17 +-
|
|
|
26ba25 |
hw/smbios/smbios.c | 1 +
|
|
|
26ba25 |
hw/timer/i8254_common.c | 2 +-
|
|
|
26ba25 |
hw/timer/mc146818rtc.c | 6 +
|
|
|
26ba25 |
hw/usb/hcd-uhci.c | 15 +-
|
|
|
26ba25 |
hw/usb/hcd-xhci.c | 20 +
|
|
|
26ba25 |
hw/usb/hcd-xhci.h | 2 +
|
|
|
26ba25 |
hw/virtio/virtio.c | 22 +-
|
|
|
26ba25 |
include/hw/acpi/ich9.h | 3 +
|
|
|
26ba25 |
include/hw/arm/virt.h | 22 +
|
|
|
26ba25 |
include/hw/compat.h | 191 +++++++++
|
|
|
26ba25 |
include/hw/i386/pc.h | 554 ++++++++++++++++++++++++
|
|
|
26ba25 |
include/hw/ppc/spapr.h | 1 +
|
|
|
26ba25 |
include/hw/usb.h | 7 +
|
|
|
26ba25 |
include/hw/virtio/virtio.h | 1 +
|
|
|
26ba25 |
include/sysemu/sysemu.h | 2 +
|
|
|
26ba25 |
migration/migration.c | 2 +
|
|
|
26ba25 |
migration/migration.h | 5 +
|
|
|
26ba25 |
migration/savevm.c | 9 +
|
|
|
26ba25 |
numa.c | 13 +
|
|
|
26ba25 |
qdev-monitor.c | 1 -
|
|
|
26ba25 |
scripts/vmstate-static-checker.py | 1 -
|
|
|
26ba25 |
stubs/Makefile.objs | 1 +
|
|
|
26ba25 |
stubs/shadow-bios.c | 7 +
|
|
|
26ba25 |
target/i386/cpu.c | 9 +-
|
|
|
26ba25 |
target/i386/machine.c | 21 +
|
|
|
26ba25 |
target/ppc/compat.c | 11 +
|
|
|
26ba25 |
target/ppc/cpu.h | 1 +
|
|
|
26ba25 |
tests/Makefile.include | 8 +-
|
|
|
26ba25 |
tests/cpu-plug-test.c | 3 +-
|
|
|
26ba25 |
48 files changed, 2397 insertions(+), 27 deletions(-)
|
|
|
26ba25 |
create mode 100644 hw/i386/shadow-bios.c
|
|
|
26ba25 |
create mode 100644 stubs/shadow-bios.c
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
|
|
|
26ba25 |
index a4e87b8..23a7baa 100644
|
|
|
26ba25 |
--- a/hw/acpi/ich9.c
|
|
|
26ba25 |
+++ b/hw/acpi/ich9.c
|
|
|
26ba25 |
@@ -441,6 +441,18 @@ static void ich9_pm_set_enable_tco(Object *obj, bool value, Error **errp)
|
|
|
26ba25 |
s->pm.enable_tco = value;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+static bool ich9_pm_get_force_rev1_fadt(Object *obj, Error **errp)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
|
|
|
26ba25 |
+ return s->pm.force_rev1_fadt;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void ich9_pm_set_force_rev1_fadt(Object *obj, bool value, Error **errp)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
|
|
|
26ba25 |
+ s->pm.force_rev1_fadt = value;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN;
|
|
|
26ba25 |
@@ -465,6 +477,10 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp)
|
|
|
26ba25 |
ich9_pm_get_cpu_hotplug_legacy,
|
|
|
26ba25 |
ich9_pm_set_cpu_hotplug_legacy,
|
|
|
26ba25 |
NULL);
|
|
|
26ba25 |
+ object_property_add_bool(obj, "__com.redhat_force-rev1-fadt",
|
|
|
26ba25 |
+ ich9_pm_get_force_rev1_fadt,
|
|
|
26ba25 |
+ ich9_pm_set_force_rev1_fadt,
|
|
|
26ba25 |
+ NULL);
|
|
|
26ba25 |
object_property_add(obj, ACPI_PM_PROP_S3_DISABLED, "uint8",
|
|
|
26ba25 |
ich9_pm_get_disable_s3,
|
|
|
26ba25 |
ich9_pm_set_disable_s3,
|
|
|
26ba25 |
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
|
|
|
26ba25 |
index 8b70345..d706360 100644
|
|
|
26ba25 |
--- a/hw/acpi/piix4.c
|
|
|
26ba25 |
+++ b/hw/acpi/piix4.c
|
|
|
26ba25 |
@@ -311,7 +311,7 @@ static const VMStateDescription vmstate_cpuhp_state = {
|
|
|
26ba25 |
static const VMStateDescription vmstate_acpi = {
|
|
|
26ba25 |
.name = "piix4_pm",
|
|
|
26ba25 |
.version_id = 3,
|
|
|
26ba25 |
- .minimum_version_id = 3,
|
|
|
26ba25 |
+ .minimum_version_id = 2,
|
|
|
26ba25 |
.minimum_version_id_old = 1,
|
|
|
26ba25 |
.load_state_old = acpi_load_old,
|
|
|
26ba25 |
.post_load = vmstate_acpi_post_load,
|
|
|
26ba25 |
@@ -671,8 +671,8 @@ static void piix4_send_gpe(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property piix4_pm_properties[] = {
|
|
|
26ba25 |
DEFINE_PROP_UINT32("smb_io_base", PIIX4PMState, smb_io_base, 0),
|
|
|
26ba25 |
- DEFINE_PROP_UINT8(ACPI_PM_PROP_S3_DISABLED, PIIX4PMState, disable_s3, 0),
|
|
|
26ba25 |
- DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_DISABLED, PIIX4PMState, disable_s4, 0),
|
|
|
26ba25 |
+ DEFINE_PROP_UINT8(ACPI_PM_PROP_S3_DISABLED, PIIX4PMState, disable_s3, 1),
|
|
|
26ba25 |
+ DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_DISABLED, PIIX4PMState, disable_s4, 1),
|
|
|
26ba25 |
DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_VAL, PIIX4PMState, s4_val, 2),
|
|
|
26ba25 |
DEFINE_PROP_BOOL("acpi-pci-hotplug-with-bridge-support", PIIX4PMState,
|
|
|
26ba25 |
use_acpi_pci_hotplug, true),
|
|
|
26ba25 |
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
|
|
|
26ba25 |
index 94dcb12..806eb1e 100644
|
|
|
26ba25 |
--- a/hw/arm/virt.c
|
|
|
26ba25 |
+++ b/hw/arm/virt.c
|
|
|
26ba25 |
@@ -59,6 +59,7 @@
|
|
|
26ba25 |
#include "qapi/visitor.h"
|
|
|
26ba25 |
#include "standard-headers/linux/input.h"
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* disabled Red Hat Enterprise Linux */
|
|
|
26ba25 |
#define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \
|
|
|
26ba25 |
static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
|
|
|
26ba25 |
void *data) \
|
|
|
26ba25 |
@@ -86,7 +87,36 @@
|
|
|
26ba25 |
DEFINE_VIRT_MACHINE_LATEST(major, minor, true)
|
|
|
26ba25 |
#define DEFINE_VIRT_MACHINE(major, minor) \
|
|
|
26ba25 |
DEFINE_VIRT_MACHINE_LATEST(major, minor, false)
|
|
|
26ba25 |
-
|
|
|
26ba25 |
+#endif /* disabled for RHEL */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define DEFINE_RHEL_MACHINE_LATEST(m, n, s, latest) \
|
|
|
26ba25 |
+ static void rhel##m##n##s##_virt_class_init(ObjectClass *oc, \
|
|
|
26ba25 |
+ void *data) \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ MachineClass *mc = MACHINE_CLASS(oc); \
|
|
|
26ba25 |
+ rhel##m##n##s##_virt_options(mc); \
|
|
|
26ba25 |
+ mc->desc = "RHEL " # m "." # n "." # s " ARM Virtual Machine"; \
|
|
|
26ba25 |
+ if (latest) { \
|
|
|
26ba25 |
+ mc->alias = "virt"; \
|
|
|
26ba25 |
+ mc->is_default = 1; \
|
|
|
26ba25 |
+ } \
|
|
|
26ba25 |
+ } \
|
|
|
26ba25 |
+ static const TypeInfo rhel##m##n##s##_machvirt_info = { \
|
|
|
26ba25 |
+ .name = MACHINE_TYPE_NAME("virt-rhel" # m "." # n "." # s), \
|
|
|
26ba25 |
+ .parent = TYPE_RHEL_MACHINE, \
|
|
|
26ba25 |
+ .instance_init = rhel##m##n##s##_virt_instance_init, \
|
|
|
26ba25 |
+ .class_init = rhel##m##n##s##_virt_class_init, \
|
|
|
26ba25 |
+ }; \
|
|
|
26ba25 |
+ static void rhel##m##n##s##_machvirt_init(void) \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ type_register_static(&rhel##m##n##s##_machvirt_info); \
|
|
|
26ba25 |
+ } \
|
|
|
26ba25 |
+ type_init(rhel##m##n##s##_machvirt_init);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define DEFINE_RHEL_MACHINE_AS_LATEST(major, minor, subminor) \
|
|
|
26ba25 |
+ DEFINE_RHEL_MACHINE_LATEST(major, minor, subminor, true)
|
|
|
26ba25 |
+#define DEFINE_RHEL_MACHINE(major, minor, subminor) \
|
|
|
26ba25 |
+ DEFINE_RHEL_MACHINE_LATEST(major, minor, subminor, false)
|
|
|
26ba25 |
|
|
|
26ba25 |
/* Number of external interrupt lines to configure the GIC with */
|
|
|
26ba25 |
#define NUM_IRQS 256
|
|
|
26ba25 |
@@ -1416,6 +1446,7 @@ static void machvirt_init(MachineState *machine)
|
|
|
26ba25 |
create_platform_bus(vms, pic);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* disabled for RHEL */
|
|
|
26ba25 |
static bool virt_get_secure(Object *obj, Error **errp)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
VirtMachineState *vms = VIRT_MACHINE(obj);
|
|
|
26ba25 |
@@ -1444,6 +1475,7 @@ static void virt_set_virt(Object *obj, bool value, Error **errp)
|
|
|
26ba25 |
vms->virt = value;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+#endif /* disabled for RHEL */
|
|
|
26ba25 |
static bool virt_get_highmem(Object *obj, Error **errp)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
VirtMachineState *vms = VIRT_MACHINE(obj);
|
|
|
26ba25 |
@@ -1536,6 +1568,7 @@ static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms)
|
|
|
26ba25 |
return ms->possible_cpus;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* disabled for RHEL */
|
|
|
26ba25 |
static void virt_machine_class_init(ObjectClass *oc, void *data)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
MachineClass *mc = MACHINE_CLASS(oc);
|
|
|
26ba25 |
@@ -1748,3 +1781,89 @@ static void virt_machine_2_6_options(MachineClass *mc)
|
|
|
26ba25 |
vmc->no_pmu = true;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
DEFINE_VIRT_MACHINE(2, 6)
|
|
|
26ba25 |
+#endif /* disabled for RHEL */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void rhel_machine_class_init(ObjectClass *oc, void *data)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ MachineClass *mc = MACHINE_CLASS(oc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ mc->family = "virt-rhel-Z";
|
|
|
26ba25 |
+ mc->init = machvirt_init;
|
|
|
26ba25 |
+ /* Start max_cpus at the maximum QEMU supports. We'll further restrict
|
|
|
26ba25 |
+ * it later in machvirt_init, where we have more information about the
|
|
|
26ba25 |
+ * configuration of the particular instance.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ mc->max_cpus = 255;
|
|
|
26ba25 |
+ mc->block_default_type = IF_VIRTIO;
|
|
|
26ba25 |
+ mc->no_cdrom = 1;
|
|
|
26ba25 |
+ mc->pci_allow_0_address = true;
|
|
|
26ba25 |
+ /* We know we will never create a pre-ARMv7 CPU which needs 1K pages */
|
|
|
26ba25 |
+ mc->minimum_page_bits = 12;
|
|
|
26ba25 |
+ mc->possible_cpu_arch_ids = virt_possible_cpu_arch_ids;
|
|
|
26ba25 |
+ mc->cpu_index_to_instance_props = virt_cpu_index_to_props;
|
|
|
26ba25 |
+ mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a57");
|
|
|
26ba25 |
+ mc->get_default_cpu_node_id = virt_get_default_cpu_node_id;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static const TypeInfo rhel_machine_info = {
|
|
|
26ba25 |
+ .name = TYPE_RHEL_MACHINE,
|
|
|
26ba25 |
+ .parent = TYPE_MACHINE,
|
|
|
26ba25 |
+ .abstract = true,
|
|
|
26ba25 |
+ .instance_size = sizeof(VirtMachineState),
|
|
|
26ba25 |
+ .class_size = sizeof(VirtMachineClass),
|
|
|
26ba25 |
+ .class_init = rhel_machine_class_init,
|
|
|
26ba25 |
+};
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void rhel_machine_init(void)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ type_register_static(&rhel_machine_info);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+type_init(rhel_machine_init);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void rhel750_virt_instance_init(Object *obj)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ VirtMachineState *vms = VIRT_MACHINE(obj);
|
|
|
26ba25 |
+ VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* EL3 is disabled by default and non-configurable for RHEL */
|
|
|
26ba25 |
+ vms->secure = false;
|
|
|
26ba25 |
+ /* EL2 is disabled by default and non-configurable for RHEL */
|
|
|
26ba25 |
+ vms->virt = false;
|
|
|
26ba25 |
+ /* High memory is enabled by default for RHEL */
|
|
|
26ba25 |
+ vms->highmem = true;
|
|
|
26ba25 |
+ object_property_add_bool(obj, "highmem", virt_get_highmem,
|
|
|
26ba25 |
+ virt_set_highmem, NULL);
|
|
|
26ba25 |
+ object_property_set_description(obj, "highmem",
|
|
|
26ba25 |
+ "Set on/off to enable/disable using "
|
|
|
26ba25 |
+ "physical address space above 32 bits",
|
|
|
26ba25 |
+ NULL);
|
|
|
26ba25 |
+ /* Default GIC type is still v2, but became configurable for RHEL */
|
|
|
26ba25 |
+ vms->gic_version = 2;
|
|
|
26ba25 |
+ object_property_add_str(obj, "gic-version", virt_get_gic_version,
|
|
|
26ba25 |
+ virt_set_gic_version, NULL);
|
|
|
26ba25 |
+ object_property_set_description(obj, "gic-version",
|
|
|
26ba25 |
+ "Set GIC version. "
|
|
|
26ba25 |
+ "Valid values are 2, 3 and host", NULL);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ if (vmc->no_its) {
|
|
|
26ba25 |
+ vms->its = false;
|
|
|
26ba25 |
+ } else {
|
|
|
26ba25 |
+ /* Default allows ITS instantiation */
|
|
|
26ba25 |
+ vms->its = true;
|
|
|
26ba25 |
+ object_property_add_bool(obj, "its", virt_get_its,
|
|
|
26ba25 |
+ virt_set_its, NULL);
|
|
|
26ba25 |
+ object_property_set_description(obj, "its",
|
|
|
26ba25 |
+ "Set on/off to enable/disable "
|
|
|
26ba25 |
+ "ITS instantiation",
|
|
|
26ba25 |
+ NULL);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ vms->memmap=a15memmap;
|
|
|
26ba25 |
+ vms->irqmap=a15irqmap;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void rhel750_virt_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(mc, ARM_RHEL_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+DEFINE_RHEL_MACHINE_AS_LATEST(7, 5, 0)
|
|
|
26ba25 |
diff --git a/hw/char/serial.c b/hw/char/serial.c
|
|
|
26ba25 |
index eb72191..d6d9b18 100644
|
|
|
26ba25 |
--- a/hw/char/serial.c
|
|
|
26ba25 |
+++ b/hw/char/serial.c
|
|
|
26ba25 |
@@ -30,6 +30,7 @@
|
|
|
26ba25 |
#include "qemu/timer.h"
|
|
|
26ba25 |
#include "exec/address-spaces.h"
|
|
|
26ba25 |
#include "qemu/error-report.h"
|
|
|
26ba25 |
+#include "migration/migration.h"
|
|
|
26ba25 |
|
|
|
26ba25 |
//#define DEBUG_SERIAL
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -691,6 +692,9 @@ static int serial_post_load(void *opaque, int version_id)
|
|
|
26ba25 |
static bool serial_thr_ipending_needed(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
SerialState *s = opaque;
|
|
|
26ba25 |
+ if (migrate_pre_2_2) {
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
|
|
|
26ba25 |
if (s->ier & UART_IER_THRI) {
|
|
|
26ba25 |
bool expected_value = ((s->iir & UART_IIR_ID) == UART_IIR_THRI);
|
|
|
26ba25 |
@@ -772,6 +776,10 @@ static const VMStateDescription vmstate_serial_xmit_fifo = {
|
|
|
26ba25 |
static bool serial_fifo_timeout_timer_needed(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
SerialState *s = (SerialState *)opaque;
|
|
|
26ba25 |
+ if (migrate_pre_2_2) {
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
return timer_pending(s->fifo_timeout_timer);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -789,6 +797,10 @@ static const VMStateDescription vmstate_serial_fifo_timeout_timer = {
|
|
|
26ba25 |
static bool serial_timeout_ipending_needed(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
SerialState *s = (SerialState *)opaque;
|
|
|
26ba25 |
+ if (migrate_pre_2_2) {
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
return s->timeout_ipending != 0;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -806,6 +818,10 @@ static const VMStateDescription vmstate_serial_timeout_ipending = {
|
|
|
26ba25 |
static bool serial_poll_needed(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
SerialState *s = (SerialState *)opaque;
|
|
|
26ba25 |
+ if (migrate_pre_2_2) {
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
return s->poll_msl >= 0;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
|
|
|
26ba25 |
index d116651..feacb45 100644
|
|
|
26ba25 |
--- a/hw/display/cirrus_vga.c
|
|
|
26ba25 |
+++ b/hw/display/cirrus_vga.c
|
|
|
26ba25 |
@@ -3060,7 +3060,7 @@ static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property isa_cirrus_vga_properties[] = {
|
|
|
26ba25 |
DEFINE_PROP_UINT32("vgamem_mb", struct ISACirrusVGAState,
|
|
|
26ba25 |
- cirrus_vga.vga.vram_size_mb, 4),
|
|
|
26ba25 |
+ cirrus_vga.vga.vram_size_mb, 16),
|
|
|
26ba25 |
DEFINE_PROP_BOOL("blitter", struct ISACirrusVGAState,
|
|
|
26ba25 |
cirrus_vga.enable_blitter, true),
|
|
|
26ba25 |
DEFINE_PROP_END_OF_LIST(),
|
|
|
26ba25 |
@@ -3133,7 +3133,7 @@ static void pci_cirrus_vga_realize(PCIDevice *dev, Error **errp)
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property pci_vga_cirrus_properties[] = {
|
|
|
26ba25 |
DEFINE_PROP_UINT32("vgamem_mb", struct PCICirrusVGAState,
|
|
|
26ba25 |
- cirrus_vga.vga.vram_size_mb, 4),
|
|
|
26ba25 |
+ cirrus_vga.vga.vram_size_mb, 16),
|
|
|
26ba25 |
DEFINE_PROP_BOOL("blitter", struct PCICirrusVGAState,
|
|
|
26ba25 |
cirrus_vga.enable_blitter, true),
|
|
|
26ba25 |
DEFINE_PROP_END_OF_LIST(),
|
|
|
26ba25 |
diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c
|
|
|
26ba25 |
index 469834a..eb44d21 100644
|
|
|
26ba25 |
--- a/hw/display/vga-isa.c
|
|
|
26ba25 |
+++ b/hw/display/vga-isa.c
|
|
|
26ba25 |
@@ -79,7 +79,7 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp)
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property vga_isa_properties[] = {
|
|
|
26ba25 |
- DEFINE_PROP_UINT32("vgamem_mb", ISAVGAState, state.vram_size_mb, 8),
|
|
|
26ba25 |
+ DEFINE_PROP_UINT32("vgamem_mb", ISAVGAState, state.vram_size_mb, 16),
|
|
|
26ba25 |
DEFINE_PROP_END_OF_LIST(),
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
|
|
|
26ba25 |
index fa87a14..8c25538 100644
|
|
|
26ba25 |
--- a/hw/i386/Makefile.objs
|
|
|
26ba25 |
+++ b/hw/i386/Makefile.objs
|
|
|
26ba25 |
@@ -10,3 +10,4 @@ obj-$(CONFIG_VMMOUSE) += vmmouse.o
|
|
|
26ba25 |
|
|
|
26ba25 |
obj-y += kvmvapic.o
|
|
|
26ba25 |
obj-y += acpi-build.o
|
|
|
26ba25 |
+obj-y += shadow-bios.o
|
|
|
26ba25 |
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
|
|
|
26ba25 |
index 3cf2a16..976d151 100644
|
|
|
26ba25 |
--- a/hw/i386/acpi-build.c
|
|
|
26ba25 |
+++ b/hw/i386/acpi-build.c
|
|
|
26ba25 |
@@ -183,6 +183,9 @@ static void acpi_get_pm_info(AcpiPmInfo *pm)
|
|
|
26ba25 |
pm->fadt.reset_reg = r;
|
|
|
26ba25 |
pm->fadt.reset_val = 0xf;
|
|
|
26ba25 |
pm->fadt.flags |= 1 << ACPI_FADT_F_RESET_REG_SUP;
|
|
|
26ba25 |
+ if (object_property_get_bool(lpc,
|
|
|
26ba25 |
+ "__com.redhat_force-rev1-fadt", NULL))
|
|
|
26ba25 |
+ pm->fadt.rev = 1;
|
|
|
26ba25 |
pm->cpu_hp_io_base = ICH9_CPU_HOTPLUG_IO_BASE;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
assert(obj);
|
|
|
26ba25 |
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
|
|
|
26ba25 |
index fdad4bb..6f686c7 100644
|
|
|
26ba25 |
--- a/hw/i386/pc.c
|
|
|
26ba25 |
+++ b/hw/i386/pc.c
|
|
|
26ba25 |
@@ -1417,7 +1417,8 @@ void pc_memory_init(PCMachineState *pcms,
|
|
|
26ba25 |
option_rom_mr = g_malloc(sizeof(*option_rom_mr));
|
|
|
26ba25 |
memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE,
|
|
|
26ba25 |
&error_fatal);
|
|
|
26ba25 |
- if (pcmc->pci_enabled) {
|
|
|
26ba25 |
+ /* RH difference: See bz 1489800, explicitly make ROM ro */
|
|
|
26ba25 |
+ if (pcmc->pc_rom_ro) {
|
|
|
26ba25 |
memory_region_set_readonly(option_rom_mr, true);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
memory_region_add_subregion_overlap(rom_memory,
|
|
|
26ba25 |
@@ -2361,6 +2362,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
|
|
|
26ba25 |
pcmc->acpi_data_size = 0x20000 + 0x8000;
|
|
|
26ba25 |
pcmc->save_tsc_khz = true;
|
|
|
26ba25 |
pcmc->linuxboot_dma_enabled = true;
|
|
|
26ba25 |
+ pcmc->pc_rom_ro = true;
|
|
|
26ba25 |
mc->get_hotplug_handler = pc_get_hotpug_handler;
|
|
|
26ba25 |
mc->cpu_index_to_instance_props = pc_cpu_index_to_props;
|
|
|
26ba25 |
mc->get_default_cpu_node_id = pc_get_default_cpu_node_id;
|
|
|
26ba25 |
@@ -2370,7 +2372,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
|
|
|
26ba25 |
mc->default_boot_order = "cad";
|
|
|
26ba25 |
mc->hot_add_cpu = pc_hot_add_cpu;
|
|
|
26ba25 |
mc->block_default_type = IF_IDE;
|
|
|
26ba25 |
- mc->max_cpus = 255;
|
|
|
26ba25 |
+ /* 240: max CPU count for RHEL */
|
|
|
26ba25 |
+ mc->max_cpus = 240;
|
|
|
26ba25 |
mc->reset = pc_machine_reset;
|
|
|
26ba25 |
hc->pre_plug = pc_machine_device_pre_plug_cb;
|
|
|
26ba25 |
hc->plug = pc_machine_device_plug_cb;
|
|
|
26ba25 |
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
|
|
|
26ba25 |
index 729a050..cc72512 100644
|
|
|
26ba25 |
--- a/hw/i386/pc_piix.c
|
|
|
26ba25 |
+++ b/hw/i386/pc_piix.c
|
|
|
26ba25 |
@@ -48,6 +48,7 @@
|
|
|
26ba25 |
#include "cpu.h"
|
|
|
26ba25 |
#include "qapi/error.h"
|
|
|
26ba25 |
#include "qemu/error-report.h"
|
|
|
26ba25 |
+#include "migration/migration.h"
|
|
|
26ba25 |
#ifdef CONFIG_XEN
|
|
|
26ba25 |
#include <xen/hvm/hvm_info_table.h>
|
|
|
26ba25 |
#include "hw/xen/xen_pt.h"
|
|
|
26ba25 |
@@ -168,8 +169,8 @@ static void pc_init1(MachineState *machine,
|
|
|
26ba25 |
if (pcmc->smbios_defaults) {
|
|
|
26ba25 |
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
|
|
26ba25 |
/* These values are guest ABI, do not change */
|
|
|
26ba25 |
- smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)",
|
|
|
26ba25 |
- mc->name, pcmc->smbios_legacy_mode,
|
|
|
26ba25 |
+ smbios_set_defaults("Red Hat", "KVM",
|
|
|
26ba25 |
+ mc->desc, pcmc->smbios_legacy_mode,
|
|
|
26ba25 |
pcmc->smbios_uuid_encoded,
|
|
|
26ba25 |
SMBIOS_ENTRY_POINT_21);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
@@ -307,6 +308,7 @@ static void pc_init1(MachineState *machine,
|
|
|
26ba25 |
* HW_COMPAT_*, PC_COMPAT_*, or * pc_*_machine_options().
|
|
|
26ba25 |
*/
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
static void pc_compat_2_3(MachineState *machine)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
PCMachineState *pcms = PC_MACHINE(machine);
|
|
|
26ba25 |
@@ -1135,3 +1137,869 @@ static void xenfv_machine_options(MachineClass *m)
|
|
|
26ba25 |
DEFINE_PC_MACHINE(xenfv, "xenfv", pc_xen_hvm_init,
|
|
|
26ba25 |
xenfv_machine_options);
|
|
|
26ba25 |
#endif
|
|
|
26ba25 |
+machine_init(pc_machine_init);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#endif /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Red Hat Enterprise Linux machine types */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Options for the latest rhel7 machine type */
|
|
|
26ba25 |
+static void pc_machine_rhel7_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Y";
|
|
|
26ba25 |
+ m->default_machine_opts = "firmware=bios-256k.bin";
|
|
|
26ba25 |
+ pcmc->default_nic_model = "e1000";
|
|
|
26ba25 |
+ m->default_display = "std";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL_COMPAT);
|
|
|
26ba25 |
+ m->alias = "pc";
|
|
|
26ba25 |
+ m->is_default = 1;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel750(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel750_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel7_options(m);
|
|
|
26ba25 |
+ m->desc = "RHEL 7.5.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel750, "pc-i440fx-rhel7.5.0", pc_init_rhel750,
|
|
|
26ba25 |
+ pc_machine_rhel750_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel740(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel740_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_machine_rhel750_options(m);
|
|
|
26ba25 |
+ m->alias = NULL;
|
|
|
26ba25 |
+ m->is_default = 0;
|
|
|
26ba25 |
+ m->desc = "RHEL 7.4.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+ m->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
|
|
|
26ba25 |
+ pcmc->pc_rom_ro = false;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_4_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel740, "pc-i440fx-rhel7.4.0", pc_init_rhel740,
|
|
|
26ba25 |
+ pc_machine_rhel740_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel730(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel730_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_machine_rhel740_options(m);
|
|
|
26ba25 |
+ m->desc = "RHEL 7.3.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+ pcmc->linuxboot_dma_enabled = false;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_3_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel730, "pc-i440fx-rhel7.3.0", pc_init_rhel730,
|
|
|
26ba25 |
+ pc_machine_rhel730_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel720(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel720_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_machine_rhel730_options(m);
|
|
|
26ba25 |
+ m->desc = "RHEL 7.2.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+ /* From pc_i440fx_2_5_machine_options */
|
|
|
26ba25 |
+ pcmc->save_tsc_khz = false;
|
|
|
26ba25 |
+ m->legacy_fw_cfg_order = 1;
|
|
|
26ba25 |
+ /* Note: broken_reserved_end was already in 7.2 */
|
|
|
26ba25 |
+ /* From pc_i440fx_2_6_machine_options */
|
|
|
26ba25 |
+ pcmc->legacy_cpu_hotplug = true;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_2_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel720, "pc-i440fx-rhel7.2.0", pc_init_rhel720,
|
|
|
26ba25 |
+ pc_machine_rhel720_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel710(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineState *pcms = PC_MACHINE(machine);
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* From pc_compat_2_2 */
|
|
|
26ba25 |
+ pcmc->rsdp_in_ram = false;
|
|
|
26ba25 |
+ machine->suppress_vmdesc = true;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* From pc_compat_2_1 */
|
|
|
26ba25 |
+ pcmc->smbios_uuid_encoded = false;
|
|
|
26ba25 |
+ x86_cpu_change_kvm_default("svm", NULL);
|
|
|
26ba25 |
+ pcmc->enforce_aligned_dimm = false;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* Disable all the extra subsections that were added in 2.2 */
|
|
|
26ba25 |
+ migrate_pre_2_2 = true;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* From pc_i440fx_2_4_machine_options */
|
|
|
26ba25 |
+ pcmc->broken_reserved_end = true;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel710(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel710(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel710_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel720_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Y";
|
|
|
26ba25 |
+ m->desc = "RHEL 7.1.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+ m->default_display = "cirrus";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_1_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel710, "pc-i440fx-rhel7.1.0", pc_init_rhel710,
|
|
|
26ba25 |
+ pc_machine_rhel710_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel700(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineState *pcms = PC_MACHINE(machine);
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ pc_compat_rhel710(machine);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* Upstream enables it for everyone, we're a little more selective */
|
|
|
26ba25 |
+ x86_cpu_change_kvm_default("x2apic", NULL);
|
|
|
26ba25 |
+ x86_cpu_change_kvm_default("svm", NULL);
|
|
|
26ba25 |
+ pcmc->legacy_acpi_table_size = 6418; /* see pc_compat_2_0() */
|
|
|
26ba25 |
+ pcmc->smbios_legacy_mode = true;
|
|
|
26ba25 |
+ pcmc->has_reserved_memory = false;
|
|
|
26ba25 |
+ migrate_cve_2014_5263_xhci_fields = true;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel700(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel700(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel700_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel710_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Y";
|
|
|
26ba25 |
+ m->desc = "RHEL 7.0.0 PC (i440FX + PIIX, 1996)";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_0_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel700, "pc-i440fx-rhel7.0.0", pc_init_rhel700,
|
|
|
26ba25 |
+ pc_machine_rhel700_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_6_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "scsi-hd",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "scsi-cd",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "scsi-disk",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "ide-hd",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "ide-cd",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "ide-drive",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-blk-pci",\
|
|
|
26ba25 |
+ .property = "discard_granularity",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-serial-pci",\
|
|
|
26ba25 |
+ .property = "vectors",\
|
|
|
26ba25 |
+ /* DEV_NVECTORS_UNSPECIFIED as a uint32_t string */\
|
|
|
26ba25 |
+ .value = stringify(0xFFFFFFFF),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "486-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "model",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-tablet",\
|
|
|
26ba25 |
+ .property = "usb_version",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "mq",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "VGA",\
|
|
|
26ba25 |
+ .property = "mmio",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-blk-pci",\
|
|
|
26ba25 |
+ .property = "config-wce",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = TYPE_ISA_FDC,\
|
|
|
26ba25 |
+ .property = "check_media_rate",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-balloon-pci",\
|
|
|
26ba25 |
+ .property = "class",\
|
|
|
26ba25 |
+ .value = stringify(PCI_CLASS_MEMORY_RAM),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = TYPE_PCI_DEVICE,\
|
|
|
26ba25 |
+ .property = "command_serr_enable",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "AC97",\
|
|
|
26ba25 |
+ .property = "use_broken_id",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "intel-hda",\
|
|
|
26ba25 |
+ .property = "msi",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qemu32-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "486-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qemu32-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "model",\
|
|
|
26ba25 |
+ .value = stringify(3),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-ccid",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "pentium" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "apic",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "pentium2" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "apic",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "pentium3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "apic",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Conroe" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Penryn" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Nehalem" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Nehalem-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pclmulqdq",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pclmulqdq",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "fxsr",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "fxsr",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "mmx",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "mmx",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pat",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pat",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "cmov",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "cmov",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pge",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pge",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "cx8",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "cx8",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "mce",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "mce",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pae",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pae",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "msr",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "msr",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "tsc",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "tsc",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pse",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pse",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "de",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "de",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "fpu",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "fpu",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdtscp",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdtscp",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "smap",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_6_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "smap",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdtscp",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G1" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G2" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G4" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G5" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "3dnow",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "3dnowext",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "__com.redhat_rhel6_ctrl_guest_workaround", \
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel660(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineState *pcms = PC_MACHINE(machine);
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ pc_compat_rhel700(machine);
|
|
|
26ba25 |
+ if (!machine->cpu_type) {
|
|
|
26ba25 |
+ machine->cpu_type = "cpu64-rhel6";
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ x86_cpu_change_kvm_default("kvm-pv-unhalt", NULL);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ pcmc->gigabyte_align = false;
|
|
|
26ba25 |
+ shadow_bios_after_incoming = true;
|
|
|
26ba25 |
+ ich9_uhci123_irqpin_override = true;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel660(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel660(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel660_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_machine_rhel700_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.6.0 PC";
|
|
|
26ba25 |
+ m->rom_file_has_mr = false;
|
|
|
26ba25 |
+ m->default_machine_opts = "firmware=bios.bin";
|
|
|
26ba25 |
+ pcmc->has_acpi_build = false;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_6_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel660, "rhel6.6.0", pc_init_rhel660,
|
|
|
26ba25 |
+ pc_machine_rhel660_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_5_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_USB_DEVICE,\
|
|
|
26ba25 |
+ .property = "msos-desc",\
|
|
|
26ba25 |
+ .value = "no",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel650(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel660(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel650(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel650(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel650_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel660_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.5.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_5_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel650, "rhel6.5.0", pc_init_rhel650,
|
|
|
26ba25 |
+ pc_machine_rhel650_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_4_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-scsi-pci",\
|
|
|
26ba25 |
+ .property = "vectors",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "hda-micro",\
|
|
|
26ba25 |
+ .property = "mixer",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "hda-duplex",\
|
|
|
26ba25 |
+ .property = "mixer",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "hda-output",\
|
|
|
26ba25 |
+ .property = "mixer",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "ctrl_mac_addr",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "sep",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "__com.redhat_rhel6_ctrl_guest_workaround", \
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel640(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel650(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel640(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel640(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel640_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel650_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.4.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_4_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel640, "rhel6.4.0", pc_init_rhel640,
|
|
|
26ba25 |
+ pc_machine_rhel640_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_3_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Conroe-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "Penryn-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "Nehalem-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "e1000",\
|
|
|
26ba25 |
+ .property = "autonegotiation",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qxl",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(3),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qxl-vga",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(3),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-scsi-pci",\
|
|
|
26ba25 |
+ .property = "hotplug",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-scsi-pci",\
|
|
|
26ba25 |
+ .property = "param_change",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pmu",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-hub",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "314159",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-storage",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "SandyBridge" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "tsc-deadline",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL6_3_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "SandyBridge-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "tsc-deadline",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel630(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel640(machine);
|
|
|
26ba25 |
+ x86_cpu_change_kvm_default("kvm-pv-eoi",NULL);
|
|
|
26ba25 |
+ enable_compat_apic_id_mode();
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel630(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel630(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel630_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel640_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.3.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_3_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel630, "rhel6.3.0", pc_init_rhel630,
|
|
|
26ba25 |
+ pc_machine_rhel630_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_2_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "pmu",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel620(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel630(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel620(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel620(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel620_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel630_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.2.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_2_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel620, "rhel6.2.0", pc_init_rhel620,
|
|
|
26ba25 |
+ pc_machine_rhel620_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * NOTE: We don't have the event_idx compat entry for the
|
|
|
26ba25 |
+ * virtio-balloon-pci driver because RHEL6 doesn't disable
|
|
|
26ba25 |
+ * it either due to a bug (see RHBZ 1029539 fo more info)
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define PC_RHEL6_1_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "PIIX4_PM",\
|
|
|
26ba25 |
+ .property = "disable_s3",\
|
|
|
26ba25 |
+ .value = "0",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "PIIX4_PM",\
|
|
|
26ba25 |
+ .property = "disable_s4",\
|
|
|
26ba25 |
+ .value = "0",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qxl",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qxl-vga",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-blk-pci",\
|
|
|
26ba25 |
+ .property = "event_idx",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-serial-pci",\
|
|
|
26ba25 |
+ .property = "event_idx",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "event_idx",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-kbd",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-mouse",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-tablet",\
|
|
|
26ba25 |
+ .property = "serial",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel610(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel620(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel610(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel610(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel610_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel620_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.1.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_1_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel610, "rhel6.1.0", pc_init_rhel610,
|
|
|
26ba25 |
+ pc_machine_rhel610_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL6_0_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "qxl",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "qxl-vga",\
|
|
|
26ba25 |
+ .property = "revision",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "VGA",\
|
|
|
26ba25 |
+ .property = "rombar",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_compat_rhel600(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel610(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_init_rhel600(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_compat_rhel600(machine);
|
|
|
26ba25 |
+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ TYPE_I440FX_PCI_DEVICE);}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_machine_rhel600_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_machine_rhel610_options(m);
|
|
|
26ba25 |
+ m->family = "pc_piix_Z";
|
|
|
26ba25 |
+ m->desc = "RHEL 6.0.0 PC";
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL6_0_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(rhel600, "rhel6.0.0", pc_init_rhel600,
|
|
|
26ba25 |
+ pc_machine_rhel600_options);
|
|
|
26ba25 |
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
|
|
|
26ba25 |
index 9ae9163..dbf6bfa 100644
|
|
|
26ba25 |
--- a/hw/i386/pc_q35.c
|
|
|
26ba25 |
+++ b/hw/i386/pc_q35.c
|
|
|
26ba25 |
@@ -143,8 +143,8 @@ static void pc_q35_init(MachineState *machine)
|
|
|
26ba25 |
|
|
|
26ba25 |
if (pcmc->smbios_defaults) {
|
|
|
26ba25 |
/* These values are guest ABI, do not change */
|
|
|
26ba25 |
- smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)",
|
|
|
26ba25 |
- mc->name, pcmc->smbios_legacy_mode,
|
|
|
26ba25 |
+ smbios_set_defaults("Red Hat", "KVM",
|
|
|
26ba25 |
+ mc->desc, pcmc->smbios_legacy_mode,
|
|
|
26ba25 |
pcmc->smbios_uuid_encoded,
|
|
|
26ba25 |
SMBIOS_ENTRY_POINT_21);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
@@ -292,6 +292,7 @@ static void pc_q35_init(MachineState *machine)
|
|
|
26ba25 |
DEFINE_PC_MACHINE(suffix, name, pc_init_##suffix, optionfn)
|
|
|
26ba25 |
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
static void pc_q35_machine_options(MachineClass *m)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
@@ -404,3 +405,72 @@ static void pc_q35_2_4_machine_options(MachineClass *m)
|
|
|
26ba25 |
|
|
|
26ba25 |
DEFINE_Q35_MACHINE(v2_4, "pc-q35-2.4", NULL,
|
|
|
26ba25 |
pc_q35_2_4_machine_options);
|
|
|
26ba25 |
+#endif /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Red Hat Enterprise Linux machine types */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Options for the latest rhel7 q35 machine type */
|
|
|
26ba25 |
+static void pc_q35_machine_rhel7_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pcmc->default_nic_model = "e1000e";
|
|
|
26ba25 |
+ m->family = "pc_q35_Z";
|
|
|
26ba25 |
+ m->default_machine_opts = "firmware=bios-256k.bin";
|
|
|
26ba25 |
+ m->default_display = "std";
|
|
|
26ba25 |
+ m->no_floppy = 1;
|
|
|
26ba25 |
+ machine_class_allow_dynamic_sysbus_dev(m, TYPE_SYS_BUS_DEVICE);
|
|
|
26ba25 |
+ m->alias = "q35";
|
|
|
26ba25 |
+ m->max_cpus = 384;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_init_rhel750(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_q35_init(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_machine_rhel750_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_q35_machine_rhel7_options(m);
|
|
|
26ba25 |
+ m->desc = "RHEL-7.5.0 PC (Q35 + ICH9, 2009)";
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(q35_rhel750, "pc-q35-rhel7.5.0", pc_q35_init_rhel750,
|
|
|
26ba25 |
+ pc_q35_machine_rhel750_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_init_rhel740(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_q35_init(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_machine_rhel740_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_q35_machine_rhel750_options(m);
|
|
|
26ba25 |
+ m->alias = NULL;
|
|
|
26ba25 |
+ m->desc = "RHEL-7.4.0 PC (Q35 + ICH9, 2009)";
|
|
|
26ba25 |
+ m->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
|
|
|
26ba25 |
+ pcmc->pc_rom_ro = false;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_4_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(q35_rhel740, "pc-q35-rhel7.4.0", pc_q35_init_rhel740,
|
|
|
26ba25 |
+ pc_q35_machine_rhel740_options);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_init_rhel730(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ pc_q35_init(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void pc_q35_machine_rhel730_options(MachineClass *m)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
|
|
26ba25 |
+ pc_q35_machine_rhel740_options(m);
|
|
|
26ba25 |
+ m->desc = "RHEL-7.3.0 PC (Q35 + ICH9, 2009)";
|
|
|
26ba25 |
+ m->max_cpus = 255;
|
|
|
26ba25 |
+ pcmc->linuxboot_dma_enabled = false;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(m, PC_RHEL7_3_COMPAT);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_PC_MACHINE(q35_rhel730, "pc-q35-rhel7.3.0", pc_q35_init_rhel730,
|
|
|
26ba25 |
+ pc_q35_machine_rhel730_options);
|
|
|
26ba25 |
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
|
|
|
26ba25 |
index 73ac783..2a6de35 100644
|
|
|
26ba25 |
--- a/hw/i386/pc_sysfw.c
|
|
|
26ba25 |
+++ b/hw/i386/pc_sysfw.c
|
|
|
26ba25 |
@@ -207,6 +207,13 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
|
|
|
26ba25 |
(bios_size % 65536) != 0) {
|
|
|
26ba25 |
goto bios_error;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
+ if (shadow_bios_after_incoming && bios_size != 128 * 1024) {
|
|
|
26ba25 |
+ MachineClass *mc;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ mc = MACHINE_GET_CLASS(current_machine);
|
|
|
26ba25 |
+ error_report("machine %s only supports a 128KB BIOS image", mc->name);
|
|
|
26ba25 |
+ exit(1);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
bios = g_malloc(sizeof(*bios));
|
|
|
26ba25 |
memory_region_init_ram(bios, NULL, "pc.bios", bios_size, &error_fatal);
|
|
|
26ba25 |
if (!isapc_ram_fw) {
|
|
|
26ba25 |
@@ -254,6 +261,15 @@ void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
|
|
|
26ba25 |
return;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+ if (shadow_bios_after_incoming) {
|
|
|
26ba25 |
+ MachineClass *mc;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ mc = MACHINE_GET_CLASS(current_machine);
|
|
|
26ba25 |
+ error_report("flash-based firmware is not supported by machine %s",
|
|
|
26ba25 |
+ mc->name);
|
|
|
26ba25 |
+ exit(1);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
if (kvm_enabled() && !kvm_readonly_mem_enabled()) {
|
|
|
26ba25 |
/* Older KVM cannot execute from device memory. So, flash memory
|
|
|
26ba25 |
* cannot be used unless the readonly memory kvm capability is present. */
|
|
|
26ba25 |
diff --git a/hw/i386/shadow-bios.c b/hw/i386/shadow-bios.c
|
|
|
26ba25 |
new file mode 100644
|
|
|
26ba25 |
index 0000000..65a4cb8
|
|
|
26ba25 |
--- /dev/null
|
|
|
26ba25 |
+++ b/hw/i386/shadow-bios.c
|
|
|
26ba25 |
@@ -0,0 +1,64 @@
|
|
|
26ba25 |
+#include "qemu/osdep.h"
|
|
|
26ba25 |
+#include "sysemu/sysemu.h"
|
|
|
26ba25 |
+#include "target/i386/cpu.h"
|
|
|
26ba25 |
+#include "exec/ram_addr.h"
|
|
|
26ba25 |
+#include "qemu/cutils.h"
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+void shadow_bios(void)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ RAMBlock *block, *ram, *oprom, *bios;
|
|
|
26ba25 |
+ size_t one_meg, oprom_size, bios_size;
|
|
|
26ba25 |
+ uint8_t *cd_seg_host, *ef_seg_host;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ ram = NULL;
|
|
|
26ba25 |
+ oprom = NULL;
|
|
|
26ba25 |
+ bios = NULL;
|
|
|
26ba25 |
+ rcu_read_lock();
|
|
|
26ba25 |
+ QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
|
|
|
26ba25 |
+ if (strcmp("pc.ram", block->idstr) == 0) {
|
|
|
26ba25 |
+ assert(ram == NULL);
|
|
|
26ba25 |
+ ram = block;
|
|
|
26ba25 |
+ } else if (strcmp("pc.rom", block->idstr) == 0) {
|
|
|
26ba25 |
+ assert(oprom == NULL);
|
|
|
26ba25 |
+ oprom = block;
|
|
|
26ba25 |
+ } else if (strcmp("pc.bios", block->idstr) == 0) {
|
|
|
26ba25 |
+ assert(bios == NULL);
|
|
|
26ba25 |
+ bios = block;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ assert(ram != NULL);
|
|
|
26ba25 |
+ assert(oprom != NULL);
|
|
|
26ba25 |
+ assert(bios != NULL);
|
|
|
26ba25 |
+ assert(memory_region_is_ram(ram->mr));
|
|
|
26ba25 |
+ assert(memory_region_is_ram(oprom->mr));
|
|
|
26ba25 |
+ assert(memory_region_is_ram(bios->mr));
|
|
|
26ba25 |
+ assert(int128_eq(ram->mr->size, int128_make64(ram->used_length)));
|
|
|
26ba25 |
+ assert(int128_eq(oprom->mr->size, int128_make64(oprom->used_length)));
|
|
|
26ba25 |
+ assert(int128_eq(bios->mr->size, int128_make64(bios->used_length)));
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ one_meg = 1024 * 1024;
|
|
|
26ba25 |
+ oprom_size = 128 * 1024;
|
|
|
26ba25 |
+ bios_size = 128 * 1024;
|
|
|
26ba25 |
+ assert(ram->used_length >= one_meg);
|
|
|
26ba25 |
+ assert(oprom->used_length == oprom_size);
|
|
|
26ba25 |
+ assert(bios->used_length == bios_size);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ ef_seg_host = memory_region_get_ram_ptr(ram->mr) + (one_meg - bios_size);
|
|
|
26ba25 |
+ cd_seg_host = ef_seg_host - oprom_size;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* This is a crude hack, but we must distinguish a rhel6.x.0 machtype guest
|
|
|
26ba25 |
+ * coming in from a RHEL-6 emulator (where shadowing has had no effect on
|
|
|
26ba25 |
+ * "pc.ram") from a similar guest coming in from a RHEL-7 emulator (where
|
|
|
26ba25 |
+ * shadowing has worked). In the latter case we must not trample the live
|
|
|
26ba25 |
+ * SeaBIOS variables in "pc.ram".
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ if (buffer_is_zero(ef_seg_host, bios_size)) {
|
|
|
26ba25 |
+ fprintf(stderr, "copying E and F segments from pc.bios to pc.ram\n");
|
|
|
26ba25 |
+ memcpy(ef_seg_host, memory_region_get_ram_ptr(bios->mr), bios_size);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ if (buffer_is_zero(cd_seg_host, oprom_size)) {
|
|
|
26ba25 |
+ fprintf(stderr, "copying C and D segments from pc.rom to pc.ram\n");
|
|
|
26ba25 |
+ memcpy(cd_seg_host, memory_region_get_ram_ptr(oprom->mr), oprom_size);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ rcu_read_unlock();
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
|
|
|
26ba25 |
index 742cd0a..7d568da 100644
|
|
|
26ba25 |
--- a/hw/net/e1000.c
|
|
|
26ba25 |
+++ b/hw/net/e1000.c
|
|
|
26ba25 |
@@ -1663,6 +1663,16 @@ static void pci_e1000_realize(PCIDevice *pci_dev, Error **errp)
|
|
|
26ba25 |
|
|
|
26ba25 |
pci_conf = pci_dev->config;
|
|
|
26ba25 |
|
|
|
26ba25 |
+ if (!(d->compat_flags & E1000_FLAG_AUTONEG)) {
|
|
|
26ba25 |
+ /*
|
|
|
26ba25 |
+ * We have no capabilities, so capability list bit should normally be 0.
|
|
|
26ba25 |
+ * Keep it on for compat machine types to avoid breaking migration.
|
|
|
26ba25 |
+ * HACK: abuse E1000_FLAG_AUTONEG, which is off exactly for
|
|
|
26ba25 |
+ * the machine types that need this.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ pci_set_word(pci_conf + PCI_STATUS, PCI_STATUS_CAP_LIST);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
/* TODO: RST# value should be 0, PCI spec 6.2.4 */
|
|
|
26ba25 |
pci_conf[PCI_CACHE_LINE_SIZE] = 0x10;
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -1763,7 +1773,7 @@ static const TypeInfo e1000_base_info = {
|
|
|
26ba25 |
|
|
|
26ba25 |
static const E1000Info e1000_devices[] = {
|
|
|
26ba25 |
{
|
|
|
26ba25 |
- .name = "e1000",
|
|
|
26ba25 |
+ .name = "e1000-82540em",
|
|
|
26ba25 |
.device_id = E1000_DEV_ID_82540EM,
|
|
|
26ba25 |
.revision = 0x03,
|
|
|
26ba25 |
.phy_id2 = E1000_PHY_ID2_8254xx_DEFAULT,
|
|
|
26ba25 |
@@ -1784,6 +1794,11 @@ static const E1000Info e1000_devices[] = {
|
|
|
26ba25 |
#endif
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
+static const TypeInfo e1000_default_info = {
|
|
|
26ba25 |
+ .name = "e1000",
|
|
|
26ba25 |
+ .parent = "e1000-82540em",
|
|
|
26ba25 |
+};
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static void e1000_register_types(void)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
int i;
|
|
|
26ba25 |
@@ -1801,6 +1816,7 @@ static void e1000_register_types(void)
|
|
|
26ba25 |
|
|
|
26ba25 |
type_register(&type_info);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
+ type_register_static(&e1000_default_info);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
type_init(e1000_register_types)
|
|
|
26ba25 |
diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
|
|
|
26ba25 |
index 16a9417..460123f 100644
|
|
|
26ba25 |
--- a/hw/net/e1000e.c
|
|
|
26ba25 |
+++ b/hw/net/e1000e.c
|
|
|
26ba25 |
@@ -74,6 +74,11 @@ typedef struct E1000EState {
|
|
|
26ba25 |
|
|
|
26ba25 |
E1000ECore core;
|
|
|
26ba25 |
|
|
|
26ba25 |
+ /* 7.3 had the intr_state field that was in the original e1000e code
|
|
|
26ba25 |
+ * but that was removed prior to 2.7's release
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ bool redhat_7_3_intr_state_enable;
|
|
|
26ba25 |
+ uint32_t redhat_7_3_intr_state;
|
|
|
26ba25 |
} E1000EState;
|
|
|
26ba25 |
|
|
|
26ba25 |
#define E1000E_MMIO_IDX 0
|
|
|
26ba25 |
@@ -89,6 +94,10 @@ typedef struct E1000EState {
|
|
|
26ba25 |
#define E1000E_MSIX_TABLE (0x0000)
|
|
|
26ba25 |
#define E1000E_MSIX_PBA (0x2000)
|
|
|
26ba25 |
|
|
|
26ba25 |
+/* Values as in RHEL 7.3 build and original upstream */
|
|
|
26ba25 |
+#define RH_E1000E_USE_MSI BIT(0)
|
|
|
26ba25 |
+#define RH_E1000E_USE_MSIX BIT(1)
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static uint64_t
|
|
|
26ba25 |
e1000e_mmio_read(void *opaque, hwaddr addr, unsigned size)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
@@ -300,6 +309,8 @@ e1000e_init_msix(E1000EState *s)
|
|
|
26ba25 |
} else {
|
|
|
26ba25 |
if (!e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM)) {
|
|
|
26ba25 |
msix_uninit(d, &s->msix, &s->msix);
|
|
|
26ba25 |
+ } else {
|
|
|
26ba25 |
+ s->redhat_7_3_intr_state |= RH_E1000E_USE_MSIX;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
}
|
|
|
26ba25 |
}
|
|
|
26ba25 |
@@ -471,6 +482,8 @@ static void e1000e_pci_realize(PCIDevice *pci_dev, Error **errp)
|
|
|
26ba25 |
ret = msi_init(PCI_DEVICE(s), 0xD0, 1, true, false, NULL);
|
|
|
26ba25 |
if (ret) {
|
|
|
26ba25 |
trace_e1000e_msi_init_fail(ret);
|
|
|
26ba25 |
+ } else {
|
|
|
26ba25 |
+ s->redhat_7_3_intr_state |= RH_E1000E_USE_MSI;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
if (e1000e_add_pm_capability(pci_dev, e1000e_pmrb_offset,
|
|
|
26ba25 |
@@ -594,6 +607,11 @@ static const VMStateDescription e1000e_vmstate_intr_timer = {
|
|
|
26ba25 |
VMSTATE_STRUCT_ARRAY(_f, _s, _num, 0, \
|
|
|
26ba25 |
e1000e_vmstate_intr_timer, E1000IntrDelayTimer)
|
|
|
26ba25 |
|
|
|
26ba25 |
+static bool rhel_7_3_check(void *opaque, int version_id)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ return ((E1000EState *)opaque)->redhat_7_3_intr_state_enable;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static const VMStateDescription e1000e_vmstate = {
|
|
|
26ba25 |
.name = "e1000e",
|
|
|
26ba25 |
.version_id = 1,
|
|
|
26ba25 |
@@ -605,6 +623,7 @@ static const VMStateDescription e1000e_vmstate = {
|
|
|
26ba25 |
VMSTATE_MSIX(parent_obj, E1000EState),
|
|
|
26ba25 |
|
|
|
26ba25 |
VMSTATE_UINT32(ioaddr, E1000EState),
|
|
|
26ba25 |
+ VMSTATE_UINT32_TEST(redhat_7_3_intr_state, E1000EState, rhel_7_3_check),
|
|
|
26ba25 |
VMSTATE_UINT32(core.rxbuf_min_shift, E1000EState),
|
|
|
26ba25 |
VMSTATE_UINT8(core.rx_desc_len, E1000EState),
|
|
|
26ba25 |
VMSTATE_UINT32_ARRAY(core.rxbuf_sizes, E1000EState,
|
|
|
26ba25 |
@@ -653,6 +672,8 @@ static PropertyInfo e1000e_prop_disable_vnet,
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property e1000e_properties[] = {
|
|
|
26ba25 |
DEFINE_NIC_PROPERTIES(E1000EState, conf),
|
|
|
26ba25 |
+ DEFINE_PROP_BOOL("__redhat_e1000e_7_3_intr_state", E1000EState,
|
|
|
26ba25 |
+ redhat_7_3_intr_state_enable, false),
|
|
|
26ba25 |
DEFINE_PROP_SIGNED("disable_vnet_hdr", E1000EState, disable_vnet, false,
|
|
|
26ba25 |
e1000e_prop_disable_vnet, bool),
|
|
|
26ba25 |
DEFINE_PROP_SIGNED("subsys_ven", E1000EState, subsys_ven,
|
|
|
26ba25 |
diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c
|
|
|
26ba25 |
index 46daa16..05453e7 100644
|
|
|
26ba25 |
--- a/hw/net/rtl8139.c
|
|
|
26ba25 |
+++ b/hw/net/rtl8139.c
|
|
|
26ba25 |
@@ -3174,7 +3174,7 @@ static int rtl8139_pre_save(void *opaque)
|
|
|
26ba25 |
|
|
|
26ba25 |
static const VMStateDescription vmstate_rtl8139 = {
|
|
|
26ba25 |
.name = "rtl8139",
|
|
|
26ba25 |
- .version_id = 5,
|
|
|
26ba25 |
+ .version_id = 4,
|
|
|
26ba25 |
.minimum_version_id = 3,
|
|
|
26ba25 |
.post_load = rtl8139_post_load,
|
|
|
26ba25 |
.pre_save = rtl8139_pre_save,
|
|
|
26ba25 |
@@ -3255,7 +3255,9 @@ static const VMStateDescription vmstate_rtl8139 = {
|
|
|
26ba25 |
VMSTATE_UINT32(tally_counters.TxMCol, RTL8139State),
|
|
|
26ba25 |
VMSTATE_UINT64(tally_counters.RxOkPhy, RTL8139State),
|
|
|
26ba25 |
VMSTATE_UINT64(tally_counters.RxOkBrd, RTL8139State),
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux bz 1420195 */
|
|
|
26ba25 |
VMSTATE_UINT32_V(tally_counters.RxOkMul, RTL8139State, 5),
|
|
|
26ba25 |
+#endif
|
|
|
26ba25 |
VMSTATE_UINT16(tally_counters.TxAbt, RTL8139State),
|
|
|
26ba25 |
VMSTATE_UINT16(tally_counters.TxUndrn, RTL8139State),
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
|
|
|
26ba25 |
index 6a92b20..c751111 100644
|
|
|
26ba25 |
--- a/hw/ppc/spapr.c
|
|
|
26ba25 |
+++ b/hw/ppc/spapr.c
|
|
|
26ba25 |
@@ -3935,6 +3935,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
|
|
|
26ba25 |
smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_BROKEN;
|
|
|
26ba25 |
smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_BROKEN;
|
|
|
26ba25 |
spapr_caps_add_properties(smc, &error_abort);
|
|
|
26ba25 |
+ smc->has_power9_support = true;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
static const TypeInfo spapr_machine_info = {
|
|
|
26ba25 |
@@ -3985,6 +3986,7 @@ static const TypeInfo spapr_machine_info = {
|
|
|
26ba25 |
} \
|
|
|
26ba25 |
type_init(spapr_machine_register_##suffix)
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
/*
|
|
|
26ba25 |
* pseries-2.12
|
|
|
26ba25 |
*/
|
|
|
26ba25 |
@@ -4136,6 +4138,7 @@ DEFINE_SPAPR_MACHINE(2_8, "2.8", false);
|
|
|
26ba25 |
.property = "pre-2.8-migration", \
|
|
|
26ba25 |
.value = "on", \
|
|
|
26ba25 |
},
|
|
|
26ba25 |
+#endif
|
|
|
26ba25 |
|
|
|
26ba25 |
static void phb_placement_2_7(sPAPRMachineState *spapr, uint32_t index,
|
|
|
26ba25 |
uint64_t *buid, hwaddr *pio,
|
|
|
26ba25 |
@@ -4186,6 +4189,7 @@ static void phb_placement_2_7(sPAPRMachineState *spapr, uint32_t index,
|
|
|
26ba25 |
*/
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
static void spapr_machine_2_7_instance_options(MachineState *machine)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
|
|
|
26ba25 |
@@ -4345,6 +4349,210 @@ static void spapr_machine_2_1_class_options(MachineClass *mc)
|
|
|
26ba25 |
SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_1);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
DEFINE_SPAPR_MACHINE(2_1, "2.1", false);
|
|
|
26ba25 |
+#endif
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.5.0
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel750_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel750_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ /* Defaults for the latest behaviour inherited from the base class */
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel750, "rhel7.5.0", true);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.5.0-sxxm
|
|
|
26ba25 |
+ *
|
|
|
26ba25 |
+ * pseries-rhel7.5.0 with speculative execution exploit mitigations enabled by default
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+static void spapr_machine_rhel750sxxm_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ spapr_machine_rhel750_instance_options(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel750sxxm_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel750_class_options(mc);
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel750sxxm, "rhel7.5.0-sxxm", false);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.4.0
|
|
|
26ba25 |
+ * like SPAPR_COMPAT_2_9
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define SPAPR_COMPAT_RHEL7_4 \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_4 \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_POWERPC_CPU, \
|
|
|
26ba25 |
+ .property = "pre-2.10-migration", \
|
|
|
26ba25 |
+ .value = "on", \
|
|
|
26ba25 |
+ }, \
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel740_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ spapr_machine_rhel750_instance_options(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel740_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel750_class_options(mc);
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_RHEL7_4);
|
|
|
26ba25 |
+ mc->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
|
|
|
26ba25 |
+ smc->has_power9_support = false;
|
|
|
26ba25 |
+ smc->pre_2_10_has_unused_icps = true;
|
|
|
26ba25 |
+ smc->resize_hpt_default = SPAPR_RESIZE_HPT_DISABLED;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_ON;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel740, "rhel7.4.0", false);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.4.0-sxxm
|
|
|
26ba25 |
+ *
|
|
|
26ba25 |
+ * pseries-rhel7.4.0 with speculative execution exploit mitigations enabled by default
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+static void spapr_machine_rhel740sxxm_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ spapr_machine_rhel740_instance_options(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel740sxxm_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel740_class_options(mc);
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel740sxxm, "rhel7.4.0-sxxm", false);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.3.0
|
|
|
26ba25 |
+ * like SPAPR_COMPAT_2_6/_2_7/_2_8 but "ddw" has been backported to RHEL7_3
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define SPAPR_COMPAT_RHEL7_3 \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_3 \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ .property = "mem_win_size", \
|
|
|
26ba25 |
+ .value = stringify(SPAPR_PCI_2_7_MMIO_WIN_SIZE),\
|
|
|
26ba25 |
+ }, \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ .property = "mem64_win_size", \
|
|
|
26ba25 |
+ .value = "0", \
|
|
|
26ba25 |
+ }, \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_POWERPC_CPU, \
|
|
|
26ba25 |
+ .property = "pre-2.8-migration", \
|
|
|
26ba25 |
+ .value = "on", \
|
|
|
26ba25 |
+ }, \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ .property = "pre-2.8-migration", \
|
|
|
26ba25 |
+ .value = "on", \
|
|
|
26ba25 |
+ }, \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE, \
|
|
|
26ba25 |
+ .property = "pcie-extended-configuration-space",\
|
|
|
26ba25 |
+ .value = "off", \
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel730_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel740_instance_options(machine);
|
|
|
26ba25 |
+ spapr->use_hotplug_event_source = false;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel730_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel740_class_options(mc);
|
|
|
26ba25 |
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3");
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_RHEL7_3);
|
|
|
26ba25 |
+ smc->phb_placement = phb_placement_2_7;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel730, "rhel7.3.0", false);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.3.0-sxxm
|
|
|
26ba25 |
+ *
|
|
|
26ba25 |
+ * pseries-rhel7.3.0 with speculative execution exploit mitigations enabled by default
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+static void spapr_machine_rhel730sxxm_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ spapr_machine_rhel730_instance_options(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel730sxxm_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel730_class_options(mc);
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
|
|
|
26ba25 |
+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel730sxxm, "rhel7.3.0-sxxm", false);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * pseries-rhel7.2.0
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+/* Should be like SPAPR_COMPAT_2_5 + 2_4 + 2_3, but "dynamic-reconfiguration"
|
|
|
26ba25 |
+ * has been backported to RHEL7_2 so we don't need it here.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define SPAPR_COMPAT_RHEL7_2 \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_2 \
|
|
|
26ba25 |
+ { \
|
|
|
26ba25 |
+ .driver = "spapr-vlan", \
|
|
|
26ba25 |
+ .property = "use-rx-buffer-pools", \
|
|
|
26ba25 |
+ .value = "off", \
|
|
|
26ba25 |
+ },{ \
|
|
|
26ba25 |
+ .driver = TYPE_SPAPR_PCI_HOST_BRIDGE,\
|
|
|
26ba25 |
+ .property = "ddw",\
|
|
|
26ba25 |
+ .value = stringify(off),\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel720_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ spapr_machine_rhel730_instance_options(machine);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void spapr_machine_rhel720_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ spapr_machine_rhel730_class_options(mc);
|
|
|
26ba25 |
+ smc->use_ohci_by_default = true;
|
|
|
26ba25 |
+ mc->has_hotpluggable_cpus = NULL;
|
|
|
26ba25 |
+ SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_RHEL7_2);
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+DEFINE_SPAPR_MACHINE(rhel720, "rhel7.2.0", false);
|
|
|
26ba25 |
|
|
|
26ba25 |
static void spapr_machine_register_types(void)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
|
|
|
26ba25 |
index 1eda854..c5f0c72 100644
|
|
|
26ba25 |
--- a/hw/ppc/spapr_cpu_core.c
|
|
|
26ba25 |
+++ b/hw/ppc/spapr_cpu_core.c
|
|
|
26ba25 |
@@ -21,6 +21,7 @@
|
|
|
26ba25 |
#include "sysemu/numa.h"
|
|
|
26ba25 |
#include "sysemu/hw_accel.h"
|
|
|
26ba25 |
#include "qemu/error-report.h"
|
|
|
26ba25 |
+#include "cpu-models.h"
|
|
|
26ba25 |
|
|
|
26ba25 |
static void spapr_cpu_reset(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
@@ -62,6 +63,7 @@ static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
|
|
|
26ba25 |
Error **errp)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
CPUPPCState *env = &cpu->env;
|
|
|
26ba25 |
+ sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
|
|
|
26ba25 |
|
|
|
26ba25 |
/* Set time-base frequency to 512 MHz */
|
|
|
26ba25 |
cpu_ppc_tb_init(env, SPAPR_TIMEBASE_FREQ);
|
|
|
26ba25 |
@@ -69,6 +71,17 @@ static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
|
|
|
26ba25 |
/* Enable PAPR mode in TCG or KVM */
|
|
|
26ba25 |
cpu_ppc_set_papr(cpu, PPC_VIRTUAL_HYPERVISOR(spapr));
|
|
|
26ba25 |
|
|
|
26ba25 |
+ if (!smc->has_power9_support &&
|
|
|
26ba25 |
+ (((spapr->max_compat_pvr &&
|
|
|
26ba25 |
+ ppc_compat_cmp(spapr->max_compat_pvr,
|
|
|
26ba25 |
+ CPU_POWERPC_LOGICAL_3_00) >= 0)) ||
|
|
|
26ba25 |
+ (!spapr->max_compat_pvr &&
|
|
|
26ba25 |
+ ppc_check_compat(cpu, CPU_POWERPC_LOGICAL_3_00, 0, 0)))) {
|
|
|
26ba25 |
+ error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
|
|
|
26ba25 |
+ "POWER9 CPU is not supported by this machine class");
|
|
|
26ba25 |
+ return;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
qemu_register_reset(spapr_cpu_reset, cpu);
|
|
|
26ba25 |
spapr_cpu_reset(cpu);
|
|
|
26ba25 |
}
|
|
|
26ba25 |
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
|
|
|
26ba25 |
index 435f7c9..3956ac3 100644
|
|
|
26ba25 |
--- a/hw/s390x/s390-virtio-ccw.c
|
|
|
26ba25 |
+++ b/hw/s390x/s390-virtio-ccw.c
|
|
|
26ba25 |
@@ -647,7 +647,7 @@ bool css_migration_enabled(void)
|
|
|
26ba25 |
{ \
|
|
|
26ba25 |
MachineClass *mc = MACHINE_CLASS(oc); \
|
|
|
26ba25 |
ccw_machine_##suffix##_class_options(mc); \
|
|
|
26ba25 |
- mc->desc = "VirtIO-ccw based S390 machine v" verstr; \
|
|
|
26ba25 |
+ mc->desc = "VirtIO-ccw based S390 machine " verstr; \
|
|
|
26ba25 |
if (latest) { \
|
|
|
26ba25 |
mc->alias = "s390-ccw-virtio"; \
|
|
|
26ba25 |
mc->is_default = 1; \
|
|
|
26ba25 |
@@ -682,6 +682,8 @@ bool css_migration_enabled(void)
|
|
|
26ba25 |
#define CCW_COMPAT_2_10 \
|
|
|
26ba25 |
HW_COMPAT_2_10
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* Disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
#define CCW_COMPAT_2_9 \
|
|
|
26ba25 |
HW_COMPAT_2_9 \
|
|
|
26ba25 |
{\
|
|
|
26ba25 |
@@ -879,6 +881,19 @@ static void ccw_machine_2_4_class_options(MachineClass *mc)
|
|
|
26ba25 |
}
|
|
|
26ba25 |
DEFINE_CCW_MACHINE(2_4, "2.4", false);
|
|
|
26ba25 |
|
|
|
26ba25 |
+#else
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void ccw_machine_rhel750_instance_options(MachineState *machine)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static void ccw_machine_rhel750_class_options(MachineClass *mc)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+DEFINE_CCW_MACHINE(rhel750, "rhel7.5.0", true);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#endif
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static void ccw_machine_register_types(void)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
type_register_static(&ccw_machine_info);
|
|
|
26ba25 |
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
|
|
|
26ba25 |
index 27a07e9..df8f0ae 100644
|
|
|
26ba25 |
--- a/hw/smbios/smbios.c
|
|
|
26ba25 |
+++ b/hw/smbios/smbios.c
|
|
|
26ba25 |
@@ -778,6 +778,7 @@ void smbios_set_defaults(const char *manufacturer, const char *product,
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type1.manufacturer, manufacturer);
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type1.product, product);
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type1.version, version);
|
|
|
26ba25 |
+ SMBIOS_SET_DEFAULT(type1.family, "Red Hat Enterprise Linux");
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type2.manufacturer, manufacturer);
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type2.product, product);
|
|
|
26ba25 |
SMBIOS_SET_DEFAULT(type2.version, version);
|
|
|
26ba25 |
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
|
|
|
26ba25 |
index 6190b6f..ad2ad2d 100644
|
|
|
26ba25 |
--- a/hw/timer/i8254_common.c
|
|
|
26ba25 |
+++ b/hw/timer/i8254_common.c
|
|
|
26ba25 |
@@ -268,7 +268,7 @@ static const VMStateDescription vmstate_pit_common = {
|
|
|
26ba25 |
.pre_save = pit_dispatch_pre_save,
|
|
|
26ba25 |
.post_load = pit_dispatch_post_load,
|
|
|
26ba25 |
.fields = (VMStateField[]) {
|
|
|
26ba25 |
- VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3),
|
|
|
26ba25 |
+ VMSTATE_UINT32(channels[0].irq_disabled, PITCommonState), /* qemu-kvm's v2 had 'flags' here */
|
|
|
26ba25 |
VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2,
|
|
|
26ba25 |
vmstate_pit_channel, PITChannelState),
|
|
|
26ba25 |
VMSTATE_INT64(channels[0].next_transition_time,
|
|
|
26ba25 |
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
|
|
|
26ba25 |
index 6f1f723..68c353f 100644
|
|
|
26ba25 |
--- a/hw/timer/mc146818rtc.c
|
|
|
26ba25 |
+++ b/hw/timer/mc146818rtc.c
|
|
|
26ba25 |
@@ -34,6 +34,7 @@
|
|
|
26ba25 |
#include "qapi/qapi-commands-misc.h"
|
|
|
26ba25 |
#include "qapi/qapi-events-misc.h"
|
|
|
26ba25 |
#include "qapi/visitor.h"
|
|
|
26ba25 |
+#include "migration/migration.h"
|
|
|
26ba25 |
|
|
|
26ba25 |
#ifdef TARGET_I386
|
|
|
26ba25 |
#include "hw/i386/apic.h"
|
|
|
26ba25 |
@@ -839,6 +840,11 @@ static int rtc_post_load(void *opaque, int version_id)
|
|
|
26ba25 |
static bool rtc_irq_reinject_on_ack_count_needed(void *opaque)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
RTCState *s = (RTCState *)opaque;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ if (migrate_pre_2_2) {
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
return s->irq_reinject_on_ack_count != 0;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
|
|
|
26ba25 |
index 836b11f..86d6ab8 100644
|
|
|
26ba25 |
--- a/hw/usb/hcd-uhci.c
|
|
|
26ba25 |
+++ b/hw/usb/hcd-uhci.c
|
|
|
26ba25 |
@@ -152,6 +152,8 @@ typedef struct UHCI_QH {
|
|
|
26ba25 |
uint32_t el_link;
|
|
|
26ba25 |
} UHCI_QH;
|
|
|
26ba25 |
|
|
|
26ba25 |
+bool ich9_uhci123_irqpin_override;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static void uhci_async_cancel(UHCIAsync *async);
|
|
|
26ba25 |
static void uhci_queue_fill(UHCIQueue *q, UHCI_TD *td);
|
|
|
26ba25 |
static void uhci_resume(void *opaque);
|
|
|
26ba25 |
@@ -1214,12 +1216,23 @@ static void usb_uhci_common_realize(PCIDevice *dev, Error **errp)
|
|
|
26ba25 |
UHCIState *s = UHCI(dev);
|
|
|
26ba25 |
uint8_t *pci_conf = s->dev.config;
|
|
|
26ba25 |
int i;
|
|
|
26ba25 |
+ int irq_pin;
|
|
|
26ba25 |
|
|
|
26ba25 |
pci_conf[PCI_CLASS_PROG] = 0x00;
|
|
|
26ba25 |
/* TODO: reset value should be 0. */
|
|
|
26ba25 |
pci_conf[USB_SBRN] = USB_RELEASE_1; // release number
|
|
|
26ba25 |
|
|
|
26ba25 |
- pci_config_set_interrupt_pin(pci_conf, u->info.irq_pin + 1);
|
|
|
26ba25 |
+ if (ich9_uhci123_irqpin_override &&
|
|
|
26ba25 |
+ u->info.vendor_id == PCI_VENDOR_ID_INTEL &&
|
|
|
26ba25 |
+ (u->info.device_id == PCI_DEVICE_ID_INTEL_82801I_UHCI1 ||
|
|
|
26ba25 |
+ u->info.device_id == PCI_DEVICE_ID_INTEL_82801I_UHCI2 ||
|
|
|
26ba25 |
+ u->info.device_id == PCI_DEVICE_ID_INTEL_82801I_UHCI3)) {
|
|
|
26ba25 |
+ fprintf(stderr, "RHEL-6 compat: %s: irq_pin = 3\n", u->info.name);
|
|
|
26ba25 |
+ irq_pin = 3;
|
|
|
26ba25 |
+ } else {
|
|
|
26ba25 |
+ irq_pin = u->info.irq_pin;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+ pci_config_set_interrupt_pin(pci_conf, irq_pin + 1);
|
|
|
26ba25 |
|
|
|
26ba25 |
if (s->masterbus) {
|
|
|
26ba25 |
USBPort *ports[NB_PORTS];
|
|
|
26ba25 |
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
|
|
|
26ba25 |
index 721beb5..883141f 100644
|
|
|
26ba25 |
--- a/hw/usb/hcd-xhci.c
|
|
|
26ba25 |
+++ b/hw/usb/hcd-xhci.c
|
|
|
26ba25 |
@@ -3555,9 +3555,27 @@ static const VMStateDescription vmstate_xhci_slot = {
|
|
|
26ba25 |
}
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
+static int xhci_event_pre_save(void *opaque)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ XHCIEvent *s = opaque;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ s->cve_2014_5263_a = ((uint8_t *)&s->type)[0];
|
|
|
26ba25 |
+ s->cve_2014_5263_b = ((uint8_t *)&s->type)[1];
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ return 0;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+bool migrate_cve_2014_5263_xhci_fields;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static bool xhci_event_cve_2014_5263(void *opaque, int version_id)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ return migrate_cve_2014_5263_xhci_fields;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
static const VMStateDescription vmstate_xhci_event = {
|
|
|
26ba25 |
.name = "xhci-event",
|
|
|
26ba25 |
.version_id = 1,
|
|
|
26ba25 |
+ .pre_save = xhci_event_pre_save,
|
|
|
26ba25 |
.fields = (VMStateField[]) {
|
|
|
26ba25 |
VMSTATE_UINT32(type, XHCIEvent),
|
|
|
26ba25 |
VMSTATE_UINT32(ccode, XHCIEvent),
|
|
|
26ba25 |
@@ -3566,6 +3584,8 @@ static const VMStateDescription vmstate_xhci_event = {
|
|
|
26ba25 |
VMSTATE_UINT32(flags, XHCIEvent),
|
|
|
26ba25 |
VMSTATE_UINT8(slotid, XHCIEvent),
|
|
|
26ba25 |
VMSTATE_UINT8(epid, XHCIEvent),
|
|
|
26ba25 |
+ VMSTATE_UINT8_TEST(cve_2014_5263_a, XHCIEvent, xhci_event_cve_2014_5263),
|
|
|
26ba25 |
+ VMSTATE_UINT8_TEST(cve_2014_5263_b, XHCIEvent, xhci_event_cve_2014_5263),
|
|
|
26ba25 |
VMSTATE_END_OF_LIST()
|
|
|
26ba25 |
}
|
|
|
26ba25 |
};
|
|
|
26ba25 |
diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h
|
|
|
26ba25 |
index fc36a4c..89d4cf7 100644
|
|
|
26ba25 |
--- a/hw/usb/hcd-xhci.h
|
|
|
26ba25 |
+++ b/hw/usb/hcd-xhci.h
|
|
|
26ba25 |
@@ -153,6 +153,8 @@ typedef struct XHCIEvent {
|
|
|
26ba25 |
uint32_t flags;
|
|
|
26ba25 |
uint8_t slotid;
|
|
|
26ba25 |
uint8_t epid;
|
|
|
26ba25 |
+ uint8_t cve_2014_5263_a;
|
|
|
26ba25 |
+ uint8_t cve_2014_5263_b;
|
|
|
26ba25 |
} XHCIEvent;
|
|
|
26ba25 |
|
|
|
26ba25 |
typedef struct XHCIInterrupter {
|
|
|
26ba25 |
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
|
|
|
26ba25 |
index 006d3d1..4bcb4f4 100644
|
|
|
26ba25 |
--- a/hw/virtio/virtio.c
|
|
|
26ba25 |
+++ b/hw/virtio/virtio.c
|
|
|
26ba25 |
@@ -24,6 +24,7 @@
|
|
|
26ba25 |
#include "hw/virtio/virtio-access.h"
|
|
|
26ba25 |
#include "sysemu/dma.h"
|
|
|
26ba25 |
|
|
|
26ba25 |
+#include "standard-headers/linux/virtio_net.h"
|
|
|
26ba25 |
/*
|
|
|
26ba25 |
* The alignment to use between consumer and producer parts of vring.
|
|
|
26ba25 |
* x86 pagesize again. This is the default, used by transports like PCI
|
|
|
26ba25 |
@@ -1991,7 +1992,24 @@ const VMStateInfo virtio_vmstate_info = {
|
|
|
26ba25 |
static int virtio_set_features_nocheck(VirtIODevice *vdev, uint64_t val)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev);
|
|
|
26ba25 |
- bool bad = (val & ~(vdev->host_features)) != 0;
|
|
|
26ba25 |
+ bool bad;
|
|
|
26ba25 |
+ uint64_t ctrl_guest_mask = 1ull << VIRTIO_NET_F_CTRL_GUEST_OFFLOADS;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ if (vdev->rhel6_ctrl_guest_workaround && (val & ctrl_guest_mask) &&
|
|
|
26ba25 |
+ !(vdev->host_features & ctrl_guest_mask)) {
|
|
|
26ba25 |
+ /*
|
|
|
26ba25 |
+ * This works around a mistake in the definition of the rhel6.[56].0
|
|
|
26ba25 |
+ * machinetypes, ctrl-guest-offload was not set in qemu-kvm-rhev for
|
|
|
26ba25 |
+ * those machine types, but is set on the rhel6 qemu-kvm-rhev build.
|
|
|
26ba25 |
+ * If an incoming rhel6 guest uses it then we need to allow it.
|
|
|
26ba25 |
+ * Note: There's a small race where a guest read the flag but didn't
|
|
|
26ba25 |
+ * declare it's useage yet.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ fprintf(stderr, "RHEL6 ctrl_guest_offload workaround\n");
|
|
|
26ba25 |
+ vdev->host_features |= ctrl_guest_mask;
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ bad = (val & ~(vdev->host_features)) != 0;
|
|
|
26ba25 |
|
|
|
26ba25 |
val &= vdev->host_features;
|
|
|
26ba25 |
if (k->set_features) {
|
|
|
26ba25 |
@@ -2566,6 +2584,8 @@ static void virtio_device_instance_finalize(Object *obj)
|
|
|
26ba25 |
|
|
|
26ba25 |
static Property virtio_properties[] = {
|
|
|
26ba25 |
DEFINE_VIRTIO_COMMON_FEATURES(VirtIODevice, host_features),
|
|
|
26ba25 |
+ DEFINE_PROP_BOOL("__com.redhat_rhel6_ctrl_guest_workaround", VirtIODevice,
|
|
|
26ba25 |
+ rhel6_ctrl_guest_workaround, false),
|
|
|
26ba25 |
DEFINE_PROP_END_OF_LIST(),
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
|
|
|
26ba25 |
index 59aeb06..7b5cc25 100644
|
|
|
26ba25 |
--- a/include/hw/acpi/ich9.h
|
|
|
26ba25 |
+++ b/include/hw/acpi/ich9.h
|
|
|
26ba25 |
@@ -61,6 +61,9 @@ typedef struct ICH9LPCPMRegs {
|
|
|
26ba25 |
uint8_t smm_enabled;
|
|
|
26ba25 |
bool enable_tco;
|
|
|
26ba25 |
TCOIORegs tco_regs;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* RH addition, see bz 1489800 */
|
|
|
26ba25 |
+ bool force_rev1_fadt;
|
|
|
26ba25 |
} ICH9LPCPMRegs;
|
|
|
26ba25 |
|
|
|
26ba25 |
#define ACPI_PM_PROP_TCO_ENABLED "enable_tco"
|
|
|
26ba25 |
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
|
|
|
26ba25 |
index ba0c1a4..2e8e78a 100644
|
|
|
26ba25 |
--- a/include/hw/arm/virt.h
|
|
|
26ba25 |
+++ b/include/hw/arm/virt.h
|
|
|
26ba25 |
@@ -109,6 +109,7 @@ typedef struct {
|
|
|
26ba25 |
int psci_conduit;
|
|
|
26ba25 |
} VirtMachineState;
|
|
|
26ba25 |
|
|
|
26ba25 |
+#if 0 /* disabled for Red Hat Enterprise Linux */
|
|
|
26ba25 |
#define TYPE_VIRT_MACHINE MACHINE_TYPE_NAME("virt")
|
|
|
26ba25 |
#define VIRT_MACHINE(obj) \
|
|
|
26ba25 |
OBJECT_CHECK(VirtMachineState, (obj), TYPE_VIRT_MACHINE)
|
|
|
26ba25 |
@@ -117,6 +118,27 @@ typedef struct {
|
|
|
26ba25 |
#define VIRT_MACHINE_CLASS(klass) \
|
|
|
26ba25 |
OBJECT_CLASS_CHECK(VirtMachineClass, klass, TYPE_VIRT_MACHINE)
|
|
|
26ba25 |
|
|
|
26ba25 |
+#else
|
|
|
26ba25 |
+#define TYPE_RHEL_MACHINE MACHINE_TYPE_NAME("virt-rhel")
|
|
|
26ba25 |
+#define VIRT_MACHINE(obj) \
|
|
|
26ba25 |
+ OBJECT_CHECK(VirtMachineState, (obj), TYPE_RHEL_MACHINE)
|
|
|
26ba25 |
+#define VIRT_MACHINE_GET_CLASS(obj) \
|
|
|
26ba25 |
+ OBJECT_GET_CLASS(VirtMachineClass, obj, TYPE_RHEL_MACHINE)
|
|
|
26ba25 |
+#define VIRT_MACHINE_CLASS(klass) \
|
|
|
26ba25 |
+ OBJECT_CLASS_CHECK(VirtMachineClass, klass, TYPE_RHEL_MACHINE)
|
|
|
26ba25 |
+#endif
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* This macro is for changes to properties that are RHEL specific,
|
|
|
26ba25 |
+ * different to the current upstream and to be applied to the latest
|
|
|
26ba25 |
+ * machine type.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define ARM_RHEL_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "romfile",\
|
|
|
26ba25 |
+ .value = "",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
void virt_acpi_setup(VirtMachineState *vms);
|
|
|
26ba25 |
|
|
|
26ba25 |
#endif /* QEMU_ARM_VIRT_H */
|
|
|
26ba25 |
diff --git a/include/hw/compat.h b/include/hw/compat.h
|
|
|
26ba25 |
index 13242b8..de251fd 100644
|
|
|
26ba25 |
--- a/include/hw/compat.h
|
|
|
26ba25 |
+++ b/include/hw/compat.h
|
|
|
26ba25 |
@@ -255,4 +255,195 @@
|
|
|
26ba25 |
.value = "on",\
|
|
|
26ba25 |
},
|
|
|
26ba25 |
|
|
|
26ba25 |
+/* Mostly like HW_COMPAT_2_1 but:
|
|
|
26ba25 |
+ * we don't need virtio-scsi-pci since 7.0 already had that on
|
|
|
26ba25 |
+ *
|
|
|
26ba25 |
+ * RH: Note, qemu-extended-regs should have been enabled in the 7.1
|
|
|
26ba25 |
+ * machine type, but was accidentally turned off in 7.2 onwards.
|
|
|
26ba25 |
+ *
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define HW_COMPAT_RHEL7_1 \
|
|
|
26ba25 |
+ { /* COMPAT_RHEL7.1 */ \
|
|
|
26ba25 |
+ .driver = "intel-hda-generic",\
|
|
|
26ba25 |
+ .property = "old_msi_addr",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "VGA",\
|
|
|
26ba25 |
+ .property = "qemu-extended-regs",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "secondary-vga",\
|
|
|
26ba25 |
+ .property = "qemu-extended-regs",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-mouse",\
|
|
|
26ba25 |
+ .property = "usb_version",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "usb-kbd",\
|
|
|
26ba25 |
+ .property = "usb_version",\
|
|
|
26ba25 |
+ .value = stringify(1),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "virtio-pci-bus-master-bug-migration",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-blk-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-balloon-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-serial-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-9p-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-rng-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_1 - introduced with 2.10.0 */ \
|
|
|
26ba25 |
+ .driver = "migration",\
|
|
|
26ba25 |
+ .property = "send-configuration",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Mostly like HW_COMPAT_2_4 + 2_3 but:
|
|
|
26ba25 |
+ * we don't need "any_layout" as it has been backported to 7.2
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define HW_COMPAT_RHEL7_2 \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-blk-device",\
|
|
|
26ba25 |
+ .property = "scsi",\
|
|
|
26ba25 |
+ .value = "true",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "e1000-82540em",\
|
|
|
26ba25 |
+ .property = "extra_mac_registers",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "x-disable-pcie",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "migrate-extra",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "fw_cfg_mem",\
|
|
|
26ba25 |
+ .property = "dma_enabled",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "fw_cfg_io",\
|
|
|
26ba25 |
+ .property = "dma_enabled",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "isa-fdc",\
|
|
|
26ba25 |
+ .property = "fallback",\
|
|
|
26ba25 |
+ .value = "144",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "disable-modern",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "disable-legacy",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = TYPE_PCI_DEVICE,\
|
|
|
26ba25 |
+ .property = "x-pcie-lnksta-dllla",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "page-per-vq",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 - introduced with 2.10.0 */ \
|
|
|
26ba25 |
+ .driver = "migration",\
|
|
|
26ba25 |
+ .property = "send-section-footer",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_2 - introduced with 2.10.0 */ \
|
|
|
26ba25 |
+ .driver = "migration",\
|
|
|
26ba25 |
+ .property = "store-global-state",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Mostly like HW_COMPAT_2_6 + HW_COMPAT_2_7 + HW_COMPAT_2_8 except
|
|
|
26ba25 |
+ * disable-modern, disable-legacy, page-per-vq have already been
|
|
|
26ba25 |
+ * backported to RHEL7.3
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define HW_COMPAT_RHEL7_3 \
|
|
|
26ba25 |
+ { /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-mmio",\
|
|
|
26ba25 |
+ .property = "format_transport_address",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-serial-device",\
|
|
|
26ba25 |
+ .property = "emergency-write",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "ioapic",\
|
|
|
26ba25 |
+ .property = "version",\
|
|
|
26ba25 |
+ .value = "0x11",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "intel-iommu",\
|
|
|
26ba25 |
+ .property = "x-buggy-eim",\
|
|
|
26ba25 |
+ .value = "true",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "x-ignore-backend-features",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "fw_cfg_mem",\
|
|
|
26ba25 |
+ .property = "x-file-slots",\
|
|
|
26ba25 |
+ .value = stringify(0x10),\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "fw_cfg_io",\
|
|
|
26ba25 |
+ .property = "x-file-slots",\
|
|
|
26ba25 |
+ .value = stringify(0x10),\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "pflash_cfi01",\
|
|
|
26ba25 |
+ .property = "old-multiple-chip-handling",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = TYPE_PCI_DEVICE,\
|
|
|
26ba25 |
+ .property = "x-pcie-extcap-init",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "x-pcie-deverr-init",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "x-pcie-lnkctl-init",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-pci",\
|
|
|
26ba25 |
+ .property = "x-pcie-pm-init",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "virtio-net-device",\
|
|
|
26ba25 |
+ .property = "x-mtu-bypass-backend",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ /* HW_COMPAT_RHEL7_3 */ \
|
|
|
26ba25 |
+ .driver = "e1000e",\
|
|
|
26ba25 |
+ .property = "__redhat_e1000e_7_3_intr_state",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* Mostly like HW_COMPAT_2_9 except
|
|
|
26ba25 |
+ * x-mtu-bypass-backend, x-migrate-msix has already been
|
|
|
26ba25 |
+ * backported to RHEL7.4. shpc was already on in 7.4.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define HW_COMPAT_RHEL7_4 \
|
|
|
26ba25 |
+ { /* HW_COMPAT_RHEL7_4 */ \
|
|
|
26ba25 |
+ .driver = "intel-iommu",\
|
|
|
26ba25 |
+ .property = "pt",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
#endif /* HW_COMPAT_H */
|
|
|
26ba25 |
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
|
|
|
26ba25 |
index ffee841..faddeba 100644
|
|
|
26ba25 |
--- a/include/hw/i386/pc.h
|
|
|
26ba25 |
+++ b/include/hw/i386/pc.h
|
|
|
26ba25 |
@@ -142,6 +142,9 @@ struct PCMachineClass {
|
|
|
26ba25 |
|
|
|
26ba25 |
/* use DMA capable linuxboot option rom */
|
|
|
26ba25 |
bool linuxboot_dma_enabled;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ /* RH only, see bz 1489800 */
|
|
|
26ba25 |
+ bool pc_rom_ro;
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
#define TYPE_PC_MACHINE "generic-pc-machine"
|
|
|
26ba25 |
@@ -947,4 +950,555 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
|
|
|
26ba25 |
type_init(pc_machine_init_##suffix)
|
|
|
26ba25 |
|
|
|
26ba25 |
extern void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* See include/hw/compat.h for shared compatibility lists */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* This macro is for changes to properties that are RHEL specific,
|
|
|
26ba25 |
+ * different to the current upstream and to be applied to the latest
|
|
|
26ba25 |
+ * machine type.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define PC_RHEL_COMPAT \
|
|
|
26ba25 |
+ { /* PC_RHEL_COMPAT */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "host-phys-bits",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL_COMPAT bz 1508330 */ \
|
|
|
26ba25 |
+ .driver = "vfio-pci",\
|
|
|
26ba25 |
+ .property = "x-no-geforce-quirks",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL7_4_COMPAT \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_4 \
|
|
|
26ba25 |
+ { /* PC_RHEL7_4_COMPAT from PC_COMPAT_2_9 */ \
|
|
|
26ba25 |
+ .driver = "mch",\
|
|
|
26ba25 |
+ .property = "extended-tseg-mbytes",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_4_COMPAT bz 1489800 */ \
|
|
|
26ba25 |
+ .driver = "ICH9-LPC",\
|
|
|
26ba25 |
+ .property = "__com.redhat_force-rev1-fadt",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_4_COMPAT from PC_COMPAT_2_10 */ \
|
|
|
26ba25 |
+ .driver = "i440FX-pcihost",\
|
|
|
26ba25 |
+ .property = "x-pci-hole64-fix",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_4_COMPAT from PC_COMPAT_2_10 */ \
|
|
|
26ba25 |
+ .driver = "q35-pcihost",\
|
|
|
26ba25 |
+ .property = "x-pci-hole64-fix",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL7_3_COMPAT \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_3 \
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_8 */ \
|
|
|
26ba25 |
+ .driver = "kvmclock",\
|
|
|
26ba25 |
+ .property = "x-mach-use-reliable-get-clock",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "l3-cache",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "full-cpuid-auto-level",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "family",\
|
|
|
26ba25 |
+ .value = "15",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "model",\
|
|
|
26ba25 |
+ .value = "6",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "stepping",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_7 */ \
|
|
|
26ba25 |
+ .driver = "isa-pcspk",\
|
|
|
26ba25 |
+ .property = "migrate",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_6 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "cpuid-0xb",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_8 */ \
|
|
|
26ba25 |
+ .driver = "ICH9-LPC",\
|
|
|
26ba25 |
+ .property = "x-smi-broadcast",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_8 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vmware-cpuid-freq",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_8 */ \
|
|
|
26ba25 |
+ .driver = "Haswell-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "stepping",\
|
|
|
26ba25 |
+ .value = "1",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_3_COMPAT from PC_COMPAT_2_3 added in 2.9 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "kvm-no-smi-migration",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_4_COMPAT from PC_COMPAT_2_10 */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x-hv-max-vps",\
|
|
|
26ba25 |
+ .value = "0x40",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL7_2_COMPAT \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_2 \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "phenom" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdtscp",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "qemu64" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "sse4a",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "qemu64" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Haswell-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Haswell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Haswell-noTSX-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Haswell-noTSX-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-noTSX-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-noTSX-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "abm",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "host" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "host-cache-info",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "check",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "qemu32" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "popcnt",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "arat",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "usb-redir",\
|
|
|
26ba25 |
+ .property = "streams",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "fill-mtrr-mask",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_2_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "apic-common",\
|
|
|
26ba25 |
+ .property = "legacy-instance-id",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+#define PC_RHEL7_1_COMPAT \
|
|
|
26ba25 |
+ HW_COMPAT_RHEL7_1 \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "kvm64" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "kvm32" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Conroe" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Penryn" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Nehalem" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Nehalem-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "SandyBridge" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "SandyBridge-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Haswell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Haswell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G1" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G2" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G4" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G5" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vme",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Haswell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "f16c",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Haswell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "f16c",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Haswell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdrand",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Haswell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdrand",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "f16c",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "f16c",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdrand",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "rdrand",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "coreduo" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vmx",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "core2duo" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "vmx",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "qemu64" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(4),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "kvm64" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(5),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "pentium3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(2),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "n270" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(5),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Conroe" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(4),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Penryn" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(4),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Nehalem" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-level",\
|
|
|
26ba25 |
+ .value = stringify(4),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "n270" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Penryn" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Conroe" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Nehalem" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "SandyBridge" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "IvyBridge" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Haswell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Haswell-noTSX" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Broadwell" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },{ /* PC_RHEL7_1_COMPAT */ \
|
|
|
26ba25 |
+ .driver = "Broadwell-noTSX" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "min-xlevel",\
|
|
|
26ba25 |
+ .value = stringify(0x8000000a),\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine
|
|
|
26ba25 |
+ * types as the PC_COMPAT_* do for upstream types.
|
|
|
26ba25 |
+ * PC_RHEL_7_*_COMPAT apply both to i440fx and q35 types.
|
|
|
26ba25 |
+ * PC_RHEL6_*_COMPAT apply to i440fx types only, and therefore live
|
|
|
26ba25 |
+ * in pc_piix.c.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * RHEL-7 is based on QEMU 1.5.3, so this needs the PC_COMPAT_*
|
|
|
26ba25 |
+ * between our base and 1.5, less stuff backported to RHEL-7.0
|
|
|
26ba25 |
+ * (usb-device.msos-desc), less stuff for devices we changed
|
|
|
26ba25 |
+ * (qemu64-x86_64-cpu) or don't support (hpet, pci-serial-2x,
|
|
|
26ba25 |
+ * pci-serial-4x) in 7.0.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+#define PC_RHEL7_0_COMPAT \
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "virtio-scsi-pci",\
|
|
|
26ba25 |
+ .property = "any_layout",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "PIIX4_PM",\
|
|
|
26ba25 |
+ .property = "memory-hotplug-support",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "apic",\
|
|
|
26ba25 |
+ .property = "version",\
|
|
|
26ba25 |
+ .value = stringify(0x11),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "nec-usb-xhci",\
|
|
|
26ba25 |
+ .property = "superspeed-ports-first",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "nec-usb-xhci",\
|
|
|
26ba25 |
+ .property = "force-pcie-endcap",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "pci-serial",\
|
|
|
26ba25 |
+ .property = "prog_if",\
|
|
|
26ba25 |
+ .value = stringify(0),\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "virtio-net-pci",\
|
|
|
26ba25 |
+ .property = "guest_announce",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "ICH9-LPC",\
|
|
|
26ba25 |
+ .property = "memory-hotplug-support",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "xio3130-downstream",\
|
|
|
26ba25 |
+ .property = COMPAT_PROP_PCP,\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "ioh3420",\
|
|
|
26ba25 |
+ .property = COMPAT_PROP_PCP,\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "PIIX4_PM",\
|
|
|
26ba25 |
+ .property = "acpi-pci-hotplug-with-bridge-support",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{\
|
|
|
26ba25 |
+ .driver = "e1000",\
|
|
|
26ba25 |
+ .property = "mitigation",\
|
|
|
26ba25 |
+ .value = "off",\
|
|
|
26ba25 |
+ },{ \
|
|
|
26ba25 |
+ .driver = "virtio-net-pci", \
|
|
|
26ba25 |
+ .property = "ctrl_guest_offloads", \
|
|
|
26ba25 |
+ .value = "off", \
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Conroe" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Penryn" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Nehalem" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_0_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Nehalem-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Westmere" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ { /* PC_RHEL7_0_COMPAT (copied from the entry above) */ \
|
|
|
26ba25 |
+ .driver = "Westmere-IBRS" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G1" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G2" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G4" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },\
|
|
|
26ba25 |
+ {\
|
|
|
26ba25 |
+ .driver = "Opteron_G5" "-" TYPE_X86_CPU,\
|
|
|
26ba25 |
+ .property = "x2apic",\
|
|
|
26ba25 |
+ .value = "on",\
|
|
|
26ba25 |
+ },
|
|
|
26ba25 |
#endif
|
|
|
26ba25 |
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
|
|
|
26ba25 |
index d60b7c6..5118af6 100644
|
|
|
26ba25 |
--- a/include/hw/ppc/spapr.h
|
|
|
26ba25 |
+++ b/include/hw/ppc/spapr.h
|
|
|
26ba25 |
@@ -98,6 +98,7 @@ struct sPAPRMachineClass {
|
|
|
26ba25 |
bool dr_lmb_enabled; /* enable dynamic-reconfig/hotplug of LMBs */
|
|
|
26ba25 |
bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
|
|
|
26ba25 |
bool pre_2_10_has_unused_icps;
|
|
|
26ba25 |
+ bool has_power9_support;
|
|
|
26ba25 |
void (*phb_placement)(sPAPRMachineState *spapr, uint32_t index,
|
|
|
26ba25 |
uint64_t *buid, hwaddr *pio,
|
|
|
26ba25 |
hwaddr *mmio32, hwaddr *mmio64,
|
|
|
26ba25 |
diff --git a/include/hw/usb.h b/include/hw/usb.h
|
|
|
26ba25 |
index a5080ad..5b3fb1f 100644
|
|
|
26ba25 |
--- a/include/hw/usb.h
|
|
|
26ba25 |
+++ b/include/hw/usb.h
|
|
|
26ba25 |
@@ -606,4 +606,11 @@ int usb_get_quirks(uint16_t vendor_id, uint16_t product_id,
|
|
|
26ba25 |
uint8_t interface_class, uint8_t interface_subclass,
|
|
|
26ba25 |
uint8_t interface_protocol);
|
|
|
26ba25 |
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* hcd-uhci.c -- RHEL-6 machine type compatibility */
|
|
|
26ba25 |
+extern bool ich9_uhci123_irqpin_override;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+/* hcd-xhci.c -- rhel7.0.0 machine type compatibility */
|
|
|
26ba25 |
+extern bool migrate_cve_2014_5263_xhci_fields;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
#endif
|
|
|
26ba25 |
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
|
|
|
26ba25 |
index 098bdaa..41e13d2 100644
|
|
|
26ba25 |
--- a/include/hw/virtio/virtio.h
|
|
|
26ba25 |
+++ b/include/hw/virtio/virtio.h
|
|
|
26ba25 |
@@ -95,6 +95,7 @@ struct VirtIODevice
|
|
|
26ba25 |
uint8_t device_endian;
|
|
|
26ba25 |
bool use_guest_notifier_mask;
|
|
|
26ba25 |
AddressSpace *dma_as;
|
|
|
26ba25 |
+ bool rhel6_ctrl_guest_workaround;
|
|
|
26ba25 |
QLIST_HEAD(, VirtQueue) *vector_queues;
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
|
|
|
26ba25 |
index 2b42151..5832c38 100644
|
|
|
26ba25 |
--- a/include/sysemu/sysemu.h
|
|
|
26ba25 |
+++ b/include/sysemu/sysemu.h
|
|
|
26ba25 |
@@ -94,6 +94,8 @@ void qemu_add_machine_init_done_notifier(Notifier *notify);
|
|
|
26ba25 |
void qemu_remove_machine_init_done_notifier(Notifier *notify);
|
|
|
26ba25 |
|
|
|
26ba25 |
void qemu_announce_self(void);
|
|
|
26ba25 |
+extern bool shadow_bios_after_incoming;
|
|
|
26ba25 |
+void shadow_bios(void);
|
|
|
26ba25 |
|
|
|
26ba25 |
extern int autostart;
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/migration/migration.c b/migration/migration.c
|
|
|
26ba25 |
index 52a5092..ceb1697 100644
|
|
|
26ba25 |
--- a/migration/migration.c
|
|
|
26ba25 |
+++ b/migration/migration.c
|
|
|
26ba25 |
@@ -99,6 +99,8 @@ enum mig_rp_message_type {
|
|
|
26ba25 |
MIG_RP_MSG_MAX
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
+bool migrate_pre_2_2;
|
|
|
26ba25 |
+
|
|
|
26ba25 |
/* When we add fault tolerance, we could have several
|
|
|
26ba25 |
migrations at once. For now we don't need to add
|
|
|
26ba25 |
dynamic creation of migration */
|
|
|
26ba25 |
diff --git a/migration/migration.h b/migration/migration.h
|
|
|
26ba25 |
index 8d2f320..06833d7 100644
|
|
|
26ba25 |
--- a/migration/migration.h
|
|
|
26ba25 |
+++ b/migration/migration.h
|
|
|
26ba25 |
@@ -241,5 +241,10 @@ int migrate_send_rp_req_pages(MigrationIncomingState *mis, const char* rbname,
|
|
|
26ba25 |
|
|
|
26ba25 |
void dirty_bitmap_mig_before_vm_start(void);
|
|
|
26ba25 |
void init_dirty_bitmap_incoming_migration(void);
|
|
|
26ba25 |
+/*
|
|
|
26ba25 |
+ * Disables a load of subsections that were added in 2.2/rh7.2 for backwards
|
|
|
26ba25 |
+ * migration compatibility.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+extern bool migrate_pre_2_2;
|
|
|
26ba25 |
|
|
|
26ba25 |
#endif
|
|
|
26ba25 |
diff --git a/migration/savevm.c b/migration/savevm.c
|
|
|
26ba25 |
index e2be02a..56c9feb 100644
|
|
|
26ba25 |
--- a/migration/savevm.c
|
|
|
26ba25 |
+++ b/migration/savevm.c
|
|
|
26ba25 |
@@ -45,6 +45,7 @@
|
|
|
26ba25 |
#include "qapi/qapi-commands-misc.h"
|
|
|
26ba25 |
#include "qapi/qmp/qerror.h"
|
|
|
26ba25 |
#include "qemu/error-report.h"
|
|
|
26ba25 |
+#include "qemu/rcu_queue.h"
|
|
|
26ba25 |
#include "sysemu/cpus.h"
|
|
|
26ba25 |
#include "exec/memory.h"
|
|
|
26ba25 |
#include "exec/target_page.h"
|
|
|
26ba25 |
@@ -83,6 +84,7 @@ enum qemu_vm_cmd {
|
|
|
26ba25 |
MIG_CMD_PACKAGED, /* Send a wrapped stream within this stream */
|
|
|
26ba25 |
MIG_CMD_MAX
|
|
|
26ba25 |
};
|
|
|
26ba25 |
+bool shadow_bios_after_incoming;
|
|
|
26ba25 |
|
|
|
26ba25 |
#define MAX_VM_CMD_PACKAGED_SIZE UINT32_MAX
|
|
|
26ba25 |
static struct mig_cmd_args {
|
|
|
26ba25 |
@@ -2204,6 +2206,13 @@ int qemu_loadvm_state(QEMUFile *f)
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
qemu_loadvm_state_cleanup();
|
|
|
26ba25 |
+ /* Supplement SeaBIOS's shadowing now, because it was useless when the
|
|
|
26ba25 |
+ * incoming VM started on the RHEL-6 emulator.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ if (shadow_bios_after_incoming) {
|
|
|
26ba25 |
+ shadow_bios();
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
cpu_synchronize_all_post_init();
|
|
|
26ba25 |
|
|
|
26ba25 |
return ret;
|
|
|
26ba25 |
diff --git a/numa.c b/numa.c
|
|
|
26ba25 |
index 1116c90..daf10d8 100644
|
|
|
26ba25 |
--- a/numa.c
|
|
|
26ba25 |
+++ b/numa.c
|
|
|
26ba25 |
@@ -493,6 +493,19 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
|
|
|
26ba25 |
return;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+ /* The shadow_bios_after_incoming hack at savevm.c:shadow_bios() is not
|
|
|
26ba25 |
+ * able to handle the multiple memory blocks added when using NUMA
|
|
|
26ba25 |
+ * memdevs. We can disallow -numa memdev= when using rhel6.* machine-types
|
|
|
26ba25 |
+ * because RHEL-6 didn't support the NUMA memdev option.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
+ if (shadow_bios_after_incoming) {
|
|
|
26ba25 |
+ MachineClass *mc;
|
|
|
26ba25 |
+ mc = MACHINE_GET_CLASS(current_machine);
|
|
|
26ba25 |
+ error_report("-numa memdev is not supported by machine %s",
|
|
|
26ba25 |
+ mc->name);
|
|
|
26ba25 |
+ exit(1);
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+
|
|
|
26ba25 |
memory_region_init(mr, owner, name, ram_size);
|
|
|
26ba25 |
for (i = 0; i < nb_numa_nodes; i++) {
|
|
|
26ba25 |
uint64_t size = numa_info[i].node_mem;
|
|
|
26ba25 |
diff --git a/qdev-monitor.c b/qdev-monitor.c
|
|
|
26ba25 |
index 61e0300..f439b83 100644
|
|
|
26ba25 |
--- a/qdev-monitor.c
|
|
|
26ba25 |
+++ b/qdev-monitor.c
|
|
|
26ba25 |
@@ -47,7 +47,6 @@ typedef struct QDevAlias
|
|
|
26ba25 |
|
|
|
26ba25 |
/* Please keep this table sorted by typename. */
|
|
|
26ba25 |
static const QDevAlias qdev_alias_table[] = {
|
|
|
26ba25 |
- { "e1000", "e1000-82540em" },
|
|
|
26ba25 |
{ "ich9-ahci", "ahci" },
|
|
|
26ba25 |
{ "lsi53c895a", "lsi" },
|
|
|
26ba25 |
{ "virtio-9p-ccw", "virtio-9p", QEMU_ARCH_S390X },
|
|
|
26ba25 |
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
|
|
|
26ba25 |
index bcef7ee..ffb13d1 100755
|
|
|
26ba25 |
--- a/scripts/vmstate-static-checker.py
|
|
|
26ba25 |
+++ b/scripts/vmstate-static-checker.py
|
|
|
26ba25 |
@@ -104,7 +104,6 @@ def get_changed_sec_name(sec):
|
|
|
26ba25 |
# Section names can change -- see commit 292b1634 for an example.
|
|
|
26ba25 |
changes = {
|
|
|
26ba25 |
"ICH9 LPC": "ICH9-LPC",
|
|
|
26ba25 |
- "e1000-82540em": "e1000",
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
for item in changes:
|
|
|
26ba25 |
diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
|
|
|
26ba25 |
index dfdfca7..8f111c5 100644
|
|
|
26ba25 |
--- a/stubs/Makefile.objs
|
|
|
26ba25 |
+++ b/stubs/Makefile.objs
|
|
|
26ba25 |
@@ -44,3 +44,4 @@ stub-obj-y += xen-hvm.o
|
|
|
26ba25 |
stub-obj-y += pci-host-piix.o
|
|
|
26ba25 |
stub-obj-y += ram-block.o
|
|
|
26ba25 |
stub-obj-y += ide-isa.o
|
|
|
26ba25 |
+stub-obj-y += shadow-bios.o
|
|
|
26ba25 |
diff --git a/stubs/shadow-bios.c b/stubs/shadow-bios.c
|
|
|
26ba25 |
new file mode 100644
|
|
|
26ba25 |
index 0000000..c77cd7a
|
|
|
26ba25 |
--- /dev/null
|
|
|
26ba25 |
+++ b/stubs/shadow-bios.c
|
|
|
26ba25 |
@@ -0,0 +1,7 @@
|
|
|
26ba25 |
+#include "qemu/osdep.h"
|
|
|
26ba25 |
+#include "sysemu/sysemu.h"
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+void shadow_bios(void)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ abort();
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
|
|
|
26ba25 |
index f483a71..a9db495 100644
|
|
|
26ba25 |
--- a/target/i386/cpu.c
|
|
|
26ba25 |
+++ b/target/i386/cpu.c
|
|
|
26ba25 |
@@ -819,11 +819,17 @@ struct X86CPUDefinition {
|
|
|
26ba25 |
|
|
|
26ba25 |
static X86CPUDefinition builtin_x86_defs[] = {
|
|
|
26ba25 |
{
|
|
|
26ba25 |
+ /* qemu64 is the default CPU model for all *-rhel7.* machine-types.
|
|
|
26ba25 |
+ * The default on RHEL-6 was cpu64-rhel6.
|
|
|
26ba25 |
+ * libvirt assumes that qemu64 is the default for _all_ machine-types,
|
|
|
26ba25 |
+ * so we should try to keep qemu64 and cpu64-rhel6 as similar as
|
|
|
26ba25 |
+ * possible.
|
|
|
26ba25 |
+ */
|
|
|
26ba25 |
.name = "qemu64",
|
|
|
26ba25 |
.level = 0xd,
|
|
|
26ba25 |
.vendor = CPUID_VENDOR_AMD,
|
|
|
26ba25 |
.family = 6,
|
|
|
26ba25 |
- .model = 6,
|
|
|
26ba25 |
+ .model = 13,
|
|
|
26ba25 |
.stepping = 3,
|
|
|
26ba25 |
.features[FEAT_1_EDX] = CPUID_SSE2 | CPUID_SSE | CPUID_FXSR |
|
|
|
26ba25 |
CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV |
|
|
|
26ba25 |
@@ -2097,6 +2103,7 @@ static PropValue kvm_default_props[] = {
|
|
|
26ba25 |
{ "acpi", "off" },
|
|
|
26ba25 |
{ "monitor", "off" },
|
|
|
26ba25 |
{ "svm", "off" },
|
|
|
26ba25 |
+ { "kvm-pv-unhalt", "on" },
|
|
|
26ba25 |
{ NULL, NULL },
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/target/i386/machine.c b/target/i386/machine.c
|
|
|
26ba25 |
index bd2d82e..c9a3b5c 100644
|
|
|
26ba25 |
--- a/target/i386/machine.c
|
|
|
26ba25 |
+++ b/target/i386/machine.c
|
|
|
26ba25 |
@@ -893,6 +893,26 @@ static const VMStateDescription vmstate_msr_intel_pt = {
|
|
|
26ba25 |
}
|
|
|
26ba25 |
};
|
|
|
26ba25 |
|
|
|
26ba25 |
+static bool vmstate_xsave_needed(void *opaque)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ /* The xsave state is already on the main "cpu" section */
|
|
|
26ba25 |
+ return false;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+static const VMStateDescription vmstate_xsave ={
|
|
|
26ba25 |
+ .name = "cpu/xsave",
|
|
|
26ba25 |
+ .version_id = 1,
|
|
|
26ba25 |
+ .minimum_version_id = 1,
|
|
|
26ba25 |
+ .minimum_version_id_old = 1,
|
|
|
26ba25 |
+ .needed = vmstate_xsave_needed,
|
|
|
26ba25 |
+ .fields = (VMStateField []) {
|
|
|
26ba25 |
+ VMSTATE_UINT64_V(env.xcr0, X86CPU, 1),
|
|
|
26ba25 |
+ VMSTATE_UINT64_V(env.xstate_bv, X86CPU, 1),
|
|
|
26ba25 |
+ VMSTATE_YMMH_REGS_VARS(env.xmm_regs, X86CPU, CPU_NB_REGS, 1),
|
|
|
26ba25 |
+ VMSTATE_END_OF_LIST()
|
|
|
26ba25 |
+ }
|
|
|
26ba25 |
+};
|
|
|
26ba25 |
+
|
|
|
26ba25 |
VMStateDescription vmstate_x86_cpu = {
|
|
|
26ba25 |
.name = "cpu",
|
|
|
26ba25 |
.version_id = 12,
|
|
|
26ba25 |
@@ -1015,6 +1035,7 @@ VMStateDescription vmstate_x86_cpu = {
|
|
|
26ba25 |
&vmstate_spec_ctrl,
|
|
|
26ba25 |
&vmstate_mcg_ext_ctl,
|
|
|
26ba25 |
&vmstate_msr_intel_pt,
|
|
|
26ba25 |
+ &vmstate_xsave,
|
|
|
26ba25 |
NULL
|
|
|
26ba25 |
}
|
|
|
26ba25 |
};
|
|
|
26ba25 |
diff --git a/target/ppc/compat.c b/target/ppc/compat.c
|
|
|
26ba25 |
index 807c906..33658fb 100644
|
|
|
26ba25 |
--- a/target/ppc/compat.c
|
|
|
26ba25 |
+++ b/target/ppc/compat.c
|
|
|
26ba25 |
@@ -105,6 +105,17 @@ static const CompatInfo *compat_by_pvr(uint32_t pvr)
|
|
|
26ba25 |
return NULL;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
+long ppc_compat_cmp(uint32_t pvr1, uint32_t pvr2)
|
|
|
26ba25 |
+{
|
|
|
26ba25 |
+ const CompatInfo *compat1 = compat_by_pvr(pvr1);
|
|
|
26ba25 |
+ const CompatInfo *compat2 = compat_by_pvr(pvr2);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ g_assert(compat1);
|
|
|
26ba25 |
+ g_assert(compat2);
|
|
|
26ba25 |
+
|
|
|
26ba25 |
+ return compat1 - compat2;
|
|
|
26ba25 |
+}
|
|
|
26ba25 |
+
|
|
|
26ba25 |
bool ppc_check_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
|
|
|
26ba25 |
uint32_t min_compat_pvr, uint32_t max_compat_pvr)
|
|
|
26ba25 |
{
|
|
|
26ba25 |
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
|
|
|
26ba25 |
index c621a6b..1932c2e 100644
|
|
|
26ba25 |
--- a/target/ppc/cpu.h
|
|
|
26ba25 |
+++ b/target/ppc/cpu.h
|
|
|
26ba25 |
@@ -1391,6 +1391,7 @@ static inline int cpu_mmu_index (CPUPPCState *env, bool ifetch)
|
|
|
26ba25 |
|
|
|
26ba25 |
/* Compatibility modes */
|
|
|
26ba25 |
#if defined(TARGET_PPC64)
|
|
|
26ba25 |
+long ppc_compat_cmp(uint32_t pvr1, uint32_t pvr2);
|
|
|
26ba25 |
bool ppc_check_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
|
|
|
26ba25 |
uint32_t min_compat_pvr, uint32_t max_compat_pvr);
|
|
|
26ba25 |
void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp);
|
|
|
26ba25 |
diff --git a/tests/Makefile.include b/tests/Makefile.include
|
|
|
26ba25 |
index 3fd4706..0464e52 100644
|
|
|
26ba25 |
--- a/tests/Makefile.include
|
|
|
26ba25 |
+++ b/tests/Makefile.include
|
|
|
26ba25 |
@@ -331,14 +331,14 @@ check-qtest-ppc-y += tests/boot-order-test$(EXESUF)
|
|
|
26ba25 |
#check-qtest-ppc-y += tests/prom-env-test$(EXESUF)
|
|
|
26ba25 |
check-qtest-ppc-y += tests/drive_del-test$(EXESUF)
|
|
|
26ba25 |
check-qtest-ppc-y += tests/boot-serial-test$(EXESUF)
|
|
|
26ba25 |
-check-qtest-ppc-y += tests/m48t59-test$(EXESUF)
|
|
|
26ba25 |
-gcov-files-ppc-y += hw/timer/m48t59.c
|
|
|
26ba25 |
+#check-qtest-ppc-y += tests/m48t59-test$(EXESUF)
|
|
|
26ba25 |
+#gcov-files-ppc-y += hw/timer/m48t59.c
|
|
|
26ba25 |
|
|
|
26ba25 |
check-qtest-ppc64-y = $(check-qtest-ppc-y)
|
|
|
26ba25 |
gcov-files-ppc64-y = $(subst ppc-softmmu/,ppc64-softmmu/,$(gcov-files-ppc-y))
|
|
|
26ba25 |
check-qtest-ppc64-y += tests/spapr-phb-test$(EXESUF)
|
|
|
26ba25 |
gcov-files-ppc64-y += ppc64-softmmu/hw/ppc/spapr_pci.c
|
|
|
26ba25 |
-check-qtest-ppc64-y += tests/pnv-xscom-test$(EXESUF)
|
|
|
26ba25 |
+#check-qtest-ppc64-y += tests/pnv-xscom-test$(EXESUF)
|
|
|
26ba25 |
check-qtest-ppc64-y += tests/migration-test$(EXESUF)
|
|
|
26ba25 |
check-qtest-ppc64-y += tests/rtas-test$(EXESUF)
|
|
|
26ba25 |
check-qtest-ppc64-$(CONFIG_SLIRP) += tests/pxe-test$(EXESUF)
|
|
|
26ba25 |
@@ -754,7 +754,7 @@ libqos-virtio-obj-y = $(libqos-spapr-obj-y) $(libqos-pc-obj-y) tests/libqos/virt
|
|
|
26ba25 |
tests/qmp-test$(EXESUF): tests/qmp-test.o
|
|
|
26ba25 |
tests/device-introspect-test$(EXESUF): tests/device-introspect-test.o
|
|
|
26ba25 |
tests/rtc-test$(EXESUF): tests/rtc-test.o
|
|
|
26ba25 |
-tests/m48t59-test$(EXESUF): tests/m48t59-test.o
|
|
|
26ba25 |
+#tests/m48t59-test$(EXESUF): tests/m48t59-test.o
|
|
|
26ba25 |
tests/endianness-test$(EXESUF): tests/endianness-test.o
|
|
|
26ba25 |
tests/spapr-phb-test$(EXESUF): tests/spapr-phb-test.o $(libqos-obj-y)
|
|
|
26ba25 |
#tests/prom-env-test$(EXESUF): tests/prom-env-test.o $(libqos-obj-y)
|
|
|
26ba25 |
diff --git a/tests/cpu-plug-test.c b/tests/cpu-plug-test.c
|
|
|
26ba25 |
index 8b5ab1f..112869b 100644
|
|
|
26ba25 |
--- a/tests/cpu-plug-test.c
|
|
|
26ba25 |
+++ b/tests/cpu-plug-test.c
|
|
|
26ba25 |
@@ -192,7 +192,8 @@ static void add_pseries_test_case(const char *mname)
|
|
|
26ba25 |
PlugTestData *data;
|
|
|
26ba25 |
|
|
|
26ba25 |
if (!g_str_has_prefix(mname, "pseries-") ||
|
|
|
26ba25 |
- (g_str_has_prefix(mname, "pseries-2.") && atoi(&mname[10]) < 7)) {
|
|
|
26ba25 |
+ (g_str_has_prefix(mname, "pseries-2.") && atoi(&mname[10]) < 7) ||
|
|
|
26ba25 |
+ strcmp(mname,"pseries-rhel7.2.0") == 0) {
|
|
|
26ba25 |
return;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
data = g_new(PlugTestData, 1);
|
|
|
26ba25 |
--
|
|
|
26ba25 |
1.8.3.1
|
|
|
26ba25 |
|