From: mingo@kernel.org (Ingo Molnar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] clockevents: Add (missing) default case for switch blocks
Date: Fri, 20 Feb 2015 11:52:19 +0100 [thread overview]
Message-ID: <20150220105219.GA26933@gmail.com> (raw)
In-Reply-To: <CAKohpok3r5ZPCqECQQOZeGiFM-w3yesMjZRuj_ky0PxH7ijAXA@mail.gmail.com>
* Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > So why is a 'default' mode needed then? It makes the
> > addition of new modes to the legacy handler easier,
> > which looks backwards.
>
> The requirement was to add another mode ONESHOT_STOPPED
> [1], to be supported only by the new per-mode callbacks..
Why would a callback need any flag, and why would a flag be
visible to old legacy callbacks?
> We have got a clear check in core with the patch Peter
> mentioned above, which doesn't let us call legacy
> ->set_mode() for the newer modes.
>
> if (dev->set_mode) {
> /* Legacy callback doesn't support new modes */
> if (mode > CLOCK_EVT_MODE_RESUME)
> return -ENOSYS;
> dev->set_mode(mode, dev);
> return 0;
> }
So here is where one of your problems comes from: why did
you add CLOCK_EVT_MODE_RESUME to the interface? Phase it
out, it's a legacy interface - new callbacks shouldn't need
any mode flags to begin with.
> > So I'm confused: if we are using proper callbacks (like
> > my example outlined) , why is a 'mode enum' needed at
> > all?
>
> The enum has two uses today:
>
> - pass mode to the legacy ->set_mode() callback, which
> isn't required for the new callbacks.
But this is misguided, as per above.
> - flag for clockevent core's internal state machine,
> which it would still require. For example, it checks
> new-mode != old-mode before changing the mode..
Internal state machine state should be decoupled from any
interface flags - especially when the interface is legacy.
> I believe the enum is still required for the state
> machine, even with new per-mode callbacks.
That needs to be fixed first then, before introducing new
API variants.
Thanks,
Ingo
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@kernel.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Linaro Kernel Mailman List <linaro-kernel@lists.linaro.org>,
Kevin Hilman <khilman@linaro.org>,
Preeti U Murthy <preeti@linux.vnet.ibm.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Linaro Networking <linaro-networking@linaro.org>,
Steven Miao <realmz6@gmail.com>, Mark Salter <msalter@redhat.com>,
Michal Simek <monstr@monstr.eu>,
Ralf Baechle <ralf@linux-mips.org>,
Ley Foon Tan <lftan@altera.com>, Jonas Bonn <jonas@southpole.se>,
"David S. Miller" <davem@davemloft.net>,
Jeff Dike <jdike@addtoit.com>, Guan Xuetao <gxt@mprc.pku.edu.cn>
Subject: Re: [PATCH] clockevents: Add (missing) default case for switch blocks
Date: Fri, 20 Feb 2015 11:52:19 +0100 [thread overview]
Message-ID: <20150220105219.GA26933@gmail.com> (raw)
In-Reply-To: <CAKohpok3r5ZPCqECQQOZeGiFM-w3yesMjZRuj_ky0PxH7ijAXA@mail.gmail.com>
* Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > So why is a 'default' mode needed then? It makes the
> > addition of new modes to the legacy handler easier,
> > which looks backwards.
>
> The requirement was to add another mode ONESHOT_STOPPED
> [1], to be supported only by the new per-mode callbacks..
Why would a callback need any flag, and why would a flag be
visible to old legacy callbacks?
> We have got a clear check in core with the patch Peter
> mentioned above, which doesn't let us call legacy
> ->set_mode() for the newer modes.
>
> if (dev->set_mode) {
> /* Legacy callback doesn't support new modes */
> if (mode > CLOCK_EVT_MODE_RESUME)
> return -ENOSYS;
> dev->set_mode(mode, dev);
> return 0;
> }
So here is where one of your problems comes from: why did
you add CLOCK_EVT_MODE_RESUME to the interface? Phase it
out, it's a legacy interface - new callbacks shouldn't need
any mode flags to begin with.
> > So I'm confused: if we are using proper callbacks (like
> > my example outlined) , why is a 'mode enum' needed at
> > all?
>
> The enum has two uses today:
>
> - pass mode to the legacy ->set_mode() callback, which
> isn't required for the new callbacks.
But this is misguided, as per above.
> - flag for clockevent core's internal state machine,
> which it would still require. For example, it checks
> new-mode != old-mode before changing the mode..
Internal state machine state should be decoupled from any
interface flags - especially when the interface is legacy.
> I believe the enum is still required for the state
> machine, even with new per-mode callbacks.
That needs to be fixed first then, before introducing new
API variants.
Thanks,
Ingo
next prev parent reply other threads:[~2015-02-20 10:52 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-20 6:32 [PATCH] clockevents: Add (missing) default case for switch blocks Viresh Kumar
2015-02-20 6:32 ` Viresh Kumar
2015-02-20 8:38 ` Ingo Molnar
2015-02-20 8:38 ` Ingo Molnar
2015-02-20 8:48 ` Peter Zijlstra
2015-02-20 8:48 ` Peter Zijlstra
2015-02-20 9:36 ` Ingo Molnar
2015-02-20 9:36 ` Ingo Molnar
2015-02-20 10:12 ` Viresh Kumar
2015-02-20 10:12 ` Viresh Kumar
2015-02-20 10:52 ` Ingo Molnar [this message]
2015-02-20 10:52 ` Ingo Molnar
2015-02-20 11:37 ` Peter Zijlstra
2015-02-20 11:37 ` Peter Zijlstra
2015-02-20 11:41 ` Ingo Molnar
2015-02-20 11:41 ` Ingo Molnar
2015-02-20 11:56 ` Viresh Kumar
2015-02-20 11:56 ` Viresh Kumar
2015-02-20 13:22 ` Ingo Molnar
2015-02-20 13:22 ` Ingo Molnar
2015-02-20 13:58 ` Viresh Kumar
2015-02-20 13:58 ` Viresh Kumar
2015-02-20 14:04 ` Ingo Molnar
2015-02-20 14:04 ` Ingo Molnar
2015-02-23 5:33 ` Viresh Kumar
2015-02-23 5:33 ` Viresh Kumar
2015-02-23 16:37 ` Ingo Molnar
2015-02-23 16:37 ` Ingo Molnar
2015-02-24 11:11 ` viresh kumar
2015-02-24 11:11 ` viresh kumar
2015-02-24 14:54 ` Ingo Molnar
2015-02-24 14:54 ` Ingo Molnar
2015-02-24 15:12 ` Viresh Kumar
2015-02-24 15:12 ` Viresh Kumar
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=20150220105219.GA26933@gmail.com \
--to=mingo@kernel.org \
--cc=linux-arm-kernel@lists.infradead.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 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.