Re: [PATCH v8 0/2] mfd: loongson-se: Add multi-node support and fix miscellaneous issues

From: Huacai Chen

Date: Mon Sep 28 2026 - 09:55:31 EST


For the whole series,
Reviewed-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>

On Wed, Sep 23, 2026 at 4:48 PM Qunqin Zhao <zhaoqunqin@xxxxxxx> wrote:
>
> From: Qunqin Zhao <zhaoqunqin@xxxxxxxxxxx>
>
> - Patch 1 introduces the multi-node platform support.
>
> v6-v8: no changes
> v5: Clear pending interrupts with S2LINT_CL before requesting IRQs,
> and move S2LINT_EN to after all interrupt handlers are registered.
> v4: Safely handling shared interrupt handler returns.
> v3: Using shared interrupts (IRQF_SHARED) instead of manually
> iterating through all devices to check for interrupts.
>
> - Patch 2 focuses on structural and error-path hardening for the
> pre-existing baseline code. This includes resolving critical issues
> discovered by the Sashiko Automation system such as: completion
> race conditions, missing engine completion initialization, spinlock
> held with interrupts disabled for up to 10 ms, EPROBE_DEFER
> handling, DMA buffer overflow validation, interrupt cleanup on
> probe failure, and device removal ordering.
>
> v8:
> - Remove the poll_lock added in v7
>
> v7:
> - Re-enable the interrupt under dev_lock in loongson_se_poll()
> instead of poll_lock, so both the mask and re-enable of
> SE_S2LINT_EN are protected by the same lock and cannot race
> - Wait for controller command completion with a bounded
> non-interruptible wait so a pending signal cannot leave the
> controller running while DMA buffers are torn down
> - Validate the id argument in loongson_se_init_engine() to
> reject engine 0 and out-of-bounds indices
> - Drop the redundant init_completion() in
> loongson_se_init_engine() now that probe() initializes all
> engine completions
> v6:
> - Mask the target interrupt, clear pending status, and
> reinitialize the completion under dev_lock before issuing a
> command, re-enabling the interrupt after triggering
> - Keep the original engine_init_lock scope instead of the
> broader cmd_lock mutex
> - Reuse loongson_se_send_controller_cmd() in the STOP path and
> register the stop handler before loongson_se_init()
> - Correct the dmam_size validation formula
> v5: Fix all issues reported by Sashiko analysis:
> - Initialize engine completions in probe to avoid NULL deref
> - Use cmd_lock mutex for command serialization, drop spin_lock_irq
> - Add reinit_completion to controller and engine command paths
> - Fix EPROBE_DEFER handling in platform_irq_count()
> - Validate dmam_size against minimum required size
> - Disable IRQs in probe error path after init failure
> - Add loongson_se_stop() devres cleanup with proper ordering
> - Use non-interruptible wait for STOP command
> v4: new patch
>
> Qunqin Zhao (2):
> mfd: loongson-se: Add multi-node support
> mfd: loongson-se: Fix miscellaneous issues
>
> drivers/mfd/loongson-se.c | 119 ++++++++++++++++++++++++++++----
> include/linux/mfd/loongson-se.h | 1 +
> 2 files changed, 106 insertions(+), 14 deletions(-)
>
>
> base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
> --
> 2.47.2
>