aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/ccwdev.h
diff options
context:
space:
mode:
authorHalil Pasic <pasic@linux.ibm.com>2019-03-26 12:41:09 +0100
committerHeiko Carstens <heiko.carstens@de.ibm.com>2019-06-15 12:25:00 +0200
commit37db8985b2116c89a3cbaf87083a02f83afaba5b (patch)
tree6773488a5f73993f894e4bc164afb4d8c23a9460 /arch/s390/include/asm/ccwdev.h
parents390/cio: introduce DMA pools to cio (diff)
downloadlinux-dev-37db8985b2116c89a3cbaf87083a02f83afaba5b.tar.xz
linux-dev-37db8985b2116c89a3cbaf87083a02f83afaba5b.zip
s390/cio: add basic protected virtualization support
As virtio-ccw devices are channel devices, we need to use the dma area within the common I/O layer for any communication with the hypervisor. Note that we do not need to use that area for control blocks directly referenced by instructions, e.g. the orb. It handles neither QDIO in the common code, nor any device type specific stuff (like channel programs constructed by the DASD driver). An interesting side effect is that virtio structures are now going to get allocated in 31 bit addressable storage. Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Sebastian Ott <sebott@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Michael Mueller <mimu@linux.ibm.com> Tested-by: Michael Mueller <mimu@linux.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/ccwdev.h')
-rw-r--r--arch/s390/include/asm/ccwdev.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h
index a29dd430fb40..865ce1cb86d5 100644
--- a/arch/s390/include/asm/ccwdev.h
+++ b/arch/s390/include/asm/ccwdev.h
@@ -226,6 +226,10 @@ extern int ccw_device_enable_console(struct ccw_device *);
extern void ccw_device_wait_idle(struct ccw_device *);
extern int ccw_device_force_console(struct ccw_device *);
+extern void *ccw_device_dma_zalloc(struct ccw_device *cdev, size_t size);
+extern void ccw_device_dma_free(struct ccw_device *cdev,
+ void *cpu_addr, size_t size);
+
int ccw_device_siosl(struct ccw_device *);
extern void ccw_device_get_schid(struct ccw_device *, struct subchannel_id *);