aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/asm/airq.h
diff options
context:
space:
mode:
authorHalil Pasic <pasic@linux.ibm.com>2018-09-13 18:57:16 +0200
committerHeiko Carstens <heiko.carstens@de.ibm.com>2019-06-15 12:25:05 +0200
commitb50623e5db802e41736f3305cb54c03bc7f0e30a (patch)
tree338d7c361dc8b6c3ec9c7d2d9e4fd421fab755dd /arch/s390/include/asm/airq.h
parents390/cio: add basic protected virtualization support (diff)
downloadlinux-dev-b50623e5db802e41736f3305cb54c03bc7f0e30a.tar.xz
linux-dev-b50623e5db802e41736f3305cb54c03bc7f0e30a.zip
s390/airq: use DMA memory for adapter interrupts
Protected virtualization guests have to use shared pages for airq notifier bit vectors, because the hypervisor needs to write these bits. Let us make sure we allocate DMA memory for the notifier bit vectors by replacing the kmem_cache with a dma_cache and kalloc() with cio_dma_zalloc(). Signed-off-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Sebastian Ott <sebott@linux.ibm.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/airq.h')
-rw-r--r--arch/s390/include/asm/airq.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/s390/include/asm/airq.h b/arch/s390/include/asm/airq.h
index c10d2ee2dfda..01936fdfaddb 100644
--- a/arch/s390/include/asm/airq.h
+++ b/arch/s390/include/asm/airq.h
@@ -11,6 +11,7 @@
#define _ASM_S390_AIRQ_H
#include <linux/bit_spinlock.h>
+#include <linux/dma-mapping.h>
struct airq_struct {
struct hlist_node list; /* Handler queueing. */
@@ -29,6 +30,7 @@ void unregister_adapter_interrupt(struct airq_struct *airq);
/* Adapter interrupt bit vector */
struct airq_iv {
unsigned long *vector; /* Adapter interrupt bit vector */
+ dma_addr_t vector_dma; /* Adapter interrupt bit vector dma */
unsigned long *avail; /* Allocation bit mask for the bit vector */
unsigned long *bitlock; /* Lock bit mask for the bit vector */
unsigned long *ptr; /* Pointer associated with each bit */