[PATCH 3/5] drm/vblank: Remove unused drm_crtc_vblank_count_and_time

linux@treblig.org posted 5 patches 1 month ago
There is a newer version of this series
[PATCH 3/5] drm/vblank: Remove unused drm_crtc_vblank_count_and_time
Posted by linux@treblig.org 1 month ago
From: "Dr. David Alan Gilbert" <linux@treblig.org>

drm_crtc_vblank_count_and_time() was explicitly added by
commit cf6483050e9b ("drm/irq: Add drm_crtc_vblank_count_and_time()")
in 2015, but never used.

Remove it, and rework comments that reference it.

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
---
 drivers/gpu/drm/drm_vblank.c | 44 +++++++-----------------------------
 include/drm/drm_vblank.h     | 10 ++++----
 2 files changed, 12 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 94e45ed6869d..67d6367e9f4b 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -908,10 +908,10 @@ drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
  * drm_crtc_accurate_vblank_count() for such use-cases.
  *
  * Note that for a given vblank counter value drm_crtc_handle_vblank()
- * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
- * provide a barrier: Any writes done before calling
- * drm_crtc_handle_vblank() will be visible to callers of the later
- * functions, if the vblank count is the same or a later one.
+ * and drm_crtc_vblank_count() provide a barrier:
+ * Any writes done before calling drm_crtc_handle_vblank() will be
+ * visible to callers of the later functions, if the vblank count is
+ * the same or a later one.
  *
  * See also &drm_vblank_crtc.count.
  *
@@ -936,7 +936,6 @@ EXPORT_SYMBOL(drm_crtc_vblank_count);
  * modesetting activity. Returns corresponding system timestamp of the time
  * of the vblank interval that corresponds to the current vblank counter value.
  *
- * This is the legacy version of drm_crtc_vblank_count_and_time().
  */
 static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
 				     ktime_t *vblanktime)
@@ -959,33 +958,6 @@ static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
 	return vblank_count;
 }
 
-/**
- * drm_crtc_vblank_count_and_time - retrieve "cooked" vblank counter value
- *     and the system timestamp corresponding to that vblank counter value
- * @crtc: which counter to retrieve
- * @vblanktime: Pointer to time to receive the vblank timestamp.
- *
- * Fetches the "cooked" vblank count value that represents the number of
- * vblank events since the system was booted, including lost events due to
- * modesetting activity. Returns corresponding system timestamp of the time
- * of the vblank interval that corresponds to the current vblank counter value.
- *
- * Note that for a given vblank counter value drm_crtc_handle_vblank()
- * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
- * provide a barrier: Any writes done before calling
- * drm_crtc_handle_vblank() will be visible to callers of the later
- * functions, if the vblank count is the same or a later one.
- *
- * See also &drm_vblank_crtc.count.
- */
-u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
-				   ktime_t *vblanktime)
-{
-	return drm_vblank_count_and_time(crtc->dev, drm_crtc_index(crtc),
-					 vblanktime);
-}
-EXPORT_SYMBOL(drm_crtc_vblank_count_and_time);
-
 /**
  * drm_crtc_next_vblank_start - calculate the time of the next vblank
  * @crtc: the crtc for which to calculate next vblank time
@@ -1978,10 +1950,10 @@ EXPORT_SYMBOL(drm_handle_vblank);
  * This is the native KMS version of drm_handle_vblank().
  *
  * Note that for a given vblank counter value drm_crtc_handle_vblank()
- * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
- * provide a barrier: Any writes done before calling
- * drm_crtc_handle_vblank() will be visible to callers of the later
- * functions, if the vblank count is the same or a later one.
+ * and drm_crtc_vblank_count() * provide a barrier:
+ * Any writes done before calling * drm_crtc_handle_vblank() will be
+ * visible to callers of the later functions, if the vblank count is
+ * the same or a later one.
  *
  * See also &drm_vblank_crtc.count.
  *
diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h
index 151ab1e85b1b..572e54425970 100644
--- a/include/drm/drm_vblank.h
+++ b/include/drm/drm_vblank.h
@@ -141,10 +141,10 @@ struct drm_vblank_crtc {
 	 * Current software vblank counter.
 	 *
 	 * Note that for a given vblank counter value drm_crtc_handle_vblank()
-	 * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
-	 * provide a barrier: Any writes done before calling
-	 * drm_crtc_handle_vblank() will be visible to callers of the later
-	 * functions, iff the vblank count is the same or a later one.
+	 * and drm_crtc_vblank_count() provide a barrier:
+	 * Any writes done before calling drm_crtc_handle_vblank() will be
+	 * visible to callers of the later functions, iff the vblank count is
+	 * the same or a later one.
 	 *
 	 * IMPORTANT: This guarantee requires barriers, therefor never access
 	 * this field directly. Use drm_crtc_vblank_count() instead.
@@ -260,8 +260,6 @@ struct drm_vblank_crtc *drm_crtc_vblank_crtc(struct drm_crtc *crtc);
 int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs);
 bool drm_dev_has_vblank(const struct drm_device *dev);
 u64 drm_crtc_vblank_count(struct drm_crtc *crtc);
-u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
-				   ktime_t *vblanktime);
 int drm_crtc_next_vblank_start(struct drm_crtc *crtc, ktime_t *vblanktime);
 void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
 			       struct drm_pending_vblank_event *e);
-- 
2.47.0
Re: [PATCH 3/5] drm/vblank: Remove unused drm_crtc_vblank_count_and_time
Posted by Ville Syrjälä 4 weeks ago
On Wed, Oct 23, 2024 at 12:29:32AM +0100, linux@treblig.org wrote:
> From: "Dr. David Alan Gilbert" <linux@treblig.org>
> 
> drm_crtc_vblank_count_and_time() was explicitly added by
> commit cf6483050e9b ("drm/irq: Add drm_crtc_vblank_count_and_time()")
> in 2015, but never used.

I see a bunch of places that could trivially use it.
That might be the more sensible thing to do so that
we keep moving towards using the crtc for everything.

The EXPORT_SYMBOL() looks completely pointless though.

> 
> Remove it, and rework comments that reference it.
> 
> Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
> ---
>  drivers/gpu/drm/drm_vblank.c | 44 +++++++-----------------------------
>  include/drm/drm_vblank.h     | 10 ++++----
>  2 files changed, 12 insertions(+), 42 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 94e45ed6869d..67d6367e9f4b 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -908,10 +908,10 @@ drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
>   * drm_crtc_accurate_vblank_count() for such use-cases.
>   *
>   * Note that for a given vblank counter value drm_crtc_handle_vblank()
> - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> - * provide a barrier: Any writes done before calling
> - * drm_crtc_handle_vblank() will be visible to callers of the later
> - * functions, if the vblank count is the same or a later one.
> + * and drm_crtc_vblank_count() provide a barrier:
> + * Any writes done before calling drm_crtc_handle_vblank() will be
> + * visible to callers of the later functions, if the vblank count is
> + * the same or a later one.
>   *
>   * See also &drm_vblank_crtc.count.
>   *
> @@ -936,7 +936,6 @@ EXPORT_SYMBOL(drm_crtc_vblank_count);
>   * modesetting activity. Returns corresponding system timestamp of the time
>   * of the vblank interval that corresponds to the current vblank counter value.
>   *
> - * This is the legacy version of drm_crtc_vblank_count_and_time().
>   */
>  static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
>  				     ktime_t *vblanktime)
> @@ -959,33 +958,6 @@ static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
>  	return vblank_count;
>  }
>  
> -/**
> - * drm_crtc_vblank_count_and_time - retrieve "cooked" vblank counter value
> - *     and the system timestamp corresponding to that vblank counter value
> - * @crtc: which counter to retrieve
> - * @vblanktime: Pointer to time to receive the vblank timestamp.
> - *
> - * Fetches the "cooked" vblank count value that represents the number of
> - * vblank events since the system was booted, including lost events due to
> - * modesetting activity. Returns corresponding system timestamp of the time
> - * of the vblank interval that corresponds to the current vblank counter value.
> - *
> - * Note that for a given vblank counter value drm_crtc_handle_vblank()
> - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> - * provide a barrier: Any writes done before calling
> - * drm_crtc_handle_vblank() will be visible to callers of the later
> - * functions, if the vblank count is the same or a later one.
> - *
> - * See also &drm_vblank_crtc.count.
> - */
> -u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> -				   ktime_t *vblanktime)
> -{
> -	return drm_vblank_count_and_time(crtc->dev, drm_crtc_index(crtc),
> -					 vblanktime);
> -}
> -EXPORT_SYMBOL(drm_crtc_vblank_count_and_time);
> -
>  /**
>   * drm_crtc_next_vblank_start - calculate the time of the next vblank
>   * @crtc: the crtc for which to calculate next vblank time
> @@ -1978,10 +1950,10 @@ EXPORT_SYMBOL(drm_handle_vblank);
>   * This is the native KMS version of drm_handle_vblank().
>   *
>   * Note that for a given vblank counter value drm_crtc_handle_vblank()
> - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> - * provide a barrier: Any writes done before calling
> - * drm_crtc_handle_vblank() will be visible to callers of the later
> - * functions, if the vblank count is the same or a later one.
> + * and drm_crtc_vblank_count() * provide a barrier:
> + * Any writes done before calling * drm_crtc_handle_vblank() will be
> + * visible to callers of the later functions, if the vblank count is
> + * the same or a later one.
>   *
>   * See also &drm_vblank_crtc.count.
>   *
> diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h
> index 151ab1e85b1b..572e54425970 100644
> --- a/include/drm/drm_vblank.h
> +++ b/include/drm/drm_vblank.h
> @@ -141,10 +141,10 @@ struct drm_vblank_crtc {
>  	 * Current software vblank counter.
>  	 *
>  	 * Note that for a given vblank counter value drm_crtc_handle_vblank()
> -	 * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> -	 * provide a barrier: Any writes done before calling
> -	 * drm_crtc_handle_vblank() will be visible to callers of the later
> -	 * functions, iff the vblank count is the same or a later one.
> +	 * and drm_crtc_vblank_count() provide a barrier:
> +	 * Any writes done before calling drm_crtc_handle_vblank() will be
> +	 * visible to callers of the later functions, iff the vblank count is
> +	 * the same or a later one.
>  	 *
>  	 * IMPORTANT: This guarantee requires barriers, therefor never access
>  	 * this field directly. Use drm_crtc_vblank_count() instead.
> @@ -260,8 +260,6 @@ struct drm_vblank_crtc *drm_crtc_vblank_crtc(struct drm_crtc *crtc);
>  int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs);
>  bool drm_dev_has_vblank(const struct drm_device *dev);
>  u64 drm_crtc_vblank_count(struct drm_crtc *crtc);
> -u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> -				   ktime_t *vblanktime);
>  int drm_crtc_next_vblank_start(struct drm_crtc *crtc, ktime_t *vblanktime);
>  void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
>  			       struct drm_pending_vblank_event *e);
> -- 
> 2.47.0

-- 
Ville Syrjälä
Intel
Re: [PATCH 3/5] drm/vblank: Remove unused drm_crtc_vblank_count_and_time
Posted by Dr. David Alan Gilbert 4 weeks ago
* Ville Syrjälä (ville.syrjala@linux.intel.com) wrote:
> On Wed, Oct 23, 2024 at 12:29:32AM +0100, linux@treblig.org wrote:
> > From: "Dr. David Alan Gilbert" <linux@treblig.org>
> > 
> > drm_crtc_vblank_count_and_time() was explicitly added by
> > commit cf6483050e9b ("drm/irq: Add drm_crtc_vblank_count_and_time()")
> > in 2015, but never used.
> 
> I see a bunch of places that could trivially use it.
> That might be the more sensible thing to do so that
> we keep moving towards using the crtc for everything.

Do you intend to send those since you understand it?

> The EXPORT_SYMBOL() looks completely pointless though.

Hmm, we probably shouldn't change that until something uses it?

Dave

> > 
> > Remove it, and rework comments that reference it.
> > 
> > Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
> > ---
> >  drivers/gpu/drm/drm_vblank.c | 44 +++++++-----------------------------
> >  include/drm/drm_vblank.h     | 10 ++++----
> >  2 files changed, 12 insertions(+), 42 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index 94e45ed6869d..67d6367e9f4b 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -908,10 +908,10 @@ drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
> >   * drm_crtc_accurate_vblank_count() for such use-cases.
> >   *
> >   * Note that for a given vblank counter value drm_crtc_handle_vblank()
> > - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> > - * provide a barrier: Any writes done before calling
> > - * drm_crtc_handle_vblank() will be visible to callers of the later
> > - * functions, if the vblank count is the same or a later one.
> > + * and drm_crtc_vblank_count() provide a barrier:
> > + * Any writes done before calling drm_crtc_handle_vblank() will be
> > + * visible to callers of the later functions, if the vblank count is
> > + * the same or a later one.
> >   *
> >   * See also &drm_vblank_crtc.count.
> >   *
> > @@ -936,7 +936,6 @@ EXPORT_SYMBOL(drm_crtc_vblank_count);
> >   * modesetting activity. Returns corresponding system timestamp of the time
> >   * of the vblank interval that corresponds to the current vblank counter value.
> >   *
> > - * This is the legacy version of drm_crtc_vblank_count_and_time().
> >   */
> >  static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
> >  				     ktime_t *vblanktime)
> > @@ -959,33 +958,6 @@ static u64 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
> >  	return vblank_count;
> >  }
> >  
> > -/**
> > - * drm_crtc_vblank_count_and_time - retrieve "cooked" vblank counter value
> > - *     and the system timestamp corresponding to that vblank counter value
> > - * @crtc: which counter to retrieve
> > - * @vblanktime: Pointer to time to receive the vblank timestamp.
> > - *
> > - * Fetches the "cooked" vblank count value that represents the number of
> > - * vblank events since the system was booted, including lost events due to
> > - * modesetting activity. Returns corresponding system timestamp of the time
> > - * of the vblank interval that corresponds to the current vblank counter value.
> > - *
> > - * Note that for a given vblank counter value drm_crtc_handle_vblank()
> > - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> > - * provide a barrier: Any writes done before calling
> > - * drm_crtc_handle_vblank() will be visible to callers of the later
> > - * functions, if the vblank count is the same or a later one.
> > - *
> > - * See also &drm_vblank_crtc.count.
> > - */
> > -u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> > -				   ktime_t *vblanktime)
> > -{
> > -	return drm_vblank_count_and_time(crtc->dev, drm_crtc_index(crtc),
> > -					 vblanktime);
> > -}
> > -EXPORT_SYMBOL(drm_crtc_vblank_count_and_time);
> > -
> >  /**
> >   * drm_crtc_next_vblank_start - calculate the time of the next vblank
> >   * @crtc: the crtc for which to calculate next vblank time
> > @@ -1978,10 +1950,10 @@ EXPORT_SYMBOL(drm_handle_vblank);
> >   * This is the native KMS version of drm_handle_vblank().
> >   *
> >   * Note that for a given vblank counter value drm_crtc_handle_vblank()
> > - * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> > - * provide a barrier: Any writes done before calling
> > - * drm_crtc_handle_vblank() will be visible to callers of the later
> > - * functions, if the vblank count is the same or a later one.
> > + * and drm_crtc_vblank_count() * provide a barrier:
> > + * Any writes done before calling * drm_crtc_handle_vblank() will be
> > + * visible to callers of the later functions, if the vblank count is
> > + * the same or a later one.
> >   *
> >   * See also &drm_vblank_crtc.count.
> >   *
> > diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h
> > index 151ab1e85b1b..572e54425970 100644
> > --- a/include/drm/drm_vblank.h
> > +++ b/include/drm/drm_vblank.h
> > @@ -141,10 +141,10 @@ struct drm_vblank_crtc {
> >  	 * Current software vblank counter.
> >  	 *
> >  	 * Note that for a given vblank counter value drm_crtc_handle_vblank()
> > -	 * and drm_crtc_vblank_count() or drm_crtc_vblank_count_and_time()
> > -	 * provide a barrier: Any writes done before calling
> > -	 * drm_crtc_handle_vblank() will be visible to callers of the later
> > -	 * functions, iff the vblank count is the same or a later one.
> > +	 * and drm_crtc_vblank_count() provide a barrier:
> > +	 * Any writes done before calling drm_crtc_handle_vblank() will be
> > +	 * visible to callers of the later functions, iff the vblank count is
> > +	 * the same or a later one.
> >  	 *
> >  	 * IMPORTANT: This guarantee requires barriers, therefor never access
> >  	 * this field directly. Use drm_crtc_vblank_count() instead.
> > @@ -260,8 +260,6 @@ struct drm_vblank_crtc *drm_crtc_vblank_crtc(struct drm_crtc *crtc);
> >  int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs);
> >  bool drm_dev_has_vblank(const struct drm_device *dev);
> >  u64 drm_crtc_vblank_count(struct drm_crtc *crtc);
> > -u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> > -				   ktime_t *vblanktime);
> >  int drm_crtc_next_vblank_start(struct drm_crtc *crtc, ktime_t *vblanktime);
> >  void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
> >  			       struct drm_pending_vblank_event *e);
> > -- 
> > 2.47.0
> 
> -- 
> Ville Syrjälä
> Intel
> 
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\        dave @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/
Re: [PATCH 3/5] drm/vblank: Remove unused drm_crtc_vblank_count_and_time
Posted by Dmitry Baryshkov 4 weeks ago
On Wed, Oct 23, 2024 at 12:29:32AM +0100, linux@treblig.org wrote:
> From: "Dr. David Alan Gilbert" <linux@treblig.org>
> 
> drm_crtc_vblank_count_and_time() was explicitly added by
> commit cf6483050e9b ("drm/irq: Add drm_crtc_vblank_count_and_time()")
> in 2015, but never used.
> 
> Remove it, and rework comments that reference it.

Not having the deep knowledge of the drm_vblank code, dropping the
function unused since 2015 should be fine.

Acked-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>


> Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
> ---
>  drivers/gpu/drm/drm_vblank.c | 44 +++++++-----------------------------
>  include/drm/drm_vblank.h     | 10 ++++----
>  2 files changed, 12 insertions(+), 42 deletions(-)

-- 
With best wishes
Dmitry