Re: [PATCH v11 1/4] arm64: cpufeature: introduce helper cpu_has_hw_af()

From: Catalin Marinas
Date: Fri Oct 11 2019 - 06:39:05 EST


On Fri, Oct 11, 2019 at 01:16:36AM +0000, Justin He (Arm Technology China) wrote:
> From: Catalin Marinas <catalin.marinas@xxxxxxx>
> > On Wed, Oct 09, 2019 at 04:42:43PM +0800, Jia He wrote:
> > > + u64 mmfr1 = read_cpuid(ID_AA64MMFR1_EL1);
> > > +
> > > + return !!cpuid_feature_extract_unsigned_field(mmfr1,
> > > +
> > ID_AA64MMFR1_HADBS_SHIFT);
> >
> > No need for !!, the return type is a bool already.
>
> But cpuid_feature_extract_unsigned_field has the return type "unsigned int" [1]
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/include/asm/cpufeature.h#n444

And the C language gives you the automatic conversion from unsigned int
to bool without the need for !!. The reason we use !! in some places is
for converting long to int (not bool) and losing the top 32-bit. See
commit 84fe6826c28f ("arm64: mm: Add double logical invert to pte
accessors") for an explanation.

--
Catalin