[PATCH v3 0/8] KVM: PPC: e500: Shadow TLB Improvements v3

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

 



This patch set improves the shadow TLB handling of our e500
target.

The really important bit here is that with these patches applied,
we can map guest TLB1 entries into the host's TLB0. This gives a
significant performance improvement as you can see below.

Alex

v1 -> v2:

  - new patch: Move write_stlbe higher
  - new patch: Explicitly mark shadow maps invalid
  - new patch: Propagate errors when shadow mapping
  - remove force init logic, it's handled by the explicit invalidate now
  - leave stlbe uninitialized
  - allow mixing of TLB0 and TLB1_BITMAP backing of TLB1 pages

v2 -> v3:

  - new patch: Make clear_tlb_refs and clear_tlb1_bitmap static
  - new patch: Remove kvmppc_e500_tlbil_all usage from guest TLB code
  - (fixes potentially stale TLB1 shadow entries)

---

without patch, using 4k backed memory:

$ time for i in {1..1000}; do /bin/echo > /dev/null; done
real	0m12.947s
user	0m1.076s
sys	0m9.720s


with hugetlbfs:

$ time for i in {1..1000}; do /bin/echo > /dev/null; done

real	0m3.262s
user	0m0.464s
sys	0m0.236s


with patches applied, using 4k backed memory:

$ time for i in {1..1000}; do /bin/echo > /dev/null; done

real	0m4.446s
user	0m0.380s
sys	0m0.644s

Alexander Graf (8):
  KVM: PPC: E500: Move write_stlbe higher
  KVM: PPC: E500: Explicitly mark shadow maps invalid
  KVM: PPC: E500: Propagate errors when shadow mapping
  KVM: PPC: e500: Call kvmppc_mmu_map for initial mapping
  KVM: PPC: E500: Split host and guest MMU parts
  KVM: PPC: e500: Implement TLB1-in-TLB0 mapping
  KVM: PPC: E500: Make clear_tlb_refs and clear_tlb1_bitmap static
  KVM: PPC: E500: Remove kvmppc_e500_tlbil_all usage from guest TLB
    code

 arch/powerpc/kvm/Makefile        |    9 +-
 arch/powerpc/kvm/e500.h          |    1 +
 arch/powerpc/kvm/e500_mmu.c      |  809 +++++++++++++++++++++
 arch/powerpc/kvm/e500_mmu_host.c |  699 +++++++++++++++++++
 arch/powerpc/kvm/e500_mmu_host.h |   18 +
 arch/powerpc/kvm/e500_tlb.c      | 1430 --------------------------------------
 6 files changed, 1533 insertions(+), 1433 deletions(-)
 create mode 100644 arch/powerpc/kvm/e500_mmu.c
 create mode 100644 arch/powerpc/kvm/e500_mmu_host.c
 create mode 100644 arch/powerpc/kvm/e500_mmu_host.h
 delete mode 100644 arch/powerpc/kvm/e500_tlb.c

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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux