1
0
Fork 0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-01-26 18:43:33 -05:00
linux/arch/powerpc/kvm
Paul Mackerras a4a0f2524a KVM: PPC: Book3S PR: Allow guest to use 64k pages
This adds the code to interpret 64k HPTEs in the guest hashed page
table (HPT), 64k SLB entries, and to tell the guest about 64k pages
in kvm_vm_ioctl_get_smmu_info().  Guest 64k pages are still shadowed
by 4k pages.

This also adds another hash table to the four we have already in
book3s_mmu_hpte.c to allow us to find all the PTEs that we have
instantiated that match a given 64k guest page.

The tlbie instruction changed starting with POWER6 to use a bit in
the RB operand to indicate large page invalidations, and to use other
RB bits to indicate the base and actual page sizes and the segment
size.  64k pages came in slightly earlier, with POWER5++.
We use one bit in vcpu->arch.hflags to indicate that the emulated
cpu supports 64k pages, and another to indicate that it has the new
tlbie definition.

The KVM_PPC_GET_SMMU_INFO ioctl presents a bit of a problem, because
the MMU capabilities depend on which CPU model we're emulating, but it
is a VM ioctl not a VCPU ioctl and therefore doesn't get passed a VCPU
fd.  In addition, commonly-used userspace (QEMU) calls it before
setting the PVR for any VCPU.  Therefore, as a best effort we look at
the first vcpu in the VM and return 64k pages or not depending on its
capabilities.  We also make the PVR default to the host PVR on recent
CPUs that support 1TB segments (and therefore multiple page sizes as
well) so that KVM_PPC_GET_SMMU_INFO will include 64k page and 1TB
segment support on those CPUs.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2013-10-17 14:45:03 +02:00
..
44x.c
44x_emulate.c
44x_tlb.c
44x_tlb.h
book3s.c KVM: PPC: Book3S: Add GET/SET_ONE_REG interface for VRSAVE 2013-10-17 14:44:59 +02:00
book3s_32_mmu.c
book3s_32_mmu_host.c
book3s_32_sr.S
book3s_64_mmu.c KVM: PPC: Book3S PR: Allow guest to use 64k pages 2013-10-17 14:45:03 +02:00
book3s_64_mmu_host.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-07-04 10:29:23 -07:00
book3s_64_mmu_hv.c KVM: PPC: Book3S HV: Store LPCR value for each virtual core 2013-10-17 14:45:01 +02:00
book3s_64_slb.S powerpc: Fix little endian lppaca, slb_shadow and dtl_entry 2013-08-14 15:33:35 +10:00
book3s_64_vio.c ppc: kvm: use anon_inode_getfd() with O_CLOEXEC flag 2013-08-26 13:19:56 +03:00
book3s_64_vio_hv.c
book3s_emulate.c KVM: PPC: Book3S PR: Keep volatile reg values in vcpu rather than shadow_vcpu 2013-10-17 14:45:03 +02:00
book3s_exports.c
book3s_hv.c KVM: PPC: Book3S HV: Don't crash host on unknown guest interrupt 2013-10-17 14:45:02 +02:00
book3s_hv_builtin.c powerpc/kvm: Contiguous memory allocator based RMA allocation 2013-07-08 16:20:20 +02:00
book3s_hv_cma.c powerpc/kvm: Use 256K chunk to track both RMA and hash page table allocation. 2013-07-08 16:21:13 +02:00
book3s_hv_cma.h powerpc/kvm: Use 256K chunk to track both RMA and hash page table allocation. 2013-07-08 16:21:13 +02:00
book3s_hv_interrupts.S
book3s_hv_ras.c
book3s_hv_rm_mmu.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-09-06 10:49:42 -07:00
book3s_hv_rm_xics.c
book3s_hv_rmhandlers.S KVM: PPC: Book3S HV: Support POWER6 compatibility mode on POWER7 2013-10-17 14:45:02 +02:00
book3s_interrupts.S KVM: PPC: Book3S PR: Keep volatile reg values in vcpu rather than shadow_vcpu 2013-10-17 14:45:03 +02:00
book3s_mmu_hpte.c KVM: PPC: Book3S PR: Allow guest to use 64k pages 2013-10-17 14:45:03 +02:00
book3s_paired_singles.c
book3s_pr.c KVM: PPC: Book3S PR: Allow guest to use 64k pages 2013-10-17 14:45:03 +02:00
book3s_pr_papr.c
book3s_rmhandlers.S KVM: PPC: Book3S PR: Keep volatile reg values in vcpu rather than shadow_vcpu 2013-10-17 14:45:03 +02:00
book3s_rtas.c
book3s_segment.S
book3s_xics.c KVM: PPC: Book3S: Fix compile error in XICS emulation 2013-08-28 16:28:47 +02:00
book3s_xics.h
booke.c KVM: PPC: BookE: Add GET/SET_ONE_REG interface for VRSAVE 2013-10-17 14:45:01 +02:00
booke.h
booke_emulate.c
booke_interrupts.S
bookehv_interrupts.S
e500.c
e500.h
e500_emulate.c
e500_mmu.c
e500_mmu_host.c
e500_mmu_host.h
e500mc.c
emulate.c powerpc: Move opcode definitions from kvm/emulate.c to asm/ppc-opcode.h 2013-07-30 15:50:07 -05:00
fpu.S
irq.h
Kconfig powerpc/kvm: Contiguous memory allocator based hash page table allocation 2013-07-08 16:19:58 +02:00
Makefile powerpc/kvm: Contiguous memory allocator based hash page table allocation 2013-07-08 16:19:58 +02:00
mpic.c
powerpc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-09-05 08:50:26 -07:00
timing.c
timing.h
trace.h KVM: PPC: Book3S PR: Keep volatile reg values in vcpu rather than shadow_vcpu 2013-10-17 14:45:03 +02:00