On 13/11/2017 11:14, Alex Bennée wrote:
> 
> Pavel Dovgalyuk <dovga...@ispras.ru> writes:
> 
>>> From: Paolo Bonzini [mailto:pbonz...@redhat.com]
>>>> From: "David Hildenbrand" <da...@redhat.com>
>>>> On 02.11.2017 12:08, Paolo Bonzini wrote:
>>>>> On 31/10/2017 12:26, Pavel Dovgalyuk wrote:
>>>>>> From: Alex Bennée <alex.ben...@linaro.org>
>>>>>>
>>>>>> Now the only real need to hold the BQL is for when we sleep on the
>>>>>> cpu->halt conditional. The lock is actually dropped while the thread
>>>>>> sleeps so the actual window for contention is pretty small. This also
>>>>>> means we can remove the special case hack for exclusive work and
>>>>>> simply declare that work no longer has an implicit BQL held. This
>>>>>> isn't a major problem async work is generally only changing things in
>>>>>> the context of its own vCPU. If it needs to work across vCPUs it
>>>>>> should be using the exclusive mechanism or possibly taking the lock
>>>>>> itself.
>>>>>>
>>>>>> Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
>>>>>> Tested-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru>
>>>>>
>>>>> At least cpu_throttle_thread would fail with this patch.
>>>>>
>>>>> Also I am not sure if the s390 SIGP handlers are ready for this.
>>>>>
>>>>
>>>> We have a global lock to the SIGP "facility". However we need the BQL in
>>>> order to inject interrupts into CPUs (otherwise it would trigger an
>>>> assert when injecting).
>>>>
>>>> We inject Restart and Stop interrupts from run_on_cpu. This requires the
>>>> BQL. So Paolo should be right, this change would break s390x.
>>>
>>> I had some patches to access interrupt_request with the atomic builtins.  If
>>> Pavel can first extract the other changes to the icount mechanism, I can
>>> update them.
>>
>> What changes do you mean here?
>> I'm not sure that I understand clearly how threads interact with BQL.
>> These patches were authored by Alex and we'll have to get him into the
>> discussion.
> 
> Do you want me to re-spin my sub-set of the patches as a new base?

I think the first part to be merged is changes to cpu-exec.c and
friends.  These might even go into 2.11.

Paolo

Reply via email to