aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/include/asm
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-10-10 20:19:32 -0400
committerDavid S. Miller <davem@davemloft.net>2012-10-10 20:19:32 -0400
commitf88620b9c5521e9cb9de88e56272bfec3d831513 (patch)
tree6d369a343c60d3100576b79d0d68b123eee0fbdd /arch/sparc/include/asm
parent2474542f64432398f503373f53bdf620491bcfa8 (diff)
sparc64: Fix deficiencies in sun4v error reporting.
Missing error types, attributes, and report fields. Pad out to 64-bytes. Make string reporting cleaner and easier to extend in the future using "const char *" arrays that index by either bit position, or absolute field value. Report the raw 64-byte error report as a sequence of u64s before the annotated version. Only report fields which are valid, given the context and the attribute bits which are set. For shutdown requests, use the local copy of the error report not the one we just freed up back to the queue. Also, use orderly_poweroff() just like the Domain Services shutdown request code does. If the real-address reported is "-1" (unknown) try to disassemble the instruction to report the effective address of the access. Only do this in privileged mode. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm')
-rw-r--r--arch/sparc/include/asm/uaccess_64.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h
index 7c831d848b4..73083e1d38d 100644
--- a/arch/sparc/include/asm/uaccess_64.h
+++ b/arch/sparc/include/asm/uaccess_64.h
@@ -265,6 +265,11 @@ extern __must_check long strnlen_user(const char __user *str, long n);
265#define __copy_to_user_inatomic ___copy_to_user 265#define __copy_to_user_inatomic ___copy_to_user
266#define __copy_from_user_inatomic ___copy_from_user 266#define __copy_from_user_inatomic ___copy_from_user
267 267
268struct pt_regs;
269extern unsigned long compute_effective_address(struct pt_regs *,
270 unsigned int insn,
271 unsigned int rd);
272
268#endif /* __ASSEMBLY__ */ 273#endif /* __ASSEMBLY__ */
269 274
270#endif /* _ASM_UACCESS_H */ 275#endif /* _ASM_UACCESS_H */