mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
virtio,pc,pci: features, cleanups
infrastructure for vhost-vdpa shadow work piix south bridge rework reconnect for vhost-user-scsi dummy ACPI QTG DSM for cxl tests, cleanups, fixes all over the place Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmU06PMPHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRpNIsH/0DlKti86VZLJ6PbNqsnKxoK2gg05TbEhPZU pQ+RPDaCHpFBsLC5qsoMJwvaEQFe0e49ZFemw7bXRzBxgmbbNnZ9ArCIPqT+rvQd 7UBmyC+kacVyybZatq69aK2BHKFtiIRlT78d9Izgtjmp8V7oyKoz14Esh8wkE+FT ypHUa70Addi6alNm6BVkm7bxZxi0Wrmf3THqF8ViYvufzHKl7JR5e17fKWEG0BqV 9W7AeHMnzJ7jkTvBGUw7g5EbzFn7hPLTbO4G/VW97k0puS4WRX5aIMkVhUazsRIa zDOuXCCskUWuRapiCwY0E4g7cCaT8/JR6JjjBaTgkjJgvo5Y8Eg= =ILek -----END PGP SIGNATURE----- Merge tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu into staging virtio,pc,pci: features, cleanups infrastructure for vhost-vdpa shadow work piix south bridge rework reconnect for vhost-user-scsi dummy ACPI QTG DSM for cxl tests, cleanups, fixes all over the place Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # -----BEGIN PGP SIGNATURE----- # # iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmU06PMPHG1zdEByZWRo # YXQuY29tAAoJECgfDbjSjVRpNIsH/0DlKti86VZLJ6PbNqsnKxoK2gg05TbEhPZU # pQ+RPDaCHpFBsLC5qsoMJwvaEQFe0e49ZFemw7bXRzBxgmbbNnZ9ArCIPqT+rvQd # 7UBmyC+kacVyybZatq69aK2BHKFtiIRlT78d9Izgtjmp8V7oyKoz14Esh8wkE+FT # ypHUa70Addi6alNm6BVkm7bxZxi0Wrmf3THqF8ViYvufzHKl7JR5e17fKWEG0BqV # 9W7AeHMnzJ7jkTvBGUw7g5EbzFn7hPLTbO4G/VW97k0puS4WRX5aIMkVhUazsRIa # zDOuXCCskUWuRapiCwY0E4g7cCaT8/JR6JjjBaTgkjJgvo5Y8Eg= # =ILek # -----END PGP SIGNATURE----- # gpg: Signature made Sun 22 Oct 2023 02:18:43 PDT # 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: (62 commits) intel-iommu: Report interrupt remapping faults, fix return value MAINTAINERS: Add include/hw/intc/i8259.h to the PC chip section vhost-user: Fix protocol feature bit conflict tests/acpi: Update DSDT.cxl with QTG DSM hw/cxl: Add QTG _DSM support for ACPI0017 device tests/acpi: Allow update of DSDT.cxl hw/i386/cxl: ensure maxram is greater than ram size for calculating cxl range vhost-user: fix lost reconnect vhost-user-scsi: start vhost when guest kicks vhost-user-scsi: support reconnect to backend vhost: move and rename the conn retry times vhost-user-common: send get_inflight_fd once hw/i386/pc_piix: Make PIIX4 south bridge usable in PC machine hw/isa/piix: Implement multi-process QEMU support also for PIIX4 hw/isa/piix: Resolve duplicate code regarding PCI interrupt wiring hw/isa/piix: Reuse PIIX3's PCI interrupt triggering in PIIX4 hw/isa/piix: Rename functions to be shared for PCI interrupt triggering hw/isa/piix: Reuse PIIX3 base class' realize method in PIIX4 hw/isa/piix: Share PIIX3's base class with PIIX4 hw/isa/piix: Harmonize names of reset control memory regions ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
1b4a5a20da
43 changed files with 1218 additions and 836 deletions
|
@ -2793,6 +2793,8 @@ int64_t address_space_cache_init(MemoryRegionCache *cache,
|
|||
static inline void address_space_cache_init_empty(MemoryRegionCache *cache)
|
||||
{
|
||||
cache->mrs.mr = NULL;
|
||||
/* There is no real need to initialize fv, but it makes Coverity happy. */
|
||||
cache->fv = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -25,5 +25,6 @@ void cxl_build_cedt(GArray *table_offsets, GArray *table_data,
|
|||
BIOSLinker *linker, const char *oem_id,
|
||||
const char *oem_table_id, CXLState *cxl_state);
|
||||
void build_cxl_osc_method(Aml *dev);
|
||||
void build_cxl_dsm_method(Aml *dev);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -42,6 +42,7 @@ typedef struct PCMachineState {
|
|||
uint64_t max_ram_below_4g;
|
||||
OnOffAuto vmport;
|
||||
SmbiosEntryPointType smbios_entry_point_type;
|
||||
const char *south_bridge;
|
||||
|
||||
bool acpi_build_enabled;
|
||||
bool smbus_enabled;
|
||||
|
@ -92,6 +93,7 @@ struct PCMachineClass {
|
|||
/* Device configuration: */
|
||||
bool pci_enabled;
|
||||
bool kvmclock_enabled;
|
||||
const char *default_south_bridge;
|
||||
|
||||
/* Compat options: */
|
||||
|
||||
|
|
|
@ -13,7 +13,10 @@
|
|||
#define HW_SOUTHBRIDGE_PIIX_H
|
||||
|
||||
#include "hw/pci/pci_device.h"
|
||||
#include "hw/acpi/piix4.h"
|
||||
#include "hw/ide/pci.h"
|
||||
#include "hw/rtc/mc146818rtc.h"
|
||||
#include "hw/usb/hcd-uhci.h"
|
||||
|
||||
/* PIRQRC[A:D]: PIRQx Route Control Registers */
|
||||
#define PIIX_PIRQCA 0x60
|
||||
|
@ -27,7 +30,6 @@
|
|||
*/
|
||||
#define PIIX_RCR_IOPORT 0xcf9
|
||||
|
||||
#define PIIX_NUM_PIC_IRQS 16 /* i8259 * 2 */
|
||||
#define PIIX_NUM_PIRQS 4ULL /* PIRQ[A-D] */
|
||||
|
||||
struct PIIXState {
|
||||
|
@ -39,32 +41,42 @@ struct PIIXState {
|
|||
* So one PIC level is tracked by PIIX_NUM_PIRQS bits.
|
||||
*
|
||||
* PIRQ is mapped to PIC pins, we track it by
|
||||
* PIIX_NUM_PIRQS * PIIX_NUM_PIC_IRQS = 64 bits with
|
||||
* PIIX_NUM_PIRQS * ISA_NUM_IRQS = 64 bits with
|
||||
* pic_irq * PIIX_NUM_PIRQS + pirq
|
||||
*/
|
||||
#if PIIX_NUM_PIC_IRQS * PIIX_NUM_PIRQS > 64
|
||||
#if ISA_NUM_IRQS * PIIX_NUM_PIRQS > 64
|
||||
#error "unable to encode pic state in 64bit in pic_levels."
|
||||
#endif
|
||||
uint64_t pic_levels;
|
||||
|
||||
qemu_irq *pic;
|
||||
qemu_irq cpu_intr;
|
||||
qemu_irq isa_irqs_in[ISA_NUM_IRQS];
|
||||
|
||||
/* This member isn't used. Just for save/load compatibility */
|
||||
int32_t pci_irq_levels_vmstate[PIIX_NUM_PIRQS];
|
||||
|
||||
MC146818RtcState rtc;
|
||||
PCIIDEState ide;
|
||||
UHCIState uhci;
|
||||
PIIX4PMState pm;
|
||||
|
||||
uint32_t smb_io_base;
|
||||
|
||||
/* Reset Control Register contents */
|
||||
uint8_t rcr;
|
||||
|
||||
/* IO memory region for Reset Control Register (PIIX_RCR_IOPORT) */
|
||||
MemoryRegion rcr_mem;
|
||||
};
|
||||
typedef struct PIIXState PIIX3State;
|
||||
|
||||
#define TYPE_PIIX3_PCI_DEVICE "pci-piix3"
|
||||
DECLARE_INSTANCE_CHECKER(PIIX3State, PIIX3_PCI_DEVICE,
|
||||
TYPE_PIIX3_PCI_DEVICE)
|
||||
bool has_acpi;
|
||||
bool has_pic;
|
||||
bool has_pit;
|
||||
bool has_usb;
|
||||
bool smm_enabled;
|
||||
};
|
||||
|
||||
#define TYPE_PIIX_PCI_DEVICE "pci-piix"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(PIIXState, PIIX_PCI_DEVICE)
|
||||
|
||||
#define TYPE_PIIX3_DEVICE "PIIX3"
|
||||
#define TYPE_PIIX4_PCI_DEVICE "piix4-isa"
|
||||
|
|
|
@ -39,7 +39,7 @@ struct VHostSCSICommon {
|
|||
struct vhost_inflight *inflight;
|
||||
};
|
||||
|
||||
int vhost_scsi_common_start(VHostSCSICommon *vsc);
|
||||
int vhost_scsi_common_start(VHostSCSICommon *vsc, Error **errp);
|
||||
void vhost_scsi_common_stop(VHostSCSICommon *vsc);
|
||||
char *vhost_scsi_common_get_fw_dev_path(FWPathProvider *p, BusState *bus,
|
||||
DeviceState *dev);
|
||||
|
|
|
@ -28,7 +28,13 @@ OBJECT_DECLARE_SIMPLE_TYPE(VHostUserSCSI, VHOST_USER_SCSI)
|
|||
|
||||
struct VHostUserSCSI {
|
||||
VHostSCSICommon parent_obj;
|
||||
|
||||
/* Properties */
|
||||
bool connected;
|
||||
bool started_vu;
|
||||
|
||||
VhostUserState vhost_user;
|
||||
struct vhost_virtqueue *vhost_vqs;
|
||||
};
|
||||
|
||||
#endif /* VHOST_USER_SCSI_H */
|
||||
|
|
|
@ -29,7 +29,8 @@ enum VhostUserProtocolFeature {
|
|||
VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS = 14,
|
||||
VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS = 15,
|
||||
VHOST_USER_PROTOCOL_F_STATUS = 16,
|
||||
VHOST_USER_PROTOCOL_F_SHARED_OBJECT = 17,
|
||||
/* Feature 17 reserved for VHOST_USER_PROTOCOL_F_XEN_MMAP. */
|
||||
VHOST_USER_PROTOCOL_F_SHARED_OBJECT = 18,
|
||||
VHOST_USER_PROTOCOL_F_MAX
|
||||
};
|
||||
|
||||
|
@ -106,6 +107,7 @@ typedef void (*vu_async_close_fn)(DeviceState *cb);
|
|||
|
||||
void vhost_user_async_close(DeviceState *d,
|
||||
CharBackend *chardev, struct vhost_dev *vhost,
|
||||
vu_async_close_fn cb);
|
||||
vu_async_close_fn cb,
|
||||
IOEventHandler *event_cb);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#define VHOST_F_DEVICE_IOTLB 63
|
||||
#define VHOST_USER_F_PROTOCOL_FEATURES 30
|
||||
|
||||
#define VU_REALIZE_CONN_RETRIES 3
|
||||
|
||||
/* Generic structures common for any vhost based device. */
|
||||
|
||||
struct vhost_inflight {
|
||||
|
@ -339,4 +341,14 @@ int vhost_dev_set_inflight(struct vhost_dev *dev,
|
|||
int vhost_dev_get_inflight(struct vhost_dev *dev, uint16_t queue_size,
|
||||
struct vhost_inflight *inflight);
|
||||
bool vhost_dev_has_iommu(struct vhost_dev *dev);
|
||||
|
||||
#ifdef CONFIG_VHOST
|
||||
int vhost_reset_device(struct vhost_dev *hdev);
|
||||
#else
|
||||
static inline int vhost_reset_device(struct vhost_dev *hdev)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif /* CONFIG_VHOST */
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue