Re: [PATCH 03/10] X86/nVMX: Update the PML table without mapping and unmapping the page

2018-04-12 Thread Paolo Bonzini
On 21/02/2018 18:47, KarimAllah Ahmed wrote:
> + dst = (gpa_t)(((u64 *)vmcs12->pml_address) + 
> vmcs12->guest_pml_index);

This is not a pointer, since it's in the guest.  Please use

  dst = vmcs12->pml_address + sizeof(u64) * vmcs12->guest_pml_index;

(It may also make sense to use kvm_write_guest_page if you prefer).

Thanks,

Paolo

> - page = kvm_vcpu_gpa_to_page(vcpu, vmcs12->pml_address);
> - if (is_error_page(page))
> + if (kvm_write_guest(vcpu->kvm, dst, , sizeof(gpa)))
>   return 0;



Re: [PATCH 03/10] X86/nVMX: Update the PML table without mapping and unmapping the page

2018-04-12 Thread Paolo Bonzini
On 21/02/2018 18:47, KarimAllah Ahmed wrote:
> + dst = (gpa_t)(((u64 *)vmcs12->pml_address) + 
> vmcs12->guest_pml_index);

This is not a pointer, since it's in the guest.  Please use

  dst = vmcs12->pml_address + sizeof(u64) * vmcs12->guest_pml_index;

(It may also make sense to use kvm_write_guest_page if you prefer).

Thanks,

Paolo

> - page = kvm_vcpu_gpa_to_page(vcpu, vmcs12->pml_address);
> - if (is_error_page(page))
> + if (kvm_write_guest(vcpu->kvm, dst, , sizeof(gpa)))
>   return 0;



Re: [PATCH 03/10] X86/nVMX: Update the PML table without mapping and unmapping the page

2018-02-22 Thread kbuild test robot
Hi KarimAllah,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tip/auto-latest]
[also build test WARNING on v4.16-rc2 next-20180222]
[cannot apply to kvm/linux-next]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/KarimAllah-Ahmed/KVM-X86-Handle-guest-memory-that-does-not-have-a-struct-page/20180223-064826
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

All warnings (new ones prefixed by >>):

   arch/x86/kvm/vmx.c: In function 'vmx_write_pml_buffer':
>> arch/x86/kvm/vmx.c:11951:18: warning: cast to pointer from integer of 
>> different size [-Wint-to-pointer-cast]
  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + vmcs12->guest_pml_index);
 ^
>> arch/x86/kvm/vmx.c:11951:9: warning: cast from pointer to integer of 
>> different size [-Wpointer-to-int-cast]
  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + vmcs12->guest_pml_index);
^

vim +11951 arch/x86/kvm/vmx.c

 11926  
 11927  static int vmx_write_pml_buffer(struct kvm_vcpu *vcpu)
 11928  {
 11929  struct vmcs12 *vmcs12;
 11930  struct vcpu_vmx *vmx = to_vmx(vcpu);
 11931  gpa_t gpa, dst;
 11932  
 11933  if (is_guest_mode(vcpu)) {
 11934  WARN_ON_ONCE(vmx->nested.pml_full);
 11935  
 11936  /*
 11937   * Check if PML is enabled for the nested guest.
 11938   * Whether eptp bit 6 is set is already checked
 11939   * as part of A/D emulation.
 11940   */
 11941  vmcs12 = get_vmcs12(vcpu);
 11942  if (!nested_cpu_has_pml(vmcs12))
 11943  return 0;
 11944  
 11945  if (vmcs12->guest_pml_index >= PML_ENTITY_NUM) {
 11946  vmx->nested.pml_full = true;
 11947  return 1;
 11948  }
 11949  
 11950  gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS) & ~0xFFFull;
 11951  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + 
vmcs12->guest_pml_index);
 11952  
 11953  if (kvm_write_guest(vcpu->kvm, dst, , sizeof(gpa)))
 11954  return 0;
 11955  
 11956  vmcs12->guest_pml_index--;
 11957  }
 11958  
 11959  return 0;
 11960  }
 11961  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


Re: [PATCH 03/10] X86/nVMX: Update the PML table without mapping and unmapping the page

2018-02-22 Thread kbuild test robot
Hi KarimAllah,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tip/auto-latest]
[also build test WARNING on v4.16-rc2 next-20180222]
[cannot apply to kvm/linux-next]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/KarimAllah-Ahmed/KVM-X86-Handle-guest-memory-that-does-not-have-a-struct-page/20180223-064826
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

All warnings (new ones prefixed by >>):

   arch/x86/kvm/vmx.c: In function 'vmx_write_pml_buffer':
>> arch/x86/kvm/vmx.c:11951:18: warning: cast to pointer from integer of 
>> different size [-Wint-to-pointer-cast]
  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + vmcs12->guest_pml_index);
 ^
>> arch/x86/kvm/vmx.c:11951:9: warning: cast from pointer to integer of 
>> different size [-Wpointer-to-int-cast]
  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + vmcs12->guest_pml_index);
^

vim +11951 arch/x86/kvm/vmx.c

 11926  
 11927  static int vmx_write_pml_buffer(struct kvm_vcpu *vcpu)
 11928  {
 11929  struct vmcs12 *vmcs12;
 11930  struct vcpu_vmx *vmx = to_vmx(vcpu);
 11931  gpa_t gpa, dst;
 11932  
 11933  if (is_guest_mode(vcpu)) {
 11934  WARN_ON_ONCE(vmx->nested.pml_full);
 11935  
 11936  /*
 11937   * Check if PML is enabled for the nested guest.
 11938   * Whether eptp bit 6 is set is already checked
 11939   * as part of A/D emulation.
 11940   */
 11941  vmcs12 = get_vmcs12(vcpu);
 11942  if (!nested_cpu_has_pml(vmcs12))
 11943  return 0;
 11944  
 11945  if (vmcs12->guest_pml_index >= PML_ENTITY_NUM) {
 11946  vmx->nested.pml_full = true;
 11947  return 1;
 11948  }
 11949  
 11950  gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS) & ~0xFFFull;
 11951  dst = (gpa_t)(((u64 *)vmcs12->pml_address) + 
vmcs12->guest_pml_index);
 11952  
 11953  if (kvm_write_guest(vcpu->kvm, dst, , sizeof(gpa)))
 11954  return 0;
 11955  
 11956  vmcs12->guest_pml_index--;
 11957  }
 11958  
 11959  return 0;
 11960  }
 11961  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip