@@ -407,6 +407,65 @@ static const char *qxl_mode_to_string(int mode)
return "INVALID";
}
+static const char *io_port_to_string(uint32_t io_port)
+{
+ if (io_port >= QXL_IO_RANGE_SIZE) {
+ return "out of range";
+ }
+ switch(io_port) {
+ case QXL_IO_NOTIFY_CMD:
+ return "QXL_IO_NOTIFY_CMD";
+ case QXL_IO_NOTIFY_CURSOR:
+ return "QXL_IO_NOTIFY_CURSOR";
+ case QXL_IO_UPDATE_AREA:
+ return "QXL_IO_UPDATE_AREA";
+ case QXL_IO_UPDATE_IRQ:
+ return "QXL_IO_UPDATE_IRQ";
+ case QXL_IO_NOTIFY_OOM:
+ return "QXL_IO_NOTIFY_OOM";
+ case QXL_IO_RESET:
+ return "QXL_IO_RESET";
+ case QXL_IO_SET_MODE:
+ return "QXL_IO_SET_MODE";
+ case QXL_IO_LOG:
+ return "QXL_IO_LOG";
+ case QXL_IO_MEMSLOT_ADD:
+ return "QXL_IO_MEMSLOT_ADD";
+ case QXL_IO_MEMSLOT_DEL:
+ return "QXL_IO_MEMSLOT_DEL";
+ case QXL_IO_DETACH_PRIMARY:
+ return "QXL_IO_DETACH_PRIMARY";
+ case QXL_IO_ATTACH_PRIMARY:
+ return "QXL_IO_ATTACH_PRIMARY";
+ case QXL_IO_CREATE_PRIMARY:
+ return "QXL_IO_CREATE_PRIMARY";
+ case QXL_IO_DESTROY_PRIMARY:
+ return "QXL_IO_DESTROY_PRIMARY";
+ case QXL_IO_DESTROY_SURFACE_WAIT:
+ return "QXL_IO_DESTROY_SURFACE_WAIT";
+ case QXL_IO_DESTROY_ALL_SURFACES:
+ return "QXL_IO_DESTROY_ALL_SURFACES";
+ case QXL_IO_UPDATE_AREA_ASYNC:
+ return "QXL_IO_UPDATE_AREA_ASYNC";
+ case QXL_IO_MEMSLOT_ADD_ASYNC:
+ return "QXL_IO_MEMSLOT_ADD_ASYNC";
+ case QXL_IO_CREATE_PRIMARY_ASYNC:
+ return "QXL_IO_CREATE_PRIMARY_ASYNC";
+ case QXL_IO_DESTROY_PRIMARY_ASYNC:
+ return "QXL_IO_DESTROY_PRIMARY_ASYNC";
+ case QXL_IO_DESTROY_SURFACE_ASYNC:
+ return "QXL_IO_DESTROY_SURFACE_ASYNC";
+ case QXL_IO_DESTROY_ALL_SURFACES_ASYNC:
+ return "QXL_IO_DESTROY_ALL_SURFACES_ASYNC";
+ case QXL_IO_FLUSH_SURFACES_ASYNC:
+ return "QXL_IO_FLUSH_SURFACES_ASYNC";
+ case QXL_IO_FLUSH_RELEASE:
+ return "QXL_IO_FLUSH_RELEASE";
+ }
+ // not reached?
+ return "error in io_port_to_string";
+}
+
/* called from spice server thread context only */
static int interface_get_command(QXLInstance *sin, struct QXLCommandExt *ext)
{
@@ -997,7 +1056,8 @@ static void ioport_write(void *opaque, uint32_t addr, uint32_t val)
default:
if (d->mode == QXL_MODE_NATIVE || d->mode == QXL_MODE_COMPAT)
break;
- dprint(d, 1, "%s: unexpected port 0x%x in vga mode\n", __FUNCTION__, io_port);
+ dprint(d, 1, "%s: unexpected port 0x%x (%s) in vga mode\n",
+ __FUNCTION__, io_port, io_port_to_string(io_port));
return;
}