|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv11 3/4] gnttab: make the grant table lock a read-write lock
On 05/06/15 15:34, Jan Beulich wrote:
>>>> On 02.06.15 at 18:26, <david.vrabel@xxxxxxxxxx> wrote:
>> @@ -970,9 +988,10 @@ __gnttab_unmap_common(
>> TRACE_1D(TRC_MEM_PAGE_GRANT_UNMAP, dom);
>>
>> rgt = rd->grant_table;
>> - double_gt_lock(lgt, rgt);
>>
>> - op->flags = op->map->flags;
>> + read_lock(&rgt->lock);
>> +
>> + op->flags = read_atomic(&op->map->flags);
>> if ( unlikely(!op->flags) || unlikely(op->map->domid != dom) )
>> {
>> gdprintk(XENLOG_WARNING, "Unstable handle %u\n", op->handle);
>> @@ -1019,31 +1038,34 @@ __gnttab_unmap_common(
>> act->pin -= GNTPIN_hstw_inc;
>> }
>>
>> - if ( gnttab_need_iommu_mapping(ld) )
>> + act_release_out:
>> + active_entry_release(act);
>> + unmap_out:
>> + read_unlock(&rgt->lock);
>
> Trying to answer the question on what protects the maptrack
> entries: With the flags check done first and, after initial setup, the
> ref field never changing, all modifications of flags as well as the
> decision whether to drop the maptrack handle appear to be guarded
> by ref's active entry lock. I think this is implicit enough to require
> being properly spelled out somewhere.
>
> Together with struct grant_mapping not being used elsewhere (I
> just now created a patch to make this more explicit by moving its
> declaration to the C file) I think this addresses that particular
> concern. If you agree, feel free to add
Yes, this was exactly my reasoning. I shall improve the docs/comments
to make this clearer in v12.
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
Thanks!
David
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |