root/arch/powerpc/perf/hv-common.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. hv_perf_caps_get

   1 // SPDX-License-Identifier: GPL-2.0
   2 #include <asm/io.h>
   3 #include <asm/hvcall.h>
   4 
   5 #include "hv-gpci.h"
   6 #include "hv-common.h"
   7 
   8 unsigned long hv_perf_caps_get(struct hv_perf_caps *caps)
   9 {
  10         unsigned long r;
  11         struct p {
  12                 struct hv_get_perf_counter_info_params params;
  13                 struct hv_gpci_system_performance_capabilities caps;
  14         } __packed __aligned(sizeof(uint64_t));
  15 
  16         struct p arg = {
  17                 .params = {
  18                         .counter_request = cpu_to_be32(
  19                                 HV_GPCI_system_performance_capabilities),
  20                         .starting_index = cpu_to_be32(-1),
  21                         .counter_info_version_in = 0,
  22                 }
  23         };
  24 
  25         r = plpar_hcall_norets(H_GET_PERF_COUNTER_INFO,
  26                                virt_to_phys(&arg), sizeof(arg));
  27 
  28         if (r)
  29                 return r;
  30 
  31         pr_devel("capability_mask: 0x%x\n", arg.caps.capability_mask);
  32 
  33         caps->version = arg.params.counter_info_version_out;
  34         caps->collect_privileged = !!arg.caps.perf_collect_privileged;
  35         caps->ga = !!(arg.caps.capability_mask & HV_GPCI_CM_GA);
  36         caps->expanded = !!(arg.caps.capability_mask & HV_GPCI_CM_EXPANDED);
  37         caps->lab = !!(arg.caps.capability_mask & HV_GPCI_CM_LAB);
  38 
  39         return r;
  40 }

/* [<][>][^][v][top][bottom][index][help] */