/* we emulate the request_irq behaviour on top of s390 extints  */
static void kvm_extint_handler(u16 code)
/* we emulate the request_irq behaviour on top of s390 extints  */
static void kvm_extint_handler(u16 code)
{
	struct virtqueue *vq;
	u16 subcode;
	int config_changed;
	subcode = S390_lowcore.cpu_addr;
	if ((subcode & 0xff00) != VIRTIO_SUBCODE_64)
		return;
	vq = (struct virtqueue *) ((*(long *) __LC_PFAULT_INTPARM) & ~1UL);
	config_changed =  (*(int *)  __LC_EXT_PARAMS & 1);
	if (config_changed) {
		struct virtio_driver *drv;
		drv = container_of(vq->vdev->dev.driver,
				   struct virtio_driver, driver);
		if (drv->config_changed)
			drv->config_changed(vq->vdev);
	} else
		vring_interrupt(0, vq);
}