diff options
author | Warner Losh <imp@FreeBSD.org> | 2014-04-15 17:01:17 +0000 |
---|---|---|
committer | Warner Losh <imp@FreeBSD.org> | 2014-04-15 17:01:17 +0000 |
commit | 9e48652da841294c9fc0a3c5f97728ab6b198528 (patch) | |
tree | 3381e96086afb03a5124439347e826c7df8fe812 /sysutils/intel-pcm | |
parent | b87cfa84082349d6132a4d50c128217aaea32678 (diff) |
Notes
Diffstat (limited to 'sysutils/intel-pcm')
-rw-r--r-- | sysutils/intel-pcm/Makefile | 2 | ||||
-rw-r--r-- | sysutils/intel-pcm/files/patch-cpuctl_check | 60 |
2 files changed, 61 insertions, 1 deletions
diff --git a/sysutils/intel-pcm/Makefile b/sysutils/intel-pcm/Makefile index c78d539b033c..cc035d4ce042 100644 --- a/sysutils/intel-pcm/Makefile +++ b/sysutils/intel-pcm/Makefile @@ -3,7 +3,7 @@ PORTNAME= intel-pcm PORTVERSION= 2.6 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= sysutils MASTER_SITES= LOCAL/imp DISTNAME= intelperformancecountermonitorv${PORTVERSION} diff --git a/sysutils/intel-pcm/files/patch-cpuctl_check b/sysutils/intel-pcm/files/patch-cpuctl_check new file mode 100644 index 000000000000..092f657bd5ca --- /dev/null +++ b/sysutils/intel-pcm/files/patch-cpuctl_check @@ -0,0 +1,60 @@ +commit f87e1f30a39055cdb3b10964a805a9b5e41e6a77 +Author: Jim Harris <james.r.harris@intel.com> +Date: Mon Apr 14 22:59:44 2014 -0700 + + FreeBSD: ensure cpuctl(4) driver is loaded. + + Also do a couple of sanity checks on some of the apic cpuid parsing. + This just ensures we get a sensible error messages rather than an + FPE if some logic bug is found in the apic parsing code. + +diff --git cpucounters.cpp cpucounters.cpp +index df8a802..0a9fc26 100644 +--- cpucounters.cpp ++++ cpucounters.cpp +@@ -63,6 +63,8 @@ int convertUnknownToInt(size_t size, char* value); + #endif + + #if defined (__FreeBSD__) ++#include <sys/param.h> ++#include <sys/module.h> + #include <sys/types.h> + #include <sys/sysctl.h> + #include <sys/sem.h> +@@ -735,11 +737,23 @@ PCM::PCM() : + std::cerr << "Unable to get kern.smp.cpus from sysctl." << std::endl; + return; + } ++ ++ if (modfind("cpuctl") == -1) ++ { ++ std::cout << "cpuctl(4) not loaded." << std::endl; ++ return; ++ } + + do_cpuid(1, cpuid_args.data); + + apic_ids_per_package = (cpuid_args.data[1] & 0x00FF0000) >> 16; + ++ if (apic_ids_per_package == 0) ++ { ++ std::cout << "apic_ids_per_package == 0" << std::endl; ++ return; ++ } ++ + cpuid_count(0xb, 0x0, cpuid_args.data); + + if ((cpuid_args.data[2] & 0xFF00) == 0x100) +@@ -747,6 +761,12 @@ PCM::PCM() : + else + apic_ids_per_core = 1; + ++ if (apic_ids_per_core == 0) ++ { ++ std::cout << "apic_ids_per_core == 0" << std::endl; ++ return; ++ } ++ + for (int i = 0; i < num_cores; i++) + { + char cpuctl_name[64]; |