From: Greg Kroah-Hartman Date: Tue, 7 Feb 2023 11:44:58 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v5.15.93~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27dd3afd46864e20b34cdcc1aa5d06ac7900810d;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: iio-adc-twl6030-enable-measurement-of-vac.patch powerpc-imc-pmu-revert-nest_init_lock-to-being-a-mutex.patch --- diff --git a/queue-5.15/iio-adc-twl6030-enable-measurement-of-vac.patch b/queue-5.15/iio-adc-twl6030-enable-measurement-of-vac.patch new file mode 100644 index 00000000000..154918ef00d --- /dev/null +++ b/queue-5.15/iio-adc-twl6030-enable-measurement-of-vac.patch @@ -0,0 +1,34 @@ +From bffb7d9d1a3dbd09e083b88aefd093b3b10abbfb Mon Sep 17 00:00:00 2001 +From: Andreas Kemnade +Date: Sat, 17 Dec 2022 23:13:05 +0100 +Subject: iio:adc:twl6030: Enable measurement of VAC + +From: Andreas Kemnade + +commit bffb7d9d1a3dbd09e083b88aefd093b3b10abbfb upstream. + +VAC needs to be wired up to produce proper measurements, +without this change only near zero values are reported. + +Reported-by: kernel test robot +Reported-by: Julia Lawall +Fixes: 1696f36482e7 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver") +Signed-off-by: Andreas Kemnade +Link: https://lore.kernel.org/r/20221217221305.671117-1-andreas@kemnade.info +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iio/adc/twl6030-gpadc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/iio/adc/twl6030-gpadc.c ++++ b/drivers/iio/adc/twl6030-gpadc.c +@@ -952,7 +952,7 @@ static int twl6030_gpadc_probe(struct pl + } + + ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, +- VBAT_MEAS | BB_MEAS | BB_MEAS, ++ VBAT_MEAS | BB_MEAS | VAC_MEAS, + TWL6030_MISC1); + if (ret < 0) { + dev_err(dev, "failed to wire up inputs\n"); diff --git a/queue-5.15/powerpc-imc-pmu-revert-nest_init_lock-to-being-a-mutex.patch b/queue-5.15/powerpc-imc-pmu-revert-nest_init_lock-to-being-a-mutex.patch new file mode 100644 index 00000000000..61db31b76d5 --- /dev/null +++ b/queue-5.15/powerpc-imc-pmu-revert-nest_init_lock-to-being-a-mutex.patch @@ -0,0 +1,121 @@ +From ad53db4acb415976761d7302f5b02e97f2bd097e Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Mon, 30 Jan 2023 12:44:01 +1100 +Subject: powerpc/imc-pmu: Revert nest_init_lock to being a mutex + +From: Michael Ellerman + +commit ad53db4acb415976761d7302f5b02e97f2bd097e upstream. + +The recent commit 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in +IRQs disabled section") fixed warnings (and possible deadlocks) in the +IMC PMU driver by converting the locking to use spinlocks. + +It also converted the init-time nest_init_lock to a spinlock, even +though it's not used at runtime in IRQ disabled sections or while +holding other spinlocks. + +This leads to warnings such as: + + BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49 + in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0 + preempt_count: 1, expected: 0 + CPU: 7 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc2-14719-gf12cd06109f4-dirty #1 + Hardware name: Mambo,Simulated-System POWER9 0x4e1203 opal:v6.6.6 PowerNV + Call Trace: + dump_stack_lvl+0x74/0xa8 (unreliable) + __might_resched+0x178/0x1a0 + __cpuhp_setup_state+0x64/0x1e0 + init_imc_pmu+0xe48/0x1250 + opal_imc_counters_probe+0x30c/0x6a0 + platform_probe+0x78/0x110 + really_probe+0x104/0x420 + __driver_probe_device+0xb0/0x170 + driver_probe_device+0x58/0x180 + __driver_attach+0xd8/0x250 + bus_for_each_dev+0xb4/0x140 + driver_attach+0x34/0x50 + bus_add_driver+0x1e8/0x2d0 + driver_register+0xb4/0x1c0 + __platform_driver_register+0x38/0x50 + opal_imc_driver_init+0x2c/0x40 + do_one_initcall+0x80/0x360 + kernel_init_freeable+0x310/0x3b8 + kernel_init+0x30/0x1a0 + ret_from_kernel_thread+0x5c/0x64 + +Fix it by converting nest_init_lock back to a mutex, so that we can call +sleeping functions while holding it. There is no interaction between +nest_init_lock and the runtime spinlocks used by the actual PMU routines. + +Fixes: 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in IRQs disabled section") +Tested-by: Kajol Jain +Reviewed-by: Kajol Jain +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20230130014401.540543-1-mpe@ellerman.id.au +Signed-off-by: Greg Kroah-Hartman +--- + arch/powerpc/perf/imc-pmu.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/arch/powerpc/perf/imc-pmu.c ++++ b/arch/powerpc/perf/imc-pmu.c +@@ -21,7 +21,7 @@ + * Used to avoid races in counting the nest-pmu units during hotplug + * register and unregister + */ +-static DEFINE_SPINLOCK(nest_init_lock); ++static DEFINE_MUTEX(nest_init_lock); + static DEFINE_PER_CPU(struct imc_pmu_ref *, local_nest_imc_refc); + static struct imc_pmu **per_nest_pmu_arr; + static cpumask_t nest_imc_cpumask; +@@ -1622,7 +1622,7 @@ static void imc_common_mem_free(struct i + static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr) + { + if (pmu_ptr->domain == IMC_DOMAIN_NEST) { +- spin_lock(&nest_init_lock); ++ mutex_lock(&nest_init_lock); + if (nest_pmus == 1) { + cpuhp_remove_state(CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE); + kfree(nest_imc_refc); +@@ -1632,7 +1632,7 @@ static void imc_common_cpuhp_mem_free(st + + if (nest_pmus > 0) + nest_pmus--; +- spin_unlock(&nest_init_lock); ++ mutex_unlock(&nest_init_lock); + } + + /* Free core_imc memory */ +@@ -1789,11 +1789,11 @@ int init_imc_pmu(struct device_node *par + * rest. To handle the cpuhotplug callback unregister, we track + * the number of nest pmus in "nest_pmus". + */ +- spin_lock(&nest_init_lock); ++ mutex_lock(&nest_init_lock); + if (nest_pmus == 0) { + ret = init_nest_pmu_ref(); + if (ret) { +- spin_unlock(&nest_init_lock); ++ mutex_unlock(&nest_init_lock); + kfree(per_nest_pmu_arr); + per_nest_pmu_arr = NULL; + goto err_free_mem; +@@ -1801,7 +1801,7 @@ int init_imc_pmu(struct device_node *par + /* Register for cpu hotplug notification. */ + ret = nest_pmu_cpumask_init(); + if (ret) { +- spin_unlock(&nest_init_lock); ++ mutex_unlock(&nest_init_lock); + kfree(nest_imc_refc); + kfree(per_nest_pmu_arr); + per_nest_pmu_arr = NULL; +@@ -1809,7 +1809,7 @@ int init_imc_pmu(struct device_node *par + } + } + nest_pmus++; +- spin_unlock(&nest_init_lock); ++ mutex_unlock(&nest_init_lock); + break; + case IMC_DOMAIN_CORE: + ret = core_imc_pmu_cpumask_init(); diff --git a/queue-5.15/series b/queue-5.15/series index f952c4d3efa..f47bfb61839 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -108,3 +108,5 @@ phy-qcom-qmp-combo-fix-broken-power-on.patch phy-qcom-qmp-combo-fix-runtime-suspend.patch bpf-fix-incorrect-state-pruning-for-8b-spill-fill.patch bpf-do-not-reject-when-the-stack-read-size-is-different-from-the-tracked-scalar-size.patch +iio-adc-twl6030-enable-measurement-of-vac.patch +powerpc-imc-pmu-revert-nest_init_lock-to-being-a-mutex.patch