Hi, Miao, On Fri, Jul 10, 2026 at 1:24 AM Miao Wang via B4 Relay <[email protected]> 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 <[email protected]> > --- > 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/[email protected] > > 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/[email protected] > > --- > 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 <[email protected]> > > _______________________________________________ Openipmi-developer mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openipmi-developer
