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

Miao Wang <[email protected]> Tue, 4 Aug 2026 00:09:02 +0800
Newsgroups org.kernel.vger.linux-gpio,dev.linux.lists.mfd,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi,

> 2026=E5=B9=B48=E6=9C=883=E6=97=A5 21:45=EF=BC=8CHuacai Chen =
<[email protected]> =E5=86=99=E9=81=93=EF=BC=9A
>=20
> On Fri, Jul 31, 2026 at 4:24=E2=80=AFPM Miao Wang =
<[email protected]> wrote:
>>=20
>> Hi,
>>=20
>>> 2026=E5=B9=B47=E6=9C=8831=E6=97=A5 16:07=EF=BC=8CHuacai Chen =
<[email protected]> =E5=86=99=E9=81=93=EF=BC=9A
>>>=20
>>> On Fri, Jul 24, 2026 at 5:28=E2=80=AFPM Miao Wang =
<[email protected]> wrote:
>>>>=20
>>>> Hi,
>>>>=20
>>>>> 2026=E5=B9=B47=E6=9C=8824=E6=97=A5 16:55=EF=BC=8CHuacai Chen =
<[email protected]> =E5=86=99=E9=81=93=EF=BC=9A
>>>>>=20
>>>>> Hi, Miao,
>>>>>=20
>>>>> On Fri, Jul 10, 2026 at 1:24=E2=80=AFAM Miao Wang via B4 Relay
>>>>> <[email protected]> wrote:
>>>>>>=20
>>>>>> 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.
>>>>>>=20
>>>>>> 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.
>>>>>>=20
>>>>>> 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.
>>>>>=20
>>>>> BMC core, IPMI and simpledrm display are usually (if not always)
>>>>> supposed to work as early as possible.
>>>>=20
>>>> I believe that it should be the user's decision to choose whether =
to
>>>> compile a module into the kernel or as a module and it would be =
better
>>>> if we can provide the possibilities for the user to choose from.
>>>> Additionally, I don't think these modules are supposed to work that
>>>> early. The mfd module provide two functions, the display and the =
ipmi
>>>> device. In the aspect of graphical display, without this module, =
the
>>>> user can still see the output during booting on their monitors, =
since
>>>> efifb is working, providing a basic display function. In the aspect =
of
>>>> the ipmi device, I don't think the lack of such device will =
influence
>>>> the boot of the system, since it is a common practice to compile =
ipmi
>>>> device drivers as modules on other architectures. As a result, =
neither
>>>> of the two functions are required to be loaded that early and it is
>>>> reasonable to at lease leave the choice to compile it as a module
>>>> to the user.
>>> Flexibility is not always useful, if a config doesn't provide good
>>> effect, then it just increases complexity and makes maintenance more
>>> difficult.
>>=20
>> I should emphasize that to allow this driver to be a module, there is
>> no such increase on maintenance. Moreover, not all loongarch machines
>> are requiring this driver. Especially only a part of the server =
models
>> are quipped with this BMC. Comparing with other architectures, the
>> driver for BMC are normally compiled as a module, such as mgag200 for
>> iLO from HPE and iDRAC from DELL, hibmc_drm for Kunpeng server from
>> Huawei. None of these BMC drivers requiring to be compiled into the
>> kernel. I cannot see there is any reason keeping the driver from =
being
>> allowed to be compiled as a module. I also do not think it will bring
>> any significant maintenance burden. Implementing correct cleanup code
>> should be necessary instead of burden.
> Can we split into two series, one fix bugs and the others make bmc =
modular?
>=20
> Otherwise I don't think we can reach a consensus in the near future.

I accept different opinions on design trade-offs. However, I don't think
you have provided enough excuses to remain this driver as built-in,
since I believe normally in kernel, most non-core drivers are all able
to be compiled as a module. I also provided some examples from devices
with similar functions. As a result, I'll not split this series before
there is indeed a strong reason against allowing this driver to be
compiled as a module or we may have a great benefit if we force this
module to be compiled built-in.

Cheers,

Miao Wang=