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

Reply via email to