[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 8/8] target-i386/kvm: cache the return value of k
From: |
Radim Krčmář |
Subject: |
[Qemu-devel] [PATCH v3 8/8] target-i386/kvm: cache the return value of kvm_enable_x2apic() |
Date: |
Fri, 30 Sep 2016 18:10:13 +0200 |
Assume that KVM would have returned the same on subsequent runs.
Abstract the memoizaiton pattern into macros.
Signed-off-by: Radim Krčmář <address@hidden>
---
target-i386/kvm.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 0fd664648665..113c5bf058ba 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -129,10 +129,27 @@ static bool kvm_x2apic_api_set_flags(uint64_t flags)
return !kvm_vm_enable_cap(s, KVM_CAP_X2APIC_API, 0, flags);
}
+#define MEMOIZE_RESULT(_result, _fn) \
+ ({ \
+ static bool _memoized; \
+ if (_memoized) { \
+ return _result; \
+ } \
+ _memoized = true; \
+ _result = _fn; \
+ })
+
+#define MEMOIZE(_fn) \
+ ({ \
+ static typeof(_fn) _result; \
+ MEMOIZE_RESULT(_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 MEMOIZE(
+ kvm_x2apic_api_set_flags(KVM_X2APIC_API_USE_32BIT_IDS |
+ KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK));
}
static int kvm_get_tsc(CPUState *cs)
--
2.10.0
- [Qemu-devel] [PATCH v3 0/8] intel_iommu: fix EIM, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 1/8] apic: add global apic_get_class(), Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 2/8] apic: add send_msi() to APICCommonClass, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 4/8] intel_iommu: redo configuraton check in realize, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 3/8] intel_iommu: pass whole remapped addresses to apic, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 5/8] intel_iommu: add OnOffAuto intr_eim as "eim" property, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 6/8] intel_iommu: reject broken EIM, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 7/8] intel_iommu: keep buggy EIM enabled in 2.7 machine type, Radim Krčmář, 2016/09/30
- [Qemu-devel] [PATCH v3 8/8] target-i386/kvm: cache the return value of kvm_enable_x2apic(),
Radim Krčmář <=
- Re: [Qemu-devel] [PATCH v3 0/8] intel_iommu: fix EIM, no-reply, 2016/09/30