sysinfo.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*
  2. * definition for store system information stsi
  3. *
  4. * Copyright IBM Corp. 2001, 2008
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License (version 2 only)
  8. * as published by the Free Software Foundation.
  9. *
  10. * Author(s): Ulrich Weigand <weigand@de.ibm.com>
  11. * Christian Borntraeger <borntraeger@de.ibm.com>
  12. */
  13. #ifndef __ASM_S390_SYSINFO_H
  14. #define __ASM_S390_SYSINFO_H
  15. #include <asm/bitsperlong.h>
  16. struct sysinfo_1_1_1 {
  17. unsigned char p:1;
  18. unsigned char :6;
  19. unsigned char t:1;
  20. unsigned char :8;
  21. unsigned char ccr;
  22. unsigned char cai;
  23. char reserved_0[28];
  24. char manufacturer[16];
  25. char type[4];
  26. char reserved_1[12];
  27. char model_capacity[16];
  28. char sequence[16];
  29. char plant[4];
  30. char model[16];
  31. char model_perm_cap[16];
  32. char model_temp_cap[16];
  33. unsigned int model_cap_rating;
  34. unsigned int model_perm_cap_rating;
  35. unsigned int model_temp_cap_rating;
  36. unsigned char typepct[5];
  37. unsigned char reserved_2[3];
  38. unsigned int ncr;
  39. unsigned int npr;
  40. unsigned int ntr;
  41. };
  42. struct sysinfo_1_2_1 {
  43. char reserved_0[80];
  44. char sequence[16];
  45. char plant[4];
  46. char reserved_1[2];
  47. unsigned short cpu_address;
  48. };
  49. struct sysinfo_1_2_2 {
  50. char format;
  51. char reserved_0[1];
  52. unsigned short acc_offset;
  53. char reserved_1[20];
  54. unsigned int nominal_cap;
  55. unsigned int secondary_cap;
  56. unsigned int capability;
  57. unsigned short cpus_total;
  58. unsigned short cpus_configured;
  59. unsigned short cpus_standby;
  60. unsigned short cpus_reserved;
  61. unsigned short adjustment[0];
  62. };
  63. struct sysinfo_1_2_2_extension {
  64. unsigned int alt_capability;
  65. unsigned short alt_adjustment[0];
  66. };
  67. struct sysinfo_2_2_1 {
  68. char reserved_0[80];
  69. char sequence[16];
  70. char plant[4];
  71. unsigned short cpu_id;
  72. unsigned short cpu_address;
  73. };
  74. struct sysinfo_2_2_2 {
  75. char reserved_0[32];
  76. unsigned short lpar_number;
  77. char reserved_1;
  78. unsigned char characteristics;
  79. unsigned short cpus_total;
  80. unsigned short cpus_configured;
  81. unsigned short cpus_standby;
  82. unsigned short cpus_reserved;
  83. char name[8];
  84. unsigned int caf;
  85. char reserved_2[16];
  86. unsigned short cpus_dedicated;
  87. unsigned short cpus_shared;
  88. };
  89. #define LPAR_CHAR_DEDICATED (1 << 7)
  90. #define LPAR_CHAR_SHARED (1 << 6)
  91. #define LPAR_CHAR_LIMITED (1 << 5)
  92. struct sysinfo_3_2_2 {
  93. char reserved_0[31];
  94. unsigned char :4;
  95. unsigned char count:4;
  96. struct {
  97. char reserved_0[4];
  98. unsigned short cpus_total;
  99. unsigned short cpus_configured;
  100. unsigned short cpus_standby;
  101. unsigned short cpus_reserved;
  102. char name[8];
  103. unsigned int caf;
  104. char cpi[16];
  105. char reserved_1[24];
  106. } vm[8];
  107. char reserved_544[3552];
  108. };
  109. extern int topology_max_mnest;
  110. #define TOPOLOGY_CPU_BITS 64
  111. #define TOPOLOGY_NR_MAG 6
  112. struct topology_cpu {
  113. unsigned char reserved0[4];
  114. unsigned char :6;
  115. unsigned char pp:2;
  116. unsigned char reserved1;
  117. unsigned short origin;
  118. unsigned long mask[TOPOLOGY_CPU_BITS / BITS_PER_LONG];
  119. };
  120. struct topology_container {
  121. unsigned char reserved[7];
  122. unsigned char id;
  123. };
  124. union topology_entry {
  125. unsigned char nl;
  126. struct topology_cpu cpu;
  127. struct topology_container container;
  128. };
  129. struct sysinfo_15_1_x {
  130. unsigned char reserved0[2];
  131. unsigned short length;
  132. unsigned char mag[TOPOLOGY_NR_MAG];
  133. unsigned char reserved1;
  134. unsigned char mnest;
  135. unsigned char reserved2[4];
  136. union topology_entry tle[0];
  137. };
  138. int stsi(void *sysinfo, int fc, int sel1, int sel2);
  139. /*
  140. * Service level reporting interface.
  141. */
  142. struct service_level {
  143. struct list_head list;
  144. void (*seq_print)(struct seq_file *, struct service_level *);
  145. };
  146. int register_service_level(struct service_level *);
  147. int unregister_service_level(struct service_level *);
  148. #endif /* __ASM_S390_SYSINFO_H */