On Tue, 07 Jun 2022, Jani Nikula <jani.nikula@xxxxxxxxx> wrote: > Add a dedicated file for the local functions around struct > tasklet_struct. Far from ideal, but better placed in a dedicated file > than i915_gem.h. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > Acked-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> Series pushed to drm-intel-next. BR, Jani. > --- > drivers/gpu/drm/i915/TODO.txt | 2 +- > drivers/gpu/drm/i915/i915_gem.h | 33 -------------------- > drivers/gpu/drm/i915/i915_scheduler.h | 1 + > drivers/gpu/drm/i915/i915_tasklet.h | 43 +++++++++++++++++++++++++++ > 4 files changed, 45 insertions(+), 34 deletions(-) > create mode 100644 drivers/gpu/drm/i915/i915_tasklet.h > > diff --git a/drivers/gpu/drm/i915/TODO.txt b/drivers/gpu/drm/i915/TODO.txt > index 81a82c9c203f..879b08ca32b3 100644 > --- a/drivers/gpu/drm/i915/TODO.txt > +++ b/drivers/gpu/drm/i915/TODO.txt > @@ -37,5 +37,5 @@ Smaller things: > > https://lore.kernel.org/linux-mm/20210301083320.943079-1-hch@xxxxxx/ > > -- tasklet helpers in i915_gem.h also look a bit misplaced and should > +- tasklet helpers in i915_tasklet.h also look a bit misplaced and should > probably be moved to tasklet headers. > diff --git a/drivers/gpu/drm/i915/i915_gem.h b/drivers/gpu/drm/i915/i915_gem.h > index a2be323a4be5..68d8d52bd541 100644 > --- a/drivers/gpu/drm/i915/i915_gem.h > +++ b/drivers/gpu/drm/i915/i915_gem.h > @@ -26,7 +26,6 @@ > #define __I915_GEM_H__ > > #include <linux/bug.h> > -#include <linux/interrupt.h> > > #include <drm/drm_drv.h> > > @@ -85,36 +84,4 @@ struct drm_i915_private; > > #define I915_GEM_IDLE_TIMEOUT (HZ / 5) > > -static inline void tasklet_lock(struct tasklet_struct *t) > -{ > - while (!tasklet_trylock(t)) > - cpu_relax(); > -} > - > -static inline bool tasklet_is_locked(const struct tasklet_struct *t) > -{ > - return test_bit(TASKLET_STATE_RUN, &t->state); > -} > - > -static inline void __tasklet_disable_sync_once(struct tasklet_struct *t) > -{ > - if (!atomic_fetch_inc(&t->count)) > - tasklet_unlock_spin_wait(t); > -} > - > -static inline bool __tasklet_is_enabled(const struct tasklet_struct *t) > -{ > - return !atomic_read(&t->count); > -} > - > -static inline bool __tasklet_enable(struct tasklet_struct *t) > -{ > - return atomic_dec_and_test(&t->count); > -} > - > -static inline bool __tasklet_is_scheduled(struct tasklet_struct *t) > -{ > - return test_bit(TASKLET_STATE_SCHED, &t->state); > -} > - > #endif /* __I915_GEM_H__ */ > diff --git a/drivers/gpu/drm/i915/i915_scheduler.h b/drivers/gpu/drm/i915/i915_scheduler.h > index 0b9b86af6c7f..c229c91071d7 100644 > --- a/drivers/gpu/drm/i915/i915_scheduler.h > +++ b/drivers/gpu/drm/i915/i915_scheduler.h > @@ -12,6 +12,7 @@ > #include <linux/kernel.h> > > #include "i915_scheduler_types.h" > +#include "i915_tasklet.h" > > struct drm_printer; > > diff --git a/drivers/gpu/drm/i915/i915_tasklet.h b/drivers/gpu/drm/i915/i915_tasklet.h > new file mode 100644 > index 000000000000..5d7069bdf2c0 > --- /dev/null > +++ b/drivers/gpu/drm/i915/i915_tasklet.h > @@ -0,0 +1,43 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2022 Intel Corporation > + */ > + > +#ifndef __I915_TASKLET_H__ > +#define __I915_TASKLET_H__ > + > +#include <linux/interrupt.h> > + > +static inline void tasklet_lock(struct tasklet_struct *t) > +{ > + while (!tasklet_trylock(t)) > + cpu_relax(); > +} > + > +static inline bool tasklet_is_locked(const struct tasklet_struct *t) > +{ > + return test_bit(TASKLET_STATE_RUN, &t->state); > +} > + > +static inline void __tasklet_disable_sync_once(struct tasklet_struct *t) > +{ > + if (!atomic_fetch_inc(&t->count)) > + tasklet_unlock_spin_wait(t); > +} > + > +static inline bool __tasklet_is_enabled(const struct tasklet_struct *t) > +{ > + return !atomic_read(&t->count); > +} > + > +static inline bool __tasklet_enable(struct tasklet_struct *t) > +{ > + return atomic_dec_and_test(&t->count); > +} > + > +static inline bool __tasklet_is_scheduled(struct tasklet_struct *t) > +{ > + return test_bit(TASKLET_STATE_SCHED, &t->state); > +} > + > +#endif /* __I915_TASKLET_H__ */ -- Jani Nikula, Intel Open Source Graphics Center