QEMU series makes Human Monitor Protocol a compile-time option
A 49-patch effort lets builds drop HMP entirely so the binary speaks only QMP, shrinking the attack surface and clarifying the split between automation and interactive debugging.
QEMU can be built without the Human Monitor Protocol (HMP) under a proposed series from Marc-André Lureau, which adds a --disable-hmp configure switch so the resulting binary exposes only QMP.
HMP is the interactive, text-oriented console operators and developers have long used for ad-hoc inspection and control. QMP is the structured, machine-oriented interface used by libvirt and other management stacks. Shipping both in every binary enlarges the trusted computing base and blurs the line between production control and debugging. Lureau’s series aims to cut that surface, trim binary size, and force a cleaner split: QMP for automation, HMP (when wanted) for humans.
Most day-to-day HMP capability already has QMP equivalents. What remains is largely deep debugging and introspection (register and memory dumps, address translation, APIC and TLB state, memory-region trees, and a handful of architecture-specific views) plus a shorter list of simple actions such as GDB stub control, MCE injection, and host-forward rule tweaks. The work converts iotests and qtests off HMP, guards HMP-only paths, and makes HMP sources conditional in the build. A later standalone HMP-style client on top of QMP is sketched as follow-on work, including a possible query for disassembly metadata so clients can disassemble outside the emulator.
Reviewers across Red Hat, IBM, and Qualcomm have been working through the series, with some pushback on the size of mechanical renames that risk merge conflicts. The practical payoff is immediate for hardened and embedded deployments that never needed an interactive monitor: they can ship a QMP-only QEMU and stop carrying console code they do not use.