From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: benh@kernel.crashing.org, paulus@samba.org, phileas-fogg@mail.ru,
geoff@infradead.org
Cc: linuxppc-dev@lists.ozlabs.org,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: [PATCH 4/4] powerpc: Add vm debug code to catch errors
Date: Thu, 14 Feb 2013 14:06:23 +0530 [thread overview]
Message-ID: <1360830983-1812-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com> (raw)
In-Reply-To: <1360830983-1812-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
We need to make sure that we don't have higher bits of kernel effective
address set. That would result in multiple kernel segments having same
proto vsid. Add debug code to make sure we capture this.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
arch/powerpc/include/asm/mmu-hash64.h | 49 +++++++++++++++++++++++++++++----
1 file changed, 43 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/include/asm/mmu-hash64.h b/arch/powerpc/include/asm/mmu-hash64.h
index 0e08252..3e297ea 100644
--- a/arch/powerpc/include/asm/mmu-hash64.h
+++ b/arch/powerpc/include/asm/mmu-hash64.h
@@ -22,6 +22,13 @@
*/
#include <asm/pgtable-ppc64.h>
+#ifdef CONFIG_DEBUG_VM
+#ifndef __ASSEMBLY__
+#include <asm/udbg.h>
+#include <asm/bug.h>
+#endif
+#endif
+
/*
* Segment table
*/
@@ -522,11 +529,32 @@ static inline int user_segment_size(unsigned long addr)
static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
int ssize)
{
- if (ssize == MMU_SEGSIZE_256M)
- return vsid_scramble((context << USER_ESID_BITS)
- | (ea >> SID_SHIFT), 256M);
- return vsid_scramble((context << USER_ESID_BITS_1T)
- | (ea >> SID_SHIFT_1T), 1T);
+ if (ssize == MMU_SEGSIZE_256M) {
+ context = context << USER_ESID_BITS;
+ ea = ea >> SID_SHIFT;
+#ifdef CONFIG_DEBUG_VM
+ /*
+ * context and ea should not overlap.
+ */
+ if (context & ea) {
+ udbg_printf("Overlapping bits %lx %lx\n", context, ea);
+ WARN_ON(1);
+ }
+#endif
+ return vsid_scramble(context | ea, 256M);
+ }
+ context = context << USER_ESID_BITS_1T;
+ ea = ea >> SID_SHIFT_1T;
+#ifdef CONFIG_DEBUG_VM
+ /*
+ * context and ea should not overlap.
+ */
+ if (context & ea) {
+ udbg_printf("Overlapping bits for 1T %lx %lx\n", context, ea);
+ WARN_ON(1);
+ }
+#endif
+ return vsid_scramble(context | ea, 1T);
}
/*
@@ -540,11 +568,20 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
*/
static inline unsigned long get_kernel_vsid(unsigned long ea, int ssize)
{
+ unsigned int c_index;
unsigned long context;
/*
* kernel take the top 4 context from the available range
*/
- context = (MAX_CONTEXT - 4) + ((ea >> 60) - 0xc);
+ c_index = ((ea >> 60) - 0xc);
+ context = (MAX_CONTEXT - 4) + c_index;
+#ifdef CONFIG_DEBUG_VM
+ /*
+ * Drop the c_index related bits from ea, so we get
+ * non overlapping context and ea.
+ */
+ ea = ea - ((0xcUL + c_index) << 60);
+#endif
return get_vsid(context, ea, ssize);
}
#endif /* __ASSEMBLY__ */
--
1.7.10
next prev parent reply other threads:[~2013-02-14 8:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <a>
2013-02-14 8:36 ` [PATCH 1/4] powerpc: Make VSID_BITS* dependency explicit Aneesh Kumar K.V
2013-02-14 8:36 ` [PATCH 2/4] powerpc: Update kernel VSID range Aneesh Kumar K.V
2013-02-14 17:21 ` Aneesh Kumar K.V
2013-02-15 4:42 ` Paul Mackerras
2013-02-14 8:36 ` [PATCH 3/4] powerpc: Don't update r10 early in the call Aneesh Kumar K.V
2013-02-14 8:36 ` Aneesh Kumar K.V [this message]
2013-02-15 4:46 ` [PATCH 4/4] powerpc: Add vm debug code to catch errors Paul Mackerras
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=1360830983-1812-4-git-send-email-aneesh.kumar@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=geoff@infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
--cc=phileas-fogg@mail.ru \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).