Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 1 | #ifndef LINUX_POWERPC_PERF_HV_24X7_H_ |
| 2 | #define LINUX_POWERPC_PERF_HV_24X7_H_ |
| 3 | |
| 4 | #include <linux/types.h> |
| 5 | |
Cody P Schafer | 5c5cd7b | 2015-01-30 13:46:00 -0800 | [diff] [blame] | 6 | enum hv_perf_domains { |
| 7 | #define DOMAIN(n, v, x, c) HV_PERF_DOMAIN_##n = v, |
| 8 | #include "hv-24x7-domains.h" |
| 9 | #undef DOMAIN |
Sukadev Bhattiprolu | d34171e | 2016-02-16 20:07:51 -0500 | [diff] [blame] | 10 | HV_PERF_DOMAIN_MAX, |
Cody P Schafer | 5c5cd7b | 2015-01-30 13:46:00 -0800 | [diff] [blame] | 11 | }; |
| 12 | |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 13 | struct hv_24x7_request { |
| 14 | /* PHYSICAL domains require enabling via phyp/hmc. */ |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 15 | __u8 performance_domain; |
| 16 | __u8 reserved[0x1]; |
| 17 | |
| 18 | /* bytes to read starting at @data_offset. must be a multiple of 8 */ |
| 19 | __be16 data_size; |
| 20 | |
| 21 | /* |
| 22 | * byte offset within the perf domain to read from. must be 8 byte |
| 23 | * aligned |
| 24 | */ |
| 25 | __be32 data_offset; |
| 26 | |
| 27 | /* |
| 28 | * only valid for VIRTUAL_PROCESSOR domains, ignored for others. |
| 29 | * -1 means "current partition only" |
| 30 | * Enabling via phyp/hmc required for non-"-1" values. 0 forbidden |
| 31 | * unless requestor is 0. |
| 32 | */ |
| 33 | __be16 starting_lpar_ix; |
| 34 | |
| 35 | /* |
| 36 | * Ignored when @starting_lpar_ix == -1 |
| 37 | * Ignored when @performance_domain is not VIRTUAL_PROCESSOR_* |
| 38 | * -1 means "infinite" or all |
| 39 | */ |
| 40 | __be16 max_num_lpars; |
| 41 | |
| 42 | /* chip, core, or virtual processor based on @performance_domain */ |
| 43 | __be16 starting_ix; |
| 44 | __be16 max_ix; |
| 45 | } __packed; |
| 46 | |
| 47 | struct hv_24x7_request_buffer { |
| 48 | /* 0 - ? */ |
| 49 | /* 1 - ? */ |
| 50 | #define HV_24X7_IF_VERSION_CURRENT 0x01 |
| 51 | __u8 interface_version; |
| 52 | __u8 num_requests; |
| 53 | __u8 reserved[0xE]; |
Sukadev Bhattiprolu | 145264e | 2015-03-30 18:53:38 -0700 | [diff] [blame] | 54 | struct hv_24x7_request requests[1]; |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 55 | } __packed; |
| 56 | |
| 57 | struct hv_24x7_result_element { |
| 58 | __be16 lpar_ix; |
| 59 | |
| 60 | /* |
| 61 | * represents the core, chip, or virtual processor based on the |
| 62 | * request's @performance_domain |
| 63 | */ |
| 64 | __be16 domain_ix; |
| 65 | |
| 66 | /* -1 if @performance_domain does not refer to a virtual processor */ |
| 67 | __be32 lpar_cfg_instance_id; |
| 68 | |
| 69 | /* size = @result_element_data_size of cointaining result. */ |
Sukadev Bhattiprolu | 145264e | 2015-03-30 18:53:38 -0700 | [diff] [blame] | 70 | __u64 element_data[1]; |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 71 | } __packed; |
| 72 | |
| 73 | struct hv_24x7_result { |
| 74 | __u8 result_ix; |
| 75 | |
| 76 | /* |
| 77 | * 0 = not all result elements fit into the buffer, additional requests |
| 78 | * required |
| 79 | * 1 = all result elements were returned |
| 80 | */ |
| 81 | __u8 results_complete; |
| 82 | __be16 num_elements_returned; |
| 83 | |
Adam Buchbinder | 446957b | 2016-02-24 10:51:11 -0800 | [diff] [blame] | 84 | /* This is a copy of @data_size from the corresponding hv_24x7_request */ |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 85 | __be16 result_element_data_size; |
| 86 | __u8 reserved[0x2]; |
| 87 | |
| 88 | /* WARNING: only valid for first result element due to variable sizes |
| 89 | * of result elements */ |
| 90 | /* struct hv_24x7_result_element[@num_elements_returned] */ |
Sukadev Bhattiprolu | 145264e | 2015-03-30 18:53:38 -0700 | [diff] [blame] | 91 | struct hv_24x7_result_element elements[1]; |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 92 | } __packed; |
| 93 | |
| 94 | struct hv_24x7_data_result_buffer { |
| 95 | /* See versioning for request buffer */ |
| 96 | __u8 interface_version; |
| 97 | |
| 98 | __u8 num_results; |
| 99 | __u8 reserved[0x1]; |
| 100 | __u8 failing_request_ix; |
| 101 | __be32 detailed_rc; |
| 102 | __be64 cec_cfg_instance_id; |
| 103 | __be64 catalog_version_num; |
| 104 | __u8 reserved2[0x8]; |
| 105 | /* WARNING: only valid for the first result due to variable sizes of |
| 106 | * results */ |
Sukadev Bhattiprolu | 145264e | 2015-03-30 18:53:38 -0700 | [diff] [blame] | 107 | struct hv_24x7_result results[1]; /* [@num_results] */ |
Cody P Schafer | a8b2c43 | 2014-03-14 16:00:38 +1100 | [diff] [blame] | 108 | } __packed; |
| 109 | |
| 110 | #endif |