Thread (4 messages) flat view 4 messages, 3 authors, 2021-03-05

Re: [RFC PATCH net] ibmvnic: complete dev->poll nicely during adapter reset

From: Sukadev Bhattiprolu <hidden>
Date: 2021-03-05 19:06:22

Lijun Pan [lijunp213@gmail.com] wrote:
On Fri, Mar 5, 2021 at 12:44 PM Sukadev Bhattiprolu
[off-list ref] wrote:
quoted
Lijun Pan [ljp@linux.ibm.com] wrote:
quoted
The reset path will call ibmvnic_cleanup->ibmvnic_napi_disable
->napi_disable(). This is supposed to stop the polling.
Commit 21ecba6c48f9 ("ibmvnic: Exit polling routine correctly
during adapter reset") reported that the during device reset,
polling routine never completed and napi_disable slept indefinitely.
In order to solve that problem, resetting bit was checked and
napi_complete_done was called before dev->poll::ibmvnic_poll exited.

Checking for resetting bit in dev->poll is racy because resetting
bit may be false while being checked, but turns true immediately
afterwards.
Yes, have been testing a fix for that.
quoted
Hence we call napi_complete in ibmvnic_napi_disable, which avoids
the racing with resetting, and makes sure dev->poll and napi_disalbe
napi_complete() will prevent a new call to ibmvnic_poll() but what if
ibmvnic_poll() is already executing and attempting to access the scrqs
while the reset path is freeing them?
napi_complete() and napi_disable() are called in the earlier stages of
reset path, i.e. before reset path actually calls the functions to
freeing scrqs.
Yes, those will prevent a _new_ call to poll right?

But what if poll is already executing? What prevents it from accessing
an scrq that the reset path will free?
So I don't think this is a issue here.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help