sysinfo.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. struct sysinfo_1_1_1 {
  16. char reserved_0[32];
  17. char manufacturer[16];
  18. char type[4];
  19. char reserved_1[12];
  20. char model_capacity[16];
  21. char sequence[16];
  22. char plant[4];
  23. char model[16];
  24. char model_perm_cap[16];
  25. char model_temp_cap[16];
  26. char model_cap_rating[4];
  27. char model_perm_cap_rating[4];
  28. char model_temp_cap_rating[4];
  29. };
  30. struct sysinfo_1_2_1 {
  31. char reserved_0[80];
  32. char sequence[16];
  33. char plant[4];
  34. char reserved_1[2];
  35. unsigned short cpu_address;
  36. };
  37. struct sysinfo_1_2_2 {
  38. char format;
  39. char reserved_0[1];
  40. unsigned short acc_offset;
  41. char reserved_1[24];
  42. unsigned int secondary_capability;
  43. unsigned int capability;
  44. unsigned short cpus_total;
  45. unsigned short cpus_configured;
  46. unsigned short cpus_standby;
  47. unsigned short cpus_reserved;
  48. unsigned short adjustment[0];
  49. };
  50. struct sysinfo_1_2_2_extension {
  51. unsigned int alt_capability;
  52. unsigned short alt_adjustment[0];
  53. };
  54. struct sysinfo_2_2_1 {
  55. char reserved_0[80];
  56. char sequence[16];
  57. char plant[4];
  58. unsigned short cpu_id;
  59. unsigned short cpu_address;
  60. };
  61. struct sysinfo_2_2_2 {
  62. char reserved_0[32];
  63. unsigned short lpar_number;
  64. char reserved_1;
  65. unsigned char characteristics;
  66. unsigned short cpus_total;
  67. unsigned short cpus_configured;
  68. unsigned short cpus_standby;
  69. unsigned short cpus_reserved;
  70. char name[8];
  71. unsigned int caf;
  72. char reserved_2[16];
  73. unsigned short cpus_dedicated;
  74. unsigned short cpus_shared;
  75. };
  76. #define LPAR_CHAR_DEDICATED (1 << 7)
  77. #define LPAR_CHAR_SHARED (1 << 6)
  78. #define LPAR_CHAR_LIMITED (1 << 5)
  79. struct sysinfo_3_2_2 {
  80. char reserved_0[31];
  81. unsigned char count;
  82. struct {
  83. char reserved_0[4];
  84. unsigned short cpus_total;
  85. unsigned short cpus_configured;
  86. unsigned short cpus_standby;
  87. unsigned short cpus_reserved;
  88. char name[8];
  89. unsigned int caf;
  90. char cpi[16];
  91. char reserved_1[24];
  92. } vm[8];
  93. char reserved_544[3552];
  94. };
  95. static inline int stsi(void *sysinfo, int fc, int sel1, int sel2)
  96. {
  97. register int r0 asm("0") = (fc << 28) | sel1;
  98. register int r1 asm("1") = sel2;
  99. asm volatile(
  100. " stsi 0(%2)\n"
  101. "0: jz 2f\n"
  102. "1: lhi %0,%3\n"
  103. "2:\n"
  104. EX_TABLE(0b, 1b)
  105. : "+d" (r0) : "d" (r1), "a" (sysinfo), "K" (-ENOSYS)
  106. : "cc", "memory");
  107. return r0;
  108. }
  109. /*
  110. * Service level reporting interface.
  111. */
  112. struct service_level {
  113. struct list_head list;
  114. void (*seq_print)(struct seq_file *, struct service_level *);
  115. };
  116. int register_service_level(struct service_level *);
  117. int unregister_service_level(struct service_level *);
  118. #endif /* __ASM_S390_SYSINFO_H */