<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/parisc/kernel, branch linux-3.11.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.11.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.11.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2013-11-13T03:08:09Z</updated>
<entry>
<title>parisc: Do not crash 64bit SMP kernels on machines with &gt;= 4GB RAM</title>
<updated>2013-11-13T03:08:09Z</updated>
<author>
<name>Helge Deller</name>
</author>
<published>2013-10-26T21:19:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9fefdfec714df1e1a2c82936f979fcd815a631b0'/>
<id>urn:sha1:9fefdfec714df1e1a2c82936f979fcd815a631b0</id>
<content type='text'>
commit 54e181e073fc1415e41917d725ebdbd7de956455 upstream.

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;
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 interruption handler to respect pagefault_disable()</title>
<updated>2013-10-18T17:54:55Z</updated>
<author>
<name>Helge Deller</name>
</author>
<published>2013-10-01T19:54:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=09e39ab45cf8f9affdbab2837a0db34f76f55723'/>
<id>urn:sha1:09e39ab45cf8f9affdbab2837a0db34f76f55723</id>
<content type='text'>
commit 59b33f148cc08fb33cbe823fca1e34f7f023765e upstream.

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;
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 interrupt routing for C8000 serial ports</title>
<updated>2013-07-31T21:42:32Z</updated>
<author>
<name>Thomas Bogendoerfer</name>
</author>
<published>2013-07-30T00:02:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dd5e6d6a3db09b16b7c222943977865eead88cc3'/>
<id>urn:sha1:dd5e6d6a3db09b16b7c222943977865eead88cc3</id>
<content type='text'>
We can't use dev-&gt;mod_index for selecting the interrupt routing entry,
because it's not an index into interrupt routing table. It will be even
wrong on a machine with 2 CPUs (4 cores). But all needed information is
contained in the PAT entries for the serial ports. mod[0] contains the
iosapic address and mod_info has some indications for the interrupt
input (at least it looks like it). This patch implements the searching
for the right iosapic and uses this interrupt input information.

Signed-off-by: Thomas Bogendoerfer &lt;tsbogend@alpha.franken.de&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: Remove arch/parisc/kernel/sys32.h header</title>
<updated>2013-07-31T21:42:21Z</updated>
<author>
<name>John David Anglin</name>
</author>
<published>2013-07-28T21:49:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5a0ce2dc218ea9a6e659dcc5a4827975cb13104f'/>
<id>urn:sha1:5a0ce2dc218ea9a6e659dcc5a4827975cb13104f</id>
<content type='text'>
The KERNEL_SYSCALL define is not used anymore so the header can be
removed.

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: Fix cache routines to ignore vma's with an invalid pfn</title>
<updated>2013-07-31T21:41:47Z</updated>
<author>
<name>John David Anglin</name>
</author>
<published>2013-07-23T16:27:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=50861f5a02dbf939c27d35a26c472885e2844188'/>
<id>urn:sha1:50861f5a02dbf939c27d35a26c472885e2844188</id>
<content type='text'>
The parisc architecture does not have a pte special bit. As a result,
special mappings are handled with the VM_PFNMAP and VM_MIXEDMAP flags.
VM_MIXEDMAP mappings may or may not have a "struct page" backing. When
pfn_valid() is false, there is no "struct page" backing. Otherwise, they
are treated as normal pages.

The FireGL driver uses the VM_MIXEDMAP without a backing "struct page".
This treatment caused a panic due to a TLB data miss in
update_mmu_cache. This appeared to be in the code generated for
page_address(). We were in fact using a very circular bit of code to
determine the physical address of the PFN in various cache routines.
This wasn't valid when there was no "struct page" backing.  The needed
address can in fact be determined simply from the PFN itself without
using the "struct page".

The attached patch updates update_mmu_cache(), flush_cache_mm(),
flush_cache_range() and flush_cache_page() to check pfn_valid() and to
directly compute the PFN physical and virtual addresses.

Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: delete __cpuinit usage from all users</title>
<updated>2013-07-14T23:36:51Z</updated>
<author>
<name>Paul Gortmaker</name>
</author>
<published>2013-06-17T19:43:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=60ffef065dd40b91f6f76af6c7510ddf23102f54'/>
<id>urn:sha1:60ffef065dd40b91f6f76af6c7510ddf23102f54</id>
<content type='text'>
The __cpuinit type of throwaway sections might have made sense
some time ago when RAM was more constrained, but now the savings
do not offset the cost and complications.  For example, the fix in
commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
is a good example of the nasty type of bugs that can be created
with improper use of the various __init prefixes.

After a discussion on LKML[1] it was decided that cpuinit should go
the way of devinit and be phased out.  Once all the users are gone,
we can then finally remove the macros themselves from linux/init.h.

This removes all the parisc uses of the __cpuinit macros.

[1] https://lkml.org/lkml/2013/5/20/589

Acked-by: James Bottomley &lt;James.Bottomley@HansenPartnership.com&gt;
Cc: Helge Deller &lt;deller@gmx.de&gt;
Cc: linux-parisc@vger.kernel.org
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>parisc: Ensure volatile space register %sr1 is not clobbered</title>
<updated>2013-07-09T20:09:22Z</updated>
<author>
<name>John David Anglin</name>
</author>
<published>2013-06-29T20:42:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e8d8fc219f9a0e63e7fb927881e6f4db8e7d34df'/>
<id>urn:sha1:e8d8fc219f9a0e63e7fb927881e6f4db8e7d34df</id>
<content type='text'>
I still see the occasional random segv on rp3440.  Looking at one of
these (a code 15), it appeared the problem must be with the cache
handling of anonymous pages.  Reviewing this, I noticed that the space
register %sr1 might be being clobbered when we flush an anonymous page.

Register %sr1 is used for TLB purges in a couple of places.  These
purges are needed on PA8800 and PA8900 processors to ensure cache
consistency of flushed cache lines.

The solution here is simply to move the %sr1 load into the TLB lock
region needed to ensure that one purge executes at a time on SMP
systems.  This was already the case for one use.  After a few days of
operation, I haven't had a random segv on my rp3440.

Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
<entry>
<title>parisc: more capabilities info in /proc/cpuinfo</title>
<updated>2013-07-09T20:09:17Z</updated>
<author>
<name>Helge Deller</name>
</author>
<published>2013-06-21T21:32:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=30a9f0b251285ba29f09a7134eee07a4c3aca639'/>
<id>urn:sha1:30a9f0b251285ba29f09a7134eee07a4c3aca639</id>
<content type='text'>
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
</content>
</entry>
<entry>
<title>Merge 3.10-rc7 into tty-next</title>
<updated>2013-06-24T22:17:53Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
</author>
<published>2013-06-24T22:17:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=805bf3daf361a501594f8b27b394a8d7372ebe3c'/>
<id>urn:sha1:805bf3daf361a501594f8b27b394a8d7372ebe3c</id>
<content type='text'>
We want the tty fixes in this branch as well.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>parisc: Use unshadowed index register for flush instructions in flush_dcache_page_asm and flush_icache_page_asm</title>
<updated>2013-06-18T18:29:10Z</updated>
<author>
<name>John David Anglin</name>
</author>
<published>2013-06-02T16:21:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d65ea48dc61ffdf6cd7f25b4c319bbd68015e018'/>
<id>urn:sha1:d65ea48dc61ffdf6cd7f25b4c319bbd68015e018</id>
<content type='text'>
The comment at the start of pacache.S states that the base and index
registers used for fdc,fic, and pdc instructions should not use shadowed
registers. Although this is probably unnecessary for tmpalias flushes,
there is also no reason not to comply.

Signed-off-by: John David Anglin &lt;dave.anglin@bell.net&gt;
Signed-off-by: Helge Deller &lt;deller@gmx.de&gt;
</content>
</entry>
</feed>
