.. > diff --git a/drivers/gpu/host1x/fence.c b/drivers/gpu/host1x/fence.c > new file mode 100644 > index 000000000000..2b0bb97f053f > --- /dev/null > +++ b/drivers/gpu/host1x/fence.c > @@ -0,0 +1,184 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Syncpoint dma_fence implementation > + * > + * Copyright (c) 2020, NVIDIA Corporation. > + */ > + > +#include <linux/dma-fence.h> > +#include <linux/file.h> > +#include <linux/fs.h> > +#include <linux/slab.h> > +#include <linux/sync_file.h> Stale headers > +#include "fence.h" > +#include "intr.h" > +#include "syncpt.h" > + > +DEFINE_SPINLOCK(lock); static ... > +static bool host1x_syncpt_fence_enable_signaling(struct dma_fence *f) > +{ > + struct host1x_syncpt_fence *sf = to_host1x_fence(f); > + int err; > + > + if (host1x_syncpt_is_expired(sf->sp, sf->threshold)) > + return false; > + > + dma_fence_get(f); > + > + /* > + * The dma_fence framework requires the fence driver to keep a > + * reference to any fences for which 'enable_signaling' has been > + * called (and that have not been signalled). > + * > + * We provide a userspace API to create arbitrary syncpoint fences, > + * so we cannot normally guarantee that all fences get signalled. > + * As such, setup a timeout, so that long-lasting fences will get > + * reaped eventually. > + */ > + schedule_delayed_work(&sf->timeout_work, msecs_to_jiffies(30000)); I don't see this API. Please always remove all dead code, make patches minimal and functional. ...> +int host1x_fence_extract(struct dma_fence *fence, u32 *id, u32 *threshold) > +{ > + struct host1x_syncpt_fence *f; > + > + if (fence->ops != &host1x_syncpt_fence_ops) > + return -EINVAL; > + > + f = container_of(fence, struct host1x_syncpt_fence, base); > + > + *id = f->sp->id; > + *threshold = f->threshold; > + > + return 0; > +} > +EXPORT_SYMBOL(host1x_fence_extract); dead code