diff --git a/Makefile.inc1 b/Makefile.inc1 index 970ba0248c0c..827838a0fa8d 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2031,7 +2031,7 @@ _libmagic=lib/libmagic .endif .if ${MACHINE_CPUARCH} == "amd64" -_jevents=lib/libpmcstat/pmu-events +_jevents=lib/libpmc/pmu-events .endif # kernel-toolchain skips _cleanobj, so handle cleaning up previous diff --git a/lib/libpmc/Makefile b/lib/libpmc/Makefile index 30510f6144b0..6eb2ad6863d2 100644 --- a/lib/libpmc/Makefile +++ b/lib/libpmc/Makefile @@ -3,9 +3,31 @@ PACKAGE=lib${LIB} LIB= pmc -SRCS= libpmc.c pmclog.c +SRCS= libpmc.c pmclog.c libpmc_pmu_util.c INCS= pmc.h pmclog.h +CFLAGS+= -I${.CURDIR} + +.if ${MACHINE_CPUARCH} == "amd64" + +.if ${MACHINE_CPUARCH} == "aarch64" +EVENT_ARCH="arm64" +.elif ${MACHINE_CPUARCH} == "amd64" +EVENT_ARCH="x86" +.elif ${MACHINE_CPUARCH} == "powerpc" +EVENT_ARCH="powerpc" +.endif + +JEVENTS= ${BTOOLSPATH:U.}/pmu-events/jevents +# This file is built in a subdirectory so never try to rebuild +# it here due to missing meta file. +${JEVENTS}: .NOMETA + +libpmc_events.c: ${JEVENTS} + ${JEVENTS} ${EVENT_ARCH} ${.CURDIR}/pmu-events/arch libpmc_events.c +SRCS+= libpmc_events.c +.endif + MAN= pmc.3 MAN+= pmc_allocate.3 MAN+= pmc_attach.3 diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c index 8b25768d33d1..05fd84bc0b90 100644 --- a/lib/libpmc/libpmc.c +++ b/lib/libpmc/libpmc.c @@ -2781,8 +2781,27 @@ pmc_allocate(const char *ctrspec, enum pmc_mode mode, if (mode != PMC_MODE_SS && mode != PMC_MODE_TS && mode != PMC_MODE_SC && mode != PMC_MODE_TC) { - errno = EINVAL; - goto out; + return (EINVAL); + } + bzero(&pmc_config, sizeof(pmc_config)); + pmc_config.pm_cpu = cpu; + pmc_config.pm_mode = mode; + pmc_config.pm_flags = flags; + if (PMC_IS_SAMPLING_MODE(mode)) + pmc_config.pm_caps |= PMC_CAP_INTERRUPT; + /* + * Can we pull this straight from the pmu table? + */ + r = spec_copy = strdup(ctrspec); + ctrname = strsep(&r, ","); + if (pmc_pmu_pmcallocate(ctrname, &pmc_config) == 0) { + if (PMC_CALL(PMCALLOCATE, &pmc_config) < 0) + return (errno); + *pmcid = pmc_config.pm_pmcid; + return (0); + } else { + free(spec_copy); + spec_copy = NULL; } /* replace an event alias with the canonical event specifier */ @@ -2833,15 +2852,8 @@ pmc_allocate(const char *ctrspec, enum pmc_mode mode, goto out; } - bzero(&pmc_config, sizeof(pmc_config)); pmc_config.pm_ev = ev->pm_ev_code; pmc_config.pm_class = pcd->pm_evc_class; - pmc_config.pm_cpu = cpu; - pmc_config.pm_mode = mode; - pmc_config.pm_flags = flags; - - if (PMC_IS_SAMPLING_MODE(mode)) - pmc_config.pm_caps |= PMC_CAP_INTERRUPT; if (pcd->pm_evc_allocate_pmc(ev->pm_ev_code, r, &pmc_config) < 0) { errno = EINVAL; diff --git a/lib/libpmc/libpmc_pmu_util.c b/lib/libpmc/libpmc_pmu_util.c new file mode 100644 index 000000000000..c2ac3b9e931a --- /dev/null +++ b/lib/libpmc/libpmc_pmu_util.c @@ -0,0 +1,333 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2018, Matthew Macy + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "pmu-events/pmu-events.h" + +#if defined(__amd64__) +struct pmu_alias { + const char *pa_alias; + const char *pa_name; +}; +static struct pmu_alias pmu_alias_table[] = { + { "UNHALTED_CORE_CYCLES", "CPU_CLK_UNHALTED.THREAD_P_ANY"}, + { "UNHALTED-CORE-CYCLES", "CPU_CLK_UNHALTED.THREAD_P_ANY"}, + { "LLC_MISSES", "LONGEST_LAT_CACHE.MISS"}, + { "LLC-MISSES", "LONGEST_LAT_CACHE.MISS"}, + { "LLC_REFERENCE", "LONGEST_LAT_CACHE.REFERENCE"}, + { "LLC-REFERENCE", "LONGEST_LAT_CACHE.REFERENCE"}, + { "LLC_MISS_RHITM", "mem_load_l3_miss_retired.remote_hitm"}, + { "LLC-MISS-RHITM", "mem_load_l3_miss_retired.remote_hitm"}, + { "RESOURCE_STALL", "RESOURCE_STALLS.ANY"}, + { "RESOURCE_STALLS_ANY", "RESOURCE_STALLS.ANY"}, + { "BRANCH_INSTRUCTION_RETIRED", "BR_INST_RETIRED.ALL_BRANCHES"}, + { "BRANCH-INSTRUCTION-RETIRED", "BR_INST_RETIRED.ALL_BRANCHES"}, + { "BRANCH_MISSES_RETIRED", "BR_MISP_RETIRED.ALL_BRANCHES"}, + { "BRANCH-MISSES-RETIRED", "BR_MISP_RETIRED.ALL_BRANCHES"}, + { NULL, NULL }, +}; + +static const char * +pmu_alias_get(const char *name) +{ + struct pmu_alias *pa; + + for (pa = pmu_alias_table; pa->pa_alias != NULL; pa++) + if (strcasecmp(name, pa->pa_alias) == 0) + return (pa->pa_name); + return (name); +} + +struct pmu_event_desc { + uint64_t ped_period; + uint64_t ped_offcore_rsp; + uint32_t ped_event; + uint32_t ped_frontend; + uint32_t ped_ldlat; + uint32_t ped_config1; + uint8_t ped_umask; + uint8_t ped_cmask; + uint8_t ped_any; + uint8_t ped_inv; + uint8_t ped_edge; + uint8_t ped_fc_mask; + uint8_t ped_ch_mask; +}; + +static const struct pmu_events_map * +pmu_events_map_get(void) +{ + size_t s; + char buf[64]; + const struct pmu_events_map *pme; + + if (sysctlbyname("kern.hwpmc.cpuid", (void *)NULL, &s, + (void *)NULL, 0) == -1) + return (NULL); + if (sysctlbyname("kern.hwpmc.cpuid", buf, &s, + (void *)NULL, 0) == -1) + return (NULL); + for (pme = pmu_events_map; pme->cpuid != NULL; pme++) + if (strcmp(buf, pme->cpuid) == 0) + return (pme); + return (NULL); +} + +static const struct pmu_event * +pmu_event_get(const char *event_name, int *idx) +{ + const struct pmu_events_map *pme; + const struct pmu_event *pe; + int i; + + if ((pme = pmu_events_map_get()) == NULL) + return (NULL); + for (i = 0, pe = pme->table; pe->name || pe->desc || pe->event; pe++, i++) { + if (pe->name == NULL) + continue; + if (strcasecmp(pe->name, event_name) == 0) { + if (idx) + *idx = i; + return (pe); + } + } + return (NULL); +} + +const char * +pmu_event_get_by_idx(int idx) +{ + const struct pmu_events_map *pme; + const struct pmu_event *pe; + int i; + + if ((pme = pmu_events_map_get()) == NULL) + return (NULL); + for (i = 0, pe = pme->table; (pe->name || pe->desc || pe->event) && i < idx; pe++, i++) + ; + return (pe->name); +} + +static int +pmu_parse_event(struct pmu_event_desc *ped, const char *eventin) +{ + char *event; + char *kvp, *key, *value; + char *debug; + + if ((event = strdup(eventin)) == NULL) + return (ENOMEM); + bzero(ped, sizeof(*ped)); + while ((kvp = strsep(&event, ",")) != NULL) { + key = strsep(&kvp, "="); + if (key == NULL) + abort(); + value = kvp; + if (strcmp(key, "umask") == 0) + ped->ped_umask = strtol(value, NULL, 16); + else if (strcmp(key, "event") == 0) + ped->ped_event = strtol(value, NULL, 16); + else if (strcmp(key, "period") == 0) + ped->ped_period = strtol(value, NULL, 10); + else if (strcmp(key, "offcore_rsp") == 0) + ped->ped_offcore_rsp = strtol(value, NULL, 16); + else if (strcmp(key, "any") == 0) + ped->ped_any = strtol(value, NULL, 10); + else if (strcmp(key, "cmask") == 0) + ped->ped_cmask = strtol(value, NULL, 10); + else if (strcmp(key, "inv") == 0) + ped->ped_inv = strtol(value, NULL, 10); + else if (strcmp(key, "edge") == 0) + ped->ped_edge = strtol(value, NULL, 10); + else if (strcmp(key, "frontend") == 0) + ped->ped_frontend = strtol(value, NULL, 16); + else if (strcmp(key, "ldlat") == 0) + ped->ped_ldlat = strtol(value, NULL, 16); + else if (strcmp(key, "fc_mask") == 0) + ped->ped_fc_mask = strtol(value, NULL, 16); + else if (strcmp(key, "ch_mask") == 0) + ped->ped_ch_mask = strtol(value, NULL, 16); + else if (strcmp(key, "config1") == 0) + ped->ped_config1 = strtol(value, NULL, 16); + else { + debug = getenv("PMUDEBUG"); + if (debug != NULL && strcmp(debug, "true") == 0 && value != NULL) + printf("unrecognized kvpair: %s:%s\n", key, value); + } + } + free(event); + return (0); +} + +uint64_t +pmc_pmu_sample_rate_get(const char *event_name) +{ + const struct pmu_event *pe; + struct pmu_event_desc ped; + + event_name = pmu_alias_get(event_name); + if ((pe = pmu_event_get(event_name, NULL)) == NULL) + return (DEFAULT_SAMPLE_COUNT); + if (pe->alias && (pe = pmu_event_get(pe->alias, NULL)) == NULL) + return (DEFAULT_SAMPLE_COUNT); + if (pe->event == NULL) + return (DEFAULT_SAMPLE_COUNT); + if (pmu_parse_event(&ped, pe->event)) + return (DEFAULT_SAMPLE_COUNT); + return (ped.ped_period); +} + +int +pmc_pmu_enabled(void) +{ + + return (pmu_events_map_get() != NULL); +} + +void +pmc_pmu_print_counters(void) +{ + const struct pmu_events_map *pme; + const struct pmu_event *pe; + struct pmu_event_desc ped; + char *debug; + int do_debug; + + debug = getenv("PMUDEBUG"); + do_debug = 0; + + if (debug != NULL && strcmp(debug, "true") == 0) + do_debug = 1; + if ((pme = pmu_events_map_get()) == NULL) + return; + for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { + if (pe->name == NULL) + continue; + printf("\t%s\n", pe->name); + if (do_debug) + pmu_parse_event(&ped, pe->event); + } +} + +void +pmc_pmu_print_counter_desc(const char *ev) +{ + const struct pmu_events_map *pme; + const struct pmu_event *pe; + + if ((pme = pmu_events_map_get()) == NULL) + return; + for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { + if (pe->name == NULL) + continue; + if (strcasestr(pe->name, ev) != NULL && + pe->desc != NULL) + printf("%s:\t%s\n", pe->name, pe->desc); + } +} + +void +pmc_pmu_print_counter_desc_long(const char *ev) +{ + const struct pmu_events_map *pme; + const struct pmu_event *pe; + + if ((pme = pmu_events_map_get()) == NULL) + return; + for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { + if (pe->name == NULL) + continue; + if (strcasestr(pe->name, ev) != NULL) { + if (pe->long_desc != NULL) + printf("%s:\n%s\n", pe->name, pe->long_desc); + else if (pe->desc != NULL) + printf("%s:\t%s\n", pe->name, pe->desc); + } + } +} + +int +pmc_pmu_pmcallocate(const char *event_name, struct pmc_op_pmcallocate *pm) +{ + const struct pmu_event *pe; + struct pmu_event_desc ped; + struct pmc_md_iap_op_pmcallocate *iap; + int idx; + + iap = &pm->pm_md.pm_iap; + bzero(iap, sizeof(*iap)); + event_name = pmu_alias_get(event_name); + if ((pe = pmu_event_get(event_name, &idx)) == NULL) + return (ENOENT); + if (pe->alias && (pe = pmu_event_get(pe->alias, &idx)) == NULL) + return (ENOENT); + if (pe->event == NULL) + return (ENOENT); + if (pmu_parse_event(&ped, pe->event)) + return (ENOENT); + + pm->pm_class = PMC_CLASS_IAP; + pm->pm_ev = idx; + iap->pm_iap_config |= IAP_EVSEL(ped.ped_event); + iap->pm_iap_config |= IAP_UMASK(ped.ped_umask); + iap->pm_iap_config |= IAP_CMASK(ped.ped_cmask); + iap->pm_iap_rsp = ped.ped_offcore_rsp; + + iap->pm_iap_config |= (IAP_USR | IAP_OS); + if (ped.ped_edge) + iap->pm_iap_config |= IAP_EDGE; + if (ped.ped_any) + iap->pm_iap_config |= IAP_ANY; + if (ped.ped_inv) + iap->pm_iap_config |= IAP_EDGE; + if (pm->pm_caps & PMC_CAP_INTERRUPT) + iap->pm_iap_config |= IAP_INT; + return (0); +} + +#else +uint64_t pmc_pmu_sample_rate_get(const char *event_name __unused) { return (DEFAULT_SAMPLE_COUNT); } +void pmc_pmu_print_counters(void) {} +void pmc_pmu_print_counter_desc(const char *e __unused) {} +void pmc_pmu_print_counter_desc_long(const char *e __unused) {} +int pmc_pmu_enabled(void) { return (0); } +int pmc_pmu_pmcallocate(const char *e __unused, struct pmc_op_pmcallocate *p __unused) { return (EOPNOTSUPP); } +const char *pmu_event_get_by_idx(int idx __unused) { return (NULL); } + +#endif diff --git a/lib/libpmc/pmc.h b/lib/libpmc/pmc.h index 5e4b89e4ea05..3a72930b9e1d 100644 --- a/lib/libpmc/pmc.h +++ b/lib/libpmc/pmc.h @@ -112,6 +112,14 @@ const char *pmc_name_of_state(enum pmc_state _ps); int pmc_event_names_of_class(enum pmc_class _cl, const char ***_eventnames, int *_nevents); + +int pmc_pmu_enabled(void); +void pmc_pmu_print_counters(void); +void pmc_pmu_print_counter_desc(const char *); +void pmc_pmu_print_counter_desc_long(const char *); +uint64_t pmc_pmu_sample_rate_get(const char *); +int pmc_pmu_pmcallocate(const char *, struct pmc_op_pmcallocate *); +const char *pmu_event_get_by_idx(int idx); __END_DECLS #endif diff --git a/lib/libpmc/pmclog.3 b/lib/libpmc/pmclog.3 index 91c7222da7f2..d60e97085831 100644 --- a/lib/libpmc/pmclog.3 +++ b/lib/libpmc/pmclog.3 @@ -82,13 +82,14 @@ struct pmclog_ev { struct timespec pl_ts; /* log entry timestamp */ enum pmclog_type pl_type; /* log entry kind */ union { /* log entry data */ + struct pmclog_ev_callchain pl_cc; struct pmclog_ev_closelog pl_cl; struct pmclog_ev_dropnotify pl_d; struct pmclog_ev_initialize pl_i; struct pmclog_ev_map_in pl_mi; struct pmclog_ev_map_out pl_mo; - struct pmclog_ev_pcsample pl_s; struct pmclog_ev_pmcallocate pl_a; + struct pmclog_ev_pmcallocatedyn pl_ad; struct pmclog_ev_pmcattach pl_t; struct pmclog_ev_pmcdetach pl_d; struct pmclog_ev_proccsw pl_c; @@ -270,8 +271,8 @@ while (pmclog_read(parser, &ev) == 0) { case PMCLOG_TYPE_PROCCSW: --process a thread context switch record-- break; - case PMCLOG_TYPE_PCSAMPLE: - --process a PC sample-- + case PMCLOG_TYPE_CALLCHAIN: + --process a callchain sample-- break; --and so on-- } diff --git a/lib/libpmc/pmclog.c b/lib/libpmc/pmclog.c index dd91a68d864f..8e0504b290f2 100644 --- a/lib/libpmc/pmclog.c +++ b/lib/libpmc/pmclog.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -278,7 +279,7 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, struct pmclog_ev *ev) { int evlen, pathlen; - uint32_t h, *le, npc; + uint32_t h, *le, npc, noop; enum pmclog_parser_state e; struct pmclog_parse_state *ps; @@ -288,6 +289,7 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, if ((e = pmclog_get_record(ps,data,len)) == PL_STATE_ERROR) { ev->pl_state = PMCLOG_ERROR; + printf("state error\n"); return -1; } @@ -301,6 +303,7 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, PMCLOG_READ32(le,h); if (!PMCLOG_HEADER_CHECK_MAGIC(h)) { + printf("bad magic\n"); ps->ps_state = PL_STATE_ERROR; ev->pl_state = PMCLOG_ERROR; return -1; @@ -360,21 +363,20 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, PMCLOG_READADDR(le,ev->pl_u.pl_mo.pl_start); PMCLOG_READADDR(le,ev->pl_u.pl_mo.pl_end); break; - case PMCLOG_TYPE_PCSAMPLE: - PMCLOG_READ32(le,ev->pl_u.pl_s.pl_pid); - PMCLOG_READADDR(le,ev->pl_u.pl_s.pl_pc); - PMCLOG_READ32(le,ev->pl_u.pl_s.pl_pmcid); - PMCLOG_READ32(le,ev->pl_u.pl_s.pl_usermode); - PMCLOG_READ32(le,ev->pl_u.pl_s.pl_tid); - break; case PMCLOG_TYPE_PMCALLOCATE: PMCLOG_READ32(le,ev->pl_u.pl_a.pl_pmcid); PMCLOG_READ32(le,ev->pl_u.pl_a.pl_event); PMCLOG_READ32(le,ev->pl_u.pl_a.pl_flags); - if ((ev->pl_u.pl_a.pl_evname = + PMCLOG_READ32(le,noop); + ev->pl_u.pl_a.pl_evname = pmu_event_get_by_idx(ev->pl_u.pl_a.pl_event); + if (ev->pl_u.pl_a.pl_evname != NULL) + break; + else if ((ev->pl_u.pl_a.pl_evname = _pmc_name_of_event(ev->pl_u.pl_a.pl_event, ps->ps_arch)) - == NULL) + == NULL) { + printf("unknown event\n"); goto error; + } break; case PMCLOG_TYPE_PMCALLOCATEDYN: PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_pmcid); @@ -401,14 +403,16 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, case PMCLOG_TYPE_PROCEXEC: PMCLOG_GET_PATHLEN(pathlen,evlen,pmclog_procexec); PMCLOG_READ32(le,ev->pl_u.pl_x.pl_pid); - PMCLOG_READADDR(le,ev->pl_u.pl_x.pl_entryaddr); PMCLOG_READ32(le,ev->pl_u.pl_x.pl_pmcid); + PMCLOG_READ32(le,noop); + PMCLOG_READADDR(le,ev->pl_u.pl_x.pl_entryaddr); PMCLOG_READSTRING(le,ev->pl_u.pl_x.pl_pathname,pathlen); break; case PMCLOG_TYPE_PROCEXIT: PMCLOG_READ32(le,ev->pl_u.pl_e.pl_pmcid); - PMCLOG_READ64(le,ev->pl_u.pl_e.pl_value); PMCLOG_READ32(le,ev->pl_u.pl_e.pl_pid); + PMCLOG_READ32(le,noop); + PMCLOG_READ64(le,ev->pl_u.pl_e.pl_value); break; case PMCLOG_TYPE_PROCFORK: PMCLOG_READ32(le,ev->pl_u.pl_f.pl_oldpid); @@ -489,8 +493,9 @@ pmclog_read(void *cookie, struct pmclog_ev *ev) ps->ps_len = nread; ps->ps_data = ps->ps_buffer; - } else + } else { return -1; + } } assert(ps->ps_len > 0); @@ -498,7 +503,6 @@ pmclog_read(void *cookie, struct pmclog_ev *ev) /* Retrieve one event from the byte stream. */ retval = pmclog_get_event(ps, &ps->ps_data, &ps->ps_len, ev); - /* * If we need more data and we have a configured fd, try read * from it. diff --git a/lib/libpmc/pmclog.h b/lib/libpmc/pmclog.h index 9f748b77d69a..a6b4d84a1104 100644 --- a/lib/libpmc/pmclog.h +++ b/lib/libpmc/pmclog.h @@ -158,7 +158,6 @@ struct pmclog_ev { struct pmclog_ev_initialize pl_i; struct pmclog_ev_map_in pl_mi; struct pmclog_ev_map_out pl_mo; - struct pmclog_ev_pcsample pl_s; struct pmclog_ev_pmcallocate pl_a; struct pmclog_ev_pmcallocatedyn pl_ad; struct pmclog_ev_pmcattach pl_t; diff --git a/lib/libpmcstat/pmu-events/Makefile b/lib/libpmc/pmu-events/Makefile similarity index 100% rename from lib/libpmcstat/pmu-events/Makefile rename to lib/libpmc/pmu-events/Makefile diff --git a/lib/libpmcstat/pmu-events/README b/lib/libpmc/pmu-events/README similarity index 100% rename from lib/libpmcstat/pmu-events/README rename to lib/libpmc/pmu-events/README diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/branch.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/branch.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/branch.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/branch.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/bus.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/bus.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/bus.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/bus.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/cache.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/cache.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/memory.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/memory.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/other.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/other.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/other.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json b/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json rename to lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/armv8-recommended.json b/lib/libpmc/pmu-events/arch/arm64/armv8-recommended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/armv8-recommended.json rename to lib/libpmc/pmu-events/arch/arm64/armv8-recommended.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json b/lib/libpmc/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json rename to lib/libpmc/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json b/lib/libpmc/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json rename to lib/libpmc/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json diff --git a/lib/libpmcstat/pmu-events/arch/arm64/mapfile.csv b/lib/libpmc/pmu-events/arch/arm64/mapfile.csv similarity index 100% rename from lib/libpmcstat/pmu-events/arch/arm64/mapfile.csv rename to lib/libpmc/pmu-events/arch/arm64/mapfile.csv diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/mapfile.csv b/lib/libpmc/pmu-events/arch/powerpc/mapfile.csv similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/mapfile.csv rename to lib/libpmc/pmu-events/arch/powerpc/mapfile.csv diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/cache.json b/lib/libpmc/pmu-events/arch/powerpc/power8/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/cache.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/floating-point.json b/lib/libpmc/pmu-events/arch/powerpc/power8/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/floating-point.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/frontend.json b/lib/libpmc/pmu-events/arch/powerpc/power8/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/frontend.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/marked.json b/lib/libpmc/pmu-events/arch/powerpc/power8/marked.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/marked.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/marked.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/memory.json b/lib/libpmc/pmu-events/arch/powerpc/power8/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/memory.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/other.json b/lib/libpmc/pmu-events/arch/powerpc/power8/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/other.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/other.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/pipeline.json b/lib/libpmc/pmu-events/arch/powerpc/power8/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/pipeline.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/pmc.json b/lib/libpmc/pmu-events/arch/powerpc/power8/pmc.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/pmc.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/pmc.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power8/translation.json b/lib/libpmc/pmu-events/arch/powerpc/power8/translation.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power8/translation.json rename to lib/libpmc/pmu-events/arch/powerpc/power8/translation.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/cache.json b/lib/libpmc/pmu-events/arch/powerpc/power9/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/cache.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/floating-point.json b/lib/libpmc/pmu-events/arch/powerpc/power9/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/floating-point.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/frontend.json b/lib/libpmc/pmu-events/arch/powerpc/power9/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/frontend.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/marked.json b/lib/libpmc/pmu-events/arch/powerpc/power9/marked.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/marked.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/marked.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/memory.json b/lib/libpmc/pmu-events/arch/powerpc/power9/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/memory.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/other.json b/lib/libpmc/pmu-events/arch/powerpc/power9/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/other.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/other.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/pipeline.json b/lib/libpmc/pmu-events/arch/powerpc/power9/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/pipeline.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/pmc.json b/lib/libpmc/pmu-events/arch/powerpc/power9/pmc.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/pmc.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/pmc.json diff --git a/lib/libpmcstat/pmu-events/arch/powerpc/power9/translation.json b/lib/libpmc/pmu-events/arch/powerpc/power9/translation.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/powerpc/power9/translation.json rename to lib/libpmc/pmu-events/arch/powerpc/power9/translation.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z10/basic.json b/lib/libpmc/pmu-events/arch/s390/cf_z10/basic.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z10/basic.json rename to lib/libpmc/pmu-events/arch/s390/cf_z10/basic.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z10/crypto.json b/lib/libpmc/pmu-events/arch/s390/cf_z10/crypto.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z10/crypto.json rename to lib/libpmc/pmu-events/arch/s390/cf_z10/crypto.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z10/extended.json b/lib/libpmc/pmu-events/arch/s390/cf_z10/extended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z10/extended.json rename to lib/libpmc/pmu-events/arch/s390/cf_z10/extended.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z13/basic.json b/lib/libpmc/pmu-events/arch/s390/cf_z13/basic.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z13/basic.json rename to lib/libpmc/pmu-events/arch/s390/cf_z13/basic.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z13/crypto.json b/lib/libpmc/pmu-events/arch/s390/cf_z13/crypto.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z13/crypto.json rename to lib/libpmc/pmu-events/arch/s390/cf_z13/crypto.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z13/extended.json b/lib/libpmc/pmu-events/arch/s390/cf_z13/extended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z13/extended.json rename to lib/libpmc/pmu-events/arch/s390/cf_z13/extended.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z14/basic.json b/lib/libpmc/pmu-events/arch/s390/cf_z14/basic.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z14/basic.json rename to lib/libpmc/pmu-events/arch/s390/cf_z14/basic.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z14/crypto.json b/lib/libpmc/pmu-events/arch/s390/cf_z14/crypto.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z14/crypto.json rename to lib/libpmc/pmu-events/arch/s390/cf_z14/crypto.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z14/extended.json b/lib/libpmc/pmu-events/arch/s390/cf_z14/extended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z14/extended.json rename to lib/libpmc/pmu-events/arch/s390/cf_z14/extended.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z196/basic.json b/lib/libpmc/pmu-events/arch/s390/cf_z196/basic.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z196/basic.json rename to lib/libpmc/pmu-events/arch/s390/cf_z196/basic.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z196/crypto.json b/lib/libpmc/pmu-events/arch/s390/cf_z196/crypto.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z196/crypto.json rename to lib/libpmc/pmu-events/arch/s390/cf_z196/crypto.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_z196/extended.json b/lib/libpmc/pmu-events/arch/s390/cf_z196/extended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_z196/extended.json rename to lib/libpmc/pmu-events/arch/s390/cf_z196/extended.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/basic.json b/lib/libpmc/pmu-events/arch/s390/cf_zec12/basic.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_zec12/basic.json rename to lib/libpmc/pmu-events/arch/s390/cf_zec12/basic.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/crypto.json b/lib/libpmc/pmu-events/arch/s390/cf_zec12/crypto.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_zec12/crypto.json rename to lib/libpmc/pmu-events/arch/s390/cf_zec12/crypto.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/extended.json b/lib/libpmc/pmu-events/arch/s390/cf_zec12/extended.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/cf_zec12/extended.json rename to lib/libpmc/pmu-events/arch/s390/cf_zec12/extended.json diff --git a/lib/libpmcstat/pmu-events/arch/s390/mapfile.csv b/lib/libpmc/pmu-events/arch/s390/mapfile.csv similarity index 100% rename from lib/libpmcstat/pmu-events/arch/s390/mapfile.csv rename to lib/libpmc/pmu-events/arch/s390/mapfile.csv diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/cache.json b/lib/libpmc/pmu-events/arch/x86/bonnell/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/cache.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/floating-point.json b/lib/libpmc/pmu-events/arch/x86/bonnell/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/frontend.json b/lib/libpmc/pmu-events/arch/x86/bonnell/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/frontend.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/memory.json b/lib/libpmc/pmu-events/arch/x86/bonnell/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/memory.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/other.json b/lib/libpmc/pmu-events/arch/x86/bonnell/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/other.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/pipeline.json b/lib/libpmc/pmu-events/arch/x86/bonnell/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/bonnell/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/bonnell/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/bonnell/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/bonnell/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/bdw-metrics.json b/lib/libpmc/pmu-events/arch/x86/broadwell/bdw-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/bdw-metrics.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/bdw-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/cache.json b/lib/libpmc/pmu-events/arch/x86/broadwell/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/cache.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/floating-point.json b/lib/libpmc/pmu-events/arch/x86/broadwell/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/frontend.json b/lib/libpmc/pmu-events/arch/x86/broadwell/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/frontend.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/memory.json b/lib/libpmc/pmu-events/arch/x86/broadwell/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/other.json b/lib/libpmc/pmu-events/arch/x86/broadwell/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/other.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/pipeline.json b/lib/libpmc/pmu-events/arch/x86/broadwell/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/uncore.json b/lib/libpmc/pmu-events/arch/x86/broadwell/uncore.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/uncore.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/uncore.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwell/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/broadwell/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwell/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwell/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/bdwde-metrics.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/bdwde-metrics.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/cache.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/cache.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/floating-point.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/frontend.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/frontend.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/other.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/other.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/pipeline.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-cache.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-cache.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-power.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-power.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-power.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-power.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellde/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellde/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellde/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellde/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/bdx-metrics.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/bdx-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/bdx-metrics.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/bdx-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/cache.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/cache.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/floating-point.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/frontend.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/frontend.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/other.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/other.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/pipeline.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-cache.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-cache.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-interconnect.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-interconnect.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-interconnect.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-interconnect.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-power.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-power.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-power.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-power.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/broadwellx/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/broadwellx/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/broadwellx/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/broadwellx/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/cache.json b/lib/libpmc/pmu-events/arch/x86/goldmont/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/cache.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/frontend.json b/lib/libpmc/pmu-events/arch/x86/goldmont/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/frontend.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/memory.json b/lib/libpmc/pmu-events/arch/x86/goldmont/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/memory.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/other.json b/lib/libpmc/pmu-events/arch/x86/goldmont/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/other.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/pipeline.json b/lib/libpmc/pmu-events/arch/x86/goldmont/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmont/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/goldmont/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmont/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/goldmont/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/cache.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/cache.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/frontend.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/frontend.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/memory.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/memory.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/other.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/other.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/pipeline.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/goldmontplus/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/goldmontplus/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/goldmontplus/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/cache.json b/lib/libpmc/pmu-events/arch/x86/haswell/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/cache.json rename to lib/libpmc/pmu-events/arch/x86/haswell/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/floating-point.json b/lib/libpmc/pmu-events/arch/x86/haswell/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/haswell/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/frontend.json b/lib/libpmc/pmu-events/arch/x86/haswell/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/frontend.json rename to lib/libpmc/pmu-events/arch/x86/haswell/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/hsw-metrics.json b/lib/libpmc/pmu-events/arch/x86/haswell/hsw-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/hsw-metrics.json rename to lib/libpmc/pmu-events/arch/x86/haswell/hsw-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/memory.json b/lib/libpmc/pmu-events/arch/x86/haswell/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/memory.json rename to lib/libpmc/pmu-events/arch/x86/haswell/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/other.json b/lib/libpmc/pmu-events/arch/x86/haswell/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/other.json rename to lib/libpmc/pmu-events/arch/x86/haswell/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/pipeline.json b/lib/libpmc/pmu-events/arch/x86/haswell/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/haswell/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/uncore.json b/lib/libpmc/pmu-events/arch/x86/haswell/uncore.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/uncore.json rename to lib/libpmc/pmu-events/arch/x86/haswell/uncore.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswell/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/haswell/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswell/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/haswell/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/cache.json b/lib/libpmc/pmu-events/arch/x86/haswellx/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/cache.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/floating-point.json b/lib/libpmc/pmu-events/arch/x86/haswellx/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/frontend.json b/lib/libpmc/pmu-events/arch/x86/haswellx/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/frontend.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/hsx-metrics.json b/lib/libpmc/pmu-events/arch/x86/haswellx/hsx-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/hsx-metrics.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/hsx-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/memory.json b/lib/libpmc/pmu-events/arch/x86/haswellx/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/memory.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/other.json b/lib/libpmc/pmu-events/arch/x86/haswellx/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/other.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/pipeline.json b/lib/libpmc/pmu-events/arch/x86/haswellx/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-cache.json b/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-cache.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/uncore-cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-interconnect.json b/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-interconnect.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-interconnect.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/uncore-interconnect.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-power.json b/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-power.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-power.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/uncore-power.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/haswellx/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/haswellx/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/haswellx/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/haswellx/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/cache.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/cache.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/floating-point.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/frontend.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/frontend.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/ivb-metrics.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/ivb-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/ivb-metrics.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/ivb-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/memory.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/memory.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/other.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/other.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/pipeline.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/uncore.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/uncore.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/uncore.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/uncore.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivybridge/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/ivybridge/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivybridge/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/ivybridge/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/cache.json b/lib/libpmc/pmu-events/arch/x86/ivytown/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/cache.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/floating-point.json b/lib/libpmc/pmu-events/arch/x86/ivytown/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/frontend.json b/lib/libpmc/pmu-events/arch/x86/ivytown/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/frontend.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/ivt-metrics.json b/lib/libpmc/pmu-events/arch/x86/ivytown/ivt-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/ivt-metrics.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/ivt-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/memory.json b/lib/libpmc/pmu-events/arch/x86/ivytown/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/memory.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/other.json b/lib/libpmc/pmu-events/arch/x86/ivytown/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/other.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/pipeline.json b/lib/libpmc/pmu-events/arch/x86/ivytown/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-cache.json b/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-cache.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/uncore-cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-interconnect.json b/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-interconnect.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-interconnect.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/uncore-interconnect.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-power.json b/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-power.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-power.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/uncore-power.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/ivytown/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/ivytown/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/ivytown/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/ivytown/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/cache.json b/lib/libpmc/pmu-events/arch/x86/jaketown/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/cache.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/floating-point.json b/lib/libpmc/pmu-events/arch/x86/jaketown/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/frontend.json b/lib/libpmc/pmu-events/arch/x86/jaketown/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/frontend.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/jkt-metrics.json b/lib/libpmc/pmu-events/arch/x86/jaketown/jkt-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/jkt-metrics.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/jkt-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/memory.json b/lib/libpmc/pmu-events/arch/x86/jaketown/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/memory.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/other.json b/lib/libpmc/pmu-events/arch/x86/jaketown/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/other.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/pipeline.json b/lib/libpmc/pmu-events/arch/x86/jaketown/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-cache.json b/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-cache.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/uncore-cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-interconnect.json b/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-interconnect.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-interconnect.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/uncore-interconnect.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-power.json b/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-power.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-power.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/uncore-power.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/jaketown/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/jaketown/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/jaketown/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/jaketown/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/cache.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/cache.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/frontend.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/frontend.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/memory.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/memory.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/pipeline.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/knightslanding/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/knightslanding/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/knightslanding/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/knightslanding/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/mapfile.csv b/lib/libpmc/pmu-events/arch/x86/mapfile.csv similarity index 89% rename from lib/libpmcstat/pmu-events/arch/x86/mapfile.csv rename to lib/libpmc/pmu-events/arch/x86/mapfile.csv index 93656f2fd53a..fe1a2c47cabf 100644 --- a/lib/libpmcstat/pmu-events/arch/x86/mapfile.csv +++ b/lib/libpmc/pmu-events/arch/x86/mapfile.csv @@ -23,7 +23,10 @@ GenuineIntel-6-1E,v2,nehalemep,core GenuineIntel-6-1F,v2,nehalemep,core GenuineIntel-6-1A,v2,nehalemep,core GenuineIntel-6-2E,v2,nehalemex,core -GenuineIntel-6-[4589]E,v24,skylake,core +GenuineIntel-6-4E,v24,skylake,core +GenuineIntel-6-5E,v24,skylake,core +GenuineIntel-6-8E,v24,skylake,core +GenuineIntel-6-9E,v24,skylake,core GenuineIntel-6-37,v13,silvermont,core GenuineIntel-6-4D,v13,silvermont,core GenuineIntel-6-4C,v13,silvermont,core diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/cache.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/cache.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/floating-point.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/frontend.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/frontend.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/memory.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/memory.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/other.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/other.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/pipeline.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemep/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/nehalemep/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemep/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/nehalemep/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/cache.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/cache.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/floating-point.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/frontend.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/frontend.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/memory.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/memory.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/other.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/other.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/pipeline.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/nehalemex/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/nehalemex/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/nehalemex/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/nehalemex/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/cache.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/cache.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/floating-point.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/frontend.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/frontend.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/memory.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/memory.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/other.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/other.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/pipeline.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/snb-metrics.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/snb-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/snb-metrics.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/snb-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/uncore.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/uncore.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/uncore.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/uncore.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/sandybridge/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/sandybridge/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/sandybridge/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/sandybridge/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/silvermont/cache.json b/lib/libpmc/pmu-events/arch/x86/silvermont/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/silvermont/cache.json rename to lib/libpmc/pmu-events/arch/x86/silvermont/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/silvermont/frontend.json b/lib/libpmc/pmu-events/arch/x86/silvermont/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/silvermont/frontend.json rename to lib/libpmc/pmu-events/arch/x86/silvermont/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/silvermont/memory.json b/lib/libpmc/pmu-events/arch/x86/silvermont/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/silvermont/memory.json rename to lib/libpmc/pmu-events/arch/x86/silvermont/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/silvermont/pipeline.json b/lib/libpmc/pmu-events/arch/x86/silvermont/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/silvermont/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/silvermont/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/silvermont/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/silvermont/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/silvermont/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/silvermont/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/cache.json b/lib/libpmc/pmu-events/arch/x86/skylake/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/cache.json rename to lib/libpmc/pmu-events/arch/x86/skylake/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/floating-point.json b/lib/libpmc/pmu-events/arch/x86/skylake/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/skylake/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/frontend.json b/lib/libpmc/pmu-events/arch/x86/skylake/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/frontend.json rename to lib/libpmc/pmu-events/arch/x86/skylake/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/memory.json b/lib/libpmc/pmu-events/arch/x86/skylake/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/memory.json rename to lib/libpmc/pmu-events/arch/x86/skylake/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/other.json b/lib/libpmc/pmu-events/arch/x86/skylake/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/other.json rename to lib/libpmc/pmu-events/arch/x86/skylake/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/pipeline.json b/lib/libpmc/pmu-events/arch/x86/skylake/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/skylake/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/skl-metrics.json b/lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/skl-metrics.json rename to lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/uncore.json b/lib/libpmc/pmu-events/arch/x86/skylake/uncore.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/uncore.json rename to lib/libpmc/pmu-events/arch/x86/skylake/uncore.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylake/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/skylake/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylake/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/skylake/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/cache.json b/lib/libpmc/pmu-events/arch/x86/skylakex/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/cache.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/floating-point.json b/lib/libpmc/pmu-events/arch/x86/skylakex/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/frontend.json b/lib/libpmc/pmu-events/arch/x86/skylakex/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/frontend.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/memory.json b/lib/libpmc/pmu-events/arch/x86/skylakex/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/memory.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/other.json b/lib/libpmc/pmu-events/arch/x86/skylakex/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/other.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/pipeline.json b/lib/libpmc/pmu-events/arch/x86/skylakex/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/skx-metrics.json b/lib/libpmc/pmu-events/arch/x86/skylakex/skx-metrics.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/skx-metrics.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/skx-metrics.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-memory.json b/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-memory.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/uncore-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-other.json b/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-other.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/uncore-other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/skylakex/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/skylakex/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/skylakex/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/skylakex/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/cache.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/cache.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/floating-point.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/frontend.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/frontend.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/memory.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/other.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/other.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/pipeline.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/westmereep-dp/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-dp/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/cache.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/cache.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/floating-point.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/frontend.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/frontend.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/memory.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/other.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/other.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/pipeline.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/westmereep-sp/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereep-sp/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/cache.json b/lib/libpmc/pmu-events/arch/x86/westmereex/cache.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/cache.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/cache.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/floating-point.json b/lib/libpmc/pmu-events/arch/x86/westmereex/floating-point.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/floating-point.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/floating-point.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/frontend.json b/lib/libpmc/pmu-events/arch/x86/westmereex/frontend.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/frontend.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/frontend.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/memory.json b/lib/libpmc/pmu-events/arch/x86/westmereex/memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/memory.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/other.json b/lib/libpmc/pmu-events/arch/x86/westmereex/other.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/other.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/other.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/pipeline.json b/lib/libpmc/pmu-events/arch/x86/westmereex/pipeline.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/pipeline.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/pipeline.json diff --git a/lib/libpmcstat/pmu-events/arch/x86/westmereex/virtual-memory.json b/lib/libpmc/pmu-events/arch/x86/westmereex/virtual-memory.json similarity index 100% rename from lib/libpmcstat/pmu-events/arch/x86/westmereex/virtual-memory.json rename to lib/libpmc/pmu-events/arch/x86/westmereex/virtual-memory.json diff --git a/lib/libpmcstat/pmu-events/jevents.c b/lib/libpmc/pmu-events/jevents.c similarity index 100% rename from lib/libpmcstat/pmu-events/jevents.c rename to lib/libpmc/pmu-events/jevents.c diff --git a/lib/libpmcstat/pmu-events/jevents.h b/lib/libpmc/pmu-events/jevents.h similarity index 100% rename from lib/libpmcstat/pmu-events/jevents.h rename to lib/libpmc/pmu-events/jevents.h diff --git a/lib/libpmcstat/pmu-events/jsmn.c b/lib/libpmc/pmu-events/jsmn.c similarity index 100% rename from lib/libpmcstat/pmu-events/jsmn.c rename to lib/libpmc/pmu-events/jsmn.c diff --git a/lib/libpmcstat/pmu-events/jsmn.h b/lib/libpmc/pmu-events/jsmn.h similarity index 100% rename from lib/libpmcstat/pmu-events/jsmn.h rename to lib/libpmc/pmu-events/jsmn.h diff --git a/lib/libpmcstat/pmu-events/json.c b/lib/libpmc/pmu-events/json.c similarity index 100% rename from lib/libpmcstat/pmu-events/json.c rename to lib/libpmc/pmu-events/json.c diff --git a/lib/libpmcstat/pmu-events/json.h b/lib/libpmc/pmu-events/json.h similarity index 100% rename from lib/libpmcstat/pmu-events/json.h rename to lib/libpmc/pmu-events/json.h diff --git a/lib/libpmcstat/pmu-events/list.h b/lib/libpmc/pmu-events/list.h similarity index 100% rename from lib/libpmcstat/pmu-events/list.h rename to lib/libpmc/pmu-events/list.h diff --git a/lib/libpmcstat/pmu-events/pmu-events.h b/lib/libpmc/pmu-events/pmu-events.h similarity index 100% rename from lib/libpmcstat/pmu-events/pmu-events.h rename to lib/libpmc/pmu-events/pmu-events.h diff --git a/lib/libpmcstat/Makefile b/lib/libpmcstat/Makefile index a20b14d174d4..5becabb5c957 100644 --- a/lib/libpmcstat/Makefile +++ b/lib/libpmcstat/Makefile @@ -9,30 +9,7 @@ SRCS= \ libpmcstat_logging.c \ libpmcstat_process.c \ libpmcstat_string.c \ - libpmcstat_symbol.c \ - libpmcstat_pmu_util.c + libpmcstat_symbol.c INCS= libpmcstat.h -CFLAGS+= -I${.CURDIR} - -.if ${MACHINE_CPUARCH} == "amd64" - -.if ${MACHINE_CPUARCH} == "aarch64" -EVENT_ARCH="arm64" -.elif ${MACHINE_CPUARCH} == "amd64" -EVENT_ARCH="x86" -.elif ${MACHINE_CPUARCH} == "powerpc" -EVENT_ARCH="powerpc" -.endif - -JEVENTS= ${BTOOLSPATH:U.}/pmu-events/jevents -# This file is built in a subdirectory so never try to rebuild -# it here due to missing meta file. -${JEVENTS}: .NOMETA - -libpmcstat_events.c: ${JEVENTS} - ${JEVENTS} ${EVENT_ARCH} ${.CURDIR}/pmu-events/arch libpmcstat_events.c -SRCS+= libpmcstat_events.c -.endif - .include diff --git a/lib/libpmcstat/libpmcstat.h b/lib/libpmcstat/libpmcstat.h index 77965b612e5c..3f5f2689f6b3 100644 --- a/lib/libpmcstat/libpmcstat.h +++ b/lib/libpmcstat/libpmcstat.h @@ -382,8 +382,6 @@ int pmcstat_analyze_log(struct pmcstat_args *args, int pmcstat_open_log(const char *_p, int _mode); int pmcstat_close_log(struct pmcstat_args *args); -uint64_t pmcstat_pmu_sample_rate_get(const char *); - __END_DECLS #endif /* !_LIBPMCSTAT_H_ */ diff --git a/lib/libpmcstat/libpmcstat_logging.c b/lib/libpmcstat/libpmcstat_logging.c index 71ee524bbd8c..42054e636b4b 100644 --- a/lib/libpmcstat/libpmcstat_logging.c +++ b/lib/libpmcstat/libpmcstat_logging.c @@ -195,7 +195,6 @@ pmcstat_analyze_log(struct pmcstat_args *args, int *ps_samples_period) { uint32_t cpu, cpuflags; - uintfptr_t pc; pid_t pid; struct pmcstat_image *image; struct pmcstat_process *pp, *ppnew; @@ -268,44 +267,6 @@ pmcstat_analyze_log(struct pmcstat_args *args, ev.pl_u.pl_mo.pl_end); break; - case PMCLOG_TYPE_PCSAMPLE: - /* - * Note: the `PCSAMPLE' log entry is not - * generated by hpwmc(4) after version 2. - */ - - /* - * We bring in the gmon file for the image - * currently associated with the PMC & pid - * pair and increment the appropriate entry - * bin inside this. - */ - pmcstat_stats->ps_samples_total++; - *ps_samples_period += 1; - - pc = ev.pl_u.pl_s.pl_pc; - pp = pmcstat_process_lookup(ev.pl_u.pl_s.pl_pid, - PMCSTAT_ALLOCATE); - - /* Get PMC record. */ - pmcr = pmcstat_lookup_pmcid(ev.pl_u.pl_s.pl_pmcid, pmcstat_mergepmc); - assert(pmcr != NULL); - pmcr->pr_samples++; - - /* - * Call the plugins processing - * TODO: move pmcstat_process_find_map inside plugins - */ - - if (plugins[args->pa_pplugin].pl_process != NULL) - plugins[args->pa_pplugin].pl_process( - pp, pmcr, 1, &pc, - pmcstat_process_find_map(pp, pc) != NULL, 0); - plugins[args->pa_plugin].pl_process( - pp, pmcr, 1, &pc, - pmcstat_process_find_map(pp, pc) != NULL, 0); - break; - case PMCLOG_TYPE_CALLCHAIN: pmcstat_stats->ps_samples_total++; *ps_samples_period += 1; @@ -453,8 +414,8 @@ pmcstat_analyze_log(struct pmcstat_args *args, return (PMCSTAT_RUNNING); err(EX_DATAERR, - "ERROR: event parsing failed (record %jd, offset 0x%jx)", - (uintmax_t) ev.pl_count + 1, ev.pl_offset); + "ERROR: event parsing failed state: %d type: %d (record %jd, offset 0x%jx)", + ev.pl_state, ev.pl_type, (uintmax_t) ev.pl_count + 1, ev.pl_offset); } /* diff --git a/lib/libpmcstat/libpmcstat_pmu_util.c b/lib/libpmcstat/libpmcstat_pmu_util.c deleted file mode 100644 index 915856f1998a..000000000000 --- a/lib/libpmcstat/libpmcstat_pmu_util.c +++ /dev/null @@ -1,164 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2018, Matthew Macy - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "pmu-events/pmu-events.h" - -#if defined(__amd64__) -struct pmu_alias { - const char *pa_alias; - const char *pa_name; -}; -static struct pmu_alias pmu_alias_table[] = { - { "UNHALTED_CORE_CYCLES", "CPU_CLK_UNHALTED.THREAD_P_ANY"}, - { "UNHALTED-CORE-CYCLES", "CPU_CLK_UNHALTED.THREAD_P_ANY"}, - { "LLC_MISSES", "LONGEST_LAT_CACHE.MISS"}, - { "LLC-MISSES", "LONGEST_LAT_CACHE.MISS"}, - { "LLC_REFERENCE", "LONGEST_LAT_CACHE.REFERENCE"}, - { "LLC-REFERENCE", "LONGEST_LAT_CACHE.REFERENCE"}, - { "LLC_MISS_RHITM", "mem_load_l3_miss_retired.remote_hitm"}, - { "LLC-MISS-RHITM", "mem_load_l3_miss_retired.remote_hitm"}, - { "RESOURCE_STALL", "RESOURCE_STALLS.ANY"}, - { "RESOURCE_STALLS_ANY", "RESOURCE_STALLS.ANY"}, - { "BRANCH_INSTRUCTION_RETIRED", "BR_INST_RETIRED.ALL_BRANCHES"}, - { "BRANCH-INSTRUCTION-RETIRED", "BR_INST_RETIRED.ALL_BRANCHES"}, - { "BRANCH_MISSES_RETIRED", "BR_MISP_RETIRED.ALL_BRANCHES"}, - { "BRANCH-MISSES-RETIRED", "BR_MISP_RETIRED.ALL_BRANCHES"}, - { NULL, NULL }, -}; - -static const char * -pmu_alias_get(const char *name) -{ - struct pmu_alias *pa; - - for (pa = pmu_alias_table; pa->pa_alias != NULL; pa++) - if (strcasecmp(name, pa->pa_alias) == 0) - return (pa->pa_name); - return (name); -} - -struct pmu_event_desc { - uint32_t ped_umask; - uint32_t ped_event; - uint64_t ped_period; -}; - -static const struct pmu_events_map * -pmu_events_map_get(void) -{ - size_t s; - char buf[64]; - const struct pmu_events_map *pme; - - if (sysctlbyname("kern.hwpmc.cpuid", (void *)NULL, &s, - (void *)NULL, 0) == -1) - return (NULL); - if (sysctlbyname("kern.hwpmc.cpuid", buf, &s, - (void *)NULL, 0) == -1) - return (NULL); - for (pme = pmu_events_map; pme->cpuid != NULL; pme++) - if (strcmp(buf, pme->cpuid) == 0) - return (pme); - return (NULL); -} - -static const struct pmu_event * -pmu_event_get(const char *event_name) -{ - const struct pmu_events_map *pme; - const struct pmu_event *pe; - - if ((pme = pmu_events_map_get()) == NULL) - return (NULL); - for (pe = pme->table; pe->name || pe->desc || pe->event; pe++) { - if (pe->name == NULL) - continue; - if (strcasecmp(pe->name, event_name) == 0) - return (pe); - } - return (NULL); -} - -static int -pmu_parse_event(struct pmu_event_desc *ped, const char *eventin) -{ - char *event; - char *kvp, *key, *value; - - if ((event = strdup(eventin)) == NULL) - return (ENOMEM); - bzero(ped, sizeof(*ped)); - while ((kvp = strsep(&event, ",")) != NULL) { - key = strsep(&kvp, "="); - if (key == NULL) - abort(); - value = kvp; - if (strcmp(key, "umask") == 0) - ped->ped_umask = strtol(value, NULL, 16); - if (strcmp(key, "event") == 0) - ped->ped_event = strtol(value, NULL, 16); - if (strcmp(key, "period") == 0) - ped->ped_period = strtol(value, NULL, 10); - } - free(event); - return (0); -} - -uint64_t -pmcstat_pmu_sample_rate_get(const char *event_name) -{ - const struct pmu_event *pe; - struct pmu_event_desc ped; - - event_name = pmu_alias_get(event_name); - if ((pe = pmu_event_get(event_name)) == NULL) - return (DEFAULT_SAMPLE_COUNT); - if (pe->alias && (pe = pmu_event_get(pe->alias)) == NULL) - return (DEFAULT_SAMPLE_COUNT); - if (pe->event == NULL) - return (DEFAULT_SAMPLE_COUNT); - if (pmu_parse_event(&ped, pe->event)) - return (DEFAULT_SAMPLE_COUNT); - return (ped.ped_period); -} - -#else -uint64_t pmcstat_pmu_sample_rate_get(const char *event_name __unused) { return (DEFAULT_SAMPLE_COUNT); } -#endif diff --git a/sys/dev/hwpmc/hwpmc_core.c b/sys/dev/hwpmc/hwpmc_core.c index 9fedfc0f32fc..d1a57de45480 100644 --- a/sys/dev/hwpmc/hwpmc_core.c +++ b/sys/dev/hwpmc/hwpmc_core.c @@ -548,48 +548,6 @@ iaf_initialize(struct pmc_mdep *md, int maxcpu, int npmc, int pmcwidth) * Intel programmable PMCs. */ -/* - * Event descriptor tables. - * - * For each event id, we track: - * - * 1. The CPUs that the event is valid for. - * - * 2. If the event uses a fixed UMASK, the value of the umask field. - * If the event doesn't use a fixed UMASK, a mask of legal bits - * to check against. - */ - -struct iap_event_descr { - enum pmc_event iap_ev; - unsigned char iap_evcode; - unsigned char iap_umask; - unsigned int iap_flags; -}; - -#define IAP_F_CC (1 << 0) /* CPU: Core */ -#define IAP_F_CC2 (1 << 1) /* CPU: Core2 family */ -#define IAP_F_CC2E (1 << 2) /* CPU: Core2 Extreme only */ -#define IAP_F_CA (1 << 3) /* CPU: Atom */ -#define IAP_F_I7 (1 << 4) /* CPU: Core i7 */ -#define IAP_F_I7O (1 << 4) /* CPU: Core i7 (old) */ -#define IAP_F_WM (1 << 5) /* CPU: Westmere */ -#define IAP_F_SB (1 << 6) /* CPU: Sandy Bridge */ -#define IAP_F_IB (1 << 7) /* CPU: Ivy Bridge */ -#define IAP_F_SBX (1 << 8) /* CPU: Sandy Bridge Xeon */ -#define IAP_F_IBX (1 << 9) /* CPU: Ivy Bridge Xeon */ -#define IAP_F_HW (1 << 10) /* CPU: Haswell */ -#define IAP_F_CAS (1 << 11) /* CPU: Atom Silvermont */ -#define IAP_F_HWX (1 << 12) /* CPU: Haswell Xeon */ -#define IAP_F_BW (1 << 13) /* CPU: Broadwell */ -#define IAP_F_BWX (1 << 14) /* CPU: Broadwell Xeon */ -#define IAP_F_SL (1 << 15) /* CPU: Skylake */ -#define IAP_F_SLX (1 << 16) /* CPU: Skylake Xeon AKA scalable */ -#define IAP_F_FM (1 << 18) /* Fixed mask */ - -#define IAP_F_ALLCPUSCORE2 \ - (IAP_F_CC | IAP_F_CC2 | IAP_F_CC2E | IAP_F_CA) - /* Sub fields of UMASK that this event supports. */ #define IAP_M_CORE (1 << 0) /* Core specificity */ #define IAP_M_AGENT (1 << 1) /* Agent specificity */ @@ -612,1403 +570,6 @@ struct iap_event_descr { #define IAP_CORE_ALL (0x3 << 14) #define IAP_F_CMASK 0xFF000000 -static struct iap_event_descr iap_events[] = { -#undef IAPDESCR -#define IAPDESCR(N,EV,UM,FLAGS) { \ - .iap_ev = PMC_EV_IAP_EVENT_##N, \ - .iap_evcode = (EV), \ - .iap_umask = (UM), \ - .iap_flags = (FLAGS) \ - } - - IAPDESCR(02H_01H, 0x02, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(02H_81H, 0x02, 0x81, IAP_F_FM | IAP_F_CA), - - IAPDESCR(03H_00H, 0x03, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(03H_01H, 0x03, 0x01, IAP_F_FM | IAP_F_I7O | IAP_F_SB | - IAP_F_SBX | IAP_F_CAS), - IAPDESCR(03H_02H, 0x03, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(03H_04H, 0x03, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7O | - IAP_F_CAS), - IAPDESCR(03H_08H, 0x03, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SB | - IAP_F_SBX | IAP_F_CAS | IAP_F_IB | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(03H_10H, 0x03, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SB | - IAP_F_SBX | IAP_F_CAS), - IAPDESCR(03H_20H, 0x03, 0x20, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_CAS), - IAPDESCR(03H_40H, 0x03, 0x40, IAP_F_FM | IAP_F_CAS), - IAPDESCR(03H_80H, 0x03, 0x80, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(04H_00H, 0x04, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CAS), - IAPDESCR(04H_01H, 0x04, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7O | - IAP_F_CAS), - IAPDESCR(04H_02H, 0x04, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_CAS), - IAPDESCR(04H_04H, 0x04, 0x04, IAP_F_FM | IAP_F_CAS), - IAPDESCR(04H_07H, 0x04, 0x07, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(04H_08H, 0x04, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_CAS), - IAPDESCR(04H_10H, 0x04, 0x10, IAP_F_FM | IAP_F_CAS), - IAPDESCR(04H_20H, 0x04, 0x20, IAP_F_FM | IAP_F_CAS), - IAPDESCR(04H_40H, 0x04, 0x40, IAP_F_FM | IAP_F_CAS), - IAPDESCR(04H_80H, 0x04, 0x80, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(05H_00H, 0x05, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(05H_01H, 0x05, 0x01, IAP_F_FM | IAP_F_I7O | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX), - IAPDESCR(05H_02H, 0x05, 0x02, IAP_F_FM | IAP_F_I7O | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(05H_03H, 0x05, 0x03, IAP_F_FM | IAP_F_I7O | IAP_F_CAS), - - IAPDESCR(06H_00H, 0x06, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2 | - IAP_F_CC2E | IAP_F_CA), - IAPDESCR(06H_01H, 0x06, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(06H_02H, 0x06, 0x02, IAP_F_FM | IAP_F_I7O), - IAPDESCR(06H_04H, 0x06, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(06H_08H, 0x06, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(06H_0FH, 0x06, 0x0F, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(07H_00H, 0x07, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2), - IAPDESCR(07H_01H, 0x07, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(07H_02H, 0x07, 0x02, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(07H_03H, 0x07, 0x03, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(07H_06H, 0x07, 0x06, IAP_F_FM | IAP_F_CA), - IAPDESCR(07H_08H, 0x07, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_SB | - IAP_F_SBX), - - IAPDESCR(08H_01H, 0x08, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(08H_02H, 0x08, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SLX), - IAPDESCR(08H_04H, 0x08, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_HW | IAP_F_HWX | IAP_F_SLX), - IAPDESCR(08H_05H, 0x08, 0x05, IAP_F_FM | IAP_F_CA), - IAPDESCR(08H_06H, 0x08, 0x06, IAP_F_FM | IAP_F_CA), - IAPDESCR(08H_07H, 0x08, 0x07, IAP_F_FM | IAP_F_CA), - IAPDESCR(08H_08H, 0x08, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SLX), - IAPDESCR(08H_09H, 0x08, 0x09, IAP_F_FM | IAP_F_CA), - IAPDESCR(08H_0EH, 0x08, 0x0E, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(08H_10H, 0x08, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(08H_20H, 0x08, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(08H_40H, 0x08, 0x40, IAP_F_FM | IAP_F_I7O | IAP_F_HW | IAP_F_HWX), - IAPDESCR(08H_60H, 0x08, 0x60, IAP_F_FM | IAP_F_HW | IAP_F_HWX), - IAPDESCR(08H_80H, 0x08, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_HW | IAP_F_HWX), - IAPDESCR(08H_81H, 0x08, 0x81, IAP_F_FM | IAP_F_IB | IAP_F_IBX), - IAPDESCR(08H_82H, 0x08, 0x82, IAP_F_FM | IAP_F_IB | IAP_F_IBX), - IAPDESCR(08H_84H, 0x08, 0x84, IAP_F_FM | IAP_F_IB | IAP_F_IBX), - IAPDESCR(08H_88H, 0x08, 0x88, IAP_F_FM | IAP_F_IB | IAP_F_IBX), - - IAPDESCR(09H_01H, 0x09, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7O), - IAPDESCR(09H_02H, 0x09, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7O), - IAPDESCR(09H_04H, 0x09, 0x04, IAP_F_FM | IAP_F_I7O), - IAPDESCR(09H_08H, 0x09, 0x08, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(0BH_01H, 0x0B, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0BH_02H, 0x0B, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0BH_10H, 0x0B, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(0CH_01H, 0x0C, 0x01, IAP_F_FM | IAP_F_CC2 | IAP_F_I7 | - IAP_F_WM | IAP_F_SL), - IAPDESCR(0CH_02H, 0x0C, 0x02, IAP_F_FM | IAP_F_CC2), - IAPDESCR(0CH_03H, 0x0C, 0x03, IAP_F_FM | IAP_F_CA), - - IAPDESCR(0DH_01H, 0x0D, 0x01, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(0DH_03H, 0x0D, 0x03, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_HW | - IAP_F_IB | IAP_F_IBX | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(0DH_40H, 0x0D, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(0DH_80H, 0x0D, 0x80, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(0EH_01H, 0x0E, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(0EH_02H, 0x0E, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(0EH_10H, 0x0E, 0x10, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(0EH_20H, 0x0E, 0x20, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(0EH_40H, 0x0E, 0x40, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(0FH_01H, 0x0F, 0x01, IAP_F_FM | IAP_F_I7), - IAPDESCR(0FH_02H, 0x0F, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0FH_08H, 0x0F, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0FH_10H, 0x0F, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0FH_20H, 0x0F, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(0FH_80H, 0x0F, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(10H_00H, 0x10, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(10H_01H, 0x10, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | IAP_F_IBX ), - IAPDESCR(10H_02H, 0x10, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(10H_04H, 0x10, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(10H_08H, 0x10, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(10H_10H, 0x10, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(10H_20H, 0x10, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(10H_40H, 0x10, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(10H_80H, 0x10, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(10H_81H, 0x10, 0x81, IAP_F_FM | IAP_F_CA), - - IAPDESCR(11H_00H, 0x11, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2), - IAPDESCR(11H_01H, 0x11, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_SB | - IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(11H_02H, 0x11, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | IAP_F_IBX), - IAPDESCR(11H_81H, 0x11, 0x81, IAP_F_FM | IAP_F_CA), - - IAPDESCR(12H_00H, 0x12, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(12H_01H, 0x12, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_02H, 0x12, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_04H, 0x12, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_08H, 0x12, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_10H, 0x12, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_20H, 0x12, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_40H, 0x12, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(12H_81H, 0x12, 0x81, IAP_F_FM | IAP_F_CA), - - IAPDESCR(13H_00H, 0x13, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(13H_01H, 0x13, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | IAP_F_WM), - IAPDESCR(13H_02H, 0x13, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(13H_04H, 0x13, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(13H_07H, 0x13, 0x07, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(13H_81H, 0x13, 0x81, IAP_F_FM | IAP_F_CA), - - IAPDESCR(14H_00H, 0x14, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2), - IAPDESCR(14H_01H, 0x14, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(14H_02H, 0x14, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(17H_01H, 0x17, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_SBX), - - IAPDESCR(18H_00H, 0x18, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(18H_01H, 0x18, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(19H_00H, 0x19, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(19H_01H, 0x19, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(19H_02H, 0x19, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(1DH_01H, 0x1D, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(1DH_02H, 0x1D, 0x02, IAP_F_FM | IAP_F_I7O), - IAPDESCR(1DH_04H, 0x1D, 0x04, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(1EH_01H, 0x1E, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(20H_01H, 0x20, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(21H, 0x21, IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(22H, 0x22, IAP_M_CORE, IAP_F_CC2), - IAPDESCR(23H, 0x23, IAP_M_CORE, IAP_F_ALLCPUSCORE2), - - IAPDESCR(24H, 0x24, IAP_M_CORE | IAP_M_PREFETCH, IAP_F_ALLCPUSCORE2), - IAPDESCR(24H_01H, 0x24, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX ), - IAPDESCR(24H_02H, 0x24, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(24H_03H, 0x24, 0x03, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_04H, 0x24, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_08H, 0x24, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_0CH, 0x24, 0x0C, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_10H, 0x24, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_20H, 0x24, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_21H, 0x24, 0x21, IAP_F_FM | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_22H, 0x24, 0x22, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_24H, 0x24, 0x24, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_27H, 0x24, 0x27, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_30H, 0x24, 0x30, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(24H_38H, 0x24, 0x38, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_3FH, 0x24, 0x3F, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_40H, 0x24, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_41H, 0x24, 0x41, IAP_F_FM | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_42H, 0x24, 0x42, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_44H, 0x24, 0x44, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_50H, 0x24, 0x50, IAP_F_FM | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(24H_80H, 0x24, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_AAH, 0x24, 0xAA, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(24H_C0H, 0x24, 0xC0, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(24H_D8H, 0x24, 0xD8, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_E1H, 0x24, 0xE1, IAP_F_FM | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_E2H, 0x24, 0xE2, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_E4H, 0x24, 0xE4, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_E7H, 0x24, 0xE7, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(24H_EFH, 0x24, 0xEF, IAP_F_FM | IAP_F_SL), - IAPDESCR(24H_F8H, 0x24, 0xF8, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(24H_FFH, 0x24, 0xFF, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_HW | - IAP_F_HWX | IAP_F_SLX), - - IAPDESCR(25H, 0x25, IAP_M_CORE, IAP_F_ALLCPUSCORE2), - - IAPDESCR(26H, 0x26, IAP_M_CORE | IAP_M_PREFETCH, IAP_F_ALLCPUSCORE2), - IAPDESCR(26H_01H, 0x26, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_02H, 0x26, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_04H, 0x26, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_08H, 0x26, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_0FH, 0x26, 0x0F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_10H, 0x26, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_20H, 0x26, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_40H, 0x26, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_80H, 0x26, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_F0H, 0x26, 0xF0, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(26H_FFH, 0x26, 0xFF, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(27H, 0x27, IAP_M_CORE | IAP_M_PREFETCH, IAP_F_ALLCPUSCORE2), - IAPDESCR(27H_01H, 0x27, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(27H_02H, 0x27, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_04H, 0x27, 0x04, IAP_F_FM | IAP_F_I7O | IAP_F_SB | - IAP_F_SBX), - IAPDESCR(27H_08H, 0x27, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(27H_0EH, 0x27, 0x0E, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_0FH, 0x27, 0x0F, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(27H_10H, 0x27, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_20H, 0x27, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_40H, 0x27, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_50H, 0x27, 0x50, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(27H_80H, 0x27, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_E0H, 0x27, 0xE0, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(27H_F0H, 0x27, 0xF0, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(28H, 0x28, IAP_M_CORE | IAP_M_MESI, IAP_F_ALLCPUSCORE2), - IAPDESCR(28H_01H, 0x28, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(28H_02H, 0x28, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SBX), - IAPDESCR(28H_04H, 0x28, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(28H_07H, 0x28, 0x07, IAP_F_FM | IAP_F_SLX), - IAPDESCR(28H_08H, 0x28, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(28H_0FH, 0x28, 0x0F, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(28H_18H, 0x28, 0x18, IAP_F_SLX), - IAPDESCR(28H_20H, 0x28, 0x20, IAP_F_SLX), - IAPDESCR(28H_40H, 0x28, 0x40, IAP_F_SLX), - - IAPDESCR(29H, 0x29, IAP_M_CORE | IAP_M_MESI, IAP_F_CC), - IAPDESCR(29H, 0x29, IAP_M_CORE | IAP_M_MESI | IAP_M_PREFETCH, - IAP_F_CA | IAP_F_CC2), - IAPDESCR(2AH, 0x2A, IAP_M_CORE | IAP_M_MESI, IAP_F_ALLCPUSCORE2), - IAPDESCR(2BH, 0x2B, IAP_M_CORE | IAP_M_MESI, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(2EH, 0x2E, IAP_M_CORE | IAP_M_MESI | IAP_M_PREFETCH, - IAP_F_ALLCPUSCORE2), - IAPDESCR(2EH_01H, 0x2E, 0x01, IAP_F_FM | IAP_F_WM), - IAPDESCR(2EH_02H, 0x2E, 0x02, IAP_F_FM | IAP_F_WM), - IAPDESCR(2EH_41H, 0x2E, 0x41, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_I7 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(2EH_4FH, 0x2E, 0x4F, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_I7 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(30H, 0x30, IAP_M_CORE | IAP_M_MESI | IAP_M_PREFETCH, - IAP_F_ALLCPUSCORE2), - IAPDESCR(30H_00H, 0x30, 0x00, IAP_F_FM | IAP_F_CAS), - IAPDESCR(31H_00H, 0x31, 0x00, IAP_F_FM | IAP_F_CAS), - IAPDESCR(32H, 0x32, IAP_M_CORE | IAP_M_MESI | IAP_M_PREFETCH, IAP_F_CC), - IAPDESCR(32H, 0x32, IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(3AH, 0x3A, IAP_M_TRANSITION, IAP_F_CC), - IAPDESCR(3AH_00H, 0x3A, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(3BH_C0H, 0x3B, 0xC0, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(3CH_00H, 0x3C, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(3CH_01H, 0x3C, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(3CH_02H, 0x3C, 0x02, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_SL | - IAP_F_SLX), - - IAPDESCR(3DH_01H, 0x3D, 0x01, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(40H, 0x40, IAP_M_MESI, IAP_F_CC | IAP_F_CC2), - IAPDESCR(40H_01H, 0x40, 0x01, IAP_F_FM | IAP_F_I7), - IAPDESCR(40H_02H, 0x40, 0x02, IAP_F_FM | IAP_F_I7), - IAPDESCR(40H_04H, 0x40, 0x04, IAP_F_FM | IAP_F_I7), - IAPDESCR(40H_08H, 0x40, 0x08, IAP_F_FM | IAP_F_I7), - IAPDESCR(40H_0FH, 0x40, 0x0F, IAP_F_FM | IAP_F_I7), - IAPDESCR(40H_21H, 0x40, 0x21, IAP_F_FM | IAP_F_CA), - - IAPDESCR(41H, 0x41, IAP_M_MESI, IAP_F_CC | IAP_F_CC2), - IAPDESCR(41H_01H, 0x41, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(41H_02H, 0x41, 0x02, IAP_F_FM | IAP_F_I7), - IAPDESCR(41H_04H, 0x41, 0x04, IAP_F_FM | IAP_F_I7), - IAPDESCR(41H_08H, 0x41, 0x08, IAP_F_FM | IAP_F_I7), - IAPDESCR(41H_0FH, 0x41, 0x0F, IAP_F_FM | IAP_F_I7O), - IAPDESCR(41H_22H, 0x41, 0x22, IAP_F_FM | IAP_F_CA), - - IAPDESCR(42H, 0x42, IAP_M_MESI, IAP_F_ALLCPUSCORE2), - IAPDESCR(42H_01H, 0x42, 0x01, IAP_F_FM | IAP_F_I7), - IAPDESCR(42H_02H, 0x42, 0x02, IAP_F_FM | IAP_F_I7), - IAPDESCR(42H_04H, 0x42, 0x04, IAP_F_FM | IAP_F_I7), - IAPDESCR(42H_08H, 0x42, 0x08, IAP_F_FM | IAP_F_I7), - IAPDESCR(42H_10H, 0x42, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(43H_01H, 0x43, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7), - IAPDESCR(43H_02H, 0x43, 0x02, IAP_F_FM | IAP_F_CA | - IAP_F_CC2 | IAP_F_I7), - - IAPDESCR(44H_02H, 0x44, 0x02, IAP_F_FM | IAP_F_CC), - - IAPDESCR(45H_0FH, 0x45, 0x0F, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(46H_00H, 0x46, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(47H_00H, 0x47, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(48H_00H, 0x48, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(48H_01H, 0x48, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(48H_02H, 0x48, 0x02, IAP_F_FM | IAP_F_I7O | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(49H_00H, 0x49, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(49H_01H, 0x49, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(49H_02H, 0x49, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | - IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SLX), - IAPDESCR(49H_04H, 0x49, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_SLX), - IAPDESCR(49H_08H, 0x49, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(49H_0EH, 0x49, 0x0E, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(49H_10H, 0x49, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(49H_20H, 0x49, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(49H_40H, 0x49, 0x40, IAP_F_FM | IAP_F_I7O | IAP_F_HW | IAP_F_HWX), - IAPDESCR(49H_60H, 0x49, 0x60, IAP_F_FM | IAP_F_HW | IAP_F_HWX), - IAPDESCR(49H_80H, 0x49, 0x80, IAP_F_FM | IAP_F_WM | IAP_F_I7 | IAP_F_HW | - IAP_F_HWX), - - IAPDESCR(4BH_00H, 0x4B, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(4BH_01H, 0x4B, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | IAP_F_I7O), - IAPDESCR(4BH_02H, 0x4B, 0x02, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(4BH_03H, 0x4B, 0x03, IAP_F_FM | IAP_F_CC), - IAPDESCR(4BH_08H, 0x4B, 0x08, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(4CH_00H, 0x4C, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(4CH_01H, 0x4C, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(4CH_02H, 0x4C, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(4DH_01H, 0x4D, 0x01, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(4EH_01H, 0x4E, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(4EH_02H, 0x4E, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(4EH_04H, 0x4E, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(4EH_10H, 0x4E, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(4FH_00H, 0x4F, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(4FH_02H, 0x4F, 0x02, IAP_F_FM | IAP_F_I7O), - IAPDESCR(4FH_04H, 0x4F, 0x04, IAP_F_FM | IAP_F_I7O), - IAPDESCR(4FH_08H, 0x4F, 0x08, IAP_F_FM | IAP_F_I7O), - IAPDESCR(4FH_10H, 0x4F, 0x10, IAP_F_FM | IAP_F_WM | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(51H_01H, 0x51, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(51H_02H, 0x51, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(51H_04H, 0x51, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(51H_08H, 0x51, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - - IAPDESCR(52H_01H, 0x52, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(53H_01H, 0x53, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(54H_01H, 0x54, 0x01, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_02H, 0x54, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_04H, 0x54, 0x04, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_08H, 0x54, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_10H, 0x54, 0x10, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_20H, 0x54, 0x20, IAP_F_FM | IAP_F_SLX), - IAPDESCR(54H_40H, 0x54, 0x40, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(58H_01H, 0x58, 0x01, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(58H_02H, 0x58, 0x02, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(58H_04H, 0x58, 0x04, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(58H_08H, 0x58, 0x08, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(59H_20H, 0x59, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(59H_40H, 0x59, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(59H_80H, 0x59, 0x80, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - - IAPDESCR(5BH_0CH, 0x5B, 0x0C, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(5BH_0FH, 0x5B, 0x0F, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(5BH_40H, 0x5B, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(5BH_4FH, 0x5B, 0x4F, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - - IAPDESCR(5CH_01H, 0x5C, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(5CH_02H, 0x5C, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(5DH_01H, 0x5d, 0x01, IAP_F_FM | IAP_F_SLX), - IAPDESCR(5DH_02H, 0x5d, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(5DH_04H, 0x5d, 0x04, IAP_F_FM | IAP_F_SLX), - IAPDESCR(5DH_08H, 0x5d, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(5DH_10H, 0x5d, 0x10, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(5EH_01H, 0x5E, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(5FH_01H, 0x5F, 0x01, IAP_F_FM | IAP_F_IB ), /* IB not in manual */ - IAPDESCR(5FH_04H, 0x5F, 0x04, IAP_F_FM | IAP_F_IBX | IAP_F_IB), - - IAPDESCR(60H, 0x60, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(60H_01H, 0x60, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(60H_02H, 0x60, 0x02, IAP_F_FM | IAP_F_WM | IAP_F_I7O | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(60H_04H, 0x60, 0x04, IAP_F_FM |IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(60H_08H, 0x60, 0x08, IAP_F_FM |IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(60H_10H, 0x60, 0x10, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(61H, 0x61, IAP_M_AGENT, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(61H_00H, 0x61, 0x00, IAP_F_FM | IAP_F_CC), - - IAPDESCR(62H, 0x62, IAP_M_AGENT, IAP_F_ALLCPUSCORE2), - IAPDESCR(62H_00H, 0x62, 0x00, IAP_F_FM | IAP_F_CC), - - IAPDESCR(63H, 0x63, IAP_M_AGENT | IAP_M_CORE, - IAP_F_CA | IAP_F_CC2), - IAPDESCR(63H, 0x63, IAP_M_CORE, IAP_F_CC), - IAPDESCR(63H_01H, 0x63, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX ), - IAPDESCR(63H_02H, 0x63, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL), - - IAPDESCR(64H, 0x64, IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(64H_40H, 0x64, 0x40, IAP_F_FM | IAP_F_CC), - - IAPDESCR(65H, 0x65, IAP_M_AGENT | IAP_M_CORE, - IAP_F_CA | IAP_F_CC2), - IAPDESCR(65H, 0x65, IAP_M_CORE, IAP_F_CC), - - IAPDESCR(66H, 0x66, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - - IAPDESCR(67H, 0x67, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(67H, 0x67, IAP_M_AGENT, IAP_F_CC), - IAPDESCR(68H, 0x68, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(69H, 0x69, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(6AH, 0x6A, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(6BH, 0x6B, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - - IAPDESCR(6CH, 0x6C, IAP_M_AGENT | IAP_M_CORE, IAP_F_ALLCPUSCORE2), - IAPDESCR(6CH_01H, 0x6C, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(6DH, 0x6D, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(6DH, 0x6D, IAP_M_CORE, IAP_F_CC), - - IAPDESCR(6EH, 0x6E, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(6EH, 0x6E, IAP_M_CORE, IAP_F_CC), - - IAPDESCR(6FH, 0x6F, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(6FH, 0x6F, IAP_M_CORE, IAP_F_CC), - - IAPDESCR(70H, 0x70, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(70H, 0x70, IAP_M_CORE, IAP_F_CC), - - IAPDESCR(77H, 0x77, IAP_M_AGENT | IAP_M_SNOOPRESPONSE, - IAP_F_CA | IAP_F_CC2), - IAPDESCR(77H, 0x77, IAP_M_AGENT | IAP_M_MESI, IAP_F_CC), - - IAPDESCR(78H, 0x78, IAP_M_CORE, IAP_F_CC), - IAPDESCR(78H, 0x78, IAP_M_CORE | IAP_M_SNOOPTYPE, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(79H_02H, 0x79, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(79H_04H, 0x79, 0x04, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_08H, 0x79, 0x08, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_SL | IAP_F_BW | - IAP_F_BWX | IAP_F_SLX), - IAPDESCR(79H_10H, 0x79, 0x10, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_18H, 0x79, 0x18, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_20H, 0x79, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_24H, 0x79, 0x24, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_30H, 0x79, 0x30, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(79H_3CH, 0x79, 0x3C, IAP_F_FM | IAP_F_IB | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(7AH, 0x7A, IAP_M_AGENT, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(7BH, 0x7B, IAP_M_AGENT, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(7DH, 0x7D, IAP_M_CORE, IAP_F_ALLCPUSCORE2), - - IAPDESCR(7EH, 0x7E, IAP_M_AGENT | IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - IAPDESCR(7EH_00H, 0x7E, 0x00, IAP_F_FM | IAP_F_CC), - - IAPDESCR(7FH, 0x7F, IAP_M_CORE, IAP_F_CA | IAP_F_CC2), - - IAPDESCR(80H_00H, 0x80, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(80H_01H, 0x80, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_CAS), - IAPDESCR(80H_02H, 0x80, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(80H_03H, 0x80, 0x03, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM | IAP_F_CAS), - IAPDESCR(80H_04H, 0x80, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_IB | - IAP_F_IBX | IAP_F_SL | IAP_F_SLX), /* SL may have a spec bug two with - same entry no cmask */ - - IAPDESCR(81H_00H, 0x81, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(81H_01H, 0x81, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(81H_02H, 0x81, 0x02, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(82H_01H, 0x82, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(82H_02H, 0x82, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(82H_04H, 0x82, 0x04, IAP_F_FM | IAP_F_CA), - IAPDESCR(82H_10H, 0x82, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(82H_12H, 0x82, 0x12, IAP_F_FM | IAP_F_CC2), - IAPDESCR(82H_40H, 0x82, 0x40, IAP_F_FM | IAP_F_CC2), - - IAPDESCR(83H_01H, 0x83, 0x01, IAP_F_FM | IAP_F_I7O | IAP_F_SL | IAP_F_SLX), - IAPDESCR(83H_02H, 0x83, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(83H_04H, 0x83, 0x04, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(85H_00H, 0x85, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(85H_01H, 0x85, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(85H_02H, 0x85, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SLX), - IAPDESCR(85H_04H, 0x85, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_SLX), - IAPDESCR(85H_08H, 0x85, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(85H_0EH, 0x85, 0x0E, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(85H_10H, 0x85, 0x10, IAP_F_FM | IAP_F_I7O | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(85H_20H, 0x85, 0x20, IAP_F_FM | IAP_F_I7O | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(85H_40H, 0x85, 0x40, IAP_F_FM | IAP_F_I7O | IAP_F_HW | IAP_F_HWX), - IAPDESCR(85H_60H, 0x85, 0x60, IAP_F_FM | IAP_F_HW | IAP_F_HWX), - IAPDESCR(85H_80H, 0x85, 0x80, IAP_F_FM | IAP_F_WM | IAP_F_I7O), - - IAPDESCR(86H_00H, 0x86, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(87H_00H, 0x87, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(87H_01H, 0x87, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(87H_02H, 0x87, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(87H_04H, 0x87, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(87H_08H, 0x87, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(87H_0FH, 0x87, 0x0F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(88H_00H, 0x88, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(88H_01H, 0x88, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_02H, 0x88, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_04H, 0x88, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_07H, 0x88, 0x07, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(88H_08H, 0x88, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_10H, 0x88, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_20H, 0x88, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_30H, 0x88, 0x30, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(88H_40H, 0x88, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_41H, 0x88, 0x41, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_7FH, 0x88, 0x7F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(88H_80H, 0x88, 0x80, IAP_F_FM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(88H_81H, 0x88, 0x81, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_82H, 0x88, 0x82, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_84H, 0x88, 0x84, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_88H, 0x88, 0x88, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_90H, 0x88, 0x90, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_A0H, 0x88, 0xA0, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(88H_FFH, 0x88, 0xFF, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(89H_00H, 0x89, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(89H_01H, 0x89, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_02H, 0x89, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(89H_04H, 0x89, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_07H, 0x89, 0x07, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(89H_08H, 0x89, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_10H, 0x89, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_20H, 0x89, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_30H, 0x89, 0x30, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(89H_40H, 0x89, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_41H, 0x89, 0x41, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_7FH, 0x89, 0x7F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(89H_80H, 0x89, 0x80, IAP_F_FM | IAP_F_BW | IAP_F_BWX), - IAPDESCR(89H_81H, 0x89, 0x81, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_82H, 0x89, 0x82, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_84H, 0x89, 0x84, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_88H, 0x89, 0x88, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_90H, 0x89, 0x90, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_A0H, 0x89, 0xA0, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - IAPDESCR(89H_FFH, 0x89, 0xFF, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(8AH_00H, 0x8A, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(8BH_00H, 0x8B, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(8CH_00H, 0x8C, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(8DH_00H, 0x8D, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(8EH_00H, 0x8E, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(8FH_00H, 0x8F, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(90H_00H, 0x90, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(91H_00H, 0x91, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(92H_00H, 0x92, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(93H_00H, 0x93, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(94H_00H, 0x94, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - - IAPDESCR(97H_00H, 0x97, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(98H_00H, 0x98, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(9CH_01H, 0x9C, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(A0H_00H, 0xA0, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(A1H_01H, 0xA1, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_02H, 0xA1, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_04H, 0xA1, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | /* No desc in IB for this*/ - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_08H, 0xA1, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | /* No desc in IB for this*/ - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_0CH, 0xA1, 0x0C, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(A1H_10H, 0xA1, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | /* No desc in IB for this*/ - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_20H, 0xA1, 0x20, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | /* No desc in IB for this*/ - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_40H, 0xA1, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(A1H_80H, 0xA1, 0x80, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(A2H_00H, 0xA2, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(A2H_01H, 0xA2, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A2H_02H, 0xA2, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(A2H_04H, 0xA2, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(A2H_08H, 0xA2, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A2H_10H, 0xA2, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(A2H_20H, 0xA2, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(A2H_40H, 0xA2, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(A2H_80H, 0xA2, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX), - - IAPDESCR(A3H_01H, 0xA3, 0x01, IAP_F_FM | IAP_F_SBX | IAP_F_IBX | IAP_F_IB | - IAP_F_HW | IAP_F_HWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_02H, 0xA3, 0x02, IAP_F_FM | IAP_F_SBX | IAP_F_IBX | IAP_F_IB | - IAP_F_HW | IAP_F_HWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_04H, 0xA3, 0x04, IAP_F_FM | IAP_F_SBX | IAP_F_IBX | IAP_F_IB | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_05H, 0xA3, 0x05, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(A3H_06H, 0xA3, 0x06, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_08H, 0xA3, 0x08, IAP_F_FM | IAP_F_IBX | IAP_F_HW | IAP_F_IB | - IAP_F_HWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_0CH, 0xA3, 0x0C, IAP_F_FM | IAP_F_HW | IAP_F_HW | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(A3H_10H, 0xA3, 0x10, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A3H_14H, 0xA3, 0x14, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(A6H_01H, 0xA6, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(A6H_02H, 0xA6, 0x02, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A6H_04H, 0xA6, 0x04, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A6H_08H, 0xA6, 0x08, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A6H_10H, 0xA6, 0x10, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(A6H_40H, 0xA6, 0x40, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(A7H_01H, 0xA7, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM ), - - IAPDESCR(A8H_01H, 0xA8, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_IBX | - IAP_F_IB |IAP_F_SB | IAP_F_SBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(AAH_01H, 0xAA, 0x01, IAP_F_FM | IAP_F_CC2), - IAPDESCR(AAH_02H, 0xAA, 0x02, IAP_F_FM | IAP_F_CA), - IAPDESCR(AAH_03H, 0xAA, 0x03, IAP_F_FM | IAP_F_CA), - IAPDESCR(AAH_08H, 0xAA, 0x08, IAP_F_FM | IAP_F_CC2), - - IAPDESCR(ABH_01H, 0xAB, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(ABH_02H, 0xAB, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(ACH_02H, 0xAC, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_SL), - IAPDESCR(ACH_08H, 0xAC, 0x08, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(ACH_0AH, 0xAC, 0x0A, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - - IAPDESCR(AEH_01H, 0xAE, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(B0H_00H, 0xB0, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(B0H_01H, 0xB0, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(B0H_02H, 0xB0, 0x02, IAP_F_FM | IAP_F_WM | IAP_F_I7O | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(B0H_04H, 0xB0, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(B0H_08H, 0xB0, 0x08, IAP_F_FM | IAP_F_WM | IAP_F_I7O | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(B0H_10H, 0xB0, 0x10, IAP_F_FM | IAP_F_WM | IAP_F_I7O | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(B0H_20H, 0xB0, 0x20, IAP_F_FM | IAP_F_I7O), - IAPDESCR(B0H_40H, 0xB0, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B0H_80H, 0xB0, 0x80, IAP_F_FM | IAP_F_CA | IAP_F_WM | IAP_F_I7O | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(B1H_00H, 0xB1, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(B1H_01H, 0xB1, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(B1H_02H, 0xB1, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(B1H_04H, 0xB1, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_08H, 0xB1, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_10H, 0xB1, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(B1H_1FH, 0xB1, 0x1F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_20H, 0xB1, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_3FH, 0xB1, 0x3F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_40H, 0xB1, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B1H_80H, 0xB1, 0x80, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM), - - IAPDESCR(B2H_01H, 0xB2, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX | IAP_F_SL | IAP_F_SLX), - - IAPDESCR(B3H_01H, 0xB3, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_WM | IAP_F_I7O), - IAPDESCR(B3H_02H, 0xB3, 0x02, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_WM | IAP_F_I7O), - IAPDESCR(B3H_04H, 0xB3, 0x04, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_WM | IAP_F_I7O), - IAPDESCR(B3H_08H, 0xB3, 0x08, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(B3H_10H, 0xB3, 0x10, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(B3H_20H, 0xB3, 0x20, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(B3H_81H, 0xB3, 0x81, IAP_F_FM | IAP_F_CA), - IAPDESCR(B3H_82H, 0xB3, 0x82, IAP_F_FM | IAP_F_CA), - IAPDESCR(B3H_84H, 0xB3, 0x84, IAP_F_FM | IAP_F_CA), - IAPDESCR(B3H_88H, 0xB3, 0x88, IAP_F_FM | IAP_F_CA), - IAPDESCR(B3H_90H, 0xB3, 0x90, IAP_F_FM | IAP_F_CA), - IAPDESCR(B3H_A0H, 0xB3, 0xA0, IAP_F_FM | IAP_F_CA), - - IAPDESCR(B4H_01H, 0xB4, 0x01, IAP_F_FM | IAP_F_WM), - IAPDESCR(B4H_02H, 0xB4, 0x02, IAP_F_FM | IAP_F_WM), - IAPDESCR(B4H_04H, 0xB4, 0x04, IAP_F_FM | IAP_F_WM), - - IAPDESCR(B6H_01H, 0xB6, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(B6H_04H, 0xB6, 0x04, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(B7H_01H, 0xB7, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_CAS | - IAP_F_HWX |IAP_F_BW | IAP_F_BWX | IAP_F_SL), - IAPDESCR(B7H_02H, 0xB7, 0x02, IAP_F_CAS), - - IAPDESCR(B8H_01H, 0xB8, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B8H_02H, 0xB8, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(B8H_04H, 0xB8, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(BAH_01H, 0xBA, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(BAH_02H, 0xBA, 0x02, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(BBH_01H, 0xBB, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL), - - IAPDESCR(BCH_11H, 0xBC, 0x11, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_12H, 0xBC, 0x12, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_14H, 0xBC, 0x14, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_18H, 0xBC, 0x18, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_21H, 0xBC, 0x21, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_22H, 0xBC, 0x22, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_24H, 0xBC, 0x24, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(BCH_28H, 0xBC, 0x28, IAP_F_FM | IAP_F_HW | IAP_F_HWX), - - IAPDESCR(BDH_01H, 0xBD, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_SL | IAP_F_SLX), /* spec bug SL? */ - IAPDESCR(BDH_20H, 0xBD, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_SLX), - - IAPDESCR(BFH_05H, 0xBF, 0x05, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - - IAPDESCR(C0H_00H, 0xC0, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C0H_01H, 0xC0, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C0H_02H, 0xC0, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_BW | IAP_F_BWX), - IAPDESCR(C0H_04H, 0xC0, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(C0H_08H, 0xC0, 0x08, IAP_F_FM | IAP_F_CC2E), - - IAPDESCR(C1H_00H, 0xC1, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(C1H_01H, 0xC1, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(C1H_02H, 0xC1, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_SBX), - IAPDESCR(C1H_08H, 0xC1, 0x08, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(C1H_10H, 0xC1, 0x10, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(C1H_20H, 0xC1, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(C1H_3FH, 0xC1, 0x3F, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C1H_40H, 0xC1, 0x40, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(C1H_80H, 0xC1, 0x80, IAP_F_FM |IAP_F_IB | IAP_F_IBX), - IAPDESCR(C1H_FEH, 0xC1, 0xFE, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(C2H_00H, 0xC2, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(C2H_01H, 0xC2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C2H_02H, 0xC2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C2H_04H, 0xC2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(C2H_07H, 0xC2, 0x07, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(C2H_08H, 0xC2, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(C2H_0FH, 0xC2, 0x0F, IAP_F_FM | IAP_F_CC2), - IAPDESCR(C2H_10H, 0xC2, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CAS), - - IAPDESCR(C3H_00H, 0xC3, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(C3H_01H, 0xC3, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_CAS | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C3H_02H, 0xC3, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C3H_04H, 0xC3, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C3H_08H, 0xC3, 0x08, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C3H_10H, 0xC3, 0x10, IAP_F_FM | IAP_F_I7O), - IAPDESCR(C3H_20H, 0xC3, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - - IAPDESCR(C4H_00H, 0xC4, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C4H_01H, 0xC4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C4H_02H, 0xC4, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C4H_04H, 0xC4, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C4H_08H, 0xC4, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | - IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C4H_0CH, 0xC4, 0x0C, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(C4H_0FH, 0xC4, 0x0F, IAP_F_FM | IAP_F_CA), - IAPDESCR(C4H_10H, 0xC4, 0x10, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C4H_20H, 0xC4, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C4H_40H, 0xC4, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C4H_7EH, 0xC4, 0x7E, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_BFH, 0xC4, 0xBF, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_EBH, 0xC4, 0xEB, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_F7H, 0xC4, 0xF7, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_F9H, 0xC4, 0xF9, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_FBH, 0xC4, 0xFB, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_FDH, 0xC4, 0xFD, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C4H_FEH, 0xC4, 0xFE, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(C5H_00H, 0xC5, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(C5H_01H, 0xC5, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C5H_02H, 0xC5, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C5H_04H, 0xC5, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL), - IAPDESCR(C5H_10H, 0xC5, 0x10, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - IAPDESCR(C5H_20H, 0xC5, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C5H_7EH, 0xC5, 0x7E, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_BFH, 0xC5, 0xBF, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_EBH, 0xC5, 0xEB, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_F7H, 0xC5, 0xF7, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_F9H, 0xC5, 0xF9, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_FBH, 0xC5, 0xFB, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_FDH, 0xC5, 0xFD, IAP_F_FM | IAP_F_CAS), - IAPDESCR(C5H_FEH, 0xC5, 0xFE, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(C6H_00H, 0xC6, 0x00, IAP_F_FM | IAP_F_CC), - /* For SL C6_01 needs EV_SEL? 0x11, 0x12, 0x13, 0x14, 0x15? */ - IAPDESCR(C6H_01H, 0xC6, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(C6H_02H, 0xC6, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(C7H_00H, 0xC7, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(C7H_01H, 0xC7, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_02H, 0xC7, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_04H, 0xC7, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_08H, 0xC7, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_10H, 0xC7, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_1FH, 0xC7, 0x1F, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(C7H_20H, 0xC7, 0x20, IAP_F_FM | IAP_F_SL | IAP_F_SLX), - IAPDESCR(C7H_40H, 0xc7, 0x40, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C7H_80H, 0xc7, 0x80, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(C8H_00H, 0xC8, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(C8H_01H, 0xC8, 0x01, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_02H, 0xC8, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_04H, 0xC8, 0x04, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_08H, 0xC8, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_10H, 0xC8, 0x10, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_20H, 0xC8, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_SLX), - IAPDESCR(C8H_40H, 0xC8, 0x40, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C8H_80H, 0xC8, 0x80, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(C9H_00H, 0xC9, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(C9H_01H, 0xC9, 0x01, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_02H, 0xC9, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_04H, 0xC9, 0x04, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_08H, 0xC9, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_10H, 0xC9, 0x10, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_20H, 0xC9, 0x20, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_40H, 0xC9, 0x40, IAP_F_FM | IAP_F_SLX), - IAPDESCR(C9H_80H, 0xC9, 0x80, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(CAH_00H, 0xCA, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(CAH_01H, 0xCA, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_CAS), - IAPDESCR(CAH_02H, 0xCA, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(CAH_04H, 0xCA, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(CAH_08H, 0xCA, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(CAH_10H, 0xCA, 0x10, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(CAH_1EH, 0xCA, 0x1E, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - IAPDESCR(CAH_20H, 0xCA, 0x20, IAP_F_FM | IAP_F_CAS | IAP_F_BW | IAP_F_BWX), - IAPDESCR(CAH_3FH, 0xCA, 0x3F, IAP_F_FM | IAP_F_CAS), - IAPDESCR(CAH_50H, 0xCA, 0x50, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(CBH_01H, 0xCB, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_CAS | IAP_F_SL | IAP_F_SLX), - IAPDESCR(CBH_02H, 0xCB, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(CBH_04H, 0xCB, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(CBH_08H, 0xCB, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(CBH_10H, 0xCB, 0x10, IAP_F_FM | IAP_F_CC2 | IAP_F_I7 | - IAP_F_WM), - IAPDESCR(CBH_1FH, 0xCB, 0x1F, IAP_F_FM | IAP_F_CAS), - IAPDESCR(CBH_40H, 0xCB, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(CBH_80H, 0xCB, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(CCH_00H, 0xCC, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(CCH_01H, 0xCC, 0x01, IAP_F_FM | IAP_F_ALLCPUSCORE2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(CCH_02H, 0xCC, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(CCH_03H, 0xCC, 0x03, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(CCH_20H, 0xCC, 0x20, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SLX), - - IAPDESCR(CDH_00H, 0xCD, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(CDH_01H, 0xCD, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_CAS | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(CDH_02H, 0xCD, 0x02, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX), - - IAPDESCR(CEH_00H, 0xCE, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(CFH_00H, 0xCF, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - /* Sandy Bridge / Sandy Bridge Xeon - 11, 12, 21, 41, 42, 81, 82 */ - IAPDESCR(D0H_00H, 0xD0, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(D0H_01H, 0xD0, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(D0H_11H, 0xD0, 0x11, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D0H_12H, 0xD0, 0x12, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D0H_21H, 0xD0, 0x21, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D0H_41H, 0xD0, 0x41, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D0H_42H, 0xD0, 0x42, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D0H_81H, 0xD0, 0x81, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D0H_82H, 0xD0, 0x82, IAP_F_FM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - - IAPDESCR(D1H_01H, 0xD1, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_SB | - IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D1H_02H, 0xD1, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D1H_04H, 0xD1, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D1H_08H, 0xD1, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D1H_10H, 0xD1, 0x10, IAP_F_HW | IAP_F_IB | IAP_F_IBX | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D1H_20H, 0xD1, 0x20, IAP_F_FM | IAP_F_SBX | IAP_F_IBX | IAP_F_IB | - IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(D1H_40H, 0xD1, 0x40, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | - IAP_F_SL | IAP_F_SLX), - - IAPDESCR(D2H_01H, 0xD2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D2H_02H, 0xD2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D2H_04H, 0xD2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D2H_08H, 0xD2, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SL | - IAP_F_SLX), - IAPDESCR(D2H_0FH, 0xD2, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM | IAP_F_SB | IAP_F_SBX | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - - IAPDESCR(D2H_10H, 0xD2, 0x10, IAP_F_FM | IAP_F_CC2E), - - IAPDESCR(D3H_01H, 0xD3, 0x01, IAP_F_FM | IAP_F_IB | IAP_F_SBX | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX | IAP_F_SLX), - IAPDESCR(D3H_02H, 0xD3, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(D3H_03H, 0xD3, 0x03, IAP_F_FM | IAP_F_IBX), - IAPDESCR(D3H_04H, 0xD3, 0x04, IAP_F_FM | IAP_F_SBX | IAP_F_IBX | IAP_F_SLX), /* Not defined for IBX */ - IAPDESCR(D3H_08H, 0xD3, 0x08, IAP_F_FM | IAP_F_SLX), - IAPDESCR(D3H_0CH, 0xD3, 0x0C, IAP_F_FM | IAP_F_IBX), - IAPDESCR(D3H_10H, 0xD3, 0x10, IAP_F_FM | IAP_F_IBX ), - IAPDESCR(D3H_20H, 0xD3, 0x20, IAP_F_FM | IAP_F_IBX ), - - IAPDESCR(D4H_01H, 0xD4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(D4H_02H, 0xD4, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_SB | IAP_F_SBX), - IAPDESCR(D4H_04H, 0xD4, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_SLX), - IAPDESCR(D4H_08H, 0xD4, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(D4H_0FH, 0xD4, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(D5H_01H, 0xD5, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | - IAP_F_I7 | IAP_F_WM), - IAPDESCR(D5H_02H, 0xD5, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(D5H_04H, 0xD5, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(D5H_08H, 0xD5, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(D5H_0FH, 0xD5, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(D7H_00H, 0xD7, 0x00, IAP_F_FM | IAP_F_CC), - - IAPDESCR(D8H_00H, 0xD8, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(D8H_01H, 0xD8, 0x01, IAP_F_FM | IAP_F_CC), - IAPDESCR(D8H_02H, 0xD8, 0x02, IAP_F_FM | IAP_F_CC), - IAPDESCR(D8H_03H, 0xD8, 0x03, IAP_F_FM | IAP_F_CC), - IAPDESCR(D8H_04H, 0xD8, 0x04, IAP_F_FM | IAP_F_CC), - - IAPDESCR(D9H_00H, 0xD9, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(D9H_01H, 0xD9, 0x01, IAP_F_FM | IAP_F_CC), - IAPDESCR(D9H_02H, 0xD9, 0x02, IAP_F_FM | IAP_F_CC), - IAPDESCR(D9H_03H, 0xD9, 0x03, IAP_F_FM | IAP_F_CC), - - IAPDESCR(DAH_00H, 0xDA, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(DAH_01H, 0xDA, 0x01, IAP_F_FM | IAP_F_CC), - IAPDESCR(DAH_02H, 0xDA, 0x02, IAP_F_FM | IAP_F_CC), - - IAPDESCR(DBH_00H, 0xDB, 0x00, IAP_F_FM | IAP_F_CC), - IAPDESCR(DBH_01H, 0xDB, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(DCH_01H, 0xDC, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(DCH_02H, 0xDC, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(DCH_04H, 0xDC, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(DCH_08H, 0xDC, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(DCH_10H, 0xDC, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - IAPDESCR(DCH_1FH, 0xDC, 0x1F, IAP_F_FM | IAP_F_CA | IAP_F_CC2), - - IAPDESCR(E0H_00H, 0xE0, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2), - IAPDESCR(E0H_01H, 0xE0, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM), - - IAPDESCR(E2H_00H, 0xE2, 0x00, IAP_F_FM | IAP_F_CC), - - IAPDESCR(E4H_00H, 0xE4, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(E4H_01H, 0xE4, 0x01, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(E5H_01H, 0xE5, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(E6H_00H, 0xE6, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2), - IAPDESCR(E6H_01H, 0xE6, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7 | - IAP_F_WM | IAP_F_SBX | IAP_F_CAS | IAP_F_SL | IAP_F_SLX), - IAPDESCR(E6H_02H, 0xE6, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(E6H_08H, 0xE6, 0x08, IAP_F_FM | IAP_F_CAS), - IAPDESCR(E6H_10H, 0xE6, 0x10, IAP_F_FM | IAP_F_CAS), - IAPDESCR(E6H_1FH, 0xE6, 0x1F, IAP_F_FM | IAP_F_IB | - IAP_F_IBX | IAP_F_HW | IAP_F_HWX), - - IAPDESCR(E7H_01H, 0xE7, 0x01, IAP_F_FM | IAP_F_CAS), - - IAPDESCR(E8H_01H, 0xE8, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(E8H_02H, 0xE8, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - IAPDESCR(E8H_03H, 0xE8, 0x03, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(ECH_01H, 0xEC, 0x01, IAP_F_FM | IAP_F_WM), - - IAPDESCR(F0H_00H, 0xF0, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(F0H_01H, 0xF0, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_02H, 0xF0, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_04H, 0xF0, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_08H, 0xF0, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_10H, 0xF0, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_20H, 0xF0, 0x20, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F0H_40H, 0xF0, 0x40, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL | IAP_F_SLX), - IAPDESCR(F0H_80H, 0xF0, 0x80, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - - IAPDESCR(F1H_01H, 0xF1, 0x01, IAP_F_FM | IAP_F_SB | IAP_F_IB | - IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | IAP_F_BW | IAP_F_BWX), - IAPDESCR(F1H_02H, 0xF1, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX), - IAPDESCR(F1H_04H, 0xF1, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX ), - IAPDESCR(F1H_07H, 0xF1, 0x07, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_HW | IAP_F_HWX | - IAP_F_BW | IAP_F_BWX | IAP_F_SL), - IAPDESCR(F1H_1FH, 0xF1, 0x1f, IAP_F_FM | IAP_F_SLX), - - IAPDESCR(F2H_01H, 0xF2, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_SLX), - IAPDESCR(F2H_02H, 0xF2, 0x02, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_SLX), - IAPDESCR(F2H_04H, 0xF2, 0x04, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX | IAP_F_SLX), - IAPDESCR(F2H_05H, 0xF2, 0x05, IAP_F_FM | IAP_F_HW | IAP_F_HWX | IAP_F_BW | - IAP_F_BWX), - IAPDESCR(F2H_06H, 0xF2, 0x06, IAP_F_FM | IAP_F_HW | IAP_F_HWX), - IAPDESCR(F2H_08H, 0xF2, 0x08, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_IB | IAP_F_SBX | IAP_F_IBX), - IAPDESCR(F2H_0AH, 0xF2, 0x0A, IAP_F_FM | IAP_F_SB | IAP_F_SBX | - IAP_F_IBX), - IAPDESCR(F2H_0FH, 0xF2, 0x0F, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(F3H_01H, 0xF3, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F3H_02H, 0xF3, 0x02, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F3H_04H, 0xF3, 0x04, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F3H_08H, 0xF3, 0x08, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F3H_10H, 0xF3, 0x10, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F3H_20H, 0xF3, 0x20, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(F4H_01H, 0xF4, 0x01, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F4H_02H, 0xF4, 0x02, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F4H_04H, 0xF4, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7O), - IAPDESCR(F4H_08H, 0xF4, 0x08, IAP_F_FM | IAP_F_I7O), - IAPDESCR(F4H_10H, 0xF4, 0x10, IAP_F_FM | IAP_F_I7 | IAP_F_WM | - IAP_F_SB | IAP_F_SBX | IAP_F_SLX), - - IAPDESCR(F6H_01H, 0xF6, 0x01, IAP_F_FM | IAP_F_I7 | IAP_F_WM), - - IAPDESCR(F7H_01H, 0xF7, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(F7H_02H, 0xF7, 0x02, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(F7H_04H, 0xF7, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7), - - IAPDESCR(F8H_00H, 0xF8, 0x00, IAP_F_FM | IAP_F_ALLCPUSCORE2), - IAPDESCR(F8H_01H, 0xF8, 0x01, IAP_F_FM | IAP_F_I7O), - - IAPDESCR(FDH_01H, 0xFD, 0x01, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_02H, 0xFD, 0x02, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_04H, 0xFD, 0x04, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_08H, 0xFD, 0x08, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_10H, 0xFD, 0x10, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_20H, 0xFD, 0x20, IAP_F_FM | IAP_F_WM | IAP_F_I7), - IAPDESCR(FDH_40H, 0xFD, 0x40, IAP_F_FM | IAP_F_WM | IAP_F_I7), - - IAPDESCR(FEH_02H, 0xfe, 0x02, IAP_F_FM | IAP_F_SLX), - IAPDESCR(FEH_04H, 0xfe, 0x04, IAP_F_FM | IAP_F_SLX), -}; - static pmc_value_t iap_perfctr_value_to_reload_count(pmc_value_t v) { @@ -2039,91 +600,25 @@ iap_pmc_has_overflowed(int ri) return ((v & (1ULL << (core_iap_width - 1))) == 0); } -/* - * Check an event against the set of supported architectural events. - * - * If the event is not architectural EV_IS_NOTARCH is returned. - * If the event is architectural and supported on this CPU, the correct - * event+umask mapping is returned in map, and EV_IS_ARCH_SUPP is returned. - * Otherwise, the function returns EV_IS_ARCH_NOTSUPP. - */ - static int -iap_is_event_architectural(enum pmc_event pe, enum pmc_event *map) -{ - enum core_arch_events ae; - - switch (pe) { - case PMC_EV_IAP_ARCH_UNH_COR_CYC: - ae = CORE_AE_UNHALTED_CORE_CYCLES; - *map = PMC_EV_IAP_EVENT_3CH_00H; - break; - case PMC_EV_IAP_ARCH_INS_RET: - ae = CORE_AE_INSTRUCTION_RETIRED; - *map = PMC_EV_IAP_EVENT_C0H_00H; - break; - case PMC_EV_IAP_ARCH_UNH_REF_CYC: - ae = CORE_AE_UNHALTED_REFERENCE_CYCLES; - *map = PMC_EV_IAP_EVENT_3CH_01H; - break; - case PMC_EV_IAP_ARCH_LLC_REF: - ae = CORE_AE_LLC_REFERENCE; - *map = PMC_EV_IAP_EVENT_2EH_4FH; - break; - case PMC_EV_IAP_ARCH_LLC_MIS: - ae = CORE_AE_LLC_MISSES; - *map = PMC_EV_IAP_EVENT_2EH_41H; - break; - case PMC_EV_IAP_ARCH_BR_INS_RET: - ae = CORE_AE_BRANCH_INSTRUCTION_RETIRED; - *map = PMC_EV_IAP_EVENT_C4H_00H; - break; - case PMC_EV_IAP_ARCH_BR_MIS_RET: - ae = CORE_AE_BRANCH_MISSES_RETIRED; - *map = PMC_EV_IAP_EVENT_C5H_00H; - break; - - default: /* Non architectural event. */ - return (EV_IS_NOTARCH); - } - - return (((core_architectural_events & (1 << ae)) == 0) ? - EV_IS_ARCH_NOTSUPP : EV_IS_ARCH_SUPP); -} - -static int -iap_event_corei7_ok_on_counter(enum pmc_event pe, int ri) +iap_event_corei7_ok_on_counter(uint8_t evsel, int ri) { uint32_t mask; - switch (pe) { + switch (evsel) { /* * Events valid only on counter 0, 1. */ - case PMC_EV_IAP_EVENT_40H_01H: - case PMC_EV_IAP_EVENT_40H_02H: - case PMC_EV_IAP_EVENT_40H_04H: - case PMC_EV_IAP_EVENT_40H_08H: - case PMC_EV_IAP_EVENT_40H_0FH: - case PMC_EV_IAP_EVENT_41H_02H: - case PMC_EV_IAP_EVENT_41H_04H: - case PMC_EV_IAP_EVENT_41H_08H: - case PMC_EV_IAP_EVENT_42H_01H: - case PMC_EV_IAP_EVENT_42H_02H: - case PMC_EV_IAP_EVENT_42H_04H: - case PMC_EV_IAP_EVENT_42H_08H: - case PMC_EV_IAP_EVENT_43H_01H: - case PMC_EV_IAP_EVENT_43H_02H: - case PMC_EV_IAP_EVENT_51H_01H: - case PMC_EV_IAP_EVENT_51H_02H: - case PMC_EV_IAP_EVENT_51H_04H: - case PMC_EV_IAP_EVENT_51H_08H: - case PMC_EV_IAP_EVENT_63H_01H: - case PMC_EV_IAP_EVENT_63H_02H: - mask = 0x3; + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x51: + case 0x63: + mask = 0x3; break; - default: + default: mask = ~0; /* Any row index is ok. */ } @@ -2131,37 +626,26 @@ iap_event_corei7_ok_on_counter(enum pmc_event pe, int ri) } static int -iap_event_westmere_ok_on_counter(enum pmc_event pe, int ri) +iap_event_westmere_ok_on_counter(uint8_t evsel, int ri) { uint32_t mask; - switch (pe) { + switch (evsel) { /* * Events valid only on counter 0. */ - case PMC_EV_IAP_EVENT_60H_01H: - case PMC_EV_IAP_EVENT_60H_02H: - case PMC_EV_IAP_EVENT_60H_04H: - case PMC_EV_IAP_EVENT_60H_08H: - case PMC_EV_IAP_EVENT_B3H_01H: - case PMC_EV_IAP_EVENT_B3H_02H: - case PMC_EV_IAP_EVENT_B3H_04H: + case 0x60: + case 0xB3: mask = 0x1; break; /* * Events valid only on counter 0, 1. */ - case PMC_EV_IAP_EVENT_4CH_01H: - case PMC_EV_IAP_EVENT_4EH_01H: - case PMC_EV_IAP_EVENT_4EH_02H: - case PMC_EV_IAP_EVENT_4EH_04H: - case PMC_EV_IAP_EVENT_51H_01H: - case PMC_EV_IAP_EVENT_51H_02H: - case PMC_EV_IAP_EVENT_51H_04H: - case PMC_EV_IAP_EVENT_51H_08H: - case PMC_EV_IAP_EVENT_63H_01H: - case PMC_EV_IAP_EVENT_63H_02H: + case 0x4C: + case 0x4E: + case 0x51: + case 0x63: mask = 0x3; break; @@ -2173,29 +657,28 @@ iap_event_westmere_ok_on_counter(enum pmc_event pe, int ri) } static int -iap_event_sb_sbx_ib_ibx_ok_on_counter(enum pmc_event pe, int ri) +iap_event_sb_sbx_ib_ibx_ok_on_counter(uint8_t evsel, int ri) { uint32_t mask; - switch (pe) { + switch (evsel) { /* Events valid only on counter 0. */ - case PMC_EV_IAP_EVENT_B7H_01H: + case 0xB7: mask = 0x1; break; /* Events valid only on counter 1. */ - case PMC_EV_IAP_EVENT_C0H_01H: + case 0xC0: mask = 0x2; break; /* Events valid only on counter 2. */ - case PMC_EV_IAP_EVENT_48H_01H: - case PMC_EV_IAP_EVENT_A2H_02H: - case PMC_EV_IAP_EVENT_A3H_08H: + case 0x48: + case 0xA2: + case 0xA3: mask = 0x4; break; /* Events valid only on counter 3. */ - case PMC_EV_IAP_EVENT_BBH_01H: - case PMC_EV_IAP_EVENT_CDH_01H: - case PMC_EV_IAP_EVENT_CDH_02H: + case 0xBB: + case 0xCD: mask = 0x8; break; default: @@ -2206,32 +689,29 @@ iap_event_sb_sbx_ib_ibx_ok_on_counter(enum pmc_event pe, int ri) } static int -iap_event_ok_on_counter(enum pmc_event pe, int ri) +iap_event_ok_on_counter(uint8_t evsel, int ri) { uint32_t mask; - switch (pe) { + switch (evsel) { /* * Events valid only on counter 0. */ - case PMC_EV_IAP_EVENT_10H_00H: - case PMC_EV_IAP_EVENT_14H_00H: - case PMC_EV_IAP_EVENT_18H_00H: - case PMC_EV_IAP_EVENT_B3H_01H: - case PMC_EV_IAP_EVENT_B3H_02H: - case PMC_EV_IAP_EVENT_B3H_04H: - case PMC_EV_IAP_EVENT_C1H_00H: - case PMC_EV_IAP_EVENT_CBH_01H: - case PMC_EV_IAP_EVENT_CBH_02H: + case 0x10: + case 0x14: + case 0x18: + case 0xB3: + case 0xC1: + case 0xCB: mask = (1 << 0); break; /* * Events valid only on counter 1. */ - case PMC_EV_IAP_EVENT_11H_00H: - case PMC_EV_IAP_EVENT_12H_00H: - case PMC_EV_IAP_EVENT_13H_00H: + case 0x11: + case 0x12: + case 0x13: mask = (1 << 1); break; @@ -2246,10 +726,10 @@ static int iap_allocate_pmc(int cpu, int ri, struct pmc *pm, const struct pmc_op_pmcallocate *a) { - int arch, n, model; - enum pmc_event ev, map; - struct iap_event_descr *ie; - uint32_t c, caps, config, cpuflag, evsel, mask; + enum pmc_event map; + uint8_t ev; + uint32_t caps; + const struct pmc_md_iap_op_pmcallocate *iap; KASSERT(cpu >= 0 && cpu < pmc_cpu_max(), ("[core,%d] illegal CPU %d", __LINE__, cpu)); @@ -2261,23 +741,8 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm, if ((IAP_PMC_CAPS & caps) != caps) return (EPERM); map = 0; /* XXX: silent GCC warning */ - arch = iap_is_event_architectural(pm->pm_event, &map); - if (arch == EV_IS_ARCH_NOTSUPP) - return (EOPNOTSUPP); - else if (arch == EV_IS_ARCH_SUPP) - ev = map; - else - ev = pm->pm_event; - - /* - * A small number of events are not supported in all the - * processors based on a given microarchitecture. - */ - if (ev == PMC_EV_IAP_EVENT_0FH_01H || ev == PMC_EV_IAP_EVENT_0FH_80H) { - model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4); - if (core_cputype == PMC_CPU_INTEL_COREI7 && model != 0x2E) - return (EINVAL); - } + iap = &a->pm_md.pm_iap; + ev = IAP_EVSEL_GET(iap->pm_iap_config); switch (core_cputype) { case PMC_CPU_INTEL_COREI7: @@ -2308,197 +773,7 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm, return (EINVAL); } - /* - * Look for an event descriptor with matching CPU and event id - * fields. - */ - - switch (core_cputype) { - default: - case PMC_CPU_INTEL_ATOM: - cpuflag = IAP_F_CA; - break; - case PMC_CPU_INTEL_ATOM_SILVERMONT: - cpuflag = IAP_F_CAS; - break; - case PMC_CPU_INTEL_SKYLAKE_XEON: - cpuflag = IAP_F_SLX; - break; - case PMC_CPU_INTEL_SKYLAKE: - cpuflag = IAP_F_SL; - break; - case PMC_CPU_INTEL_BROADWELL_XEON: - cpuflag = IAP_F_BWX; - break; - case PMC_CPU_INTEL_BROADWELL: - cpuflag = IAP_F_BW; - break; - case PMC_CPU_INTEL_CORE: - cpuflag = IAP_F_CC; - break; - case PMC_CPU_INTEL_CORE2: - cpuflag = IAP_F_CC2; - break; - case PMC_CPU_INTEL_CORE2EXTREME: - cpuflag = IAP_F_CC2 | IAP_F_CC2E; - break; - case PMC_CPU_INTEL_COREI7: - cpuflag = IAP_F_I7; - break; - case PMC_CPU_INTEL_HASWELL: - cpuflag = IAP_F_HW; - break; - case PMC_CPU_INTEL_HASWELL_XEON: - cpuflag = IAP_F_HWX; - break; - case PMC_CPU_INTEL_IVYBRIDGE: - cpuflag = IAP_F_IB; - break; - case PMC_CPU_INTEL_IVYBRIDGE_XEON: - cpuflag = IAP_F_IBX; - break; - case PMC_CPU_INTEL_SANDYBRIDGE: - cpuflag = IAP_F_SB; - break; - case PMC_CPU_INTEL_SANDYBRIDGE_XEON: - cpuflag = IAP_F_SBX; - break; - case PMC_CPU_INTEL_WESTMERE: - cpuflag = IAP_F_WM; - break; - } - - for (n = 0, ie = iap_events; n < nitems(iap_events); n++, ie++) - if (ie->iap_ev == ev && ie->iap_flags & cpuflag) - break; - - if (n == nitems(iap_events)) - return (EINVAL); - - /* - * A matching event descriptor has been found, so start - * assembling the contents of the event select register. - */ - evsel = ie->iap_evcode; - - config = a->pm_md.pm_iap.pm_iap_config & ~IAP_F_CMASK; - - /* - * If the event uses a fixed umask value, reject any umask - * bits set by the user. - */ - if (ie->iap_flags & IAP_F_FM) { - - if (IAP_UMASK(config) != 0) - return (EINVAL); - - evsel |= (ie->iap_umask << 8); - - } else { - - /* - * Otherwise, the UMASK value needs to be taken from - * the MD fields of the allocation request. Reject - * requests that specify reserved bits. - */ - - mask = 0; - - if (ie->iap_umask & IAP_M_CORE) { - if ((c = (config & IAP_F_CORE)) != IAP_CORE_ALL && - c != IAP_CORE_THIS) - return (EINVAL); - mask |= IAP_F_CORE; - } - - if (ie->iap_umask & IAP_M_AGENT) - mask |= IAP_F_AGENT; - - if (ie->iap_umask & IAP_M_PREFETCH) { - - if ((c = (config & IAP_F_PREFETCH)) == - IAP_PREFETCH_RESERVED) - return (EINVAL); - - mask |= IAP_F_PREFETCH; - } - - if (ie->iap_umask & IAP_M_MESI) - mask |= IAP_F_MESI; - - if (ie->iap_umask & IAP_M_SNOOPRESPONSE) - mask |= IAP_F_SNOOPRESPONSE; - - if (ie->iap_umask & IAP_M_SNOOPTYPE) - mask |= IAP_F_SNOOPTYPE; - - if (ie->iap_umask & IAP_M_TRANSITION) - mask |= IAP_F_TRANSITION; - - /* - * If bits outside of the allowed set of umask bits - * are set, reject the request. - */ - if (config & ~mask) - return (EINVAL); - - evsel |= (config & mask); - - } - - /* - * Only Atom and SandyBridge CPUs support the 'ANY' qualifier. - */ - if (core_cputype == PMC_CPU_INTEL_ATOM || - core_cputype == PMC_CPU_INTEL_ATOM_SILVERMONT || - core_cputype == PMC_CPU_INTEL_SANDYBRIDGE || - core_cputype == PMC_CPU_INTEL_SANDYBRIDGE_XEON) - evsel |= (config & IAP_ANY); - else if (config & IAP_ANY) - return (EINVAL); - - /* - * Check offcore response configuration. - */ - if (a->pm_md.pm_iap.pm_iap_rsp != 0) { - if (ev != PMC_EV_IAP_EVENT_B7H_01H && - ev != PMC_EV_IAP_EVENT_BBH_01H) - return (EINVAL); - if (core_cputype == PMC_CPU_INTEL_COREI7 && - ev == PMC_EV_IAP_EVENT_BBH_01H) - return (EINVAL); - if ((core_cputype == PMC_CPU_INTEL_COREI7 || - core_cputype == PMC_CPU_INTEL_WESTMERE || - core_cputype == PMC_CPU_INTEL_NEHALEM_EX || - core_cputype == PMC_CPU_INTEL_WESTMERE_EX) && - a->pm_md.pm_iap.pm_iap_rsp & ~IA_OFFCORE_RSP_MASK_I7WM) - return (EINVAL); - else if ((core_cputype == PMC_CPU_INTEL_SANDYBRIDGE || - core_cputype == PMC_CPU_INTEL_SANDYBRIDGE_XEON || - core_cputype == PMC_CPU_INTEL_IVYBRIDGE || - core_cputype == PMC_CPU_INTEL_IVYBRIDGE_XEON) && - a->pm_md.pm_iap.pm_iap_rsp & ~IA_OFFCORE_RSP_MASK_SBIB) - return (EINVAL); - pm->pm_md.pm_iap.pm_iap_rsp = a->pm_md.pm_iap.pm_iap_rsp; - } - - if (caps & PMC_CAP_THRESHOLD) - evsel |= (a->pm_md.pm_iap.pm_iap_config & IAP_F_CMASK); - if (caps & PMC_CAP_USER) - evsel |= IAP_USR; - if (caps & PMC_CAP_SYSTEM) - evsel |= IAP_OS; - if ((caps & (PMC_CAP_USER | PMC_CAP_SYSTEM)) == 0) - evsel |= (IAP_OS | IAP_USR); - if (caps & PMC_CAP_EDGE) - evsel |= IAP_EDGE; - if (caps & PMC_CAP_INVERT) - evsel |= IAP_INV; - if (caps & PMC_CAP_INTERRUPT) - evsel |= IAP_INT; - - pm->pm_md.pm_iap.pm_iap_evsel = evsel; - + pm->pm_md.pm_iap.pm_iap_evsel = iap->pm_iap_config; return (0); } @@ -2642,11 +917,12 @@ iap_start_pmc(int cpu, int ri) cpu, ri, IAP_EVSEL0 + ri, evsel); /* Event specific configuration. */ - switch (pm->pm_event) { - case PMC_EV_IAP_EVENT_B7H_01H: + + switch (IAP_EVSEL_GET(evsel)) { + case 0xB7: wrmsr(IA_OFFCORE_RSP0, pm->pm_md.pm_iap.pm_iap_rsp); break; - case PMC_EV_IAP_EVENT_BBH_01H: + case 0xBB: wrmsr(IA_OFFCORE_RSP1, pm->pm_md.pm_iap.pm_iap_rsp); break; default: diff --git a/sys/dev/hwpmc/hwpmc_core.h b/sys/dev/hwpmc/hwpmc_core.h index d264318f8c25..9045318d6363 100644 --- a/sys/dev/hwpmc/hwpmc_core.h +++ b/sys/dev/hwpmc/hwpmc_core.h @@ -60,7 +60,7 @@ struct pmc_md_iap_op_pmcallocate { }; #define IAP_EVSEL(C) ((C) & 0xFF) -#define IAP_UMASK(C) ((C) & 0xFF00) +#define IAP_UMASK(C) (((C) & 0xFF) << 8) #define IAP_USR (1 << 16) #define IAP_OS (1 << 17) #define IAP_EDGE (1 << 18) @@ -70,6 +70,9 @@ struct pmc_md_iap_op_pmcallocate { #define IAP_INV (1 << 23) #define IAP_CMASK(C) (((C) & 0xFF) << 24) +#define IAP_EVSEL_GET(C) ((C) & 0xFF) +#define IAP_UMASK_GET(C) (((C) & 0xFF00) >> 8) + #define IA_OFFCORE_RSP_MASK_I7WM 0x000000F7FF #define IA_OFFCORE_RSP_MASK_SBIB 0x3F807F8FFF diff --git a/sys/dev/hwpmc/hwpmc_logging.c b/sys/dev/hwpmc/hwpmc_logging.c index 385ba8577a3a..3967e7a3e48c 100644 --- a/sys/dev/hwpmc/hwpmc_logging.c +++ b/sys/dev/hwpmc/hwpmc_logging.c @@ -183,25 +183,24 @@ static struct mtx pmc_kthread_mtx; /* sleep lock */ CTASSERT(sizeof(struct pmclog_callchain) == 8*4 + PMC_CALLCHAIN_DEPTH_MAX*sizeof(uintfptr_t)); -CTASSERT(sizeof(struct pmclog_closelog) == 3*4); -CTASSERT(sizeof(struct pmclog_dropnotify) == 3*4); +CTASSERT(sizeof(struct pmclog_closelog) == 4*4); +CTASSERT(sizeof(struct pmclog_dropnotify) == 4*4); CTASSERT(sizeof(struct pmclog_map_in) == PATH_MAX + 4*4 + sizeof(uintfptr_t)); CTASSERT(offsetof(struct pmclog_map_in,pl_pathname) == 4*4 + sizeof(uintfptr_t)); CTASSERT(sizeof(struct pmclog_map_out) == 4*4 + 2*sizeof(uintfptr_t)); -CTASSERT(sizeof(struct pmclog_pcsample) == 8*4 + sizeof(uintfptr_t)); CTASSERT(sizeof(struct pmclog_pmcallocate) == 6*4); -CTASSERT(sizeof(struct pmclog_pmcattach) == 5*4 + PATH_MAX); -CTASSERT(offsetof(struct pmclog_pmcattach,pl_pathname) == 5*4); -CTASSERT(sizeof(struct pmclog_pmcdetach) == 5*4); +CTASSERT(sizeof(struct pmclog_pmcattach) == 6*4 + PATH_MAX); +CTASSERT(offsetof(struct pmclog_pmcattach,pl_pathname) == 6*4); +CTASSERT(sizeof(struct pmclog_pmcdetach) == 6*4); CTASSERT(sizeof(struct pmclog_proccsw) == 6*4 + 8); -CTASSERT(sizeof(struct pmclog_procexec) == 5*4 + PATH_MAX + +CTASSERT(sizeof(struct pmclog_procexec) == 6*4 + PATH_MAX + sizeof(uintfptr_t)); -CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 5*4 + +CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 6*4 + sizeof(uintfptr_t)); -CTASSERT(sizeof(struct pmclog_procexit) == 5*4 + 8); -CTASSERT(sizeof(struct pmclog_procfork) == 5*4); +CTASSERT(sizeof(struct pmclog_procexit) == 6*4 + 8); +CTASSERT(sizeof(struct pmclog_procfork) == 6*4); CTASSERT(sizeof(struct pmclog_sysexit) == 4*4); CTASSERT(sizeof(struct pmclog_userdata) == 4*4); @@ -1012,6 +1011,7 @@ pmclog_process_pmcattach(struct pmc *pm, pid_t pid, char *path) PMCLOG_RESERVE(po, PMCATTACH, recordlen); PMCLOG_EMIT32(pm->pm_id); PMCLOG_EMIT32(pid); + PMCLOG_EMIT32(0); PMCLOG_EMITSTRING(path, pathlen); PMCLOG_DESPATCH_SYNC(po); } @@ -1069,8 +1069,9 @@ pmclog_process_procexec(struct pmc_owner *po, pmc_id_t pmid, pid_t pid, PMCLOG_RESERVE(po, PROCEXEC, recordlen); PMCLOG_EMIT32(pid); - PMCLOG_EMITADDR(startaddr); PMCLOG_EMIT32(pmid); + PMCLOG_EMIT32(0); + PMCLOG_EMITADDR(startaddr); PMCLOG_EMITSTRING(path,pathlen); PMCLOG_DESPATCH(po); } @@ -1093,8 +1094,9 @@ pmclog_process_procexit(struct pmc *pm, struct pmc_process *pp) PMCLOG_RESERVE(po, PROCEXIT, sizeof(struct pmclog_procexit)); PMCLOG_EMIT32(pm->pm_id); - PMCLOG_EMIT64(pp->pp_pmcs[ri].pp_pmcval); PMCLOG_EMIT32(pp->pp_proc->p_pid); + PMCLOG_EMIT32(0); + PMCLOG_EMIT64(pp->pp_pmcs[ri].pp_pmcval); PMCLOG_DESPATCH(po); } diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h index 64d10ab6f512..f43ade8f311a 100644 --- a/sys/sys/pmc.h +++ b/sys/sys/pmc.h @@ -61,7 +61,7 @@ * * The patch version is incremented for every bug fix. */ -#define PMC_VERSION_MAJOR 0x04 +#define PMC_VERSION_MAJOR 0x05 #define PMC_VERSION_MINOR 0x01 #define PMC_VERSION_PATCH 0x0000 diff --git a/sys/sys/pmclog.h b/sys/sys/pmclog.h index 7d34f0021d8e..e438bd70acd3 100644 --- a/sys/sys/pmclog.h +++ b/sys/sys/pmclog.h @@ -39,20 +39,19 @@ enum pmclog_type { /* V1 ABI */ - PMCLOG_TYPE_CLOSELOG, - PMCLOG_TYPE_DROPNOTIFY, - PMCLOG_TYPE_INITIALIZE, - PMCLOG_TYPE_MAPPINGCHANGE, /* unused in v1 */ - PMCLOG_TYPE_PCSAMPLE, - PMCLOG_TYPE_PMCALLOCATE, - PMCLOG_TYPE_PMCATTACH, - PMCLOG_TYPE_PMCDETACH, - PMCLOG_TYPE_PROCCSW, - PMCLOG_TYPE_PROCEXEC, - PMCLOG_TYPE_PROCEXIT, - PMCLOG_TYPE_PROCFORK, - PMCLOG_TYPE_SYSEXIT, - PMCLOG_TYPE_USERDATA, + PMCLOG_TYPE_CLOSELOG = 1, + PMCLOG_TYPE_DROPNOTIFY = 2, + PMCLOG_TYPE_INITIALIZE = 3, + PMCLOG_TYPE_MAPPINGCHANGE = 4, /* unused in v1 */ + PMCLOG_TYPE_PMCALLOCATE = 5, + PMCLOG_TYPE_PMCATTACH = 6, + PMCLOG_TYPE_PMCDETACH = 7, + PMCLOG_TYPE_PROCCSW = 8, + PMCLOG_TYPE_PROCEXEC = 9, + PMCLOG_TYPE_PROCEXIT = 10, + PMCLOG_TYPE_PROCFORK = 11, + PMCLOG_TYPE_SYSEXIT = 12, + PMCLOG_TYPE_USERDATA = 13, /* * V2 ABI * @@ -60,15 +59,15 @@ enum pmclog_type { * event type. The CALLCHAIN event type obsoletes the * PCSAMPLE event type. */ - PMCLOG_TYPE_MAP_IN, - PMCLOG_TYPE_MAP_OUT, - PMCLOG_TYPE_CALLCHAIN, + PMCLOG_TYPE_MAP_IN = 14, + PMCLOG_TYPE_MAP_OUT = 15, + PMCLOG_TYPE_CALLCHAIN = 16, /* * V3 ABI * * New variant of PMCLOG_TYPE_PMCALLOCATE for dynamic event. */ - PMCLOG_TYPE_PMCALLOCATEDYN + PMCLOG_TYPE_PMCALLOCATEDYN = 17 }; /* @@ -122,16 +121,19 @@ struct pmclog_callchain { struct pmclog_closelog { PMCLOG_ENTRY_HEADER + uint32_t pl_pad; }; struct pmclog_dropnotify { PMCLOG_ENTRY_HEADER + uint32_t pl_pad; }; struct pmclog_initialize { PMCLOG_ENTRY_HEADER uint32_t pl_version; /* driver version */ uint32_t pl_cpu; /* enum pmc_cputype */ + uint32_t pl_pad; } __packed; struct pmclog_map_in { @@ -148,16 +150,6 @@ struct pmclog_map_out { uintfptr_t pl_end; } __packed; -struct pmclog_pcsample { - PMCLOG_ENTRY_HEADER - uint32_t pl_pid; - uintfptr_t pl_pc; /* 8 byte aligned */ - uint32_t pl_pmcid; - uint32_t pl_usermode; - uint32_t pl_tid; - uint32_t pl_pad; -} __packed; - struct pmclog_pmcallocate { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; @@ -169,6 +161,7 @@ struct pmclog_pmcattach { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; uint32_t pl_pid; + uint32_t pl_pad; char pl_pathname[PATH_MAX]; } __packed; @@ -176,6 +169,7 @@ struct pmclog_pmcdetach { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; uint32_t pl_pid; + uint32_t pl_pad; } __packed; struct pmclog_proccsw { @@ -189,22 +183,25 @@ struct pmclog_proccsw { struct pmclog_procexec { PMCLOG_ENTRY_HEADER uint32_t pl_pid; - uintfptr_t pl_start; /* keep 8 byte aligned */ uint32_t pl_pmcid; + uint32_t pl_pad; + uintfptr_t pl_start; /* keep 8 byte aligned */ char pl_pathname[PATH_MAX]; } __packed; struct pmclog_procexit { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; - uint64_t pl_value; /* keep 8 byte aligned */ uint32_t pl_pid; + uint32_t pl_pad; + uint64_t pl_value; /* keep 8 byte aligned */ } __packed; struct pmclog_procfork { PMCLOG_ENTRY_HEADER uint32_t pl_oldpid; uint32_t pl_newpid; + uint32_t pl_pad; } __packed; struct pmclog_sysexit { @@ -232,7 +229,6 @@ union pmclog_entry { /* only used to size scratch areas */ struct pmclog_initialize pl_i; struct pmclog_map_in pl_mi; struct pmclog_map_out pl_mo; - struct pmclog_pcsample pl_s; struct pmclog_pmcallocate pl_a; struct pmclog_pmcallocatedyn pl_ad; struct pmclog_pmcattach pl_t; diff --git a/usr.sbin/pmcstat/pmcstat.8 b/usr.sbin/pmcstat/pmcstat.8 index fa68a39a1483..f6ff4fbb32cb 100644 --- a/usr.sbin/pmcstat/pmcstat.8 +++ b/usr.sbin/pmcstat/pmcstat.8 @@ -39,7 +39,7 @@ .Op Fl F Ar pathname .Op Fl G Ar pathname .Op Fl I -.Op Fl L Ar lwp +.Op Fl L .Op Fl M Ar mapfilename .Op Fl N .Op Fl O Ar logfilename @@ -47,6 +47,7 @@ .Op Fl R Ar logfilename .Op Fl S Ar event-spec .Op Fl T +.Op Fl U Ar event-spec .Op Fl W .Op Fl a Ar pathname .Op Fl c Ar cpu-spec @@ -54,6 +55,7 @@ .Op Fl e .Op Fl f Ar pluginopt .Op Fl g +.Op Fl i Ar lwp .Op Fl k Ar kerneldir .Op Fl l Ar secs .Op Fl m Ar pathname @@ -64,6 +66,7 @@ .Op Fl r Ar fsroot .Op Fl s Ar event-spec .Op Fl t Ar process-spec +.Op Fl u Ar event-spec .Op Fl v .Op Fl w Ar secs .Op Fl z Ar graphdepth @@ -159,13 +162,8 @@ this information is sent to the output file specified by the option. .It Fl I Skip symbol lookup and display address instead. -.It Fl L Ar lwp -Filter on thread ID -.Ar lwp , -which you can get from -.Xr ps 1 -.Fl o -.Li lwp . +.It Fl L +List all event names. .It Fl M Ar mapfilename Write the mapping between executable objects encountered in the event log and the abbreviated pathnames used for @@ -228,6 +226,8 @@ can be used: 'c+a' switch to accumulative mode, 'c+d' switch to delta mode, 'm' merge PMCs, 'n' change view, 'p' show next PMC, ' ' pause, 'q' quit. calltree only: 'f' cost under threshold is seen as a dot. +.It Fl U Ar event-spec +Provide long description of event. .It Fl W Toggle logging the incremental counts seen by the threads of a tracked process each time they are scheduled on a CPU. @@ -291,6 +291,13 @@ A separate profile file is generated for each executable object encountered. Profile files are placed in sub-directories named by their PMC event name. +.It Fl i Ar lwp +Filter on thread ID +.Ar lwp , +which you can get from +.Xr ps 1 +.Fl o +.Li lwp . .It Fl k Ar kerneldir Set the pathname of the kernel directory to argument .Ar kerneldir . @@ -363,6 +370,8 @@ Argument .Ar process-spec may be a non-negative integer denoting a specific process id, or a regular expression for selecting processes based on their command names. +.It Fl u Ar event-spec +Provide short description of event. .It Fl v Increase verbosity. .It Fl w Ar secs diff --git a/usr.sbin/pmcstat/pmcstat.c b/usr.sbin/pmcstat/pmcstat.c index 63716e0e5c0d..45b272b60b59 100644 --- a/usr.sbin/pmcstat/pmcstat.c +++ b/usr.sbin/pmcstat/pmcstat.c @@ -365,8 +365,8 @@ pmcstat_show_usage(void) "\t -F file\t write a system-wide callgraph (Kcachegrind format)" " to \"file\"\n" "\t -G file\t write a system-wide callgraph to \"file\"\n" - "\t -I don't resolve leaf function name, show address instead\n" - "\t -L lwp\t filter on thread id \"lwp\" in post-processing\n" + "\t -I\t\t don't resolve leaf function name, show address instead\n" + "\t -L\t\t list all counters available on this host\n" "\t -M file\t print executable/gmon file map to \"file\"\n" "\t -N\t\t (toggle) capture callchains\n" "\t -O file\t send log output to \"file\"\n" @@ -374,6 +374,7 @@ pmcstat_show_usage(void) "\t -R file\t read events from \"file\"\n" "\t -S spec\t allocate a system-wide sampling PMC\n" "\t -T\t\t start in top mode\n" + "\t -U spec \t provide long description of counters matching spec\n" "\t -W\t\t (toggle) show counts per context switch\n" "\t -a file\t print sampled PCs and callgraph to \"file\"\n" "\t -c cpu-list\t set cpus for subsequent system-wide PMCs\n" @@ -381,6 +382,7 @@ pmcstat_show_usage(void) "\t -e\t\t use wide history counter for gprof(1) output\n" "\t -f spec\t pass \"spec\" to as plugin option\n" "\t -g\t\t produce gprof(1) compatible profiles\n" + "\t -i lwp\t\t filter on thread id \"lwp\" in post-processing\n" "\t -k dir\t\t set the path to the kernel\n" "\t -l secs\t set duration time\n" "\t -m file\t print sampled PCs to \"file\"\n" @@ -392,6 +394,7 @@ pmcstat_show_usage(void) "\t -s spec\t allocate a system-wide counting PMC\n" "\t -t process-spec attach to running processes matching " "\"process-spec\"\n" + "\t -u spec \t provide short description of counters matching spec\n" "\t -v\t\t increase verbosity\n" "\t -w secs\t set printing time interval\n" "\t -z depth\t limit callchain display depth" @@ -429,14 +432,14 @@ main(int argc, char **argv) int option, npmc; int c, check_driver_stats; int do_callchain, do_descendants, do_logproccsw, do_logprocexit; - int do_print, do_read; + int do_print, do_read, do_listcounters, do_descr, do_long_descr; size_t len; int graphdepth; int pipefd[2], rfd; int use_cumulative_counts; short cf, cb; uint64_t current_sampling_count; - char *end, *tmp; + char *end, *tmp, *event; const char *errmsg, *graphfilename; enum pmcstat_state runstate; struct pmc_driverstats ds_start, ds_end; @@ -450,9 +453,12 @@ main(int argc, char **argv) check_driver_stats = 0; current_sampling_count = 0; do_callchain = 1; + do_descr = 0; do_descendants = 0; + do_long_descr = 0; do_logproccsw = 0; do_logprocexit = 0; + do_listcounters = 0; use_cumulative_counts = 0; graphfilename = "-"; args.pa_required = 0; @@ -503,7 +509,7 @@ main(int argc, char **argv) CPU_COPY(&rootmask, &cpumask); while ((option = getopt(argc, argv, - "CD:EF:G:IL:M:NO:P:R:S:TWa:c:def:gk:l:m:n:o:p:qr:s:t:vw:z:")) != -1) + "CD:EF:G:ILM:NO:P:R:S:TU:WZa:c:def:gi:k:l:m:n:o:p:qr:s:t:u:vw:z:")) != -1) switch (option) { case 'a': /* Annotate + callgraph */ args.pa_flags |= FLAG_DO_ANNOTATE; @@ -544,6 +550,12 @@ main(int argc, char **argv) args.pa_required |= FLAG_HAS_PROCESS_PMCS; break; + case 'E': /* log process exit */ + do_logprocexit = !do_logprocexit; + args.pa_required |= (FLAG_HAS_PROCESS_PMCS | + FLAG_HAS_COUNTING_PMCS | FLAG_HAS_OUTPUT_LOGFILE); + break; + case 'e': /* wide gprof metrics */ args.pa_flags |= FLAG_DO_WIDE_GPROF_HC; break; @@ -575,6 +587,11 @@ main(int argc, char **argv) case 'I': args.pa_flags |= FLAG_SKIP_TOP_FN_RES; break; + case 'i': + args.pa_flags |= FLAG_FILTER_THREAD_ID; + args.pa_tid = strtol(optarg, &end, 0); + break; + case 'k': /* pathname to the kernel */ free(args.pa_kernel); args.pa_kernel = strdup(optarg); @@ -585,9 +602,9 @@ main(int argc, char **argv) break; case 'L': - args.pa_flags |= FLAG_FILTER_THREAD_ID; - args.pa_tid = strtol(optarg, &end, 0); + do_listcounters = 1; break; + case 'l': /* time duration in seconds */ duration = strtod(optarg, &end); if (*end != '\0' || duration <= 0) @@ -603,12 +620,6 @@ main(int argc, char **argv) graphfilename = optarg; break; - case 'E': /* log process exit */ - do_logprocexit = !do_logprocexit; - args.pa_required |= (FLAG_HAS_PROCESS_PMCS | - FLAG_HAS_COUNTING_PMCS | FLAG_HAS_OUTPUT_LOGFILE); - break; - case 'M': /* mapfile */ args.pa_mapfilename = optarg; break; @@ -655,7 +666,7 @@ main(int argc, char **argv) errx(EX_SOFTWARE, "ERROR: Out of memory."); if (option == 'S' || option == 'P') - ev->ev_count = current_sampling_count ? current_sampling_count : pmcstat_pmu_sample_rate_get(ev->ev_spec); + ev->ev_count = current_sampling_count ? current_sampling_count : pmc_pmu_sample_rate_get(ev->ev_spec); else ev->ev_count = -1; @@ -760,6 +771,14 @@ main(int argc, char **argv) args.pa_printfile = stdout; break; + case 'u': + do_descr = 1; + event = optarg; + break; + case 'U': + do_long_descr = 1; + event = optarg; + break; case 'v': /* verbose */ args.pa_verbosity++; break; @@ -796,6 +815,18 @@ main(int argc, char **argv) break; } + if ((do_listcounters | do_descr | do_long_descr) && + pmc_pmu_enabled() == 0) + errx(EX_USAGE, "pmu features not supported on host or hwpmc not loaded"); + if (do_listcounters) { + pmc_pmu_print_counters(); + } else if (do_descr) { + pmc_pmu_print_counter_desc(event); + } else if (do_long_descr) { + pmc_pmu_print_counter_desc_long(event); + } + if (do_listcounters | do_descr | do_long_descr) + exit(0); args.pa_argc = (argc -= optind); args.pa_argv = (argv += optind); diff --git a/usr.sbin/pmcstat/pmcstat_log.c b/usr.sbin/pmcstat/pmcstat_log.c index cc3e9c49203f..5f88d274f393 100644 --- a/usr.sbin/pmcstat/pmcstat_log.c +++ b/usr.sbin/pmcstat/pmcstat_log.c @@ -423,13 +423,6 @@ pmcstat_print_log(void) (void *) ev.pl_u.pl_mo.pl_start, (void *) ev.pl_u.pl_mo.pl_end); break; - case PMCLOG_TYPE_PCSAMPLE: - PMCSTAT_PRINT_ENTRY("sample","0x%x %d %p %c", - ev.pl_u.pl_s.pl_pmcid, - ev.pl_u.pl_s.pl_pid, - (void *) ev.pl_u.pl_s.pl_pc, - ev.pl_u.pl_s.pl_usermode ? 'u' : 's'); - break; case PMCLOG_TYPE_PMCALLOCATE: PMCSTAT_PRINT_ENTRY("allocate","0x%x \"%s\" 0x%x", ev.pl_u.pl_a.pl_pmcid,