Re: [RFC PATCH] MIPS: Oprofile: Drop support

From: Matt Redfearn
Date: Fri May 04 2018 - 08:59:42 EST


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