public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: "Andreas Färber" <afaerber@suse.de>
Cc: arm@kernel.org, linux-arm-kernel@lists.infradead.org,
	mp-cs@actions-semi.com, 96boards@ucrobotics.com,
	support@lemaker.org, linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v2 04/17] clocksource: Add Owl timer
Date: Sun, 26 Feb 2017 15:56:31 +0100	[thread overview]
Message-ID: <20170226145631.GB30601@mai> (raw)
In-Reply-To: <afd6bfbc-e17c-dd79-d2ff-42bac6c274db@suse.de>

On Sun, Feb 26, 2017 at 03:40:49PM +0100, Andreas Färber wrote:
> Am 25.02.2017 um 22:59 schrieb Daniel Lezcano:
> > On Sat, Feb 25, 2017 at 12:25:32AM +0100, Andreas Färber wrote:
> >> Am 24.02.2017 um 23:29 schrieb Daniel Lezcano:
> >>> On Fri, Feb 24, 2017 at 04:40:42AM +0100, Andreas Färber wrote:
> >>>> +static struct clock_event_device owl_clockevent = {
> >>>> +	.name			= "owl_tick",
> >>>> +	.rating			= 200,
> >>>> +	.features		= CLOCK_EVT_FEAT_ONESHOT,
> >>>
> >>> Did you consider adding CLOCK_EVT_FEAT_DYNIRQ ?
> >>
> >> No, it was not present downstream. Got a good example?
> > 
> > https://lwn.net/Articles/541000/
> 
> Looking at your current Nomadik code, it seems I can literally should
> just add this flag (done), without needing to implement any new hooks.
> 
> On a related topic, how do we determine the cpumask? Downstream and some
> in-tree drivers use cpumask_of(0), others use cpu_possible_mask.

If you specify the CLOCK_EVT_FEAT_DYNIRQ, the cpumask is not important as it
will be changed dynamically.

Otherwise, cpumask_of(0) is often the default because it concentrates the
wakeup on a single cpu, allowing the other cpus to go to deep idle state and if
there are two clusters, it allows to have a cluster idle state. That results on
a better energy saving.

The usage of cpu_possible_mask will randomly wakeup any cpu.
 
> >> Do you spot anything functionally wrong in this driver? Despite adding
> >> this new driver, I am only getting the following additional earlycon output:
> >>
> >> [    0.000029] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps
> >> every 89478484971ns
> >> [    0.007888] clocksource: timer: mask: 0xffffffff max_cycles:
> >> 0xffffffff, max_idle_ns: 79635851949 ns
> >> [    0.017748] Console: colour dummy device 80x30
> >> [    0.022243] Calibrating delay loop...
> >> [    0.030895] random: fast init done
> >> [    0.231021] random: crng init done
> >>
> >> For S900 I'm using the generic timer instead.
> > 
> > I don't get the issue, can you elaborate ?
> 
> Found it myself: I forgot to clear the interrupt pending bit in the
> interrupt handler routine.
> 
> +       writel(OWL_Tx_CTL_PD, owl_timer_base + OWL_T1_CTL);
> 
> Now it goes past this point, initializes the real serial driver and
> boots up to not finding the rootfs:
> 
> [    0.000032] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps
> every 89478484971ns
> [    0.007898] clocksource: timer: mask: 0xffffffff max_cycles:
> 0xffffffff, max_idle_ns: 79635851949 ns
> [    0.017886] Console: colour dummy device 80x30
> [    0.022386] Calibrating delay loop... 405.50 BogoMIPS (lpj=2027520)

May be you should also consider using register_current_timer_delay() instead of
jiffies based delay loops.

> [    0.083523] pid_max: default: 32768 minimum: 301

-- 

 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  reply	other threads:[~2017-02-26 14:56 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-24  3:40 [PATCH v2 00/17] ARM: Initial Actions Semi S500 and S900 enablement Andreas Färber
2017-02-24  3:40 ` [PATCH v2 01/17] dt-bindings: Add vendor prefix for Actions Semi Andreas Färber
2017-02-27 14:57   ` Andreas Färber
2017-02-28  0:11     ` Rob Herring
2017-02-24  3:40 ` [PATCH v2 02/17] dt-bindings: arm: Document Actions Semi S500 Andreas Färber
2017-02-28  0:12   ` Rob Herring
2017-02-24  3:40 ` [RFC v2 03/17] dt-bindings: timer: Document Owl timer Andreas Färber
2017-02-24  3:45   ` Andreas Färber
2017-02-27 14:40   ` Andreas Färber
2017-02-28  0:15     ` Rob Herring
2017-02-24  3:40 ` [PATCH v2 04/17] clocksource: Add " Andreas Färber
2017-02-24 22:29   ` Daniel Lezcano
2017-02-24 23:25     ` Andreas Färber
2017-02-25 21:59       ` Daniel Lezcano
2017-02-26 14:40         ` Andreas Färber
2017-02-26 14:56           ` Daniel Lezcano [this message]
2017-02-24  3:40 ` [PATCH v2 05/17] ARM: Prepare Actions Semi S500 Andreas Färber
2017-02-24  3:40 ` [PATCH v2 06/17] ARM64: Prepare Actions Semi S900 Andreas Färber
2017-02-24  3:40 ` [PATCH v2 07/17] dt-bindings: serial: Document Actions Semi Owl UARTs Andreas Färber
2017-02-28  0:16   ` Rob Herring
2017-02-24  3:40 ` [PATCH v2 08/17] tty: serial: Add Actions Semi Owl UART earlycon Andreas Färber
2017-02-24  3:40 ` [PATCH v2 09/17] Documentation: kernel-parameters: Document owl earlycon Andreas Färber
2017-03-03 22:46   ` Jonathan Corbet
2017-03-03 23:28     ` Andreas Färber
2017-02-24  3:40 ` [PATCH v2 10/17] ARM: dts: Add Actions Semi S500 and LeMaker Guitar Andreas Färber
2017-02-24 23:36   ` Andreas Färber
2017-02-24  3:40 ` [PATCH v2 11/17] dt-bindings: Add vendor prefix for uCRobotics Andreas Färber
2017-02-28  0:16   ` Rob Herring
2017-02-24  3:40 ` [PATCH v2 12/17] dt-bindings: arm: Document Actions Semi S900 Andreas Färber
2017-02-28  0:17   ` Rob Herring
2017-02-24  3:40 ` [RFC v2 13/17] ARM64: dts: Add Actions Semi S900 and Bubblegum-96 Andreas Färber
2017-02-24  3:49   ` Andreas Färber
2017-02-24  3:40 ` [RFC v2 14/17] MAINTAINERS: Add Actions Semi Owl section Andreas Färber
2017-02-24  3:40 ` [PATCH v2 15/17] tty: serial: owl: Implement console driver Andreas Färber
2017-02-24  3:40 ` [PATCH v2 16/17] ARM64: dts: actions: s900-bubblegum-96: Add fake uart5 clk Andreas Färber
2017-02-24  3:40 ` [PATCH v2 17/17] ARM: dts: s500-guitar-bb-rev-b: Add fake uart3 clock Andreas Färber

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=20170226145631.GB30601@mai \
    --to=daniel.lezcano@linaro.org \
    --cc=96boards@ucrobotics.com \
    --cc=afaerber@suse.de \
    --cc=arm@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mp-cs@actions-semi.com \
    --cc=support@lemaker.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox