09 Jul, 2014

3 commits

  • 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
    Acked-by: Sumit Semwal
    Acked-by: Daniel Vetter
    Reviewed-By: Thomas Hellstrom
    Signed-off-by: Greg Kroah-Hartman

    Maarten Lankhorst
     
  • 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
    Acked-by: Sumit Semwal
    Acked-by: Daniel Vetter
    Signed-off-by: Greg Kroah-Hartman

    Maarten Lankhorst
     
  • Signed-off-by: Maarten Lankhorst
    Acked-by: Sumit Semwal
    Acked-by: Daniel Vetter
    Reviewed-by: Rob Clark
    Signed-off-by: Greg Kroah-Hartman

    Maarten Lankhorst
     

12 Jul, 2013

1 commit

  • 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
    Signed-off-by: Maarten Lankhorst
    Acked-by: Peter Zijlstra
    Acked-by: Rik van Riel
    Acked-by: Maarten Lankhorst
    Cc: Dave Airlie
    Link: http://lkml.kernel.org/r/51D675DC.3000907@canonical.com
    [ Tidied up the code a bit. ]
    Signed-off-by: Ingo Molnar

    Maarten Lankhorst
     

28 Jun, 2013

1 commit

  • 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
    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Maarten Lankhorst