projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d084775
)
powerpc: Fix endian issues in power7/8 machine check handler
author
Anton Blanchard
<anton@samba.org>
Sun, 15 Dec 2013 23:47:54 +0000
(10:47 +1100)
committer
Benjamin Herrenschmidt
<benh@kernel.crashing.org>
Mon, 30 Dec 2013 03:51:09 +0000
(14:51 +1100)
The SLB save area is shared with the hypervisor and is defined
as big endian, so we need to byte swap on little endian builds.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/mce_power.c
patch
|
blob
|
history
diff --git
a/arch/powerpc/kernel/mce_power.c
b/arch/powerpc/kernel/mce_power.c
index
b36e777
..
27c93f4
100644
(file)
--- a/
arch/powerpc/kernel/mce_power.c
+++ b/
arch/powerpc/kernel/mce_power.c
@@
-50,12
+50,12
@@
static void flush_and_reload_slb(void)
if (!slb)
return;
- n = min_t(u32,
slb->persistent
, SLB_MIN_SIZE);
+ n = min_t(u32,
be32_to_cpu(slb->persistent)
, SLB_MIN_SIZE);
/* Load up the SLB entries from shadow SLB */
for (i = 0; i < n; i++) {
- unsigned long rb =
slb->save_area[i].esid
;
- unsigned long rs =
slb->save_area[i].vsid
;
+ unsigned long rb =
be64_to_cpu(slb->save_area[i].esid)
;
+ unsigned long rs =
be64_to_cpu(slb->save_area[i].vsid)
;
rb = (rb & ~0xFFFul) | i;
asm volatile("slbmte %0,%1" : : "r" (rs), "r" (rb));