Skip to content

Devices created using '-device' JSON syntax don't emit DEVICE_DELETED when unplugged

Host environment

  • QEMU version: QEMU emulator version 6.2.50 (v6.2.0-103-ge68034b1d6-dirty)

Emulated/Virtualized environment

  • Operating system: (Windows 10 21H1, Fedora 34, etc.)
  • OS/kernel version: (For POSIX guests, use uname -a.)
  • Architecture: (x86, ARM, s390x, etc.)

Description of problem

Run the following sequence:

  $ ./qemu-system-x86_64 -qmp stdio  \
       -device '{"driver": "virtio-mouse-pci", "id": "dev0"}' \
       -device virtio-mouse-pci,id=dev1 
{"QMP": {"version": {"qemu": {"micro": 50, "minor": 2, "major": 6}, "package": "v6.2.0-105-g7494244ffc-dirty"}, "capabilities": ["oob"]}}
{ "execute": "qmp_capabilities" }
{"return": {}}
{ "execute": "device_del", "arguments": { "id": "dev0"} }
{"return": {}}
{ "execute": "device_del", "arguments": { "id": "dev1"} }
{"return": {}}
{ "execute": "system_reset" }
{"return": {}}
{"timestamp": {"seconds": 1641385071, "microseconds": 120178}, "event": "RESET", "data": {"guest": false, "reason": "host-qmp-system-reset"}}
{"timestamp": {"seconds": 1641385071, "microseconds": 121431}, "event": "DEVICE_DELETED", "data": {"path": "/machine/peripheral/dev1/virtio-backend"}}
{"timestamp": {"seconds": 1641385071, "microseconds": 121684}, "event": "DEVICE_DELETED", "data": {"device": "dev1", "path": "/machine/peripheral/dev1"}}
{"timestamp": {"seconds": 1641385071, "microseconds": 122297}, "event": "DEVICE_DELETED", "data": {"path": "/machine/peripheral/dev0/virtio-backend"}}
{"timestamp": {"seconds": 1641385071, "microseconds": 198581}, "event": "RESET", "data": {"guest": true, "reason": "guest-reset"}}

Notice the lack of a "DEVICE_DELETED" event with path "/machine/peripheral/dev0" - the device created with JSON syntax

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information