diff options
author | Matt Macy <mmacy@FreeBSD.org> | 2018-05-26 19:26:19 +0000 |
---|---|---|
committer | Matt Macy <mmacy@FreeBSD.org> | 2018-05-26 19:26:19 +0000 |
commit | 5506ceb87fa19140863b4e3ee978f631ccc4cf74 (patch) | |
tree | 895b12b3b0657b0b43d37103be78fac70a471522 | |
parent | 4928135658a9d0eaee37003df6137ab363fcb0b4 (diff) | |
download | src-5506ceb87fa19140863b4e3ee978f631ccc4cf74.tar.gz src-5506ceb87fa19140863b4e3ee978f631ccc4cf74.zip |
Revert r334242 "pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the"
because of squash commit messages
Notes
Notes:
svn path=/head/; revision=334243
-rw-r--r-- | Makefile.inc1 | 2 | ||||
-rw-r--r-- | lib/libpmc/Makefile | 24 | ||||
-rw-r--r-- | lib/libpmc/libpmc.c | 30 | ||||
-rw-r--r-- | lib/libpmc/libpmc_pmu_util.c | 333 | ||||
-rw-r--r-- | lib/libpmc/pmc.h | 8 | ||||
-rw-r--r-- | lib/libpmc/pmclog.3 | 7 | ||||
-rw-r--r-- | lib/libpmc/pmclog.c | 32 | ||||
-rw-r--r-- | lib/libpmc/pmclog.h | 1 | ||||
-rw-r--r-- | lib/libpmcstat/Makefile | 25 | ||||
-rw-r--r-- | lib/libpmcstat/libpmcstat.h | 2 | ||||
-rw-r--r-- | lib/libpmcstat/libpmcstat_logging.c | 43 | ||||
-rw-r--r-- | lib/libpmcstat/libpmcstat_pmu_util.c | 164 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/Makefile (renamed from lib/libpmc/pmu-events/Makefile) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/README (renamed from lib/libpmc/pmu-events/README) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/branch.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/branch.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/bus.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/bus.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/cache.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/memory.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/other.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json (renamed from lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/armv8-recommended.json (renamed from lib/libpmc/pmu-events/arch/arm64/armv8-recommended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json (renamed from lib/libpmc/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json (renamed from lib/libpmc/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/arm64/mapfile.csv (renamed from lib/libpmc/pmu-events/arch/arm64/mapfile.csv) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/mapfile.csv (renamed from lib/libpmc/pmu-events/arch/powerpc/mapfile.csv) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/cache.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/floating-point.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/frontend.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/marked.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/marked.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/memory.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/other.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/pipeline.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/pmc.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/pmc.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power8/translation.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power8/translation.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/cache.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/floating-point.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/frontend.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/marked.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/marked.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/memory.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/other.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/pipeline.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/pmc.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/pmc.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/powerpc/power9/translation.json (renamed from lib/libpmc/pmu-events/arch/powerpc/power9/translation.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z10/basic.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z10/basic.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z10/crypto.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z10/crypto.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z10/extended.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z10/extended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z13/basic.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z13/basic.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z13/crypto.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z13/crypto.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z13/extended.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z13/extended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z14/basic.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z14/basic.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z14/crypto.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z14/crypto.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z14/extended.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z14/extended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z196/basic.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z196/basic.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z196/crypto.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z196/crypto.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_z196/extended.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_z196/extended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_zec12/basic.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_zec12/basic.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_zec12/crypto.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_zec12/crypto.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/cf_zec12/extended.json (renamed from lib/libpmc/pmu-events/arch/s390/cf_zec12/extended.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/s390/mapfile.csv (renamed from lib/libpmc/pmu-events/arch/s390/mapfile.csv) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/other.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/bonnell/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/bonnell/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/bdw-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/bdw-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/other.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/uncore.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/uncore.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwell/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwell/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/bdwde-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/other.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-cache.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-power.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-power.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellde/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellde/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/bdx-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/bdx-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/other.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-cache.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-interconnect.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-interconnect.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-power.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-power.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/broadwellx/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/broadwellx/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/other.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmont/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmont/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/other.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/goldmontplus/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/goldmontplus/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/hsw-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/hsw-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/other.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/uncore.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/uncore.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswell/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/haswell/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/hsx-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/hsx-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/other.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-cache.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/uncore-cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-interconnect.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/uncore-interconnect.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-power.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/uncore-power.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/haswellx/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/haswellx/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/ivb-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/ivb-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/other.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/uncore.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/uncore.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivybridge/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/ivybridge/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/ivt-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/ivt-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/other.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-cache.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/uncore-cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-interconnect.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/uncore-interconnect.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-power.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/uncore-power.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/ivytown/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/ivytown/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/jkt-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/jkt-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/other.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-cache.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/uncore-cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-interconnect.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/uncore-interconnect.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-power.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/uncore-power.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/jaketown/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/jaketown/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/knightslanding/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/knightslanding/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/mapfile.csv (renamed from lib/libpmc/pmu-events/arch/x86/mapfile.csv) | 5 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/other.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemep/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemep/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/other.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/nehalemex/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/nehalemex/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/other.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/snb-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/snb-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/uncore.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/uncore.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/sandybridge/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/sandybridge/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/silvermont/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/silvermont/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/silvermont/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/silvermont/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/silvermont/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/silvermont/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/silvermont/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/silvermont/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/silvermont/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/silvermont/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/other.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/skl-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/uncore.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/uncore.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylake/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/skylake/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/other.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/skx-metrics.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/skx-metrics.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/uncore-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-other.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/uncore-other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/skylakex/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/skylakex/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/other.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-dp/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/other.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereep-sp/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/cache.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/cache.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/floating-point.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/floating-point.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/frontend.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/frontend.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/other.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/other.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/pipeline.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/pipeline.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/arch/x86/westmereex/virtual-memory.json (renamed from lib/libpmc/pmu-events/arch/x86/westmereex/virtual-memory.json) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/jevents.c (renamed from lib/libpmc/pmu-events/jevents.c) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/jevents.h (renamed from lib/libpmc/pmu-events/jevents.h) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/jsmn.c (renamed from lib/libpmc/pmu-events/jsmn.c) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/jsmn.h (renamed from lib/libpmc/pmu-events/jsmn.h) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/json.c (renamed from lib/libpmc/pmu-events/json.c) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/json.h (renamed from lib/libpmc/pmu-events/json.h) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/list.h (renamed from lib/libpmc/pmu-events/list.h) | 0 | ||||
-rw-r--r-- | lib/libpmcstat/pmu-events/pmu-events.h (renamed from lib/libpmc/pmu-events/pmu-events.h) | 0 | ||||
-rw-r--r-- | sys/dev/hwpmc/hwpmc_core.c | 1822 | ||||
-rw-r--r-- | sys/dev/hwpmc/hwpmc_core.h | 5 | ||||
-rw-r--r-- | sys/dev/hwpmc/hwpmc_logging.c | 26 | ||||
-rw-r--r-- | sys/sys/pmc.h | 2 | ||||
-rw-r--r-- | sys/sys/pmclog.h | 58 | ||||
-rw-r--r-- | usr.sbin/pmcstat/pmcstat.8 | 25 | ||||
-rw-r--r-- | usr.sbin/pmcstat/pmcstat.c | 59 | ||||
-rw-r--r-- | usr.sbin/pmcstat/pmcstat_log.c | 7 |
255 files changed, 2108 insertions, 572 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1 index 827838a0fa8d..970ba0248c0c 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2031,7 +2031,7 @@ _libmagic=lib/libmagic .endif .if ${MACHINE_CPUARCH} == "amd64" -_jevents=lib/libpmc/pmu-events +_jevents=lib/libpmcstat/pmu-events .endif # kernel-toolchain skips _cleanobj, so handle cleaning up previous diff --git a/lib/libpmc/Makefile b/lib/libpmc/Makefile index 6eb2ad6863d2..30510f6144b0 100644 --- a/lib/libpmc/Makefile +++ b/lib/libpmc/Makefile @@ -3,31 +3,9 @@ PACKAGE=lib${LIB} LIB= pmc -SRCS= libpmc.c pmclog.c libpmc_pmu_util.c +SRCS= libpmc.c pmclog.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 05fd84bc0b90..8b25768d33d1 100644 --- a/lib/libpmc/libpmc.c +++ b/lib/libpmc/libpmc.c @@ -2781,27 +2781,8 @@ 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) { - 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; + errno = EINVAL; + goto out; } /* replace an event alias with the canonical event specifier */ @@ -2852,8 +2833,15 @@ 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 deleted file mode 100644 index c2ac3b9e931a..000000000000 --- a/lib/libpmc/libpmc_pmu_util.c +++ /dev/null @@ -1,333 +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 <sys/types.h> -#include <sys/errno.h> -#include <sys/sysctl.h> -#include <stddef.h> -#include <stdlib.h> -#include <limits.h> -#include <string.h> -#include <pmc.h> -#include <pmclog.h> -#include <libpmcstat.h> -#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 3a72930b9e1d..5e4b89e4ea05 100644 --- a/lib/libpmc/pmc.h +++ b/lib/libpmc/pmc.h @@ -112,14 +112,6 @@ 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 d60e97085831..91c7222da7f2 100644 --- a/lib/libpmc/pmclog.3 +++ b/lib/libpmc/pmclog.3 @@ -82,14 +82,13 @@ 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; @@ -271,8 +270,8 @@ while (pmclog_read(parser, &ev) == 0) { case PMCLOG_TYPE_PROCCSW: --process a thread context switch record-- break; - case PMCLOG_TYPE_CALLCHAIN: - --process a callchain sample-- + case PMCLOG_TYPE_PCSAMPLE: + --process a PC sample-- break; --and so on-- } diff --git a/lib/libpmc/pmclog.c b/lib/libpmc/pmclog.c index 8e0504b290f2..dd91a68d864f 100644 --- a/lib/libpmc/pmclog.c +++ b/lib/libpmc/pmclog.c @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <strings.h> #include <unistd.h> -#include <stdio.h> #include <machine/pmc_mdep.h> @@ -279,7 +278,7 @@ pmclog_get_event(void *cookie, char **data, ssize_t *len, struct pmclog_ev *ev) { int evlen, pathlen; - uint32_t h, *le, npc, noop; + uint32_t h, *le, npc; enum pmclog_parser_state e; struct pmclog_parse_state *ps; @@ -289,7 +288,6 @@ 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; } @@ -303,7 +301,6 @@ 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; @@ -363,20 +360,21 @@ 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); - 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 = + if ((ev->pl_u.pl_a.pl_evname = _pmc_name_of_event(ev->pl_u.pl_a.pl_event, ps->ps_arch)) - == NULL) { - printf("unknown event\n"); + == NULL) goto error; - } break; case PMCLOG_TYPE_PMCALLOCATEDYN: PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_pmcid); @@ -403,16 +401,14 @@ 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_READ32(le,ev->pl_u.pl_x.pl_pmcid); - PMCLOG_READ32(le,noop); PMCLOG_READADDR(le,ev->pl_u.pl_x.pl_entryaddr); + PMCLOG_READ32(le,ev->pl_u.pl_x.pl_pmcid); 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_READ32(le,ev->pl_u.pl_e.pl_pid); - PMCLOG_READ32(le,noop); PMCLOG_READ64(le,ev->pl_u.pl_e.pl_value); + PMCLOG_READ32(le,ev->pl_u.pl_e.pl_pid); break; case PMCLOG_TYPE_PROCFORK: PMCLOG_READ32(le,ev->pl_u.pl_f.pl_oldpid); @@ -493,9 +489,8 @@ 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); @@ -503,6 +498,7 @@ 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 a6b4d84a1104..9f748b77d69a 100644 --- a/lib/libpmc/pmclog.h +++ b/lib/libpmc/pmclog.h @@ -158,6 +158,7 @@ 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/Makefile b/lib/libpmcstat/Makefile index 5becabb5c957..a20b14d174d4 100644 --- a/lib/libpmcstat/Makefile +++ b/lib/libpmcstat/Makefile @@ -9,7 +9,30 @@ SRCS= \ libpmcstat_logging.c \ libpmcstat_process.c \ libpmcstat_string.c \ - libpmcstat_symbol.c + libpmcstat_symbol.c \ + libpmcstat_pmu_util.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 <bsd.lib.mk> diff --git a/lib/libpmcstat/libpmcstat.h b/lib/libpmcstat/libpmcstat.h index 3f5f2689f6b3..77965b612e5c 100644 --- a/lib/libpmcstat/libpmcstat.h +++ b/lib/libpmcstat/libpmcstat.h @@ -382,6 +382,8 @@ 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 42054e636b4b..71ee524bbd8c 100644 --- a/lib/libpmcstat/libpmcstat_logging.c +++ b/lib/libpmcstat/libpmcstat_logging.c @@ -195,6 +195,7 @@ 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; @@ -267,6 +268,44 @@ 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; @@ -414,8 +453,8 @@ pmcstat_analyze_log(struct pmcstat_args *args, return (PMCSTAT_RUNNING); err(EX_DATAERR, - "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); + "ERROR: event parsing failed (record %jd, offset 0x%jx)", + (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 new file mode 100644 index 000000000000..915856f1998a --- /dev/null +++ b/lib/libpmcstat/libpmcstat_pmu_util.c @@ -0,0 +1,164 @@ +/*- + * 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 <sys/types.h> +#include <sys/errno.h> +#include <sys/sysctl.h> +#include <stddef.h> +#include <stdlib.h> +#include <limits.h> +#include <string.h> +#include <pmc.h> +#include <pmclog.h> +#include <libpmcstat.h> +#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/lib/libpmc/pmu-events/Makefile b/lib/libpmcstat/pmu-events/Makefile index 65582dba96c2..65582dba96c2 100644 --- a/lib/libpmc/pmu-events/Makefile +++ b/lib/libpmcstat/pmu-events/Makefile diff --git a/lib/libpmc/pmu-events/README b/lib/libpmcstat/pmu-events/README index e62b09b6a844..e62b09b6a844 100644 --- a/lib/libpmc/pmu-events/README +++ b/lib/libpmcstat/pmu-events/README diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/branch.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/branch.json index 0b0e6b26605b..0b0e6b26605b 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/branch.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/branch.json diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/bus.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/bus.json index ce33b2553277..ce33b2553277 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/bus.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/bus.json diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/cache.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/cache.json index 5dfbec43c9f9..5dfbec43c9f9 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/cache.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/cache.json diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/memory.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/memory.json index 25ae642ba381..25ae642ba381 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/memory.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/memory.json diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/other.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/other.json index 6cc6cbd7bf0b..6cc6cbd7bf0b 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/other.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/other.json diff --git a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json index f45a6b5d0025..f45a6b5d0025 100644 --- a/lib/libpmc/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/arm/cortex-a53/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/arm64/armv8-recommended.json b/lib/libpmcstat/pmu-events/arch/arm64/armv8-recommended.json index 6328828c018c..6328828c018c 100644 --- a/lib/libpmc/pmu-events/arch/arm64/armv8-recommended.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/armv8-recommended.json diff --git a/lib/libpmc/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json b/lib/libpmcstat/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json index bc03c06c3918..bc03c06c3918 100644 --- a/lib/libpmc/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json diff --git a/lib/libpmc/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json b/lib/libpmcstat/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json index 9f0f15d15f75..9f0f15d15f75 100644 --- a/lib/libpmc/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json +++ b/lib/libpmcstat/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json diff --git a/lib/libpmc/pmu-events/arch/arm64/mapfile.csv b/lib/libpmcstat/pmu-events/arch/arm64/mapfile.csv index f03e26ecb658..f03e26ecb658 100644 --- a/lib/libpmc/pmu-events/arch/arm64/mapfile.csv +++ b/lib/libpmcstat/pmu-events/arch/arm64/mapfile.csv diff --git a/lib/libpmc/pmu-events/arch/powerpc/mapfile.csv b/lib/libpmcstat/pmu-events/arch/powerpc/mapfile.csv index 229150e7ab7d..229150e7ab7d 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/mapfile.csv +++ b/lib/libpmcstat/pmu-events/arch/powerpc/mapfile.csv diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/cache.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/cache.json index 4a3daa6b4b96..4a3daa6b4b96 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/cache.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/cache.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/floating-point.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/floating-point.json index 5f1bb9fca40c..5f1bb9fca40c 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/frontend.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/frontend.json index 04c5f1b7bee1..04c5f1b7bee1 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/frontend.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/marked.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/marked.json index dcdcede3c3fe..dcdcede3c3fe 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/marked.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/marked.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/memory.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/memory.json index 87cdaadba7bd..87cdaadba7bd 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/memory.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/memory.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/other.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/other.json index 704302c3e67d..704302c3e67d 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/other.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/other.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/pipeline.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/pipeline.json index 293f3a4c6901..293f3a4c6901 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/pmc.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/pmc.json index 583e4d937621..583e4d937621 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/pmc.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/pmc.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power8/translation.json b/lib/libpmcstat/pmu-events/arch/powerpc/power8/translation.json index e47a55459bc8..e47a55459bc8 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power8/translation.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power8/translation.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/cache.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/cache.json index 851072105054..851072105054 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/cache.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/cache.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/floating-point.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/floating-point.json index 8a83bca26552..8a83bca26552 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/frontend.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/frontend.json index f9fa84b16fb5..f9fa84b16fb5 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/frontend.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/marked.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/marked.json index b1954c38bab1..b1954c38bab1 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/marked.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/marked.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/memory.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/memory.json index 2e2ebc700c74..2e2ebc700c74 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/memory.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/memory.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/other.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/other.json index 48cf4f920b3f..48cf4f920b3f 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/other.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/other.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/pipeline.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/pipeline.json index b4772f54a271..b4772f54a271 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/pmc.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/pmc.json index 8b3b0f3be664..8b3b0f3be664 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/pmc.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/pmc.json diff --git a/lib/libpmc/pmu-events/arch/powerpc/power9/translation.json b/lib/libpmcstat/pmu-events/arch/powerpc/power9/translation.json index b27642676244..b27642676244 100644 --- a/lib/libpmc/pmu-events/arch/powerpc/power9/translation.json +++ b/lib/libpmcstat/pmu-events/arch/powerpc/power9/translation.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z10/basic.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/basic.json index 8bf16759ca53..8bf16759ca53 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z10/basic.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/basic.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z10/crypto.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/crypto.json index 7e5b72492141..7e5b72492141 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z10/crypto.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/crypto.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z10/extended.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/extended.json index 0feedb40f30f..0feedb40f30f 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z10/extended.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z10/extended.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z13/basic.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/basic.json index 8bf16759ca53..8bf16759ca53 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z13/basic.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/basic.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z13/crypto.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/crypto.json index 7e5b72492141..7e5b72492141 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z13/crypto.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/crypto.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z13/extended.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/extended.json index 9a002b6967f1..9a002b6967f1 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z13/extended.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z13/extended.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z14/basic.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/basic.json index 8f653c9d899d..8f653c9d899d 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z14/basic.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/basic.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z14/crypto.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/crypto.json index 7e5b72492141..7e5b72492141 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z14/crypto.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/crypto.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z14/extended.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/extended.json index aa4dfb46b65b..aa4dfb46b65b 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z14/extended.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z14/extended.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z196/basic.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/basic.json index 8bf16759ca53..8bf16759ca53 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z196/basic.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/basic.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z196/crypto.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/crypto.json index 7e5b72492141..7e5b72492141 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z196/crypto.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/crypto.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_z196/extended.json b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/extended.json index b6d7fec7c2e7..b6d7fec7c2e7 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_z196/extended.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_z196/extended.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_zec12/basic.json b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/basic.json index 8bf16759ca53..8bf16759ca53 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_zec12/basic.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/basic.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_zec12/crypto.json b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/crypto.json index 7e5b72492141..7e5b72492141 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_zec12/crypto.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/crypto.json diff --git a/lib/libpmc/pmu-events/arch/s390/cf_zec12/extended.json b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/extended.json index 8682126aabb2..8682126aabb2 100644 --- a/lib/libpmc/pmu-events/arch/s390/cf_zec12/extended.json +++ b/lib/libpmcstat/pmu-events/arch/s390/cf_zec12/extended.json diff --git a/lib/libpmc/pmu-events/arch/s390/mapfile.csv b/lib/libpmcstat/pmu-events/arch/s390/mapfile.csv index ca7682748a4b..ca7682748a4b 100644 --- a/lib/libpmc/pmu-events/arch/s390/mapfile.csv +++ b/lib/libpmcstat/pmu-events/arch/s390/mapfile.csv diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/cache.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/cache.json index ffab90c5891c..ffab90c5891c 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/floating-point.json index f0e090cdb9f0..f0e090cdb9f0 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/frontend.json index 935b7dcf067d..935b7dcf067d 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/memory.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/memory.json index 3ae843b20c8a..3ae843b20c8a 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/other.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/other.json index 4bc1c582d1cd..4bc1c582d1cd 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/pipeline.json index b2e681c78466..b2e681c78466 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/bonnell/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/bonnell/virtual-memory.json index 7bb817588721..7bb817588721 100644 --- a/lib/libpmc/pmu-events/arch/x86/bonnell/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/bonnell/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/bdw-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/bdw-metrics.json index 00bfdb5c5acb..00bfdb5c5acb 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/bdw-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/bdw-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/cache.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/cache.json index bba3152ec54a..bba3152ec54a 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/floating-point.json index 689d478dae93..689d478dae93 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/frontend.json index 7142c76d7f11..7142c76d7f11 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/memory.json index c9154cebbdf0..c9154cebbdf0 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/other.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/other.json index 4f829c5febbe..4f829c5febbe 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/pipeline.json index 97c5d0784c6c..97c5d0784c6c 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/uncore.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/uncore.json index 28e1e159a3cb..28e1e159a3cb 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/uncore.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/uncore.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwell/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwell/virtual-memory.json index 2a015e4c7e21..2a015e4c7e21 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwell/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwell/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/bdwde-metrics.json index 49c5f123d811..49c5f123d811 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/bdwde-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/bdwde-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/cache.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/cache.json index bf243fe2a0ec..bf243fe2a0ec 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/floating-point.json index d7b9d9c9c518..d7b9d9c9c518 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/frontend.json index 72781e1e3362..72781e1e3362 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/memory.json index e44f73c24ac8..e44f73c24ac8 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/other.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/other.json index 4475249ea9da..4475249ea9da 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/pipeline.json index 920c89da9111..920c89da9111 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-cache.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-cache.json index 58ed6d33d1f4..58ed6d33d1f4 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-memory.json index f4b0745cdbbf..f4b0745cdbbf 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-power.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-power.json index dd1b95655d1d..dd1b95655d1d 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/uncore-power.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/uncore-power.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellde/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/virtual-memory.json index 7d79c707c6d1..7d79c707c6d1 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellde/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellde/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/bdx-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/bdx-metrics.json index 5a7f1ec24200..5a7f1ec24200 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/bdx-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/bdx-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/cache.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/cache.json index bf0c51272068..bf0c51272068 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/floating-point.json index d7b9d9c9c518..d7b9d9c9c518 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/frontend.json index 72781e1e3362..72781e1e3362 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/memory.json index d79a5cfea44b..d79a5cfea44b 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/other.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/other.json index 4475249ea9da..4475249ea9da 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/pipeline.json index 920c89da9111..920c89da9111 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-cache.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-cache.json index 58ed6d33d1f4..58ed6d33d1f4 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-interconnect.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-interconnect.json index 824961318c1e..824961318c1e 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-interconnect.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-interconnect.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-memory.json index 66eed399724c..66eed399724c 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-power.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-power.json index dd1b95655d1d..dd1b95655d1d 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/uncore-power.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/uncore-power.json diff --git a/lib/libpmc/pmu-events/arch/x86/broadwellx/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/virtual-memory.json index 7d79c707c6d1..7d79c707c6d1 100644 --- a/lib/libpmc/pmu-events/arch/x86/broadwellx/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/broadwellx/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/cache.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/cache.json index f8bbe087b0f8..f8bbe087b0f8 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/frontend.json index 9ba08518649e..9ba08518649e 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/memory.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/memory.json index 690cebd12a94..690cebd12a94 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/other.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/other.json index 959cadd7cb0e..959cadd7cb0e 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/pipeline.json index 254788af8ab6..254788af8ab6 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmont/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/goldmont/virtual-memory.json index 9805198d3f5f..9805198d3f5f 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmont/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmont/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/cache.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/cache.json index b4791b443a66..b4791b443a66 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/frontend.json index a7878965ceab..a7878965ceab 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/memory.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/memory.json index 91e0815f3ffb..91e0815f3ffb 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/other.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/other.json index b860374418ab..b860374418ab 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/pipeline.json index ccf1aed69197..ccf1aed69197 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/goldmontplus/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/virtual-memory.json index 0b53a3b0dfb8..0b53a3b0dfb8 100644 --- a/lib/libpmc/pmu-events/arch/x86/goldmontplus/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/goldmontplus/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/cache.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/cache.json index da4d6ddd4f92..da4d6ddd4f92 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/floating-point.json index f9843e5a9b42..f9843e5a9b42 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/frontend.json index c0a5bedcc15c..c0a5bedcc15c 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/hsw-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/hsw-metrics.json index 5ab5c78fe580..5ab5c78fe580 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/hsw-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/hsw-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/memory.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/memory.json index e5f9fa6655b3..e5f9fa6655b3 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/other.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/other.json index 8a4d898d76c1..8a4d898d76c1 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/pipeline.json index a4dcfce4a512..a4dcfce4a512 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/uncore.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/uncore.json index 3ef5c21fef56..3ef5c21fef56 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/uncore.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/uncore.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswell/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/haswell/virtual-memory.json index 777b500a5c9f..777b500a5c9f 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswell/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswell/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/cache.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/cache.json index b2fbd617306a..b2fbd617306a 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/floating-point.json index bc08cc1f2f7e..bc08cc1f2f7e 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/frontend.json index a4d9f1fcf940..a4d9f1fcf940 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/hsx-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/hsx-metrics.json index 5ab5c78fe580..5ab5c78fe580 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/hsx-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/hsx-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/memory.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/memory.json index 56b0f24b8029..56b0f24b8029 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/other.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/other.json index 800e65df31bc..800e65df31bc 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/pipeline.json index 8a18bfe9e3e4..8a18bfe9e3e4 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-cache.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-cache.json index 58ed6d33d1f4..58ed6d33d1f4 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-interconnect.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-interconnect.json index 824961318c1e..824961318c1e 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-interconnect.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-interconnect.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-memory.json index 66eed399724c..66eed399724c 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-power.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-power.json index dd1b95655d1d..dd1b95655d1d 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/uncore-power.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/uncore-power.json diff --git a/lib/libpmc/pmu-events/arch/x86/haswellx/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/haswellx/virtual-memory.json index 168df552b1a8..168df552b1a8 100644 --- a/lib/libpmc/pmu-events/arch/x86/haswellx/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/haswellx/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/cache.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/cache.json index 999a01bc6467..999a01bc6467 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/floating-point.json index 950b62c0908e..950b62c0908e 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/frontend.json index efaa949ead31..efaa949ead31 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/ivb-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/ivb-metrics.json index 7c2679514efb..7c2679514efb 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/ivb-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/ivb-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/memory.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/memory.json index a74d54f56192..a74d54f56192 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/other.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/other.json index 4eb83ee40412..4eb83ee40412 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/pipeline.json index 0afbfd95ea30..0afbfd95ea30 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/uncore.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/uncore.json index 42c70eed05a2..42c70eed05a2 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/uncore.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/uncore.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivybridge/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/virtual-memory.json index f243551b4d12..f243551b4d12 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivybridge/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivybridge/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/cache.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/cache.json index 6dad3ad6b102..6dad3ad6b102 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/floating-point.json index 950b62c0908e..950b62c0908e 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/frontend.json index efaa949ead31..efaa949ead31 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/ivt-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/ivt-metrics.json index 7c2679514efb..7c2679514efb 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/ivt-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/ivt-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/memory.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/memory.json index 3a7b86af8816..3a7b86af8816 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/other.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/other.json index 4eb83ee40412..4eb83ee40412 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/pipeline.json index 0afbfd95ea30..0afbfd95ea30 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-cache.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-cache.json index 267410594833..267410594833 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-interconnect.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-interconnect.json index b798a860bc81..b798a860bc81 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-interconnect.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-interconnect.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-memory.json index df4b43294fa0..df4b43294fa0 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-power.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-power.json index d40498f2cb1e..d40498f2cb1e 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/uncore-power.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/uncore-power.json diff --git a/lib/libpmc/pmu-events/arch/x86/ivytown/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/ivytown/virtual-memory.json index 4645e9d3f460..4645e9d3f460 100644 --- a/lib/libpmc/pmu-events/arch/x86/ivytown/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/ivytown/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/cache.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/cache.json index f723e8f7bb09..f723e8f7bb09 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/floating-point.json index 982eda48785e..982eda48785e 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/frontend.json index 1b7b1dd36c68..1b7b1dd36c68 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/jkt-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/jkt-metrics.json index fd7d7c438226..fd7d7c438226 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/jkt-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/jkt-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/memory.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/memory.json index 27e636428f4f..27e636428f4f 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/other.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/other.json index 64b195b82c50..64b195b82c50 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/pipeline.json index 8a597e45ed84..8a597e45ed84 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-cache.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-cache.json index 3fa61d962607..3fa61d962607 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-interconnect.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-interconnect.json index 1b53c0e609e3..1b53c0e609e3 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-interconnect.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-interconnect.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-memory.json index 8551cebeba23..8551cebeba23 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-power.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-power.json index 16034bfd06dd..16034bfd06dd 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/uncore-power.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/uncore-power.json diff --git a/lib/libpmc/pmu-events/arch/x86/jaketown/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/jaketown/virtual-memory.json index a654ab771fce..a654ab771fce 100644 --- a/lib/libpmc/pmu-events/arch/x86/jaketown/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/jaketown/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/cache.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/cache.json index 88ba5994b994..88ba5994b994 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/frontend.json index 6d38636689a4..6d38636689a4 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/memory.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/memory.json index 700652566200..700652566200 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/pipeline.json index bb5494cfb5ae..bb5494cfb5ae 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/uncore-memory.json index e3bcd86c4f56..e3bcd86c4f56 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/knightslanding/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/virtual-memory.json index f31594507f8c..f31594507f8c 100644 --- a/lib/libpmc/pmu-events/arch/x86/knightslanding/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/knightslanding/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/mapfile.csv b/lib/libpmcstat/pmu-events/arch/x86/mapfile.csv index fe1a2c47cabf..93656f2fd53a 100644 --- a/lib/libpmc/pmu-events/arch/x86/mapfile.csv +++ b/lib/libpmcstat/pmu-events/arch/x86/mapfile.csv @@ -23,10 +23,7 @@ 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-4E,v24,skylake,core -GenuineIntel-6-5E,v24,skylake,core -GenuineIntel-6-8E,v24,skylake,core -GenuineIntel-6-9E,v24,skylake,core +GenuineIntel-6-[4589]E,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/libpmc/pmu-events/arch/x86/nehalemep/cache.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/cache.json index a11029efda2f..a11029efda2f 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/floating-point.json index 7d2f71a9dee3..7d2f71a9dee3 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/frontend.json index e5e21e03444d..e5e21e03444d 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/memory.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/memory.json index f914a4525b65..f914a4525b65 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/other.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/other.json index af0860622445..af0860622445 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/pipeline.json index 41006ddcd893..41006ddcd893 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemep/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/virtual-memory.json index 0596094e0ee9..0596094e0ee9 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemep/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemep/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/cache.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/cache.json index 21a0f8fd057e..21a0f8fd057e 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/floating-point.json index 7d2f71a9dee3..7d2f71a9dee3 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/frontend.json index e5e21e03444d..e5e21e03444d 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/memory.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/memory.json index f914a4525b65..f914a4525b65 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/other.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/other.json index af0860622445..af0860622445 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/pipeline.json index 41006ddcd893..41006ddcd893 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/nehalemex/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/virtual-memory.json index 0596094e0ee9..0596094e0ee9 100644 --- a/lib/libpmc/pmu-events/arch/x86/nehalemex/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/nehalemex/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/cache.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/cache.json index bef73c499f83..bef73c499f83 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/floating-point.json index 982eda48785e..982eda48785e 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/frontend.json index 1b7b1dd36c68..1b7b1dd36c68 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/memory.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/memory.json index e6dfa89d00f3..e6dfa89d00f3 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/other.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/other.json index 64b195b82c50..64b195b82c50 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/pipeline.json index 8a597e45ed84..8a597e45ed84 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/snb-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/snb-metrics.json index fd7d7c438226..fd7d7c438226 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/snb-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/snb-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/uncore.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/uncore.json index 42c70eed05a2..42c70eed05a2 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/uncore.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/uncore.json diff --git a/lib/libpmc/pmu-events/arch/x86/sandybridge/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/virtual-memory.json index a654ab771fce..a654ab771fce 100644 --- a/lib/libpmc/pmu-events/arch/x86/sandybridge/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/sandybridge/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/silvermont/cache.json b/lib/libpmcstat/pmu-events/arch/x86/silvermont/cache.json index 82be7d1b8b81..82be7d1b8b81 100644 --- a/lib/libpmc/pmu-events/arch/x86/silvermont/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/silvermont/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/silvermont/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/silvermont/frontend.json index 204473badf5a..204473badf5a 100644 --- a/lib/libpmc/pmu-events/arch/x86/silvermont/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/silvermont/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/silvermont/memory.json b/lib/libpmcstat/pmu-events/arch/x86/silvermont/memory.json index d72e09a5f929..d72e09a5f929 100644 --- a/lib/libpmc/pmu-events/arch/x86/silvermont/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/silvermont/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/silvermont/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/silvermont/pipeline.json index 7468af99190a..7468af99190a 100644 --- a/lib/libpmc/pmu-events/arch/x86/silvermont/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/silvermont/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/silvermont/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/silvermont/virtual-memory.json index ad31479f8f60..ad31479f8f60 100644 --- a/lib/libpmc/pmu-events/arch/x86/silvermont/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/silvermont/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/cache.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/cache.json index 54bfe9e4045c..54bfe9e4045c 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/floating-point.json index 213dd6230cf2..213dd6230cf2 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/frontend.json index 578dff5bd823..578dff5bd823 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/memory.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/memory.json index 3bd8b712c889..3bd8b712c889 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/other.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/other.json index 84a316d380ac..84a316d380ac 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/pipeline.json index bc6d2afbcd8a..bc6d2afbcd8a 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/skl-metrics.json index 36c903faed0b..36c903faed0b 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/skl-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/uncore.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/uncore.json index dbc193252fb3..dbc193252fb3 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/uncore.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/uncore.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylake/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/skylake/virtual-memory.json index 2bcba7daca14..2bcba7daca14 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylake/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylake/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/cache.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/cache.json index 5c9940866acd..5c9940866acd 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/floating-point.json index 286ed1a37ec9..286ed1a37ec9 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/frontend.json index 403a4f89e9b2..403a4f89e9b2 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/memory.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/memory.json index e7f1aa31226d..e7f1aa31226d 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/other.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/other.json index 778a541463eb..778a541463eb 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/pipeline.json index f99f7ae27820..f99f7ae27820 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/skx-metrics.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/skx-metrics.json index 36c903faed0b..36c903faed0b 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/skx-metrics.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/skx-metrics.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-memory.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-memory.json index 9c7e5f8beee2..9c7e5f8beee2 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-other.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-other.json index de6e70e552e2..de6e70e552e2 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/uncore-other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/uncore-other.json diff --git a/lib/libpmc/pmu-events/arch/x86/skylakex/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/skylakex/virtual-memory.json index 7f466c97e485..7f466c97e485 100644 --- a/lib/libpmc/pmu-events/arch/x86/skylakex/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/skylakex/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/cache.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/cache.json index 6e61ae20d01a..6e61ae20d01a 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/floating-point.json index 7d2f71a9dee3..7d2f71a9dee3 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/frontend.json index e5e21e03444d..e5e21e03444d 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/memory.json index 6e0829b7617f..6e0829b7617f 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/other.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/other.json index 85133d6a5ce0..85133d6a5ce0 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/pipeline.json index f130510f7616..f130510f7616 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/virtual-memory.json index 57b53562e2bd..57b53562e2bd 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-dp/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-dp/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/cache.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/cache.json index dad20f0e3cac..dad20f0e3cac 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/floating-point.json index 7d2f71a9dee3..7d2f71a9dee3 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/frontend.json index e5e21e03444d..e5e21e03444d 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/memory.json index 90eb6aac357b..90eb6aac357b 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/other.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/other.json index 85133d6a5ce0..85133d6a5ce0 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/pipeline.json index f130510f7616..f130510f7616 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/virtual-memory.json index 2153b3f5d7b0..2153b3f5d7b0 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereep-sp/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereep-sp/virtual-memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/cache.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/cache.json index f9bc7fdd48d6..f9bc7fdd48d6 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/cache.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/cache.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/floating-point.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/floating-point.json index 7d2f71a9dee3..7d2f71a9dee3 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/floating-point.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/floating-point.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/frontend.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/frontend.json index e5e21e03444d..e5e21e03444d 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/frontend.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/frontend.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/memory.json index 3ba555e73cbd..3ba555e73cbd 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/memory.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/other.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/other.json index 85133d6a5ce0..85133d6a5ce0 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/other.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/other.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/pipeline.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/pipeline.json index 799c57d94c39..799c57d94c39 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/pipeline.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/pipeline.json diff --git a/lib/libpmc/pmu-events/arch/x86/westmereex/virtual-memory.json b/lib/libpmcstat/pmu-events/arch/x86/westmereex/virtual-memory.json index ad989207e8f8..ad989207e8f8 100644 --- a/lib/libpmc/pmu-events/arch/x86/westmereex/virtual-memory.json +++ b/lib/libpmcstat/pmu-events/arch/x86/westmereex/virtual-memory.json diff --git a/lib/libpmc/pmu-events/jevents.c b/lib/libpmcstat/pmu-events/jevents.c index 4f135772787a..4f135772787a 100644 --- a/lib/libpmc/pmu-events/jevents.c +++ b/lib/libpmcstat/pmu-events/jevents.c diff --git a/lib/libpmc/pmu-events/jevents.h b/lib/libpmcstat/pmu-events/jevents.h index cd3d1c19021b..cd3d1c19021b 100644 --- a/lib/libpmc/pmu-events/jevents.h +++ b/lib/libpmcstat/pmu-events/jevents.h diff --git a/lib/libpmc/pmu-events/jsmn.c b/lib/libpmcstat/pmu-events/jsmn.c index 3d4818a588da..3d4818a588da 100644 --- a/lib/libpmc/pmu-events/jsmn.c +++ b/lib/libpmcstat/pmu-events/jsmn.c diff --git a/lib/libpmc/pmu-events/jsmn.h b/lib/libpmcstat/pmu-events/jsmn.h index 1f3b369cc44f..1f3b369cc44f 100644 --- a/lib/libpmc/pmu-events/jsmn.h +++ b/lib/libpmcstat/pmu-events/jsmn.h diff --git a/lib/libpmc/pmu-events/json.c b/lib/libpmcstat/pmu-events/json.c index cc297bad8c59..cc297bad8c59 100644 --- a/lib/libpmc/pmu-events/json.c +++ b/lib/libpmcstat/pmu-events/json.c diff --git a/lib/libpmc/pmu-events/json.h b/lib/libpmcstat/pmu-events/json.h index 871362aaf1da..871362aaf1da 100644 --- a/lib/libpmc/pmu-events/json.h +++ b/lib/libpmcstat/pmu-events/json.h diff --git a/lib/libpmc/pmu-events/list.h b/lib/libpmcstat/pmu-events/list.h index 3a47e5637958..3a47e5637958 100644 --- a/lib/libpmc/pmu-events/list.h +++ b/lib/libpmcstat/pmu-events/list.h diff --git a/lib/libpmc/pmu-events/pmu-events.h b/lib/libpmcstat/pmu-events/pmu-events.h index c4c01e20114d..c4c01e20114d 100644 --- a/lib/libpmc/pmu-events/pmu-events.h +++ b/lib/libpmcstat/pmu-events/pmu-events.h diff --git a/sys/dev/hwpmc/hwpmc_core.c b/sys/dev/hwpmc/hwpmc_core.c index d1a57de45480..9fedfc0f32fc 100644 --- a/sys/dev/hwpmc/hwpmc_core.c +++ b/sys/dev/hwpmc/hwpmc_core.c @@ -548,6 +548,48 @@ 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 */ @@ -570,6 +612,1403 @@ iaf_initialize(struct pmc_mdep *md, int maxcpu, int npmc, int pmcwidth) #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) { @@ -600,25 +2039,91 @@ 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_event_corei7_ok_on_counter(uint8_t evsel, int ri) +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) { uint32_t mask; - switch (evsel) { + switch (pe) { /* * Events valid only on counter 0, 1. */ - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x51: - case 0x63: - mask = 0x3; + 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; break; - default: + default: mask = ~0; /* Any row index is ok. */ } @@ -626,26 +2131,37 @@ iap_event_corei7_ok_on_counter(uint8_t evsel, int ri) } static int -iap_event_westmere_ok_on_counter(uint8_t evsel, int ri) +iap_event_westmere_ok_on_counter(enum pmc_event pe, int ri) { uint32_t mask; - switch (evsel) { + switch (pe) { /* * Events valid only on counter 0. */ - case 0x60: - case 0xB3: + 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: mask = 0x1; break; /* * Events valid only on counter 0, 1. */ - case 0x4C: - case 0x4E: - case 0x51: - case 0x63: + 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: mask = 0x3; break; @@ -657,28 +2173,29 @@ iap_event_westmere_ok_on_counter(uint8_t evsel, int ri) } static int -iap_event_sb_sbx_ib_ibx_ok_on_counter(uint8_t evsel, int ri) +iap_event_sb_sbx_ib_ibx_ok_on_counter(enum pmc_event pe, int ri) { uint32_t mask; - switch (evsel) { + switch (pe) { /* Events valid only on counter 0. */ - case 0xB7: + case PMC_EV_IAP_EVENT_B7H_01H: mask = 0x1; break; /* Events valid only on counter 1. */ - case 0xC0: + case PMC_EV_IAP_EVENT_C0H_01H: mask = 0x2; break; /* Events valid only on counter 2. */ - case 0x48: - case 0xA2: - case 0xA3: + case PMC_EV_IAP_EVENT_48H_01H: + case PMC_EV_IAP_EVENT_A2H_02H: + case PMC_EV_IAP_EVENT_A3H_08H: mask = 0x4; break; /* Events valid only on counter 3. */ - case 0xBB: - case 0xCD: + case PMC_EV_IAP_EVENT_BBH_01H: + case PMC_EV_IAP_EVENT_CDH_01H: + case PMC_EV_IAP_EVENT_CDH_02H: mask = 0x8; break; default: @@ -689,29 +2206,32 @@ iap_event_sb_sbx_ib_ibx_ok_on_counter(uint8_t evsel, int ri) } static int -iap_event_ok_on_counter(uint8_t evsel, int ri) +iap_event_ok_on_counter(enum pmc_event pe, int ri) { uint32_t mask; - switch (evsel) { + switch (pe) { /* * Events valid only on counter 0. */ - case 0x10: - case 0x14: - case 0x18: - case 0xB3: - case 0xC1: - case 0xCB: + 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: mask = (1 << 0); break; /* * Events valid only on counter 1. */ - case 0x11: - case 0x12: - case 0x13: + case PMC_EV_IAP_EVENT_11H_00H: + case PMC_EV_IAP_EVENT_12H_00H: + case PMC_EV_IAP_EVENT_13H_00H: mask = (1 << 1); break; @@ -726,10 +2246,10 @@ static int iap_allocate_pmc(int cpu, int ri, struct pmc *pm, const struct pmc_op_pmcallocate *a) { - enum pmc_event map; - uint8_t ev; - uint32_t caps; - const struct pmc_md_iap_op_pmcallocate *iap; + int arch, n, model; + enum pmc_event ev, map; + struct iap_event_descr *ie; + uint32_t c, caps, config, cpuflag, evsel, mask; KASSERT(cpu >= 0 && cpu < pmc_cpu_max(), ("[core,%d] illegal CPU %d", __LINE__, cpu)); @@ -741,8 +2261,23 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm, if ((IAP_PMC_CAPS & caps) != caps) return (EPERM); map = 0; /* XXX: silent GCC warning */ - iap = &a->pm_md.pm_iap; - ev = IAP_EVSEL_GET(iap->pm_iap_config); + 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); + } switch (core_cputype) { case PMC_CPU_INTEL_COREI7: @@ -773,7 +2308,197 @@ iap_allocate_pmc(int cpu, int ri, struct pmc *pm, return (EINVAL); } - pm->pm_md.pm_iap.pm_iap_evsel = iap->pm_iap_config; + /* + * 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; + return (0); } @@ -917,12 +2642,11 @@ iap_start_pmc(int cpu, int ri) cpu, ri, IAP_EVSEL0 + ri, evsel); /* Event specific configuration. */ - - switch (IAP_EVSEL_GET(evsel)) { - case 0xB7: + switch (pm->pm_event) { + case PMC_EV_IAP_EVENT_B7H_01H: wrmsr(IA_OFFCORE_RSP0, pm->pm_md.pm_iap.pm_iap_rsp); break; - case 0xBB: + case PMC_EV_IAP_EVENT_BBH_01H: 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 9045318d6363..d264318f8c25 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) & 0xFF) << 8) +#define IAP_UMASK(C) ((C) & 0xFF00) #define IAP_USR (1 << 16) #define IAP_OS (1 << 17) #define IAP_EDGE (1 << 18) @@ -70,9 +70,6 @@ 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 3967e7a3e48c..385ba8577a3a 100644 --- a/sys/dev/hwpmc/hwpmc_logging.c +++ b/sys/dev/hwpmc/hwpmc_logging.c @@ -183,24 +183,25 @@ 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) == 4*4); -CTASSERT(sizeof(struct pmclog_dropnotify) == 4*4); +CTASSERT(sizeof(struct pmclog_closelog) == 3*4); +CTASSERT(sizeof(struct pmclog_dropnotify) == 3*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) == 6*4 + PATH_MAX); -CTASSERT(offsetof(struct pmclog_pmcattach,pl_pathname) == 6*4); -CTASSERT(sizeof(struct pmclog_pmcdetach) == 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_proccsw) == 6*4 + 8); -CTASSERT(sizeof(struct pmclog_procexec) == 6*4 + PATH_MAX + +CTASSERT(sizeof(struct pmclog_procexec) == 5*4 + PATH_MAX + sizeof(uintfptr_t)); -CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 6*4 + +CTASSERT(offsetof(struct pmclog_procexec,pl_pathname) == 5*4 + sizeof(uintfptr_t)); -CTASSERT(sizeof(struct pmclog_procexit) == 6*4 + 8); -CTASSERT(sizeof(struct pmclog_procfork) == 6*4); +CTASSERT(sizeof(struct pmclog_procexit) == 5*4 + 8); +CTASSERT(sizeof(struct pmclog_procfork) == 5*4); CTASSERT(sizeof(struct pmclog_sysexit) == 4*4); CTASSERT(sizeof(struct pmclog_userdata) == 4*4); @@ -1011,7 +1012,6 @@ 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,9 +1069,8 @@ pmclog_process_procexec(struct pmc_owner *po, pmc_id_t pmid, pid_t pid, PMCLOG_RESERVE(po, PROCEXEC, recordlen); PMCLOG_EMIT32(pid); - PMCLOG_EMIT32(pmid); - PMCLOG_EMIT32(0); PMCLOG_EMITADDR(startaddr); + PMCLOG_EMIT32(pmid); PMCLOG_EMITSTRING(path,pathlen); PMCLOG_DESPATCH(po); } @@ -1094,9 +1093,8 @@ pmclog_process_procexit(struct pmc *pm, struct pmc_process *pp) PMCLOG_RESERVE(po, PROCEXIT, sizeof(struct pmclog_procexit)); PMCLOG_EMIT32(pm->pm_id); - PMCLOG_EMIT32(pp->pp_proc->p_pid); - PMCLOG_EMIT32(0); PMCLOG_EMIT64(pp->pp_pmcs[ri].pp_pmcval); + PMCLOG_EMIT32(pp->pp_proc->p_pid); PMCLOG_DESPATCH(po); } diff --git a/sys/sys/pmc.h b/sys/sys/pmc.h index f43ade8f311a..64d10ab6f512 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 0x05 +#define PMC_VERSION_MAJOR 0x04 #define PMC_VERSION_MINOR 0x01 #define PMC_VERSION_PATCH 0x0000 diff --git a/sys/sys/pmclog.h b/sys/sys/pmclog.h index e438bd70acd3..7d34f0021d8e 100644 --- a/sys/sys/pmclog.h +++ b/sys/sys/pmclog.h @@ -39,19 +39,20 @@ enum pmclog_type { /* V1 ABI */ - 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, + 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, /* * V2 ABI * @@ -59,15 +60,15 @@ enum pmclog_type { * event type. The CALLCHAIN event type obsoletes the * PCSAMPLE event type. */ - PMCLOG_TYPE_MAP_IN = 14, - PMCLOG_TYPE_MAP_OUT = 15, - PMCLOG_TYPE_CALLCHAIN = 16, + PMCLOG_TYPE_MAP_IN, + PMCLOG_TYPE_MAP_OUT, + PMCLOG_TYPE_CALLCHAIN, /* * V3 ABI * * New variant of PMCLOG_TYPE_PMCALLOCATE for dynamic event. */ - PMCLOG_TYPE_PMCALLOCATEDYN = 17 + PMCLOG_TYPE_PMCALLOCATEDYN }; /* @@ -121,19 +122,16 @@ 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 { @@ -150,6 +148,16 @@ 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; @@ -161,7 +169,6 @@ struct pmclog_pmcattach { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; uint32_t pl_pid; - uint32_t pl_pad; char pl_pathname[PATH_MAX]; } __packed; @@ -169,7 +176,6 @@ struct pmclog_pmcdetach { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; uint32_t pl_pid; - uint32_t pl_pad; } __packed; struct pmclog_proccsw { @@ -183,25 +189,22 @@ struct pmclog_proccsw { struct pmclog_procexec { PMCLOG_ENTRY_HEADER uint32_t pl_pid; - uint32_t pl_pmcid; - uint32_t pl_pad; uintfptr_t pl_start; /* keep 8 byte aligned */ + uint32_t pl_pmcid; char pl_pathname[PATH_MAX]; } __packed; struct pmclog_procexit { PMCLOG_ENTRY_HEADER uint32_t pl_pmcid; - uint32_t pl_pid; - uint32_t pl_pad; uint64_t pl_value; /* keep 8 byte aligned */ + uint32_t pl_pid; } __packed; struct pmclog_procfork { PMCLOG_ENTRY_HEADER uint32_t pl_oldpid; uint32_t pl_newpid; - uint32_t pl_pad; } __packed; struct pmclog_sysexit { @@ -229,6 +232,7 @@ 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 f6ff4fbb32cb..fa68a39a1483 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 +.Op Fl L Ar lwp .Op Fl M Ar mapfilename .Op Fl N .Op Fl O Ar logfilename @@ -47,7 +47,6 @@ .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 @@ -55,7 +54,6 @@ .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 @@ -66,7 +64,6 @@ .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 @@ -162,8 +159,13 @@ 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 -List all event names. +.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 M Ar mapfilename Write the mapping between executable objects encountered in the event log and the abbreviated pathnames used for @@ -226,8 +228,6 @@ 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,13 +291,6 @@ 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 . @@ -370,8 +363,6 @@ 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 45b272b60b59..63716e0e5c0d 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\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 -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 -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,7 +374,6 @@ 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" @@ -382,7 +381,6 @@ 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" @@ -394,7 +392,6 @@ 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" @@ -432,14 +429,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, do_listcounters, do_descr, do_long_descr; + int do_print, do_read; size_t len; int graphdepth; int pipefd[2], rfd; int use_cumulative_counts; short cf, cb; uint64_t current_sampling_count; - char *end, *tmp, *event; + char *end, *tmp; const char *errmsg, *graphfilename; enum pmcstat_state runstate; struct pmc_driverstats ds_start, ds_end; @@ -453,12 +450,9 @@ 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; @@ -509,7 +503,7 @@ main(int argc, char **argv) CPU_COPY(&rootmask, &cpumask); while ((option = getopt(argc, argv, - "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) + "CD:EF:G:IL:M:NO:P:R:S:TWa:c:def:gk:l:m:n:o:p:qr:s:t:vw:z:")) != -1) switch (option) { case 'a': /* Annotate + callgraph */ args.pa_flags |= FLAG_DO_ANNOTATE; @@ -550,12 +544,6 @@ 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; @@ -587,11 +575,6 @@ 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); @@ -602,9 +585,9 @@ main(int argc, char **argv) break; case 'L': - do_listcounters = 1; + args.pa_flags |= FLAG_FILTER_THREAD_ID; + args.pa_tid = strtol(optarg, &end, 0); break; - case 'l': /* time duration in seconds */ duration = strtod(optarg, &end); if (*end != '\0' || duration <= 0) @@ -620,6 +603,12 @@ 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; @@ -666,7 +655,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 : pmc_pmu_sample_rate_get(ev->ev_spec); + ev->ev_count = current_sampling_count ? current_sampling_count : pmcstat_pmu_sample_rate_get(ev->ev_spec); else ev->ev_count = -1; @@ -771,14 +760,6 @@ 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; @@ -815,18 +796,6 @@ 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 5f88d274f393..cc3e9c49203f 100644 --- a/usr.sbin/pmcstat/pmcstat_log.c +++ b/usr.sbin/pmcstat/pmcstat_log.c @@ -423,6 +423,13 @@ 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, |