From a89c694daefa1d6e92dde0cd09ee5d7695f9397b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 12 Oct 2017 12:04:04 +0100 Subject: Some minor ARM fixes and cleanups --- arm64-ensure-ready-for-userspace.patch | 79 ++++++++++++++++++++++++++++ drm-cma-reduce-dmesg-logs.patch | 96 ++++++++++++++++++++++++++++++++++ kernel-ppc64p7-debug.config | 1 - kernel-ppc64p7.config | 1 - kernel.spec | 13 ++++- qcom-QDF2432-tmp-errata.patch | 59 --------------------- 6 files changed, 186 insertions(+), 63 deletions(-) create mode 100644 arm64-ensure-ready-for-userspace.patch create mode 100644 drm-cma-reduce-dmesg-logs.patch delete mode 100644 qcom-QDF2432-tmp-errata.patch 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 +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 +Cc: Matthias Brugger +Cc: James Morse +Reported-by: Matwey V. Kornilov +Signed-off-by: Suzuki K Poulose +Signed-off-by: Catalin Marinas +--- + 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 +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 +Cc: Mark Rutland +Cc: Dave Martin +Signed-off-by: Suzuki K Poulose +Signed-off-by: Catalin Marinas +--- + 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); diff --git a/drm-cma-reduce-dmesg-logs.patch b/drm-cma-reduce-dmesg-logs.patch new file mode 100644 index 000000000..2e39d6e70 --- /dev/null +++ b/drm-cma-reduce-dmesg-logs.patch @@ -0,0 +1,96 @@ +From patchwork Thu Oct 5 11:29:17 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v2] drm/gem-cma-helper: Change the level of the allocation failure + message +From: Boris Brezillon +X-Patchwork-Id: 180737 +Message-Id: <20171005112917.15949-1-boris.brezillon@free-electrons.com> +To: David Airlie , Daniel Vetter , + dri-devel@lists.freedesktop.org +Cc: Boris Brezillon +Date: Thu, 5 Oct 2017 13:29:17 +0200 + +drm_gem_cma_create() prints an error message when dma_alloc_wc() fails to +allocate the amount of memory we requested. This can lead to annoying +error messages when CMA is only one possible source of memory for the BO +allocation. Turn this error message into a debug one. + +Signed-off-by: Boris Brezillon +Reviewed-by: Daniel Vetter +Reviewed-by: Eric Engestrom +Reviewed-by: Eric Anholt +--- +Changes in v2: +- Remove __must_check attribute +--- + drivers/gpu/drm/drm_gem_cma_helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c +index 373e33f22be4..020e7668dfab 100644 +--- a/drivers/gpu/drm/drm_gem_cma_helper.c ++++ b/drivers/gpu/drm/drm_gem_cma_helper.c +@@ -112,7 +112,7 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, + cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr, + GFP_KERNEL | __GFP_NOWARN); + if (!cma_obj->vaddr) { +- dev_err(drm->dev, "failed to allocate buffer with size %zu\n", ++ dev_dbg(drm->dev, "failed to allocate buffer with size %zu\n", + size); + ret = -ENOMEM; + goto error; +From patchwork Wed Oct 4 12:54:47 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: cma: Take __GFP_NOWARN into account in cma_alloc() +From: Boris Brezillon +X-Patchwork-Id: 180554 +Message-Id: <20171004125447.15195-1-boris.brezillon@free-electrons.com> +To: linux-mm@kvack.org, Andrew Morton , + Laura Abbott +Cc: Boris Brezillon , + Jaewon Kim , dri-devel@lists.freedesktop.org +Date: Wed, 4 Oct 2017 14:54:47 +0200 + +cma_alloc() unconditionally prints an INFO message when the CMA +allocation fails. Make this message conditional on the non-presence of +__GFP_NOWARN in gfp_mask. + +Signed-off-by: Boris Brezillon +Acked-by: Laura Abbott +--- +Hello, + +This patch aims at removing INFO messages that are displayed when the +VC4 driver tries to allocate buffer objects. From the driver perspective +an allocation failure is acceptable, and the driver can possibly do +something to make following allocation succeed (like flushing the VC4 +internal cache). + +Also, I don't understand why this message is only an INFO message, and +not a WARN (pr_warn()). Please let me know if you have good reasons to +keep it as an unconditional pr_info(). + +Thanks, + +Boris +--- + mm/cma.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mm/cma.c b/mm/cma.c +index c0da318c020e..022e52bd8370 100644 +--- a/mm/cma.c ++++ b/mm/cma.c +@@ -460,7 +460,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, + + trace_cma_alloc(pfn, page, count, align); + +- if (ret) { ++ if (ret && !(gfp_mask & __GFP_NOWARN)) { + pr_info("%s: alloc failed, req-size: %zu pages, ret: %d\n", + __func__, count, ret); + cma_debug_show_areas(cma); diff --git a/kernel-ppc64p7-debug.config b/kernel-ppc64p7-debug.config index 1d3cdd364..01c175992 100644 --- a/kernel-ppc64p7-debug.config +++ b/kernel-ppc64p7-debug.config @@ -1714,7 +1714,6 @@ CONFIG_HWLAT_TRACER=y # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_HWMON=y CONFIG_HWPOISON_INJECT=m -CONFIG_HW_RANDOM_OMAP=m CONFIG_HW_RANDOM_POWERNV=m CONFIG_HW_RANDOM_PSERIES=m CONFIG_HW_RANDOM_TIMERIOMEM=m diff --git a/kernel-ppc64p7.config b/kernel-ppc64p7.config index 340f308f9..a3fa9593e 100644 --- a/kernel-ppc64p7.config +++ b/kernel-ppc64p7.config @@ -1696,7 +1696,6 @@ CONFIG_HWLAT_TRACER=y # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_HWMON=y CONFIG_HWPOISON_INJECT=m -CONFIG_HW_RANDOM_OMAP=m CONFIG_HW_RANDOM_POWERNV=m CONFIG_HW_RANDOM_PSERIES=m CONFIG_HW_RANDOM_TIMERIOMEM=m diff --git a/kernel.spec b/kernel.spec index 660ceafd6..8b4ac7be9 100644 --- a/kernel.spec +++ b/kernel.spec @@ -569,8 +569,14 @@ Patch211: drm-i915-hush-check-crtc-state.patch # 300 - ARM patches -# a tempory patch for QCOM hardware enablement. Will be gone by F-26 GA -Patch301: qcom-QDF2432-tmp-errata.patch +# Reduces a number of primarily info logs to dmesg +# https://patchwork.freedesktop.org/patch/180737/ +# https://patchwork.freedesktop.org/patch/180554/ +Patch300: drm-cma-reduce-dmesg-logs.patch + +# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c0d8832e78cbfd4a64b7112e34920af4b0b0e60e +# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ae2e972dae3cea795e9f8f94eb1601213c2d49f0 +Patch301: arm64-ensure-ready-for-userspace.patch # http://www.spinics.net/lists/linux-tegra/msg26029.html Patch302: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch @@ -2259,6 +2265,9 @@ fi # # %changelog +* Thu Oct 12 2017 Peter Robinson +- Some minor ARM fixes and cleanups + * Wed Oct 11 2017 Jeremy Cline - Fix incorrect updates of uninstantiated keys crash the kernel (rhbz 1498016 1498017) diff --git a/qcom-QDF2432-tmp-errata.patch b/qcom-QDF2432-tmp-errata.patch deleted file mode 100644 index f7ace4787..000000000 --- a/qcom-QDF2432-tmp-errata.patch +++ /dev/null @@ -1,59 +0,0 @@ -From edc7986d4d405daebaf2f66269b353da579fce5f Mon Sep 17 00:00:00 2001 -From: Christopher Covington -Date: Tue, 31 May 2016 16:19:02 -0400 -Subject: arm64: Workaround for QDF2432 ID_AA64 SR accesses - -The ARMv8.0 architecture reserves several system register encodings for -future use. These encodings should behave as read-only and always return -zero on a read. As described in Errata 94, the CPU cores in the QDF2432 -errantly cause an instruction abort if an AArch64 MRS instruction attempts -to read any of the following system register encodings: - - Op0, Op1, CRn, CRm, Op2 - 3, 0, C0, [C4-C7], [2-3, 6-7] - 3, 0, C0, C3, [3-7] - 3, 0, C0, [C4,C6,C7], [4-5] - 3, 0, C0, C2, [6-7] - -Naively projecting ARMv8.0 names, this space includes: - - ID_AA64PFR[2-7]_EL1 - ID_AA64DFR[2-3]_EL1 - ID_AA64AFR[2-3]_EL1 - ID_AA64ISAR[2-7]_EL1 - ID_AA64MMFR[2-7]_EL1 - -As of v4.8-rc2, Linux only attempts to query one register in this space, -ID_AA64MMFR2_EL1. As simple workaround, skip that access when the affected -MIDR is detected. - -Signed-off-by: Christopher Covington ---- - arch/arm64/kernel/cpuinfo.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c -index ed1b84f..790de6b 100644 ---- a/arch/arm64/kernel/cpuinfo.c -+++ b/arch/arm64/kernel/cpuinfo.c -@@ -325,6 +325,8 @@ static void cpuinfo_detect_icache_policy(struct cpuinfo_arm64 *info) - - static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) - { -+ bool qdf2432_cpu = read_cpuid_id() == 0x510f2811; -+ - info->reg_cntfrq = arch_timer_get_cntfrq(); - info->reg_ctr = read_cpuid_cachetype(); - info->reg_dczid = read_cpuid(DCZID_EL0); -@@ -337,7 +339,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) - info->reg_id_aa64isar1 = read_cpuid(ID_AA64ISAR1_EL1); - info->reg_id_aa64mmfr0 = read_cpuid(ID_AA64MMFR0_EL1); - info->reg_id_aa64mmfr1 = read_cpuid(ID_AA64MMFR1_EL1); -- info->reg_id_aa64mmfr2 = read_cpuid(ID_AA64MMFR2_EL1); -+ info->reg_id_aa64mmfr2 = qdf2432_cpu ? 0 : read_cpuid(ID_AA64MMFR2_EL1); - info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1); - info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1); - --- -cgit v0.12 - -- cgit