libpmc.c (267062) | libpmc.c (277177) |
---|---|
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: head/lib/libpmc/libpmc.c 267062 2014-06-04 16:06:38Z kib $"); | 28__FBSDID("$FreeBSD: head/lib/libpmc/libpmc.c 277177 2015-01-14 12:46:58Z rrs $"); |
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> --- 158 unchanged lines hidden (view full) --- 195 __PMC_EV_ALIAS_COREI7() 196}; 197 198static const struct pmc_event_descr haswell_event_table[] = 199{ 200 __PMC_EV_ALIAS_HASWELL() 201}; 202 | 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> --- 158 unchanged lines hidden (view full) --- 195 __PMC_EV_ALIAS_COREI7() 196}; 197 198static const struct pmc_event_descr haswell_event_table[] = 199{ 200 __PMC_EV_ALIAS_HASWELL() 201}; 202 |
203static const struct pmc_event_descr haswell_xeon_event_table[] = 204{ 205 __PMC_EV_ALIAS_HASWELL_XEON() 206}; 207 208 |
|
203static const struct pmc_event_descr ivybridge_event_table[] = 204{ 205 __PMC_EV_ALIAS_IVYBRIDGE() 206}; 207 208static const struct pmc_event_descr ivybridge_xeon_event_table[] = 209{ 210 __PMC_EV_ALIAS_IVYBRIDGE_XEON() --- 51 unchanged lines hidden (view full) --- 262 263PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 264PMC_MDEP_TABLE(atom_silvermont, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 265PMC_MDEP_TABLE(core, IAP, PMC_CLASS_SOFT, PMC_CLASS_TSC); 266PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 267PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 268PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 269PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | 209static const struct pmc_event_descr ivybridge_event_table[] = 210{ 211 __PMC_EV_ALIAS_IVYBRIDGE() 212}; 213 214static const struct pmc_event_descr ivybridge_xeon_event_table[] = 215{ 216 __PMC_EV_ALIAS_IVYBRIDGE_XEON() --- 51 unchanged lines hidden (view full) --- 268 269PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 270PMC_MDEP_TABLE(atom_silvermont, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 271PMC_MDEP_TABLE(core, IAP, PMC_CLASS_SOFT, PMC_CLASS_TSC); 272PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 273PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 274PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 275PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); |
276PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); |
|
270PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 271PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 272PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 273PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 274PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 275PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 276PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC); 277PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC); --- 29 unchanged lines hidden (view full) --- 307PMC_CLASS_TABLE_DESC(iaf, IAF, iaf, iaf); 308PMC_CLASS_TABLE_DESC(atom, IAP, atom, iap); 309PMC_CLASS_TABLE_DESC(atom_silvermont, IAP, atom_silvermont, iap); 310PMC_CLASS_TABLE_DESC(core, IAP, core, iap); 311PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap); 312PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap); 313PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap); 314PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap); | 277PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 278PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 279PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 280PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 281PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); 282PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); 283PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC); 284PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC); --- 29 unchanged lines hidden (view full) --- 314PMC_CLASS_TABLE_DESC(iaf, IAF, iaf, iaf); 315PMC_CLASS_TABLE_DESC(atom, IAP, atom, iap); 316PMC_CLASS_TABLE_DESC(atom_silvermont, IAP, atom_silvermont, iap); 317PMC_CLASS_TABLE_DESC(core, IAP, core, iap); 318PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap); 319PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap); 320PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap); 321PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap); |
322PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell, iap); |
|
315PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap); 316PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap); 317PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap); 318PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap); 319PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap); 320PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap); 321PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf); 322PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp); --- 298 unchanged lines hidden (view full) --- 621#define atom_silvermont_aliases core2_aliases 622#define atom_silvermont_aliases_without_iaf core2_aliases_without_iaf 623#define corei7_aliases core2_aliases 624#define corei7_aliases_without_iaf core2_aliases_without_iaf 625#define nehalem_ex_aliases core2_aliases 626#define nehalem_ex_aliases_without_iaf core2_aliases_without_iaf 627#define haswell_aliases core2_aliases 628#define haswell_aliases_without_iaf core2_aliases_without_iaf | 323PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap); 324PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap); 325PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap); 326PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap); 327PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap); 328PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap); 329PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf); 330PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp); --- 298 unchanged lines hidden (view full) --- 629#define atom_silvermont_aliases core2_aliases 630#define atom_silvermont_aliases_without_iaf core2_aliases_without_iaf 631#define corei7_aliases core2_aliases 632#define corei7_aliases_without_iaf core2_aliases_without_iaf 633#define nehalem_ex_aliases core2_aliases 634#define nehalem_ex_aliases_without_iaf core2_aliases_without_iaf 635#define haswell_aliases core2_aliases 636#define haswell_aliases_without_iaf core2_aliases_without_iaf |
637#define haswell_xeon_aliases core2_aliases 638#define haswell_xeon_aliases_without_iaf core2_aliases_without_iaf |
|
629#define ivybridge_aliases core2_aliases 630#define ivybridge_aliases_without_iaf core2_aliases_without_iaf 631#define ivybridge_xeon_aliases core2_aliases 632#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf 633#define sandybridge_aliases core2_aliases 634#define sandybridge_aliases_without_iaf core2_aliases_without_iaf 635#define sandybridge_xeon_aliases core2_aliases 636#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf --- 254 unchanged lines hidden (view full) --- 891 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE || 892 cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE_XEON || 893 cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE || 894 cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE_XEON ) { 895 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { 896 n = pmc_parse_mask(iap_rsp_mask_sb_sbx_ib, p, &rsp); 897 } else 898 return (-1); | 639#define ivybridge_aliases core2_aliases 640#define ivybridge_aliases_without_iaf core2_aliases_without_iaf 641#define ivybridge_xeon_aliases core2_aliases 642#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf 643#define sandybridge_aliases core2_aliases 644#define sandybridge_aliases_without_iaf core2_aliases_without_iaf 645#define sandybridge_xeon_aliases core2_aliases 646#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf --- 254 unchanged lines hidden (view full) --- 901 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE || 902 cpu_info.pm_cputype == PMC_CPU_INTEL_SANDYBRIDGE_XEON || 903 cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE || 904 cpu_info.pm_cputype == PMC_CPU_INTEL_IVYBRIDGE_XEON ) { 905 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { 906 n = pmc_parse_mask(iap_rsp_mask_sb_sbx_ib, p, &rsp); 907 } else 908 return (-1); |
899 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL) { | 909 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL || 910 cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) { |
900 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { 901 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp); 902 } else 903 return (-1); 904 } else 905 return (-1); 906 907 if (n < 0) /* Parsing failed. */ --- 1875 unchanged lines hidden (view full) --- 2783 case PMC_CPU_INTEL_NEHALEM_EX: 2784 ev = nehalem_ex_event_table; 2785 count = PMC_EVENT_TABLE_SIZE(nehalem_ex); 2786 break; 2787 case PMC_CPU_INTEL_HASWELL: 2788 ev = haswell_event_table; 2789 count = PMC_EVENT_TABLE_SIZE(haswell); 2790 break; | 911 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { 912 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp); 913 } else 914 return (-1); 915 } else 916 return (-1); 917 918 if (n < 0) /* Parsing failed. */ --- 1875 unchanged lines hidden (view full) --- 2794 case PMC_CPU_INTEL_NEHALEM_EX: 2795 ev = nehalem_ex_event_table; 2796 count = PMC_EVENT_TABLE_SIZE(nehalem_ex); 2797 break; 2798 case PMC_CPU_INTEL_HASWELL: 2799 ev = haswell_event_table; 2800 count = PMC_EVENT_TABLE_SIZE(haswell); 2801 break; |
2802 case PMC_CPU_INTEL_HASWELL_XEON: 2803 ev = haswell_xeon_event_table; 2804 count = PMC_EVENT_TABLE_SIZE(haswell_xeon); 2805 break; |
|
2791 case PMC_CPU_INTEL_IVYBRIDGE: 2792 ev = ivybridge_event_table; 2793 count = PMC_EVENT_TABLE_SIZE(ivybridge); 2794 break; 2795 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 2796 ev = ivybridge_xeon_event_table; 2797 count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon); 2798 break; --- 311 unchanged lines hidden (view full) --- 3110 case PMC_CPU_INTEL_NEHALEM_EX: 3111 PMC_MDEP_INIT_INTEL_V2(nehalem_ex); 3112 break; 3113 case PMC_CPU_INTEL_HASWELL: 3114 pmc_class_table[n++] = &ucf_class_table_descr; 3115 pmc_class_table[n++] = &haswelluc_class_table_descr; 3116 PMC_MDEP_INIT_INTEL_V2(haswell); 3117 break; | 2806 case PMC_CPU_INTEL_IVYBRIDGE: 2807 ev = ivybridge_event_table; 2808 count = PMC_EVENT_TABLE_SIZE(ivybridge); 2809 break; 2810 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 2811 ev = ivybridge_xeon_event_table; 2812 count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon); 2813 break; --- 311 unchanged lines hidden (view full) --- 3125 case PMC_CPU_INTEL_NEHALEM_EX: 3126 PMC_MDEP_INIT_INTEL_V2(nehalem_ex); 3127 break; 3128 case PMC_CPU_INTEL_HASWELL: 3129 pmc_class_table[n++] = &ucf_class_table_descr; 3130 pmc_class_table[n++] = &haswelluc_class_table_descr; 3131 PMC_MDEP_INIT_INTEL_V2(haswell); 3132 break; |
3133 case PMC_CPU_INTEL_HASWELL_XEON: 3134 PMC_MDEP_INIT_INTEL_V2(haswell_xeon); 3135 break; |
|
3118 case PMC_CPU_INTEL_IVYBRIDGE: 3119 PMC_MDEP_INIT_INTEL_V2(ivybridge); 3120 break; 3121 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 3122 PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon); 3123 break; 3124 case PMC_CPU_INTEL_SANDYBRIDGE: 3125 pmc_class_table[n++] = &ucf_class_table_descr; --- 149 unchanged lines hidden (view full) --- 3275 ev = nehalem_ex_event_table; 3276 evfence = nehalem_ex_event_table + 3277 PMC_EVENT_TABLE_SIZE(nehalem_ex); 3278 break; 3279 case PMC_CPU_INTEL_HASWELL: 3280 ev = haswell_event_table; 3281 evfence = haswell_event_table + PMC_EVENT_TABLE_SIZE(haswell); 3282 break; | 3136 case PMC_CPU_INTEL_IVYBRIDGE: 3137 PMC_MDEP_INIT_INTEL_V2(ivybridge); 3138 break; 3139 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 3140 PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon); 3141 break; 3142 case PMC_CPU_INTEL_SANDYBRIDGE: 3143 pmc_class_table[n++] = &ucf_class_table_descr; --- 149 unchanged lines hidden (view full) --- 3293 ev = nehalem_ex_event_table; 3294 evfence = nehalem_ex_event_table + 3295 PMC_EVENT_TABLE_SIZE(nehalem_ex); 3296 break; 3297 case PMC_CPU_INTEL_HASWELL: 3298 ev = haswell_event_table; 3299 evfence = haswell_event_table + PMC_EVENT_TABLE_SIZE(haswell); 3300 break; |
3301 case PMC_CPU_INTEL_HASWELL_XEON: 3302 ev = haswell_xeon_event_table; 3303 evfence = haswell_xeon_event_table + PMC_EVENT_TABLE_SIZE(haswell_xeon); 3304 break; 3305 |
|
3283 case PMC_CPU_INTEL_IVYBRIDGE: 3284 ev = ivybridge_event_table; 3285 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge); 3286 break; 3287 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 3288 ev = ivybridge_xeon_event_table; 3289 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon); 3290 break; --- 280 unchanged lines hidden --- | 3306 case PMC_CPU_INTEL_IVYBRIDGE: 3307 ev = ivybridge_event_table; 3308 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge); 3309 break; 3310 case PMC_CPU_INTEL_IVYBRIDGE_XEON: 3311 ev = ivybridge_xeon_event_table; 3312 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon); 3313 break; --- 280 unchanged lines hidden --- |