Hi Robert,
On 04/05/18 13:27, Robert Richter wrote:
On 04.05.18 12:03:12, Matt Redfearn wrote:
As said, oprofile version 0.9.x is still available for cpus that do
not support perf. What is the breakage?
The breakage I originally set out to fix was the MT support in perf.
https://www.linux-mips.org/archives/linux-mips/2018-04/msg00259.html
Since the perf code shares so much copied code from oprofile, those same
issues exist in oprofile and ought to be addressed. But as newer oprofile
userspace does not use the (MIPS) kernel oprofile code, then we could,
perhaps, just remove it (as per the RFC). That would break legacy tools
(0.9.x) though...
Those support perf:
(CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON ||
CPU_XLP || CPU_LOONGSON3)
Here is the total list of CPU_*:
$ git grep -h config.CPU_ arch/mips/ | sort -u | wc -l
79
To be fair, that list for oprofile is not much different:
arch/mips/oprofile/Makefile:
oprofile-$(CONFIG_CPU_MIPS32) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_MIPS64) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_R10000) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_SB1) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_XLR) += op_model_mipsxx.o
oprofile-$(CONFIG_CPU_LOONGSON2) += op_model_loongson2.o
oprofile-$(CONFIG_CPU_LOONGSON3) += op_model_loongson3.o
However, since those are generally CPU families rather than individual
CPUs, the number of models supported by each framework tells a different
story:
git grep -h ops.cpu_type arch/mips/oprofile | wc -l
20
git grep -h pmu.name arch/mips/kernel/perf_event* | wc -l
17
The difference is mainly older CPUs - M14Kc, 20K, loongson1, etc. But
yes you are right dropping it would kill profiling for them - that being
the case I guess oprofile should remain and instead just remove support
for the MT capable CPUs (34K, interAptiv) which are all supported by perf.
Thanks,
Matt
The comparisation might not be accurate, but at least gives a hint
that there are many cpus not supporting perf. You would drop profiling
support at al to them.
If it is too hard to also fix the oprofile code (code duplication
seems the main issue here), then it would be also ok to blacklist
newer cpus to enable oprofile kernel code (where it is broken).
-Robert