Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8129ee16 authored by Frank Pavlic's avatar Frank Pavlic Committed by Linus Torvalds
Browse files

[PATCH] s390: qdio V=V pass-through



New feature V=V qdio pass-through.

QDIO and HiperSockets processing in z/VM V=V guest environments (as well as
V=R with z/VM running in LPAR mode) requires shadowing of all QDIO
architecture queue elements.  Especially the shadowing of SBALs and SLSBs
structures in the hypervisor, and the need to issue SIGA SYNC operations to
observe state changes, eventually causes significant CPU processing overhead
in the hypervisor.

The QDIO pass-through support for V=V guests avoids the shadowing of SBALs and
SLSBs.  This significantly reduces the hypervisor overhead for QDIO based I/O.

Signed-off-by: default avatarFrank Pavlic <pavlic@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 05f29fcd
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -240,8 +240,8 @@ config MACHCHK_WARNING
config QDIO
	tristate "QDIO support"
	---help---
	  This driver provides the Queued Direct I/O base support for the
	  IBM S/390 (G5 and G6) and eServer zSeries (z800, z890, z900 and z990).
	  This driver provides the Queued Direct I/O base support for
	  IBM mainframes.

	  For details please refer to the documentation provided by IBM at
	  <http://www10.software.ibm.com/developerworks/opensource/linux390>
@@ -263,7 +263,8 @@ config QDIO_DEBUG
	bool "Extended debugging information"
	depends on QDIO
	help
	  Say Y here to get extended debugging output in /proc/s390dbf/qdio...
	  Say Y here to get extended debugging output in
	    /sys/kernel/debug/s390dbf/qdio...
	  Warning: this option reduces the performance of the QDIO module.

	  If unsure, say N.
+3 −1
Original line number Diff line number Diff line
@@ -43,7 +43,9 @@ struct css_general_char {
	u32 ext_mb : 1;  /* bit 48 */
	u32 : 7;
	u32 aif_tdd : 1; /* bit 56 */
	u32 : 10;
	u32 : 1;
	u32 qebsm : 1;   /* bit 58 */
	u32 : 8;
	u32 aif_osa : 1; /* bit 67 */
	u32 : 28;
}__attribute__((packed));
+474 −115

File changed.

Preview size limit exceeded, changes collapsed.

+70 −34

File changed.

Preview size limit exceeded, changes collapsed.

+5 −3
Original line number Diff line number Diff line
@@ -197,10 +197,12 @@ struct qdr {
 */
#define QIB_AC_INBOUND_PCI_SUPPORTED 	0x80
#define QIB_AC_OUTBOUND_PCI_SUPPORTED 	0x40
#define QIB_RFLAGS_ENABLE_QEBSM		0x80

struct qib {
	unsigned int  qfmt    :  8;     /* queue format */
	unsigned int  pfmt    :  8;     /* impl. dep. parameter format */
	unsigned int  res1    :  8;     /* reserved */
	unsigned int  rflags  :  8;	/* QEBSM */
	unsigned int  ac      :  8;     /* adapter characteristics */
	unsigned int  res2;             /* reserved */
#ifdef QDIO_32_BIT