Deleted Added
full compact
libpmc.c (289317) libpmc.c (291494)
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 289317 2015-10-14 16:56:25Z bz $");
28__FBSDID("$FreeBSD: head/lib/libpmc/libpmc.c 291494 2015-11-30 17:35:49Z 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>

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

212 __PMC_EV_ALIAS_HASWELL()
213};
214
215static const struct pmc_event_descr haswell_xeon_event_table[] =
216{
217 __PMC_EV_ALIAS_HASWELL_XEON()
218};
219
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>

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

212 __PMC_EV_ALIAS_HASWELL()
213};
214
215static const struct pmc_event_descr haswell_xeon_event_table[] =
216{
217 __PMC_EV_ALIAS_HASWELL_XEON()
218};
219
220static const struct pmc_event_descr broadwell_event_table[] =
221{
222 __PMC_EV_ALIAS_BROADWELL()
223};
220
224
225static const struct pmc_event_descr broadwell_xeon_event_table[] =
226{
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
221static const struct pmc_event_descr ivybridge_event_table[] =
222{
223 __PMC_EV_ALIAS_IVYBRIDGE()
224};
225
226static const struct pmc_event_descr ivybridge_xeon_event_table[] =
227{
228 __PMC_EV_ALIAS_IVYBRIDGE_XEON()

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

253 __PMC_EV_ALIAS_COREI7UC()
254};
255
256static const struct pmc_event_descr haswelluc_event_table[] =
257{
258 __PMC_EV_ALIAS_HASWELLUC()
259};
260
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()

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

267 __PMC_EV_ALIAS_COREI7UC()
268};
269
270static const struct pmc_event_descr haswelluc_event_table[] =
271{
272 __PMC_EV_ALIAS_HASWELLUC()
273};
274
275static const struct pmc_event_descr broadwelluc_event_table[] =
276{
277 __PMC_EV_ALIAS_BROADWELLUC()
278};
279
261static const struct pmc_event_descr sandybridgeuc_event_table[] =
262{
263 __PMC_EV_ALIAS_SANDYBRIDGEUC()
264};
265
266static const struct pmc_event_descr westmereuc_event_table[] =
267{
268 __PMC_EV_ALIAS_WESTMEREUC()

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

301PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
302PMC_MDEP_TABLE(atom_silvermont, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
303PMC_MDEP_TABLE(core, IAP, PMC_CLASS_SOFT, PMC_CLASS_TSC);
304PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
305PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
306PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
307PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
308PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
280static const struct pmc_event_descr sandybridgeuc_event_table[] =
281{
282 __PMC_EV_ALIAS_SANDYBRIDGEUC()
283};
284
285static const struct pmc_event_descr westmereuc_event_table[] =
286{
287 __PMC_EV_ALIAS_WESTMEREUC()

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

320PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
321PMC_MDEP_TABLE(atom_silvermont, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
322PMC_MDEP_TABLE(core, IAP, PMC_CLASS_SOFT, PMC_CLASS_TSC);
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);
309PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
310PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
311PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
312PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
313PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP);
314PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC);
315PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC);
316PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC);

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

353PMC_CLASS_TABLE_DESC(atom, IAP, atom, iap);
354PMC_CLASS_TABLE_DESC(atom_silvermont, IAP, atom_silvermont, iap);
355PMC_CLASS_TABLE_DESC(core, IAP, core, iap);
356PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap);
357PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap);
358PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap);
359PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap);
360PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap);
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);

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

375PMC_CLASS_TABLE_DESC(atom, IAP, atom, iap);
376PMC_CLASS_TABLE_DESC(atom_silvermont, IAP, atom_silvermont, iap);
377PMC_CLASS_TABLE_DESC(core, IAP, core, iap);
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);
361PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap);
362PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap);
363PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap);
364PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap);
365PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap);
366PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap);
367PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf);
368PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp);
369PMC_CLASS_TABLE_DESC(haswelluc, UCP, haswelluc, ucp);
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);
394PMC_CLASS_TABLE_DESC(haswelluc, UCP, haswelluc, ucp);
395PMC_CLASS_TABLE_DESC(broadwelluc, UCP, broadwelluc, ucp);
370PMC_CLASS_TABLE_DESC(sandybridgeuc, UCP, sandybridgeuc, ucp);
371PMC_CLASS_TABLE_DESC(westmereuc, UCP, westmereuc, ucp);
372#endif
373#if defined(__i386__)
374PMC_CLASS_TABLE_DESC(k7, K7, k7, k7);
375#endif
376#if defined(__i386__) || defined(__amd64__)
377PMC_CLASS_TABLE_DESC(k8, K8, k8, k8);

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

684#define corei7_aliases core2_aliases
685#define corei7_aliases_without_iaf core2_aliases_without_iaf
686#define nehalem_ex_aliases core2_aliases
687#define nehalem_ex_aliases_without_iaf core2_aliases_without_iaf
688#define haswell_aliases core2_aliases
689#define haswell_aliases_without_iaf core2_aliases_without_iaf
690#define haswell_xeon_aliases core2_aliases
691#define haswell_xeon_aliases_without_iaf core2_aliases_without_iaf
396PMC_CLASS_TABLE_DESC(sandybridgeuc, UCP, sandybridgeuc, ucp);
397PMC_CLASS_TABLE_DESC(westmereuc, UCP, westmereuc, ucp);
398#endif
399#if defined(__i386__)
400PMC_CLASS_TABLE_DESC(k7, K7, k7, k7);
401#endif
402#if defined(__i386__) || defined(__amd64__)
403PMC_CLASS_TABLE_DESC(k8, K8, k8, k8);

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

710#define corei7_aliases core2_aliases
711#define corei7_aliases_without_iaf core2_aliases_without_iaf
712#define nehalem_ex_aliases core2_aliases
713#define nehalem_ex_aliases_without_iaf core2_aliases_without_iaf
714#define haswell_aliases core2_aliases
715#define haswell_aliases_without_iaf core2_aliases_without_iaf
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
692#define ivybridge_aliases core2_aliases
693#define ivybridge_aliases_without_iaf core2_aliases_without_iaf
694#define ivybridge_xeon_aliases core2_aliases
695#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf
696#define sandybridge_aliases core2_aliases
697#define sandybridge_aliases_without_iaf core2_aliases_without_iaf
698#define sandybridge_xeon_aliases core2_aliases
699#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf

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

844 PMCMASK(RES_SNOOP_SNP_MISS, (1ULL << 33)),
845 PMCMASK(RES_SNOOP_HIT_NO_FWD, (1ULL << 34)),
846 PMCMASK(RES_SNOOP_HIT_FWD, (1ULL << 35)),
847 PMCMASK(RES_SNOOP_HITM, (1ULL << 36)),
848 PMCMASK(RES_NON_DRAM, (1ULL << 37)),
849 NULLMASK
850};
851
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

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

876 PMCMASK(RES_SNOOP_SNP_MISS, (1ULL << 33)),
877 PMCMASK(RES_SNOOP_HIT_NO_FWD, (1ULL << 34)),
878 PMCMASK(RES_SNOOP_HIT_FWD, (1ULL << 35)),
879 PMCMASK(RES_SNOOP_HITM, (1ULL << 36)),
880 PMCMASK(RES_NON_DRAM, (1ULL << 37)),
881 NULLMASK
882};
883
884/* Broadwell is defined to use the same mask as Haswell */
852static struct pmc_masks iap_rsp_mask_haswell[] = {
853 PMCMASK(REQ_DMND_DATA_RD, (1ULL << 0)),
854 PMCMASK(REQ_DMND_RFO, (1ULL << 1)),
855 PMCMASK(REQ_DMND_IFETCH, (1ULL << 2)),
856 PMCMASK(REQ_PF_DATA_RD, (1ULL << 4)),
857 PMCMASK(REQ_PF_RFO, (1ULL << 5)),
858 PMCMASK(REQ_PF_IFETCH, (1ULL << 6)),
859 PMCMASK(REQ_OTHER, (1ULL << 15)),
860 PMCMASK(RES_ANY, (1ULL << 16)),
861 PMCMASK(RES_SUPPLIER_SUPP, (1ULL << 17)),
862 PMCMASK(RES_SUPPLIER_LLC_HITM, (1ULL << 18)),
863 PMCMASK(RES_SUPPLIER_LLC_HITE, (1ULL << 19)),
864 PMCMASK(RES_SUPPLIER_LLC_HITS, (1ULL << 20)),
865 PMCMASK(RES_SUPPLIER_LLC_HITF, (1ULL << 21)),
866 PMCMASK(RES_SUPPLIER_LOCAL, (1ULL << 22)),
885static struct pmc_masks iap_rsp_mask_haswell[] = {
886 PMCMASK(REQ_DMND_DATA_RD, (1ULL << 0)),
887 PMCMASK(REQ_DMND_RFO, (1ULL << 1)),
888 PMCMASK(REQ_DMND_IFETCH, (1ULL << 2)),
889 PMCMASK(REQ_PF_DATA_RD, (1ULL << 4)),
890 PMCMASK(REQ_PF_RFO, (1ULL << 5)),
891 PMCMASK(REQ_PF_IFETCH, (1ULL << 6)),
892 PMCMASK(REQ_OTHER, (1ULL << 15)),
893 PMCMASK(RES_ANY, (1ULL << 16)),
894 PMCMASK(RES_SUPPLIER_SUPP, (1ULL << 17)),
895 PMCMASK(RES_SUPPLIER_LLC_HITM, (1ULL << 18)),
896 PMCMASK(RES_SUPPLIER_LLC_HITE, (1ULL << 19)),
897 PMCMASK(RES_SUPPLIER_LLC_HITS, (1ULL << 20)),
898 PMCMASK(RES_SUPPLIER_LLC_HITF, (1ULL << 21)),
899 PMCMASK(RES_SUPPLIER_LOCAL, (1ULL << 22)),
900 /*
901 * For processor type 06_45H 22 is L4_HIT_LOCAL_L4
902 * and 23, 24 and 25 are also defined.
903 */
867 PMCMASK(RES_SNOOP_SNP_NONE, (1ULL << 31)),
868 PMCMASK(RES_SNOOP_SNP_NO_NEEDED,(1ULL << 32)),
869 PMCMASK(RES_SNOOP_SNP_MISS, (1ULL << 33)),
870 PMCMASK(RES_SNOOP_HIT_NO_FWD, (1ULL << 34)),
871 PMCMASK(RES_SNOOP_HIT_FWD, (1ULL << 35)),
872 PMCMASK(RES_SNOOP_HITM, (1ULL << 36)),
873 PMCMASK(RES_NON_DRAM, (1ULL << 37)),
874 NULLMASK
875};
876
904 PMCMASK(RES_SNOOP_SNP_NONE, (1ULL << 31)),
905 PMCMASK(RES_SNOOP_SNP_NO_NEEDED,(1ULL << 32)),
906 PMCMASK(RES_SNOOP_SNP_MISS, (1ULL << 33)),
907 PMCMASK(RES_SNOOP_HIT_NO_FWD, (1ULL << 34)),
908 PMCMASK(RES_SNOOP_HIT_FWD, (1ULL << 35)),
909 PMCMASK(RES_SNOOP_HITM, (1ULL << 36)),
910 PMCMASK(RES_NON_DRAM, (1ULL << 37)),
911 NULLMASK
912};
913
914static struct pmc_masks iap_rsp_mask_skylake[] = {
915 PMCMASK(REQ_DMND_DATA_RD, (1ULL << 0)),
916 PMCMASK(REQ_DMND_RFO, (1ULL << 1)),
917 PMCMASK(REQ_DMND_IFETCH, (1ULL << 2)),
918 PMCMASK(REQ_PF_DATA_RD, (1ULL << 7)),
919 PMCMASK(REQ_PF_RFO, (1ULL << 8)),
920 PMCMASK(REQ_STRM_ST, (1ULL << 11)),
921 PMCMASK(REQ_OTHER, (1ULL << 15)),
922 PMCMASK(RES_ANY, (1ULL << 16)),
923 PMCMASK(RES_SUPPLIER_SUPP, (1ULL << 17)),
924 PMCMASK(RES_SUPPLIER_LLC_HITM, (1ULL << 18)),
925 PMCMASK(RES_SUPPLIER_LLC_HITE, (1ULL << 19)),
926 PMCMASK(RES_SUPPLIER_LLC_HITS, (1ULL << 20)),
927 PMCMASK(RES_SUPPLIER_L4_HIT, (1ULL << 22)),
928 PMCMASK(RES_SUPPLIER_DRAM, (1ULL << 26)),
929 PMCMASK(RES_SUPPLIER_SPL_HIT, (1ULL << 30)),
930 PMCMASK(RES_SNOOP_SNP_NONE, (1ULL << 31)),
931 PMCMASK(RES_SNOOP_SNP_NO_NEEDED,(1ULL << 32)),
932 PMCMASK(RES_SNOOP_SNP_MISS, (1ULL << 33)),
933 PMCMASK(RES_SNOOP_HIT_NO_FWD, (1ULL << 34)),
934 PMCMASK(RES_SNOOP_HIT_FWD, (1ULL << 35)),
935 PMCMASK(RES_SNOOP_HITM, (1ULL << 36)),
936 PMCMASK(RES_NON_DRAM, (1ULL << 37)),
937 NULLMASK
938};
939
940
877static int
878iap_allocate_pmc(enum pmc_event pe, char *ctrspec,
879 struct pmc_op_pmcallocate *pmc_config)
880{
881 char *e, *p, *q;
882 uint64_t cachestate, evmask, rsp;
883 int count, n;
884

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

960 } else
961 return (-1);
962 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL ||
963 cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) {
964 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
965 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
966 } else
967 return (-1);
941static int
942iap_allocate_pmc(enum pmc_event pe, char *ctrspec,
943 struct pmc_op_pmcallocate *pmc_config)
944{
945 char *e, *p, *q;
946 uint64_t cachestate, evmask, rsp;
947 int count, n;
948

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

1024 } else
1025 return (-1);
1026 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL ||
1027 cpu_info.pm_cputype == PMC_CPU_INTEL_HASWELL_XEON) {
1028 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1029 n = pmc_parse_mask(iap_rsp_mask_haswell, p, &rsp);
1030 } else
1031 return (-1);
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
1040 } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE) {
1041 if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) {
1042 n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp);
1043 } else
1044 return (-1);
1045
968 } else
969 return (-1);
970
971 if (n < 0) /* Parsing failed. */
972 return (-1);
973 }
974
975 pmc_config->pm_md.pm_iap.pm_iap_config |= evmask;

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

2912 case PMC_CPU_INTEL_HASWELL:
2913 ev = haswell_event_table;
2914 count = PMC_EVENT_TABLE_SIZE(haswell);
2915 break;
2916 case PMC_CPU_INTEL_HASWELL_XEON:
2917 ev = haswell_xeon_event_table;
2918 count = PMC_EVENT_TABLE_SIZE(haswell_xeon);
2919 break;
1046 } else
1047 return (-1);
1048
1049 if (n < 0) /* Parsing failed. */
1050 return (-1);
1051 }
1052
1053 pmc_config->pm_md.pm_iap.pm_iap_config |= evmask;

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

2990 case PMC_CPU_INTEL_HASWELL:
2991 ev = haswell_event_table;
2992 count = PMC_EVENT_TABLE_SIZE(haswell);
2993 break;
2994 case PMC_CPU_INTEL_HASWELL_XEON:
2995 ev = haswell_xeon_event_table;
2996 count = PMC_EVENT_TABLE_SIZE(haswell_xeon);
2997 break;
2998 case PMC_CPU_INTEL_BROADWELL:
2999 ev = broadwell_event_table;
3000 count = PMC_EVENT_TABLE_SIZE(broadwell);
3001 break;
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;
2920 case PMC_CPU_INTEL_IVYBRIDGE:
2921 ev = ivybridge_event_table;
2922 count = PMC_EVENT_TABLE_SIZE(ivybridge);
2923 break;
2924 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
2925 ev = ivybridge_xeon_event_table;
2926 count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
2927 break;

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

2957 case PMC_CPU_INTEL_COREI7:
2958 ev = corei7uc_event_table;
2959 count = PMC_EVENT_TABLE_SIZE(corei7uc);
2960 break;
2961 case PMC_CPU_INTEL_HASWELL:
2962 ev = haswelluc_event_table;
2963 count = PMC_EVENT_TABLE_SIZE(haswelluc);
2964 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;

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

3047 case PMC_CPU_INTEL_COREI7:
3048 ev = corei7uc_event_table;
3049 count = PMC_EVENT_TABLE_SIZE(corei7uc);
3050 break;
3051 case PMC_CPU_INTEL_HASWELL:
3052 ev = haswelluc_event_table;
3053 count = PMC_EVENT_TABLE_SIZE(haswelluc);
3054 break;
3055 case PMC_CPU_INTEL_BROADWELL:
3056 ev = broadwelluc_event_table;
3057 count = PMC_EVENT_TABLE_SIZE(broadwelluc);
3058 break;
2965 case PMC_CPU_INTEL_SANDYBRIDGE:
2966 ev = sandybridgeuc_event_table;
2967 count = PMC_EVENT_TABLE_SIZE(sandybridgeuc);
2968 break;
2969 case PMC_CPU_INTEL_WESTMERE:
2970 ev = westmereuc_event_table;
2971 count = PMC_EVENT_TABLE_SIZE(westmereuc);
2972 break;

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

3276 case PMC_CPU_INTEL_HASWELL:
3277 pmc_class_table[n++] = &ucf_class_table_descr;
3278 pmc_class_table[n++] = &haswelluc_class_table_descr;
3279 PMC_MDEP_INIT_INTEL_V2(haswell);
3280 break;
3281 case PMC_CPU_INTEL_HASWELL_XEON:
3282 PMC_MDEP_INIT_INTEL_V2(haswell_xeon);
3283 break;
3059 case PMC_CPU_INTEL_SANDYBRIDGE:
3060 ev = sandybridgeuc_event_table;
3061 count = PMC_EVENT_TABLE_SIZE(sandybridgeuc);
3062 break;
3063 case PMC_CPU_INTEL_WESTMERE:
3064 ev = westmereuc_event_table;
3065 count = PMC_EVENT_TABLE_SIZE(westmereuc);
3066 break;

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

3370 case PMC_CPU_INTEL_HASWELL:
3371 pmc_class_table[n++] = &ucf_class_table_descr;
3372 pmc_class_table[n++] = &haswelluc_class_table_descr;
3373 PMC_MDEP_INIT_INTEL_V2(haswell);
3374 break;
3375 case PMC_CPU_INTEL_HASWELL_XEON:
3376 PMC_MDEP_INIT_INTEL_V2(haswell_xeon);
3377 break;
3378 case PMC_CPU_INTEL_BROADWELL:
3379 pmc_class_table[n++] = &ucf_class_table_descr;
3380 pmc_class_table[n++] = &broadwelluc_class_table_descr;
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;
3284 case PMC_CPU_INTEL_IVYBRIDGE:
3285 PMC_MDEP_INIT_INTEL_V2(ivybridge);
3286 break;
3287 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3288 PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon);
3289 break;
3290 case PMC_CPU_INTEL_SANDYBRIDGE:
3291 pmc_class_table[n++] = &ucf_class_table_descr;

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

3475 case PMC_CPU_INTEL_HASWELL:
3476 ev = haswell_event_table;
3477 evfence = haswell_event_table + PMC_EVENT_TABLE_SIZE(haswell);
3478 break;
3479 case PMC_CPU_INTEL_HASWELL_XEON:
3480 ev = haswell_xeon_event_table;
3481 evfence = haswell_xeon_event_table + PMC_EVENT_TABLE_SIZE(haswell_xeon);
3482 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;

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

3580 case PMC_CPU_INTEL_HASWELL:
3581 ev = haswell_event_table;
3582 evfence = haswell_event_table + PMC_EVENT_TABLE_SIZE(haswell);
3583 break;
3584 case PMC_CPU_INTEL_HASWELL_XEON:
3585 ev = haswell_xeon_event_table;
3586 evfence = haswell_xeon_event_table + PMC_EVENT_TABLE_SIZE(haswell_xeon);
3587 break;
3483
3588 case PMC_CPU_INTEL_BROADWELL:
3589 ev = broadwell_event_table;
3590 evfence = broadwell_event_table + PMC_EVENT_TABLE_SIZE(broadwell);
3591 break;
3592 case PMC_CPU_INTEL_BROADWELL_XEON:
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 + PMC_EVENT_TABLE_SIZE(skylake);
3599 break;
3484 case PMC_CPU_INTEL_IVYBRIDGE:
3485 ev = ivybridge_event_table;
3486 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge);
3487 break;
3488 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3489 ev = ivybridge_xeon_event_table;
3490 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3491 break;

--- 312 unchanged lines hidden ---
3600 case PMC_CPU_INTEL_IVYBRIDGE:
3601 ev = ivybridge_event_table;
3602 evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge);
3603 break;
3604 case PMC_CPU_INTEL_IVYBRIDGE_XEON:
3605 ev = ivybridge_xeon_event_table;
3606 evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon);
3607 break;

--- 312 unchanged lines hidden ---