diff options
Diffstat (limited to 'arm64-ensure-ready-for-userspace.patch')
-rw-r--r-- | arm64-ensure-ready-for-userspace.patch | 79 |
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); |