Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2637483imc; Tue, 12 Mar 2019 19:40:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqyOMTudP/S80PlI2EKxAoXr1df+n/5GZ+8+tJ9N9XUMGjd4mH9Tuy/cI+zfmwseXtrXe3Em X-Received: by 2002:a62:ea08:: with SMTP id t8mr41423774pfh.60.1552444814597; Tue, 12 Mar 2019 19:40:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552444814; cv=none; d=google.com; s=arc-20160816; b=FJt8Qwqc0hLDMLWPp0gNTFPd8v4VFLN6eh6H8jBugRHPCFYCzVSVYhfxJFAy+94k+I Vp1ydGlychWOzpoDe+qTFQeyN63ciJr1Yb+K9qXytf4abiPiTIOQPOaG8YDngpre86hj oAi+dgmlHq6HjoeQzA4JDBf4C4GbhuuY9QxtSEWdrK2T37yuWNOkP+5bs5XXjrykwO40 5SGmP8hEZJvCS3rAY2/6BBe5oYVxHJuthcF3OKiasqkh346VTFIWMzD4NM3TgflKSaDB gND2GknQGKhJcpJW6K7Fcn/blLxuRYp0slSuuBMgxKtw3RGVdTUo3LevGru5W/jGnUxC XcTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=mJPERLPxscd2e8dwN2KPz6Pa8XoKDLP50fZqGnE4Lak=; b=RFwaHZDXgwl4YxGTflIlkBTP2n0abIPRgEMLqdUju0Tdfg8nMO2Jr9+ulAs5YQW+ye C0xmb8mmYo7/CD4EjQbQV/8oiONjORiJUYip+ftlCl8SyRb1B9r+3il1fFcyO+aRGaPj dpEkO0/UdU9m1vJXR17uJtHBj0ZSn2hwM5OkqgmZmdawyOOj9PiQ9LX1TGwSdEN+7aC+ pHrAaCee8nM1Kdh4RwOM2K2NSejZGFp7gqh9tBHILziScSviO4RRdOq0QNllO1u70K4M fhyCCXmGd+ulNppE//GPO6+jFSgSSyRnaUzgsBsFZXrrprO+r36qC8Xc2D4k2cuHLjre vKeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=iS48nmZO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k24si9090282pgj.228.2019.03.12.19.39.58; Tue, 12 Mar 2019 19:40:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=iS48nmZO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726734AbfCMCjS (ORCPT + 99 others); Tue, 12 Mar 2019 22:39:18 -0400 Received: from mail-ot1-f68.google.com ([209.85.210.68]:36978 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726451AbfCMCjS (ORCPT ); Tue, 12 Mar 2019 22:39:18 -0400 Received: by mail-ot1-f68.google.com with SMTP id b3so402719otp.4 for ; Tue, 12 Mar 2019 19:39:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mJPERLPxscd2e8dwN2KPz6Pa8XoKDLP50fZqGnE4Lak=; b=iS48nmZOcfUgcSjDRqssMNUsTk7+2hdnG6b3qyR4W4uo94ZrTBTMihDGuEMYHdp6N/ Xa1JciHLX4q1W15wxmtlpchMJScV7fhUnloYkd+45Mnib/AV0SgL7LFx6YN/iDKTfMnf IMn9LUTsLOHNSzrnc4ZUnMiYZXlVhw+gb4wBU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mJPERLPxscd2e8dwN2KPz6Pa8XoKDLP50fZqGnE4Lak=; b=O5AbR1kZ0cbXk4UqfgmzY7NWrAf7zapEvGqskDgC7lPFSCnXKoo8Vz8B/JZJRywJ2p VorqlCjpg/QeuZN9gZMIcyUuLlCn+5IOJJHGYglKA7kQhulXl9ujZ+QWy1M3yL3UpOIw +h74O7y0S4kc9m80KcAkRm9JwpSFFWUgZwy7hTwCfkgzUbSuy80aInG+id/vcFVoI87l CdeH/lhl183d6ONCNAcTGZr+o4HOTPY1sonnJ0ap5nkodZjWsd11omoLceLffHeMtHvD qB2301JIfoEAdTt/FS1SWp2UJa/8bQUwyaRprbF3/BfOIwvzHDjdV1vVg2uQEDZJYv4j dZXw== X-Gm-Message-State: APjAAAVFTewd0CzbZ0edcd9RY8gZTHdnmaLrbVajEpWfEl0HfVHFXw7x zRQyT7oHR3IZ2U44RqVMb8weMlkY49c= X-Received: by 2002:a05:6830:1115:: with SMTP id w21mr24855784otq.177.1552444756439; Tue, 12 Mar 2019 19:39:16 -0700 (PDT) Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com. [209.85.210.45]) by smtp.gmail.com with ESMTPSA id d3sm4151762otb.54.2019.03.12.19.39.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Mar 2019 19:39:15 -0700 (PDT) Received: by mail-ot1-f45.google.com with SMTP id n71so378732ota.10 for ; Tue, 12 Mar 2019 19:39:14 -0700 (PDT) X-Received: by 2002:a9d:760a:: with SMTP id k10mr1931732otl.367.1552444753700; Tue, 12 Mar 2019 19:39:13 -0700 (PDT) MIME-Version: 1.0 References: <20181017075242.21790-1-henryhsu@chromium.org> <1610184.U7oo9Z4Yep@avalon> <20190313012451.GR891@pendragon.ideasonboard.com> In-Reply-To: <20190313012451.GR891@pendragon.ideasonboard.com> From: Tomasz Figa Date: Wed, 13 Mar 2019 11:38:56 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] media: uvcvideo: Add boottime clock support To: Laurent Pinchart Cc: Alexandru Stan , Lars-Peter Clausen , Gwendal Grignou , Heng-Ruey Hsu , Mauro Carvalho Chehab , Linux Media Mailing List , Linux Kernel Mailing List , Ricky Liang , linux-iio@vger.kernel.org, Jonathan Cameron , Hartmut Knaack , Peter Meerwald-Stadler Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 13, 2019 at 10:25 AM Laurent Pinchart wrote: > > Hi Tomasz, > > On Fri, Nov 23, 2018 at 11:46:43PM +0900, Tomasz Figa wrote: > > On Fri, Nov 2, 2018 at 12:03 AM Lars-Peter Clausen wrote: > > > On 11/01/2018 03:30 PM, Tomasz Figa wrote: > > >> On Thu, Nov 1, 2018 at 11:03 PM Laurent Pinchart wrote: > > >>> On Thursday, 18 October 2018 20:28:06 EET Alexandru M Stan wrote: > > >>>> On Wed, Oct 17, 2018 at 9:31 PM, Tomasz Figa wrote: > > >>>>> On Thu, Oct 18, 2018 at 5:50 AM Laurent Pinchart wrote: > > >>>>>> On Wednesday, 17 October 2018 11:28:52 EEST Tomasz Figa wrote: > > >>>>>>> On Wed, Oct 17, 2018 at 5:02 PM Laurent Pinchart wrote: > > >>>>>>>> On Wednesday, 17 October 2018 10:52:42 EEST Heng-Ruey Hsu wrote: > > >>>>>>>>> Android requires camera timestamps to be reported with > > >>>>>>>>> CLOCK_BOOTTIME to sync timestamp with other sensor sources. > > >>>>>>>> > > >>>>>>>> What's the rationale behind this, why can't CLOCK_MONOTONIC work ? If > > >>>>>>>> the monotonic clock has shortcomings that make its use impossible for > > >>>>>>>> proper synchronization, then we should consider switching to > > >>>>>>>> CLOCK_BOOTTIME globally in V4L2, not in selected drivers only. > > >>>>>>> > > >>>>>>> CLOCK_BOOTTIME includes the time spent in suspend, while > > >>>>>>> CLOCK_MONOTONIC doesn't. I can imagine the former being much more > > >>>>>>> useful for anything that cares about the actual, long term, time > > >>>>>>> tracking. Especially important since suspend is a very common event on > > >>>>>>> Android and doesn't stop the time flow there, i.e. applications might > > >>>>>>> wake up the device to perform various tasks at necessary times. > > >>>>>> > > >>>>>> Sure, but this patch mentions timestamp synchronization with other > > >>>>>> sensors, and from that point of view, I'd like to know what is wrong with > > >>>>>> the monotonic clock if all devices use it. > > >>>>> > > >>>>> AFAIK the sensors mentioned there are not camera sensors, but rather > > >>>>> things we normally put under IIO, e.g. accelerometers, gyroscopes and > > >>>>> so on. I'm not sure how IIO deals with timestamps, but Android seems > > >>>>> to operate in the CLOCK_BOTTIME domain. Let me add some IIO folks. > > >>>>> > > >>>>> Gwendal, Alexandru, do you think you could shed some light on how we > > >>>>> handle IIO sensors timestamps across the kernel, Chrome OS and > > >>>>> Android? > > >>>> > > >>>> On our devices of interest have a specialized "sensor" that comes via > > >>>> IIO (from the EC, cros-ec-ring driver) that can be used to more > > >>>> accurately timestamp each frame (since it's recorded with very low > > >>>> jitter by a realtime-ish OS). In some high level userspace thing > > >>>> (specifically the Android Camera HAL) we try to pick the best > > >>>> timestamp from the IIO, whatever's closest to what the V4L stuff gives > > >>>> us. > > >>>> > > >>>> I guess the Android convention is for sensor timestamps to be in > > >>>> CLOCK_BOOTTIME (maybe because it likes sleeping so much). There's > > >>>> probably no advantage to using one over the other, but the important > > >>>> thing is that they have to be the same, otherwise the closest match > > >>>> logic would fail. > > >>> > > >>> That's my understanding too, I don't think CLOCK_BOOTTIME really brings much > > >>> benefit in this case, > > >> > > >> I think it does have a significant benefit. CLOCK_MONOTONIC stops when > > >> the device is sleeping, but the sensors can still capture various > > >> actions. We would lose the time keeping of those actions if we use > > >> CLOCK_MONOTONIC. > > >> > > >>> but it's important than all timestamps use the same > > >>> clock. The question is thus which clock we should select. Mainline mostly uses > > >>> CLOCK_MONOTONIC, and Android CLOCK_BOOTTIME. Would you like to submit patches > > >>> to switch Android to CLOCK_MONOTONIC ? :-) > > >> > > >> Is it Android using CLOCK_BOOTTIME or the sensors (IIO?). I have > > >> almost zero familiarity with the IIO subsystem and was hoping someone > > >> from there could comment on what time domain is used for those > > >> sensors. > > > > > > IIO has the option to choose between BOOTTIME or MONOTONIC (and a few > > > others) for the timestamp on a per device basis. > > > > > > There was a bit of a discussion about this a while back. See > > > https://lkml.org/lkml/2018/7/10/432 and the following thread. > > > > Given that IIO supports BOOTTIME in upstream already and also the > > important advantage of using it over MONOTONIC for systems which keep > > capturing events during sleep, do you think we could move on with some > > way to support it in uvcvideo or preferably V4L2 in general? > > I'm not opposed to that, but I don't think we should approach that from > a UVC point of view. The issue should be addressed in V4L2, and then > driver-specific support could be added, if needed. Yes, fully agreed. The purpose of sending this patch was just to start the discussion on how to support this. Do you think something like a buffer flag called V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME that could be set by the userspace at QBUF could work here? (That would change the timestamp flags semantics, because it used to be just the information from the driver, but shouldn't have any compatibility implications.) I suppose we would also need some capability flag for querying purposes, possibly added to the capability flags returned by REQBUFS/CREATE_BUFS? Best regards, Tomasz