<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/s390/kernel/nmi.c, branch linux-4.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-12-14T15:33:41Z</updated>
<entry>
<title>s390/nmi: fix inline assembly constraints</title>
<updated>2016-12-14T15:33:41Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2016-12-13T11:42:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=86fa7087d348b6c8a159c77ea20e530ee1230c34'/>
<id>urn:sha1:86fa7087d348b6c8a159c77ea20e530ee1230c34</id>
<content type='text'>
Add missing memory clobbers / barriers or use the Q constraint where
possible to tell the compiler that the inline assemblies actually
access memory and not only pointers to memory.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: improve revalidation of fpu / vector registers</title>
<updated>2016-08-29T09:05:03Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2016-08-22T12:40:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8f149ea6e91534c3e0b4cfcd843323bd94273087'/>
<id>urn:sha1:8f149ea6e91534c3e0b4cfcd843323bd94273087</id>
<content type='text'>
The machine check handler will do one of two things if the floating-point
control, a floating point register or a vector register can not be
revalidated:
1) if the PSW indicates user mode the process is terminated
2) if the PSW indicates kernel mode the system is stopped

To unconditionally stop the system for 2) is incorrect.

There are three possible outcomes if the floating-point control, a
floating point register or a vector registers can not be revalidated:
1) The kernel is inside a kernel_fpu_begin/kernel_fpu_end block and
   needs the register. The system is stopped.
2) No active kernel_fpu_begin/kernel_fpu_end block and the CIF_CPU bit
   is not set. The user space process needs the register and is killed.
3) No active kernel_fpu_begin/kernel_fpu_end block and the CIF_FPU bit
   is set. Neither the kernel nor the user space process needs the
   lost register. Just revalidate it and continue.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/time: remove ETR support</title>
<updated>2016-06-13T13:58:21Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2016-05-31T13:06:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fd5ada04030cb584251c381cb70daa41e984ae82'/>
<id>urn:sha1:fd5ada04030cb584251c381cb70daa41e984ae82</id>
<content type='text'>
The External-Time-Reference (ETR) clock synchronization interface has
been superseded by Server-Time-Protocol (STP). Remove the outdated
ETR interface.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: reduce size of percpu variable</title>
<updated>2015-10-27T08:33:57Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-10-12T11:04:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=36324963a3006d2c416095d87d8272e4825c679b'/>
<id>urn:sha1:36324963a3006d2c416095d87d8272e4825c679b</id>
<content type='text'>
Change the flag fields within struct mcck_struct to simple bit fields
to reduce the size of the structure which is used as percpu variable.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: fix terminology</title>
<updated>2015-10-27T08:33:56Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-10-12T11:03:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=975be635d929e3cfdae149d6de055f31a17c92d7'/>
<id>urn:sha1:975be635d929e3cfdae149d6de055f31a17c92d7</id>
<content type='text'>
According to the architecture registers are validated and not
revalidated. So change comments and functions names to match.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: remove casts</title>
<updated>2015-10-27T08:33:55Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-10-12T11:00:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dc6e15556a9f21d640a62ae6de3cbfa68ec687a4'/>
<id>urn:sha1:dc6e15556a9f21d640a62ae6de3cbfa68ec687a4</id>
<content type='text'>
Remove all the casts to and from the machine check interruption code.
This patch changes struct mci to a union, which contains an anonymous
structure with the already known bits and in addition an unsigned
long field, which contains the raw machine check interruption code.

This allows to simply assign and decoce the interruption code value
without the need for all those casts we had all the time.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: remove pointless error strings</title>
<updated>2015-10-27T08:33:54Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-10-12T10:39:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3d68286a4304574c250ca3b0a5429d2901688f16'/>
<id>urn:sha1:3d68286a4304574c250ca3b0a5429d2901688f16</id>
<content type='text'>
s390_handle_damage() has character string parameter which was used as
a pointer to verbose error message. The hope was (a lot of years ago)
when analyzing dumps that register R2 would still contain the pointer
and therefore it would be rather easy to tell what went wrong.

However gcc optimizes the strings away since a long time. And even if
it wouldn't it is necessary to have a close look at the machine check
interruption code to tell what's wrong.

So remove the pointless error strings.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/fpu: split fpu-internal.h into fpu internals, api, and type headers</title>
<updated>2015-10-16T07:41:12Z</updated>
<author>
<name>Hendrik Brueckner</name>
</author>
<published>2015-10-06T10:25:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b0753902d42f5cb01c33f0dec47ba2aa7ecfbb3f'/>
<id>urn:sha1:b0753902d42f5cb01c33f0dec47ba2aa7ecfbb3f</id>
<content type='text'>
Split the API and FPU type definitions into separate header files
similar to "x86/fpu: Rename fpu-internal.h to fpu/internal.h" (78f7f1e54b).

The new header files and their meaning are:

asm/fpu/types.h:
	FPU related data types, needed for 'struct thread_struct' and
	'struct task_struct'.

asm/fpu/api.h:
	FPU related 'public' functions for other subsystems and device
	drivers.

asm/fpu/internal.h:
	FPU internal functions mainly used to convert
	FPU register contents in signal handling.

Signed-off-by: Hendrik Brueckner &lt;brueckner@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/etr,stp: fix possible deadlock on machine check</title>
<updated>2015-10-14T12:32:18Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-10-09T11:48:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=29b0a8250ba63beffba4fe3a42fa75dddf4bd06a'/>
<id>urn:sha1:29b0a8250ba63beffba4fe3a42fa75dddf4bd06a</id>
<content type='text'>
The first level machine check handler for etr and stp machine checks may
call queue_work() while in nmi context. This may deadlock e.g. if the
machine check happened when the interrupted context did hold a lock, that
also will be acquired by queue_work().
Therefore split etr and stp machine check handling into first and second
level handling. The second level handling will then issue the queue_work()
call in process context which avoids the potential deadlock.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nmi: initialize control register 0 earlier</title>
<updated>2015-08-19T08:40:38Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2015-08-17T06:09:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=24d05ff863e78544e8538a792e3234291cdd5650'/>
<id>urn:sha1:24d05ff863e78544e8538a792e3234291cdd5650</id>
<content type='text'>
Change machine_check_init() to an early_initcall(). This makes sure it will
be called before all other cpus are online and therfore saves us a lot of
pointless smp_call_function() calls.
The control register settings will be forwarded to the other cpus when they
will be brought online.

Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Reviewed-by: Hendrik Brueckner &lt;brueckner@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
</feed>
