On 02/12/2017 07:01 PM, Benjamin Herrenschmidt wrote: > On Mon, 2017-02-13 at 13:21 +1300, Eric W. Biederman wrote: >>> Good point, at the very least we should call remove if shutdown doesn't >>> exist. Eric: could we make the changes Ben suggests? >> >> Definitely. That was the original design of the kexec interface >> but people were worried about calling remove during reboot might >> introduce regressions on the reboot functionality. So shutdown was >> added to be remove without the cleaning up the kernel data structures. > > Right. Part of the problem was also that remove was dependent on CONFIG_HOTPLUG > though that's no longer the case anymore. > > The problem is that a bunch of drivers either don't have a shutdown or > worse, have one that actually shuts the HW down rather than "idle" it > which puts it in a state that the new kernel can't deal with. If we do transition to use remove rather than shutdown, I think we want some way for a device driver to know whether we are doing kexec or not. A RAID adapter with a write cache is going to want to flush its write cache on a PCI hotplug remove, but for a kexec, its going to want to skip that so the kexec is faster. Today, since kexec looks like a reboot, rather than a shutdown, we can skip the flush on a reboot, since its technically not needed there either. -Brian -- Brian King Power Linux I/O IBM Linux Technology Center