[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86/apicv: enhance posted-interrupt processing



On February 23, 2017 4:38 PM, Chao Gao wrote:
>On Thu, Feb 23, 2017 at 11:55:15AM +0000, Xuquan (Quan Xu) wrote:
>>On February 23, 2017 7:01 PM, Jan Beulich wrote:
>>>>>> On 23.02.17 at 11:53, <xuquan8@xxxxxxxxxx> wrote:
>>>> On February 23, 2017 5:59 PM, Jan Beulich wrote:
>>>>>>>> On 23.02.17 at 10:28, <xuquan8@xxxxxxxxxx> wrote:
>>>>>> On February 18, 2017 12:33 AM, Jan Beulich wrote:
>>>>>>>>>> On 17.02.17 at 09:49, <chao.gao@xxxxxxxxx> wrote:
>>>>>>>>>diff --git a/xen/arch/x86/hvm/vmx/vmx.c
>>>>>b/xen/arch/x86/hvm/vmx/vmx.c
>>>>>>>>>index 61925cf..3887c32 100644
>>>>>>>>>--- a/xen/arch/x86/hvm/vmx/vmx.c
>>>>>>>>>+++ b/xen/arch/x86/hvm/vmx/vmx.c
>>>>>>>>>@@ -1846,8 +1846,7 @@ static void
>>>>>>>__vmx_deliver_posted_interrupt(struct vcpu *v)
>>>>>>>>>     {
>>>>>>>>>         unsigned int cpu = v->processor;
>>>>>>>>>
>>>>>>>>>-        if ( !test_and_set_bit(VCPU_KICK_SOFTIRQ,
>>>>>>>&softirq_pending(cpu))
>>>>>>>>>-             && (cpu != smp_processor_id()) )
>>>>>>>>>+        if ( !softirq_pending(cpu) && (cpu !=
>>>>>>>>>+ smp_processor_id())
>>>>>>>>>+ )
>>>>>>
>>>>>> Jan,
>>>>>>     could you help me present the definition of ' smp_processor_id()'
>>>and '
>>>>>> current' in __vmx_deliver_posted_interrupt() ? thanks..
>>>>>
>>>>>I'm afraid I don't understand the request.
>>>>
>>>> IOW,
>>>>  which vcpu does the 'current' refer to?
>>>>  which cpu does the ' smp_processor_id()' refer to?
>>>
>>>current: currently running vCPU
>>
>>in a SMP machine, are there more than one currently running vCPU?
>>I think so, the condition "if ( running && (in_irq() || (v != current)) )", in
>__vmx_deliver_posted_interrupt() looks strange -- when vCPU is running,
>why to check ' v != current '..
>>
>>
>>>smp_processor_id(): processor ID of the CPU we're running on
>>>
>>I think if vcpu is running, ' cpu != smp_processor_id() ' should be true.
>>
>
>I am afraid it is not right. when the 'current' wants to deliver posted 
>interrupt
>to 'current', the vcpu is running and cpu == smp_processor_id().
>
>>
>>I think we could simplify __vmx_deliver_posted_interrupt():
>>
>>   1. set VCPU_KICK_SOFTIRQ bit of v->processor.
>
>Do we need set VCPU_KICK_SOFTIRQ bit when vcpu is not running? IMO, if
>vcpu is not running, just unblock (or, vcpu_kick since when vcpu is not
>running, vcpu_kick is the same with vcpu_unblock )is enough.
>
>>   2. IF vcpu is running:
>>         - send_IPI
>
>Do we need send self-IPI when the target vcpu is 'current'? IMO, set
>VCPU_KICK_SOFTIQR is enough.
>
>>     ELSE
>>         - vcpu_kick
>>
>>

Chao, I almost agree to your comments.. I will send out v2 later..
I appreciate your(KT, JB and you) comments that help me understand posted 
interrupt..

Quan

_______________________________________________
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®.