Re: Is BIT() in arch/x86/include/uapi/asm/kvm.h defined? Where?

From: Paolo Bonzini
Date: Mon May 09 2016 - 10:00:31 EST




On 05/05/2016 10:24, Borislav Petkov wrote:
> On Wed, May 04, 2016 at 05:49:27PM -0700, Brooks Moses wrote:
>> When I run "make ARCH=x86 headers_install", and then write a simple C
>> file that #includes "asm/kvm.h" from the resulting tree, I get a
>> compiler error: the BIT() macro used on line 219 of that file is
>> undefined:
>
> The below patch should help...
>
> @Paulo: btw, any chance we can fix that "signifcant" typo :-) in
> KVM_CPUID_FLAG_SIGNIFCANT_INDEX or is it user-visible and cast in
> stone?

Unfortuntely it is cast in stone. The patch below is good though.
Radim, please commit it
(http://article.gmane.org/gmane.linux.kernel/2215443/raw) or pass the
tree back to me so that I can. :)

Thanks,

Paolo

> ---
> From: Borislav Petkov <bp@xxxxxxx>
> Date: Thu, 5 May 2016 10:18:23 +0200
> Subject: [PATCH] x86/kvm: Do not use BIT() in user-exported header
>
> Apparently, we're not exporting BIT() to userspace.
>
> Reported-by: Brooks Moses <bmoses@xxxxxxxxxx>
> Signed-off-by: Borislav Petkov <bp@xxxxxxx>
> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> ---
> arch/x86/include/uapi/asm/kvm.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
> index cd54147cb365..739c0c594022 100644
> --- a/arch/x86/include/uapi/asm/kvm.h
> +++ b/arch/x86/include/uapi/asm/kvm.h
> @@ -216,9 +216,9 @@ struct kvm_cpuid_entry2 {
> __u32 padding[3];
> };
>
> -#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
> -#define KVM_CPUID_FLAG_STATEFUL_FUNC BIT(1)
> -#define KVM_CPUID_FLAG_STATE_READ_NEXT BIT(2)
> +#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX (1 << 0)
> +#define KVM_CPUID_FLAG_STATEFUL_FUNC (1 << 1)
> +#define KVM_CPUID_FLAG_STATE_READ_NEXT (1 << 2)


Reviewed-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>

> /* for KVM_SET_CPUID2 */
> struct kvm_cpuid2 {
>