From 20cb5e84342dc0c9c56f5cea3e97af44070ce820 Mon Sep 17 00:00:00 2001 From: Denys Drozdov Date: Thu, 28 Jan 2021 13:42:43 +0000 Subject: linux-toradex: change kernel recipe to linux-toradex_5.4-2.3.x.bb Switch to linux-toradex branch toradex_5.4-2.3.x-imx Related-to: ELB-3513, ELB-3515, ELB-3509 Signed-off-by: Denys Drozdov (cherry picked from commit 93c2fe20206766c424a4d6d879045bbbe8a56479) --- ...-imx_sc_thermal-prevent-BUG-with-rt-patch.patch | 53 ++++++++++++++++++++++ .../0002-ddr-perf-prevent-BUG-with-rt-patch.patch | 34 ++++++++++++++ .../preempt-rt-less-latency.cfg | 14 ++++++ .../preempt-rt-less-latency.scc | 4 ++ .../linux/linux-toradex-5.4-2.3.x/preempt-rt.cfg | 5 ++ .../linux/linux-toradex-5.4-2.3.x/preempt-rt.scc | 4 ++ 6 files changed, 114 insertions(+) create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/0001-imx_sc_thermal-prevent-BUG-with-rt-patch.patch create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/0002-ddr-perf-prevent-BUG-with-rt-patch.patch create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.cfg create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.scc create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.cfg create mode 100644 recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.scc (limited to 'recipes-kernel/linux/linux-toradex-5.4-2.3.x') diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0001-imx_sc_thermal-prevent-BUG-with-rt-patch.patch b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0001-imx_sc_thermal-prevent-BUG-with-rt-patch.patch new file mode 100644 index 0000000..4dc1dae --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0001-imx_sc_thermal-prevent-BUG-with-rt-patch.patch @@ -0,0 +1,53 @@ +From 4e6114a23a21db5741375070add8ccc16697db67 Mon Sep 17 00:00:00 2001 +From: Max Krummenacher +Date: Tue, 24 Sep 2019 14:15:50 +0200 +Subject: [PATCH 1/2] imx_sc_thermal: prevent BUG() with rt patch + +With the RT patch applied the kernel prints a BUG backtrace during boot: + +| BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1 + +Prevent this by avoiding the smp_processor_id call and just check both +CPU clusters which may be there in a i.MX8 series SoC. + +Signed-off-by: Max Krummenacher +--- + drivers/thermal/imx_sc_thermal.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/drivers/thermal/imx_sc_thermal.c b/drivers/thermal/imx_sc_thermal.c +index 8c5049020cd8..51a6c73315ba 100644 +--- a/drivers/thermal/imx_sc_thermal.c ++++ b/drivers/thermal/imx_sc_thermal.c +@@ -58,6 +58,7 @@ sc_ipc_t tsens_ipcHandle; + static int imx_sc_tsens_get_temp(void *data, int *temp) + { + struct imx_sc_sensor *sensor = data; ++ int hw_id; + sc_err_t sciErr; + int16_t celsius; + int8_t tenths; +@@ -65,14 +66,14 @@ static int imx_sc_tsens_get_temp(void *data, int *temp) + sciErr = sc_misc_get_temp(tsens_ipcHandle, sensor->hw_id, + SC_C_TEMP, &celsius, &tenths); + /* +- * if the SS power domain is down, read temp will fail, so +- * we can return the temp of CPU domain instead. ++ * if the SS power domain is down, read temp will fail, ++ * try the temp of the potentially two CPU domains instead. + */ +- if (sciErr != SC_ERR_NONE) { +- sciErr = sc_misc_get_temp(tsens_ipcHandle, +- sensor_hw_id[topology_physical_package_id(smp_processor_id())], ++ hw_id = 0; ++ while (sciErr != SC_ERR_NONE) { ++ sciErr = sc_misc_get_temp(tsens_ipcHandle, sensor_hw_id[hw_id++], + SC_C_TEMP, &celsius, &tenths); +- if (sciErr != SC_ERR_NONE) { ++ if (hw_id > 1) { + pr_err("read temp sensor:%d failed\n", sensor->hw_id); + return -EINVAL; + } +-- +2.20.1 + diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0002-ddr-perf-prevent-BUG-with-rt-patch.patch b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0002-ddr-perf-prevent-BUG-with-rt-patch.patch new file mode 100644 index 0000000..9296878 --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/0002-ddr-perf-prevent-BUG-with-rt-patch.patch @@ -0,0 +1,34 @@ +From 066e66d9222f70d3e21a7df077ac6b623881c9cc Mon Sep 17 00:00:00 2001 +From: Max Krummenacher +Date: Tue, 24 Sep 2019 14:19:24 +0200 +Subject: [PATCH 2/2] ddr-perf: prevent BUG() with rt patch + +With the RT patch applied the kernel prints a BUG backtrace during boot: + +| BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1 + +Prevent this by replacing the smp_processor_id() call with a get_cpu() .. +put_cpu() construct. + +Signed-off-by: Max Krummenacher +--- + drivers/perf/ddr-perf.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/perf/ddr-perf.c b/drivers/perf/ddr-perf.c +index 73fe52ee8b95..744a6454d6a4 100644 +--- a/drivers/perf/ddr-perf.c ++++ b/drivers/perf/ddr-perf.c +@@ -470,7 +470,8 @@ static int ddr_perf_probe(struct platform_device *pdev) + + pmu->devtype = (struct fsl_ddr_devtype_data *)of_id->data; + +- cpumask_set_cpu(smp_processor_id(), &pmu->cpu); ++ cpumask_set_cpu(get_cpu(), &pmu->cpu); ++ put_cpu(); + ret = perf_pmu_register(&(pmu->pmu), name, -1); + if (ret) + goto ddr_perf_err; +-- +2.20.1 + diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.cfg b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.cfg new file mode 100644 index 0000000..a9c88bd --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.cfg @@ -0,0 +1,14 @@ +# CONFIG_PM_DEBUG is not set +# CONFIG_6LOWPAN_DEBUGFS is not set +# CONFIG_BT_DEBUGFS is not set +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_HTC_DEBUGFS is not set +# CONFIG_ATH10K_DEBUGFS is not set +# CONFIG_RTLWIFI_DEBUG is not set +# CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_CORESIGHT is not set diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.scc b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.scc new file mode 100644 index 0000000..edd1519 --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt-less-latency.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Disable configs that could lead to preempt-rt latency" +define KFEATURE_COMPATIBILITY board + +kconf non-hardware preempt-rt-less-latency.cfg diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.cfg b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.cfg new file mode 100644 index 0000000..f76e447 --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.cfg @@ -0,0 +1,5 @@ +CONFIG_EXPERT=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_RT=y diff --git a/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.scc b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.scc new file mode 100644 index 0000000..82d27dc --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-5.4-2.3.x/preempt-rt.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Enable Features needed by preempt-rt" +define KFEATURE_COMPATIBILITY board + +kconf non-hardware preempt-rt.cfg -- cgit v1.2.3