Re: [PATCH RFC v3 0/7] mfd: ls2kbmc: multiple fixes for this driver

From: Huacai Chen

Date: Fri Jul 24 2026 - 05:00:20 EST


Hi, Miao,

On Fri, Jul 10, 2026 at 1:24 AM Miao Wang via B4 Relay
<devnull+shankerwangmiao.gmail.com@xxxxxxxxxx> wrote:
>
> Previously, the driver has been introduced to support the Loongson 2K
> BMC running on the Loongson Servers, which is essential to prevent
> the system from hanging when the BMC is being reset and the default
> efi-framebuffer is being used. However, there are some drawbacks in the
> driver.
>
> Firstly, the driver tries to read and write to the connected PCI-E host
> controller registers, assuming that the BMC is connected to LS7A PCI-E
> host controller. This assumption should be true for real products, but
> to prevent from accidentally reading and writing to the wrong PCI-E host
> controller, this driver should be modified to check this before
> accessing the registers.
>
> Secondly, the driver uses non-exported functions to tell the vt
> subsystem to redraw the screen, preventing the driver from being
> compiling as a module. This can be fixed by using the exported
> functions instead.
You can replace the redraw function, but I don't think it is necessary
to make the bmc driver modular.

BMC core, IPMI and simpledrm display are usually (if not always)
supposed to work as early as possible.


Huacai

>
> Thirdly, the driver directly accesses the GPIO controller registers
> using hard-coded addresses, which might conflict with the loaded GPIO
> controller driver for the same GPIO controller. This is fixed in this
> series by using the GPIO subsystem APIs instead. However, legacy GPIO
> APIs have to be used in this fixed to correctly request a GPIO
> descriptor from the GPIO subsystem, which might be further discussed
> to find a better solution.
>
> Finally, there is a minor issue in the driver where it changes the
> mode string describing the screen resolution during probing, which
> prevents the device from being probed again if -EPROBE_DEFER is
> returned by the probe function.
>
> I have tested the changes in this series on a single-socket Loongson
> 3C6000 server with a Loongson 2K BMC, and the driver works as expected
> when the corresponding GPIO driver is additionally loaded.
>
> Signed-off-by: Miao Wang <shankerwangmiao@xxxxxxxxx>
> ---
> Changes in v3:
> - Check the return value of devm_add_action_or_reset when registering
> the cleanup hook of the work queue
> - Use swnode to create the link between the device to the GPIO chip,
> and prevent borrowing the legacy GPIO APIs
> - Link to v2: https://lore.kernel.org/r/20260708-ls2kbmc-mod-v2-0-2afdd1741766@xxxxxxxxx
>
> Changes in v2:
> - Several fixes suggested by the Sashiko AI review bot
> - Add a cleanup function for the wq on removal of the device
> - Relax the reverse dependency from CONFIG_IPMI_LS2K to
> CONFIG_MFD_LS2K_BMC_CORE to allow the driver to be built as a module
> - Link to v1: https://lore.kernel.org/r/20260708-ls2kbmc-mod-v1-0-c344bf5defa3@xxxxxxxxx
>
> ---
> Miao Wang (7):
> mfd: ls2kbmc: Make a copy when parsing mode string
> mfd: ls2kbmc: Sanity check for the connected pci port
> mfd: ls2kbmc: Redraw using exported functions
> mfd: ls2kbmc: Cancel the work queue on removal
> ipmi: ls2k: Relax the dependency to its mfd driver
> mfd: ls2kbmc: Able to be compiled as a module
> mfd: ls2kbmc: Capture the reset event of BMC through GPIO
>
> drivers/char/ipmi/Kconfig | 2 +-
> drivers/mfd/Kconfig | 2 +-
> drivers/mfd/ls2k-bmc-core.c | 235 ++++++++++++++++++++++++++++++++++----------
> 3 files changed, 184 insertions(+), 55 deletions(-)
> ---
> base-commit: 0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53
> change-id: 20260626-ls2kbmc-mod-5209193009b2
>
> Best regards,
> --
> Miao Wang <shankerwangmiao@xxxxxxxxx>
>
>