<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/parisc/kernel/Makefile, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-11-01T06:35:59Z</updated>
<entry>
<title>parisc: add support for TOC (transfer of control)</title>
<updated>2021-11-01T06:35:59Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2021-10-14T19:49:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bc294838cc3443a2fbec58f8936ad4bd0a0b3055'/>
<id>urn:sha1:bc294838cc3443a2fbec58f8936ad4bd0a0b3055</id>
<content type='text'>
Almost all PA-RISC machines have either a button that
is labeled with 'TOC' or a BMC function to trigger a TOC.
TOC is a non-maskable interrupt that is sent to the processor.
This can be used for diagnostic purposes like obtaining a
stack trace/register dump or to enter KDB/KGDB.

As an example, on my c8000, TOC can be used with:

CONFIG_KGDB=y
CONFIG_KGDB_KDB=y

and the 'kgdboc=ttyS0,115200' appended to the command line.

Press ^[( on serial console, which will enter the BMC command line,
and enter 'TOC s':

root@(none):/# (
cli&gt;TOC s
Sending TOC/INIT.
&lt;Cpu3&gt; 2800035d03e00000  0000000040c21ac8  CC_ERR_CHECK_TOC
&lt;Cpu0&gt; 2800035d00e00000  0000000040c21ad0  CC_ERR_CHECK_TOC
&lt;Cpu2&gt; 2800035d02e00000  0000000040c21ac8  CC_ERR_CHECK_TOC
&lt;Cpu1&gt; 2800035d01e00000  0000000040c21ad0  CC_ERR_CHECK_TOC
&lt;Cpu3&gt; 37000f7303e00000  2000000000000000  CC_ERR_CPU_CHECK_SUMMARY
&lt;Cpu0&gt; 37000f7300e00000  2000000000000000  CC_ERR_CPU_CHECK_SUMMARY
&lt;Cpu2&gt; 37000f7302e00000  2000000000000000  CC_ERR_CPU_CHECK_SUMMARY
&lt;Cpu1&gt; 37000f7301e00000  2000000000000000  CC_ERR_CPU_CHECK_SUMMARY
&lt;Cpu3&gt; 4300100803e00000  c0000000001d26cc  CC_MC_BR_TO_OS_TOC
&lt;Cpu0&gt; 4300100800e00000  c0000000001d26cc  CC_MC_BR_TO_OS_TOC
&lt;Cpu2&gt; 4300100802e00000  c0000000001d26cc  CC_MC_BR_TO_OS_TOC
&lt;Cpu1&gt; 4300100801e00000  c0000000001d26cc  CC_MC_BR_TO_OS_TOC

Entering kdb (current=0x00000000411cef80, pid 0) on processor 0 due to NonMaskable Interrupt @ 0x40c21ad0
[0]kdb&gt;

Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: fix compilation when KEXEC=n and KEXEC_FILE=y</title>
<updated>2019-12-15T20:05:38Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-12-15T19:10:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e16260c21f87b16a33ae8ecac9e8c79f3a8b89bd'/>
<id>urn:sha1:e16260c21f87b16a33ae8ecac9e8c79f3a8b89bd</id>
<content type='text'>
Fix compilation when the CONFIG_KEXEC_FILE=y and
CONFIG_KEXEC=n.

Reported-by: kbuild test robot &lt;lkp@intel.com&gt;
Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: add support for kexec_file_load() syscall</title>
<updated>2019-09-08T13:41:46Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-09-08T09:33:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1191cf4986b5e8008c615896e487dc35fe922acd'/>
<id>urn:sha1:1191cf4986b5e8008c615896e487dc35fe922acd</id>
<content type='text'>
Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: add kexec syscall support</title>
<updated>2019-09-08T13:37:04Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-09-08T09:33:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fc697dc0c26a5908d467454e49440862d7fe96d0'/>
<id>urn:sha1:fc697dc0c26a5908d467454e49440862d7fe96d0</id>
<content type='text'>
Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: add dynamic ftrace</title>
<updated>2019-06-08T10:56:29Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-06-05T20:32:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ca6366220ed285e29ee22f4cf5c68a0397cb005'/>
<id>urn:sha1:6ca6366220ed285e29ee22f4cf5c68a0397cb005</id>
<content type='text'>
This patch implements dynamic ftrace for PA-RISC. The required mcount
call sequences can get pretty long, so instead of patching the
whole call sequence out of the functions, we are using
-fpatchable-function-entry from gcc. This puts a configurable amount of
NOPS before/at the start of the function. Taking do_sys_open() as example,
which would look like this when the call is patched out:

1036b248:       08 00 02 40     nop
1036b24c:       08 00 02 40     nop
1036b250:       08 00 02 40     nop
1036b254:       08 00 02 40     nop

1036b258 &lt;do_sys_open&gt;:
1036b258:       08 00 02 40     nop
1036b25c:       08 03 02 41     copy r3,r1
1036b260:       6b c2 3f d9     stw rp,-14(sp)
1036b264:       08 1e 02 43     copy sp,r3
1036b268:       6f c1 01 00     stw,ma r1,80(sp)

When ftrace gets enabled for this function the kernel will patch these
NOPs to:

1036b248:       10 19 57 20     &lt;address of ftrace&gt;
1036b24c:       6f c1 00 80     stw,ma r1,40(sp)
1036b250:       48 21 3f d1     ldw -18(r1),r1
1036b254:       e8 20 c0 02     bv,n r0(r1)

1036b258 &lt;do_sys_open&gt;:
1036b258:       e8 3f 1f df     b,l,n .-c,r1
1036b25c:       08 03 02 41     copy r3,r1
1036b260:       6b c2 3f d9     stw rp,-14(sp)
1036b264:       08 1e 02 43     copy sp,r3
1036b268:       6f c1 01 00     stw,ma r1,80(sp)

So the first NOP in do_sys_open() will be patched to jump backwards into
some minimal trampoline code which pushes a stackframe, saves r1 which
holds the return address, loads the address of the real ftrace function,
and branches to that location. For 64 Bit things are getting a bit more
complicated (and longer) because we must make sure that the address of
ftrace location is 8 byte aligned, and the offset passed to ldd for
fetching the address is 8 byte aligned as well.

Note that gcc has a bug which misplaces the function label, and needs a
patch to make dynamic ftrace work. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90751 for details.

Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: Add static branch and JUMP_LABEL feature</title>
<updated>2019-05-05T22:10:03Z</updated>
<author>
<name>Helge Deller</name>
</author>
<published>2019-05-03T21:51:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=62217beb394e654bbd2bb87c533dadd2d8bf62c6'/>
<id>urn:sha1:62217beb394e654bbd2bb87c533dadd2d8bf62c6</id>
<content type='text'>
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: Implement kprobes</title>
<updated>2019-05-03T21:47:39Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-04-07T18:10:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8858ac8e9e9b1894f7bb218bc0035532371b8d7e'/>
<id>urn:sha1:8858ac8e9e9b1894f7bb218bc0035532371b8d7e</id>
<content type='text'>
Implement kprobes support for PA-RISC.

Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: add KGDB support</title>
<updated>2019-05-03T21:47:38Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-04-04T19:14:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eacbfce19d8b6dbd7958cbe01d65a21324cc2fad'/>
<id>urn:sha1:eacbfce19d8b6dbd7958cbe01d65a21324cc2fad</id>
<content type='text'>
This patch add KGDB support to PA-RISC. It also implements
single-stepping utilizing the recovery counter.

Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: add parisc code patching</title>
<updated>2019-05-03T21:47:38Z</updated>
<author>
<name>Sven Schnelle</name>
</author>
<published>2019-04-04T19:14:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=620a53d522ba007a79fffc444bd75e8d3775f5b8'/>
<id>urn:sha1:620a53d522ba007a79fffc444bd75e8d3775f5b8</id>
<content type='text'>
Instead of re-mapping the whole kernel text with RWX rights
add a patch_text() which can be used to replace instructions
in the kernel .text section. Based on the ARM implementation.

Signed-off-by: Sven Schnelle &lt;svens@stackframe.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: Split out alternative live patching code</title>
<updated>2018-12-10T06:47:50Z</updated>
<author>
<name>Helge Deller</name>
</author>
<published>2018-11-10T15:14:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8cc28269b9574103aae9088a02a20929ec75f983'/>
<id>urn:sha1:8cc28269b9574103aae9088a02a20929ec75f983</id>
<content type='text'>
Move the alternative implemenation coding to alternative.c and add code to
patch modules while loading.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
</feed>
