<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/kernel/smp.c, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2010-09-02T04:07:31Z</updated>
<entry>
<title>powerpc: Account time using timebase rather than PURR</title>
<updated>2010-09-02T04:07:31Z</updated>
<author>
<name>Paul Mackerras</name>
</author>
<published>2010-08-26T19:56:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cf9efce0ce3136fa076f53e53154e98455229514'/>
<id>urn:sha1:cf9efce0ce3136fa076f53e53154e98455229514</id>
<content type='text'>
Currently, when CONFIG_VIRT_CPU_ACCOUNTING is enabled, we use the
PURR register for measuring the user and system time used by
processes, as well as other related times such as hardirq and
softirq times.  This turns out to be quite confusing for users
because it means that a program will often be measured as taking
less time when run on a multi-threaded processor (SMT2 or SMT4 mode)
than it does when run on a single-threaded processor (ST mode), even
though the program takes longer to finish.  The discrepancy is
accounted for as stolen time, which is also confusing, particularly
when there are no other partitions running.

This changes the accounting to use the timebase instead, meaning that
the reported user and system times are the actual number of real-time
seconds that the program was executing on the processor thread,
regardless of which SMT mode the processor is in.  Thus a program will
generally show greater user and system times when run on a
multi-threaded processor than on a single-threaded processor.

On pSeries systems on POWER5 or later processors, we measure the
stolen time (time when this partition wasn't running) using the
hypervisor dispatch trace log.  We check for new entries in the
log on every entry from user mode and on every transition from
kernel process context to soft or hard IRQ context (i.e. when
account_system_vtime() gets called).  So that we can correctly
distinguish time stolen from user time and time stolen from system
time, without having to check the log on every exit to user mode,
we store separate timestamps for exit to user mode and entry from
user mode.

On systems that have a SPURR (POWER6 and POWER7), we read the SPURR
in account_system_vtime() (as before), and then apportion the SPURR
ticks since the last time we read it between scaled user time and
scaled system time according to the relative proportions of user
time and system time over the same interval.  This avoids having to
read the SPURR on every kernel entry and exit.  On systems that have
PURR but not SPURR (i.e., POWER5), we do the same using the PURR
rather than the SPURR.

This disables the DTL user interface in /sys/debug/kernel/powerpc/dtl
for now since it conflicts with the use of the dispatch trace log
by the time accounting code.

Signed-off-by: Paul Mackerras &lt;paulus@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Move arch_sd_sibling_asym_packing() to smp.c</title>
<updated>2010-09-02T04:07:31Z</updated>
<author>
<name>Michael Neuling</name>
</author>
<published>2010-08-10T20:02:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e1f0ece113fe028593b6869fe191a991322c5d85'/>
<id>urn:sha1:e1f0ece113fe028593b6869fe191a991322c5d85</id>
<content type='text'>
Simple cleanup by moving arch_sd_sibling_asym_packing from process.c to
smp.c to save an #ifdef CONFIG_SMP

No functionality change.

Signed-off-by: Michael Neuling &lt;mikey@neuling.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Silence __cpu_up() under normal operation</title>
<updated>2010-08-24T05:26:29Z</updated>
<author>
<name>Signed-off-by: Darren Hart</name>
</author>
<published>2010-08-04T18:28:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6685a477494ceb063c10300891e48895bb1843c9'/>
<id>urn:sha1:6685a477494ceb063c10300891e48895bb1843c9</id>
<content type='text'>
During CPU offline/online tests __cpu_up would flood the logs with
the following message:

Processor 0 found.

This provides no useful information to the user as there is no context
provided, and since the operation was a success (to this point) it is expected
that the CPU will come back online, providing all the feedback necessary.

Change the "Processor found" message to DBG() similar to other such messages in
the same function. Also, add an appropriate log level for the "Processor is
stuck" message.

Signed-off-by: Darren Hart &lt;dvhltc@us.ibm.com&gt;
Acked-by: Will Schmidt &lt;will_schmidt@vnet.ibm.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Nathan Fontenot &lt;nfont@austin.ibm.com&gt;
Cc: Robert Jennings &lt;rcj@linux.vnet.ibm.com&gt;
Cc: Brian King &lt;brking@linux.vnet.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/smp: remove the incorrect decrementer initial codes for AP</title>
<updated>2010-07-31T04:56:31Z</updated>
<author>
<name>Tiejun Chen</name>
</author>
<published>2010-07-15T20:17:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d77cb21b578a5428482bc0fd187f7c0518a0b32a'/>
<id>urn:sha1:d77cb21b578a5428482bc0fd187f7c0518a0b32a</id>
<content type='text'>
We already defined start_cpu_decrementer() to invoke decrementer for AP as
the following path:

start_secondary() -&gt; secondary_cpu_time_init() -&gt; start_cpu_decrementer()

So remove these incorrect codes introduced from commit:
e7f75ad0 powerpc/47x: Base ppc476 support

And actually we really should not enable decrementer before calling set_dec().

Signed-off-by: Tiejun Chen &lt;tiejun.chen@windriver.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Clean up obsolete code relating to decrementer and timebase</title>
<updated>2010-07-09T01:26:16Z</updated>
<author>
<name>Paul Mackerras</name>
</author>
<published>2010-06-20T19:04:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c1aa687d499a8bce55cb8cf962f0b72c0f933f14'/>
<id>urn:sha1:c1aa687d499a8bce55cb8cf962f0b72c0f933f14</id>
<content type='text'>
Since the decrementer and timekeeping code was moved over to using
the generic clockevents and timekeeping infrastructure, several
variables and functions have been obsolete and effectively unused.
This deletes them.

In particular, wakeup_decrementer() is no longer needed since the
generic code reprograms the decrementer as part of the process of
resuming the timekeeping code, which happens during sysdev resume.
Thus the wakeup_decrementer calls in the suspend_enter methods for
52xx platforms have been removed.  The call in the powermac cpu
frequency change code has been replaced by set_dec(1), which will
cause a timer interrupt as soon as interrupts are enabled, and the
generic code will then reprogram the decrementer with the correct
value.

This also simplifies the generic_suspend_en/disable_irqs functions
and makes them static since they are not referenced outside time.c.
The preempt_enable/disable calls are removed because the generic
code has disabled all but the boot cpu at the point where these
functions are called, so we can't be moved to another cpu.

Signed-off-by: Paul Mackerras &lt;paulus@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Use common cpu_die (fixes SMP+SUSPEND build)</title>
<updated>2010-05-21T07:31:08Z</updated>
<author>
<name>Milton Miller</name>
</author>
<published>2010-05-19T02:56:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=abb17f9c3a92c5acf30e749efdf0419b7f50a5b8'/>
<id>urn:sha1:abb17f9c3a92c5acf30e749efdf0419b7f50a5b8</id>
<content type='text'>
Configuring a powerpc 32 bit kernel for both SMP and SUSPEND turns on
CPU_HOTPLUG to enable disable_nonboot_cpus to be called by the common
suspend code.  Previously the definition of cpu_die for ppc32 was in
the powermac platform code, causing it to be undefined if that platform
as not selected.

arch/powerpc/kernel/built-in.o: In function 'cpu_idle':
arch/powerpc/kernel/idle.c:98: undefined reference to 'cpu_die'

Move the code from setup_64 to smp.c and rename the power mac
versions to their specific names.

Note that this does not setup the cpu_die pointers in either
smp_ops (request a given cpu die) or ppc_md (make this cpu die),
for other platforms but there are generic versions in smp.c.

Reported-by: Matt Sealey &lt;matt@genesi-usa.com&gt;
Reported-by: Kumar Gala &lt;galak@kernel.crashing.org&gt;
Signed-off-by: Milton Miller &lt;miltonm@bga.com&gt;
Signed-off-by: Anton Vorontsov &lt;avorontsov@mvista.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/cpumask: Update some comments</title>
<updated>2010-05-06T07:41:59Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2010-04-26T15:32:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=828a69869ba266cabb486a6b59ea8643d56b33ce'/>
<id>urn:sha1:828a69869ba266cabb486a6b59ea8643d56b33ce</id>
<content type='text'>
Since the *_map cpumask variants are deprecated, change the comments to
instead refer to *_mask.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/cpumask: Dynamically allocate cpu_sibling_map and cpu_core_map cpumasks</title>
<updated>2010-05-06T07:41:56Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2010-04-26T15:32:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cc1ba8ea6dde3f049b2b365d8fdc13976aee25cb'/>
<id>urn:sha1:cc1ba8ea6dde3f049b2b365d8fdc13976aee25cb</id>
<content type='text'>
Dynamically allocate cpu_sibling_map and cpu_core_map cpumasks.

We don't need to set_cpu_online() the boot cpu in smp_prepare_boot_cpu,
init/main.c does it for us.

We also postpone setting of the boot cpu in cpu_sibling_map and cpu_core_map
until when the memory allocator is available (smp_prepare_cpus), similar
to x86.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/cpumask: Convert fixup_irqs to new cpumask API</title>
<updated>2010-05-06T07:16:14Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2010-04-26T15:32:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b6decb707952c678d110699abb5ed86d45ca6927'/>
<id>urn:sha1:b6decb707952c678d110699abb5ed86d45ca6927</id>
<content type='text'>
Use new cpumask_* functions, and dynamically allocate cpumask in fixup_irqs.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/cpumask: Convert smp_cpus_done to new cpumask API</title>
<updated>2010-05-06T07:16:13Z</updated>
<author>
<name>Anton Blanchard</name>
</author>
<published>2010-04-26T15:32:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bfb9126defa80cbed6d91ed9685b238b0d7e81c4'/>
<id>urn:sha1:bfb9126defa80cbed6d91ed9685b238b0d7e81c4</id>
<content type='text'>
Use the new cpumask_* functions and dynamically allocate the cpumask in
smp_cpus_done.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
</feed>
