From: Feng Tang <feng.tang@intel.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: "mingo@elte.hu" <mingo@elte.hu>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Li, Shaohua" <shaohua.li@intel.com>,
"Pan, Jacob jun" <jacob.jun.pan@intel.com>
Subject: Re: [PATCH] tick: add check for the existence of broadcast clock event device
Date: Mon, 8 Jun 2009 14:12:50 +0800 [thread overview]
Message-ID: <20090608141250.6a5735fa@feng-desktop> (raw)
In-Reply-To: <alpine.LFD.2.00.0906080739020.3419@localhost.localdomain>
On Mon, 8 Jun 2009 13:43:43 +0800
Thomas Gleixner <tglx@linutronix.de> wrote:
> On Mon, 8 Jun 2009, Feng Tang wrote:
> > > 1) How do you calibrate the local APIC timer if you do not have
> > > some initial timer device ?
> > Yes, we have external timer device with the name "apbt"
>
> So that timer is initialized and registered before the local apic,
> right ?
Hi tglx,
I would describe a little more about our apbt timer, and I believe the
complete driver will be posted by my colleague after it get into a good shape.
Our apbt driver is pretty similar with HPET's, including its cpu hotplug
notifier. But our platform only has 2 available apbt to use, otherwise we will
configure it just like HPET, using one timer as bc and others for per-cpu ones,
then it won't hit this case
There are 2 situations, one is for the normal boot, apbt0 will be inited first
and registered to OS as cpu0's timer, then tsc/lapic is calculated based on it,
and apbt1 is registered later in a fs_initcall() (just like hpet.c does) after basic
kernel core is up. so the sequence is:
apbt0 --> lapic0 --> lapic1 --> apbt1
The other situation is in a suspend/resume cycle, in which disable/enable_nonboot_cpus()
are called, in this case, the apbt0 is alwasy there and not unregistered for cpu0, but
apbt1 is first dumped from cpu1, and in the resume process, lapic1 is first inited and
registered in the cpu_up() call, and apbt1 initialization is put into a workqueue after
got a CPU_ONLINE notifier. so for the cpu1 after resume, lapic1 first and then apbt1,
if the BROADCAST_ENTER/EXIT comes in between, the NULL pointer case is triggered.
Thanks,
Feng
>
> Why is the local APIC timer used at all ? The apbt timer should have a
> higher rating as the local APIC timer, so when APIC is registered it
> is not selected and the check in the broadcast functions
>
> !(dev->features & CLOCK_EVT_FEAT_C3STOP))
>
> should protect you because that bit is not set on your apbt device.
>
> Thanks,
>
> tglx
next prev parent reply other threads:[~2009-06-08 6:14 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-05 3:27 [PATCH] tick: add check for the existence of broadcast clock event device Feng Tang
2009-06-06 9:24 ` Thomas Gleixner
2009-06-06 12:47 ` Feng Tang
2009-06-06 12:54 ` Thomas Gleixner
2009-06-06 16:18 ` Thomas Gleixner
2009-06-08 1:57 ` Feng Tang
2009-06-08 5:43 ` Thomas Gleixner
2009-06-08 6:12 ` Feng Tang [this message]
2009-06-08 6:33 ` Thomas Gleixner
2009-06-08 6:47 ` Feng Tang
2009-06-08 7:00 ` Thomas Gleixner
2009-06-08 7:47 ` Tang, Feng
2009-06-08 13:41 ` Thomas Gleixner
2009-06-09 0:21 ` Pan, Jacob jun
2009-06-09 8:18 ` Thomas Gleixner
2009-06-09 12:49 ` Pan, Jacob jun
2009-06-09 16:53 ` Thomas Gleixner
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=20090608141250.6a5735fa@feng-desktop \
--to=feng.tang@intel.com \
--cc=jacob.jun.pan@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=shaohua.li@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox