[PATCH] ARM: smp: Introduce ARCH_HAS_COMMON_CORES_CLOCK to speed-up boot
robherring2 at gmail.com
Thu Jan 20 11:34:38 EST 2011
On 01/20/2011 09:36 AM, Santosh Shilimkar wrote:
>> -----Original Message-----
>> From: Rob Herring [mailto:robherring2 at gmail.com]
>> Sent: Thursday, January 20, 2011 8:44 PM
>> To: Santosh Shilimkar
>> Cc: linux-arm-kernel at lists.infradead.org; Russell King; linux-
>> omap at vger.kernel.org; Linus Walleij
>> Subject: Re: [PATCH] ARM: smp: Introduce ARCH_HAS_COMMON_CORES_CLOCK
>> to speed-up boot
>> On 01/20/2011 03:42 AM, Santosh Shilimkar wrote:
>>> On some architectures, secondary cores shares clock with primiary
>>> core and hence scale together. Hence secondary core lpj
>>> is not necessary and can be skipped to save considerable time.
>>> This can speed up the secondary cpu boot and hotplug cpu online
>>> Discussion thread:
>> There's already one way to do this with pre-calculated lpj.
> How about the hot-plug path? This is not for just boot.
The path is the same for hotplug and secondary boot, so yes for both.
Plus you get the added benefit of speeding up the primary core boot as well.
>> Also, this isn't multi-platform friendly. You could accomplish the
>> thing using the clock api to get the core frequency of each core and
>> only calculate lpj if the frequency is different.
> May be but what's wrong with the obvious approach which is
> completely non-intrusive.
> Why is not multi-platform friendly ?
> Archs can choose not to select this option.
I meant you can't have single kernel binary with a platform with single
core freq and a platform with independent core freq.
Looking at this some more, the only reason to call calibrate_delay is to
get a more accurate value. If you have different frequencies per core,
you've got bigger problems as loops_per_jiffy value is not per core. So
your kconfig option name is misleading. Something like
ARCH_WANT_UDELAY_RECALC would be more accurate. To get a more accurate
calculation, calibrate_delay only needs to be called by 1 secondary
core. Perhaps it could be called from somewhere that is not in the
boot/hotplug path or only done once.
More information about the linux-arm-kernel