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

Thomas, Ramesh <ramesh.thomas at intel.com>
Newsgroups dev.linux.lists.accel-config
Message-ID <BYAPR11MB2535BBDAEEBF5F1440DD31D0ED769@BYAPR11MB2535.namprd11.prod.outlook.com>
On Tue, Apr 06, 2021 at 10:44:30AM -0700, Dave Jiang wrote:
> 
> 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.

It returns an error and prints "FATAL" in the message so it does look
like a real bug. I think I know what is going on, though I don't know
why. When the second module is unloaded, modprobe also unloads idxd.
Which means whenever it unloads either idxd_mdev or idxd_uacce, it tries
to unload idxd and fails if another module dependent on idxd is still
loaded blocking idxd from getting unloaded. Do you think idxd should
maintain a reference count or similar indication so modprobe does not
try to unload it when a dependent module is unloaded while other
dependent ones are still active?

> 
> 
> >
> > 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.

rmmod does not complain. For now I can us it instead of modprobe.
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.