qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC v4 16/28] tcg: drop global lock during TCG code ex


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC v4 16/28] tcg: drop global lock during TCG code execution
Date: Wed, 7 Sep 2016 07:43:53 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0


On 07/09/2016 06:03, Richard Henderson wrote:
> 
>> +    if (mr->global_locking) {
>> +        qemu_mutex_lock_iothread();
>> +        locked = true;
>> +    }
>>      memory_region_dispatch_read(mr, physaddr, &val, 1 << SHIFT,
>>                                  iotlbentry->attrs);
>> +    if (locked) {
>> +        qemu_mutex_unlock_iothread();
>> +    }
> 
> I'm not keen on this pattern.
> 
> (1) Why not use recursive locks?

Probably I'm biased by looking at this code too long, but... how would
they help?

> (2) If there's a good reason why not, then perhaps
> 
>   if (mr->global_locking) {
>     qemu_mutex_lock_iothread();
>     do_something;
>     qemu_mutex_unlock_iothread();
>   } else {
>     do_something;
>   }

I went with the other one because the arguments to
memory_region_dispatch_read are relatively many, but this can work too
if Alex prefers it.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]