summaryrefslogtreecommitdiffstats
path: root/arm64-ensure-ready-for-userspace.patch
diff options
context:
space:
mode:
Diffstat (limited to 'arm64-ensure-ready-for-userspace.patch')
-rw-r--r--arm64-ensure-ready-for-userspace.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/arm64-ensure-ready-for-userspace.patch b/arm64-ensure-ready-for-userspace.patch
new file mode 100644
index 000000000..2468e2271
--- /dev/null
+++ b/arm64-ensure-ready-for-userspace.patch
@@ -0,0 +1,79 @@
+From c0d8832e78cbfd4a64b7112e34920af4b0b0e60e Mon Sep 17 00:00:00 2001
+From: Suzuki K Poulose <suzuki.poulose@arm.com>
+Date: Fri, 6 Oct 2017 14:16:52 +0100
+Subject: arm64: Ensure the instruction emulation is ready for userspace
+
+We trap and emulate some instructions (e.g, mrs, deprecated instructions)
+for the userspace. However the handlers for these are registered as
+late_initcalls and the userspace could be up and running from the initramfs
+by that time (with populate_rootfs, which is a rootfs_initcall()). This
+could cause problems for the early applications ending up in failure
+like :
+
+[ 11.152061] modprobe[93]: undefined instruction: pc=0000ffff8ca48ff4
+
+This patch promotes the specific calls to core_initcalls, which are
+guaranteed to be completed before we hit userspace.
+
+Cc: stable@vger.kernel.org
+Cc: Dave Martin <dave.martin@arm.com>
+Cc: Matthias Brugger <mbrugger@suse.com>
+Cc: James Morse <james.morse@arm.com>
+Reported-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>
+Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+---
+ arch/arm64/kernel/armv8_deprecated.c | 2 +-
+ arch/arm64/kernel/cpufeature.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
+index f0e6d71..d06fbe4 100644
+--- a/arch/arm64/kernel/armv8_deprecated.c
++++ b/arch/arm64/kernel/armv8_deprecated.c
+@@ -649,4 +649,4 @@ static int __init armv8_deprecated_init(void)
+ return 0;
+ }
+
+-late_initcall(armv8_deprecated_init);
++core_initcall(armv8_deprecated_init);
+diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
+index cd52d36..21e2c95 100644
+--- a/arch/arm64/kernel/cpufeature.c
++++ b/arch/arm64/kernel/cpufeature.c
+@@ -1307,4 +1307,4 @@ static int __init enable_mrs_emulation(void)
+ return 0;
+ }
+
+-late_initcall(enable_mrs_emulation);
++core_initcall(enable_mrs_emulation);
+From ae2e972dae3cea795e9f8f94eb1601213c2d49f0 Mon Sep 17 00:00:00 2001
+From: Suzuki K Poulose <suzuki.poulose@arm.com>
+Date: Fri, 6 Oct 2017 14:16:53 +0100
+Subject: arm64: Ensure fpsimd support is ready before userspace is active
+
+We register the pm/hotplug callbacks for FPSIMD as late_initcall,
+which happens after the userspace is active (from initramfs via
+populate_rootfs, a rootfs_initcall). Make sure we are ready even
+before the userspace could potentially use it, by promoting to
+a core_initcall.
+
+Cc: Will Deacon <will.deacon@arm.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Dave Martin <dave.martin@arm.com>
+Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+---
+ arch/arm64/kernel/fpsimd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
+index f444f37..5d547de 100644
+--- a/arch/arm64/kernel/fpsimd.c
++++ b/arch/arm64/kernel/fpsimd.c
+@@ -444,4 +444,4 @@ static int __init fpsimd_init(void)
+
+ return 0;
+ }
+-late_initcall(fpsimd_init);
++core_initcall(fpsimd_init);