aboutsummaryrefslogtreecommitdiff
path: root/include/linux/reservation.h
AgeCommit message (Collapse)AuthorFilesLines
2014-07-08reservation: add suppport for read-only access using rcuMaarten Lankhorst1-16/+36
This adds some extra functions to deal with rcu. reservation_object_get_fences_rcu() will obtain the list of shared and exclusive fences without obtaining the ww_mutex. reservation_object_wait_timeout_rcu() will wait on all fences of the reservation_object, without obtaining the ww_mutex. reservation_object_test_signaled_rcu() will test if all fences of the reservation_object are signaled without using the ww_mutex. reservation_object_get_excl and reservation_object_get_list require the reservation object to be held, updating requires write_seqcount_begin/end. If only the exclusive fence is needed, rcu_dereference followed by fence_get_rcu can be used, if the shared fences are needed it's recommended to use the supplied functions. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Sumit Semwal <[email protected]> Acked-by: Daniel Vetter <[email protected]> Reviewed-By: Thomas Hellstrom <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-08reservation: update api and add some helpersMaarten Lankhorst1-7/+49
Move the list of shared fences to a struct, and return it in reservation_object_get_list(). Add reservation_object_get_excl to get the exclusive fence. Add reservation_object_reserve_shared(), which reserves space in the reservation_object for 1 more shared fence. reservation_object_add_shared_fence() and reservation_object_add_excl_fence() are used to assign a new fence to a reservation_object pointer, to complete a reservation. Changes since v1: - Add reservation_object_get_excl, reorder code a bit. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Sumit Semwal <[email protected]> Acked-by: Daniel Vetter <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2014-07-08reservation: add support for fences to enable cross-device synchronisationMaarten Lankhorst1-1/+19
Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Sumit Semwal <[email protected]> Acked-by: Daniel Vetter <[email protected]> Reviewed-by: Rob Clark <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2013-07-12mutex: Move ww_mutex definitions to ww_mutex.hMaarten Lankhorst1-1/+1
Move the definitions for wound/wait mutexes out to a separate header, ww_mutex.h. This reduces clutter in mutex.h, and increases readability. Suggested-by: Linus Torvalds <[email protected]> Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Peter Zijlstra <[email protected]> Acked-by: Rik van Riel <[email protected]> Acked-by: Maarten Lankhorst <[email protected]> Cc: Dave Airlie <[email protected]> Link: http://lkml.kernel.org/r/[email protected] [ Tidied up the code a bit. ] Signed-off-by: Ingo Molnar <[email protected]>
2013-06-28reservation: cross-device reservation support, v4Maarten Lankhorst1-0/+62
This adds support for a generic reservations framework that can be hooked up to ttm and dma-buf and allows easy sharing of reservations across devices. The idea is that a dma-buf and ttm object both will get a pointer to a struct reservation_object, which has to be reserved before anything is done with the contents of the dma-buf. Changes since v1: - Fix locking issue in ticket_reserve, which could cause mutex_unlock to be called too many times. Changes since v2: - All fence related calls and members have been taken out for now, what's left is the bare minimum to be useful for ttm locking conversion. Changes since v3: - Removed helper functions too. The documentation has an example implementation for locking. With the move to ww_mutex there is no need to have much logic any more. Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Jerome Glisse <[email protected]> Signed-off-by: Dave Airlie <[email protected]>