Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: enable generic CPU feature modalias matching for this architecture

This enables support for the generic CPU feature modalias implementation that
wires up optional CPU features to udev based module autoprobing.

A file <asm/cpufeature.h> is provided that maps CPU feature numbers to
elf_hwcap bits, which is the standard way on arm64 to advertise optional CPU
features both internally and to user space.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
[catalin.marinas@arm.com: removed unnecessary "!!"]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>

authored by

Ard Biesheuvel and committed by
Catalin Marinas
3be1a5c4 7184659b

+30
+1
arch/arm64/Kconfig
··· 16 16 select DCACHE_WORD_ACCESS 17 17 select GENERIC_CLOCKEVENTS 18 18 select GENERIC_CLOCKEVENTS_BROADCAST if SMP 19 + select GENERIC_CPU_AUTOPROBE 19 20 select GENERIC_IOMAP 20 21 select GENERIC_IRQ_PROBE 21 22 select GENERIC_IRQ_SHOW
+29
arch/arm64/include/asm/cpufeature.h
··· 1 + /* 2 + * Copyright (C) 2014 Linaro Ltd. <ard.biesheuvel@linaro.org> 3 + * 4 + * This program is free software; you can redistribute it and/or modify 5 + * it under the terms of the GNU General Public License version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + 9 + #ifndef __ASM_CPUFEATURE_H 10 + #define __ASM_CPUFEATURE_H 11 + 12 + #include <asm/hwcap.h> 13 + 14 + /* 15 + * In the arm64 world (as in the ARM world), elf_hwcap is used both internally 16 + * in the kernel and for user space to keep track of which optional features 17 + * are supported by the current system. So let's map feature 'x' to HWCAP_x. 18 + * Note that HWCAP_x constants are bit fields so we need to take the log. 19 + */ 20 + 21 + #define MAX_CPU_FEATURES (8 * sizeof(elf_hwcap)) 22 + #define cpu_feature(x) ilog2(HWCAP_ ## x) 23 + 24 + static inline bool cpu_have_feature(unsigned int num) 25 + { 26 + return elf_hwcap & (1UL << num); 27 + } 28 + 29 + #endif