All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hansg@kernel.org>
To: Ricardo Ribalda <ribalda@chromium.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 9/9] media: uvcvideo: Support granular power saving for compat syscalls
Date: Mon, 2 Jun 2025 12:10:59 +0200	[thread overview]
Message-ID: <34d9f779-987f-4e2c-b046-5dc15641547c@kernel.org> (raw)
In-Reply-To: <20250528-uvc-grannular-invert-v1-9-d01581f9cc25@chromium.org>

Hi Ricardo,

On 28-May-25 19:58, Ricardo Ribalda wrote:
> Right now we cannot support granular power saving on compat syscalls
> because the VIDIOC_*32 NRs defines are not accessible to drivers.
> 
> Use the video_translate_cmd() helper to convert the compat syscall NRs
> into syscall NRs.
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  drivers/media/usb/uvc/uvc_v4l2.c     | 9 ++-------
>  drivers/media/v4l2-core/v4l2-ioctl.c | 3 ++-
>  include/media/v4l2-ioctl.h           | 1 +
>  3 files changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> index fcb1b79c214849ce4da96a86a688d777b32cc688..048ee7e01808c8944f9bd46e5df2931b9c146ad5 100644
> --- a/drivers/media/usb/uvc/uvc_v4l2.c
> +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> @@ -1282,15 +1282,10 @@ static long uvc_v4l2_pm_ioctl(struct file *file,
>  static long uvc_v4l2_unlocked_ioctl(struct file *file,
>  				    unsigned int cmd, unsigned long arg)
>  {
> -	/*
> -	 * For now, we do not support granular power saving for compat
> -	 * syscalls.
> -	 */
> -	if (in_compat_syscall())
> -		return uvc_v4l2_pm_ioctl(file, cmd, arg);
> +	unsigned int converted_cmd = video_translate_cmd(cmd);

It looks like something went wrong here and you did not test-compile this?
video_translate_cmd() is private to drivers/media/v4l2-core/v4l2-ioctl.c
so this should not compile.

You can use v4l2_compat_translate_cmd() but only when CONFIG_COMPAT is set
otherwise that symbol is not available.

Regards,

Hans



>  
>  	/* The following IOCTLs do need to turn on the camera. */
> -	switch (cmd) {
> +	switch (converted_cmd) {
>  	case UVCIOC_CTRL_QUERY:
>  	case VIDIOC_G_CTRL:
>  	case VIDIOC_G_EXT_CTRLS:
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> index 650dc1956f73d2f1943b56c42140c7b8d757259f..6fbd28f911cf23eec43ef1adcf64bd46ef067c81 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -3245,7 +3245,7 @@ static int check_array_args(unsigned int cmd, void *parg, size_t *array_size,
>  	return ret;
>  }
>  
> -static unsigned int video_translate_cmd(unsigned int cmd)
> +unsigned int video_translate_cmd(unsigned int cmd)
>  {
>  #if !defined(CONFIG_64BIT) && defined(CONFIG_COMPAT_32BIT_TIME)
>  	switch (cmd) {
> @@ -3266,6 +3266,7 @@ static unsigned int video_translate_cmd(unsigned int cmd)
>  
>  	return cmd;
>  }
> +EXPORT_SYMBOL(video_translate_cmd);
>  
>  static int video_get_user(void __user *arg, void *parg,
>  			  unsigned int real_cmd, unsigned int cmd,
> diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
> index c6ec87e88dfef9e6cfe1d1fb587c1600882fb14d..437b9f90714c62e0ba434ce47391ef64d88110aa 100644
> --- a/include/media/v4l2-ioctl.h
> +++ b/include/media/v4l2-ioctl.h
> @@ -687,6 +687,7 @@ int v4l2_compat_get_array_args(struct file *file, void *mbuf,
>  int v4l2_compat_put_array_args(struct file *file, void __user *user_ptr,
>  			       void *mbuf, size_t array_size,
>  			       unsigned int cmd, void *arg);
> +unsigned int video_translate_cmd(unsigned int cmd);
>  
>  /**
>   * typedef v4l2_kioctl - Typedef used to pass an ioctl handler.
> 


  reply	other threads:[~2025-06-02 10:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-28 17:57 [PATCH 0/9] media: uvcvideo: Invert granular PM logic + PM fix Ricardo Ribalda
2025-05-28 17:57 ` [PATCH 1/9] media: uvcvideo: Refactor uvc_queue_streamon Ricardo Ribalda
2025-05-28 17:57 ` [PATCH 2/9] media: uvcvideo: Refactor uvc_v4l2_compat_ioctl32 Ricardo Ribalda
2025-05-28 17:57 ` [PATCH 3/9] media: uvcvideo: Use vb2 ioctl and fop helpers Ricardo Ribalda
2025-05-28 17:57 ` [PATCH 4/9] media: uvcvideo: Remove stream->is_streaming field Ricardo Ribalda
2025-05-28 17:58 ` [PATCH 5/9] media: uvcvideo: Turn on the camera if V4L2_EVENT_SUB_FL_SEND_INITIAL Ricardo Ribalda
2025-06-02  8:58   ` Hans de Goede
2025-05-28 17:58 ` [PATCH 6/9] media: uvcvideo: Do not enable camera during UVCIOC_CTRL_MAP32 Ricardo Ribalda
2025-06-02  9:46   ` Hans de Goede
2025-05-28 17:58 ` [PATCH 7/9] media: uvcvideo: uvc_v4l2_unlocked_ioctl: Invert PM logic Ricardo Ribalda
2025-06-02  9:58   ` Hans de Goede
2025-05-28 17:58 ` [PATCH 8/9] media: uvcvideo: Do not turn on the camera unless is needed Ricardo Ribalda
2025-05-28 17:58 ` [PATCH 9/9] media: uvcvideo: Support granular power saving for compat syscalls Ricardo Ribalda
2025-06-02 10:10   ` Hans de Goede [this message]
2025-06-02 10:27     ` Ricardo Ribalda
2025-06-02 11:07       ` Hans de Goede
2025-06-02 11:11         ` Ricardo Ribalda
2025-06-02 11:24           ` Hans de Goede
2025-06-02 11:40             ` Ricardo Ribalda
2025-06-02 11:43               ` Hans de Goede

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=34d9f779-987f-4e2c-b046-5dc15641547c@kernel.org \
    --to=hansg@kernel.org \
    --cc=hdegoede@redhat.com \
    --cc=hverkuil@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=ribalda@chromium.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.