<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/s390/kernel, branch v3.8.10</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch/s390/kernel?h=v3.8.10</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch/s390/kernel?h=v3.8.10'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-03-20T20:10:56Z</updated>
<entry>
<title>s390: critical section cleanup vs. machine checks</title>
<updated>2013-03-20T20:10:56Z</updated>
<author>
<name>Martin Schwidefsky</name>
<email>schwidefsky@de.ibm.com</email>
</author>
<published>2013-02-28T15:28:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=49f3b963417563122962c47d359349a2e5b497a3'/>
<id>urn:sha1:49f3b963417563122962c47d359349a2e5b497a3</id>
<content type='text'>
commit 6551fbdfd8b85d1ab5822ac98abb4fb449bcfae0 upstream.

The current machine check code uses the registers stored by the machine
in the lowcore at __LC_GPREGS_SAVE_AREA as the registers of the interrupted
context. The registers 0-7 of a user process can get clobbered if a machine
checks interrupts the execution of a critical section in entry[64].S.

The reason is that the critical section cleanup code may need to modify
the PSW and the registers for the previous context to get to the end of a
critical section. If registers 0-7 have to be replaced the relevant copy
will be in the registers, which invalidates the copy in the lowcore. The
machine check handler needs to explicitly store registers 0-7 to the stack.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>s390/timer: avoid overflow when programming clock comparator</title>
<updated>2013-01-31T13:01:52Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-29T08:16:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d911e03d097bdc01363df5d81c43f69432eb785c'/>
<id>urn:sha1:d911e03d097bdc01363df5d81c43f69432eb785c</id>
<content type='text'>
Since ed4f209 "s390/time: fix sched_clock() overflow" a new helper function
is used to avoid overflows when converting TOD format values to nanosecond
values.
The kvm interrupt code formerly however only worked by accident because of
an overflow. It tried to program a timer that would expire in more than ~29
years. Because of the old TOD-to-nanoseconds overflow bug the real expiry
value however was much smaller, but now it isn't anymore.
This however triggers yet another bug in the function that programs the clock
comparator s390_next_ktime(): if the absolute "expires" value is after 2042
this will result in an overflow and the programmed value is lower than the
current TOD value which immediatly triggers a clock comparator (= timer)
interrupt.
Since the timer isn't expired it will be programmed immediately again and so
on... the result is a dead system.
To fix this simply program the maximum possible value if an overflow is
detected.

Reported-by: Christian Borntraeger &lt;borntraeger@de.ibm.com&gt;
Tested-by: Christian Borntraeger &lt;borntraeger@de.ibm.com&gt;
Cc: stable@vger.kernel.org # v3.3+
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/time: fix sched_clock() overflow</title>
<updated>2013-01-16T14:57:52Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-14T15:55:55Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ed4f20943cd4c7b55105c04daedf8d63ab6d499c'/>
<id>urn:sha1:ed4f20943cd4c7b55105c04daedf8d63ab6d499c</id>
<content type='text'>
Converting a 64 Bit TOD format value to nanoseconds means that the value
must be divided by 4.096. In order to achieve that we multiply with 125
and divide by 512.
When used within sched_clock() this triggers an overflow after appr.
417 days. Resulting in a sched_clock() return value that is much smaller
than previously and therefore may cause all sort of weird things in
subsystems that rely on a monotonic sched_clock() behaviour.

To fix this implement a tod_to_ns() helper function which converts TOD
values without overflow and call this function from both places that
open coded the conversion: sched_clock() and kvm_s390_handle_wait().

Cc: stable@kernel.org
Reviewed-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
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/topology: export cpu_topology</title>
<updated>2013-01-08T09:57:10Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-07T12:58:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=80020fbd65c17d3d9e7d80cfd3fa4c57ae7ff765'/>
<id>urn:sha1:80020fbd65c17d3d9e7d80cfd3fa4c57ae7ff765</id>
<content type='text'>
Export cpu_topology symbol, so it's available for modules.

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/pm: export pm_power_off</title>
<updated>2013-01-08T09:57:09Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-07T12:56:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0872922f5dc24783101a2dd111ee406ea965a094'/>
<id>urn:sha1:0872922f5dc24783101a2dd111ee406ea965a094</id>
<content type='text'>
Export pm_power_off symbol. Needed by at least one of the new device
drivers that come with CONFIG_PCI.
And all other architectures export that symbol as well.

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/irq: count cpu restart events</title>
<updated>2013-01-08T09:57:07Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-02T15:54:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=93f3b2ee0abff5438e74cc90cf816429248cc8eb'/>
<id>urn:sha1:93f3b2ee0abff5438e74cc90cf816429248cc8eb</id>
<content type='text'>
Count CPU Restart events and make them visible via /proc/interrupts.
Every CPU hotplug (online) event will increase the per cpu counter.

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/irq: remove split irq fields from /proc/stat</title>
<updated>2013-01-08T09:57:07Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-02T14:18:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=420f42ecf48a926ba775ec7d7294425f004b6ade'/>
<id>urn:sha1:420f42ecf48a926ba775ec7d7294425f004b6ade</id>
<content type='text'>
Now that irq sum accounting for /proc/stat's "intr" line works again we
have the oddity that the sum field (first field) contains only the sum
of the second (external irqs) and third field (I/O interrupts).
The reason for that is that these two fields are already sums of all other
fields. So if we would sum up everything we would count every interrupt
twice.
This is broken since the split interrupt accounting was merged two years
ago: 052ff461c8427629aee887ccc27478fc7373237c "[S390] irq: have detailed
statistics for interrupt types".
To fix this remove the split interrupt fields from /proc/stat's "intr"
line again and only have them in /proc/interrupts.

This restores the old behaviour, seems to be the only sane fix and mimics
a behaviour from other architectures where /proc/interrupts also contains
more than /proc/stat's "intr" line does.

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/irq: enable irq sum accounting for /proc/stat again</title>
<updated>2013-01-08T09:57:06Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2013-01-02T13:01:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=add9bde216fefe1b65b41f7c0948cef48aa98c14'/>
<id>urn:sha1:add9bde216fefe1b65b41f7c0948cef48aa98c14</id>
<content type='text'>
For more than two years, since f2c66cd8eeddedb440f33bc0f5cec1ed7ae376cb
"/proc/stat: scalability of irq num per cpu" the output of /proc/stat is
broken.
The first field in the "intr" line should contain the sum of all interrupts,
however since the above mentioned change it is always zero.

The reason for that is that a per cpu irq sum variable had been introduced
which got incremented when calling kstat_incr_irqs_this_cpu(). However
on s390 we directly incremented only the per cpu per irq counter by accessing
the array element via kstat_cpu(smp_processor_id()).irqs[...].
So fix this and use the kstat_incr_irqs_this_cpu() wrapper which increments
both: the per cpu per irq counter and the per cpu irq sum counter.

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/syscalls: wire up finit_module syscall</title>
<updated>2013-01-08T09:57:05Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2012-12-27T12:03:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1427add02c90d60692e12ad88ade1e86c7444b38'/>
<id>urn:sha1:1427add02c90d60692e12ad88ade1e86c7444b38</id>
<content type='text'>
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/smp: fix section mismatch for smp_add_present_cpu()</title>
<updated>2013-01-08T09:57:04Z</updated>
<author>
<name>Heiko Carstens</name>
<email>heiko.carstens@de.ibm.com</email>
</author>
<published>2012-12-27T13:03:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=eba61970b68f9f7680d6c1c269633dcd005b3bd2'/>
<id>urn:sha1:eba61970b68f9f7680d6c1c269633dcd005b3bd2</id>
<content type='text'>
Fixes this section mismatch:

WARNING: vmlinux.o(.text+0x145e4): Section mismatch in reference from the function
   smp_add_present_cpu() to the function .cpuinit.text:register_cpu()
The function smp_add_present_cpu() references
the function __cpuinit register_cpu().
This is often because smp_add_present_cpu lacks a __cpuinit
annotation or the annotation of register_cpu is wrong.

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>
