Merge tag 'vfio-v4.20-rc1.v2' of git://github.com/awilliam/linux-vfio
Pull VFIO updates from Alex Williamson: - EDID interfaces for vfio devices supporting display extensions (Gerd Hoffmann) - Generically select Type-1 IOMMU model support on ARM/ARM64 (Geert Uytterhoeven) - Quirk for VFs reporting INTx pin (Alex Williamson) - Fix error path memory leak in MSI support (Li Qiang) * tag 'vfio-v4.20-rc1.v2' of git://github.com/awilliam/linux-vfio: vfio: add edid support to mbochs sample driver vfio: add edid api for display (vgpu) devices. drivers/vfio: Allow type-1 IOMMU instantiation with all ARM/ARM64 IOMMUs vfio/pci: Mask buggy SR-IOV VF INTx support vfio/pci: Fix potential memory leak in vfio_msi_cap_len
This commit is contained in:
@@ -303,6 +303,56 @@ struct vfio_region_info_cap_type {
|
||||
#define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
|
||||
#define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
|
||||
|
||||
#define VFIO_REGION_TYPE_GFX (1)
|
||||
#define VFIO_REGION_SUBTYPE_GFX_EDID (1)
|
||||
|
||||
/**
|
||||
* struct vfio_region_gfx_edid - EDID region layout.
|
||||
*
|
||||
* Set display link state and EDID blob.
|
||||
*
|
||||
* The EDID blob has monitor information such as brand, name, serial
|
||||
* number, physical size, supported video modes and more.
|
||||
*
|
||||
* This special region allows userspace (typically qemu) set a virtual
|
||||
* EDID for the virtual monitor, which allows a flexible display
|
||||
* configuration.
|
||||
*
|
||||
* For the edid blob spec look here:
|
||||
* https://en.wikipedia.org/wiki/Extended_Display_Identification_Data
|
||||
*
|
||||
* On linux systems you can find the EDID blob in sysfs:
|
||||
* /sys/class/drm/${card}/${connector}/edid
|
||||
*
|
||||
* You can use the edid-decode ulility (comes with xorg-x11-utils) to
|
||||
* decode the EDID blob.
|
||||
*
|
||||
* @edid_offset: location of the edid blob, relative to the
|
||||
* start of the region (readonly).
|
||||
* @edid_max_size: max size of the edid blob (readonly).
|
||||
* @edid_size: actual edid size (read/write).
|
||||
* @link_state: display link state (read/write).
|
||||
* VFIO_DEVICE_GFX_LINK_STATE_UP: Monitor is turned on.
|
||||
* VFIO_DEVICE_GFX_LINK_STATE_DOWN: Monitor is turned off.
|
||||
* @max_xres: max display width (0 == no limitation, readonly).
|
||||
* @max_yres: max display height (0 == no limitation, readonly).
|
||||
*
|
||||
* EDID update protocol:
|
||||
* (1) set link-state to down.
|
||||
* (2) update edid blob and size.
|
||||
* (3) set link-state to up.
|
||||
*/
|
||||
struct vfio_region_gfx_edid {
|
||||
__u32 edid_offset;
|
||||
__u32 edid_max_size;
|
||||
__u32 edid_size;
|
||||
__u32 max_xres;
|
||||
__u32 max_yres;
|
||||
__u32 link_state;
|
||||
#define VFIO_DEVICE_GFX_LINK_STATE_UP 1
|
||||
#define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
|
||||
};
|
||||
|
||||
/*
|
||||
* The MSIX mappable capability informs that MSIX data of a BAR can be mmapped
|
||||
* which allows direct access to non-MSIX registers which happened to be within
|
||||
|
Reference in New Issue
Block a user