On 2019.07.19 09:02:33 +0000, Lu, Kechen wrote:
> Hi,
> 
> > -----Original Message-----
> > From: Zhenyu Wang [mailto:zhen...@linux.intel.com]
> > Sent: Friday, July 19, 2019 2:06 PM
> > To: Lu, Kechen <kechen...@intel.com>
> > Cc: intel-gvt-...@lists.freedesktop.org; k...@vger.kernel.org; linux- 
> > ker...@vger.kernel.org; Zhang, Tina <tina.zh...@intel.com>; 
> > kra...@redhat.com; zhen...@linux.intel.com; Lv, Zhiyuan 
> > <zhiyuan...@intel.com>; Wang, Zhi A <zhi.a.w...@intel.com>; Tian, 
> > Kevin <kevin.t...@intel.com>; Yuan, Hang <hang.y...@intel.com>; 
> > alex.william...@redhat.com; Eric Auger <eric.au...@redhat.com>
> > Subject: Re: [RFC PATCH v4 1/6] vfio: Define device specific irq type 
> > capability
> > 
> > On 2019.07.18 23:56:35 +0800, Kechen Lu wrote:
> > > From: Tina Zhang <tina.zh...@intel.com>
> > >
> > > Cap the number of irqs with fixed indexes and use capability chains 
> > > to chain device specific irqs.
> > >
> > > Signed-off-by: Tina Zhang <tina.zh...@intel.com>
> > > Signed-off-by: Eric Auger <eric.au...@redhat.com>
> > > ---
> > >  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 8f10748dac79..be6adab4f759 100644
> > > --- a/include/uapi/linux/vfio.h
> > > +++ b/include/uapi/linux/vfio.h
> > > @@ -448,11 +448,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 */
> > 
> > This still breaks ABI as argsz would be updated with this new field, 
> > so it would cause compat issue. I think my last suggestion was to 
> > assume cap list starts after vfio_irq_info.
> >
>  
> In the common practice, the general logic is first use the "count" as the 
> "minsz" boundary to perform copy from user, and then perform following logic, 
> so that the incompatibility issue would not happen. BTW, this patch has been 
> double checked by Eric Auger before included in his patch-set. 
> 

yeah, sorry I was thinking vfio might fail in that case but it seems
current code assume argsz should be larger than minsz for count here,
so that's fine.

> 
> > >  };
> > >  #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)
> > >   *
> > > @@ -554,7 +570,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.17.1
> > >
> > 
> > --
> > Open Source Technology Center, Intel ltd.
> > 
> > $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827

Attachment: signature.asc
Description: PGP signature

Reply via email to