mirror of
https://github.com/mborgerson/xemu.git
synced 2025-12-01 16:10:01 +00:00
Merge remote-tracking branch 'remotes/mst/tags/for_upstream3' into staging
pc,pci,virtio: lots of new features Lots of last minute stuff. vhost-user-i2c. vhost-vsock SOCK_SEQPACKET support. IOMMU bypass. ACPI based pci hotplug. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Fri 16 Jul 2021 16:11:27 BST # 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 * remotes/mst/tags/for_upstream3: vhost-vsock: SOCK_SEQPACKET feature bit support docs: Add documentation for iommu bypass hw/i386/acpi-build: Add IVRS support to bypass iommu hw/i386/acpi-build: Add DMAR support to bypass iommu hw/arm/virt-acpi-build: Add IORT support to bypass SMMUv3 hw/pci: Add pci_bus_range() to get PCI bus number range hw/i386: Add a default_bus_bypass_iommu pc machine option hw/arm/virt: Add default_bus_bypass_iommu machine option hw/pxb: Add a bypass iommu property hw/pci/pci_host: Allow PCI host to bypass iommu docs: Add '-device intel-iommu' entry hw/virtio: add vhost-user-i2c-pci boilerplate hw/virtio: add boilerplate for vhost-user-i2c device bios-tables-test: Update golden binaries hw/acpi/ich9: Set ACPI PCI hot-plug as default on Q35 bios-tables-test: Allow changes in DSDT ACPI tables hw/pci/pcie: Do not set HPC flag if acpihp is used hw/acpi/ich9: Enable ACPI PCI hot-plug hw/i386/acpi-build: Add ACPI PCI hot-plug methods to Q35 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@ -24,10 +24,13 @@
|
||||
#include "hw/acpi/acpi.h"
|
||||
#include "hw/acpi/cpu_hotplug.h"
|
||||
#include "hw/acpi/cpu.h"
|
||||
#include "hw/acpi/pcihp.h"
|
||||
#include "hw/acpi/memory_hotplug.h"
|
||||
#include "hw/acpi/acpi_dev_interface.h"
|
||||
#include "hw/acpi/tco.h"
|
||||
|
||||
#define ACPI_PCIHP_ADDR_ICH9 0x0cc4
|
||||
|
||||
typedef struct ICH9LPCPMRegs {
|
||||
/*
|
||||
* In ich9 spec says that pm1_cnt register is 32bit width and
|
||||
@ -53,6 +56,8 @@ typedef struct ICH9LPCPMRegs {
|
||||
AcpiCpuHotplug gpe_cpu;
|
||||
CPUHotplugState cpuhp_state;
|
||||
|
||||
bool use_acpi_hotplug_bridge;
|
||||
AcpiPciHpState acpi_pci_hotplug;
|
||||
MemHotplugState acpi_memory_hotplug;
|
||||
|
||||
uint8_t disable_s3;
|
||||
|
||||
@ -55,7 +55,8 @@ typedef struct AcpiPciHpState {
|
||||
} AcpiPciHpState;
|
||||
|
||||
void acpi_pcihp_init(Object *owner, AcpiPciHpState *, PCIBus *root,
|
||||
MemoryRegion *address_space_io, bool bridges_enabled);
|
||||
MemoryRegion *address_space_io, bool bridges_enabled,
|
||||
uint16_t io_base);
|
||||
|
||||
void acpi_pcihp_device_pre_plug_cb(HotplugHandler *hotplug_dev,
|
||||
DeviceState *dev, Error **errp);
|
||||
|
||||
@ -147,6 +147,7 @@ struct VirtMachineState {
|
||||
OnOffAuto acpi;
|
||||
VirtGICType gic_version;
|
||||
VirtIOMMUType iommu;
|
||||
bool default_bus_bypass_iommu;
|
||||
VirtMSIControllerType msi_controller;
|
||||
uint16_t virtio_iommu_bdf;
|
||||
struct arm_boot_info bootinfo;
|
||||
|
||||
@ -44,6 +44,7 @@ typedef struct PCMachineState {
|
||||
bool sata_enabled;
|
||||
bool pit_enabled;
|
||||
bool hpet_enabled;
|
||||
bool default_bus_bypass_iommu;
|
||||
uint64_t max_fw_size;
|
||||
|
||||
/* NUMA information: */
|
||||
|
||||
@ -450,6 +450,7 @@ static inline PCIBus *pci_get_bus(const PCIDevice *dev)
|
||||
return PCI_BUS(qdev_get_parent_bus(DEVICE(dev)));
|
||||
}
|
||||
int pci_bus_num(PCIBus *s);
|
||||
void pci_bus_range(PCIBus *bus, int *min_bus, int *max_bus);
|
||||
static inline int pci_dev_bus_num(const PCIDevice *dev)
|
||||
{
|
||||
return pci_bus_num(pci_get_bus(dev));
|
||||
@ -480,6 +481,7 @@ void pci_for_each_bus(PCIBus *bus,
|
||||
|
||||
PCIBus *pci_device_root_bus(const PCIDevice *d);
|
||||
const char *pci_root_bus_path(PCIDevice *dev);
|
||||
bool pci_bus_bypass_iommu(PCIBus *bus);
|
||||
PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn);
|
||||
int pci_qdev_find_device(const char *id, PCIDevice **pdev);
|
||||
void pci_bus_get_w64_range(PCIBus *bus, Range *range);
|
||||
|
||||
@ -43,6 +43,7 @@ struct PCIHostState {
|
||||
uint32_t config_reg;
|
||||
bool mig_enabled;
|
||||
PCIBus *bus;
|
||||
bool bypass_iommu;
|
||||
|
||||
QLIST_ENTRY(PCIHostState) next;
|
||||
};
|
||||
|
||||
@ -57,8 +57,11 @@ struct PCIESlot {
|
||||
/* Disable ACS (really for a pcie_root_port) */
|
||||
bool disable_acs;
|
||||
|
||||
/* Indicates whether hot-plug is enabled on the slot */
|
||||
/* Indicates whether any type of hot-plug is allowed on the slot */
|
||||
bool hotplug;
|
||||
|
||||
bool native_hotplug;
|
||||
|
||||
QLIST_ENTRY(PCIESlot) next;
|
||||
};
|
||||
|
||||
|
||||
28
include/hw/virtio/vhost-user-i2c.h
Normal file
28
include/hw/virtio/vhost-user-i2c.h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Vhost-user i2c virtio device
|
||||
*
|
||||
* Copyright (c) 2021 Viresh Kumar <viresh.kumar@linaro.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef _QEMU_VHOST_USER_I2C_H
|
||||
#define _QEMU_VHOST_USER_I2C_H
|
||||
|
||||
#include "hw/virtio/vhost.h"
|
||||
#include "hw/virtio/vhost-user.h"
|
||||
|
||||
#define TYPE_VHOST_USER_I2C "vhost-user-i2c-device"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(VHostUserI2C, VHOST_USER_I2C)
|
||||
|
||||
struct VHostUserI2C {
|
||||
VirtIODevice parent;
|
||||
CharBackend chardev;
|
||||
struct vhost_virtqueue *vhost_vq;
|
||||
struct vhost_dev vhost_dev;
|
||||
VhostUserState vhost_user;
|
||||
VirtQueue *vq;
|
||||
bool connected;
|
||||
};
|
||||
|
||||
#endif /* _QEMU_VHOST_USER_I2C_H */
|
||||
Reference in New Issue
Block a user