summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/opal.c
diff options
context:
space:
mode:
authorAnton Blanchard2014-03-28 06:33:33 +0100
committerBenjamin Herrenschmidt2014-04-07 02:34:27 +0200
commitbb4398e1de739a13e06589fc04cbb2267ba59800 (patch)
treef2e47b907f4b5275ee708988ca7899349424f4b7 /arch/powerpc/platforms/powernv/opal.c
parenttty/hvc_opal: Kick the HVC thread on OPAL console events (diff)
downloadkernel-qcow2-linux-bb4398e1de739a13e06589fc04cbb2267ba59800.tar.gz
kernel-qcow2-linux-bb4398e1de739a13e06589fc04cbb2267ba59800.tar.xz
kernel-qcow2-linux-bb4398e1de739a13e06589fc04cbb2267ba59800.zip
powerpc/powernv: Fix endian issues with OPAL async code
OPAL defines opal_msg as a big endian struct so we have to byte swap it on little endian builds. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv/opal.c')
-rw-r--r--arch/powerpc/platforms/powernv/opal.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 7835d5bb973f..778a2793e75b 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -281,6 +281,7 @@ static void opal_handle_message(void)
* value in /proc/device-tree.
*/
static struct opal_msg msg;
+ u32 type;
ret = opal_get_msg(__pa(&msg), sizeof(msg));
/* No opal message pending. */
@@ -294,13 +295,14 @@ static void opal_handle_message(void)
return;
}
+ type = be32_to_cpu(msg.msg_type);
+
/* Sanity check */
- if (msg.msg_type > OPAL_MSG_TYPE_MAX) {
- pr_warning("%s: Unknown message type: %u\n",
- __func__, msg.msg_type);
+ if (type > OPAL_MSG_TYPE_MAX) {
+ pr_warning("%s: Unknown message type: %u\n", __func__, type);
return;
}
- opal_message_do_notify(msg.msg_type, (void *)&msg);
+ opal_message_do_notify(type, (void *)&msg);
}
static int opal_message_notify(struct notifier_block *nb,