Re: [PATCH v5 2/2] mfd: loongson-se: Fix miscellaneous issues

Qunqin Zhao <[email protected]> Wed, 5 Aug 2026 17:42:20 +0800
Newsgroups org.kernel.vger.linux-crypto,dev.linux.lists.loongarch,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
在 2026/8/4 22:29, Huacai Chen 写道:
> On Tue, Aug 4, 2026 at 10:09 AM Qunqin Zhao <[email protected]> wrote:
>>
>> 在 2026/8/3 16:01, Huacai Chen 写道:
>>> Hi, Qunqin,
>>>
>>> On Thu, Jul 30, 2026 at 4:41 PM Qunqin Zhao <[email protected]> wrote:
>>>    int loongson_se_send_engine_cmd(struct loongson_se_engine *engine)
>>>    {
>>> +       int err;
>>> +
>>> +       mutex_lock(&engine->se->cmd_lock);
>>> +
>>> +       reinit_completion(&engine->completion);
>>> +
>>>           /*
>>>            * After engine initialization, the controller already knows
>>>            * where to obtain engine commands from. Now all we need to
>>>            * do is notify the controller that the engine needs to be started.
>>>            */
>>> -       int err = loongson_se_poll(engine->se, BIT(engine->id));
>>> +       err = loongson_se_poll(engine->se, BIT(engine->id));
>>> +
>>> +       mutex_unlock(&engine->se->cmd_lock);
>>>
>>>           if (err)
>>>                   return err;
>>> @@ -97,7 +109,7 @@ struct loongson_se_engine *loongson_se_init_engine(struct device *dev, int id)
>>>
>>>           engine->se = se;
>>>           engine->id = id;
>>> -       init_completion(&engine->completion);
>>> +       reinit_completion(&engine->completion);
>>> I'm not sure, but I think loongson_se_init_engine() is only called at
>>> init, so we need init_completion here.
>> To prevent an spurious interrupt from completing an uninitialized object,
>> all objects have already been fully initialized with init_completion during the probe stage.
> In my opinion, if a function can be called multiple times, we need
> reinit_completion(), if it is only called for probe, we need
> init_completion(), and loongson_se_init_engine() looks like the later
> case.

I'm not sure. If init_completion twice works too, let's go with 
init_completion then.

Thanks

>
> Huacai
>