s390: hypfs: Move diag implementation and data definitions
Diag 204 data and function definitions currently live in the hypfs
files. As KVM will be a consumer of this data, we need to make it
publicly available and move it to the appropriate diag.{c,h} files.
__attribute__ ((packed)) occurences were replaced with __packed for
all moved structs.
Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Acked-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
committed by
Christian Borntraeger
parent
dca4d72877
commit
e65f30e0cb
@@ -78,4 +78,131 @@ struct diag210 {
|
||||
|
||||
extern int diag210(struct diag210 *addr);
|
||||
|
||||
/* bit is set in flags, when physical cpu info is included in diag 204 data */
|
||||
#define DIAG204_LPAR_PHYS_FLG 0x80
|
||||
#define DIAG204_LPAR_NAME_LEN 8 /* lpar name len in diag 204 data */
|
||||
#define DIAG204_CPU_NAME_LEN 16 /* type name len of cpus in diag224 name table */
|
||||
|
||||
/* diag 204 subcodes */
|
||||
enum diag204_sc {
|
||||
DIAG204_SUBC_STIB4 = 4,
|
||||
DIAG204_SUBC_RSI = 5,
|
||||
DIAG204_SUBC_STIB6 = 6,
|
||||
DIAG204_SUBC_STIB7 = 7
|
||||
};
|
||||
|
||||
/* The two available diag 204 data formats */
|
||||
enum diag204_format {
|
||||
DIAG204_INFO_SIMPLE = 0,
|
||||
DIAG204_INFO_EXT = 0x00010000
|
||||
};
|
||||
|
||||
struct diag204_info_blk_hdr {
|
||||
__u8 npar;
|
||||
__u8 flags;
|
||||
__u16 tslice;
|
||||
__u16 phys_cpus;
|
||||
__u16 this_part;
|
||||
__u64 curtod;
|
||||
} __packed;
|
||||
|
||||
struct diag204_x_info_blk_hdr {
|
||||
__u8 npar;
|
||||
__u8 flags;
|
||||
__u16 tslice;
|
||||
__u16 phys_cpus;
|
||||
__u16 this_part;
|
||||
__u64 curtod1;
|
||||
__u64 curtod2;
|
||||
char reserved[40];
|
||||
} __packed;
|
||||
|
||||
struct diag204_part_hdr {
|
||||
__u8 pn;
|
||||
__u8 cpus;
|
||||
char reserved[6];
|
||||
char part_name[DIAG204_LPAR_NAME_LEN];
|
||||
} __packed;
|
||||
|
||||
struct diag204_x_part_hdr {
|
||||
__u8 pn;
|
||||
__u8 cpus;
|
||||
__u8 rcpus;
|
||||
__u8 pflag;
|
||||
__u32 mlu;
|
||||
char part_name[DIAG204_LPAR_NAME_LEN];
|
||||
char lpc_name[8];
|
||||
char os_name[8];
|
||||
__u64 online_cs;
|
||||
__u64 online_es;
|
||||
__u8 upid;
|
||||
char reserved1[3];
|
||||
__u32 group_mlu;
|
||||
char group_name[8];
|
||||
char reserved2[32];
|
||||
} __packed;
|
||||
|
||||
struct diag204_cpu_info {
|
||||
__u16 cpu_addr;
|
||||
char reserved1[2];
|
||||
__u8 ctidx;
|
||||
__u8 cflag;
|
||||
__u16 weight;
|
||||
__u64 acc_time;
|
||||
__u64 lp_time;
|
||||
} __packed;
|
||||
|
||||
struct diag204_x_cpu_info {
|
||||
__u16 cpu_addr;
|
||||
char reserved1[2];
|
||||
__u8 ctidx;
|
||||
__u8 cflag;
|
||||
__u16 weight;
|
||||
__u64 acc_time;
|
||||
__u64 lp_time;
|
||||
__u16 min_weight;
|
||||
__u16 cur_weight;
|
||||
__u16 max_weight;
|
||||
char reseved2[2];
|
||||
__u64 online_time;
|
||||
__u64 wait_time;
|
||||
__u32 pma_weight;
|
||||
__u32 polar_weight;
|
||||
char reserved3[40];
|
||||
} __packed;
|
||||
|
||||
struct diag204_phys_hdr {
|
||||
char reserved1[1];
|
||||
__u8 cpus;
|
||||
char reserved2[6];
|
||||
char mgm_name[8];
|
||||
} __packed;
|
||||
|
||||
struct diag204_x_phys_hdr {
|
||||
char reserved1[1];
|
||||
__u8 cpus;
|
||||
char reserved2[6];
|
||||
char mgm_name[8];
|
||||
char reserved3[80];
|
||||
} __packed;
|
||||
|
||||
struct diag204_phys_cpu {
|
||||
__u16 cpu_addr;
|
||||
char reserved1[2];
|
||||
__u8 ctidx;
|
||||
char reserved2[3];
|
||||
__u64 mgm_time;
|
||||
char reserved3[8];
|
||||
} __packed;
|
||||
|
||||
struct diag204_x_phys_cpu {
|
||||
__u16 cpu_addr;
|
||||
char reserved1[2];
|
||||
__u8 ctidx;
|
||||
char reserved2[3];
|
||||
__u64 mgm_time;
|
||||
char reserved3[80];
|
||||
} __packed;
|
||||
|
||||
int diag204(unsigned long subcode, unsigned long size, void *addr);
|
||||
#endif /* _ASM_S390_DIAG_H */
|
||||
|
||||
Reference in New Issue
Block a user