Yeah should be 0, typo sorry
I use 3dmark test and successfully triggered a case in reserve_shared:
if (obj->staged!=NULL) { BUG(); } kfree(obj->staged)
Previously I cannot figure out why the hell this BUG() could be hit, finally the scenario comes up, you only need one add_excl_fence() after reserved_shared(), and next time the reserve_shared will go hit that BUG(), but that's okay, since it only frees the obj->staged that allocated right before this calling in the previous reserve_shared(), and no one refers to it now.
From: Koenig, Christian
Sent: Tuesday, March 6, 2018 6:05:27 PM To: Liu, Monk; dri-devel@xxxxxxxxxxxxxxxxxxxxx; Chris Wilson Subject: Re: reservation questions Am 06.03.2018 um 10:56 schrieb Liu, Monk:
The exclusive fence replaces all shared fences, e.g. the exclusive operation needs to wait for all shared fences before it can access the protected object. Because of this we can drop all shared fences when a new exclusive fence is set.
Why would old->shared_count be 1 now? As far as I can see it should be zero. Christian.
|
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel