Deleted Added
full compact
libpmc.c (323798) libpmc.c (323799)
1/*-
2 * Copyright (c) 2003-2008 Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2003-2008 Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: stable/11/lib/libpmc/libpmc.c 323798 2017-09-20 08:41:46Z kib $");
28__FBSDID("$FreeBSD: stable/11/lib/libpmc/libpmc.c 323799 2017-09-20 08:45:42Z kib $");
29
30#include <sys/types.h>
31#include <sys/param.h>
32#include <sys/module.h>
33#include <sys/pmc.h>
34#include <sys/syscall.h>
35
36#include <ctype.h>

--- 190 unchanged lines hidden (view full) ---

227 __PMC_EV_ALIAS_BROADWELL_XEON()
228};
229
230static const struct pmc_event_descr skylake_event_table[] =
231{
232 __PMC_EV_ALIAS_SKYLAKE()
233};
234
29
30#include <sys/types.h>
31#include <sys/param.h>
32#include <sys/module.h>
33#include <sys/pmc.h>
34#include <sys/syscall.h>
35
36#include <ctype.h>

--- 190 unchanged lines hidden (view full) ---

227 __PMC_EV_ALIAS_BROADWELL_XEON()
228};
229
230static const struct pmc_event_descr skylake_event_table[] =
231{
232 __PMC_EV_ALIAS_SKYLAKE()
233};
234
235static const struct pmc_event_descr skylake_xeon_event_table[] =
236{
237 __PMC_EV_ALIAS_SKYLAKE_XEON()
238};
239
235static const struct pmc_event_descr ivybridge_event_table[] =
236{
237 __PMC_EV_ALIAS_IVYBRIDGE()
238};
239
240static const struct pmc_event_descr ivybridge_xeon_event_table[] =
241{
242 __PMC_EV_ALIAS_IVYBRIDGE_XEON()

--- 80 unchanged lines hidden (view full) ---

323PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
324PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
325PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
326PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
327PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
328PMC_MDEP_TABLE(broadwell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
329PMC_MDEP_TABLE(broadwell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
330PMC_MDEP_TABLE(skylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
240static const struct pmc_event_descr ivybridge_event_table[] =
241{
242 __PMC_EV_ALIAS_IVYBRIDGE()
243};
244
245static const struct pmc_event_descr ivybridge_xeon_event_table[] =
246{
247 __PMC_EV_ALIAS_IVYBRIDGE_XEON()

--- 80 unchanged lines hidden (view full) ---

328PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
329PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
330PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
331PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
332PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
333PMC_MDEP_TABLE(broadwell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
334PMC_MDEP_TABLE(broadwell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
335PMC_MDEP_TABLE(skylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
336PMC_MDEP_TABLE(skylake_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
331PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
332PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
333PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
334PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
335PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
336PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
337PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC);
338PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC);

--- 39 unchanged lines hidden (view full) ---

378PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap);
379PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap);
380PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap);
381PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap);
382PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap);
383PMC_CLASS_TABLE_DESC(broadwell, IAP, broadwell, iap);
384PMC_CLASS_TABLE_DESC(broadwell_xeon, IAP, broadwell_xeon, iap);
385PMC_CLASS_TABLE_DESC(skylake, IAP, skylake, iap);
337PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
338PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
339PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
340PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
341PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
342PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
343PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC);
344PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC);

--- 39 unchanged lines hidden (view full) ---

384PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap);
385PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap);
386PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap);
387PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap);
388PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap);
389PMC_CLASS_TABLE_DESC(broadwell, IAP, broadwell, iap);
390PMC_CLASS_TABLE_DESC(broadwell_xeon, IAP, broadwell_xeon, iap);
391PMC_CLASS_TABLE_DESC(skylake, IAP, skylake, iap);
392PMC_CLASS_TABLE_DESC(skylake_xeon, IAP, skylake_xeon, iap);
386PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap);
387PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap);
388PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap);
389PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap);
390PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap);
391PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap);
392PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf);
393PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp);

--- 322 unchanged lines hidden (view full) ---

716#define haswell_xeon_aliases core2_aliases
717#define haswell_xeon_aliases_without_iaf core2_aliases_without_iaf
718#define broadwell_aliases core2_aliases
719#define broadwell_aliases_without_iaf core2_aliases_without_iaf
720#define broadwell_xeon_aliases core2_aliases
721#define broadwell_xeon_aliases_without_iaf core2_aliases_without_iaf
722#define skylake_aliases core2_aliases
723#define skylake_aliases_without_iaf core2_aliases_without_iaf
393PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap);
394PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap);
395PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap);
396PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap);
397PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap);
398PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap);
399PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf);
400PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp);

--- 322 unchanged lines hidden (view full) ---

723#define haswell_xeon_aliases core2_aliases
724#define haswell_xeon_aliases_without_iaf core2_aliases_without_iaf
725#define broadwell_aliases core2_aliases
726#define broadwell_aliases_without_iaf core2_aliases_without_iaf
727#define broadwell_xeon_aliases core2_aliases
728#define broadwell_xeon_aliases_without_iaf core2_aliases_without_iaf
729#define skylake_aliases core2_aliases
730#define skylake_aliases_without_iaf core2_aliases_without_iaf
731#define skylake_xeon_aliases core2_aliases
732#define skylake_xeon_aliases_without_iaf core2_aliases_without_iaf
724#define ivybridge_aliases core2_aliases
725#define ivybridge_aliases_without_iaf core2_aliases_without_iaf
726#define ivybridge_xeon_aliases core2_aliases
727#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf
728#define sandybridge_aliases core2_aliases
729#define sandybridge_aliases_without_iaf core2_aliases_without_iaf
730#define sandybridge_xeon_aliases core2_aliases
731#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf

--- 300 unchanged lines hidden (view full) ---

1032 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL ||
1033 cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL_XEON) {
1034 /* Broadwell is defined to use same mask as haswell */
1035 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1036 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
1037 } else
1038 return (-1);
1039
733#define ivybridge_aliases core2_aliases
734#define ivybridge_aliases_without_iaf core2_aliases_without_iaf
735#define ivybridge_xeon_aliases core2_aliases
736#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf
737#define sandybridge_aliases core2_aliases
738#define sandybridge_aliases_without_iaf core2_aliases_without_iaf
739#define sandybridge_xeon_aliases core2_aliases
740#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf

--- 300 unchanged lines hidden (view full) ---

1041 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL ||
1042 cpu_info.pm_cputype == PMC_CPU_INTEL_BROADWELL_XEON) {
1043 /* Broadwell is defined to use same mask as haswell */
1044 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1045 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
1046 } else
1047 return (-1);
1048
1040 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE) {
1049 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE ||
1050 cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE_XEON) {
1041 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1042 n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp);
1043 } else
1044 return (-1);
1045
1046 } else
1047 return (-1);
1048

--- 1953 unchanged lines hidden (view full) ---

3002 case PMC_CPU_INTEL_BROADWELL_XEON:
3003 ev = broadwell_xeon_event_table;
3004 count = PMC_EVENT_TABLE_SIZE(broadwell_xeon);
3005 break;
3006 case PMC_CPU_INTEL_SKYLAKE:
3007 ev = skylake_event_table;
3008 count = PMC_EVENT_TABLE_SIZE(skylake);
3009 break;
1051 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1052 n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp);
1053 } else
1054 return (-1);
1055
1056 } else
1057 return (-1);
1058

--- 1953 unchanged lines hidden (view full) ---

3012 case PMC_CPU_INTEL_BROADWELL_XEON:
3013 ev = broadwell_xeon_event_table;
3014 count = PMC_EVENT_TABLE_SIZE(broadwell_xeon);
3015 break;
3016 case PMC_CPU_INTEL_SKYLAKE:
3017 ev = skylake_event_table;
3018 count = PMC_EVENT_TABLE_SIZE(skylake);
3019 break;
3020 case PMC_CPU_INTEL_SKYLAKE_XEON:
3021 ev = skylake_xeon_event_table;
3022 count = PMC_EVENT_TABLE_SIZE(skylake_xeon);
3023 break;
3010 case PMC_CPU_INTEL_IVYBRIDGE:
3011 ev = ivybridge_event_table;
3012 count = PMC_EVENT_TABLE_SIZE(ivybridge);
3013 break;
3014 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3015 ev = ivybridge_xeon_event_table;
3016 count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3017 break;

--- 363 unchanged lines hidden (view full) ---

3381 PMC_MDEP_INIT_INTEL_V2(broadwell);
3382 break;
3383 case PMC_CPU_INTEL_BROADWELL_XEON:
3384 PMC_MDEP_INIT_INTEL_V2(broadwell_xeon);
3385 break;
3386 case PMC_CPU_INTEL_SKYLAKE:
3387 PMC_MDEP_INIT_INTEL_V2(skylake);
3388 break;
3024 case PMC_CPU_INTEL_IVYBRIDGE:
3025 ev = ivybridge_event_table;
3026 count = PMC_EVENT_TABLE_SIZE(ivybridge);
3027 break;
3028 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3029 ev = ivybridge_xeon_event_table;
3030 count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3031 break;

--- 363 unchanged lines hidden (view full) ---

3395 PMC_MDEP_INIT_INTEL_V2(broadwell);
3396 break;
3397 case PMC_CPU_INTEL_BROADWELL_XEON:
3398 PMC_MDEP_INIT_INTEL_V2(broadwell_xeon);
3399 break;
3400 case PMC_CPU_INTEL_SKYLAKE:
3401 PMC_MDEP_INIT_INTEL_V2(skylake);
3402 break;
3403 case PMC_CPU_INTEL_SKYLAKE_XEON:
3404 PMC_MDEP_INIT_INTEL_V2(skylake_xeon);
3405 break;
3389 case PMC_CPU_INTEL_IVYBRIDGE:
3390 PMC_MDEP_INIT_INTEL_V2(ivybridge);
3391 break;
3392 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3393 PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon);
3394 break;
3395 case PMC_CPU_INTEL_SANDYBRIDGE:
3396 pmc_class_table[n++] = &ucf_class_table_descr;

--- 196 unchanged lines hidden (view full) ---

3593 ev = broadwell_xeon_event_table;
3594 evfence = broadwell_xeon_event_table + PMC_EVENT_TABLE_SIZE(broadwell_xeon);
3595 break;
3596 case PMC_CPU_INTEL_SKYLAKE:
3597 ev = skylake_event_table;
3598 evfence = skylake_event_table +
3599 PMC_EVENT_TABLE_SIZE(skylake);
3600 break;
3406 case PMC_CPU_INTEL_IVYBRIDGE:
3407 PMC_MDEP_INIT_INTEL_V2(ivybridge);
3408 break;
3409 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3410 PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon);
3411 break;
3412 case PMC_CPU_INTEL_SANDYBRIDGE:
3413 pmc_class_table[n++] = &ucf_class_table_descr;

--- 196 unchanged lines hidden (view full) ---

3610 ev = broadwell_xeon_event_table;
3611 evfence = broadwell_xeon_event_table + PMC_EVENT_TABLE_SIZE(broadwell_xeon);
3612 break;
3613 case PMC_CPU_INTEL_SKYLAKE:
3614 ev = skylake_event_table;
3615 evfence = skylake_event_table +
3616 PMC_EVENT_TABLE_SIZE(skylake);
3617 break;
3618 case PMC_CPU_INTEL_SKYLAKE_XEON:
3619 ev = skylake_xeon_event_table;
3620 evfence = skylake_xeon_event_table +
3621 PMC_EVENT_TABLE_SIZE(skylake_xeon);
3622 break;
3601 case PMC_CPU_INTEL_IVYBRIDGE:
3602 ev = ivybridge_event_table;
3603 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge);
3604 break;
3605 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3606 ev = ivybridge_xeon_event_table;
3607 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3608 break;

--- 312 unchanged lines hidden ---
3623 case PMC_CPU_INTEL_IVYBRIDGE:
3624 ev = ivybridge_event_table;
3625 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge);
3626 break;
3627 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3628 ev = ivybridge_xeon_event_table;
3629 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3630 break;

--- 312 unchanged lines hidden ---