summaryrefslogtreecommitdiffstats
path: root/debian/patches/ppc64el-disable-vsx.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/ppc64el-disable-vsx.patch')
-rw-r--r--debian/patches/ppc64el-disable-vsx.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/debian/patches/ppc64el-disable-vsx.patch b/debian/patches/ppc64el-disable-vsx.patch
new file mode 100644
index 0000000..bd29ae8
--- /dev/null
+++ b/debian/patches/ppc64el-disable-vsx.patch
@@ -0,0 +1,52 @@
+From c1c72eb757d40208128fb1da02199b0210a206ab Mon Sep 17 00:00:00 2001
+From: Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
+Date: Thu, 25 Sep 2014 19:33:39 -0300
+Subject: Disable VSX instruction
+
+VSX bit is enabled by default for Power7 and Power8 CPU models,
+so we need to disable them in order to avoid instruction exceptions.
+Kernel will activate it when necessary.
+
+* grub-core/kern/powerpc/ieee1275/startup.S: Disable VSX.
+
+Also-By: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+Also-By: Colin Watson <cjwatson@debian.org>
+
+Origin: other, https://lists.gnu.org/archive/html/grub-devel/2014-09/msg00078.html
+Last-Update: 2015-01-27
+
+Patch-Name: ppc64el-disable-vsx.patch
+---
+ grub-core/kern/powerpc/ieee1275/startup.S | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/grub-core/kern/powerpc/ieee1275/startup.S b/grub-core/kern/powerpc/ieee1275/startup.S
+index 21c884b43..de9a9601a 100644
+--- a/grub-core/kern/powerpc/ieee1275/startup.S
++++ b/grub-core/kern/powerpc/ieee1275/startup.S
+@@ -20,6 +20,8 @@
+ #include <grub/symbol.h>
+ #include <grub/offsets.h>
+
++#define MSR_VSX 0x80
++
+ .extern __bss_start
+ .extern _end
+
+@@ -28,6 +30,16 @@
+ .globl start, _start
+ start:
+ _start:
++ _start:
++
++ /* Disable VSX instruction */
++ mfmsr 0
++ oris 0,0,MSR_VSX
++ /* The "VSX Available" bit is in the lower half of the MSR, so we
++ don't need mtmsrd, which in any case won't work in 32-bit mode. */
++ mtmsr 0
++ isync
++
+ li 2, 0
+ li 13, 0
+