On Mon, Jul 20, 2026 at 11:42:31AM +0200, [email protected] wrote: > On 7/17/26 00:33, [email protected] wrote: > > From: Denis Mukhin <[email protected]> > > > > Make nvme_shutdown() public so that it can be re-used in > > board-specific board_quiesce_devices() before OS hand-off. > > > > Signed-off-by: Denis Mukhin <[email protected]> > > --- > > Changes since v2: > > - fixup for apple device > > > > Changes since v1: > > - n/a > > --- > > drivers/nvme/nvme.h | 7 ------- > > drivers/nvme/nvme_apple.c | 1 + > > include/nvme.h | 11 +++++++++++ > > 3 files changed, 12 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h > > index a938da728506..cc1477717391 100644 > > --- a/drivers/nvme/nvme.h > > +++ b/drivers/nvme/nvme.h > > @@ -703,11 +703,4 @@ struct nvme_ops { > > */ > > int nvme_init(struct udevice *udev); > > -/** > > - * nvme_shutdown() - Shutdown NVM Express device > > - * @udev: The NVM Express device > > - * Return: 0 if OK, -ve on error > > - */ > > -int nvme_shutdown(struct udevice *udev); > > - > > #endif /* __DRIVER_NVME_H__ */ > > diff --git a/drivers/nvme/nvme_apple.c b/drivers/nvme/nvme_apple.c > > index 7e7538553e3f..a36f15a3ff4e 100644 > > --- a/drivers/nvme/nvme_apple.c > > +++ b/drivers/nvme/nvme_apple.c > > @@ -6,6 +6,7 @@ > > #include <dm.h> > > #include <mailbox.h> > > #include <mapmem.h> > > +#include <nvme.h> > > #include "nvme.h" > > #include <reset.h> > > diff --git a/include/nvme.h b/include/nvme.h > > index 2cdf8ce320c1..c7b301300097 100644 > > --- a/include/nvme.h > > +++ b/include/nvme.h > > @@ -90,4 +90,15 @@ int nvme_print_info(struct udevice *udev); > > */ > > int nvme_get_namespace_id(struct udevice *udev, u32 *ns_id, u8 *eui64); > > +/** > > + * nvme_shutdown() - Shutdown NVM Express device > > + * > > + * Must be called before booting an OS to ensure cache is flushed > > + * and the controller is in a clean state for OS to re-initialize. > > + * > > + * @udev: The NVM Express device > > + * Return: 0 if OK, -ve on error > > + */ > > +int nvme_shutdown(struct udevice *udev); > > + > > #endif /* __NVME_H__ */ > > Could you instead add the DM_FLAG_ACTIVE_DMA flag to the PCI NVMe driver and > then call nvme_shutdown() from a new nvem_remove in nvem_pci.c
Thanks for suggestion! Will check that path. > > This will automatically shutdown the NVMe devices when booting an OS and you > could > trigger this manually by calling: > > dm_remove_devices_flags(DM_REMOVE_ACTIVE_DMA) > > Neil
