|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 3/3] VT-d PI: restrict the vcpu number on a given pcpu
>>> On 23.06.17 at 06:22, <chao.gao@xxxxxxxxx> wrote:
> On Fri, Jun 16, 2017 at 09:09:13AM -0600, Jan Beulich wrote:
>>>>> On 24.05.17 at 08:56, <chao.gao@xxxxxxxxx> wrote:
>>> + {
>>> + pi_cpu = cpumask_cycle(pi_cpu, &cpu_online_map);
>>
>>With this, how could the CPU be offline by the time you make it
>>back to the check above.
>
> Thanks to point it out. It would incur a bug.
I don't understand what you're trying to tell me here.
> I think we should do things like this:
>
> IF pi_blocking_list of current pcpu doesn't over the limit:
> add the vcpu to current pcpu.
> ELSE
> add the vcpu to another pcpu.
But that's what supposedly the patch already tries to do?
> To add the vcpu to another pcpu, we should avoid concurrency with
> vmx_pi_desc_fixup(). Thus, a lock (e.g. remote_pi_list_lock)
Please use names which actually exist in source code, or make
clear what exactly you're referring to. Talking of
remote_pi_list_lock, which I can't find any instance of, does not
help the discussion, as you leave me guessing whose lock you
mean to acquire.
> can solve this potential concurrency. Using this lock like below:
>
> in vmx_vcpu_block():
>
> IF pi_blocking_list of current pcpu doesn't over the limit:
> add the vcpu to current pcpu
> ELSE
> acquire remote_pi_list_lock
> choose another online pcpu (don't worry this pcpu would goes
> offline for we hold the
> remote_pi_list_lock, which blocks
> calling vmx_pi_desc_fixup(),
> thus at least we can add this
> vcpu to the pi_blocking_list
> before cleanup)
I can't see why you need to hold a lock to make sure a pCPU doesn't
go offline - pCPU offlining happens in stop_machine context anyway.
Jan
> add the vcpu to the chosen pcpu
> release remote_pi_list_lock
>
> in vmx_pi_desc_fixup():
> acquire remote_pi_list_lock
> ...
> release remote_pi_list_lock
>
> Thanks
> Chao
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |