Received: by 10.223.164.202 with SMTP id h10csp423761wrb; Wed, 15 Nov 2017 01:58:39 -0800 (PST) X-Google-Smtp-Source: AGs4zMbJcmO0ZixMSrBZM9F9v4kyZONm9NGiv+vfSMMIU+T50xDvn2HX0u38L2QzNDECP5aj236U X-Received: by 10.98.11.71 with SMTP id t68mr9564957pfi.79.1510739919479; Wed, 15 Nov 2017 01:58:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510739919; cv=none; d=google.com; s=arc-20160816; b=qeWuFcfjFfKSGMhnXNmN3vavQF9HpKJdz3hEPSr1jvQjUTn9xPJmjH7O/gjNqLTFjB vLuca8X7V+cobqkDnr5qpH3rJCxQj11gTzogFMHFVFNMT6VVdeVDIEpweis0TDB2oJwZ 2OsRUcK8U3QzX+2Wud7IzhkurHmTy0zAvkrXqYiPut8ahrL84wMymsScAuOXydPWM1UU iPDdxKOklCcPSXW3YKu1liR09aSkxqwhc3RtdNxp37OexLvjBFZedaDXAYIypnmIw0U6 Z8Jq6vnGI8dctwocmE6ODhZGT4/zh9xHmXrAmJppdFrLovFHY23jZ4CB+2ZEOfjbmM1i LDNg== 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 :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=hAsMriuOPoBKlrRZbAmsWPVhSGHpJyqjPdvNVTVfdpo=; b=spWtNBEHEVGNfScroLxm9N2lQabB5vFgrrzsZpMds9bGjZTr7SSu4AYQkw3iriOmYQ gQa1bMv0W7fp102iabkPYGb0fAZdIpY3YDER7pgRN0fTrABZlRmbBV6wLQNgoRXb8Nia 7AkaxXUnAI0ZdmcUjHBI7PeMXTuq8CGN2hw5Cgpf+JvE9apsdMi0g7uK0WVkOX+pkN9c xo6cFqwYmzR4EB/65gWRj5RkogzZFxQfFEbrMQqVMfKxATNa4+x0MwArtiTKW2T03h+T EV/S9eXAr+Xm8vbihqIfvBU+hqli/mJfEZjCrW1c1vB28scoNYxgJMBgWKxe99Jf9AiC pmrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fI6oEqay; 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=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t84si9286309pfg.252.2017.11.15.01.58.27; Wed, 15 Nov 2017 01:58:39 -0800 (PST) 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=@linaro.org header.s=google header.b=fI6oEqay; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757260AbdKOJ53 (ORCPT + 88 others); Wed, 15 Nov 2017 04:57:29 -0500 Received: from mail-oi0-f66.google.com ([209.85.218.66]:54861 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753385AbdKOJ5S (ORCPT ); Wed, 15 Nov 2017 04:57:18 -0500 Received: by mail-oi0-f66.google.com with SMTP id a132so15645467oih.11 for ; Wed, 15 Nov 2017 01:57:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=hAsMriuOPoBKlrRZbAmsWPVhSGHpJyqjPdvNVTVfdpo=; b=fI6oEqayVPtxXMhCFjV0hNaqecvHRkTWCYKJR9QREG18uqPcXLARsTR01INkWcK8Yi 8Ypw3/oddbsEygJmODnXYwNjklaGxqTJKj5puPCGcox+DECh8BO9oOgRLQQLm6X1fPRi X9g5fZce+uuBATxG56igBR+7RyXjyzAuuC+iM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=hAsMriuOPoBKlrRZbAmsWPVhSGHpJyqjPdvNVTVfdpo=; b=lO9g1U3ChBwulXV4miD884jb3YEZtFZBCiPm0bi0yRGXO5DEA5jEgsCGtZGPfj9jKm JBbtHzf8gYle7b9er2TCbfQsXp0QctmFeOfcUwbfla+lUmsLWU/XFtdx0abeWl2Ycvv0 DE8IwLj6iss2XEn3X03e23BP756wV67elZCYdr17STDgj4ss5DlRgXbrI+y0X87R0KP6 JRvyDkXCUeMK2SXApVKGtgiyUZFS1FXOsCgSFOLBesWX9YPCJujqx4j/VlFnCSBMuy0i 4dWo5Fjy0TtaGTiupJW1BiNfcLNI+RAmmfO/RyzJ6I9EuT2k/UV43ffQgFfDfz9PIpbn gX2w== X-Gm-Message-State: AJaThX4CuoDI1DuOHSvzuwrEbsFqGiILfedlv7DHFdXJ6khmJB26WDsL HXVG4Qhd0fiy7MZW99NiaNcrTHBpfqTJWoISYMutnE/u4J4= X-Received: by 10.202.229.197 with SMTP id c188mr3577442oih.353.1510739837396; Wed, 15 Nov 2017 01:57:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.7.132 with HTTP; Wed, 15 Nov 2017 01:57:16 -0800 (PST) In-Reply-To: <20171115083505.kderwwdigcq7e674@gmail.com> References: <354301cc7c61ba39021bb56e7ede5ba959e9dbb2.1510730564.git.baolin.wang@linaro.org> <20171115083505.kderwwdigcq7e674@gmail.com> From: Baolin Wang Date: Wed, 15 Nov 2017 17:57:16 +0800 Message-ID: Subject: Re: [PATCH] rtc: Add tracepoints for RTC system To: Ingo Molnar Cc: Alessandro Zummo , Alexandre Belloni , Steven Rostedt , Ingo Molnar , linux-rtc@vger.kernel.org, LKML , Arnd Bergmann , Mark Brown 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 Hi Ingo, On 15 November 2017 at 16:35, Ingo Molnar wrote: > > * Baolin Wang wrote: > >> It will be more helpful to add some tracepoints to track RTC actions when >> debugging RTC driver. Below sample is that we set/read the RTC time, then >> set 2 alarms, so we can see the trace logs: >> >> set/read RTC time: >> kworker/1:1-586 [001] .... 21.826112: rtc_set_time: 2017-11-10 08:13:00 UTC (1510301580) >> kworker/1:1-586 [001] .... 21.826174: rtc_read_time: 2017-11-10 08:13:00 UTC (1510301580) >> >> set the first alarm timer: >> kworker/1:1-586 [001] .... 21.841098: rtc_timer_enqueue: RTC timer:(ffffffc15ad913c8) 2017-11-10 08:15:00 UTC (1510301700) >> kworker/1:1-586 [001] .... 22.009424: rtc_set_alarm: 2017-11-10 08:15:00 UTC (1510301700) >> >> set the second alarm timer: >> kworker/1:1-586 [001] .... 22.181304: rtc_timer_enqueue: RTC timer:(ffffff80088e6430) 2017-11-10 08:17:00 UTC (1510301820) >> >> the first alarm timer was expired: >> kworker/0:1-67 [000] .... 145.156226: rtc_timer_dequeue: RTC timer:(ffffffc15ad913c8) 2017-11-10 08:15:00 UTC (1510301700) >> kworker/0:1-67 [000] .... 145.156235: rtc_timer_fired: RTC timer:(ffffffc15ad913c8) 2017-11-10 08:15:00 UTC (1510301700) >> kworker/0:1-67 [000] .... 145.173137: rtc_set_alarm: 2017-11-10 08:17:00 UTC (1510301820) >> >> the second alarm timer was expired: >> kworker/0:1-67 [000] .... 269.102985: rtc_timer_dequeue: RTC timer:(ffffff80088e6430) 2017-11-10 08:17:00 UTC (1510301820) >> kworker/0:1-67 [000] .... 269.102992: rtc_timer_fired: RTC timer:(ffffff80088e6430) 2017-11-10 08:17:00 UTC (1510301820) >> >> disable alarm irq: >> kworker/0:1-67 [000] .... 269.103098: rtc_alarm_irq_enable: disable RTC alarm IRQ >> >> Signed-off-by: Baolin Wang >> --- >> drivers/rtc/interface.c | 46 ++++++++++ >> include/trace/events/rtc.h | 215 ++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 261 insertions(+) >> create mode 100644 include/trace/events/rtc.h >> >> diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c >> index 8cec9a0..cdd3ac8 100644 >> --- a/drivers/rtc/interface.c >> +++ b/drivers/rtc/interface.c >> @@ -17,6 +17,9 @@ >> #include >> #include >> >> +#define CREATE_TRACE_POINTS >> +#include >> + >> static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer); >> static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer); >> >> @@ -53,6 +56,9 @@ int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm) >> >> err = __rtc_read_time(rtc, tm); >> mutex_unlock(&rtc->ops_lock); >> + >> + if (!err) >> + trace_rtc_read_time(tm); > > It's better to just add unconditional tracepoints and trace the failures as well - > this makes things faster for the non-traced case, plus it's much easier to read as > well. > > I.e. something like: > > trace_rtc_read_time(tm, err); Yes, that's will be better. > > etc. > >> @@ -790,6 +818,8 @@ static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) >> schedule_work(&rtc->irqwork); >> } else if (err) { >> timerqueue_del(&rtc->timerqueue, &timer->node); >> + trace_rtc_timer_dequeue(timer, >> + rtc_ktime_to_tm(timer->node.expires)); > > Please don't break the line in such an ugly fashion. I will try to modify it in next version. > >> @@ -803,6 +833,7 @@ static void rtc_alarm_disable(struct rtc_device *rtc) >> return; >> >> rtc->ops->alarm_irq_enable(rtc->dev.parent, false); >> + trace_rtc_alarm_irq_enable(0); > > Since there's so many new events already, why not add an enable/disable variant > instead of parameterizing the 'enable' event? Since the rtc_alarm_irq_enable() is one separate function and can be called from userspace individually. > >> timerqueue_del(&rtc->timerqueue, &timer->node); >> + trace_rtc_timer_dequeue(timer, rtc_ktime_to_tm(timer->node.expires)); > >> + trace_rtc_timer_dequeue(timer, >> + rtc_ktime_to_tm(timer->node.expires)); > >> + trace_rtc_timer_fired(timer, >> + rtc_ktime_to_tm(timer->node.expires)); > >> + trace_rtc_timer_enqueue(timer, >> + rtc_ktime_to_tm(timer->node.expires)); > > All the decoding of expiry time should be done in the trace handler, don't bloat > the call site with it. OK. Thanks for your comments. -- Baolin.wang Best Regards From 1584123610813311648@xxx Wed Nov 15 09:26:41 +0000 2017 X-GM-THRID: 1584116430602610856 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread