[U-Boot] [PATCH 1/2] nvme: add accessor to namespace id and eui64

Bin Meng bmeng.cn at gmail.com
Thu Oct 3 11:13:24 UTC 2019


On Thu, Oct 3, 2019 at 7:01 PM Patrick Wildt <patrick at blueri.se> wrote:
>
> This adds a function which can be used by e.g. EFI to retrieve
> the namespace identifier and EUI64.  For that it adds the EUI64
> to its driver internal namespace structure and copies the EUI64
> during namespace identification.
>
> Signed-off-by: Patrick Wildt <patrick at blueri.se>
> ---
>  drivers/nvme/nvme.c | 13 +++++++++++++
>  drivers/nvme/nvme.h |  1 +
>  include/nvme.h      | 12 ++++++++++++
>  3 files changed, 26 insertions(+)
>
> diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
> index 47f101e280..99e859d1e9 100644
> --- a/drivers/nvme/nvme.c
> +++ b/drivers/nvme/nvme.c
> @@ -621,6 +621,18 @@ static int nvme_get_info_from_identify(struct nvme_dev *dev)
>         return 0;
>  }
>
> +u32 nvme_get_namespace_id(struct udevice *udev, u32 *ns_id, u8 *eui64)

This does not match the declaration. The return value should be int.

> +{
> +       struct nvme_ns *ns = dev_get_priv(udev);
> +
> +       if (ns_id)
> +               *ns_id = ns->ns_id;
> +       if (eui64)
> +               memcpy(eui64, ns->eui64, sizeof(ns->eui64));
> +
> +       return 0;
> +}
> +
>  int nvme_scan_namespace(void)
>  {
>         struct uclass *uc;
> @@ -657,6 +669,7 @@ static int nvme_blk_probe(struct udevice *udev)
>         if (nvme_identify(ndev, ns->ns_id, 0, (dma_addr_t)(long)id))
>                 return -EIO;
>
> +       memcpy(&ns->eui64, &id->eui64, sizeof(id->eui64));
>         flbas = id->flbas & NVME_NS_FLBAS_LBA_MASK;
>         ns->flbas = flbas;
>         ns->lba_shift = id->lbaf[flbas].ds;
> diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h
> index 922f7abfe8..0e8cb221a7 100644
> --- a/drivers/nvme/nvme.h
> +++ b/drivers/nvme/nvme.h
> @@ -637,6 +637,7 @@ struct nvme_ns {
>         struct list_head list;
>         struct nvme_dev *dev;
>         unsigned ns_id;
> +       u8 eui64[8];
>         int devnum;
>         int lba_shift;
>         u8 flbas;
> diff --git a/include/nvme.h b/include/nvme.h
> index 2c3d14d241..2cdf8ce320 100644
> --- a/include/nvme.h
> +++ b/include/nvme.h
> @@ -78,4 +78,16 @@ int nvme_scan_namespace(void);
>   */
>  int nvme_print_info(struct udevice *udev);
>
> +/**
> + * nvme_get_namespace_id - return namespace identifier
> + *
> + * This returns the namespace identifier.
> + *
> + * @udev:      NVMe controller device
> + * @ns_id:     Place where to put the name space identifier
> + * @eui64:     Place where to put the IEEE Extended Unique Identifier
> + * @return:    0 on success, -ve on error
> + */
> +int nvme_get_namespace_id(struct udevice *udev, u32 *ns_id, u8 *eui64);
> +
>  #endif /* __NVME_H__ */
> --

Other than that,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>


More information about the U-Boot mailing list