cpu: add generic support for CPU feature based module autoloading
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Sat, 8 Feb 2014 12:34:09 +0000 (13:34 +0100)
committerJP Abgrall <jpa@google.com>
Thu, 28 Aug 2014 17:22:26 +0000 (10:22 -0700)
commit197028d295db718f4e5cf8af9038cfeb4823b4ef
tree3c4cbbe4a18b32d06e94043ebfdc577c897a3599
parent59472af5848e3063c149baa92a35882ce3f6f291
cpu: add generic support for CPU feature based module autoloading

This patch adds support for advertising optional CPU features over udev
using the modalias, and for declaring compatibility with/dependency upon
such a feature in a module.

The mapping between feature numbers and actual features should be provided
by the architecture in a file called <asm/cpufeature.h> which exports the
following functions/macros:
- cpu_feature(FEAT), a preprocessor macro that maps token FEAT to a
  numeric index;
- bool cpu_have_feature(n), returning whether this CPU has support for
  feature #n;
- MAX_CPU_FEATURES, an upper bound for 'n' in the previous function.

The feature can then be enabled by setting CONFIG_GENERIC_CPU_AUTOPROBE
for the architecture.

For instance, a module that registers its module init function using

  module_cpu_feature_match(FEAT_X, module_init_function)

will be probed automatically when the CPU's support for the 'FEAT_X'
feature is advertised over udev, and will only allow the module to be
loaded by hand if the 'FEAT_X' feature is supported.

Change-Id: Icae8e3ff347235fc72a5b41279f0afdb34fb161a
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/Kconfig
drivers/base/cpu.c
include/linux/cpufeature.h [new file with mode: 0644]
include/linux/mod_devicetable.h
scripts/mod/devicetable-offsets.c
scripts/mod/file2alias.c