[PATCH v4 0/2] hw/nvme: add monitor commands for inspecting state

Mateusz Nowicki posted 2 patches 3 weeks, 4 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1782819251.git.mateusz.nowicki@posteo.net
Maintainers: "Dr. David Alan Gilbert" <dave@treblig.org>, Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>, Jesper Devantier <foss@defmacro.it>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, "Philippe Mathieu-Daudé" <philmd@mailo.com>, Zhao Liu <zhao1.liu@intel.com>
hmp-commands-info.hx   |  28 +++++++++
hw/nvme/meson.build    |   4 +-
hw/nvme/monitor-stub.c |  21 +++++++
hw/nvme/monitor.c      | 139 +++++++++++++++++++++++++++++++++++++++++
qapi/machine.json      |  34 ++++++++++
5 files changed, 225 insertions(+), 1 deletion(-)
create mode 100644 hw/nvme/monitor-stub.c
create mode 100644 hw/nvme/monitor.c
[PATCH v4 0/2] hw/nvme: add monitor commands for inspecting state
Posted by Mateusz Nowicki 3 weeks, 4 days ago
Add two HMP commands for inspecting emulated NVMe controllers from
the QEMU monitor without attaching gdb to the QEMU process:

  - 'info nvme'        - per-controller summary (PCI, identify
                         fields, CC/CSTS/AQA, queue counts)
  - 'info nvme-queues' - per-queue listing of admin and I/O SQ/CQ
                         (size, head/tail, PRP1, doorbell offset,
                         phase tag)

Useful for verifying queue setup, doorbell rings, AERs held in the
admin SQ and similar driver/controller interaction details from a
running QEMU monitor.

Changes in v4:
  - Drop the v3 attempt to gate the new commands with
    'if': 'CONFIG_NVME_PCI'.  CONFIG_NVME_PCI is a device symbol and
    is poisoned in common code, so the generated qapi-introspect.c
    failed to build (reported by Klaus Jensen).  Instead the x-query
    commands stay unconditional and hw/nvme/monitor-stub.c provides
    qmp_x_query_nvme[_queues]() stubs, built when CONFIG_NVME_PCI is
    not set, so targets without NVMe (e.g. riscv64-softmmu) link.

Changes in v3:
  - hw/nvme/meson.build: keep the source file list alphabetically
    sorted (Markus).

Changes in v2:
  - hw/nvme/meson.build: add the missing trailing newline (Markus).
  - Pick up Acked-by tags from Dr. David Alan Gilbert and Markus
    Armbruster on both patches.

v3: https://lore.kernel.org/qemu-devel/20260626112116.7621-1-mateusz.nowicki@posteo.net/
v2: https://lore.kernel.org/qemu-devel/cover.1778694320.git.mateusz.nowicki@posteo.net/
v1: https://lore.kernel.org/qemu-devel/cover.1778409416.git.mateusz.nowicki@posteo.net/

Mateusz Nowicki (2):
  hw/nvme: add 'info nvme' HMP command
  hw/nvme: add 'info nvme-queues' HMP command

 hmp-commands-info.hx   |  28 +++++++++
 hw/nvme/meson.build    |   4 +-
 hw/nvme/monitor-stub.c |  21 +++++++
 hw/nvme/monitor.c      | 139 +++++++++++++++++++++++++++++++++++++++++
 qapi/machine.json      |  34 ++++++++++
 5 files changed, 225 insertions(+), 1 deletion(-)
 create mode 100644 hw/nvme/monitor-stub.c
 create mode 100644 hw/nvme/monitor.c

-- 
2.53.0
Re: [PATCH v4 0/2] hw/nvme: add monitor commands for inspecting state
Posted by Klaus Jensen 3 weeks, 2 days ago
On Jun 30 11:52, Mateusz Nowicki wrote:
> Add two HMP commands for inspecting emulated NVMe controllers from
> the QEMU monitor without attaching gdb to the QEMU process:
> 
>   - 'info nvme'        - per-controller summary (PCI, identify
>                          fields, CC/CSTS/AQA, queue counts)
>   - 'info nvme-queues' - per-queue listing of admin and I/O SQ/CQ
>                          (size, head/tail, PRP1, doorbell offset,
>                          phase tag)
> 
> Useful for verifying queue setup, doorbell rings, AERs held in the
> admin SQ and similar driver/controller interaction details from a
> running QEMU monitor.
> 
> Changes in v4:
>   - Drop the v3 attempt to gate the new commands with
>     'if': 'CONFIG_NVME_PCI'.  CONFIG_NVME_PCI is a device symbol and
>     is poisoned in common code, so the generated qapi-introspect.c
>     failed to build (reported by Klaus Jensen).  Instead the x-query
>     commands stay unconditional and hw/nvme/monitor-stub.c provides
>     qmp_x_query_nvme[_queues]() stubs, built when CONFIG_NVME_PCI is
>     not set, so targets without NVMe (e.g. riscv64-softmmu) link.
> 
> Changes in v3:
>   - hw/nvme/meson.build: keep the source file list alphabetically
>     sorted (Markus).
> 
> Changes in v2:
>   - hw/nvme/meson.build: add the missing trailing newline (Markus).
>   - Pick up Acked-by tags from Dr. David Alan Gilbert and Markus
>     Armbruster on both patches.
> 
> v3: https://lore.kernel.org/qemu-devel/20260626112116.7621-1-mateusz.nowicki@posteo.net/
> v2: https://lore.kernel.org/qemu-devel/cover.1778694320.git.mateusz.nowicki@posteo.net/
> v1: https://lore.kernel.org/qemu-devel/cover.1778409416.git.mateusz.nowicki@posteo.net/
> 
> Mateusz Nowicki (2):
>   hw/nvme: add 'info nvme' HMP command
>   hw/nvme: add 'info nvme-queues' HMP command
> 
>  hmp-commands-info.hx   |  28 +++++++++
>  hw/nvme/meson.build    |   4 +-
>  hw/nvme/monitor-stub.c |  21 +++++++
>  hw/nvme/monitor.c      | 139 +++++++++++++++++++++++++++++++++++++++++
>  qapi/machine.json      |  34 ++++++++++
>  5 files changed, 225 insertions(+), 1 deletion(-)
>  create mode 100644 hw/nvme/monitor-stub.c
>  create mode 100644 hw/nvme/monitor.c
> 
> -- 
> 2.53.0
> 
> 

Thanks for the fix, back in nvme.next :)