Message ID | 20220607094207.536699-1-jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [CI,1/3] drm/i915/tasklet: separate local hacks around struct tasklet_struct | expand |
On Tue, 07 Jun 2022, Jani Nikula <jani.nikula@intel.com> 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@intel.com> > Acked-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> 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@lst.de/ > > -- 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__ */
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@lst.de/ -- 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__ */