<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/s390/kernel/smp.c, branch linux-3.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.19.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.19.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-10-27T12:27:27Z</updated>
<entry>
<title>s390/ftrace,kprobes: allow to patch first instruction</title>
<updated>2014-10-27T12:27:27Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2014-10-15T10:17:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c933146a5e41e42ea3eb4f34fa02e201da3f068e'/>
<id>urn:sha1:c933146a5e41e42ea3eb4f34fa02e201da3f068e</id>
<content type='text'>
If the function tracer is enabled, allow to set kprobes on the first
instruction of a function (which is the function trace caller):

If no kprobe is set handling of enabling and disabling function tracing
of a function simply patches the first instruction. Either it is a nop
(right now it's an unconditional branch, which skips the mcount block),
or it's a branch to the ftrace_caller() function.

If a kprobe is being placed on a function tracer calling instruction
we encode if we actually have a nop or branch in the remaining bytes
after the breakpoint instruction (illegal opcode).
This is possible, since the size of the instruction used for the nop
and branch is six bytes, while the size of the breakpoint is only
two bytes.
Therefore the first two bytes contain the illegal opcode and the last
four bytes contain either "0" for nop or "1" for branch. The kprobes
code will then execute/simulate the correct instruction.

Instruction patching for kprobes and function tracer is always done
with stop_machine(). Therefore we don't have any races where an
instruction is patched concurrently on a different cpu.
Besides that also the program check handler which executes the function
trace caller instruction won't be executed concurrently to any
stop_machine() execution.

This allows to keep full fault based kprobes handling which generates
correct pt_regs contents automatically.

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/kdump: add support for vector extension</title>
<updated>2014-10-09T07:14:16Z</updated>
<author>
<name>Michael Holzheu</name>
</author>
<published>2014-10-06T15:57:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a62bc0739253939d6fce40d51d92412252a9bb55'/>
<id>urn:sha1:a62bc0739253939d6fce40d51d92412252a9bb55</id>
<content type='text'>
With this patch for kdump the s390 vector registers are stored into the
prepared save areas in the old kernel and into the REGSET_VX_LOW and
REGSET_VX_HIGH ELF notes for /proc/vmcore in the new kernel.

The NT_S390_VXRS_LOW note contains the lower halves of the first 16 vector
registers 0-15. The higher halves are stored in the floating point register
ELF note.  The NT_S390_VXRS_HIGH contains the full vector registers 16-31.

The kernel provides a save area for storing vector register in case of
machine checks. A pointer to this save are is stored in the CPU lowcore
at offset 0x11b0. This save area is also used to save the registers for
kdump. In case of a dumped crashed kdump those areas are used to extract
the registers of the production system.

The vector registers for remote CPUs are stored using the "store additional
status at address" SIGP. For the dump CPU the vector registers are stored
with the VSTM instruction.

With this patch also zfcpdump stores the vector registers.

Reviewed-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Michael Holzheu &lt;holzheu@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390: add support for vector extension</title>
<updated>2014-10-09T07:14:13Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2014-10-06T15:53:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8070361799ae1e3f4ef347bd10f0a508ac10acfb'/>
<id>urn:sha1:8070361799ae1e3f4ef347bd10f0a508ac10acfb</id>
<content type='text'>
The vector extension introduces 32 128-bit vector registers and a set of
instruction to operate on the vector registers.

The kernel can control the use of vector registers for the problem state
program with a bit in control register 0. Once enabled for a process the
kernel needs to retain the content of the vector registers on context
switch. The signal frame is extended to include the vector registers.
Two new register sets NT_S390_VXRS_LOW and NT_S390_VXRS_HIGH are added
to the regset interface for the debugger and core dumps.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/idle: consolidate idle functions and definitions</title>
<updated>2014-10-09T07:14:03Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2014-10-01T08:57:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b5f87f15e20092c060f465b283b07a76af7f2e5f'/>
<id>urn:sha1:b5f87f15e20092c060f465b283b07a76af7f2e5f</id>
<content type='text'>
Move the C functions and definitions related to the idle state handling
to arch/s390/include/asm/idle.h and arch/s390/kernel/idle.c. The function
s390_get_idle_time is renamed to arch_cpu_idle_time and vtime_stop_cpu to
enabled_wait.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/nohz: use a per-cpu flag for arch_needs_cpu</title>
<updated>2014-10-09T07:14:02Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2014-09-30T15:37:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fe0f49768d807a8fe6336b097feb8c4441951710'/>
<id>urn:sha1:fe0f49768d807a8fe6336b097feb8c4441951710</id>
<content type='text'>
Move the nohz_delay bit from the s390_idle data structure to the
per-cpu flags. Clear the nohz delay flag in __cpu_disable and
remove the cpu hotplug notifier that used to do this.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/rwlock: use directed yield for write-locked rwlocks</title>
<updated>2014-09-25T08:52:05Z</updated>
<author>
<name>Martin Schwidefsky</name>
</author>
<published>2014-09-19T12:29:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d59b93da5e572703e1a7311c13dd3472a4e56e30'/>
<id>urn:sha1:d59b93da5e572703e1a7311c13dd3472a4e56e30</id>
<content type='text'>
Add an owner field to the arch_rwlock_t to be able to pass the timeslice
of a virtual CPU with diagnose 0x9c to the lock owner in case the rwlock
is write-locked. The undirected yield in case the rwlock is acquired
writable but the lock is read-locked is removed.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/smp: Avoid busy loop after halt and "begin" on z/VM</title>
<updated>2014-05-20T06:58:45Z</updated>
<author>
<name>Michael Holzheu</name>
</author>
<published>2014-04-15T09:25:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f4192bf2dc5ae3b24ffb004e771397e737ef01e0'/>
<id>urn:sha1:f4192bf2dc5ae3b24ffb004e771397e737ef01e0</id>
<content type='text'>
Currently the smp_stop_cpu() function for SMP kernels enters a busy
loop when "begin" is entered on the z/VM console after Linux is halted.
To avoid this behavior, use the non-SMP variant of smp_stop_cpu()
which stops the CPU again after "begin" is entered. As a side
effect we now have consistent behavior for SMP and non-SMP Linux.

Signed-off-by: Michael Holzheu &lt;holzheu@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/dump: Remove CONFIG_ZFCPDUMP</title>
<updated>2014-05-20T06:58:43Z</updated>
<author>
<name>Michael Holzheu</name>
</author>
<published>2014-04-14T08:38:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bf28a5970de3a349ec05cea45ca5272404b6609f'/>
<id>urn:sha1:bf28a5970de3a349ec05cea45ca5272404b6609f</id>
<content type='text'>
Currently there are two s390 kernel dump config options "CONFIG_ZFCPDUMP"
and "CONFIG_CRASH_DUMP". In order to keep things simple and because the
"CONFIG_ZFCPDUMP" option already has a dependency to "CONFIG_CRASH_DUMP"
remove the CONFIG_ZFCPDUMP option.

Signed-off-by: Michael Holzheu &lt;holzheu@linux.vnet.ibm.com&gt;
Reviewed-by: Eric Farman &lt;farman@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/spinlock: optimize spinlock code sequence</title>
<updated>2014-05-20T06:58:42Z</updated>
<author>
<name>Philipp Hachtmann</name>
</author>
<published>2014-04-07T16:25:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6c8cd5bbda7e6be166cf2e2dd4be5890193e17ac'/>
<id>urn:sha1:6c8cd5bbda7e6be166cf2e2dd4be5890193e17ac</id>
<content type='text'>
Use lowcore constant to improve the code generated for spinlocks.

[ Martin Schwidefsky: patch breakdown and code beautification ]

Signed-off-by: Philipp Hachtmann &lt;phacht@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/smp: fix smp_stop_cpu() for !CONFIG_SMP</title>
<updated>2014-04-09T08:19:12Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2014-04-04T09:23:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e7c46c66dbd1727f7de52f54c4acefb692b24f37'/>
<id>urn:sha1:e7c46c66dbd1727f7de52f54c4acefb692b24f37</id>
<content type='text'>
smp_stop_cpu() should stop the current cpu even for !CONFIG_SMP.
Otherwise machine_halt() will return and and the machine generates a
panic instread of simply stopping the current cpu:

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000

CPU: 0 PID: 1 Comm: systemd-shutdow Not tainted 3.14.0-01527-g2b6ef16a6bc5 #10
[...]
Call Trace:
([&lt;0000000000110db0&gt;] show_trace+0xf8/0x158)
 [&lt;0000000000110e7a&gt;] show_stack+0x6a/0xe8
 [&lt;000000000074dba8&gt;] panic+0xe4/0x268
 [&lt;0000000000140570&gt;] do_exit+0xa88/0xb2c
 [&lt;000000000016e12c&gt;] SyS_reboot+0x1f0/0x234
 [&lt;000000000075da70&gt;] sysc_nr_ok+0x22/0x28
 [&lt;000000007d5a09b4&gt;] 0x7d5a09b4

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>
</feed>
