[PATCH 5/6] reservation: add support for fences to enable cross-device synchronisation
Rob Clark
robdclark at gmail.com
Mon Feb 17 08:54:37 PST 2014
On Mon, Feb 17, 2014 at 10:58 AM, Maarten Lankhorst
<maarten.lankhorst at canonical.com> wrote:
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Reviewed-by: Rob Clark <robdclark at gmail.com>
> ---
> include/linux/reservation.h | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/reservation.h b/include/linux/reservation.h
> index 813dae960ebd..92c4851b5a39 100644
> --- a/include/linux/reservation.h
> +++ b/include/linux/reservation.h
> @@ -6,7 +6,7 @@
> * Copyright (C) 2012 Texas Instruments
> *
> * Authors:
> - * Rob Clark <rob.clark at linaro.org>
> + * Rob Clark <robdclark at gmail.com>
> * Maarten Lankhorst <maarten.lankhorst at canonical.com>
> * Thomas Hellstrom <thellstrom-at-vmware-dot-com>
> *
> @@ -40,22 +40,38 @@
> #define _LINUX_RESERVATION_H
>
> #include <linux/ww_mutex.h>
> +#include <linux/fence.h>
>
> extern struct ww_class reservation_ww_class;
>
> struct reservation_object {
> struct ww_mutex lock;
> +
> + struct fence *fence_excl;
> + struct fence **fence_shared;
> + u32 fence_shared_count, fence_shared_max;
> };
>
> static inline void
> reservation_object_init(struct reservation_object *obj)
> {
> ww_mutex_init(&obj->lock, &reservation_ww_class);
> +
> + obj->fence_shared_count = obj->fence_shared_max = 0;
> + obj->fence_shared = NULL;
> + obj->fence_excl = NULL;
> }
>
> static inline void
> reservation_object_fini(struct reservation_object *obj)
> {
> + int i;
> +
> + if (obj->fence_excl)
> + fence_put(obj->fence_excl);
> + for (i = 0; i < obj->fence_shared_count; ++i)
> + fence_put(obj->fence_shared[i]);
> +
> ww_mutex_destroy(&obj->lock);
> }
>
>
More information about the dri-devel
mailing list