Re: [PATCH 2/4] ipmi: Disable sysfs access and requests in maintenance mode
From: Frederick Lawler
Date: Fri Aug 08 2025 - 16:38:03 EST
Hi Corey,
On Thu, Aug 07, 2025 at 06:02:33PM -0500, Corey Minyard wrote:
> If the driver goes into any maintenance mode, disable sysfs access until
> it is done.
>
Why specifically sysfs reads during FW update state? Is there an expectation
that during a FW update, that redfish/ipmi/etc... are chunking/buffering the
FW payloads to the device, thus needs write access? I'm assuming that the
device is blocking waiting for paylods to finish, so sending additional messages
just get ignored?
> If the driver goes into reset maintenance mode, disable all messages
> until it is done.
>
> Signed-off-by: Corey Minyard <corey@xxxxxxxxxxx>
> ---
> drivers/char/ipmi/ipmi_msghandler.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
> index f124c0b33db8..72f5f4a0c056 100644
> --- a/drivers/char/ipmi/ipmi_msghandler.c
> +++ b/drivers/char/ipmi/ipmi_msghandler.c
> @@ -2338,6 +2338,11 @@ static int i_ipmi_request(struct ipmi_user *user,
>
> if (!run_to_completion)
> mutex_lock(&intf->users_mutex);
> + if (intf->maintenance_mode_state == IPMI_MAINTENANCE_MODE_STATE_RESET) {
> + /* No messages while the BMC is in reset. */
> + rv = -EBUSY;
> + goto out_err;
> + }
> if (intf->in_shutdown) {
> rv = -ENODEV;
> goto out_err;
> @@ -2639,6 +2644,12 @@ static int __bmc_get_device_id(struct ipmi_smi *intf, struct bmc_device *bmc,
> (bmc->dyn_id_set && time_is_after_jiffies(bmc->dyn_id_expiry)))
> goto out_noprocessing;
>
> + /* Don't allow sysfs access when in maintenance mode. */
> + if (intf->maintenance_mode_state) {
> + rv = -EBUSY;
> + goto out_noprocessing;
> + }
> +
> prev_guid_set = bmc->dyn_guid_set;
> __get_guid(intf);
>
> --
> 2.43.0
>
Best, Fred