<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/kernel/dbell.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-07-09T06:11:19Z</updated>
<entry>
<title>powerpc/book3e: Resend doorbell exceptions to ourself</title>
<updated>2010-07-09T06:11:19Z</updated>
<author>
<name>Michael Ellerman</name>
</author>
<published>2010-07-09T05:34:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=850f22d5688941ea51628f3f8f8dcf3baff409ff'/>
<id>urn:sha1:850f22d5688941ea51628f3f8f8dcf3baff409ff</id>
<content type='text'>
If we are soft disabled and receive a doorbell exception we don't process
it immediately. This means we need to check on the way out of irq restore
if there are any doorbell exceptions to process.

The problem is at that point we don't know what our regs are, and that
in turn makes xmon unhappy. To workaround the problem, instead of checking
for and processing doorbells, we check for any doorbells and if there were
any we send ourselves another.

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>powerpc/book3e: Use set_irq_regs() in the msgsnd/msgrcv IPI path</title>
<updated>2010-07-09T06:11:18Z</updated>
<author>
<name>David Gibson</name>
</author>
<published>2010-07-09T05:32:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e37d25950f4fd5a7d74723e6ce608aaa972d24c'/>
<id>urn:sha1:0e37d25950f4fd5a7d74723e6ce608aaa972d24c</id>
<content type='text'>
include/asm-generic/irq_regs.h declares per-cpu irq_regs variables and
get_irq_regs() and set_irq_regs() helper functions to maintain them.
These can be used to access the proper pt_regs structure related to the
current interrupt entry (if any).

In the powerpc arch code, this is used to maintain irq regs on
decrementer and external interrupt exceptions.  However, for the
doorbell exceptions used by the msgsnd/msgrcv IPI mechanism of newer
BookE CPUs, the irq_regs are not kept up to date.

In particular this means that xmon will not work properly on SMP,
because the secondary xmon instances started by IPI will blow up when
they cannot retrieve the irq regs.

This patch fixes the problem by adding calls to maintain the irq regs
across doorbell exceptions.

Signed-off-by: David Gibson &lt;david@gibson.dropbear.id.au&gt;
Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/book3e: More doorbell cleanups. Sample the PIR register</title>
<updated>2010-07-09T05:29:53Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2010-07-09T05:29:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b9f1cd71dbf21a91fb7e2336a1d1ff18b97771e5'/>
<id>urn:sha1:b9f1cd71dbf21a91fb7e2336a1d1ff18b97771e5</id>
<content type='text'>
The doorbells use the content of the PIR register to match messages
from other CPUs. This may or may not be the same as our linux CPU
number, so using that as the "target" is no right.

Instead, we sample the PIR register at boot on every processor
and use that value subsequently when sending IPIs.

We also use a per-cpu message mask rather than a global array which
should limit cache line contention.

Note: We could use the CPU number in the device-tree instead of
the PIR register, as they are supposed to be equivalent. This
might prove useful if doorbells are to be used to kick CPUs out
of FW at boot time, thus before we can sample the PIR. This is
however not the case now and using the PIR just works.

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc/book3e: Move doorbell_exception from traps.c to dbell.c</title>
<updated>2010-07-09T05:25:18Z</updated>
<author>
<name>Benjamin Herrenschmidt</name>
</author>
<published>2010-07-09T05:25:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e3145b387a02d4bf8b8033b1354d413fc0864494'/>
<id>urn:sha1:e3145b387a02d4bf8b8033b1354d413fc0864494</id>
<content type='text'>
... where it belongs

Signed-off-by: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
</content>
</entry>
<entry>
<title>powerpc: Add support for using doorbells for SMP IPI</title>
<updated>2009-02-23T04:53:03Z</updated>
<author>
<name>Kumar Gala</name>
</author>
<published>2009-02-12T13:54:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=620165f971753c2c451c880796bac7cd66f3534a'/>
<id>urn:sha1:620165f971753c2c451c880796bac7cd66f3534a</id>
<content type='text'>
The e500mc supports the new msgsnd/doorbell mechanisms that were added in
the Power ISA 2.05 architecture.  We use the normal level doorbell for
doing SMP IPIs at this point.

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