mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
virtio,pc,pci: features, fixes, cleanups
i286 acpi speedup by precomputing _PRT by Ricardo Ribalda vhost_net speedup by using MR transactions by Zuo Boqun ich9 gained support for periodic and swsmi timer by Dominic Prinz Fixes, cleanups all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmbhoCUPHG1zdEByZWRo YXQuY29tAAoJECgfDbjSjVRptpUH/iR5AmJFpvAItqlPOvJiYDEch46C73tyrSws Kk/1EbGSL7mFFD5sfdSSV4Rw8CQBsmM/Dt5VDkJKsWnOLjkBQ2CYH0MYHktnrKcJ LlSk32HnY5p1DsXnJhgm5M7St8T3mV/oFdJCJAFgCmpx5uT8IRLrKETN8+30OaiY xo35xAKOAS296+xsWeVubKkMq7H4y2tdZLE/22gb8rlA8d96BJIeVLQ3y3IjeUPR 24q6c7zpObzGhYNZ/PzAKOn+YcVsV/lLAzKRZJTzTUPyG24BcjJTyyr/zNSYAgfk lLXzIZID3GThBmrCAiDZ1z6sfo3MRg2wNS/FBXtK6fPIuFxed+8= =ySRy -----END PGP SIGNATURE----- Merge tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu into staging virtio,pc,pci: features, fixes, cleanups i286 acpi speedup by precomputing _PRT by Ricardo Ribalda vhost_net speedup by using MR transactions by Zuo Boqun ich9 gained support for periodic and swsmi timer by Dominic Prinz Fixes, cleanups all over the place. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # -----BEGIN PGP SIGNATURE----- # # iQFDBAABCAAtFiEEXQn9CHHI+FuUyooNKB8NuNKNVGkFAmbhoCUPHG1zdEByZWRo # YXQuY29tAAoJECgfDbjSjVRptpUH/iR5AmJFpvAItqlPOvJiYDEch46C73tyrSws # Kk/1EbGSL7mFFD5sfdSSV4Rw8CQBsmM/Dt5VDkJKsWnOLjkBQ2CYH0MYHktnrKcJ # LlSk32HnY5p1DsXnJhgm5M7St8T3mV/oFdJCJAFgCmpx5uT8IRLrKETN8+30OaiY # xo35xAKOAS296+xsWeVubKkMq7H4y2tdZLE/22gb8rlA8d96BJIeVLQ3y3IjeUPR # 24q6c7zpObzGhYNZ/PzAKOn+YcVsV/lLAzKRZJTzTUPyG24BcjJTyyr/zNSYAgfk # lLXzIZID3GThBmrCAiDZ1z6sfo3MRg2wNS/FBXtK6fPIuFxed+8= # =ySRy # -----END PGP SIGNATURE----- # gpg: Signature made Wed 11 Sep 2024 14:50:29 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 * tag 'for_upstream' of https://git.kernel.org/pub/scm/virt/kvm/mst/qemu: hw/acpi/ich9: Add periodic and swsmi timer virtio-mem: don't warn about THP sizes on a kernel without THP support hw/audio/virtio-sound: fix heap buffer overflow hw/cxl: fix physical address field in get scan media results output virtio-pci: Add lookup subregion of VirtIOPCIRegion MR vhost_net: configure all host notifiers in a single MR transaction tests/acpi: pc: update golden masters for DSDT hw/i386/acpi-build: Return a pre-computed _PRT table tests/acpi: pc: allow DSDT acpi table changes intel_iommu: Make PASID-cache and PIOTLB type invalid in legacy mode intel_iommu: Fix invalidation descriptor type field virtio: rename virtio_split_packed_update_used_idx hw/pci/pci-hmp-cmds: Avoid displaying bogus size in 'info pci' pci: don't skip function 0 occupancy verification for devfn auto assign hw/isa/vt82c686.c: Embed i8259 irq in device state instead of allocating hw: Move declaration of IRQState to header and add init function virtio: Always reset vhost devices virtio: Allow .get_vhost() without vhost_started Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
3baa3c9d62
44 changed files with 473 additions and 202 deletions
|
@ -46,6 +46,7 @@ typedef struct ICH9LPCPMRegs {
|
|||
uint32_t smi_en;
|
||||
uint32_t smi_en_wmask;
|
||||
uint32_t smi_sts;
|
||||
uint32_t smi_sts_wmask;
|
||||
|
||||
qemu_irq irq; /* SCI */
|
||||
|
||||
|
@ -68,6 +69,11 @@ typedef struct ICH9LPCPMRegs {
|
|||
bool smm_compat;
|
||||
bool enable_tco;
|
||||
TCOIORegs tco_regs;
|
||||
|
||||
bool swsmi_timer_enabled;
|
||||
bool periodic_timer_enabled;
|
||||
QEMUTimer *swsmi_timer;
|
||||
QEMUTimer *periodic_timer;
|
||||
} ICH9LPCPMRegs;
|
||||
|
||||
#define ACPI_PM_PROP_TCO_ENABLED "enable_tco"
|
||||
|
|
23
include/hw/acpi/ich9_timer.h
Normal file
23
include/hw/acpi/ich9_timer.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* QEMU ICH9 Timer emulation
|
||||
*
|
||||
* Copyright (c) 2024 Dominic Prinz <git@dprinz.de>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef HW_ACPI_ICH9_TIMER_H
|
||||
#define HW_ACPI_ICH9_TIMER_H
|
||||
|
||||
#include "hw/acpi/ich9.h"
|
||||
|
||||
void ich9_pm_update_swsmi_timer(ICH9LPCPMRegs *pm, bool enable);
|
||||
|
||||
void ich9_pm_swsmi_timer_init(ICH9LPCPMRegs *pm);
|
||||
|
||||
void ich9_pm_update_periodic_timer(ICH9LPCPMRegs *pm, bool enable);
|
||||
|
||||
void ich9_pm_periodic_timer_init(ICH9LPCPMRegs *pm);
|
||||
|
||||
#endif
|
|
@ -1,9 +1,20 @@
|
|||
#ifndef QEMU_IRQ_H
|
||||
#define QEMU_IRQ_H
|
||||
|
||||
#include "qom/object.h"
|
||||
|
||||
/* Generic IRQ/GPIO pin infrastructure. */
|
||||
|
||||
#define TYPE_IRQ "irq"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(IRQState, IRQ)
|
||||
|
||||
struct IRQState {
|
||||
Object parent_obj;
|
||||
|
||||
qemu_irq_handler handler;
|
||||
void *opaque;
|
||||
int n;
|
||||
};
|
||||
|
||||
void qemu_set_irq(qemu_irq irq, int level);
|
||||
|
||||
|
@ -23,6 +34,13 @@ static inline void qemu_irq_pulse(qemu_irq irq)
|
|||
qemu_set_irq(irq, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Init a single IRQ. The irq is assigned with a handler, an opaque data
|
||||
* and the interrupt number.
|
||||
*/
|
||||
void qemu_init_irq(IRQState *irq, qemu_irq_handler handler, void *opaque,
|
||||
int n);
|
||||
|
||||
/* Returns an array of N IRQs. Each IRQ is assigned the argument handler and
|
||||
* opaque data.
|
||||
*/
|
||||
|
|
|
@ -196,8 +196,12 @@ struct ICH9LPCState {
|
|||
#define ICH9_PMIO_GPE0_LEN 16
|
||||
#define ICH9_PMIO_SMI_EN 0x30
|
||||
#define ICH9_PMIO_SMI_EN_APMC_EN (1 << 5)
|
||||
#define ICH9_PMIO_SMI_EN_SWSMI_EN (1 << 6)
|
||||
#define ICH9_PMIO_SMI_EN_TCO_EN (1 << 13)
|
||||
#define ICH9_PMIO_SMI_EN_PERIODIC_EN (1 << 14)
|
||||
#define ICH9_PMIO_SMI_STS 0x34
|
||||
#define ICH9_PMIO_SMI_STS_SWSMI_STS (1 << 6)
|
||||
#define ICH9_PMIO_SMI_STS_PERIODIC_STS (1 << 14)
|
||||
#define ICH9_PMIO_TCO_RLD 0x60
|
||||
#define ICH9_PMIO_TCO_LEN 32
|
||||
|
||||
|
|
|
@ -171,6 +171,10 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
|
|||
*/
|
||||
void vhost_dev_cleanup(struct vhost_dev *hdev);
|
||||
|
||||
void vhost_dev_disable_notifiers_nvqs(struct vhost_dev *hdev,
|
||||
VirtIODevice *vdev,
|
||||
unsigned int nvqs);
|
||||
|
||||
/**
|
||||
* vhost_dev_enable_notifiers() - enable event notifiers
|
||||
* @hdev: common vhost_dev structure
|
||||
|
|
|
@ -223,6 +223,7 @@ struct VirtioDeviceClass {
|
|||
int (*post_load)(VirtIODevice *vdev);
|
||||
const VMStateDescription *vmsd;
|
||||
bool (*primary_unplug_pending)(void *opaque);
|
||||
/* May be called even when vdev->vhost_started is false */
|
||||
struct vhost_dev *(*get_vhost)(VirtIODevice *vdev);
|
||||
void (*toggle_device_iotlb)(VirtIODevice *vdev);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue