From: Thomas Zimmermann <tzimmermann@suse.de>
To: sam@ravnborg.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 85/86] drm: move drm_timeout_abs_to_jiffies to drm_util
Date: Mon, 23 Jan 2023 09:57:13 +0100 [thread overview]
Message-ID: <43f60723-e1f9-8991-d930-16fec3896219@suse.de> (raw)
In-Reply-To: <20230113-drm-include-v1-v1-85-c5cf72d8a5a2@ravnborg.org>
[-- Attachment #1.1: Type: text/plain, Size: 7778 bytes --]
Hi Sam,
please see my comment below.
Am 21.01.23 um 21:09 schrieb Sam Ravnborg via B4 Submission Endpoint:
> From: Sam Ravnborg <sam@ravnborg.org>
>
> drm_timeout_abs_to_jiffies() was implmented in drm_syncobj where
> it really did not belong. Create a drm_util file and move the
> implementation. Likewise move the prototype and update all users.
>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> [https://lore.kernel.org/dri-devel/20190527185311.GS21222@phenom.ffwll.local/]
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> ---
> drivers/accel/ivpu/ivpu_gem.c | 2 +-
> drivers/gpu/drm/Makefile | 1 +
> drivers/gpu/drm/drm_syncobj.c | 34 ----------------------------
> drivers/gpu/drm/drm_util.c | 40 +++++++++++++++++++++++++++++++++
> drivers/gpu/drm/lima/lima_gem.c | 2 +-
> drivers/gpu/drm/panfrost/panfrost_drv.c | 2 +-
> drivers/gpu/drm/tegra/uapi.c | 2 +-
> include/drm/drm_util.h | 1 +
> include/drm/drm_utils.h | 2 --
> 9 files changed, 46 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c
> index d1f923971b4c..55aa94ba6c10 100644
> --- a/drivers/accel/ivpu/ivpu_gem.c
> +++ b/drivers/accel/ivpu/ivpu_gem.c
> @@ -12,7 +12,7 @@
> #include <drm/drm_cache.h>
> #include <drm/drm_debugfs.h>
> #include <drm/drm_file.h>
> -#include <drm/drm_utils.h>
> +#include <drm/drm_util.h>
>
> #include "ivpu_drv.h"
> #include "ivpu_gem.h"
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index ab4460fcd63f..561b93d19685 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -42,6 +42,7 @@ drm-y := \
> drm_syncobj.o \
> drm_sysfs.o \
> drm_trace_points.o \
> + drm_util.o \
> drm_vblank.o \
> drm_vblank_work.o \
> drm_vma_manager.o \
> diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
> index 0c2be8360525..35f5416c5cfe 100644
> --- a/drivers/gpu/drm/drm_syncobj.c
> +++ b/drivers/gpu/drm/drm_syncobj.c
> @@ -197,7 +197,6 @@
> #include <drm/drm_gem.h>
> #include <drm/drm_print.h>
> #include <drm/drm_syncobj.h>
> -#include <drm/drm_utils.h>
>
> #include "drm_internal.h"
>
> @@ -1114,39 +1113,6 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs,
> return timeout;
> }
>
> -/**
> - * drm_timeout_abs_to_jiffies - calculate jiffies timeout from absolute value
> - *
> - * @timeout_nsec: timeout nsec component in ns, 0 for poll
> - *
> - * Calculate the timeout in jiffies from an absolute time in sec/nsec.
> - */
> -signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec)
This function converts an absolute timeout in nsec to a relative timeout
in jiffies. (?)
It appears to me as if this helper should not exist. It uses a mixture
of different time interfaces; combined with hardcoded policy for 0 and
MAX_SCHEDULE_TIMEOUT.
There are only 3 callers of this helper. I think we should consider
inlining it in each.
As part of this, maybe the use of ktime could go away. Convert nsecs to
jiffies and do the rest of the computation in jiffies.
Best regards
Thomas
> -{
> - ktime_t abs_timeout, now;
> - u64 timeout_ns, timeout_jiffies64;
> -
> - /* make 0 timeout means poll - absolute 0 doesn't seem valid */
> - if (timeout_nsec == 0)
> - return 0;
> -
> - abs_timeout = ns_to_ktime(timeout_nsec);
> - now = ktime_get();
> -
> - if (!ktime_after(abs_timeout, now))
> - return 0;
> -
> - timeout_ns = ktime_to_ns(ktime_sub(abs_timeout, now));
> -
> - timeout_jiffies64 = nsecs_to_jiffies64(timeout_ns);
> - /* clamp timeout to avoid infinite timeout */
> - if (timeout_jiffies64 >= MAX_SCHEDULE_TIMEOUT - 1)
> - return MAX_SCHEDULE_TIMEOUT - 1;
> -
> - return timeout_jiffies64 + 1;
> -}
> -EXPORT_SYMBOL(drm_timeout_abs_to_jiffies);
> -
> static int drm_syncobj_array_wait(struct drm_device *dev,
> struct drm_file *file_private,
> struct drm_syncobj_wait *wait,
> diff --git a/drivers/gpu/drm/drm_util.c b/drivers/gpu/drm/drm_util.c
> new file mode 100644
> index 000000000000..5494fa6b8193
> --- /dev/null
> +++ b/drivers/gpu/drm/drm_util.c
> @@ -0,0 +1,40 @@
> +// SPDX-License-Identifier: MIT
> +
> +#include <linux/export.h>
> +#include <linux/ktime.h>
> +#include <linux/timekeeping.h>
> +
> +#include <drm/drm_util.h>
> +
> +/**
> + * drm_timeout_abs_to_jiffies - calculate jiffies timeout from absolute value
> + *
> + * @timeout_nsec: timeout nsec component in ns, 0 for poll
> + *
> + * Calculate the timeout in jiffies from an absolute time in sec/nsec.
> + */
> +signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec)
> +{
> + ktime_t abs_timeout, now;
> + u64 timeout_ns, timeout_jiffies64;
> +
> + /* make 0 timeout means poll - absolute 0 doesn't seem valid */
> + if (timeout_nsec == 0)
> + return 0;
> +
> + abs_timeout = ns_to_ktime(timeout_nsec);
> + now = ktime_get();
> +
> + if (!ktime_after(abs_timeout, now))
> + return 0;
> +
> + timeout_ns = ktime_to_ns(ktime_sub(abs_timeout, now));
> +
> + timeout_jiffies64 = nsecs_to_jiffies64(timeout_ns);
> + /* clamp timeout to avoid infinite timeout */
> + if (timeout_jiffies64 >= MAX_SCHEDULE_TIMEOUT - 1)
> + return MAX_SCHEDULE_TIMEOUT - 1;
> +
> + return timeout_jiffies64 + 1;
> +}
> +EXPORT_SYMBOL(drm_timeout_abs_to_jiffies);
> diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c
> index 0f1ca0b0db49..5cdd06682afe 100644
> --- a/drivers/gpu/drm/lima/lima_gem.c
> +++ b/drivers/gpu/drm/lima/lima_gem.c
> @@ -10,7 +10,7 @@
>
> #include <drm/drm_file.h>
> #include <drm/drm_syncobj.h>
> -#include <drm/drm_utils.h>
> +#include <drm/drm_util.h>
>
> #include <drm/lima_drm.h>
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index fa619fe72086..581df5b724e2 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -11,7 +11,7 @@
> #include <drm/drm_drv.h>
> #include <drm/drm_ioctl.h>
> #include <drm/drm_syncobj.h>
> -#include <drm/drm_utils.h>
> +#include <drm/drm_util.h>
>
> #include "panfrost_device.h"
> #include "panfrost_gem.h"
> diff --git a/drivers/gpu/drm/tegra/uapi.c b/drivers/gpu/drm/tegra/uapi.c
> index 5adab6b22916..6d5601517a34 100644
> --- a/drivers/gpu/drm/tegra/uapi.c
> +++ b/drivers/gpu/drm/tegra/uapi.c
> @@ -7,7 +7,7 @@
>
> #include <drm/drm_drv.h>
> #include <drm/drm_file.h>
> -#include <drm/drm_utils.h>
> +#include <drm/drm_util.h>
>
> #include "drm.h"
> #include "uapi.h"
> diff --git a/include/drm/drm_util.h b/include/drm/drm_util.h
> index 79952d8c4bba..3d719190cfd9 100644
> --- a/include/drm/drm_util.h
> +++ b/include/drm/drm_util.h
> @@ -80,4 +80,5 @@ static inline bool drm_can_sleep(void)
> return true;
> }
>
> +signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec);
> #endif
> diff --git a/include/drm/drm_utils.h b/include/drm/drm_utils.h
> index 70775748d243..bae225f0a24b 100644
> --- a/include/drm/drm_utils.h
> +++ b/include/drm/drm_utils.h
> @@ -14,6 +14,4 @@
>
> int drm_get_panel_orientation_quirk(int width, int height);
>
> -signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec);
> -
> #endif
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
next prev parent reply other threads:[~2023-01-23 8:57 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-21 20:07 [PATCH 00/86] drm: Header file maintenance Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 01/86] drm/komeda: Direct include headers from drm_print Sam Ravnborg via B4 Submission Endpoint
2023-01-23 7:57 ` Thomas Zimmermann
2023-01-21 20:07 ` [PATCH 02/86] drm/bridge: ite-it6505: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 03/86] drm/bridge: panel: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 04/86] drm/msm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 05/86] drm/nouveau: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 06/86] drm/omapdrm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 07/86] drm/radeon: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 08/86] drm/ttm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 09/86] drm/scheduler: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 10/86] drm/armada: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 11/86] drm/sti: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 12/86] drm/vc4: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 13/86] drm/drm_print: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 14/86] drm/vmwgfx: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 15/86] drm/i915: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 16/86] drm/drm_print: Minimize include footprint Sam Ravnborg via B4 Submission Endpoint
2023-01-21 23:19 ` kernel test robot
2023-01-22 20:58 ` Sam Ravnborg
2023-01-24 15:51 ` kernel test robot
2023-01-21 20:07 ` [PATCH 17/86] drm/xlnx: Direct include headers from drm_atomic_helper Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 18/86] drm/amd: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 19/86] drm/komeda: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 20/86] drm/arm/hdlcd: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:07 ` [PATCH 21/86] drm/arm/malidp: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 22/86] drm/armada: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 23/86] drm/aspeed: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 24/86] drm/ast: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 25/86] drm/atmel-hlcdc: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 26/86] drm/bridge: adv7511: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 27/86] drm/bridge: analogix: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 28/86] drm/bridge: chipone: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 29/86] drm/bridge: chrontel: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 30/86] drm/bridge: display-connector: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 31/86] drm/bridge: fsl-ldb: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 32/86] drm/bridge: ite: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 33/86] drm/bridge: lontium: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 34/86] drm/bridge: lvds-codec: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 35/86] drm/bridge: megachips: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 36/86] drm/bridge: nxp: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 37/86] drm/bridge: panel: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 38/86] drm/bridge: sii902x: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 39/86] drm/bridge: simple-bridge: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 40/86] drm/bridge: synopsys: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 41/86] drm/bridge: tc358767: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 42/86] drm/bridge: ti: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 43/86] drm/display: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 44/86] drm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 45/86] drm/exynos: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 46/86] drm/fsl-dcu: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 47/86] drm/gud: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 48/86] drm/hisilicon: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 49/86] drm/hyperv: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 50/86] drm/i2c: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 51/86] drm/i915: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 52/86] drm/imx: " Sam Ravnborg via B4 Submission Endpoint
2023-01-23 9:26 ` Philipp Zabel
2023-01-21 20:08 ` [PATCH 53/86] drm/ingenic: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 54/86] drm/kmb: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 55/86] drm/logicvc: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 56/86] drm/mcde: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 57/86] drm/mediatek: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 58/86] drm/meson: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 59/86] drm/mgag200: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 60/86] drm/msm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 61/86] drm/mxsfb: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 62/86] drm/nouveau: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 63/86] drm/omapdrm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 64/86] drm/qxl: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 65/86] drm/rcar-du: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 66/86] drm/rockchip: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 67/86] drm/solomon: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 68/86] drm/sprd: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 69/86] drm/sti: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 70/86] drm/stm: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 71/86] drm/sun4i: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 72/86] drm/tegra: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 73/86] drm/tests: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 74/86] drm/tidss: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 75/86] drm/tilcdc: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 76/86] drm/tiny: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 77/86] drm/udl: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 78/86] drm/vboxvideo: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 79/86] drm/vc4: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 80/86] drm/virtio: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:08 ` [PATCH 81/86] drm/vkms: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:09 ` [PATCH 82/86] drm/vmwgfx: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:09 ` [PATCH 83/86] drm/xen: " Sam Ravnborg via B4 Submission Endpoint
2023-01-21 20:09 ` [PATCH 84/86] drm/drm_atomic_helper: Minimize include footprint Sam Ravnborg via B4 Submission Endpoint
2023-01-23 7:59 ` Thomas Zimmermann
2023-01-21 20:09 ` [PATCH 85/86] drm: move drm_timeout_abs_to_jiffies to drm_util Sam Ravnborg via B4 Submission Endpoint
2023-01-23 8:57 ` Thomas Zimmermann [this message]
2023-01-23 20:46 ` Sam Ravnborg
2023-01-24 11:25 ` Thomas Zimmermann
2023-01-21 20:09 ` [PATCH 86/86] drm: Move drm_get_panel_orientation_quirk prototype to drm_panel Sam Ravnborg via B4 Submission Endpoint
2023-01-23 9:00 ` [PATCH 00/86] drm: Header file maintenance Thomas Zimmermann
2023-01-23 20:22 ` Sam Ravnborg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43f60723-e1f9-8991-d930-16fec3896219@suse.de \
--to=tzimmermann@suse.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox