static int vfio_ccw_mdev_get_irq_info(struct vfio_irq_info *info)
 {
-       if (info->index != VFIO_CCW_IO_IRQ_INDEX)
+       switch (info->index) {
+       case VFIO_CCW_IO_IRQ_INDEX:
+               info->count = 1;
+               info->flags = VFIO_IRQ_INFO_EVENTFD;
+               break;
+       default:
                return -EINVAL;
-
-       info->count = 1;
-       info->flags = VFIO_IRQ_INFO_EVENTFD;
+       }
 
        return 0;
 }
 
 static int vfio_ccw_mdev_set_irqs(struct mdev_device *mdev,
                                  uint32_t flags,
+                                 uint32_t index,
                                  void __user *data)
 {
        struct vfio_ccw_private *private;
                return -EINVAL;
 
        private = dev_get_drvdata(mdev_parent_dev(mdev));
-       ctx = &private->io_trigger;
+
+       switch (index) {
+       case VFIO_CCW_IO_IRQ_INDEX:
+               ctx = &private->io_trigger;
+               break;
+       default:
+               return -EINVAL;
+       }
 
        switch (flags & VFIO_IRQ_SET_DATA_TYPE_MASK) {
        case VFIO_IRQ_SET_DATA_NONE:
                        return ret;
 
                data = (void __user *)(arg + minsz);
-               return vfio_ccw_mdev_set_irqs(mdev, hdr.flags, data);
+               return vfio_ccw_mdev_set_irqs(mdev, hdr.flags, hdr.index, data);
        }
        case VFIO_DEVICE_RESET:
                return vfio_ccw_mdev_reset(mdev);