From: Helge Deller <deller@gmx.de>
To: Mikulas Patocka <mpatocka@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-parisc@vger.kernel.org,
James Bottomley <James.Bottomley@HansenPartnership.com>,
John David Anglin <dave.anglin@bell.net>
Subject: Re: [GIT PULL] parisc huge page support for v4.4
Date: Tue, 24 Nov 2015 18:00:20 +0100 [thread overview]
Message-ID: <20151124170020.GA13198@p100.box> (raw)
In-Reply-To: <alpine.LRH.2.02.1511241136440.14442@file01.intranet.prod.int.rdu2.redhat.com>
* Mikulas Patocka <mpatocka@redhat.com>:
>
>
> On Tue, 24 Nov 2015, Helge Deller wrote:
>
> > > Hi
> > >
> > > Since the kernel 4.4-rc2 I'm getting frequent boot failures on PA-RISC.
> > > When I revert this patchset, the crashes are gone.
> >
> > > [ 3.296666] CPU(s): 4 out of 4 PA8900 (Shortfin) at 1000.000000 MHz online
> >
> > Hi Mikulas,
> >
> > Yes, I've seen this as well.
> > It affects only the PA8900 CPUs, while all PA8500-PA8700 machines seem to work fine.
> > I do have a temporary 3-line patch to avoid the crashes which I'll push to my tree shortly.
> > I'm still investigating why it only affects the PA8900 CPUs, but I assume
> > it's related to the cache aliasing of those CPUs.
> > I'll keep you updated.
> >
> > Helge
>
> The PA-RISC specification doesn't allow aliasing on non-equaivalent
> addresses. Can the kernel map a piece of kernel data to other virtual
> address? If yes, we can't use big pages to map kernel data.
Can you please try the two patches below?
The first one disables mapping kernel text/data on huge pages on
PA8800/PA8900 CPUs. Patch works for me on my Mako PA8800.
Independend of my huge page patch the second patch disables the tlb
flush optimization we added earlier. It seems calling flush_tlb_all()
doesn't reliably flushes tlbs on all CPUs so it's better to fall back to
the loop implementation.
Helge
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 1b366c4..958b7f36 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -475,19 +475,22 @@ static void __init map_pages(unsigned long start_vaddr,
pte = __mk_pte(address, pgprot);
else if (parisc_text_address(vaddr)) {
pte = __mk_pte(address, PAGE_KERNEL_EXEC);
- if (address >= ro_start && address < kernel_end)
+ if (address >= ro_start && address < kernel_end
+ && !parisc_requires_coherency())
pte = pte_mkhuge(pte);
}
else
#if defined(CONFIG_PARISC_PAGE_SIZE_4KB)
if (address >= ro_start && address < ro_end) {
pte = __mk_pte(address, PAGE_KERNEL_EXEC);
- pte = pte_mkhuge(pte);
+ if (!parisc_requires_coherency())
+ pte = pte_mkhuge(pte);
} else
#endif
{
pte = __mk_pte(address, pgprot);
- if (address >= ro_start && address < kernel_end)
+ if (address >= ro_start && address < kernel_end
+ && !parisc_requires_coherency())
pte = pte_mkhuge(pte);
}
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index cda6dbb..80ced95 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -445,7 +445,7 @@ int __flush_tlb_range(unsigned long sid, unsigned long start,
unsigned long flags, size;
size = (end - start);
- if (size >= parisc_tlb_flush_threshold) {
+ if (0 && size >= parisc_tlb_flush_threshold) {
flush_tlb_all();
return 1;
}
next prev parent reply other threads:[~2015-11-24 17:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-22 11:51 [GIT PULL] parisc huge page support for v4.4 Helge Deller
2015-11-24 15:51 ` Mikulas Patocka
2015-11-24 15:58 ` Helge Deller
2015-11-24 16:39 ` Mikulas Patocka
2015-11-24 17:00 ` Helge Deller [this message]
2015-11-24 18:43 ` Mikulas Patocka
2015-12-26 12:09 ` Mikulas Patocka
2015-12-26 12:31 ` Helge Deller
2016-01-04 21:24 ` Mikulas Patocka
2016-01-04 21:48 ` John David Anglin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151124170020.GA13198@p100.box \
--to=deller@gmx.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=dave.anglin@bell.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.