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

[Xen-changelog] [xen staging] x86/svm: Improve code generation from cpu_has_svm_feature()



commit 1e780ef5a527661d1d6106ccacf65706e3ed664d
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Tue Feb 12 18:33:30 2019 +0000
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Fri Mar 15 17:53:25 2019 +0000

    x86/svm: Improve code generation from cpu_has_svm_feature()
    
    Taking svm_feature_flags by pointer and using test_bit() results in 
generated
    code which loads svm_feature_flags into a 32bit register, then does a 
bitwise
    operation.
    
    The logic can be expressed in terms of a straight bitwise operation, 
resulting
    in the following minor improvement.
    
      add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-136 (-136)
      Function                                     old     new   delta
      svm_nested_features_on_efer_update           281     273      -8
      svm_create_vmcb                             1404    1388     -16
      svm_vmexit_handler                          6271    6239     -32
      start_svm                                    818     738     -80
      Total: Before=3347569, After=3347433, chg -0.00%
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
---
 xen/include/asm-x86/hvm/svm/svm.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/include/asm-x86/hvm/svm/svm.h 
b/xen/include/asm-x86/hvm/svm/svm.h
index 49dca39e0b..6e688a8e10 100644
--- a/xen/include/asm-x86/hvm/svm/svm.h
+++ b/xen/include/asm-x86/hvm/svm/svm.h
@@ -21,7 +21,6 @@
 #define __ASM_X86_HVM_SVM_H__
 
 #include <xen/types.h>
-#include <xen/bitmap.h>
 
 #define svm_vmload(x)     svm_vmload_pa(__pa(x))
 #define svm_vmsave(x)     svm_vmsave_pa(__pa(x))
@@ -77,7 +76,7 @@ extern u32 svm_feature_flags;
 #define SVM_FEATURE_VLOADSAVE     15 /* virtual vmload/vmsave */
 #define SVM_FEATURE_VGIF          16 /* Virtual GIF */
 
-#define cpu_has_svm_feature(f) test_bit(f, &svm_feature_flags)
+#define cpu_has_svm_feature(f) (svm_feature_flags & (1u << (f)))
 #define cpu_has_svm_npt       cpu_has_svm_feature(SVM_FEATURE_NPT)
 #define cpu_has_svm_lbrv      cpu_has_svm_feature(SVM_FEATURE_LBRV)
 #define cpu_has_svm_svml      cpu_has_svm_feature(SVM_FEATURE_SVML)
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.