mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
vfio: Remove 'vfio-platform'
The VFIO_PLATFORM device type has been deprecated in the QEMU 10.0 timeframe. All dependent devices have been removed. Now remove the core vfio platform framework. Rename VFIO_DEVICE_TYPE_PLATFORM enum to VFIO_DEVICE_TYPE_UNUSED to maintain the same index for the CCW and AP VFIO device types. Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Alex Williamson <alex.williamson@redhat.com> Link: https://lore.kernel.org/qemu-devel/20250901064631.530723-8-clg@redhat.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
@@ -488,18 +488,6 @@ Stream ``reconnect`` (since 9.2)
|
||||
The ``reconnect`` option only allows specifying second granularity timeouts,
|
||||
which is not enough for all types of use cases, use ``reconnect-ms`` instead.
|
||||
|
||||
VFIO device options
|
||||
'''''''''''''''''''
|
||||
|
||||
``-device vfio-platform`` (since 10.0)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
The vfio-platform device allows to assign a host platform device
|
||||
to a guest in a generic manner. Integrating a new device into
|
||||
the vfio-platform infrastructure requires some adaptation at
|
||||
both kernel and qemu level. No such attempt has been done for years
|
||||
and the conclusion is that vfio-platform has not got any traction.
|
||||
PCIe passthrough shall be the mainline solution.
|
||||
|
||||
CPU device properties
|
||||
'''''''''''''''''''''
|
||||
|
||||
|
||||
@@ -1296,6 +1296,15 @@ The vfio-amd-xgbe device allows to assign a host AMD 10GbE controller
|
||||
to a guest ("amd,xgbe-seattle-v1a" compatibility string). AMD "Seattle"
|
||||
is not supported anymore and there is no point keeping that device.
|
||||
|
||||
``-device vfio-platform`` (since 10.2)
|
||||
''''''''''''''''''''''''''''''''''''''
|
||||
The vfio-platform device allows to assign a host platform device
|
||||
to a guest in a generic manner. Integrating a new device into
|
||||
the vfio-platform infrastructure requires some adaptation at
|
||||
both kernel and qemu level. No such attempt has been done for years
|
||||
and the conclusion is that vfio-platform has not got any traction.
|
||||
PCIe passthrough shall be the mainline solution.
|
||||
|
||||
Tools
|
||||
-----
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ config ARM_VIRT
|
||||
depends on TCG || KVM || HVF
|
||||
imply PCI_DEVICES
|
||||
imply TEST_DEVICES
|
||||
imply VFIO_PLATFORM
|
||||
imply TPM_TIS_SYSBUS
|
||||
imply TPM_TIS_I2C
|
||||
imply NVDIMM
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#include "hw/arm/primecell.h"
|
||||
#include "hw/arm/virt.h"
|
||||
#include "hw/block/flash.h"
|
||||
#include "hw/vfio/vfio-platform.h"
|
||||
#include "hw/display/ramfb.h"
|
||||
#include "net/net.h"
|
||||
#include "system/device_tree.h"
|
||||
@@ -3218,7 +3217,6 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data)
|
||||
*/
|
||||
mc->max_cpus = 512;
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE);
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_PLATFORM);
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_UEFI_VARS_SYSBUS);
|
||||
#ifdef CONFIG_TPM
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS);
|
||||
|
||||
@@ -17,12 +17,6 @@ config VFIO_CCW
|
||||
select VFIO
|
||||
depends on LINUX && S390_CCW_VIRTIO
|
||||
|
||||
config VFIO_PLATFORM
|
||||
bool
|
||||
default y
|
||||
select VFIO
|
||||
depends on LINUX && PLATFORM_BUS
|
||||
|
||||
config VFIO_AP
|
||||
bool
|
||||
default y
|
||||
|
||||
@@ -13,7 +13,6 @@ vfio_ss.add(when: 'CONFIG_VFIO_PCI', if_true: files(
|
||||
'pci.c',
|
||||
))
|
||||
vfio_ss.add(when: 'CONFIG_VFIO_CCW', if_true: files('ccw.c'))
|
||||
vfio_ss.add(when: 'CONFIG_VFIO_PLATFORM', if_true: files('platform.c'))
|
||||
vfio_ss.add(when: 'CONFIG_VFIO_AP', if_true: files('ap.c'))
|
||||
vfio_ss.add(when: 'CONFIG_VFIO_IGD', if_true: files('igd.c'))
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -127,17 +127,6 @@ vfio_region_unmap(const char *name, unsigned long offset, unsigned long end) "Re
|
||||
vfio_region_sparse_mmap_header(const char *name, int index, int nr_areas) "Device %s region %d: %d sparse mmap entries"
|
||||
vfio_region_sparse_mmap_entry(int i, unsigned long start, unsigned long end) "sparse entry %d [0x%lx - 0x%lx]"
|
||||
|
||||
# platform.c
|
||||
vfio_platform_realize(char *name, char *compat) "vfio device %s, compat = %s"
|
||||
vfio_platform_eoi(int pin, int fd) "EOI IRQ pin %d (fd=%d)"
|
||||
vfio_platform_intp_mmap_enable(int pin) "IRQ #%d still active, stay in slow path"
|
||||
vfio_platform_intp_interrupt(int pin, int fd) "Inject IRQ #%d (fd = %d)"
|
||||
vfio_platform_intp_inject_pending_lockheld(int pin, int fd) "Inject pending IRQ #%d (fd = %d)"
|
||||
vfio_platform_populate_interrupts(int pin, int count, int flags) "- IRQ index %d: count %d, flags=0x%x"
|
||||
vfio_intp_interrupt_set_pending(int index) "irq %d is set PENDING"
|
||||
vfio_platform_start_level_irqfd_injection(int index, int fd, int resamplefd) "IRQ index=%d, fd = %d, resamplefd = %d"
|
||||
vfio_platform_start_edge_irqfd_injection(int index, int fd) "IRQ index=%d, fd = %d"
|
||||
|
||||
# spapr.c
|
||||
vfio_prereg_listener_region_add_skip(uint64_t start, uint64_t end) "0x%"PRIx64" - 0x%"PRIx64
|
||||
vfio_prereg_listener_region_del_skip(uint64_t start, uint64_t end) "0x%"PRIx64" - 0x%"PRIx64
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
enum {
|
||||
VFIO_DEVICE_TYPE_PCI = 0,
|
||||
VFIO_DEVICE_TYPE_PLATFORM = 1,
|
||||
VFIO_DEVICE_TYPE_UNUSED = 1,
|
||||
VFIO_DEVICE_TYPE_CCW = 2,
|
||||
VFIO_DEVICE_TYPE_AP = 3,
|
||||
};
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
* vfio based device assignment support - platform devices
|
||||
*
|
||||
* Copyright Linaro Limited, 2014
|
||||
*
|
||||
* Authors:
|
||||
* Kim Phillips <kim.phillips@linaro.org>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
||||
* the COPYING file in the top-level directory.
|
||||
*
|
||||
* Based on vfio based PCI device assignment support:
|
||||
* Copyright Red Hat, Inc. 2012
|
||||
*/
|
||||
|
||||
#ifndef HW_VFIO_VFIO_PLATFORM_H
|
||||
#define HW_VFIO_VFIO_PLATFORM_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/vfio/vfio-device.h"
|
||||
#include "qemu/event_notifier.h"
|
||||
#include "qemu/queue.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_VFIO_PLATFORM "vfio-platform"
|
||||
|
||||
enum {
|
||||
VFIO_IRQ_INACTIVE = 0,
|
||||
VFIO_IRQ_PENDING = 1,
|
||||
VFIO_IRQ_ACTIVE = 2,
|
||||
/* VFIO_IRQ_ACTIVE_AND_PENDING cannot happen with VFIO */
|
||||
};
|
||||
|
||||
typedef struct VFIOINTp {
|
||||
QLIST_ENTRY(VFIOINTp) next; /* entry for IRQ list */
|
||||
QSIMPLEQ_ENTRY(VFIOINTp) pqnext; /* entry for pending IRQ queue */
|
||||
EventNotifier *interrupt; /* eventfd triggered on interrupt */
|
||||
EventNotifier *unmask; /* eventfd for unmask on QEMU bypass */
|
||||
qemu_irq qemuirq;
|
||||
struct VFIOPlatformDevice *vdev; /* back pointer to device */
|
||||
int state; /* inactive, pending, active */
|
||||
uint8_t pin; /* index */
|
||||
uint32_t flags; /* IRQ info flags */
|
||||
bool kvm_accel; /* set when QEMU bypass through KVM enabled */
|
||||
} VFIOINTp;
|
||||
|
||||
/* function type for user side eventfd handler */
|
||||
typedef void (*eventfd_user_side_handler_t)(VFIOINTp *intp);
|
||||
|
||||
typedef struct VFIORegion VFIORegion;
|
||||
|
||||
struct VFIOPlatformDevice {
|
||||
SysBusDevice sbdev;
|
||||
VFIODevice vbasedev; /* not a QOM object */
|
||||
VFIORegion **regions;
|
||||
QLIST_HEAD(, VFIOINTp) intp_list; /* list of IRQs */
|
||||
/* queue of pending IRQs */
|
||||
QSIMPLEQ_HEAD(, VFIOINTp) pending_intp_queue;
|
||||
char *compat; /* DT compatible values, separated by NUL */
|
||||
unsigned int num_compat; /* number of compatible values */
|
||||
uint32_t mmap_timeout; /* delay to re-enable mmaps after interrupt */
|
||||
QEMUTimer *mmap_timer; /* allows fast-path resume after IRQ hit */
|
||||
QemuMutex intp_mutex; /* protect the intp_list IRQ state */
|
||||
bool irqfd_allowed; /* debug option to force irqfd on/off */
|
||||
};
|
||||
typedef struct VFIOPlatformDevice VFIOPlatformDevice;
|
||||
|
||||
struct VFIOPlatformDeviceClass {
|
||||
/*< private >*/
|
||||
SysBusDeviceClass parent_class;
|
||||
/*< public >*/
|
||||
};
|
||||
typedef struct VFIOPlatformDeviceClass VFIOPlatformDeviceClass;
|
||||
|
||||
DECLARE_OBJ_CHECKERS(VFIOPlatformDevice, VFIOPlatformDeviceClass,
|
||||
VFIO_PLATFORM_DEVICE, TYPE_VFIO_PLATFORM)
|
||||
|
||||
#endif /* HW_VFIO_VFIO_PLATFORM_H */
|
||||
Reference in New Issue
Block a user