[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4] VT-d PI: disable VT-d PI when CPU-side PI isn't enabled
>>> On 13.06.17 at 10:20, <chao.gao@xxxxxxxxx> wrote: > From the context calling pi_desc_init(), we can conclude the current > implementation of VT-d PI depends on CPU-side PI. If we enable VT-d PI > and disable CPU-side PI by disabling APICv explicitly in xen boot > command line, we would get an assertion failure. > > This patch clears iommu_intpost once finding CPU-side PI won't be enabled. > It is safe for this is done before this flag starts taking effect. Also > take this chance to remove the useless check of "acknowledge interrupt on > exit", which is a minimal requirement which has been checked earlier. > > Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> > --- > v4: > - Remove APICv stuff > - Remove a useless check of "acknowledge interrupt on exit" > > v3: > - check relevant bit directly other than checking the apicv option > - add sample of 'xl dmesg' > > v2: > - add missing S-o-b > - comments changes > - change bool_t to bool and move 'opt_apicv_enabled' declaration to vmcs.h > > --- > xen/arch/x86/hvm/vmx/vmcs.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c > index 8103b20..58f89df 100644 > --- a/xen/arch/x86/hvm/vmx/vmcs.c > +++ b/xen/arch/x86/hvm/vmx/vmcs.c > @@ -345,11 +345,19 @@ static int vmx_init_vmcs_config(void) > > /* > * "Process posted interrupt" can be set only when "virtual-interrupt > - * delivery" and "acknowledge interrupt on exit" is set > + * delivery" and "acknowledge interrupt on exit" is set. For the latter > + * is a minimal requirement, only check the former, which is optional. > */ > - if ( !(_vmx_secondary_exec_control & > SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY) > - || !(_vmx_vmexit_control & VM_EXIT_ACK_INTR_ON_EXIT) ) > - _vmx_pin_based_exec_control &= ~ PIN_BASED_POSTED_INTERRUPT; > + if ( !(_vmx_secondary_exec_control & > SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY) ) > + _vmx_pin_based_exec_control &= ~ PIN_BASED_POSTED_INTERRUPT; > + > + if ( iommu_intpost > + && !(_vmx_pin_based_exec_control & PIN_BASED_POSTED_INTERRUPT) ) With the placement of the && here corrected (belongs on the earlier line), which can be done while committing of no other need for v5 arises, Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |