<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/powerpc/kernel/entry_32.S, branch linux-5.13.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.13.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.13.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-03-29T02:22:11Z</updated>
<entry>
<title>powerpc/32: Manage KUAP in C</title>
<updated>2021-03-29T02:22:11Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c16728835eec45fa82f4744a52940717ac828f6d'/>
<id>urn:sha1:c16728835eec45fa82f4744a52940717ac828f6d</id>
<content type='text'>
Move all KUAP management in C.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/199365ddb58d579daf724815f2d0acb91cc49d19.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32s: Move KUEP locking/unlocking in C</title>
<updated>2021-03-29T02:22:10Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b5efec00b671c5d7e9cb9e73a1d4925dd6ce8dcd'/>
<id>urn:sha1:b5efec00b671c5d7e9cb9e73a1d4925dd6ce8dcd</id>
<content type='text'>
This can be done in C, do it.

Unrolling the loop gains approx. 15% performance.

From now on, prepare_transfer_to_handler() is only for
interrupts from kernel.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/4eadd873927e9a73c3d1dfe2f9497353465514cf.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Only use prepare_transfer_to_handler function on book3s/32 and e500</title>
<updated>2021-03-29T02:22:10Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a2b3e09ae41c71d27d9b8da9baf31e0d9a97b864'/>
<id>urn:sha1:a2b3e09ae41c71d27d9b8da9baf31e0d9a97b864</id>
<content type='text'>
Only book3s/32 and e500 have significative work to do in
prepare_transfer_to_handler.

Other 32 bit have nothing to do at all.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/b5e29ca0e557c11340415a13fe8b107189d315e1.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Return directly from power_save_ppc32_restore()</title>
<updated>2021-03-29T02:22:10Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a5d33be0512b4565808a3aed05567cb56c0e6ad0'/>
<id>urn:sha1:a5d33be0512b4565808a3aed05567cb56c0e6ad0</id>
<content type='text'>
transfer_to_handler_cont: is now just a blr.

Directly perform blr in power_save_ppc32_restore().

Also remove useless setting of r11 in e500 version of
power_save_ppc32_restore().

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/e337506e08a4df95b11d2290104b92f0dcdb5548.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Save remaining registers in exception prolog</title>
<updated>2021-03-29T02:22:10Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=16db54369df614bf386aa31a6730c5bdb1bf4ffd'/>
<id>urn:sha1:16db54369df614bf386aa31a6730c5bdb1bf4ffd</id>
<content type='text'>
Save non volatile registers, XER, CTR, MSR and NIP in exception prolog.

Also assign proper value to r2 and r3 there.

For now, recalculate thread pointer in prepare_transfer_to_handler.
It will disappear once KUAP is ported to C.

And remove the comment which is now completely wrong.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/56f0cde9dd0362edf2ddba4d887552013eee7329.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Dismantle EXC_XFER_STD/LITE/TEMPLATE</title>
<updated>2021-03-29T02:22:09Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4c0104a83fc3990a76a01a2f4e504251fa9814c4'/>
<id>urn:sha1:4c0104a83fc3990a76a01a2f4e504251fa9814c4</id>
<content type='text'>
In order to get more control in exception prolog, dismantle
all non standard exception macros, finishing with EXC_XFER_STD
and EXC_XFER_LITE and EXC_XFER_TEMPLATE.

Also remove transfer_to_handler_full and ret_from_except and
ret_from_except_full as they are not used anymore.

Last parameter of EXCEPTION() is now ignored, will be removed
in a later patch to avoid too much churn.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/ca5795d04a220586b7037dbbbe6951dfa9e768eb.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Only restore non volatile registers when required</title>
<updated>2021-03-29T02:22:09Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8f6ff5bd9b73a7912356f378adfb85e9a4e7ce65'/>
<id>urn:sha1:8f6ff5bd9b73a7912356f378adfb85e9a4e7ce65</id>
<content type='text'>
Until now, non volatile registers were restored everytime they
were saved, ie using EXC_XFER_STD meant saving and restoring
them while EXC_XFER_LITE meant neither saving not restoring them.

Now that they are always saved, EXC_XFER_STD means to restore
them and EXC_XFER_LITE means to not restore them.

Most of the users of EXC_XFER_STD only need to retrieve the
non volatile registers. For them there is no need to restore
the non volatile registers as they have not been modified.

Only very few exceptions require non volatile registers restore.

Opencode the few places which require saving of non volatile
registers.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/d1cb12d8023cc6afc1f07150565571373c04945c.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Add a prepare_transfer_to_handler macro for exception prologs</title>
<updated>2021-03-29T02:22:09Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bce4c26a4e324cb096a3768cdc3aad4e2552c3d0'/>
<id>urn:sha1:bce4c26a4e324cb096a3768cdc3aad4e2552c3d0</id>
<content type='text'>
In order to increase flexibility, add a macro that will for now
call transfer_to_handler.

As transfer_to_handler doesn't do the actual transfer anymore,
also name it prepare_transfer_to_handler. The following patches
will progressively remove the use of transfer_to_handler label.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/7f757c52518ab1d7b27ad5113b10f860e803f467.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Call bad_page_fault() from do_page_fault()</title>
<updated>2021-03-29T02:22:08Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=af6f2ce84b2f666762f75f085a7e5d6514743a84'/>
<id>urn:sha1:af6f2ce84b2f666762f75f085a7e5d6514743a84</id>
<content type='text'>
Now that non volatile registers are saved at all time, no
need to split bad_page_fault() out of do_page_fault().

Remove handle_page_fault() and use do_page_fault() directly.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/cfb95be8863204cc2bf45a22ea44dd1d0dc16b7f.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
<entry>
<title>powerpc/32: Set regs parameter in r3 in transfer_to_handler</title>
<updated>2021-03-29T02:22:08Z</updated>
<author>
<name>Christophe Leroy</name>
</author>
<published>2021-03-12T12:50:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e72915560b15f58c2ffe08144d9a7163daa18db4'/>
<id>urn:sha1:e72915560b15f58c2ffe08144d9a7163daa18db4</id>
<content type='text'>
All exception handlers take regs as first parameter.

Instead of setting r3 just before each call to a handler, set
it in transfer_to_handler.

Signed-off-by: Christophe Leroy &lt;christophe.leroy@csgroup.eu&gt;
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Link: https://lore.kernel.org/r/f994a379bb895a2cbd518cb82460ad3f3d3ccdf5.1615552867.git.christophe.leroy@csgroup.eu
</content>
</entry>
</feed>
