diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h
index 2c3603a..228e05d 100644
--- a/hw/9pfs/virtio-9p.h
+++ b/hw/9pfs/virtio-9p.h
@@ -146,8 +146,6 @@ struct V9fsPDU
 
 /* from Linux's linux/virtio_9p.h */
 
-/* The ID for virtio console */
-#define VIRTIO_ID_9P    9
 #define MAX_REQ         128
 #define MAX_TAG_LEN     32
 
diff --git a/include/hw/virtio/virtio-balloon.h b/include/hw/virtio/virtio-balloon.h
index f863bfe..6e0a775 100644
--- a/include/hw/virtio/virtio-balloon.h
+++ b/include/hw/virtio/virtio-balloon.h
@@ -24,9 +24,6 @@
 
 /* from Linux's linux/virtio_balloon.h */
 
-/* The ID for virtio_balloon */
-#define VIRTIO_ID_BALLOON 5
-
 /* The feature bitmap for virtio balloon */
 #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
 #define VIRTIO_BALLOON_F_STATS_VQ 1       /* Memory stats virtqueue */
diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h
index 4652b70..6ee3e8f 100644
--- a/include/hw/virtio/virtio-blk.h
+++ b/include/hw/virtio/virtio-blk.h
@@ -25,9 +25,6 @@
 
 /* from Linux's linux/virtio_blk.h */
 
-/* The ID for virtio_block */
-#define VIRTIO_ID_BLOCK 2
-
 /* Feature bits */
 #define VIRTIO_BLK_F_BARRIER    0       /* Does host support barriers? */
 #define VIRTIO_BLK_F_SIZE_MAX   1       /* Indicates maximum segment size */
diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h
index 14e85a5..e2bb6ce 100644
--- a/include/hw/virtio/virtio-rng.h
+++ b/include/hw/virtio/virtio-rng.h
@@ -21,9 +21,6 @@
 #define VIRTIO_RNG_GET_PARENT_CLASS(obj) \
         OBJECT_GET_PARENT_CLASS(obj, TYPE_VIRTIO_RNG)
 
-/* The Virtio ID for the virtio rng device */
-#define VIRTIO_ID_RNG    4
-
 struct VirtIORNGConf {
     RngBackend *rng;
     uint64_t max_bytes;
diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
index bf17cc9..9606f43 100644
--- a/include/hw/virtio/virtio-scsi.h
+++ b/include/hw/virtio/virtio-scsi.h
@@ -29,9 +29,6 @@
         OBJECT_CHECK(VirtIOSCSI, (obj), TYPE_VIRTIO_SCSI)
 
 
-/* The ID for virtio_scsi */
-#define VIRTIO_ID_SCSI  8
-
 /* Feature Bits */
 #define VIRTIO_SCSI_F_INOUT                    0
 #define VIRTIO_SCSI_F_HOTPLUG                  1
diff --git a/include/hw/virtio/virtio-serial.h b/include/hw/virtio/virtio-serial.h
index 11af978..1dcced6 100644
--- a/include/hw/virtio/virtio-serial.h
+++ b/include/hw/virtio/virtio-serial.h
@@ -20,9 +20,6 @@
 
 /* == Interface shared between the guest kernel and qemu == */
 
-/* The Virtio ID for virtio console / serial ports */
-#define VIRTIO_ID_CONSOLE		3
-
 /* Features supported */
 #define VIRTIO_CONSOLE_F_MULTIPORT	1
 
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index f24997d..9ad6bb2 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -23,6 +23,22 @@
 #include "hw/virtio/virtio-9p.h"
 #endif
 
+/* Refer to Linux's linux/virtio_ids.h */
+
+enum virtio_dev_type {
+    VIRTIO_ID_RESERVED  = 0, /* invalid virtio device */
+    VIRTIO_ID_NET = 1, /* virtio net */
+    VIRTIO_ID_BLOCK	= 2, /* virtio block */
+    VIRTIO_ID_CONSOLE = 3, /* virtio console */
+    VIRTIO_ID_RNG = 4, /* virtio rng */
+    VIRTIO_ID_BALLOON = 5, /* virtio balloon */
+    VIRTIO_ID_RPMSG	= 7, /* virtio remote processor messaging */
+    VIRTIO_ID_SCSI = 8, /* virtio scsi */
+    VIRTIO_ID_9P = 9, /* 9p virtio console */
+    VIRTIO_ID_RPROC_SERIAL = 11, /* virtio remoteproc serial link */
+    VIRTIO_ID_CAIF = 12, /* Virtio caif */
+};
+
 /* from Linux's linux/virtio_config.h */
 
 /* Status byte for guest to report progress, and synchronize features. */
diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index c23466b..2eabcb4 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -11,6 +11,7 @@
 #ifndef VIRTIO_H
 #define VIRTIO_H
 
+#include "hw/virtio/virtio.h"
 #include "s390-ccw.h"
 
 /* Status byte for guest to report progress, and synchronize features. */
@@ -23,13 +24,6 @@
 /* We've given up on this device. */
 #define VIRTIO_CONFIG_S_FAILED          0x80
 
-enum virtio_dev_type {
-    VIRTIO_ID_NET = 1,
-    VIRTIO_ID_BLOCK = 2,
-    VIRTIO_ID_CONSOLE = 3,
-    VIRTIO_ID_BALLOON = 5,
-};
-
 struct virtio_dev_header {
     enum virtio_dev_type type : 8;
     u8  num_vq;
