RE: [v4 01/16] KVM: Extend struct pi_desc for VT-d Posted-Interrupts

Wu, Feng
2015-06-24T05:42:39Z

> -----Original Message-----
> From: Paolo Bonzini [mailto:pbonzini@redhat.com]
> Sent: Tuesday, June 23, 2015 11:50 PM
> To: Wu, Feng; kvm@vger.kernel.org; linux-kernel@vger.kernel.org
> Cc: mtosatti@redhat.com; alex.williamson@redhat.com;
> eric.auger@linaro.org
> Subject: Re: [v4 01/16] KVM: Extend struct pi_desc for VT-d Posted-Interrupts
>
>
>
> On 11/06/2015 12:51, Feng Wu wrote:
> > + union {
> > + struct {
> > + /* bit 256 - Outstanding Notification */
> > + u64 on : 1,
> > + /* bit 257 - Suppress Notification */
> > + sn : 1,
> > + /* bit 271:258 - Reserved */
> > + rsvd_1 : 14,
> > + /* bit 279:272 - Notification Vector */
> > + nv : 8,
> > + /* bit 287:280 - Reserved */
> > + rsvd_2 : 8,
> > + /* bit 319:288 - Notification Destination */
> > + ndst : 32;
>
> Please do not use bitfields, Linus doesn't like them. Use static
> inlines instead to extract or set the fields from the control field.

Do you mean we don't use bitfields at all, or the following format is
acceptable, in which, we use bitfileds as less as possible?

union {
struct
{
u16 on : 1, /* bit 256 - Outstanding Notification */
sn : 1, /* bit 257 - Suppress Notification */
rsvd_1 : 14; /* bit 271:258 - Reserved */
u8 nv; /* bit 279:272 - Notification Vector */
u8 rsvd_2; /* bit 287:280 - Reserved */
u32 ndst; /* bit 319:288 - Notification Destination */
};
u64 control;
};

Thanks,
Feng

>
> Paolo
>
> > + };
> > + u64 control;
> > + };
> > + u32 rsvd[6];