Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
chsc.h
Go to the documentation of this file.
1 #ifndef S390_CHSC_H
2 #define S390_CHSC_H
3 
4 #include <linux/types.h>
5 #include <linux/device.h>
6 #include <asm/css_chars.h>
7 #include <asm/chpid.h>
8 #include <asm/chsc.h>
9 #include <asm/schid.h>
10 
11 #define CHSC_SDA_OC_MSS 0x2
12 
13 struct chsc_header {
16 } __attribute__ ((packed));
17 
18 #define NR_MEASUREMENT_CHARS 5
19 struct cmg_chars {
21 } __attribute__ ((packed));
22 
23 #define NR_MEASUREMENT_ENTRIES 8
24 struct cmg_entry {
26 } __attribute__ ((packed));
27 
37 } __attribute__ ((packed));
38 
44  u32:24;
46  u32 unused[3];
48  u16:13;
49  u8 r:1;
50  u8 s:1;
51  u8 f:1;
52  u32 zeros[2];
53 } __attribute__ ((packed));
54 
55 struct channel_path;
56 
57 struct css_chsc_char {
59  u64 : 20;
60  u32 secm : 1; /* bit 84 */
61  u32 : 1;
62  u32 scmc : 1; /* bit 86 */
63  u32 : 20;
64  u32 scssc : 1; /* bit 107 */
65  u32 scsscf : 1; /* bit 108 */
66  u32 : 19;
67 }__attribute__((packed));
68 
70 
71 struct chsc_ssd_info {
74  struct chp_id chpid[8];
75  u16 fla[8];
76 };
77 
78 struct chsc_scpd {
80  u32:2;
81  u32 m:1;
82  u32 c:1;
83  u32 fmt:4;
85  u32:4;
86  u32 rfmt:4;
88  u32:24;
92  u8 data[PAGE_SIZE - 20];
93 } __attribute__ ((packed));
94 
95 
97  struct chsc_ssd_info *ssd);
99 extern int chsc_init(void);
100 extern void chsc_init_cleanup(void);
102 extern int chsc_enable_facility(int);
103 struct channel_subsystem;
104 extern int chsc_secm(struct channel_subsystem *, int);
107 int chsc_chp_vary(struct chp_id chpid, int on);
109  int c, int m, void *page);
111  struct channel_path_desc *desc);
113  struct channel_path_desc_fmt1 *desc);
114 void chsc_chp_online(struct chp_id chpid);
115 void chsc_chp_offline(struct chp_id chpid);
117 
119 
120 int chsc_siosl(struct subchannel_id schid);
121 
122 /* Functions and definitions to query storage-class memory. */
123 struct sale {
125  u32 p:4;
129  u32 r:1;
130  u32:7;
131  u32 rid:8;
132  u32:32;
133 } __packed;
134 
137  u32:32;
141  u64:56;
152  struct sale scmal[248];
153 } __packed;
154 
155 int chsc_scm_info(struct chsc_scm_info *scm_area, u64 token);
156 
157 #ifdef CONFIG_SCM_BUS
158 int scm_update_information(void);
159 #else /* CONFIG_SCM_BUS */
160 #define scm_update_information() 0
161 #endif /* CONFIG_SCM_BUS */
162 
163 
164 #endif