qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 8/8] target-i386/kvm: cache the return value


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v4 8/8] target-i386/kvm: cache the return value of kvm_enable_x2apic()
Date: Fri, 7 Oct 2016 15:01:24 +0200

On Wed,  5 Oct 2016 15:06:57 +0200
Radim Krčmář <address@hidden> wrote:

> Assume that KVM would have returned the same on subsequent runs.
> Abstract the memoizaiton pattern into macros and call it memorize as
> adding the r makes it less obscure.
> 
> Signed-off-by: Radim Krčmář <address@hidden>
Reviewed-by: Igor Mammedov <address@hidden>

> ---
> v4:
>  * changed the name to memorize [Igor]
>  * remove useless underscores in macro arguments
>  * merge the two macros, as it seems that the deleted one wouldn't get
>    other users anytime soon
> ---
>  target-i386/kvm.c | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/target-i386/kvm.c b/target-i386/kvm.c
> index 0fd664648665..0472f45fd092 100644
> --- a/target-i386/kvm.c
> +++ b/target-i386/kvm.c
> @@ -129,10 +129,23 @@ static bool kvm_x2apic_api_set_flags(uint64_t flags)
>      return !kvm_vm_enable_cap(s, KVM_CAP_X2APIC_API, 0, flags);
>  }
>  
> +#define MEMORIZE(fn) \
> +    ({ \
> +        static typeof(fn) _result; \
> +        static bool _memorized; \
> +        \
> +        if (_memorized) { \
> +            return _result; \
> +        } \
> +        _memorized = true; \
> +        _result = fn; \
> +    })
> +
>  bool kvm_enable_x2apic(void)
>  {
> -    return kvm_x2apic_api_set_flags(KVM_X2APIC_API_USE_32BIT_IDS |
> -                                    KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK);
> +    return MEMORIZE(
> +             kvm_x2apic_api_set_flags(KVM_X2APIC_API_USE_32BIT_IDS |
> +                                      
> KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK));
>  }
>  
>  static int kvm_get_tsc(CPUState *cs)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]