Hi Vikas, On 11/9/20 7:41 AM, Vikas Gupta wrote: > Hi Alex, > > On Fri, Nov 6, 2020 at 8:42 AM Alex Williamson > <alex.williamson@xxxxxxxxxx> wrote: >> >> On Fri, 6 Nov 2020 08:24:26 +0530 >> Vikas Gupta <vikas.gupta@xxxxxxxxxxxx> wrote: >> >>> Hi Alex, >>> >>> On Thu, Nov 5, 2020 at 12:38 PM Alex Williamson >>> <alex.williamson@xxxxxxxxxx> wrote: >>>> >>>> On Thu, 5 Nov 2020 11:32:55 +0530 >>>> Vikas Gupta <vikas.gupta@xxxxxxxxxxxx> wrote: >>>> >>>>> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h >>>>> index 2f313a238a8f..aab051e8338d 100644 >>>>> --- a/include/uapi/linux/vfio.h >>>>> +++ b/include/uapi/linux/vfio.h >>>>> @@ -203,6 +203,7 @@ struct vfio_device_info { >>>>> #define VFIO_DEVICE_FLAGS_AP (1 << 5) /* vfio-ap device */ >>>>> #define VFIO_DEVICE_FLAGS_FSL_MC (1 << 6) /* vfio-fsl-mc device */ >>>>> #define VFIO_DEVICE_FLAGS_CAPS (1 << 7) /* Info supports caps */ >>>>> +#define VFIO_DEVICE_FLAGS_MSI (1 << 8) /* Device supports msi */ >>>>> __u32 num_regions; /* Max region index + 1 */ >>>>> __u32 num_irqs; /* Max IRQ index + 1 */ >>>>> __u32 cap_offset; /* Offset within info struct of first cap */ >>>> >>>> This doesn't make any sense to me, MSIs are just edge triggered >>>> interrupts to userspace, so why isn't this fully described via >>>> VFIO_DEVICE_GET_IRQ_INFO? If we do need something new to describe it, >>>> this seems incomplete, which indexes are MSI (IRQ_INFO can describe >>>> that)? We also already support MSI with vfio-pci, so a global flag for >>>> the device advertising this still seems wrong. Thanks, >>>> >>>> Alex >>>> >>> Since VFIO platform uses indexes for IRQ numbers so I think MSI(s) >>> cannot be described using indexes. >> >> That would be news for vfio-pci which has been describing MSIs with >> sub-indexes within indexes since vfio started. >> >>> In the patch set there is no difference between MSI and normal >>> interrupt for VFIO_DEVICE_GET_IRQ_INFO. >> >> Then what exactly is a global device flag indicating? Does it indicate >> all IRQs are MSI? > > No, it's not indicating that all are MSI. > The rationale behind adding the flag to tell user-space that platform > device supports MSI as well. As you mentioned recently added > capabilities can help on this, I`ll go through that. > >> >>> The patch set adds MSI(s), say as an extension, to the normal >>> interrupts and handled accordingly. >> >> So we have both "normal" IRQs and MSIs? How does the user know which >> indexes are which? > > With this patch set, I think this is missing and user space cannot > know that particular index is MSI interrupt. > For platform devices there is no such mechanism, like index and > sub-indexes to differentiate between legacy, MSI or MSIX as it’s there > in PCI. Wht can't you use the count field (as per vfio_pci_get_irq_count())? > I believe for a particular IRQ index if the flag > VFIO_IRQ_INFO_NORESIZE is used then user space can know which IRQ > index has MSI(s). Does it make sense? I don't think it is the same semantics. Thanks Eric > Suggestions on this would be helpful. > > Thanks, > Vikas >> >>> Do you see this is a violation? If >> >> Seems pretty unclear and dubious use of a global device flag. >> >>> yes, then we`ll think of other possible ways to support MSI for the >>> platform devices. >>> Macro VFIO_DEVICE_FLAGS_MSI can be changed to any other name if it >>> collides with an already supported vfio-pci or if not necessary, we >>> can remove this flag. >> >> If nothing else you're using a global flag to describe a platform >> device specific augmentation. We've recently added capabilities on the >> device info return that would be more appropriate for this, but >> fundamentally I don't understand why the irq info isn't sufficient. >> Thanks, >> >> Alex >>