chsc.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef S390_CHSC_H
  2. #define S390_CHSC_H
  3. #define CHSC_SEI_ACC_CHPID 1
  4. #define CHSC_SEI_ACC_LINKADDR 2
  5. #define CHSC_SEI_ACC_FULLLINKADDR 3
  6. #define CHSC_SDA_OC_MSS 0x2
  7. struct chsc_header {
  8. u16 length;
  9. u16 code;
  10. };
  11. #define NR_MEASUREMENT_CHARS 5
  12. struct cmg_chars {
  13. u32 values[NR_MEASUREMENT_CHARS];
  14. };
  15. #define NR_MEASUREMENT_ENTRIES 8
  16. struct cmg_entry {
  17. u32 values[NR_MEASUREMENT_ENTRIES];
  18. };
  19. struct channel_path_desc {
  20. u8 flags;
  21. u8 lsn;
  22. u8 desc;
  23. u8 chpid;
  24. u8 swla;
  25. u8 zeroes;
  26. u8 chla;
  27. u8 chpp;
  28. };
  29. struct channel_path {
  30. int id;
  31. int state;
  32. struct channel_path_desc desc;
  33. /* Channel-measurement related stuff: */
  34. int cmg;
  35. int shared;
  36. void *cmg_chars;
  37. struct device dev;
  38. };
  39. extern void s390_process_css( void );
  40. extern void chsc_validate_chpids(struct subchannel *);
  41. extern void chpid_is_actually_online(int);
  42. struct css_general_char {
  43. u64 : 41;
  44. u32 aif : 1; /* bit 41 */
  45. u32 : 3;
  46. u32 mcss : 1; /* bit 45 */
  47. u32 : 2;
  48. u32 ext_mb : 1; /* bit 48 */
  49. u32 : 7;
  50. u32 aif_tdd : 1; /* bit 56 */
  51. u32 : 1;
  52. u32 qebsm : 1; /* bit 58 */
  53. u32 : 8;
  54. u32 aif_osa : 1; /* bit 67 */
  55. u32 : 28;
  56. }__attribute__((packed));
  57. struct css_chsc_char {
  58. u64 res;
  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. extern struct css_general_char css_general_characteristics;
  69. extern struct css_chsc_char css_chsc_characteristics;
  70. extern int chsc_determine_css_characteristics(void);
  71. extern int css_characteristics_avail;
  72. extern void *chsc_get_chp_desc(struct subchannel*, int);
  73. extern int chsc_enable_facility(int);
  74. struct channel_subsystem;
  75. extern int chsc_secm(struct channel_subsystem *, int);
  76. #define to_channelpath(device) container_of(device, struct channel_path, dev)
  77. #endif