s390-cpumcf-kernel.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Support for s390 CPU measurement counter set diagnostic facility
  4. *
  5. * Copyright IBM Corp. 2019
  6. Author(s): Hendrik Brueckner <brueckner@linux.ibm.com>
  7. * Thomas Richter <tmricht@linux.ibm.com>
  8. */
  9. #ifndef S390_CPUMCF_KERNEL_H
  10. #define S390_CPUMCF_KERNEL_H
  11. #define S390_CPUMCF_DIAG_DEF 0xfeef /* Counter diagnostic entry ID */
  12. #define PERF_EVENT_CPUM_CF_DIAG 0xBC000 /* Event: Counter sets */
  13. #define PERF_EVENT_CPUM_SF_DIAG 0xBD000 /* Event: Combined-sampling */
  14. struct cf_ctrset_entry { /* CPU-M CF counter set entry (8 byte) */
  15. unsigned int def:16; /* 0-15 Data Entry Format */
  16. unsigned int set:16; /* 16-23 Counter set identifier */
  17. unsigned int ctr:16; /* 24-39 Number of stored counters */
  18. unsigned int res1:16; /* 40-63 Reserved */
  19. };
  20. struct cf_trailer_entry { /* CPU-M CF trailer for raw traces (64 byte) */
  21. /* 0 - 7 */
  22. union {
  23. struct {
  24. unsigned int clock_base:1; /* TOD clock base */
  25. unsigned int speed:1; /* CPU speed */
  26. /* Measurement alerts */
  27. unsigned int mtda:1; /* Loss of MT ctr. data alert */
  28. unsigned int caca:1; /* Counter auth. change alert */
  29. unsigned int lcda:1; /* Loss of counter data alert */
  30. };
  31. unsigned long flags; /* 0-63 All indicators */
  32. };
  33. /* 8 - 15 */
  34. unsigned int cfvn:16; /* 64-79 Ctr First Version */
  35. unsigned int csvn:16; /* 80-95 Ctr Second Version */
  36. unsigned int cpu_speed:32; /* 96-127 CPU speed */
  37. /* 16 - 23 */
  38. unsigned long timestamp; /* 128-191 Timestamp (TOD) */
  39. /* 24 - 55 */
  40. union {
  41. struct {
  42. unsigned long progusage1;
  43. unsigned long progusage2;
  44. unsigned long progusage3;
  45. unsigned long tod_base;
  46. };
  47. unsigned long progusage[4];
  48. };
  49. /* 56 - 63 */
  50. unsigned int mach_type:16; /* Machine type */
  51. unsigned int res1:16; /* Reserved */
  52. unsigned int res2:32; /* Reserved */
  53. };
  54. #define CPUMF_CTR_SET_BASIC 0 /* Basic Counter Set */
  55. #define CPUMF_CTR_SET_USER 1 /* Problem-State Counter Set */
  56. #define CPUMF_CTR_SET_CRYPTO 2 /* Crypto-Activity Counter Set */
  57. #define CPUMF_CTR_SET_EXT 3 /* Extended Counter Set */
  58. #define CPUMF_CTR_SET_MT_DIAG 4 /* MT-diagnostic Counter Set */
  59. #endif