From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Prarit Bhargava <prarit@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
John Stultz <john.stultz@linaro.org>,
lkml <linux-kernel@vger.kernel.org>,
Mark Salyzyn <salyzyn@android.com>,
Jonathan Corbet <corbet@lwn.net>, Petr Mladek <pmladek@suse.com>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
Stephen Boyd <sboyd@codeaurora.org>,
Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Christoffer Dall <cdall@linaro.org>,
Deepa Dinamani <deepa.kernel@gmail.com>,
Ingo Molnar <mingo@kernel.org>,
Joel Fernandes <joelaf@google.com>,
Kees Cook <keescook@chromium.org>,
Geert Uytterhoeven <geert+renesas@glider.be>,
"Luis R. Rodriguez" <mcgrof@kernel.org>,
Nicholas Piggin <npiggin@gmail.com>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
Olof Johansson <olof@lixom.net>,
Josh Poimboeuf <jpoimboe@redhat.com>,
linux-doc@vger.kernel.org
Subject: Re: [PATCH v4] printk: Add monotonic, boottime, and realtime timestamps
Date: Wed, 9 Aug 2017 10:28:48 -0700 [thread overview]
Message-ID: <20170809172848.GZ3730@linux.vnet.ibm.com> (raw)
In-Reply-To: <3a1d78e8-744f-8668-fd20-e56d125c5089@redhat.com>
On Tue, Aug 08, 2017 at 07:08:00PM -0400, Prarit Bhargava wrote:
>
>
> On 08/08/2017 04:28 AM, Peter Zijlstra wrote:
> > On Mon, Aug 07, 2017 at 01:36:39PM -0700, Paul E. McKenney wrote:
> >> On Mon, Aug 07, 2017 at 04:06:09PM -0400, Prarit Bhargava wrote:
> >
> >>> peterz? Want to offer a suggestion? The issue is that I'm changing a bool
> >>> config option to an int and that impacts all the arch's defconfigs. John points
> >>> out that this is a lot of churn and we're both wondering if there's a better way
> >>> to do the configs.
> >>
> >> The usual approach is to keep the old bool Kconfig option, and add another
> >> int Kconfig option that depends on the original one. The tests for
> >> the int value get a bit more complex, but one way to handle this is to
> >> define a cpp macro something like the following:
> >>
> >> #ifdef CONFIG_OLD_OPTION
> >> #define CPP_NEW_OPTION 0
> >> #else
> >> #define CPP_NEW_OPTION CONFIG_NEW_OPTION
> >> #endif
> >>
> >> Then use CPP_NEW_OPTION, where zero means disabled and other numbers
> >> select the available options.
> >>
> >> Adjust to suit depending on what values mean what.
> >>
> >> Another approach is to make the range of the new Kconfig option
> >> depend on the old option:
> >>
> >> config NEW_OPTION
> >> int "your description here"
> >> range 1 5 if OLD_OPTION
> >> range 0 0 if !OLD_OPTION
> >> default 0
> >> help
> >> your help here
> >>
> >> Again, adjust to suit depending on what values mean what.
> >
> > Right this. Except I don't see the !OLD_OPTION working as expected.
> > A 'new' config will not include the old one, so the !OLD_OPTION thing
> > will 'always' be true.
> >
> > So your:
> >
> >> @@ -1,8 +1,46 @@
> >> menu "printk and dmesg options"
> >>
> >> +choice
> >> + prompt "printk default clock"
> >> + config PRINTK_TIME_DISABLE
> >> + bool "Disabled"
> >> + help
> >> + Selecting this option disables the time stamps of printk().
> >> +
> >> + config PRINTK_TIME_LOCAL
> >> + bool "Local Clock"
> >> + help
> >> + Selecting this option causes the time stamps of printk() to be
> >> + stamped with the unadjusted hardware clock.
> >> +
> >> + config PRINTK_TIME_BOOT
> >> + bool "CLOCK_BOOTTIME"
> >> + help
> >> + Selecting this option causes the time stamps of printk() to be
> >> + stamped with the adjusted boottime clock.
> >> +
> >> + config PRINTK_TIME_MONO
> >> + bool "CLOCK_MONOTONIC"
> >> + help
> >> + Selecting this option causes the time stamps of printk() to be
> >> + stamped with the adjusted monotonic clock.
> >> +
> >> + config PRINTK_TIME_REAL
> >> + bool "CLOCK_REALTIME"
> >> + help
> >> + Selecting this option causes the time stamps of printk() to be
> >> + stamped with the adjusted realtime clock.
> >> +
> >> +endchoice
> >> +
> >> config PRINTK_TIME
> >
> > Change that into something like:
> >
> > config PRINTK_CLOCK
> >
> >
> >> - bool "Show timing information on printks"
> >> + int "Show time stamp information on printks"
> >> depends on PRINTK
> >> + default 0 if PRINTK_TIME_DISABLE
> >> + default 1 if PRINTK_TIME_LOCAL
> >
> > And that into:
> >
> > default 1 if PRINTK_TIME_LOCAL || PRINTK_TIME
> >
> >> + default 2 if PRINTK_TIME_BOOT
> >> + default 3 if PRINTK_TIME_MONO
> >> + default 4 if PRINTK_TIME_REAL
> >> help
> >> Selecting this option causes time stamps of the printk()
> >
> > Then the old PRINTK_TIME symbol will auto-convert into the new
> > equivalent.
> >
>
> I don't think there's an easy code way around this. Essentially this Kconfig
> code boils down to properly evaluating
>
> config PRINTK_CLOCK
> default 1 if PRINTK_TIME
> default 0
>
> where there is no Kconfig entry for PRINTK_TIME.
>
> If undefined CONFIG_PRINTK_TIME is used in a config, it is immediately
> scrubbed by the kconfig script so it doesn't "exist" when CONFIG_PRINTK_CLOCK
> is evaluated. The result of that is CONFIG_PRINT_CLOCK=0.
>
> I tried
>
> config PRINTK_TIME
> bool "old config option"
>
> then I end up with both a CONFIG_PRINTK_CLOCK=1 and a CONFIG_PRINTK_TIME=y in
> the resulting config which is confusing.
>
> I've debated using the other suggestion that Paul made but TBH (sorry
> Paul) it seems like I'm avoiding the real but noisy solution of
>
> s/PRINTK_TIME=y/PRINTK_TIME=1/g
>
> I'm obviously open to other suggestions...
It is someone else's turn to provide a suggestion. ;-)
Thanx, Paul
next prev parent reply other threads:[~2017-08-09 17:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-07 15:52 [PATCH v4] printk: Add monotonic, boottime, and realtime timestamps Prarit Bhargava
2017-08-07 16:52 ` John Stultz
2017-08-07 17:15 ` Peter Zijlstra
2017-08-07 18:04 ` Prarit Bhargava
2017-08-07 18:47 ` John Stultz
2017-08-07 20:06 ` Prarit Bhargava
2017-08-07 20:36 ` Paul E. McKenney
2017-08-08 8:28 ` Peter Zijlstra
2017-08-08 23:08 ` Prarit Bhargava
2017-08-09 17:28 ` Paul E. McKenney [this message]
2017-08-07 16:58 ` Mark Salyzyn
2017-08-07 18:07 ` Prarit Bhargava
2017-08-07 17:18 ` Peter Zijlstra
2017-08-08 0:19 ` Sergey Senozhatsky
2017-08-08 12:32 ` Prarit Bhargava
2017-08-08 13:46 ` Prarit Bhargava
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=20170809172848.GZ3730@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=Jason@zx2c4.com \
--cc=akpm@linux-foundation.org \
--cc=cdall@linaro.org \
--cc=corbet@lwn.net \
--cc=deepa.kernel@gmail.com \
--cc=geert+renesas@glider.be \
--cc=gregkh@linuxfoundation.org \
--cc=joelaf@google.com \
--cc=john.stultz@linaro.org \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=mingo@kernel.org \
--cc=npiggin@gmail.com \
--cc=olof@lixom.net \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=prarit@redhat.com \
--cc=rostedt@goodmis.org \
--cc=salyzyn@android.com \
--cc=sboyd@codeaurora.org \
--cc=sergey.senozhatsky@gmail.com \
--cc=tglx@linutronix.de \
/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.