Sheng Yang
2010-Aug-26 09:17 UTC
[Xen-devel] [PATCH] VT-d: Hardware require RH bit to be set in IRTE when delivery mode is LPR
Signed-off-by: Sheng Yang <sheng@linux.intel.com> -- diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -320,9 +320,13 @@ *(((u32 *)&new_rte) + 0) = value; new_ire.lo.fpd = 0; new_ire.lo.dm = new_rte.dest_mode; - new_ire.lo.rh = 0; new_ire.lo.tm = new_rte.trigger; new_ire.lo.dlm = new_rte.delivery_mode; + /* Hardware require RH = 1 for LPR delivery mode */ + if ( new_ire.lo.dlm == dest_LowestPrio ) + new_ire.lo.rh = 1; + else + new_ire.lo.rh = 0; new_ire.lo.avail = 0; new_ire.lo.res_1 = 0; new_ire.lo.vector = new_rte.vector; @@ -632,9 +636,13 @@ /* Set interrupt remapping table entry */ new_ire.lo.fpd = 0; new_ire.lo.dm = (msg->address_lo >> MSI_ADDR_DESTMODE_SHIFT) & 0x1; - new_ire.lo.rh = 0; new_ire.lo.tm = (msg->data >> MSI_DATA_TRIGGER_SHIFT) & 0x1; new_ire.lo.dlm = (msg->data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x1; + /* Hardware require RH = 1 for LPR delivery mode */ + if ( new_ire.lo.dlm == dest_LowestPrio ) + new_ire.lo.rh = 1; + else + new_ire.lo.rh = 0; new_ire.lo.avail = 0; new_ire.lo.res_1 = 0; new_ire.lo.vector = (msg->data >> MSI_DATA_VECTOR_SHIFT) & _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2010-Aug-26 09:24 UTC
[Xen-devel] Re: [PATCH] VT-d: Hardware require RH bit to be set in IRTE when delivery mode is LPR
On 26/08/2010 10:17, "Sheng Yang" <sheng@linux.intel.com> wrote:> + /* Hardware require RH = 1 for LPR delivery mode */ > + if ( new_ire.lo.dlm == dest_LowestPrio ) > + new_ire.lo.rh = 1; > + else > + new_ire.lo.rh = 0;The form ''if ( p ) x = 1; else x = 0;'' is better written as ''x = (p)''. Please re-submit in that style. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Sheng Yang
2010-Aug-26 09:42 UTC
[Xen-devel] Re: [PATCH] VT-d: Hardware require RH bit to be set in IRTE when delivery mode is LPR
On Thursday 26 August 2010 17:24:40 Keir Fraser wrote:> On 26/08/2010 10:17, "Sheng Yang" <sheng@linux.intel.com> wrote: > > + /* Hardware require RH = 1 for LPR delivery mode */ > > + if ( new_ire.lo.dlm == dest_LowestPrio ) > > + new_ire.lo.rh = 1; > > + else > > + new_ire.lo.rh = 0; > > The form ''if ( p ) x = 1; else x = 0;'' is better written as ''x = (p)''. > Please re-submit in that style. > > -- KeirUpdated, thanks. -- regards Yang, Sheng -- diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -320,9 +320,10 @@ *(((u32 *)&new_rte) + 0) = value; new_ire.lo.fpd = 0; new_ire.lo.dm = new_rte.dest_mode; - new_ire.lo.rh = 0; new_ire.lo.tm = new_rte.trigger; new_ire.lo.dlm = new_rte.delivery_mode; + /* Hardware require RH = 1 for LPR delivery mode */ + new_ire.lo.rh = (new_ire.lo.dlm == dest_LowestPrio); new_ire.lo.avail = 0; new_ire.lo.res_1 = 0; new_ire.lo.vector = new_rte.vector; @@ -632,9 +633,10 @@ /* Set interrupt remapping table entry */ new_ire.lo.fpd = 0; new_ire.lo.dm = (msg->address_lo >> MSI_ADDR_DESTMODE_SHIFT) & 0x1; - new_ire.lo.rh = 0; new_ire.lo.tm = (msg->data >> MSI_DATA_TRIGGER_SHIFT) & 0x1; new_ire.lo.dlm = (msg->data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x1; + /* Hardware require RH = 1 for LPR delivery mode */ + new_ire.lo.rh = (new_ire.lo.dlm == dest_LowestPrio); new_ire.lo.avail = 0; new_ire.lo.res_1 = 0; new_ire.lo.vector = (msg->data >> MSI_DATA_VECTOR_SHIFT) & _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel