| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Performance events - AMD Processor Power Reporting Mechanism |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2016 Advanced Micro Devices, Inc. |
|---|
| 5 | 6 | * |
|---|
| 6 | 7 | * Author: Huang Rui <ray.huang@amd.com> |
|---|
| 7 | | - * |
|---|
| 8 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 9 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 10 | | - * published by the Free Software Foundation. |
|---|
| 11 | 8 | */ |
|---|
| 12 | 9 | |
|---|
| 13 | 10 | #include <linux/module.h> |
|---|
| .. | .. |
|---|
| 15 | 12 | #include <linux/perf_event.h> |
|---|
| 16 | 13 | #include <asm/cpu_device_id.h> |
|---|
| 17 | 14 | #include "../perf_event.h" |
|---|
| 18 | | - |
|---|
| 19 | | -#define MSR_F15H_CU_PWR_ACCUMULATOR 0xc001007a |
|---|
| 20 | | -#define MSR_F15H_CU_MAX_PWR_ACCUMULATOR 0xc001007b |
|---|
| 21 | | -#define MSR_F15H_PTSC 0xc0010280 |
|---|
| 22 | 15 | |
|---|
| 23 | 16 | /* Event code: LSB 8 bits, passed in attr->config any other bit is reserved. */ |
|---|
| 24 | 17 | #define AMD_POWER_EVENT_MASK 0xFFULL |
|---|
| .. | .. |
|---|
| 136 | 129 | return -ENOENT; |
|---|
| 137 | 130 | |
|---|
| 138 | 131 | /* Unsupported modes and filters. */ |
|---|
| 139 | | - if (event->attr.exclude_user || |
|---|
| 140 | | - event->attr.exclude_kernel || |
|---|
| 141 | | - event->attr.exclude_hv || |
|---|
| 142 | | - event->attr.exclude_idle || |
|---|
| 143 | | - event->attr.exclude_host || |
|---|
| 144 | | - event->attr.exclude_guest || |
|---|
| 145 | | - /* no sampling */ |
|---|
| 146 | | - event->attr.sample_period) |
|---|
| 132 | + if (event->attr.sample_period) |
|---|
| 147 | 133 | return -EINVAL; |
|---|
| 148 | 134 | |
|---|
| 149 | 135 | if (cfg != AMD_POWER_EVENTSEL_PKG) |
|---|
| .. | .. |
|---|
| 226 | 212 | .start = pmu_event_start, |
|---|
| 227 | 213 | .stop = pmu_event_stop, |
|---|
| 228 | 214 | .read = pmu_event_read, |
|---|
| 215 | + .capabilities = PERF_PMU_CAP_NO_EXCLUDE, |
|---|
| 216 | + .module = THIS_MODULE, |
|---|
| 229 | 217 | }; |
|---|
| 230 | 218 | |
|---|
| 231 | 219 | static int power_cpu_exit(unsigned int cpu) |
|---|
| .. | .. |
|---|
| 268 | 256 | } |
|---|
| 269 | 257 | |
|---|
| 270 | 258 | static const struct x86_cpu_id cpu_match[] = { |
|---|
| 271 | | - { .vendor = X86_VENDOR_AMD, .family = 0x15 }, |
|---|
| 259 | + X86_MATCH_VENDOR_FAM(AMD, 0x15, NULL), |
|---|
| 272 | 260 | {}, |
|---|
| 273 | 261 | }; |
|---|
| 274 | 262 | |
|---|