[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/21] target-i386/kvm: cache the return value of kvm
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PULL 17/21] target-i386/kvm: cache the return value of kvm_enable_x2apic() |
Date: |
Mon, 17 Oct 2016 15:51:34 -0200 |
From: Radim Krčmář <address@hidden>
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.
Reviewed-by: Igor Mammedov <address@hidden>
Signed-off-by: Radim Krčmář <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>
---
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 0fd6646..0472f45 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)
--
2.7.4
- [Qemu-devel] [PULL 09/21] qmp: Add runnability information to query-cpu-definitions, (continued)
- [Qemu-devel] [PULL 09/21] qmp: Add runnability information to query-cpu-definitions, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 11/21] apic: add global apic_get_class(), Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 10/21] target-i386: Move warning code outside x86_cpu_filter_features(), Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 12/21] apic: add send_msi() to APICCommonClass, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 13/21] intel_iommu: pass whole remapped addresses to apic, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 14/21] intel_iommu: redo configuraton check in realize, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 15/21] intel_iommu: add OnOffAuto intr_eim as "eim" property, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 16/21] intel_iommu: reject broken EIM, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 18/21] target-i386: Unset cannot_destroy_with_object_finalize_yet, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 19/21] target-i386: x86_cpu_load_features() function, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 17/21] target-i386/kvm: cache the return value of kvm_enable_x2apic(),
Eduardo Habkost <=
- [Qemu-devel] [PULL 21/21] target-i386: Don't use cpu->migratable when filtering features, Eduardo Habkost, 2016/10/17
- [Qemu-devel] [PULL 20/21] target-i386: Return runnability information on query-cpu-definitions, Eduardo Habkost, 2016/10/17
- Re: [Qemu-devel] [PULL 00/21] x86 queue, 2016-10-17, Peter Maydell, 2016/10/18