[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:29, <JBeulich@xxxxxxxx> wrote:
>>>> 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>

Kevin, Jun?

>> ---
>> 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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.