It turns out we had two options enabled which were making the
kernel text read only. Turning off CONFIG_STRICT_MEMORY_RWX
fixed function tracing, but kprobes still don't work.
CONFIG_DEBUG_RODATA seems to be something added by Google to
mimic the same option in x86, but the x86 version does some
tricks to make kprobes work which are lacking in the ARM
version. Turn off this option so that kprobes will work and
remove the corresponding enforcer rule.
This option causes the kernel's text section to be set to be read
only. This doesn't play well with dynamic function tracing, as
ftrace enables and disables tracing of a given function by
modifying instructions at runtime. We really want to be able to
use dynamic function tracing, so disable the option that's
standing in our way.