Device driver .shutdown() VS .remove()

jim.cromie at jim.cromie at
Thu Apr 22 14:05:52 EDT 2021

On Thu, Apr 22, 2021 at 1:37 AM Luca Ceresoli <luca at> wrote:

> Hello,
> despite having been searching for documentation I couldn't find out the
> exact and detailed difference between the .shutdown() and .remove()
> calls in struct device_driver.
so, I'll start by saying I know next to nothing, but most of what you said
sounds good

> From the above it looks like the shutdown() actions must be a subset of
> remove() actions.
but subset is a bit vague.
theres 2 dimensions to think about.
lifetime -  shutdown/startup is surely the longer window, add/remove happen
within that
hierarchy - subsystems must be ready to handle add / remove

fwiw, I 'grepped' (with ack), it shows a few drivers with both functions,
many others with just remove
you could see in detail what the difference is.

$> ack '(\.remove|\.shutdown)\b' drivers/

645: .remove = twl_rtc_remove,
646: .shutdown = twl_rtc_shutdown,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Kernelnewbies mailing list