From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH 00/40] Make HMP optional (and later standalone)
Date: Thu, 21 May 2026 08:55:54 +0100 [thread overview]
Message-ID: <ag66inUz7qe7YwrS@redhat.com> (raw)
In-Reply-To: <20260521-qemu-no-hmp-v1-0-d104f809e145@redhat.com>
On Thu, May 21, 2026 at 01:49:01AM +0400, Marc-André Lureau wrote:
> Hi,
>
> This series makes HMP compile-time optional via --disable-hmp. The
> resulting binary speaks only QMP - reducing the attack surface, binary
> size and enforcing a separation between machine-readable interface and
> interactive debugging console.
>
> QMP offers almost all the functionality HMP could provide, so a separate
> standalone "HMP-like" console could be implemented on top of it. The
> rough list of missing commands (+complexity estimation) after this
> series:
When you say "complexity estimation" is that an estimate for doing
a well designed QMP implementation ?
My view is that for anything still HMP-only, we should do a quick
& dirty hack, where we just expose the existing functionality
directly as QMP without any modelling, but mark it unstable. That
would make everything be largely easy.
If we expect proper QMP design, then the job will never get finished.
> Debugging / introspection:
> - info registers (medium) - plus $reg expression handling
> - x/xp read memory (medium)
> - gpa2hpa/gpa2hva/gva2gpa address translation (medium)
> - info lapic (high) - deep x86 APIC state, lots of registers
> - info mem (high) - virtual memory mappings, different per arch
> - info tlb (high) - virt-to-phys mappings, also per arch
> - info mtree (high) - memory region tree, multiple view modes
> - info skeys (medium) - s390x storage keys
> - info cmma (medium) - s390x CMMA values
> - info qdm (easy) - could probably be folded into QOM introspection
> - info qtree (medium) - same, maybe QOM introspection is enough
> - info snapshots (medium)
> - info usbhost (medium)
> - info via (medium) -- VIA south bridge state
>
> Simple actions / settings:
> - gdbserver (trivial)
> - boot_set (easy)
> - mce (easy) - x86 MCE injection
> - sum (easy) - memory checksum
> - sync-profile (easy) - enable/disable/reset
> - info sync-profile (medium)
> - one-insn-per-tb (easy) - could be a QOM property on the accelerator
> - pcie_aer_inject_error (easy)
> - migration_mode (medium?)
> - i/o ioport read/write (easy)
> - hostfwd-add/hostfwd-remove (medium) - slirp port forwarding
> - log/logfile (medium)
> - trace-file (medium)
>
> Also, to let clients do disassembly on their side, it'd be useful to
> have something like "query-disassemble-info" that gives the client what
> architecture and endianness is used etc.
>
> In the meantime, being able to build without HMP is valuable and helps
> identifying the missing pieces. The series does so by steps:
>
> - preparatory cleanups and bug fixes
> - add commands without QMP equivalent and needed for tests
> - convert most iotests and qtests from HMP to QMP
> - guard HMP-only code paths
> - make HMP source files conditional in the build system
>
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
next prev parent reply other threads:[~2026-05-21 7:56 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 21:49 [PATCH 00/40] Make HMP optional (and later standalone) Marc-André Lureau
2026-05-20 21:49 ` [PATCH 01/40] vl: fix -monitor none prefix matching Marc-André Lureau
2026-05-20 21:49 ` [PATCH 02/40] hmp: remove 'vcpu' argument from trace-event help Marc-André Lureau
2026-05-21 5:50 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 03/40] hmp: fix snapshot_blkdev argument type Marc-André Lureau
2026-05-20 21:49 ` [PATCH 04/40] target/i386: decouple cpu_x86_inject_mce() from Monitor Marc-André Lureau
2026-05-21 5:49 ` Philippe Mathieu-Daudé
2026-05-29 21:28 ` marcandre.lureau
2026-05-20 21:49 ` [PATCH 05/40] system: move gpa2hva() to system memory unit Marc-André Lureau
2026-05-21 5:50 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 06/40] s390x: prevent crash if given invalid CPU# Marc-André Lureau
2026-05-21 0:47 ` Eric Farman
2026-05-20 21:49 ` [PATCH 07/40] system: decouple qmp_inject_nmi() from Monitor Marc-André Lureau
2026-05-20 21:49 ` [PATCH 08/40] hmp: correct the nmi documentation Marc-André Lureau
2026-05-20 21:49 ` [PATCH 09/40] monitor: move HMP-only fields from Monitor to MonitorHMP Marc-André Lureau
2026-05-21 5:53 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 10/40] tests/functional: use query-version QMP command instead of HMP Marc-André Lureau
2026-05-21 5:54 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 11/40] net/qapi: add x-query-usernet Marc-André Lureau
2026-05-20 21:49 ` [PATCH 12/40] tests: use x-query-usernet Marc-André Lureau
2026-05-20 21:49 ` [PATCH 13/40] RFC: qtest: add -qtest-no-ts option Marc-André Lureau
2026-05-20 21:49 ` [PATCH 14/40] qemu-io: propagate errors through Error API instead of printf Marc-André Lureau
2026-05-21 6:02 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 15/40] block: add x-qemu-io QMP command Marc-André Lureau
2026-05-20 21:49 ` [PATCH 16/40] tests/qemu-iotests/N: use " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 17/40] tests/qemu-iotests/181, 192, 249: convert to QMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 18/40] tests/qemu-iotests/186: convert from HMP " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 19/40] tests/qemu-iotests/copy-before-write: convert " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 20/40] tests/qemu-iotests: skip some 172 & 267 that require HMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 21/40] RFC: qtest: add qemu-io command to the qtest protocol Marc-André Lureau
2026-05-20 21:49 ` [PATCH 22/40] RFC: qtest/ide-test: convert to use qtest qemu-io command Marc-André Lureau
2026-05-20 21:49 ` [PATCH 23/40] tests/qtest/numa-test: replace HMP "info numa" with QMP query-cpus-fast Marc-André Lureau
2026-05-20 21:49 ` [PATCH 24/40] tests/qtest/pnv: drop unnecessary -serial mon:stdio Marc-André Lureau
2026-05-21 6:02 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 25/40] net: add x-query-network QMP command Marc-André Lureau
2026-05-20 21:49 ` [PATCH 26/40] tests/qtest/netdev-socket: replace HMP with x-query-network QMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 27/40] tests/qtest/cdrom-test: replace HMP "info block" with QMP query-block Marc-André Lureau
2026-05-21 6:03 ` Philippe Mathieu-Daudé
2026-05-20 21:49 ` [PATCH 28/40] tests/qtest/qmp-test: don't depend on human-monitor-command Marc-André Lureau
2026-05-20 21:49 ` [PATCH 29/40] build-sys: add 'hmp' option Marc-André Lureau
2026-05-20 21:49 ` [PATCH 30/40] tests/qtest/device-introspect-test: fix test without HMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 31/40] tests/qtest/drive_del-test: guard HMP-dependent tests with CONFIG_HMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 32/40] qapi: make HMP-specific schema entries conditional on CONFIG_HMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 33/40] monitor: guard HMP-specific code with CONFIG_HMP Marc-André Lureau
2026-05-20 21:49 ` [PATCH 34/40] util: guard monitor_vprintf callers " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 35/40] system: guard HMP initialization paths " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 36/40] hw: guard BusClass::print_dev " Marc-André Lureau
2026-05-21 6:07 ` Philippe Mathieu-Daudé
2026-05-29 21:31 ` marcandre.lureau
2026-05-20 21:49 ` [PATCH 37/40] target: guard MonitorDef tables " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 38/40] Guard HMP command implementations " Marc-André Lureau
2026-05-20 21:49 ` [PATCH 39/40] build-sys: make HMP source files conditional on have_hmp Marc-André Lureau
2026-05-20 21:49 ` [PATCH 40/40] gitlab-ci: add --disable-hmp to build-without-defaults Marc-André Lureau
2026-05-21 7:55 ` Daniel P. Berrangé [this message]
2026-05-21 8:04 ` [PATCH 00/40] Make HMP optional (and later standalone) Marc-André Lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ag66inUz7qe7YwrS@redhat.com \
--to=berrange@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.