<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/s390/kernel/early.c, branch linux-6.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2024-02-16T13:30:14Z</updated>
<entry>
<title>s390/fpu: move, rename, and merge header files</title>
<updated>2024-02-16T13:30:14Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2024-02-03T10:45:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fd2527f20915d041e838b6e4a08122dbc73c7abc'/>
<id>urn:sha1:fd2527f20915d041e838b6e4a08122dbc73c7abc</id>
<content type='text'>
Move, rename, and merge the fpu and vx header files. This way fpu header
files have a consistent naming scheme (fpu*.h).

Also get rid of the fpu subdirectory and move header files to asm
directory, so that all fpu and vx header files can be found at the same
location.

Merge internal.h header file into other header files, since the internal
helpers are used at many locations. so those helper functions are really
not internal.

Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/acrs: cleanup access register handling</title>
<updated>2024-02-12T14:03:33Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2024-02-05T20:32:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=304103736ba75be70991cd6336c28121d7bf14f5'/>
<id>urn:sha1:304103736ba75be70991cd6336c28121d7bf14f5</id>
<content type='text'>
save_access_regs() and restore_access_regs() are only available by
including switch_to.h. This is done by a couple of C files, which have
nothing to do with switch_to(), but only need these functions.

Move both functions to a new header file and improve the implementation:

- Get rid of typedef

- Add memory access instrumentation support

- Use long displacement instructions lamy/stamy instead of lam/stam - all
  current users end up with better code because of this

Reviewed-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/fpu: get rid of MACHINE_HAS_VX</title>
<updated>2023-12-11T13:33:07Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-12-01T14:42:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=18564756ab328dfdc84d09b8150f5e4d2bb96753'/>
<id>urn:sha1:18564756ab328dfdc84d09b8150f5e4d2bb96753</id>
<content type='text'>
Get rid of MACHINE_HAS_VX and replace it with cpu_has_vx() which is a
short readable wrapper for "test_facility(129)".

Facility bit 129 is set if the vector facility is present. test_facility()
returns also true for all bits which are set in the architecture level set
of the cpu that the kernel is compiled for. This means that
test_facility(129) is a compile time constant which returns true for z13
and later, since the vector facility bit is part of the z13 kernel ALS.

In result the compiled code will have less runtime checks, and less code.

Reviewed-by: Hendrik Brueckner &lt;brueckner@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/fpu: remove "novx" option</title>
<updated>2023-12-11T13:33:06Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-12-01T14:42:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=af6ed37eb0bebc5661f653ed3704d606c2e8ec94'/>
<id>urn:sha1:af6ed37eb0bebc5661f653ed3704d606c2e8ec94</id>
<content type='text'>
Remove the "novx" kernel command line option: the vector code runs
without any problems since many years.

Reviewed-by: Hendrik Brueckner &lt;brueckner@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/cmma: move parsing of cmma kernel parameter to early boot code</title>
<updated>2023-11-05T21:34:57Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-10-27T12:12:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=468a3bc2b7b955a7cf97d47c6022bf1ae4a538a3'/>
<id>urn:sha1:468a3bc2b7b955a7cf97d47c6022bf1ae4a538a3</id>
<content type='text'>
The "cmma=" kernel command line parameter needs to be parsed early for
upcoming changes. Therefore move the parsing code.

Note that EX_TABLE handling of cmma_test_essa() needs to be open-coded,
since the early boot code doesn't have infrastructure for handling expected
exceptions.

Reviewed-by: Claudio Imbrenda &lt;imbrenda@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390: use control register bit defines</title>
<updated>2023-09-19T11:26:57Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-09-11T19:40:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=99441a38c391b1115e405d1f47ede237fca37f1b'/>
<id>urn:sha1:99441a38c391b1115e405d1f47ede237fca37f1b</id>
<content type='text'>
Use control register bit defines instead of plain numbers where
possible.

Reviewed-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/early: use system_ctl_set_bit() instead of local_ctl_set_bit()</title>
<updated>2023-09-19T11:26:57Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-09-11T19:40:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=103dde702d698c2e17529550650407a386711cdf'/>
<id>urn:sha1:103dde702d698c2e17529550650407a386711cdf</id>
<content type='text'>
Use system_ctl_set_bit() instead of local_ctl_set_bit() to reflect
that the control register changes are supposed to be global. This
change is just for documentation purposes, since it still results only
in local control register contents being changed.

Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Reviewed-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/ctlreg: add local and system prefix to some functions</title>
<updated>2023-09-19T11:26:56Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-09-11T19:39:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d5e98f8d6b11dd0e61323ece3b7ccceea55c281'/>
<id>urn:sha1:8d5e98f8d6b11dd0e61323ece3b7ccceea55c281</id>
<content type='text'>
Add local and system prefix to some functions to clarify they change
control register contents on either the local CPU or the on all CPUs.

This results in the following API:

Two defines which load and save multiple control registers.
The defines correlate with the following C prototypes:

void __local_ctl_load(unsigned long *, unsigned int cr_low, unsigned int cr_high);
void __local_ctl_store(unsigned long *, unsigned int cr_low, unsigned int cr_high);

Two functions which locally set or clear one bit for a specified
control register:

void local_ctl_set_bit(unsigned int cr, unsigned int bit);
void local_ctl_clear_bit(unsigned int cr, unsigned int bit);

Two functions which set or clear one bit for a specified control
register on all CPUs:

void system_ctl_set_bit(unsigned int cr, unsigned int bit);
void system_ctl_clear_bit(unsigend int cr, unsigned int bit);

Reviewed-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/smp,mcck: fix early IPI handling</title>
<updated>2023-09-19T11:26:55Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-09-05T13:49:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4a1725281fc5b0009944b1c0e1d2c1dc311a09ec'/>
<id>urn:sha1:4a1725281fc5b0009944b1c0e1d2c1dc311a09ec</id>
<content type='text'>
Both the external call as well as the emergency signal submask bits in
control register 0 are set before any interrupt handler is registered.

Change the order and first register the interrupt handler and only then
enable the interrupts by setting the corresponding bits in control
register 0.

This prevents that the second part of the machine check handler for
early machine check handling is not executed: the machine check handler
sends an IPI to the CPU it runs on. If the corresponding interrupts are
enabled, but no interrupt handler is present, the interrupt is ignored.

Reviewed-by: Sven Schnelle &lt;svens@linux.ibm.com&gt;
Acked-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
Signed-off-by: Vasily Gorbik &lt;gor@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/mm: simplify kernel mapping setup</title>
<updated>2023-08-30T09:03:27Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2023-08-25T12:29:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c0f1d478121131c2a97cab24148bf7ebb7ed3434'/>
<id>urn:sha1:c0f1d478121131c2a97cab24148bf7ebb7ed3434</id>
<content type='text'>
The kernel mapping is setup in two stages: in the decompressor map all
pages with RWX permissions, and within the kernel change all mappings to
their final permissions, where most of the mappings are changed from RWX to
RWNX.

Change this and map all pages RWNX from the beginning, however without
enabling noexec via control register modification. This means that
effectively all pages are used with RWX permissions like before. When the
final permissions have been applied to the kernel mapping enable noexec via
control register modification.

This allows to remove quite a bit of non-obvious code.

Reviewed-by: Alexander Gordeev &lt;agordeev@linux.ibm.com&gt;
Signed-off-by: Heiko Carstens &lt;hca@linux.ibm.com&gt;
</content>
</entry>
</feed>
