From: Hans de Goede <hansg@kernel.org>
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil@xs4all.nl>,
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 13:43:04 +0200 [thread overview]
Message-ID: <3022f455-f6f4-470b-9989-e37b2f8a0b51@kernel.org> (raw)
In-Reply-To: <CANiDSCtSKCn+mx8pGwuYCre9Wb7gONJYjLqc6tYLWQL3YXBmrw@mail.gmail.com>
Hi,
On 2-Jun-25 13:40, Ricardo Ribalda wrote:
> Hi Hans
>
> On Mon, 2 Jun 2025 at 13:24, Hans de Goede <hansg@kernel.org> wrote:
>>
>> On 2-Jun-25 13:11, Ricardo Ribalda wrote:
>>> On Mon, 2 Jun 2025 at 13:07, Hans de Goede <hansg@kernel.org> wrote:
>>>>
>>>> Hi Ricardo,
>>>>
>>>> On 2-Jun-25 12:27, Ricardo Ribalda wrote:
>>>>> Hi Hans
>>>>>
>>>>> On Mon, 2 Jun 2025 at 12:11, Hans de Goede <hansg@kernel.org> wrote:
>>>>>>
>>>>>> 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.
>>>>>
>>>>> Hmm... Actually I am pretty sure that I tested it on real hardware.
>>>>>
>>>>> Did you miss the EXPORT_SYMBOL() on the patch?
>>>>
>>>> Ah yes I did miss that, sorry.
>>>
>>> My bad, I doubt it till the last second if I should split it or not :)
>>>
>>>>
>>>> For the next time please split core changes out into their own
>>>> separate patches.
>>>>
>>>> In this case I think the core changes are not necessary instead
>>>> you can just do:
>>>>
>>>> unsigned int converted_cmd = cmd;
>>>>
>>>> #ifdef CONFIG_COMPAT
>>>> converted_cmd = v4l2_compat_translate_cmd(cmd);
>>>> #endif
>>>
>>> I believe this should work as well:
>>>
>>> unsigned int converted_cmd = cmd;
>>> if (in_compat_syscall())
>>> converted_cmd = v4l2_compat_translate_cmd(cmd);
>>>
>>> the compiler knows that CONFIG_COMPAT=n means in_compat_syscall() will
>>> be always fails.
>>>
>>> If it is ok with you (and it actually works :) ) I will use this version.
>>
>> I agree that that is cleaner/better and I also think it should work,
>> so lets go with that.
>
> Actually, v4l2_compat_translate_cmd() does not seem to be EXPORT_SYMBOL()ed
>
> So I still need to do some changes in the core.
> (It also does not handle COMPAT_32BIT_TIME... but in this case it
> seems to be the same).
>
>
> Any preference between what to use: v4l2_compat_translate_cmd() vs
> video_translate_cmd()?
v4l2_compat_translate_cmd() is already exposed in include/media/v4l2-ioctl.h
so I think it is best to go with that function.
Regards,
Hans
prev parent reply other threads:[~2025-06-02 11:43 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
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 [this message]
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=3022f455-f6f4-470b-9989-e37b2f8a0b51@kernel.org \
--to=hansg@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).