[PATCH v2 03/38] arm64: Factor out cpucap definitions

Mark Rutland mark.rutland at arm.com
Thu Oct 5 05:29:30 PDT 2023


On Thu, Oct 05, 2023 at 10:49:49AM +0100, Mark Rutland wrote:
> For clarity it would be nice to factor cpucap manipulation out of
> <asm/cpufeature.h>, and the obvious place would be <asm/cpucap.h>, but
> this will clash somewhat with <generated/asm/cpucaps.h>.
> 
> Rename <generated/asm/cpucaps.h> to <generated/asm/cpucap-defs.h>,
> matching what we do for <generated/asm/sysreg-defs.h>, and introduce a
> new <asm/cpucaps.h> which includes the generated header.
> 
> Subsequent patches will fill out <asm/cpucaps.h>.
> 
> There should be no functional change as a result of this patch.
> 
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Mark Brown <broonie at kernel.org>
> Cc: Suzuki K Poulose <suzuki.poulose at arm.com>
> Cc: Will Deacon <will at kernel.org>
> ---
>  arch/arm64/include/asm/cpucaps.h | 8 ++++++++
>  arch/arm64/tools/Makefile        | 4 ++--
>  arch/arm64/tools/gen-cpucaps.awk | 6 +++---
>  3 files changed, 13 insertions(+), 5 deletions(-)
>  create mode 100644 arch/arm64/include/asm/cpucaps.h

I've just realised that I forgot to update arch/arm64/include/asm/Kbuild, and
as-is this will cause cpucap-defs.h to be removed and regenerated on every
subsequent build, which isn't desirable.

I'll fold in the below for v3 to fix that:

| diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild
| index 5c8ee5a541d20..4b6d2d52053e4 100644
| --- a/arch/arm64/include/asm/Kbuild
| +++ b/arch/arm64/include/asm/Kbuild
| @@ -6,5 +6,5 @@ generic-y += qspinlock.h
|  generic-y += parport.h
|  generic-y += user.h
|  
| -generated-y += cpucaps.h
| +generated-y += cpucap-defs.h
|  generated-y += sysreg-defs.h

Mark.

> 
> diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h
> new file mode 100644
> index 0000000000000..7333b5bbf4488
> --- /dev/null
> +++ b/arch/arm64/include/asm/cpucaps.h
> @@ -0,0 +1,8 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ASM_CPUCAPS_H
> +#define __ASM_CPUCAPS_H
> +
> +#include <asm/cpucap-defs.h>
> +
> +#endif /* __ASM_CPUCAPS_H */
> diff --git a/arch/arm64/tools/Makefile b/arch/arm64/tools/Makefile
> index 07a93ab21a62b..fa2251d9762d9 100644
> --- a/arch/arm64/tools/Makefile
> +++ b/arch/arm64/tools/Makefile
> @@ -3,7 +3,7 @@
>  gen := arch/$(ARCH)/include/generated
>  kapi := $(gen)/asm
>  
> -kapi-hdrs-y := $(kapi)/cpucaps.h $(kapi)/sysreg-defs.h
> +kapi-hdrs-y := $(kapi)/cpucap-defs.h $(kapi)/sysreg-defs.h
>  
>  targets += $(addprefix ../../../, $(kapi-hdrs-y))
>  
> @@ -17,7 +17,7 @@ quiet_cmd_gen_cpucaps = GEN     $@
>  quiet_cmd_gen_sysreg = GEN     $@
>        cmd_gen_sysreg = mkdir -p $(dir $@); $(AWK) -f $(real-prereqs) > $@
>  
> -$(kapi)/cpucaps.h: $(src)/gen-cpucaps.awk $(src)/cpucaps FORCE
> +$(kapi)/cpucap-defs.h: $(src)/gen-cpucaps.awk $(src)/cpucaps FORCE
>  	$(call if_changed,gen_cpucaps)
>  
>  $(kapi)/sysreg-defs.h: $(src)/gen-sysreg.awk $(src)/sysreg FORCE
> diff --git a/arch/arm64/tools/gen-cpucaps.awk b/arch/arm64/tools/gen-cpucaps.awk
> index 8525980379d71..2f4f61a0af17e 100755
> --- a/arch/arm64/tools/gen-cpucaps.awk
> +++ b/arch/arm64/tools/gen-cpucaps.awk
> @@ -15,8 +15,8 @@ function fatal(msg) {
>  /^#/ { next }
>  
>  BEGIN {
> -	print "#ifndef __ASM_CPUCAPS_H"
> -	print "#define __ASM_CPUCAPS_H"
> +	print "#ifndef __ASM_CPUCAP_DEFS_H"
> +	print "#define __ASM_CPUCAP_DEFS_H"
>  	print ""
>  	print "/* Generated file - do not edit */"
>  	cap_num = 0
> @@ -31,7 +31,7 @@ BEGIN {
>  END {
>  	printf("#define ARM64_NCAPS\t\t\t\t\t%d\n", cap_num)
>  	print ""
> -	print "#endif /* __ASM_CPUCAPS_H */"
> +	print "#endif /* __ASM_CPUCAP_DEFS_H */"
>  }
>  
>  # Any lines not handled by previous rules are unexpected
> -- 
> 2.30.2
> 



More information about the linux-arm-kernel mailing list