Deleted Added
full compact
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 ---