1 /* 2 * s390 diagnose functions 3 * 4 * Copyright IBM Corp. 2007 5 * Author(s): Michael Holzheu <holzheu@de.ibm.com> 6 */ 7 8 #ifndef _ASM_S390_DIAG_H 9 #define _ASM_S390_DIAG_H 10 11 #include <linux/percpu.h> 12 13 enum diag_stat_enum { 14 DIAG_STAT_X008, 15 DIAG_STAT_X00C, 16 DIAG_STAT_X010, 17 DIAG_STAT_X014, 18 DIAG_STAT_X044, 19 DIAG_STAT_X064, 20 DIAG_STAT_X09C, 21 DIAG_STAT_X0DC, 22 DIAG_STAT_X204, 23 DIAG_STAT_X210, 24 DIAG_STAT_X224, 25 DIAG_STAT_X250, 26 DIAG_STAT_X258, 27 DIAG_STAT_X288, 28 DIAG_STAT_X2C4, 29 DIAG_STAT_X2FC, 30 DIAG_STAT_X304, 31 DIAG_STAT_X308, 32 DIAG_STAT_X500, 33 NR_DIAG_STAT 34 }; 35 36 void diag_stat_inc(enum diag_stat_enum nr); 37 void diag_stat_inc_norecursion(enum diag_stat_enum nr); 38 39 /* 40 * Diagnose 10: Release page range 41 */ 42 static inline void diag10_range(unsigned long start_pfn, unsigned long num_pfn) 43 { 44 unsigned long start_addr, end_addr; 45 46 start_addr = start_pfn << PAGE_SHIFT; 47 end_addr = (start_pfn + num_pfn - 1) << PAGE_SHIFT; 48 49 diag_stat_inc(DIAG_STAT_X010); 50 asm volatile( 51 "0: diag %0,%1,0x10\n" 52 "1:\n" 53 EX_TABLE(0b, 1b) 54 EX_TABLE(1b, 1b) 55 : : "a" (start_addr), "a" (end_addr)); 56 } 57 58 /* 59 * Diagnose 14: Input spool file manipulation 60 */ 61 extern int diag14(unsigned long rx, unsigned long ry1, unsigned long subcode); 62 63 /* 64 * Diagnose 210: Get information about a virtual device 65 */ 66 struct diag210 { 67 u16 vrdcdvno; /* device number (input) */ 68 u16 vrdclen; /* data block length (input) */ 69 u8 vrdcvcla; /* virtual device class (output) */ 70 u8 vrdcvtyp; /* virtual device type (output) */ 71 u8 vrdcvsta; /* virtual device status (output) */ 72 u8 vrdcvfla; /* virtual device flags (output) */ 73 u8 vrdcrccl; /* real device class (output) */ 74 u8 vrdccrty; /* real device type (output) */ 75 u8 vrdccrmd; /* real device model (output) */ 76 u8 vrdccrft; /* real device feature (output) */ 77 } __attribute__((packed, aligned(4))); 78 79 extern int diag210(struct diag210 *addr); 80 81 #endif /* _ASM_S390_DIAG_H */ 82