<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/kernel/mce_power.c, branch linux-4.14.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.14.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.14.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2017-09-29T04:19:44Z</updated>
<entry>
<title>powerpc: Fix workaround for spurious MCE on POWER9</title>
<updated>2017-09-29T04:19:44Z</updated>
<author>
<name>Michael Neuling</name>
</author>
<published>2017-09-29T03:37:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bca73f595a566f0262967535bb5b2ea9c4271d9a'/>
<id>urn:sha1:bca73f595a566f0262967535bb5b2ea9c4271d9a</id>
<content type='text'>
In the recent commit d8bd9f3f0925 ("powerpc: Handle MCE on POWER9 with
only DSISR bit 30 set") I screwed up the bit number. It should be bit
25 (IBM bit 38).

Fixes: d8bd9f3f0925 ("powerpc: Handle MCE on POWER9 with only DSISR bit 30 set")
Signed-off-by: Michael Neuling &lt;mikey@neuling.org&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc: Handle MCE on POWER9 with only DSISR bit 30 set</title>
<updated>2017-09-26T11:01:59Z</updated>
<author>
<name>Michael Neuling</name>
</author>
<published>2017-09-22T03:32:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d8bd9f3f0925d22726de159531bfe3774b5cacc6'/>
<id>urn:sha1:d8bd9f3f0925d22726de159531bfe3774b5cacc6</id>
<content type='text'>
On POWER9 DD2.1 and below, it's possible for a paste instruction to
cause a Machine Check Exception (MCE) where only DSISR bit 30 (IBM 33)
is set. This will result in the MCE handler seeing an unknown event,
which triggers linux to crash.

We change this by detecting unknown events caused by load/stores in
the MCE handler and marking them as handled so that we no longer
crash.

An MCE that occurs like this is spurious, so we don't need to do
anything in terms of servicing it. If there is something that needs to
be serviced, the CPU will raise the MCE again with the correct DSISR
so that it can be serviced properly.

Signed-off-by: Michael Neuling &lt;mikey@neuling.org&gt;
Reviewed-by: Nicholas Piggin &lt;npiggin@gmail.com
Acked-by: Balbir Singh &lt;bsingharora@gmail.com&gt;
[mpe: Expand comment with details from change log, use normal bit #s]
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9</title>
<updated>2017-07-11T02:53:53Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-07-06T10:51:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=41d0c2ecde19cfe93071ed7b979a53ba60b12840'/>
<id>urn:sha1:41d0c2ecde19cfe93071ed7b979a53ba60b12840</id>
<content type='text'>
There are two cases outside the normal address space management
where a CPU's local TLB is to be flushed:

  1. Host boot; in case something has left stale entries in the
     TLB (e.g., kexec).

  2. Machine check; to clean corrupted TLB entries.

CPU state restore from deep idle states also flushes the TLB.
However this seems to be a side effect of reusing the boot code to set
CPU state, rather than a requirement itself.

The current flushing has a number of problems with ISA v3.0B:

- The current radix mode of the MMU is not taken into account. tlbiel
  is undefined if the R field does not match the current radix mode.

- ISA v3.0B hash must flush the partition and process table caches.

- ISA v3.0B radix must flush partition and process scoped translations,
  partition and process table caches, and also the page walk cache.

Add POWER9 cases to handle these, with radix vs hash determined by the
host MMU mode.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Reviewed-by: Aneesh Kumar K.V &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Machine check handle ifetch from foreign real address for POWER9</title>
<updated>2017-06-06T11:17:15Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-05-29T06:26:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=90df4bfb4d9e00a1ab6885900b808bef2b62a21c'/>
<id>urn:sha1:90df4bfb4d9e00a1ab6885900b808bef2b62a21c</id>
<content type='text'>
The i-side 0111b machine check, which is "Instruction Fetch to foreign
address space", was missed by 7b9f71f974 ("powerpc/64s: POWER9 machine
check handler").

    The POWER9 processor core considers host real addresses with a
    nonzero value in RA(8:12) as foreign address space, accessible only
    by the copy and paste instructions. The copy and paste instruction
    pair can be used to invoke the Nest accelerators via the Virtual
    Accelerator Switchboard (VAS).

It is an error for any regular load/store or ifetch to go to a foreign
addresses. When relocation is on, this causes an MMU exception. When
relocation is off, a machine check exception. It is possible to trigger
this machine check by branching to a foreign address with MSR[IR]=0.

Fixes: 7b9f71f974a1 ("powerpc/64s: POWER9 machine check handler")
Reported-by: Mahesh Salgaonkar &lt;mahesh@linux.vnet.ibm.com&gt;
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Minor fix for MCE TLB flush for radix</title>
<updated>2017-04-19T10:00:18Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-04-16T14:21:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=95dbdf4fa09823e35b29eab8f7093984daa6a913'/>
<id>urn:sha1:95dbdf4fa09823e35b29eab8f7093984daa6a913</id>
<content type='text'>
The TLB flush for radix first flushes TLB for radix configuration,
then flushes for hash configuration. The second flush is unnecessary
but does not affect correctness.

Fixes: 1a472c9dba6b9 ("powerpc/mm/radix: Add tlbflush routines")
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Reviewed-by: Aneesh Kumar K.V &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: POWER8 add missing machine check definitions</title>
<updated>2017-03-21T11:09:31Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-03-14T12:36:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c7e790c5f4c3e923664f45dfbc84492406bef045'/>
<id>urn:sha1:c7e790c5f4c3e923664f45dfbc84492406bef045</id>
<content type='text'>
POWER8 uses bit 36 in SRR1 like POWER9 for i-side machine checks, and
contains several conditions for link timeouts that are not currently
handled.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Data driven machine check handling</title>
<updated>2017-03-21T11:09:30Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-03-14T12:36:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=755309be770695cafa4137520789c584903caa39'/>
<id>urn:sha1:755309be770695cafa4137520789c584903caa39</id>
<content type='text'>
Move the handling (corrective action) of machine checks to the table
based evaluation.

This changes P7 and P8 ERAT flushing from using SLB flush to using ERAT
flush.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Data driven machine check evaluation</title>
<updated>2017-03-21T11:09:30Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-03-14T12:36:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=631bc46c8c8e7014f2e90c94e356bf59e1fbf800'/>
<id>urn:sha1:631bc46c8c8e7014f2e90c94e356bf59e1fbf800</id>
<content type='text'>
Have machine types define i-side and d-side tables to describe their
machine check encodings, and match entries to evaluate (for reporting)
machine checks.

Functionality is mostly unchanged (tested with a userspace harness), but
it does make a change in that it no longer records DAR as the effective
address for those errors where it is specified to be invalid (which is a
reporting change only).

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Move POWER machine check defines into mce_power.c</title>
<updated>2017-03-21T11:09:29Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-03-14T12:36:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=58c8d17f2ed7367f9886908633fbe85624e41e78'/>
<id>urn:sha1:58c8d17f2ed7367f9886908633fbe85624e41e78</id>
<content type='text'>
Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
<entry>
<title>powerpc/64s: Clean up machine check recovery flushing</title>
<updated>2017-03-21T11:09:29Z</updated>
<author>
<name>Nicholas Piggin</name>
</author>
<published>2017-03-14T12:36:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=88c6511a8c0c09bbc5f9792c4a2c252c7e47e49b'/>
<id>urn:sha1:88c6511a8c0c09bbc5f9792c4a2c252c7e47e49b</id>
<content type='text'>
Use the flush function introduced with the POWER9 machine check handler
for POWER7 and 8, rather than open coding it multiple times in callers.

There is a specific ERAT flush type introduced for POWER9, but the
POWER7-8 ERAT errors continue to do SLB flushing (which also flushes
ERAT), so as not to introduce functional changes with this cleanup
patch.

Signed-off-by: Nicholas Piggin &lt;npiggin@gmail.com&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
</feed>
