// SPDX-License-Identifier: GPL-2.0/* * ccw based virtio transport * * Copyright IBM Corp. 2012, 2014 * * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> */#include<linux/kernel_stat.h>#include<linux/init.h>#include<linux/memblock.h>#include<linux/err.h>#include<linux/virtio.h>#include<linux/virtio_config.h>#include<linux/slab.h>#include<linux/interrupt.h>#include<linux/virtio_ring.h>#include<linux/pfn.h>#include<linux/async.h>#include<linux/wait.h>#include<linux/list.h>#include<linux/bitops.h>#include<linux/moduleparam.h>#include<linux/io.h>#include<linux/kvm_para.h>#include<linux/notifier.h>#include<asm/diag.h>#include<asm/setup.h>#include<asm/irq.h>#include<asm/cio.h>#include<asm/ccwdev.h>#include<asm/virtio-ccw.h>#include<asm/isc.h>#include<asm/airq.h>/* * virtio related functions */structvq_config_block{__u16index;__u16num;}__packed;#define VIRTIO_CCW_CONFIG_SIZE 0x100/* same as PCI config space size, should be enough for all drivers */structvirtio_ccw_device{structvirtio_devicevdev;__u8*status;__u8config[VIRTIO_CCW_CONFIG_SIZE];structccw_device*cdev;__u32curr_io;interr;unsignedintrevision;/* Transport revision */wait_queue_head_twait_q;spinlock_tlock;structlist_headvirtqueues;unsignedlongindicators;unsignedlongindicators2;structv