<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/kernel/head_64.S, 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-10-24T08:50:59Z</updated>
<entry>
<title>KVM: PPC: Move KVM trampolines before __end_interrupts</title>
<updated>2010-10-24T08:50:59Z</updated>
<author>
<name>Alexander Graf</name>
</author>
<published>2010-07-29T13:04:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a58ddea556f8877ccf7caa046b6d6b32982f5b1d'/>
<id>urn:sha1:a58ddea556f8877ccf7caa046b6d6b32982f5b1d</id>
<content type='text'>
When using a relocatable kernel we need to make sure that the trampline code
and the interrupt handlers are both copied to low memory. The only way to do
this reliably is to put them in the copied section.

This patch should make relocated kernels work with KVM.

KVM-Stable-Tag
Signed-off-by: Alexander Graf &lt;agraf@suse.de&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>powerpc: Don't use kernel stack with translation off</title>
<updated>2010-08-31T01:35:13Z</updated>
<author>
<name>Michael Neuling</name>
</author>
<published>2010-08-25T21:04:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=54a834043314c257210db2a9d59f8cc605571639'/>
<id>urn:sha1:54a834043314c257210db2a9d59f8cc605571639</id>
<content type='text'>
In f761622e59433130bc33ad086ce219feee9eb961 we changed
early_setup_secondary so it's called using the proper kernel stack
rather than the emergency one.

Unfortunately, this stack pointer can't be used when translation is off
on PHYP as this stack pointer might be outside the RMO.  This results in
the following on all non zero cpus:
  cpu 0x1: Vector: 300 (Data Access) at [c00000001639fd10]
      pc: 000000000001c50c
      lr: 000000000000821c
      sp: c00000001639ff90
     msr: 8000000000001000
     dar: c00000001639ffa0
   dsisr: 42000000
    current = 0xc000000016393540
    paca    = 0xc000000006e00200
      pid   = 0, comm = swapper

The original patch was only tested on bare metal system, so it never
caught this problem.

This changes __secondary_start so that we calculate the new stack
pointer but only start using it after we've called early_setup_secondary.

With this patch, the above problem goes away.

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: Initialise paca-&gt;kstack before early_setup_secondary</title>
<updated>2010-08-24T05:26:31Z</updated>
<author>
<name>Matt Evans</name>
</author>
<published>2010-08-12T20:58:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f761622e59433130bc33ad086ce219feee9eb961'/>
<id>urn:sha1:f761622e59433130bc33ad086ce219feee9eb961</id>
<content type='text'>
As early setup calls down to slb_initialize(), we must have kstack
initialised before checking "should we add a bolted SLB entry for our kstack?"

Failing to do so means stack access requires an SLB miss exception to refill
an entry dynamically, if the stack isn't accessible via SLB(0) (kernel text
&amp; static data).  It's not always allowable to take such a miss, and
intermittent crashes will result.

Primary CPUs don't have this issue; an SLB entry is not bolted for their
stack anyway (as that lives within SLB(0)).  This patch therefore only
affects the init of secondaries.

Signed-off-by: Matt Evans &lt;matt@ozlabs.org&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>KVM: PPC: Name generic 64-bit code generic</title>
<updated>2010-05-17T09:18:14Z</updated>
<author>
<name>Alexander Graf</name>
</author>
<published>2010-04-15T22:11:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2191d657c9eaa4c444c33e014199ed9de1ac339d'/>
<id>urn:sha1:2191d657c9eaa4c444c33e014199ed9de1ac339d</id>
<content type='text'>
We have quite some code that can be used by Book3S_32 and Book3S_64 alike,
so let's call it "Book3S" instead of "Book3S_64", so we can later on
use it from the 32 bit port too.

Signed-off-by: Alexander Graf &lt;agraf@suse.de&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>powerpc: Reset kernel stack on cpu online from cede state</title>
<updated>2010-03-09T00:57:10Z</updated>
<author>
<name>Vaidyanathan Srinivasan</name>
</author>
<published>2010-03-01T02:58:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8dbce53cc249a76e9450708d291fce5a7e29c6a1'/>
<id>urn:sha1:8dbce53cc249a76e9450708d291fce5a7e29c6a1</id>
<content type='text'>
Cpu hotplug (offline) without dlpar operation will place cpu
in cede state and the extended_cede_processor() function will
return when resumed.

Kernel stack pointer needs to be reset before
start_secondary() is called to continue the online operation.

Added new function start_secondary_resume() to do the above
steps.

Signed-off-by: Vaidyanathan Srinivasan &lt;svaidy@linux.vnet.ibm.com&gt;
Cc: Gautham R Shenoy &lt;ego@in.ibm.com&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Dynamically allocate pacas</title>
<updated>2010-03-09T00:52:52Z</updated>
<author>
<name>Michael Ellerman</name>
</author>
<published>2010-01-28T13:23:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1426d5a3bd07589534286375998c0c8c6fdc5260'/>
<id>urn:sha1:1426d5a3bd07589534286375998c0c8c6fdc5260</id>
<content type='text'>
On 64-bit kernels we currently have a 512 byte struct paca_struct for
each cpu (usually just called "the paca"). Currently they are statically
allocated, which means a kernel built for a large number of cpus will
waste a lot of space if it's booted on a machine with few cpus.

We can avoid that by only allocating the number of pacas we need at
boot. However this is complicated by the fact that we need to access
the paca before we know how many cpus there are in the system.

The solution is to dynamically allocate enough space for NR_CPUS pacas,
but then later in boot when we know how many cpus we have, we free any
unused pacas.

Signed-off-by: Michael Ellerman &lt;michael@ellerman.id.au&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>Make head_64.S aware of KVM real mode code</title>
<updated>2009-11-05T05:49:57Z</updated>
<author>
<name>Alexander Graf</name>
</author>
<published>2009-10-30T05:47:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=842f2fedcdc4f9ea8e6ac5b2222971c31666dd3e'/>
<id>urn:sha1:842f2fedcdc4f9ea8e6ac5b2222971c31666dd3e</id>
<content type='text'>
We need to run some KVM trampoline code in real mode. Unfortunately, real mode
only covers 8MB on Cell so we need to squeeze ourselves as low as possible.

Also, we need to trap interrupts to get us back from guest state to host state
without telling Linux about it.

This patch adds interrupt traps and includes the KVM code that requires real
mode in the real mode parts of Linux.

Signed-off-by: Alexander Graf &lt;agraf@suse.de&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Remaining 64-bit Book3E support</title>
<updated>2009-08-20T00:25:11Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2009-07-23T23:15:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d27cfd3286966c04d4192a9db5a6c7ea60eebf1'/>
<id>urn:sha1:2d27cfd3286966c04d4192a9db5a6c7ea60eebf1</id>
<content type='text'>
This contains all the bits that didn't fit in previous patches :-) This
includes the actual exception handlers assembly, the changes to the
kernel entry, other misc bits and wiring it all up in Kconfig.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Use names rather than numbers for SPRGs (v2)</title>
<updated>2009-08-20T00:12:27Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2009-07-14T20:52:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ee43eb788b3a06425fffb912677e2e1c8b00dd3b'/>
<id>urn:sha1:ee43eb788b3a06425fffb912677e2e1c8b00dd3b</id>
<content type='text'>
The kernel uses SPRG registers for various purposes, typically in
low level assembly code as scratch registers or to hold per-cpu
global infos such as the PACA or the current thread_info pointer.

We want to be able to easily shuffle the usage of those registers
as some implementations have specific constraints realted to some
of them, for example, some have userspace readable aliases, etc..
and the current choice isn't always the best.

This patch should not change any code generation, and replaces the
usage of SPRN_SPRGn everywhere in the kernel with a named replacement
and adds documentation next to the definition of the names as to
what those are used for on each processor family.

The only parts that still use the original numbers are bits of KVM
or suspend/resume code that just blindly needs to save/restore all
the SPRGs.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Rename exception.h to exception-64s.h</title>
<updated>2009-08-20T00:12:26Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2009-07-14T20:52:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8aa34ab8b2dc96ca6c4feecfb87ed13f0d40ef98'/>
<id>urn:sha1:8aa34ab8b2dc96ca6c4feecfb87ed13f0d40ef98</id>
<content type='text'>
The file include/asm/exception.h contains definitions
that are specific to exception handling on 64-bit server
type processors.

This renames the file to exception-64s.h to reflect that
fact and avoid confusion.

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