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