1. 20 Aug, 2018 1 commit
    • Paul Mackerras's avatar
      KVM: PPC: Book3S HV: Don't truncate HPTE index in xlate function · 46dec40f
      Paul Mackerras authored
      This fixes a bug which causes guest virtual addresses to get translated
      to guest real addresses incorrectly when the guest is using the HPT MMU
      and has more than 256GB of RAM, or more specifically has a HPT larger
      than 2GB.  This has showed up in testing as a failure of the host to
      emulate doorbell instructions correctly on POWER9 for HPT guests with
      more than 256GB of RAM.
      
      The bug is that the HPTE index in kvmppc_mmu_book3s_64_hv_xlate()
      is stored as an int, and in forming the HPTE address, the index gets
      shifted left 4 bits as an int before being signed-extended to 64 bits.
      The simple fix is to make the variable a long int, matching the
      return type of kvmppc_hv_find_lock_hpte(), which is what calculates
      the index.
      
      Fixes: 697d3899 ("KVM: PPC: Implement MMIO emulation support for Book3S HV guests")
      Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
      46dec40f
  2. 15 Aug, 2018 1 commit
    • Paul Mackerras's avatar
      KVM: PPC: Book3S HV: Use correct pagesize in kvm_unmap_radix() · c066fafc
      Paul Mackerras authored
      Since commit e641a317 ("KVM: PPC: Book3S HV: Unify dirty page map
      between HPT and radix", 2017-10-26), kvm_unmap_radix() computes the
      number of PAGE_SIZEd pages being unmapped and passes it to
      kvmppc_update_dirty_map(), which expects to be passed the page size
      instead.  Consequently it will only mark one system page dirty even
      when a large page (for example a THP page) is being unmapped.  The
      consequence of this is that part of the THP page might not get copied
      during live migration, resulting in memory corruption for the guest.
      
      This fixes it by computing and passing the page size in kvm_unmap_radix().
      
      Cc: stable@vger.kernel.org # v4.15+
      Fixes: e641a317 (KVM: PPC: Book3S HV: Unify dirty page map between HPT and radix)
      Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
      c066fafc
  3. 06 Aug, 2018 38 commits