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 --- |