On Thu,  4 Sep 2025 13:10:59 +1000
Wilfred Mallawa <wilfred.opensou...@gmail.com> wrote:

> From: Wilfred Mallawa <wilfred.mall...@wdc.com>
> 
> This patch extends the existing support we have for NVMe with only DoE
> to also add support to SPDM over the NVMe Security Send/Recv commands.
> 
> With the new definition of the `spdm-trans` argument, users can specify
> `spdm_trans=nvme` or `spdm_trans=doe`. This allows us to select the SPDM
> transport respectively. SPDM over the NVMe Security Send/Recv commands
> are defined in the DMTF DSP0286.

Question on lack of default inline.

Jonathan

> 
> Signed-off-by: Wilfred Mallawa <wilfred.mall...@wdc.com>
> ---
>  docs/specs/spdm.rst         | 10 +++++++--
>  hw/nvme/ctrl.c              | 45 ++++++++++++++++++++++++++++---------
>  include/hw/pci/pci_device.h |  2 ++
>  3 files changed, 44 insertions(+), 13 deletions(-)
> 
> diff --git a/docs/specs/spdm.rst b/docs/specs/spdm.rst
> index f7de080ff0..dd6cfbbd68 100644
> --- a/docs/specs/spdm.rst
> +++ b/docs/specs/spdm.rst
> @@ -98,7 +98,7 @@ Then you can add this to your QEMU command line:
>  .. code-block:: shell
>  
>      -drive file=blknvme,if=none,id=mynvme,format=raw \
> -        -device nvme,drive=mynvme,serial=deadbeef,spdm_port=2323
> +        -device 
> nvme,drive=mynvme,serial=deadbeef,spdm_port=2323,spdm_trans=doe
>  
>  At which point QEMU will try to connect to the SPDM server.
>  
> @@ -113,7 +113,13 @@ of the default. So the entire QEMU command might look 
> like this
>          -append "root=/dev/vda console=ttyS0" \
>          -net none -nographic \
>          -drive file=blknvme,if=none,id=mynvme,format=raw \
> -        -device nvme,drive=mynvme,serial=deadbeef,spdm_port=2323
> +        -device 
> nvme,drive=mynvme,serial=deadbeef,spdm_port=2323,spdm_trans=doe

I wonder if, for command line backwards compatibility we should have a default
of doe if no spdm_trans parameter is provided?

> +
> +The `spdm_trans` argument defines the underlying transport type that is 
> emulated
> +by QEMU. For an PCIe NVMe controller, both "doe" and "nvme" are supported. 
> Where,
> +"doe" does SPDM transport over the PCIe extended capability Data Object 
> Exchange
> +(DOE), and "nvme" uses the NVMe Admin Security Send/Receive commands to
> +implement the SPDM transport.
>  
>  .. _DMTF:
>     https://www.dmtf.org/standards/SPDM
> diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> index df72599bcc..e485e0584e 100644
> --- a/hw/nvme/ctrl.c
> +++ b/hw/nvme/ctrl.c

> @@ -9308,6 +9326,7 @@ static const Property nvme_props[] = {
>                       false),
>      DEFINE_PROP_UINT16("mqes", NvmeCtrl, params.mqes, 0x7ff),
>      DEFINE_PROP_UINT16("spdm_port", PCIDevice, spdm_port, 0),
> +    DEFINE_PROP_SPDM_TRANS_NODEFAULT("spdm_trans", PCIDevice, spdm_trans),

As above. I think a default is appropriate here.

>      DEFINE_PROP_BOOL("ctratt.mem", NvmeCtrl, params.ctratt.mem, false),
>      DEFINE_PROP_BOOL("atomic.dn", NvmeCtrl, params.atomic_dn, 0),
>      DEFINE_PROP_UINT16("atomic.awun", NvmeCtrl, params.atomic_awun, 0),


Reply via email to