[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <56A7DC85.4070603@redhat.com>
Date: Tue, 26 Jan 2016 15:52:21 -0500
From: Prarit Bhargava <prarit@...hat.com>
To: Thomas Gleixner <tglx@...utronix.de>
CC: linux-kernel@...r.kernel.org, John Stultz <john.stultz@...aro.org>,
Xunlei Pang <pang.xunlei@...aro.org>,
Baolin Wang <baolin.wang@...aro.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Petr Mladek <pmladek@...e.cz>, Tejun Heo <tj@...nel.org>,
Peter Hurley <peter@...leysoftware.com>,
Vasily Averin <vvs@...tuozzo.com>,
Joe Perches <joe@...ches.com>
Subject: Re: [PATCH] printk, allow different timestamps for printk.time
On 01/26/2016 03:34 PM, Thomas Gleixner wrote:
> Prarit,
>
> On Mon, 25 Jan 2016, Prarit Bhargava wrote:
>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
>> index 87d40a7..2cf6692 100644
>> --- a/Documentation/kernel-parameters.txt
>> +++ b/Documentation/kernel-parameters.txt
>> @@ -3060,8 +3060,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>> Format: <bool> (1/Y/y=enable, 0/N/n=disable)
>> default: disabled
>>
>> - printk.time= Show timing data prefixed to each printk message line
>> - Format: <bool> (1/Y/y=enable, 0/N/n=disable)
>> + printk.time= Show timestamp prefixed to each printk message line
>> + Format: [0-2] (0 = disable,
>> + 1 = monotonic clock, 2 = real clock)
>
> Doesn't this break systems, which have 'Y/y' on the command line?
I'll fix this by converting to using module_param_cb() and comparing input
strings instead.
Aside: One thing I would also like to add is the ability to also do
printk.time=[real] for real timestamping. I think that's easier to parse for
end users.
>
>> static DEFINE_RAW_SPINLOCK(timekeeper_lock);
>> static struct timekeeper shadow_timekeeper;
>> +static int timekeeping_active;
>>
>> /**
>> * struct tk_fast - NMI safe timekeeper
>> @@ -401,6 +402,16 @@ u64 ktime_get_raw_fast_ns(void)
>> }
>> EXPORT_SYMBOL_GPL(ktime_get_raw_fast_ns);
>>
>> +u64 ktime_get_log_ts(u64 *offset_real)
>> +{
>> + *offset_real = ktime_to_ns(tk_core.timekeeper.offs_real);
>> +
>> + if (timekeeping_active)
>> + return ktime_get_mono_fast_ns();
>> + else
>> + return local_clock();
>
> Just for the record: The fast timekeeper stops across the inner workings of
> suspend/resume. But I think that doesn't matter much.
I've had to debug s/r before using the sysfs interface. It is nice to have that
with a proper timestamp because a lot of the failures are in the driver suspend
and resume paths. I could easily change the options to:
0 = disable
1 = local clock (which along with 0 would maintain the current state of things)
2 = monotonic
3 = real
P.
>
> Otherwise, this looks good now.
>
> Thanks,
>
> tglx
>
>
>
>
Powered by blists - more mailing lists