1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 22d1b21adSCody P Schafer #include <asm/io.h> 32d1b21adSCody P Schafer #include <asm/hvcall.h> 42d1b21adSCody P Schafer 52d1b21adSCody P Schafer #include "hv-gpci.h" 62d1b21adSCody P Schafer #include "hv-common.h" 72d1b21adSCody P Schafer hv_perf_caps_get(struct hv_perf_caps * caps)82d1b21adSCody P Schaferunsigned long hv_perf_caps_get(struct hv_perf_caps *caps) 92d1b21adSCody P Schafer { 102d1b21adSCody P Schafer unsigned long r; 112d1b21adSCody P Schafer struct p { 122d1b21adSCody P Schafer struct hv_get_perf_counter_info_params params; 139e9f6010SCody P Schafer struct hv_gpci_system_performance_capabilities caps; 142d1b21adSCody P Schafer } __packed __aligned(sizeof(uint64_t)); 152d1b21adSCody P Schafer 162d1b21adSCody P Schafer struct p arg = { 172d1b21adSCody P Schafer .params = { 182d1b21adSCody P Schafer .counter_request = cpu_to_be32( 199e9f6010SCody P Schafer HV_GPCI_system_performance_capabilities), 202d1b21adSCody P Schafer .starting_index = cpu_to_be32(-1), 212d1b21adSCody P Schafer .counter_info_version_in = 0, 222d1b21adSCody P Schafer } 232d1b21adSCody P Schafer }; 242d1b21adSCody P Schafer 252d1b21adSCody P Schafer r = plpar_hcall_norets(H_GET_PERF_COUNTER_INFO, 262d1b21adSCody P Schafer virt_to_phys(&arg), sizeof(arg)); 272d1b21adSCody P Schafer 282d1b21adSCody P Schafer if (r) 292d1b21adSCody P Schafer return r; 302d1b21adSCody P Schafer 312d1b21adSCody P Schafer pr_devel("capability_mask: 0x%x\n", arg.caps.capability_mask); 322d1b21adSCody P Schafer 332d1b21adSCody P Schafer caps->version = arg.params.counter_info_version_out; 342d1b21adSCody P Schafer caps->collect_privileged = !!arg.caps.perf_collect_privileged; 359e9f6010SCody P Schafer caps->ga = !!(arg.caps.capability_mask & HV_GPCI_CM_GA); 369e9f6010SCody P Schafer caps->expanded = !!(arg.caps.capability_mask & HV_GPCI_CM_EXPANDED); 379e9f6010SCody P Schafer caps->lab = !!(arg.caps.capability_mask & HV_GPCI_CM_LAB); 382d1b21adSCody P Schafer 392d1b21adSCody P Schafer return r; 402d1b21adSCody P Schafer } 41