Re: [PATCH net-next RFC 01/13] devlink: Add reload level option to devlink reload command

From: Moshe Shemesh
Date: Sun Aug 09 2020 - 09:21:45 EST



On 8/6/2020 9:25 PM, Jakub Kicinski wrote:
On Wed, 5 Aug 2020 13:02:58 +0200 Jiri Pirko wrote:
Tue, Aug 04, 2020 at 10:39:46PM CEST, kuba@xxxxxxxxxx wrote:
AFAIU the per-driver default is needed because we went too low
level with what the action constitutes. We need maintain the higher
level actions.

The user clearly did not care if FW was reset during devlink reload
before this set, so what has changed? The objective user has is to
Well for mlxsw, the user is used to this flow:
devlink dev flash - flash new fw
devlink dev reload - new fw is activated and reset and driver instances
are re-created.
Ugh, if the current behavior already implies fw-activation for some
drivers then the default has to probably be "do all the things" :S


Okay, so devlink reload default for mlx5 will include also fw-activate to align with mlxsw default.

Meaning drivers that supports fw-activate will add it to the default.

The flow of devlink reload default on mlx5 will be:

If there is FW image pending and live patch is suitable to apply, do live patch and driver re-initialization.

If there is FW image pending but live patch doesn't fit do fw-reset and driver-initialization.

If no FW image pending just do driver-initialization.


I still think I should on top of that add the level option to be selected by the user if he prefers a specific action, so the uAPI would be:

devlink dev reload [ netns { PID | NAME | ID } ] [ level { fw-live-patch | driver-reinit |fw-activate } ]

But I am still missing something: fw-activate implies that it will activate a new FW image stored on flash, pending activation. What if the user wants to reset and reload the FW if no new FW pending ? Should we add --force option to fw-activate level ?


activate their config / FW / move to different net ns.

Reloading the driver or resetting FW is a low level detail which
achieves different things for different implementations. So it's
not a suitable abstraction -> IOW we need the driver default.
I'm confused. So you think we need the driver default?
No, I'm talking about the state of this patch set. _In this patchset_
we need a driver default because of the unsuitable abstraction.

Better design would not require it.

The work flow for the user is:

0. download fw to /lib/firmware
1. devlink flash $dev $fw
2. if live activation is enabled
yes - devlink reload $dev $live-activate
no - report machine has to be drained for reboot

fw-reset can't be $live-activate, because as Jake said fw-reset does
not activate the new image for Intel. So will we end up per-driver
defaults in the kernel space, and user space maintaining a mapping from
Well, that is what what is Moshe's proposal. Per-driver kernel default..
I'm not sure what we are arguing about then :/
The fact that if I do a pure "driver reload" it will active new
firmware for mlxsw but not for mlx5. In this patchset for mlx5 I need
driver reload fw-reset. And for Intel there is no suitable option.

a driver to what a "level" of reset implies.

I hope this makes things crystal clear. Please explain what problems
you're seeing and extensions you're expecting. A list of user scenarios
you foresee would be v. useful.