<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/parisc/kernel, branch v3.12.20</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch/parisc/kernel?h=v3.12.20</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch/parisc/kernel?h=v3.12.20'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-05-05T11:39:49Z</updated>
<entry>
<title>parisc: fix epoll_pwait syscall on compat kernel</title>
<updated>2014-05-05T11:39:49Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2014-04-12T22:03:55Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b7b78ca82179e609592c74afa721f5aca0269625'/>
<id>urn:sha1:b7b78ca82179e609592c74afa721f5aca0269625</id>
<content type='text'>
commit ab3e55b119c9653b19ea4edffb86f04db867ac98 upstream.

This bug was detected with the libio-epoll-perl debian package where the
test case IO-Ppoll-compat.t failed.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
CC: stable@kernel.org   # 3.0+
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>parisc: fix cache-flushing</title>
<updated>2014-02-06T19:22:21Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2014-01-31T20:33:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=62137ca3bf39188bf19a7ceade570ba4bec6761c'/>
<id>urn:sha1:62137ca3bf39188bf19a7ceade570ba4bec6761c</id>
<content type='text'>
commit 57737c49dd72c96cfbcd4f66559f3ffc399aeb4f upstream.

This commit:
f8dae00684d678afa13041ef170cecfd1297ed40: parisc: Ensure full cache coherency for kmap/kunmap
caused negative caching side-effects, e.g. hanging processes with expect and
too many inequivalent alias messages from flush_dcache_page() on Debian 5 systems.

This patch now partly reverts it and has been in production use on our debian buildd
makeservers since a week without any major problems.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>parisc: Ensure full cache coherency for kmap/kunmap</title>
<updated>2014-01-15T23:31:41Z</updated>
<author>
<name>John David Anglin</name>
<email>dave.anglin@bell.net</email>
</author>
<published>2014-01-06T02:25:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f61151979964da8f08e28c099b85ecb0018be6ef'/>
<id>urn:sha1:f61151979964da8f08e28c099b85ecb0018be6ef</id>
<content type='text'>
commit f8dae00684d678afa13041ef170cecfd1297ed40 upstream.

Helge Deller noted a few weeks ago problems with the AIO support on
parisc. This change is the result of numerous iterations on how best to
deal with this problem.

The solution adopted here is to provide full cache coherency in a
uniform manner on all parisc systems. This involves calling
flush_dcache_page() on kmap operations and flush_kernel_dcache_page() on
kunmap operations. As a result, the copy_user_page() and
clear_user_page() functions can be removed and the overall code is
simpler.

The change ensures that both userspace and kernel aliases to a mapped
page are invalidated and flushed. This is necessary for the correct
operation of PA8800 and PA8900 based systems which do not support
inequivalent aliases.

With this change, I have observed no cache related issues on c8000 and
rp3440. It is now possible for example to do kernel builds with "-j64"
on four way systems.

On systems using XFS file systems, the patch recently posted by Mikulas
Patocka to "fix crash using XFS on loopback" is needed to avoid a hang
caused by an uninitialized lock passed to flush_dcache_page() in the
page struct.

Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>parisc: fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address</title>
<updated>2013-12-12T06:37:54Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2013-11-20T22:07:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=527c106d547866865ec9368f913b25f530f9f2a5'/>
<id>urn:sha1:527c106d547866865ec9368f913b25f530f9f2a5</id>
<content type='text'>
commit 0576da2c08e3d332f1b0653030d28ab804585ab6 upstream.

locale-gen on Debian showed a strange problem on parisc:
mmap2(NULL, 536870912, PROT_NONE, MAP_SHARED, 3, 0) = 0x42a54000
mmap2(0x42a54000, 103860, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3, 0) = -1 EINVAL (Invalid argument)

Basically it was just trying to re-mmap() a file at the same address
which it was given by a previous mmap() call. But this remapping failed
with EINVAL.

The problem is, that when MAP_FIXED and MAP_SHARED flags were used, we didn't
included the mapping-based offset when we verified the alignment of the given
fixed address against the offset which we calculated it in the previous call.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>parisc: Do not crash 64bit SMP kernels on machines with &gt;= 4GB RAM</title>
<updated>2013-10-27T14:58:44Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2013-10-26T21:19:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=54e181e073fc1415e41917d725ebdbd7de956455'/>
<id>urn:sha1:54e181e073fc1415e41917d725ebdbd7de956455</id>
<content type='text'>
Since the beginning of the parisc-linux port, sometimes 64bit SMP kernels were
not able to bring up other CPUs than the monarch CPU and instead crashed the
kernel.  The reason was unclear, esp. since it involved various machines (e.g.
J5600, J6750 and SuperDome). Testing showed, that those crashes didn't happened
when less than 4GB were installed, or if a 32bit Linux kernel was booted.

In the end, the fix for those SMP problems is trivial:
During the early phase of the initialization of the CPUs, including the monarch
CPU, the PDC_PSW firmware function to enable WIDE (=64bit) mode is called.
It's documented that this firmware function may clobber various registers, and
one one of those possibly clobbered registers is %cr30 which holds the task
thread info pointer.

Now, if %cr30 would always have been clobbered, then this bug would have been
detected much earlier. But lots of testing finally showed, that - at least for
%cr30 - on some machines only the upper 32bits of the 64bit register suddenly
turned zero after the firmware call.

So, after finding the root cause, the explanation for the various crashes
became clear:
- On 32bit SMP Linux kernels all upper 32bit were zero, so we didn't faced this
  problem.
- Monarch CPUs in 64bit mode always booted sucessfully, because the inital task
  thread info pointer was below 4GB.
- Secondary CPUs booted sucessfully on machines with less than 4GB RAM because
  the upper 32bit were zero anyay.
- Secondary CPus failed to boot if we had more than 4GB RAM and the task thread
  info pointer was located above the 4GB boundary.

Finally, the patch to fix this problem is trivial by saving the %cr30 register
before the firmware call and restoring it afterwards.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 2.6.12+
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>Revert "parisc: Export flush_cache_page() (needed by lustre)"</title>
<updated>2013-10-19T19:37:40Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2013-10-14T19:35:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a446e72bc15c7bfd2c953e56064ace3566c79b0e'/>
<id>urn:sha1:a446e72bc15c7bfd2c953e56064ace3566c79b0e</id>
<content type='text'>
This reverts commit 320c90be7ba1c371e882edff57272a89b213d136.

Christoph Hellwig &lt;hch@infradead.org&gt; commented:
This one shouldn't go in - Geert sent it a bit prematurely, as Lustre
shouldn't use it just to reimplement core VM functionality (which it
shouldn't use either, but that's a separate story).

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: fix interruption handler to respect pagefault_disable()</title>
<updated>2013-10-13T15:45:20Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2013-10-01T19:54:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=59b33f148cc08fb33cbe823fca1e34f7f023765e'/>
<id>urn:sha1:59b33f148cc08fb33cbe823fca1e34f7f023765e</id>
<content type='text'>
Running an "echo t &gt; /proc/sysrq-trigger" crashes the parisc kernel.  The
problem is, that in print_worker_info() we try to read the workqueue info via
the probe_kernel_read() functions which use pagefault_disable() to avoid
crashes like this:
    probe_kernel_read(&amp;pwq, &amp;worker-&gt;current_pwq, sizeof(pwq));
    probe_kernel_read(&amp;wq, &amp;pwq-&gt;wq, sizeof(wq));
    probe_kernel_read(name, wq-&gt;name, sizeof(name) - 1);

The problem here is, that the first probe_kernel_read(&amp;pwq) might return zero
in pwq and as such the following probe_kernel_reads() try to access contents of
the page zero which is read protected and generate a kernel segfault.

With this patch we fix the interruption handler to call parisc_terminate()
directly only if pagefault_disable() was not called (in which case
preempt_count()==0).  Otherwise we hand over to the pagefault handler which
will try to look up the faulting address in the fixup tables.

Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.0+
Signed-off-by: John David Anglin  &lt;dave.anglin@bell.net&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: remove unused syscall_ipi() function.</title>
<updated>2013-10-13T15:44:39Z</updated>
<author>
<name>Helge Deller</name>
<email>deller@gmx.de</email>
</author>
<published>2013-10-09T21:10:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ec7c241953d14af097d941de56348c55e4e9ac5d'/>
<id>urn:sha1:ec7c241953d14af097d941de56348c55e4e9ac5d</id>
<content type='text'>
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: kill SMP single function call interrupt</title>
<updated>2013-10-13T15:44:29Z</updated>
<author>
<name>Jiang Liu</name>
<email>jiang.liu@huawei.com</email>
</author>
<published>2013-09-11T16:07:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=528d8eb20a3053d72cb0cea486418aa602d9e1f1'/>
<id>urn:sha1:528d8eb20a3053d72cb0cea486418aa602d9e1f1</id>
<content type='text'>
Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic
similar to smp_call_function_single()" has unified the way to handle
single and multiple cross-CPU function calls. Now only one interrupt
is needed for architecture specific code to support generic SMP function
call interfaces, so kill the redundant single function call interrupt.

Signed-off-by: Jiang Liu &lt;jiang.liu@huawei.com&gt;
Cc: Jiang Liu &lt;liuj97@gmail.com&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: Export flush_cache_page() (needed by lustre)</title>
<updated>2013-10-13T15:44:17Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2013-09-05T09:33:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=320c90be7ba1c371e882edff57272a89b213d136'/>
<id>urn:sha1:320c90be7ba1c371e882edff57272a89b213d136</id>
<content type='text'>
ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
</feed>
