mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu into staging
virtio,pc,pci: features, cleanups, fixes make TCO watchdog work by default part of generic vdpa support asid interrupt for vhost-vdpa added flex bus port DVSEC for cxl misc fixes, cleanups, documentation Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Wed 21 Dec 2022 12:32:36 GMT # gpg: using RSA key 5D09FD0871C8F85B94CA8A0D281F0DB8D28D5469 # gpg: issuer "mst@redhat.com" # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full] # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full] # Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67 # Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469 * tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu: (41 commits) contrib/vhost-user-blk: Replace lseek64 with lseek libvhost-user: Switch to unsigned int for inuse field in struct VuVirtq hw/virtio: Extract QMP related code virtio-qmp.c hw/virtio: Extract config read/write accessors to virtio-config-io.c hw/virtio: Constify qmp_virtio_feature_map_t[] hw/virtio: Guard and restrict scope of qmp_virtio_feature_map_t[] hw/virtio: Rename virtio_ss[] -> specific_virtio_ss[] hw/virtio: Add missing "hw/core/cpu.h" include hw/cxl/device: Add Flex Bus Port DVSEC hw/acpi: Rename tco.c -> ich9_tco.c acpi/tests/avocado/bits: add mformat as one of the dependencies docs/acpi/bits: document BITS_DEBUG environment variable pci: drop redundant PCIDeviceClass::is_bridge field remove DEC 21154 PCI bridge vhost: fix vq dirty bitmap syncing when vIOMMU is enabled acpi/tests/avocado/bits: add SPDX license identifiers for bios bits tests include/hw: attempt to document VirtIO feature variables vhost-user: send set log base message only once vdpa: always start CVQ in SVQ mode if possible vdpa: add shadow_data to vhost_vdpa ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
+2
-2
@@ -1659,8 +1659,8 @@ F: hw/isa/piix3.c
|
||||
F: hw/isa/lpc_ich9.c
|
||||
F: hw/i2c/smbus_ich9.c
|
||||
F: hw/acpi/piix4.c
|
||||
F: hw/acpi/ich9.c
|
||||
F: include/hw/acpi/ich9.h
|
||||
F: hw/acpi/ich9*.c
|
||||
F: include/hw/acpi/ich9*.h
|
||||
F: include/hw/southbridge/piix.h
|
||||
F: hw/misc/sga.c
|
||||
F: hw/isa/apm.c
|
||||
|
||||
@@ -532,9 +532,9 @@ vub_get_blocksize(int fd)
|
||||
static void
|
||||
vub_initialize_config(int fd, struct virtio_blk_config *config)
|
||||
{
|
||||
off64_t capacity;
|
||||
off_t capacity;
|
||||
|
||||
capacity = lseek64(fd, 0, SEEK_END);
|
||||
capacity = lseek(fd, 0, SEEK_END);
|
||||
config->capacity = capacity >> 9;
|
||||
config->blk_size = vub_get_blocksize(fd);
|
||||
config->size_max = 65536;
|
||||
|
||||
@@ -52,6 +52,9 @@ Under ``tests/avocado/`` as the root we have:
|
||||
for their tests. In order to enable debugging, you can set **V=1**
|
||||
environment variable. This enables verbose mode for the test and also dumps
|
||||
the entire log from bios bits and more information in case failure happens.
|
||||
You can also set **BITS_DEBUG=1** to turn on debug mode. It will enable
|
||||
verbose logs and also retain the temporary work directory the test used for
|
||||
you to inspect and run the specific commands manually.
|
||||
|
||||
In order to run this test, please perform the following steps from the QEMU
|
||||
build directory:
|
||||
|
||||
+5
-3
@@ -34,7 +34,7 @@
|
||||
#include "sysemu/reset.h"
|
||||
#include "sysemu/runstate.h"
|
||||
#include "hw/acpi/acpi.h"
|
||||
#include "hw/acpi/tco.h"
|
||||
#include "hw/acpi/ich9_tco.h"
|
||||
|
||||
#include "hw/i386/ich9.h"
|
||||
#include "hw/mem/pc-dimm.h"
|
||||
@@ -316,8 +316,9 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
|
||||
|
||||
pm->smm_enabled = smm_enabled;
|
||||
|
||||
pm->enable_tco = true;
|
||||
acpi_pm_tco_init(&pm->tco_regs, &pm->io);
|
||||
if (pm->enable_tco) {
|
||||
acpi_pm_tco_init(&pm->tco_regs, &pm->io);
|
||||
}
|
||||
|
||||
if (pm->use_acpi_hotplug_bridge) {
|
||||
acpi_pcihp_init(OBJECT(lpc_pci),
|
||||
@@ -440,6 +441,7 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm)
|
||||
pm->s4_val = 2;
|
||||
pm->use_acpi_hotplug_bridge = true;
|
||||
pm->keep_pci_slot_hpc = true;
|
||||
pm->enable_tco = true;
|
||||
|
||||
object_property_add_uint32_ptr(obj, ACPI_PM_PROP_PM_IO_BASE,
|
||||
&pm->pm_io_base, OBJ_PROP_FLAG_READ);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "hw/i386/ich9.h"
|
||||
#include "migration/vmstate.h"
|
||||
|
||||
#include "hw/acpi/tco.h"
|
||||
#include "hw/acpi/ich9_tco.h"
|
||||
#include "trace.h"
|
||||
|
||||
enum {
|
||||
@@ -86,6 +86,7 @@ static inline int can_start_tco_timer(TCOIORegs *tr)
|
||||
static uint32_t tco_ioport_readw(TCOIORegs *tr, uint32_t addr)
|
||||
{
|
||||
uint16_t rld;
|
||||
uint32_t ret = 0;
|
||||
|
||||
switch (addr) {
|
||||
case TCO_RLD:
|
||||
@@ -96,35 +97,49 @@ static uint32_t tco_ioport_readw(TCOIORegs *tr, uint32_t addr)
|
||||
} else {
|
||||
rld = tr->tco.rld;
|
||||
}
|
||||
return rld;
|
||||
ret = rld;
|
||||
break;
|
||||
case TCO_DAT_IN:
|
||||
return tr->tco.din;
|
||||
ret = tr->tco.din;
|
||||
break;
|
||||
case TCO_DAT_OUT:
|
||||
return tr->tco.dout;
|
||||
ret = tr->tco.dout;
|
||||
break;
|
||||
case TCO1_STS:
|
||||
return tr->tco.sts1;
|
||||
ret = tr->tco.sts1;
|
||||
break;
|
||||
case TCO2_STS:
|
||||
return tr->tco.sts2;
|
||||
ret = tr->tco.sts2;
|
||||
break;
|
||||
case TCO1_CNT:
|
||||
return tr->tco.cnt1;
|
||||
ret = tr->tco.cnt1;
|
||||
break;
|
||||
case TCO2_CNT:
|
||||
return tr->tco.cnt2;
|
||||
ret = tr->tco.cnt2;
|
||||
break;
|
||||
case TCO_MESSAGE1:
|
||||
return tr->tco.msg1;
|
||||
ret = tr->tco.msg1;
|
||||
break;
|
||||
case TCO_MESSAGE2:
|
||||
return tr->tco.msg2;
|
||||
ret = tr->tco.msg2;
|
||||
break;
|
||||
case TCO_WDCNT:
|
||||
return tr->tco.wdcnt;
|
||||
ret = tr->tco.wdcnt;
|
||||
break;
|
||||
case TCO_TMR:
|
||||
return tr->tco.tmr;
|
||||
ret = tr->tco.tmr;
|
||||
break;
|
||||
case SW_IRQ_GEN:
|
||||
return tr->sw_irq_gen;
|
||||
ret = tr->sw_irq_gen;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
trace_tco_io_read(addr, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void tco_ioport_writew(TCOIORegs *tr, uint32_t addr, uint32_t val)
|
||||
{
|
||||
trace_tco_io_write(addr, val);
|
||||
switch (addr) {
|
||||
case TCO_RLD:
|
||||
tr->timeouts_no = 0;
|
||||
+1
-1
@@ -22,7 +22,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_PIIX4', if_true: files('piix4.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_true: files('pcihp.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_false: files('acpi-pci-hotplug-stub.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_VIOT', if_true: files('viot.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_X86_ICH', if_true: files('ich9.c', 'tco.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_X86_ICH', if_true: files('ich9.c', 'ich9_tco.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_ERST', if_true: files('erst.c'))
|
||||
acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c'), if_false: files('ipmi-stub.c'))
|
||||
acpi_ss.add(when: 'CONFIG_PC', if_false: files('acpi-x86-stub.c'))
|
||||
|
||||
+1
-2
@@ -186,7 +186,6 @@ static PCIBus *acpi_pcihp_find_hotplug_bus(AcpiPciHpState *s, int bsel)
|
||||
|
||||
static bool acpi_pcihp_pc_no_hotplug(AcpiPciHpState *s, PCIDevice *dev)
|
||||
{
|
||||
PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
|
||||
DeviceClass *dc = DEVICE_GET_CLASS(dev);
|
||||
/*
|
||||
* ACPI doesn't allow hotplug of bridge devices. Don't allow
|
||||
@@ -196,7 +195,7 @@ static bool acpi_pcihp_pc_no_hotplug(AcpiPciHpState *s, PCIDevice *dev)
|
||||
* Don't allow hot-unplug of SR-IOV Virtual Functions, as they
|
||||
* will be removed implicitly, when Physical Function is unplugged.
|
||||
*/
|
||||
return (pc->is_bridge && !dev->qdev.hotplugged) || !dc->hotpluggable ||
|
||||
return (IS_PCI_BRIDGE(dev) && !dev->qdev.hotplugged) || !dc->hotpluggable ||
|
||||
pci_is_vf(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,8 @@ piix4_gpe_writeb(uint64_t addr, unsigned width, uint64_t val) "addr: 0x%" PRIx64
|
||||
# tco.c
|
||||
tco_timer_reload(int ticks, int msec) "ticks=%d (%d ms)"
|
||||
tco_timer_expired(int timeouts_no, bool strap, bool no_reboot) "timeouts_no=%d no_reboot=%d/%d"
|
||||
tco_io_write(uint64_t addr, uint32_t val) "addr=0x%" PRIx64 " val=0x%" PRIx32
|
||||
tco_io_read(uint64_t addr, uint32_t val) "addr=0x%" PRIx64 " val=0x%" PRIx32
|
||||
|
||||
# erst.c
|
||||
acpi_erst_reg_write(uint64_t addr, uint64_t val, unsigned size) "addr: 0x%04" PRIx64 " <== 0x%016" PRIx64 " (size: %u)"
|
||||
|
||||
+9
-2
@@ -3218,10 +3218,17 @@ static void machvirt_machine_init(void)
|
||||
}
|
||||
type_init(machvirt_machine_init);
|
||||
|
||||
static void virt_machine_7_2_options(MachineClass *mc)
|
||||
static void virt_machine_8_0_options(MachineClass *mc)
|
||||
{
|
||||
}
|
||||
DEFINE_VIRT_MACHINE_AS_LATEST(7, 2)
|
||||
DEFINE_VIRT_MACHINE_AS_LATEST(8, 0)
|
||||
|
||||
static void virt_machine_7_2_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_8_0_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_7_2, hw_compat_7_2_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 2)
|
||||
|
||||
static void virt_machine_7_1_options(MachineClass *mc)
|
||||
{
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
#include "hw/virtio/virtio-pci.h"
|
||||
#include "qom/object_interfaces.h"
|
||||
|
||||
GlobalProperty hw_compat_7_2[] = {};
|
||||
const size_t hw_compat_7_2_len = G_N_ELEMENTS(hw_compat_7_2);
|
||||
|
||||
GlobalProperty hw_compat_7_1[] = {
|
||||
{ "virtio-device", "queue_reset", "false" },
|
||||
};
|
||||
|
||||
@@ -403,7 +403,6 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus,
|
||||
|
||||
for (devfn = 0; devfn < ARRAY_SIZE(bus->devices); devfn++) {
|
||||
DeviceClass *dc;
|
||||
PCIDeviceClass *pc;
|
||||
PCIDevice *pdev = bus->devices[devfn];
|
||||
int slot = PCI_SLOT(devfn);
|
||||
int func = PCI_FUNC(devfn);
|
||||
@@ -414,14 +413,14 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus,
|
||||
bool cold_plugged_bridge = false;
|
||||
|
||||
if (pdev) {
|
||||
pc = PCI_DEVICE_GET_CLASS(pdev);
|
||||
dc = DEVICE_GET_CLASS(pdev);
|
||||
|
||||
/*
|
||||
* Cold plugged bridges aren't themselves hot-pluggable.
|
||||
* Hotplugged bridges *are* hot-pluggable.
|
||||
*/
|
||||
cold_plugged_bridge = pc->is_bridge && !DEVICE(pdev)->hotplugged;
|
||||
cold_plugged_bridge = IS_PCI_BRIDGE(pdev) &&
|
||||
!DEVICE(pdev)->hotplugged;
|
||||
bridge_in_acpi = cold_plugged_bridge && pcihp_bridge_en;
|
||||
|
||||
hotpluggbale_slot = bsel && dc->hotpluggable &&
|
||||
|
||||
@@ -107,6 +107,11 @@
|
||||
{ "qemu64-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },\
|
||||
{ "athlon-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },
|
||||
|
||||
GlobalProperty pc_compat_7_2[] = {
|
||||
{ "ICH9-LPC", "noreboot", "true" },
|
||||
};
|
||||
const size_t pc_compat_7_2_len = G_N_ELEMENTS(pc_compat_7_2);
|
||||
|
||||
GlobalProperty pc_compat_7_1[] = {};
|
||||
const size_t pc_compat_7_1_len = G_N_ELEMENTS(pc_compat_7_1);
|
||||
|
||||
|
||||
+14
-27
@@ -426,6 +426,7 @@ static void pc_i440fx_machine_options(MachineClass *m)
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pcmc->default_nic_model = "e1000";
|
||||
pcmc->pci_root_uid = 0;
|
||||
pcmc->default_cpu_version = 1;
|
||||
|
||||
m->family = "pc_piix";
|
||||
m->desc = "Standard PC (i440FX + PIIX, 1996)";
|
||||
@@ -435,13 +436,23 @@ static void pc_i440fx_machine_options(MachineClass *m)
|
||||
machine_class_allow_dynamic_sysbus_dev(m, TYPE_VMBUS_BRIDGE);
|
||||
}
|
||||
|
||||
static void pc_i440fx_7_2_machine_options(MachineClass *m)
|
||||
static void pc_i440fx_8_0_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_i440fx_machine_options(m);
|
||||
m->alias = "pc";
|
||||
m->is_default = true;
|
||||
pcmc->default_cpu_version = 1;
|
||||
}
|
||||
|
||||
DEFINE_I440FX_MACHINE(v8_0, "pc-i440fx-8.0", NULL,
|
||||
pc_i440fx_8_0_machine_options);
|
||||
|
||||
static void pc_i440fx_7_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_8_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_7_2, hw_compat_7_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_2, pc_compat_7_2_len);
|
||||
}
|
||||
|
||||
DEFINE_I440FX_MACHINE(v7_2, "pc-i440fx-7.2", NULL,
|
||||
@@ -451,8 +462,6 @@ static void pc_i440fx_7_1_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_i440fx_7_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
pcmc->legacy_no_rng_seed = true;
|
||||
compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len);
|
||||
@@ -465,8 +474,6 @@ static void pc_i440fx_7_0_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_i440fx_7_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
pcmc->enforce_amd_1tb_hole = false;
|
||||
compat_props_add(m->compat_props, hw_compat_7_0, hw_compat_7_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_0, pc_compat_7_0_len);
|
||||
@@ -478,8 +485,6 @@ DEFINE_I440FX_MACHINE(v7_0, "pc-i440fx-7.0", NULL,
|
||||
static void pc_i440fx_6_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_7_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_6_2, hw_compat_6_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_2, pc_compat_6_2_len);
|
||||
}
|
||||
@@ -490,8 +495,6 @@ DEFINE_I440FX_MACHINE(v6_2, "pc-i440fx-6.2", NULL,
|
||||
static void pc_i440fx_6_1_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_6_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_6_1, hw_compat_6_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_1, pc_compat_6_1_len);
|
||||
m->smp_props.prefer_sockets = true;
|
||||
@@ -503,8 +506,6 @@ DEFINE_I440FX_MACHINE(v6_1, "pc-i440fx-6.1", NULL,
|
||||
static void pc_i440fx_6_0_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_6_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_6_0, hw_compat_6_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_0, pc_compat_6_0_len);
|
||||
}
|
||||
@@ -515,8 +516,6 @@ DEFINE_I440FX_MACHINE(v6_0, "pc-i440fx-6.0", NULL,
|
||||
static void pc_i440fx_5_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_6_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_5_2, hw_compat_5_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_2, pc_compat_5_2_len);
|
||||
}
|
||||
@@ -529,8 +528,6 @@ static void pc_i440fx_5_1_machine_options(MachineClass *m)
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
|
||||
pc_i440fx_5_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_5_1, hw_compat_5_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_1, pc_compat_5_1_len);
|
||||
pcmc->kvmclock_create_always = false;
|
||||
@@ -543,8 +540,6 @@ DEFINE_I440FX_MACHINE(v5_1, "pc-i440fx-5.1", NULL,
|
||||
static void pc_i440fx_5_0_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_5_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
m->numa_mem_supported = true;
|
||||
compat_props_add(m->compat_props, hw_compat_5_0, hw_compat_5_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_0, pc_compat_5_0_len);
|
||||
@@ -557,8 +552,6 @@ DEFINE_I440FX_MACHINE(v5_0, "pc-i440fx-5.0", NULL,
|
||||
static void pc_i440fx_4_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_5_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_4_2, hw_compat_4_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_4_2, pc_compat_4_2_len);
|
||||
}
|
||||
@@ -569,8 +562,6 @@ DEFINE_I440FX_MACHINE(v4_2, "pc-i440fx-4.2", NULL,
|
||||
static void pc_i440fx_4_1_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_i440fx_4_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
compat_props_add(m->compat_props, hw_compat_4_1, hw_compat_4_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_4_1, pc_compat_4_1_len);
|
||||
}
|
||||
@@ -582,8 +573,6 @@ static void pc_i440fx_4_0_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_i440fx_4_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->is_default = false;
|
||||
pcmc->default_cpu_version = CPU_VERSION_LEGACY;
|
||||
compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len);
|
||||
@@ -597,9 +586,7 @@ static void pc_i440fx_3_1_machine_options(MachineClass *m)
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
|
||||
pc_i440fx_4_0_machine_options(m);
|
||||
m->is_default = false;
|
||||
m->smbus_no_migration_support = true;
|
||||
m->alias = NULL;
|
||||
pcmc->pvh_enabled = false;
|
||||
compat_props_add(m->compat_props, hw_compat_3_1, hw_compat_3_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_3_1, pc_compat_3_1_len);
|
||||
|
||||
+13
-16
@@ -355,6 +355,7 @@ static void pc_q35_machine_options(MachineClass *m)
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pcmc->default_nic_model = "e1000e";
|
||||
pcmc->pci_root_uid = 0;
|
||||
pcmc->default_cpu_version = 1;
|
||||
|
||||
m->family = "pc_q35";
|
||||
m->desc = "Standard PC (Q35 + ICH9, 2009)";
|
||||
@@ -370,12 +371,21 @@ static void pc_q35_machine_options(MachineClass *m)
|
||||
m->max_cpus = 288;
|
||||
}
|
||||
|
||||
static void pc_q35_7_2_machine_options(MachineClass *m)
|
||||
static void pc_q35_8_0_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_q35_machine_options(m);
|
||||
m->alias = "q35";
|
||||
pcmc->default_cpu_version = 1;
|
||||
}
|
||||
|
||||
DEFINE_Q35_MACHINE(v8_0, "pc-q35-8.0", NULL,
|
||||
pc_q35_8_0_machine_options);
|
||||
|
||||
static void pc_q35_7_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_8_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_7_2, hw_compat_7_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_2, pc_compat_7_2_len);
|
||||
}
|
||||
|
||||
DEFINE_Q35_MACHINE(v7_2, "pc-q35-7.2", NULL,
|
||||
@@ -385,7 +395,6 @@ static void pc_q35_7_1_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_q35_7_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
pcmc->legacy_no_rng_seed = true;
|
||||
compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len);
|
||||
@@ -398,7 +407,6 @@ static void pc_q35_7_0_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_q35_7_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
pcmc->enforce_amd_1tb_hole = false;
|
||||
compat_props_add(m->compat_props, hw_compat_7_0, hw_compat_7_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_0, pc_compat_7_0_len);
|
||||
@@ -410,7 +418,6 @@ DEFINE_Q35_MACHINE(v7_0, "pc-q35-7.0", NULL,
|
||||
static void pc_q35_6_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_7_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_6_2, hw_compat_6_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_2, pc_compat_6_2_len);
|
||||
}
|
||||
@@ -421,7 +428,6 @@ DEFINE_Q35_MACHINE(v6_2, "pc-q35-6.2", NULL,
|
||||
static void pc_q35_6_1_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_6_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_6_1, hw_compat_6_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_1, pc_compat_6_1_len);
|
||||
m->smp_props.prefer_sockets = true;
|
||||
@@ -433,7 +439,6 @@ DEFINE_Q35_MACHINE(v6_1, "pc-q35-6.1", NULL,
|
||||
static void pc_q35_6_0_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_6_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_6_0, hw_compat_6_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_6_0, pc_compat_6_0_len);
|
||||
}
|
||||
@@ -444,7 +449,6 @@ DEFINE_Q35_MACHINE(v6_0, "pc-q35-6.0", NULL,
|
||||
static void pc_q35_5_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_6_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_5_2, hw_compat_5_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_2, pc_compat_5_2_len);
|
||||
}
|
||||
@@ -457,7 +461,6 @@ static void pc_q35_5_1_machine_options(MachineClass *m)
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
|
||||
pc_q35_5_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_5_1, hw_compat_5_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_1, pc_compat_5_1_len);
|
||||
pcmc->kvmclock_create_always = false;
|
||||
@@ -470,7 +473,6 @@ DEFINE_Q35_MACHINE(v5_1, "pc-q35-5.1", NULL,
|
||||
static void pc_q35_5_0_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_5_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
m->numa_mem_supported = true;
|
||||
compat_props_add(m->compat_props, hw_compat_5_0, hw_compat_5_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_5_0, pc_compat_5_0_len);
|
||||
@@ -483,7 +485,6 @@ DEFINE_Q35_MACHINE(v5_0, "pc-q35-5.0", NULL,
|
||||
static void pc_q35_4_2_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_5_0_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_4_2, hw_compat_4_2_len);
|
||||
compat_props_add(m->compat_props, pc_compat_4_2, pc_compat_4_2_len);
|
||||
}
|
||||
@@ -494,7 +495,6 @@ DEFINE_Q35_MACHINE(v4_2, "pc-q35-4.2", NULL,
|
||||
static void pc_q35_4_1_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_4_2_machine_options(m);
|
||||
m->alias = NULL;
|
||||
compat_props_add(m->compat_props, hw_compat_4_1, hw_compat_4_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_4_1, pc_compat_4_1_len);
|
||||
}
|
||||
@@ -506,7 +506,6 @@ static void pc_q35_4_0_1_machine_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
pc_q35_4_1_machine_options(m);
|
||||
m->alias = NULL;
|
||||
pcmc->default_cpu_version = CPU_VERSION_LEGACY;
|
||||
/*
|
||||
* This is the default machine for the 4.0-stable branch. It is basically
|
||||
@@ -524,7 +523,6 @@ static void pc_q35_4_0_machine_options(MachineClass *m)
|
||||
{
|
||||
pc_q35_4_0_1_machine_options(m);
|
||||
m->default_kernel_irqchip_split = true;
|
||||
m->alias = NULL;
|
||||
/* Compat props are applied by the 4.0.1 machine */
|
||||
}
|
||||
|
||||
@@ -538,7 +536,6 @@ static void pc_q35_3_1_machine_options(MachineClass *m)
|
||||
pc_q35_4_0_machine_options(m);
|
||||
m->default_kernel_irqchip_split = false;
|
||||
m->smbus_no_migration_support = true;
|
||||
m->alias = NULL;
|
||||
pcmc->pvh_enabled = false;
|
||||
compat_props_add(m->compat_props, hw_compat_3_1, hw_compat_3_1_len);
|
||||
compat_props_add(m->compat_props, pc_compat_3_1, pc_compat_3_1_len);
|
||||
|
||||
+4
-1
@@ -52,6 +52,7 @@
|
||||
#include "hw/nvram/fw_cfg.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "hw/acpi/acpi_aml_interface.h"
|
||||
#include "trace.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
/* ICH9 LPC PCI to ISA bridge */
|
||||
@@ -162,6 +163,7 @@ static void ich9_cc_write(void *opaque, hwaddr addr,
|
||||
{
|
||||
ICH9LPCState *lpc = (ICH9LPCState *)opaque;
|
||||
|
||||
trace_ich9_cc_write(addr, val, len);
|
||||
ich9_cc_addr_len(&addr, &len);
|
||||
memcpy(lpc->chip_config + addr, &val, len);
|
||||
pci_bus_fire_intx_routing_notifier(pci_get_bus(&lpc->d));
|
||||
@@ -177,6 +179,7 @@ static uint64_t ich9_cc_read(void *opaque, hwaddr addr,
|
||||
uint32_t val = 0;
|
||||
ich9_cc_addr_len(&addr, &len);
|
||||
memcpy(&val, lpc->chip_config + addr, len);
|
||||
trace_ich9_cc_read(addr, val, len);
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -789,7 +792,7 @@ static const VMStateDescription vmstate_ich9_lpc = {
|
||||
};
|
||||
|
||||
static Property ich9_lpc_properties[] = {
|
||||
DEFINE_PROP_BOOL("noreboot", ICH9LPCState, pin_strap.spkr_hi, true),
|
||||
DEFINE_PROP_BOOL("noreboot", ICH9LPCState, pin_strap.spkr_hi, false),
|
||||
DEFINE_PROP_BOOL("smm-compat", ICH9LPCState, pm.smm_compat, false),
|
||||
DEFINE_PROP_BIT64("x-smi-broadcast", ICH9LPCState, smi_host_features,
|
||||
ICH9_LPC_SMI_F_BROADCAST_BIT, true),
|
||||
|
||||
@@ -21,3 +21,7 @@ via_pm_io_read(uint32_t addr, uint32_t val, int len) "addr 0x%x val 0x%x len 0x%
|
||||
via_pm_io_write(uint32_t addr, uint32_t val, int len) "addr 0x%x val 0x%x len 0x%x"
|
||||
via_superio_read(uint8_t addr, uint8_t val) "addr 0x%x val 0x%x"
|
||||
via_superio_write(uint8_t addr, uint32_t val) "addr 0x%x val 0x%x"
|
||||
|
||||
# lpc_ich9.c
|
||||
ich9_cc_write(uint64_t addr, uint64_t val, unsigned len) "addr=0x%"PRIx64 " val=0x%"PRIx64 " len=%u"
|
||||
ich9_cc_read(uint64_t addr, uint64_t val, unsigned len) "addr=0x%"PRIx64 " val=0x%"PRIx64 " len=%u"
|
||||
|
||||
+9
-2
@@ -346,10 +346,17 @@ type_init(virt_machine_register_types)
|
||||
} \
|
||||
type_init(machvirt_machine_##major##_##minor##_init);
|
||||
|
||||
static void virt_machine_7_2_options(MachineClass *mc)
|
||||
static void virt_machine_8_0_options(MachineClass *mc)
|
||||
{
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 2, true)
|
||||
DEFINE_VIRT_MACHINE(8, 0, true)
|
||||
|
||||
static void virt_machine_7_2_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_8_0_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_7_2, hw_compat_7_2_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 2, false)
|
||||
|
||||
static void virt_machine_7_1_options(MachineClass *mc)
|
||||
{
|
||||
|
||||
@@ -295,6 +295,17 @@ static void build_dvsecs(CXLType3Dev *ct3d)
|
||||
cxl_component_create_dvsec(cxl_cstate, CXL2_TYPE3_DEVICE,
|
||||
GPF_DEVICE_DVSEC_LENGTH, GPF_DEVICE_DVSEC,
|
||||
GPF_DEVICE_DVSEC_REVID, dvsec);
|
||||
|
||||
dvsec = (uint8_t *)&(CXLDVSECPortFlexBus){
|
||||
.cap = 0x26, /* 68B, IO, Mem, non-MLD */
|
||||
.ctrl = 0x02, /* IO always enabled */
|
||||
.status = 0x26, /* same as capabilities */
|
||||
.rcvd_mod_ts_data_phase1 = 0xef, /* WTF? */
|
||||
};
|
||||
cxl_component_create_dvsec(cxl_cstate, CXL2_TYPE3_DEVICE,
|
||||
PCIE_FLEXBUS_PORT_DVSEC_LENGTH_2_0,
|
||||
PCIE_FLEXBUS_PORT_DVSEC,
|
||||
PCIE_FLEXBUS_PORT_DVSEC_REVID_2_0, dvsec);
|
||||
}
|
||||
|
||||
static void hdm_decoder_commit(CXLType3Dev *ct3d, int which)
|
||||
|
||||
@@ -217,7 +217,6 @@ static void cxl_dsp_class_init(ObjectClass *oc, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(oc);
|
||||
|
||||
k->is_bridge = true;
|
||||
k->config_write = cxl_dsp_config_write;
|
||||
k->realize = cxl_dsp_realize;
|
||||
k->exit = cxl_dsp_exitfn;
|
||||
|
||||
@@ -375,7 +375,6 @@ static void cxl_upstream_class_init(ObjectClass *oc, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(oc);
|
||||
|
||||
k->is_bridge = true;
|
||||
k->config_write = cxl_usp_write_config;
|
||||
k->config_read = cxl_usp_read_config;
|
||||
k->realize = cxl_usp_realize;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user