[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <24d3e9ed-0e56-40d6-b53f-e379855aa740@linux.intel.com>
Date: Fri, 17 May 2024 15:31:58 +0200
From: Dawid Osuchowski <dawid.osuchowski@...ux.intel.com>
To: Jakub Kicinski <kuba@...nel.org>, Tony Nguyen <anthony.l.nguyen@...el.com>
Cc: davem@...emloft.net, pabeni@...hat.com, edumazet@...gle.com,
netdev@...r.kernel.org, Ngai-Mint Kwan <ngai-mint.kwan@...el.com>,
Mateusz Polchlopek <mateusz.polchlopek@...el.com>,
Pawel Chmielewski <pawel.chmielewski@...el.com>,
Simon Horman <horms@...nel.org>,
Pucha Himasekhar Reddy <himasekharx.reddy.pucha@...el.com>,
larysa.zaremba@...el.com
Subject: Re: [PATCH net] ice: Do not get coalesce settings while in reset
On 06.05.2024 15:30, Dawid Osuchowski wrote:
> On 02.05.2024 04:56, Jakub Kicinski wrote:
>> Did you not add locks around reset to allow waiting instead of returning
>> -EBUSY to user space? I feel like we've been over this...
>
> Will use the approach with ice_wait_for_reset() in next revision, thanks
>
> --Dawid
Hey Jakub,
I went ahead with the approach of using ice_wait_for_reset() [1],
however this resulted in a new problem in the reset flow. I want to
prove why I think returning immediately with -EBUSY (or perhaps -EAGAIN)
is the correct way in this particular case.
The issue has to deal with the way both the ethtool handler and the
adapter reset flow call rtnl_lock() during operation. If we wait for
reset completion inside of an ethtool handling function such as
ice_get_coalesce(), the wait will always timeout due to reset being
blocked by rtnl_lock() inside of ice_queue_set_napi() (which is called
during reset process), and in turn we will always return -EBUSY anyways,
with the added hang time of the timeout value (in case of [1] it's 10
seconds).
There are other places where similar deadlock can occur, not only in
ice_queue_set_napi() and Larysa is currently working on an extensive
solution to this problem.
--Dawid
[1]
https://lore.kernel.org/netdev/20240506153307.114104-1-dawid.osuchowski@linux.intel.com/
Powered by blists - more mailing lists