[Accel-config] Re: [PATCH] accel-config/test: load/unload uacce module at cleanup

Dave Jiang <dave.jiang at intel.com>
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>
On 4/6/2021 10:32 AM, Thomas, Ramesh wrote:
> On Tue, Apr 06, 2021 at 08:55:43AM -0700, Dave Jiang wrote:
>> On 4/5/2021 5:45 PM, ramesh.thomas(a)intel.com wrote:
>>> From: Ramesh Thomas <ramesh.thomas(a)intel.com>
>>>
>>> Cleanup unloads and reloads all idxd kernel modules. This is broken due
>>> to idxd_module depending on idxd module. The order of idxd_mdev and
>>> idxd_uacce modules are not fixed requiring additional checks during the
>>> process.
>>>
>>> Signed-off-by: Tony Zhu <tony.zhu(a)intel.com>
>>> Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
>> I would maybe add a comment explaining the weird behavior observed.
> I have a new finding. Even though "modprobe -r" returns failure and
> prints error message "modprobe: FATAL: Module idxd is in use.", the
> module is still unloaded. It does not give that error on the second
> module that is unloaded so I earlier thought it has to do with the
> order. This seems to be a bug in the driver and is easily reproducible.

Hmm.....if so it would be more in the device driver framework than the 
driver. The driver only supply the init/remove callbacks. It doesn't 
have any control over the load/unload mechanism. It can hold ref count 
on the module, but we don't do that.


>
> Since it returns failure, the test script aborts with error. I will
> modify the workaround to not trap on the error and continue. That way we
> don't need the second unload attempt of the same module. I will add
> a comment describing this as a workaround for the above behavior.
>
Does rmmod complain? That's usually what I use.


>> Reviewed-by: Dave Jiang <dave.jiang(a)intel.com>
>>
>>
>>> ---
>>>    test/common | 9 +++++++++
>>>    1 file changed, 9 insertions(+)
>>>
>>> diff --git a/test/common b/test/common
>>> index 4bd4ed3..e6e84dd 100644
>>> --- a/test/common
>>> +++ b/test/common
>>> @@ -99,6 +99,14 @@ check_prereq()
>>>    #
>>>    _cleanup()
>>>    {
>>> +lsmod | grep -q "idxd_mdev" && {
>>> +modprobe -r idxd_mdev 2>/dev/null || :
>>> +sleep 1
>>> +}
>>> +lsmod | grep -q "idxd_uacce" && {
>>> +modprobe -r idxd_uacce
>>> +sleep 1
>>> +}
>>>    lsmod | grep -q "idxd_mdev" && {
>>>    modprobe -r idxd_mdev
>>>    sleep 1
>>> @@ -108,6 +116,7 @@ _cleanup()
>>>    sleep 1
>>>    }
>>>    modprobe idxd
>>> +sleep 1
>>>    }
>>>
>>>    # json2var
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.