From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [v3 06/15] vmx: Extend struct pi_desc to support VT-d Posted-Interrupts Date: Mon, 29 Jun 2015 16:04:36 +0100 Message-ID: <55915E84.3040905@citrix.com> References: <1435123109-10481-1-git-send-email-feng.wu@intel.com> <1435123109-10481-7-git-send-email-feng.wu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1435123109-10481-7-git-send-email-feng.wu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Feng Wu , xen-devel@lists.xen.org Cc: yang.z.zhang@intel.com, george.dunlap@eu.citrix.com, kevin.tian@intel.com, keir@xen.org, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org On 24/06/15 06:18, Feng Wu wrote: > Extend struct pi_desc according to VT-d Posted-Interrupts Spec. > > Signed-off-by: Feng Wu Reviewed-by: Andrew Cooper Although this, like many other patches in the series needs a VT-d maintainers ack/review. > --- > v3: > - Use u32 instead of u64 for the bitfield in 'struct pi_desc' > > xen/include/asm-x86/hvm/vmx/vmcs.h | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/xen/include/asm-x86/hvm/vmx/vmcs.h b/xen/include/asm-x86/hvm/vmx/vmcs.h > index 1104bda..dedfaef 100644 > --- a/xen/include/asm-x86/hvm/vmx/vmcs.h > +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h > @@ -81,8 +81,19 @@ struct vmx_domain { > > struct pi_desc { > DECLARE_BITMAP(pir, NR_VECTORS); > - u32 control; > - u32 rsvd[7]; > + 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; > + }; > + u32 rsvd[6]; > } __attribute__ ((aligned (64))); > > #define ept_get_wl(ept) ((ept)->ept_wl)