lkml.org 
[lkml]   [2021]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v12 07/13] vfio: Use capability chains to handle device specific irq
    Date
    From: Tina Zhang <tina.zhang@intel.com>

    Caps the number of irqs with fixed indexes and uses capability chains
    to chain device specific irqs.

    Signed-off-by: Tina Zhang <tina.zhang@intel.com>
    Signed-off-by: Eric Auger <eric.auger@redhat.com>
    [Eric: Put cap_offset at the end of the vfio_irq_info struct,
    remove GFX IRQ at the moment and remove any reference to this latter
    in the commit message]

    ---
    ---
    include/uapi/linux/vfio.h | 19 ++++++++++++++++++-
    1 file changed, 18 insertions(+), 1 deletion(-)

    diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
    index bc46e5d6daa4..3688215843fe 100644
    --- a/include/uapi/linux/vfio.h
    +++ b/include/uapi/linux/vfio.h
    @@ -702,11 +702,27 @@ struct vfio_irq_info {
    #define VFIO_IRQ_INFO_MASKABLE (1 << 1)
    #define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
    #define VFIO_IRQ_INFO_NORESIZE (1 << 3)
    +#define VFIO_IRQ_INFO_FLAG_CAPS (1 << 4) /* Info supports caps */
    __u32 index; /* IRQ index */
    __u32 count; /* Number of IRQs within this index */
    + __u32 cap_offset; /* Offset within info struct of first cap */
    };
    #define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)

    +/*
    + * The irq type capability allows IRQs unique to a specific device or
    + * class of devices to be exposed.
    + *
    + * The structures below define version 1 of this capability.
    + */
    +#define VFIO_IRQ_INFO_CAP_TYPE 3
    +
    +struct vfio_irq_info_cap_type {
    + struct vfio_info_cap_header header;
    + __u32 type; /* global per bus driver */
    + __u32 subtype; /* type specific */
    +};
    +
    /**
    * VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set)
    *
    @@ -808,7 +824,8 @@ enum {
    VFIO_PCI_MSIX_IRQ_INDEX,
    VFIO_PCI_ERR_IRQ_INDEX,
    VFIO_PCI_REQ_IRQ_INDEX,
    - VFIO_PCI_NUM_IRQS
    + VFIO_PCI_NUM_IRQS = 5 /* Fixed user ABI, IRQ indexes >=5 use */
    + /* device specific cap to define content */
    };

    /*
    --
    2.26.2
    \
     
     \ /
      Last update: 2021-02-23 22:15    [W:2.281 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site