On 2019.07.19 09:02:33 +0000, Lu, Kechen wrote: > Hi, > > > -----Original Message----- > > From: Zhenyu Wang [mailto:[email protected]] > > Sent: Friday, July 19, 2019 2:06 PM > > To: Lu, Kechen <[email protected]> > > Cc: [email protected]; [email protected]; linux- > > [email protected]; Zhang, Tina <[email protected]>; > > [email protected]; [email protected]; Lv, Zhiyuan > > <[email protected]>; Wang, Zhi A <[email protected]>; Tian, > > Kevin <[email protected]>; Yuan, Hang <[email protected]>; > > [email protected]; Eric Auger <[email protected]> > > 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 <[email protected]> > > > > > > Cap the number of irqs with fixed indexes and use capability chains > > > to chain device specific irqs. > > > > > > Signed-off-by: Tina Zhang <[email protected]> > > > Signed-off-by: Eric Auger <[email protected]> > > > --- > > > 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
signature.asc
Description: PGP signature

