Re: [PATCH 1/3] KVM: VMX: Use proper types to access const arrays

2013-06-27 Thread Paolo Bonzini
Il 26/06/2013 20:36, Mathias Krause ha scritto:
 Use a const pointer type instead of casting away the const qualifier
 from const arrays. Keep the pointer array on the stack, nonetheless.
 Making it static just increases the object size.
 
 Signed-off-by: Mathias Krause mini...@googlemail.com
 ---
  arch/x86/kvm/vmx.c |   15 +++
  1 file changed, 7 insertions(+), 8 deletions(-)
 
 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
 index 260a919..7393164 100644
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
 @@ -5956,8 +5956,8 @@ static void copy_shadow_to_vmcs12(struct vcpu_vmx *vmx)
   unsigned long field;
   u64 field_value;
   struct vmcs *shadow_vmcs = vmx-nested.current_shadow_vmcs;
 - unsigned long *fields = (unsigned long *)shadow_read_write_fields;
 - int num_fields = max_shadow_read_write_fields;
 + const unsigned long *fields = shadow_read_write_fields;
 + const int num_fields = max_shadow_read_write_fields;
  
   vmcs_load(shadow_vmcs);
  
 @@ -5986,12 +5986,11 @@ static void copy_shadow_to_vmcs12(struct vcpu_vmx 
 *vmx)
  
  static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx)
  {
 - unsigned long *fields[] = {
 - (unsigned long *)shadow_read_write_fields,
 - (unsigned long *)shadow_read_only_fields
 + const unsigned long *fields[] = {
 + shadow_read_write_fields,
 + shadow_read_only_fields
   };
 - int num_lists =  ARRAY_SIZE(fields);
 - int max_fields[] = {
 + const int max_fields[] = {
   max_shadow_read_write_fields,
   max_shadow_read_only_fields
   };
 @@ -6002,7 +6001,7 @@ static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx)
  
   vmcs_load(shadow_vmcs);
  
 - for (q = 0; q  num_lists; q++) {
 + for (q = 0; q  ARRAY_SIZE(fields); q++) {
   for (i = 0; i  max_fields[q]; i++) {
   field = fields[q][i];
   vmcs12_read_any(vmx-vcpu, field, field_value);
 

The const int is not particularly useful, but doesn't hurt either.

Reviewed-by: Paolo Bonzini pbonz...@redhat.com
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] KVM: VMX: Use proper types to access const arrays

2013-06-27 Thread Mathias Krause
On 27 June 2013 15:33, Paolo Bonzini pbonz...@redhat.com wrote:
 Il 26/06/2013 20:36, Mathias Krause ha scritto:
 Use a const pointer type instead of casting away the const qualifier
 from const arrays. Keep the pointer array on the stack, nonetheless.
 Making it static just increases the object size.

 Signed-off-by: Mathias Krause mini...@googlemail.com
 ---
  arch/x86/kvm/vmx.c |   15 +++
  1 file changed, 7 insertions(+), 8 deletions(-)

 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
 index 260a919..7393164 100644
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
 @@ -5956,8 +5956,8 @@ static void copy_shadow_to_vmcs12(struct vcpu_vmx *vmx)
   unsigned long field;
   u64 field_value;
   struct vmcs *shadow_vmcs = vmx-nested.current_shadow_vmcs;
 - unsigned long *fields = (unsigned long *)shadow_read_write_fields;
 - int num_fields = max_shadow_read_write_fields;
 + const unsigned long *fields = shadow_read_write_fields;
 + const int num_fields = max_shadow_read_write_fields;

   vmcs_load(shadow_vmcs);

 @@ -5986,12 +5986,11 @@ static void copy_shadow_to_vmcs12(struct vcpu_vmx 
 *vmx)

  static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx)
  {
 - unsigned long *fields[] = {
 - (unsigned long *)shadow_read_write_fields,
 - (unsigned long *)shadow_read_only_fields
 + const unsigned long *fields[] = {
 + shadow_read_write_fields,
 + shadow_read_only_fields
   };
 - int num_lists =  ARRAY_SIZE(fields);
 - int max_fields[] = {
 + const int max_fields[] = {
   max_shadow_read_write_fields,
   max_shadow_read_only_fields
   };
 @@ -6002,7 +6001,7 @@ static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx)

   vmcs_load(shadow_vmcs);

 - for (q = 0; q  num_lists; q++) {
 + for (q = 0; q  ARRAY_SIZE(fields); q++) {
   for (i = 0; i  max_fields[q]; i++) {
   field = fields[q][i];
   vmcs12_read_any(vmx-vcpu, field, field_value);


 The const int is not particularly useful, but doesn't hurt either.

It's more of a hint for the compiler to take the values verbatim
instead of allocating stack space for them. But it'll probably already
do it even without that hint.


 Reviewed-by: Paolo Bonzini pbonz...@redhat.com

Mathias
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] KVM: VMX: Use proper types to access const arrays

2013-06-27 Thread Paolo Bonzini
Il 27/06/2013 15:42, Mathias Krause ha scritto:
  The const int is not particularly useful, but doesn't hurt either.
 
 It's more of a hint for the compiler to take the values verbatim
 instead of allocating stack space for them. But it'll probably already
 do it even without that hint.

It won't change anything really.  Maybe for const int foo[], but I'm
not even sure about that and it depends a lot on the circumstances (loop
unrolling, inlining, whether you ever store foo in a variable or pass
it as a parameter, ...).  The compiler may leave it on the stack anyway.

Paolo
--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html