All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v4
@ 2009-09-29  8:17 Alexander Graf
  2009-09-30  8:42 ` Avi Kivity
                   ` (12 more replies)
  0 siblings, 13 replies; 245+ messages in thread
From: Alexander Graf @ 2009-09-29  8:17 UTC (permalink / raw)
  To: kvm-ppc

KVM for PowerPC only supports embedded cores at the moment.

While it makes sense to virtualize on small machines, it's even more fun
to do so on big boxes. So I figured we need KVM for PowerPC64 as well.

This patchset implements KVM support for Book3s_64 hosts and guest support
for Book3s_64 and G3/G4.

To really make use of this, you also need a recent version of qemu.


Don't want to apply patches? Get the git tree!

$ git clone git://csgraf.de/kvm
$ git checkout origin/ppc-v4

V1 -> V2:

 - extend sregs with padding
 - new naming scheme (ppc64 -> book3s_64; 74xx -> book3s_32)
 - to_phys -> in-kernel tophys()
 - loadimm -> LOAD_REG_IMMEDIATE
 - call .ko kvm.ko
 - set magic paca bit later
 - run guest code with PACA->soft_enabled=true
 - pt_regs for host state saving (guest too?)
 - only do HV dcbz trick on 970
 - refuse to run on LPAR because of missing SLB pieces

V2 -> V3:

 - fix DAR/DSISR saving
 - allow running on LPAR by modifying the SLB shadow
 - change the SLB implementation to use a mem-backed cache and do
   full world switch on enter/exit. gets rid of "context" magic
 - be more aggressive about DEC injection
 - remove fast ld/st because we're always in host context
 - don't use SPRGs in real->paged transition
 - implement dirty log
 - remove MMIO speedup code
 - SPRG cleanup
   - rename SPRG3 -> SPRN_SPRG_PACA
   - rename SPRG1 -> SPRN_SPRG_SCRATCH0
   - don't use SPRG2

V3 -> V4:

 - use context_id instead of mm_alloc
 - export less

TODO:

 - use MMU Notifiers

Alexander Graf (27):
  Move dirty logging code to sub-arch
  Pass PVR in sregs
  Add Book3s definitions
  Add Book3s fields to vcpu structs
  Add asm/kvm_book3s.h
  Add Book3s_64 intercept helpers
  Add book3s_64 highmem asm code
  Add SLB switching code for entry/exit
  Add interrupt handling code
  Add book3s.c
  Add book3s_64 Host MMU handling
  Add book3s_64 guest MMU
  Add book3s_32 guest MMU
  Add book3s_64 specific opcode emulation
  Add mfdec emulation
  Add desktop PowerPC specific emulation
  Make head_64.S aware of KVM real mode code
  Add Book3s_64 offsets to asm-offsets.c
  Export symbols for KVM module
  Split init_new_context and destroy_context
  Export KVM symbols for module
  Add fields to PACA
  Export new PACA constants in asm-offsets
  Include Book3s_64 target in buildsystem
  Fix trace.h
  Enable 32bit dirty log pointers on 64bit host
  Use Little Endian for Dirty Bitmap

 arch/powerpc/include/asm/exception-64s.h     |    2 +
 arch/powerpc/include/asm/kvm.h               |    2 +
 arch/powerpc/include/asm/kvm_asm.h           |   39 ++
 arch/powerpc/include/asm/kvm_book3s.h        |  136 ++++
 arch/powerpc/include/asm/kvm_book3s_64_asm.h |   58 ++
 arch/powerpc/include/asm/kvm_host.h          |   75 ++-
 arch/powerpc/include/asm/kvm_ppc.h           |    1 +
 arch/powerpc/include/asm/mmu_context.h       |    5 +
 arch/powerpc/include/asm/paca.h              |    9 +
 arch/powerpc/kernel/asm-offsets.c            |   18 +
 arch/powerpc/kernel/exceptions-64s.S         |    8 +
 arch/powerpc/kernel/head_64.S                |    7 +
 arch/powerpc/kernel/ppc_ksyms.c              |    3 +-
 arch/powerpc/kernel/time.c                   |    1 +
 arch/powerpc/kvm/Kconfig                     |   17 +
 arch/powerpc/kvm/Makefile                    |   27 +-
 arch/powerpc/kvm/book3s.c                    |  919 ++++++++++++++++++++++++++
 arch/powerpc/kvm/book3s_32_mmu.c             |  354 ++++++++++
 arch/powerpc/kvm/book3s_64_emulate.c         |  338 ++++++++++
 arch/powerpc/kvm/book3s_64_exports.c         |   24 +
 arch/powerpc/kvm/book3s_64_interrupts.S      |  392 +++++++++++
 arch/powerpc/kvm/book3s_64_mmu.c             |  469 +++++++++++++
 arch/powerpc/kvm/book3s_64_mmu_host.c        |  412 ++++++++++++
 arch/powerpc/kvm/book3s_64_rmhandlers.S      |  131 ++++
 arch/powerpc/kvm/book3s_64_slb.S             |  277 ++++++++
 arch/powerpc/kvm/booke.c                     |    5 +
 arch/powerpc/kvm/emulate.c                   |   43 ++-
 arch/powerpc/kvm/powerpc.c                   |    5 -
 arch/powerpc/kvm/trace.h                     |    6 +-
 arch/powerpc/mm/hash_utils_64.c              |    2 +
 arch/powerpc/mm/mmu_context_hash64.c         |   24 +-
 virt/kvm/kvm_main.c                          |   10 +-
 32 files changed, 3799 insertions(+), 20 deletions(-)
 create mode 100644 arch/powerpc/include/asm/kvm_book3s.h
 create mode 100644 arch/powerpc/include/asm/kvm_book3s_64_asm.h
 create mode 100644 arch/powerpc/kvm/book3s.c
 create mode 100644 arch/powerpc/kvm/book3s_32_mmu.c
 create mode 100644 arch/powerpc/kvm/book3s_64_emulate.c
 create mode 100644 arch/powerpc/kvm/book3s_64_exports.c
 create mode 100644 arch/powerpc/kvm/book3s_64_interrupts.S
 create mode 100644 arch/powerpc/kvm/book3s_64_mmu.c
 create mode 100644 arch/powerpc/kvm/book3s_64_mmu_host.c
 create mode 100644 arch/powerpc/kvm/book3s_64_rmhandlers.S
 create mode 100644 arch/powerpc/kvm/book3s_64_slb.S


^ permalink raw reply	[flat|nested] 245+ messages in thread
* [PATCH 11/27] Add book3s_64 Host MMU handling
@ 2009-09-29  8:18 Alexander Graf
  0 siblings, 0 replies; 245+ messages in thread
From: Alexander Graf @ 2009-09-29  8:18 UTC (permalink / raw)
  To: kvm-ppc

We designed the Book3S port of KVM as modular as possible. Most
of the code could be easily used on a Book3S_32 host as well.

The main difference between 32 and 64 bit cores is the MMU. To keep
things well separated, we treat the book3s_64 MMU as one possible compile
option.

This patch adds all the MMU helpers the rest of the code needs in
order to modify the host's MMU, like setting PTEs and segments.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/powerpc/kvm/book3s_64_mmu_host.c |  412 +++++++++++++++++++++++++++++++++
 1 files changed, 412 insertions(+), 0 deletions(-)
 create mode 100644 arch/powerpc/kvm/book3s_64_mmu_host.c

diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c b/arch/powerpc/kvm/book3s_64_mmu_host.c
new file mode 100644
index 0000000..507f770
--- /dev/null
+++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) 2009 SUSE Linux Products GmbH. All rights reserved.
+ *
+ * Authors:
+ *     Alexander Graf <agraf@suse.de>
+ *     Kevin Wolf <mail@kevin-wolf.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <linux/kvm_host.h>
+
+#include <asm/kvm_ppc.h>
+#include <asm/kvm_book3s.h>
+#include <asm/mmu-hash64.h>
+#include <asm/machdep.h>
+#include <asm/mmu_context.h>
+#include <asm/hw_irq.h>
+
+#define PTE_SIZE 12
+#define VSID_ALL 0
+
+// #define DEBUG_MMU
+// #define DEBUG_SLB
+
+void kvmppc_mmu_pte_flush(struct kvm_vcpu *vcpu, u64 guest_ea, u64 ea_mask)
+{
+	int i;
+
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing %d Shadow PTEs: 0x%llx & 0x%llx\n",
+		vcpu->arch.hpte_cache_offset, guest_ea, ea_mask);
+#endif
+	BUG_ON(vcpu->arch.hpte_cache_offset > HPTEG_CACHE_NUM);
+	guest_ea &= ea_mask;
+	for (i=0; i<vcpu->arch.hpte_cache_offset; i++) {
+		struct hpte_cache *pte;
+
+		pte = &vcpu->arch.hpte_cache[i];
+		if (!pte->host_va)
+			continue;
+
+		if ((pte->pte.eaddr & ea_mask) = guest_ea) {
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing SPT %d: 0x%llx (0x%llx) -> 0x%llx\n", i, pte->pte.eaddr, pte->pte.vpage, pte->host_va);
+#endif
+			ppc_md.hpte_invalidate(pte->slot, pte->host_va,
+					       MMU_PAGE_4K, MMU_SEGSIZE_256M,
+					       false);
+			pte->host_va = 0;
+			kvm_release_pfn_dirty(pte->pfn);
+		}
+	}
+
+	/* Doing a complete flush -> start from scratch */
+	if (!ea_mask)
+		vcpu->arch.hpte_cache_offset = 0;
+}
+
+void kvmppc_mmu_pte_vflush(struct kvm_vcpu *vcpu, u64 guest_vp, u64 vp_mask)
+{
+	int i;
+
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing %d Shadow vPTEs: 0x%llx & 0x%llx\n",
+		vcpu->arch.hpte_cache_offset, guest_vp, vp_mask);
+#endif
+	BUG_ON(vcpu->arch.hpte_cache_offset > HPTEG_CACHE_NUM);
+	guest_vp &= vp_mask;
+	for (i=0; i<vcpu->arch.hpte_cache_offset; i++) {
+		struct hpte_cache *pte;
+
+		pte = &vcpu->arch.hpte_cache[i];
+		if (!pte->host_va)
+			continue;
+
+		if ((pte->pte.vpage & vp_mask) = guest_vp) {
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing SPT %d: 0x%llx (0x%llx) -> 0x%llx\n", i, pte->pte.eaddr, pte->pte.vpage, pte->host_va);
+#endif
+			ppc_md.hpte_invalidate(pte->slot, pte->host_va,
+					       MMU_PAGE_4K, MMU_SEGSIZE_256M,
+					       false);
+			pte->host_va = 0;
+			kvm_release_pfn_dirty(pte->pfn);
+		}
+	}
+}
+
+void kvmppc_mmu_pte_pflush(struct kvm_vcpu *vcpu, u64 pa_start, u64 pa_end)
+{
+	int i;
+
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing %d Shadow pPTEs: 0x%llx & 0x%llx\n",
+		vcpu->arch.hpte_cache_offset, guest_pa, pa_mask);
+#endif
+	BUG_ON(vcpu->arch.hpte_cache_offset > HPTEG_CACHE_NUM);
+
+	for (i=0; i<vcpu->arch.hpte_cache_offset; i++) {
+		struct hpte_cache *pte;
+
+		pte = &vcpu->arch.hpte_cache[i];
+		if (!pte->host_va)
+			continue;
+
+		if ((pte->pte.raddr >= pa_start) && (pte->pte.raddr < pa_end)) {
+#ifdef DEBUG_MMU
+	printk(KERN_INFO "KVM: Flushing SPT %d: 0x%llx (0x%llx) -> 0x%llx\n", i, pte->pte.eaddr, pte->pte.raddr, pte->host_va);
+#endif
+			ppc_md.hpte_invalidate(pte->slot, pte->host_va,
+					       MMU_PAGE_4K, MMU_SEGSIZE_256M,
+					       false);
+			pte->host_va = 0;
+			kvm_release_pfn_dirty(pte->pfn);
+		}
+	}
+}
+
+struct kvmppc_pte *kvmppc_mmu_find_pte(struct kvm_vcpu *vcpu, u64 ea, bool data)
+{
+	int i;
+	u64 guest_vp;
+
+	guest_vp = vcpu->arch.mmu.ea_to_vp(vcpu, ea, false);
+	for (i=0; i<vcpu->arch.hpte_cache_offset; i++) {
+		struct hpte_cache *pte;
+
+		pte = &vcpu->arch.hpte_cache[i];
+		if (!pte->host_va)
+			continue;
+
+		if (pte->pte.vpage = guest_vp)
+			return &pte->pte;
+	}
+
+	return NULL;
+}
+
+static int kvmppc_mmu_hpte_cache_next(struct kvm_vcpu *vcpu)
+{
+	if (vcpu->arch.hpte_cache_offset = HPTEG_CACHE_NUM)
+		kvmppc_mmu_pte_flush(vcpu, 0, 0);
+
+	return vcpu->arch.hpte_cache_offset++;
+}
+
+/* We keep 512 gvsid->hvsid entries, mapping the guest ones to the array using
+ * a hash, so we don't waste cycles on looping */
+static u16 kvmppc_sid_hash(struct kvm_vcpu *vcpu, u64 gvsid)
+{
+	return (u16)(((gvsid >> (SID_MAP_BITS * 7)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 6)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 5)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 4)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 3)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 2)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 1)) & SID_MAP_MASK) ^
+		     ((gvsid >> (SID_MAP_BITS * 0)) & SID_MAP_MASK));
+}
+
+
+static struct kvmppc_sid_map *find_sid_vsid(struct kvm_vcpu *vcpu, u64 gvsid)
+{
+	struct kvmppc_sid_map *map;
+
+	if (vcpu->arch.msr & MSR_PR)
+		gvsid |= VSID_PR;
+
+	map = &to_book3s(vcpu)->sid_map[kvmppc_sid_hash(vcpu, gvsid)];
+	if (map->guest_vsid = gvsid) {
+#ifdef DEBUG_SLB
+		printk(KERN_INFO "SLB: Searching 0x%llx -> 0x%llx\n", gvsid, map->host_vsid);
+#endif
+		return map;
+	}
+
+	map = &to_book3s(vcpu)->sid_map[SID_MAP_MASK - kvmppc_sid_hash(vcpu, gvsid)];
+	if (map->guest_vsid = gvsid) {
+#ifdef DEBUG_SLB
+		printk(KERN_INFO "SLB: Searching 0x%llx -> 0x%llx\n", gvsid, map->host_vsid);
+#endif
+		return map;
+	}
+
+#ifdef DEBUG_SLB
+	printk(KERN_INFO "SLB: Searching 0x%llx -> not found\n", gvsid);
+#endif
+	return NULL;
+}
+
+int kvmppc_mmu_map_page(struct kvm_vcpu *vcpu, struct kvmppc_pte *orig_pte)
+{
+	pfn_t hpaddr;
+	ulong hash, hpteg, va;
+	u64 vsid;
+	int ret;
+	int rflags = 0x192;
+	int vflags = 0;
+	int attempt = 0;
+	struct kvmppc_sid_map *map;
+
+	/* Get host physical address for gpa */
+	down_read(&current->mm->mmap_sem);
+	hpaddr = gfn_to_pfn(vcpu->kvm, orig_pte->raddr >> PAGE_SHIFT);
+	if (kvm_is_error_hva(hpaddr)) {
+		printk(KERN_INFO "Couldn't get guest page for gfn %llx!\n", orig_pte->eaddr);
+		up_read(&current->mm->mmap_sem);
+		return -EINVAL;
+	}
+	hpaddr <<= PAGE_SHIFT;
+#if PAGE_SHIFT = 12
+#elif PAGE_SHIFT = 16
+	hpaddr |= orig_pte->raddr & 0xf000;
+#else
+#error Unknown page size
+#endif
+
+	up_read(&current->mm->mmap_sem);
+
+	/* and write the mapping ea -> hpa into the pt */
+	vcpu->arch.mmu.esid_to_vsid(vcpu, orig_pte->eaddr >> SID_SHIFT, &vsid);
+	map = find_sid_vsid(vcpu, vsid);
+	if (!map) {
+		kvmppc_mmu_map_segment(vcpu, orig_pte->eaddr);
+		map = find_sid_vsid(vcpu, vsid);
+	}
+	BUG_ON(!map);
+
+	vsid = map->host_vsid;
+	va = hpt_va(orig_pte->eaddr, vsid, MMU_SEGSIZE_256M);
+
+	if (!orig_pte->may_write)
+		rflags |= HPTE_R_PP;
+	else
+		mark_page_dirty(vcpu->kvm, orig_pte->raddr >> PAGE_SHIFT);
+
+	if (!orig_pte->may_execute)
+		rflags |= HPTE_R_N;
+
+	hash = hpt_hash(va, PTE_SIZE, MMU_SEGSIZE_256M);
+
+map_again:
+	hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP);
+
+	/* In case we tried normal mapping already, let's nuke old entries */
+	if (attempt > 1)
+		if (ppc_md.hpte_remove(hpteg) < 0)
+			return -1;
+
+	ret = ppc_md.hpte_insert(hpteg, va, hpaddr, rflags, vflags, MMU_PAGE_4K, MMU_SEGSIZE_256M);
+
+	if (ret < 0) {
+		/* If we couldn't map a primary PTE, try a secondary */
+#ifdef USE_SECONDARY
+		hash = ~hash;
+		attempt++;
+		if (attempt % 2)
+			vflags = HPTE_V_SECONDARY;
+		else
+			vflags = 0;
+#else
+		attempt = 2;
+#endif
+		goto map_again;
+	} else {
+		int hpte_id = kvmppc_mmu_hpte_cache_next(vcpu);
+		struct hpte_cache *pte = &vcpu->arch.hpte_cache[hpte_id];
+#ifdef DEBUG_MMU
+		printk(KERN_INFO "KVM: %c%c Map 0x%llx: [%lx] 0x%lx (0x%llx) -> %lx\n",
+				 ((rflags & HPTE_R_PP) = 3) ? '-' : 'w',
+				 (rflags & HPTE_R_N) ? '-' : 'x',
+				 orig_pte->eaddr, hpteg, va, orig_pte->vpage,
+				 hpaddr);
+#endif
+		pte->slot = hpteg + (ret & 7);
+		pte->host_va = va;
+		pte->pte = *orig_pte;
+		pte->pfn = hpaddr >> PAGE_SHIFT;
+	}
+
+	return 0;
+}
+
+static struct kvmppc_sid_map *create_sid_map(struct kvm_vcpu *vcpu, u64 gvsid)
+{
+	struct kvmppc_sid_map *map;
+	struct kvmppc_vcpu_book3s *vcpu_book3s = to_book3s(vcpu);
+	static int backwards_map = 0;
+
+	if (vcpu->arch.msr & MSR_PR)
+		gvsid |= VSID_PR;
+
+	/* We might get collisions that trap in preceding order, so let's
+	   map them differently */
+	if (backwards_map)
+		map = &to_book3s(vcpu)->sid_map[SID_MAP_MASK - kvmppc_sid_hash(vcpu, gvsid)];
+	else
+		map = &to_book3s(vcpu)->sid_map[kvmppc_sid_hash(vcpu, gvsid)];
+	backwards_map = !backwards_map;
+
+	// Uh-oh ... out of mappings. Let's flush!
+	if (vcpu_book3s->vsid_next = vcpu_book3s->vsid_max) {
+		vcpu_book3s->vsid_next = vcpu_book3s->vsid_first;
+		memset(vcpu_book3s->sid_map, 0,
+		       sizeof(struct kvmppc_sid_map) * SID_MAP_NUM);
+		kvmppc_mmu_pte_flush(vcpu, 0, 0);
+		kvmppc_mmu_flush_segments(vcpu);
+	}
+	map->host_vsid = vcpu_book3s->vsid_next++;
+
+	map->guest_vsid = gvsid;
+	map->valid = true;
+
+	return map;
+}
+
+static int kvmppc_mmu_next_segment(struct kvm_vcpu *vcpu, ulong esid)
+{
+	int i;
+	int max_slb_size = 64;
+	int found_inval = -1;
+	int r;
+
+	if (!get_paca()->kvm_slb_max)
+		get_paca()->kvm_slb_max = 1;
+
+	/* Are we overwriting? */
+	for (i = 1; i < get_paca()->kvm_slb_max; i++) {
+		if (!(get_paca()->kvm_slb[i].esid & SLB_ESID_V))
+			found_inval = i;
+		else if ((get_paca()->kvm_slb[i].esid & ESID_MASK) = esid)
+			return i;
+	}
+
+	/* Found a spare entry that was invalidated before */
+	if (found_inval > 0)
+		return found_inval;
+
+	/* No spare invalid entry, so create one */
+
+	if (mmu_slb_size < 64)
+		max_slb_size = mmu_slb_size;
+
+	/* Overflowing -> purge */
+	if ((get_paca()->kvm_slb_max) = max_slb_size)
+		kvmppc_mmu_flush_segments(vcpu);
+
+	r = get_paca()->kvm_slb_max;
+	get_paca()->kvm_slb_max++;
+
+	return r;
+}
+
+int kvmppc_mmu_map_segment(struct kvm_vcpu *vcpu, ulong eaddr)
+{
+	u64 esid = eaddr >> SID_SHIFT;
+	u64 slb_esid = (eaddr & ESID_MASK) | SLB_ESID_V;
+	u64 slb_vsid = SLB_VSID_USER;
+	u64 gvsid;
+	int slb_index;
+	struct kvmppc_sid_map *map;
+
+	slb_index = kvmppc_mmu_next_segment(vcpu, eaddr & ESID_MASK);
+
+	if (vcpu->arch.mmu.esid_to_vsid(vcpu, esid, &gvsid)) {
+		/* Invalidate an entry */
+		get_paca()->kvm_slb[slb_index].esid = 0;
+		return -ENOENT;
+	}
+
+	map = find_sid_vsid(vcpu, gvsid);
+	if (!map)
+		map = create_sid_map(vcpu, gvsid);
+
+	map->guest_esid = esid;
+
+	slb_vsid |= (map->host_vsid << 12);
+	slb_vsid &= ~SLB_VSID_KP;
+	slb_esid |= slb_index;
+
+	get_paca()->kvm_slb[slb_index].esid = slb_esid;
+	get_paca()->kvm_slb[slb_index].vsid = slb_vsid;
+
+#ifdef DEBUG_SLB
+	printk(KERN_INFO "slbmte %#llx, %#llx\n", slb_vsid, slb_esid);
+#endif
+
+	return 0;
+}
+
+void kvmppc_mmu_flush_segments(struct kvm_vcpu *vcpu)
+{
+	get_paca()->kvm_slb_max = 1;
+	get_paca()->kvm_slb[0].esid = 0;
+}
+
+void kvmppc_mmu_destroy(struct kvm_vcpu *vcpu)
+{
+	kvmppc_mmu_pte_flush(vcpu, 0, 0);
+}
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 245+ messages in thread

end of thread, other threads:[~2009-11-05 10:09 UTC | newest]

Thread overview: 245+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-29  8:17 [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v4 Alexander Graf
2009-09-30  8:42 ` Avi Kivity
2009-09-30  8:47 ` Alexander Graf
2009-09-30  8:59 ` Avi Kivity
2009-09-30  9:11 ` Alexander Graf
2009-09-30  9:24 ` Avi Kivity
2009-09-30  9:37 ` Alexander Graf
2009-10-02  0:26 ` Benjamin Herrenschmidt
2009-10-02  0:32 ` Benjamin Herrenschmidt
2009-10-03 10:08 ` Avi Kivity
2009-10-03 10:58 ` Benjamin Herrenschmidt
2009-10-03 11:10 ` Benjamin Herrenschmidt
2009-10-21 15:03 ` [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v5 Alexander Graf
2009-10-21 15:03   ` Alexander Graf
2009-10-21 15:03   ` [PATCH 01/27] Move dirty logging code to sub-arch Alexander Graf
2009-10-21 15:03     ` Alexander Graf
     [not found]     ` <1256137413-15256-2-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03       ` [PATCH 02/27] Pass PVR in sregs Alexander Graf
2009-10-21 15:03         ` Alexander Graf
2009-10-21 15:03         ` [PATCH 03/27] Add Book3s definitions Alexander Graf
2009-10-21 15:03           ` Alexander Graf
2009-10-21 15:03           ` [PATCH 04/27] Add Book3s fields to vcpu structs Alexander Graf
2009-10-21 15:03             ` Alexander Graf
2009-10-21 15:03             ` [PATCH 05/27] Add asm/kvm_book3s.h Alexander Graf
2009-10-21 15:03               ` Alexander Graf
2009-10-21 15:03               ` [PATCH 06/27] Add Book3s_64 intercept helpers Alexander Graf
2009-10-21 15:03                 ` Alexander Graf
2009-10-21 15:03                 ` [PATCH 07/27] Add book3s_64 highmem asm code Alexander Graf
2009-10-21 15:03                   ` Alexander Graf
     [not found]                   ` <1256137413-15256-8-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                     ` [PATCH 08/27] Add SLB switching code for entry/exit Alexander Graf
2009-10-21 15:03                       ` Alexander Graf
     [not found]                       ` <1256137413-15256-9-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                         ` [PATCH 09/27] Add interrupt handling code Alexander Graf
2009-10-21 15:03                           ` Alexander Graf
     [not found]                           ` <1256137413-15256-10-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                             ` [PATCH 10/27] Add book3s.c Alexander Graf
2009-10-21 15:03                               ` Alexander Graf
2009-10-21 15:03                               ` [PATCH 11/27] Add book3s_64 Host MMU handling Alexander Graf
2009-10-21 15:03                                 ` Alexander Graf
2009-10-21 15:03                                 ` [PATCH 12/27] Add book3s_64 guest MMU Alexander Graf
2009-10-21 15:03                                   ` Alexander Graf
     [not found]                                   ` <1256137413-15256-13-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                     ` [PATCH 13/27] Add book3s_32 " Alexander Graf
2009-10-21 15:03                                       ` Alexander Graf
     [not found]                                       ` <1256137413-15256-14-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                         ` [PATCH 14/27] Add book3s_64 specific opcode emulation Alexander Graf
2009-10-21 15:03                                           ` Alexander Graf
     [not found]                                           ` <1256137413-15256-15-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                             ` [PATCH 15/27] Add mfdec emulation Alexander Graf
2009-10-21 15:03                                               ` Alexander Graf
     [not found]                                               ` <1256137413-15256-16-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                 ` [PATCH 16/27] Add desktop PowerPC specific emulation Alexander Graf
2009-10-21 15:03                                                   ` Alexander Graf
     [not found]                                                   ` <1256137413-15256-17-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                     ` [PATCH 17/27] Make head_64.S aware of KVM real mode code Alexander Graf
2009-10-21 15:03                                                       ` Alexander Graf
2009-10-21 15:03                                                       ` [PATCH 18/27] Add Book3s_64 offsets to asm-offsets.c Alexander Graf
2009-10-21 15:03                                                         ` Alexander Graf
     [not found]                                                         ` <1256137413-15256-19-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                           ` [PATCH 19/27] Export symbols for KVM module Alexander Graf
2009-10-21 15:03                                                             ` Alexander Graf
     [not found]                                                             ` <1256137413-15256-20-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                               ` [PATCH 20/27] Split init_new_context and destroy_context Alexander Graf
2009-10-21 15:03                                                                 ` Alexander Graf
     [not found]                                                                 ` <1256137413-15256-21-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                                   ` [PATCH 21/27] Export KVM symbols for module Alexander Graf
2009-10-21 15:03                                                                     ` Alexander Graf
2009-10-21 15:03                                                                     ` [PATCH 22/27] Add fields to PACA Alexander Graf
2009-10-21 15:03                                                                       ` Alexander Graf
     [not found]                                                                       ` <1256137413-15256-23-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                                         ` [PATCH 23/27] Export new PACA constants in asm-offsets Alexander Graf
2009-10-21 15:03                                                                           ` Alexander Graf
2009-10-21 15:03                                                                           ` [PATCH 24/27] Include Book3s_64 target in buildsystem Alexander Graf
2009-10-21 15:03                                                                             ` Alexander Graf
     [not found]                                                                             ` <1256137413-15256-25-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                                               ` [PATCH 25/27] Fix trace.h Alexander Graf
2009-10-21 15:03                                                                                 ` Alexander Graf
2009-10-21 15:03                                                                                 ` [PATCH 26/27] Use Little Endian for Dirty Bitmap Alexander Graf
2009-10-21 15:03                                                                                   ` Alexander Graf
     [not found]                                                                                   ` <1256137413-15256-27-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-21 15:03                                                                                     ` [PATCH 27/27] Use hrtimers for the decrementer Alexander Graf
2009-10-21 15:03                                                                                       ` Alexander Graf
     [not found]                                                                           ` <1256137413-15256-24-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-29  2:50                                                                             ` [PATCH 23/27] Export new PACA constants in asm-offsets Benjamin Herrenschmidt
2009-10-29  2:50                                                                               ` Benjamin Herrenschmidt
2009-10-29  2:50                                                                         ` [PATCH 22/27] Add fields to PACA Benjamin Herrenschmidt
2009-10-29  2:50                                                                           ` Benjamin Herrenschmidt
2009-10-29  2:48                                                                   ` [PATCH 20/27] Split init_new_context and destroy_context Benjamin Herrenschmidt
2009-10-29  2:48                                                                     ` Benjamin Herrenschmidt
2009-10-29  2:46                                                               ` [PATCH 19/27] Export symbols for KVM module Benjamin Herrenschmidt
2009-10-29  2:46                                                                 ` Benjamin Herrenschmidt
2009-10-29  2:53                                                                 ` Alexander Graf
2009-10-29  2:53                                                                   ` Alexander Graf
2009-10-29  2:45                                                           ` [PATCH 18/27] Add Book3s_64 offsets to asm-offsets.c Benjamin Herrenschmidt
2009-10-29  2:45                                                             ` Benjamin Herrenschmidt
     [not found]                                                       ` <1256137413-15256-18-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-29  2:45                                                         ` [PATCH 17/27] Make head_64.S aware of KVM real mode code Benjamin Herrenschmidt
2009-10-29  2:45                                                           ` Benjamin Herrenschmidt
2009-10-21 15:22   ` [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v5 Alexander Graf
2009-10-21 15:22     ` Alexander Graf
     [not found]   ` <1256137413-15256-1-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-22 13:26     ` Arnd Bergmann
2009-10-22 13:26       ` Arnd Bergmann
2009-10-23  0:33     ` Hollis Blanchard
2009-10-23  0:33       ` Hollis Blanchard
     [not found]       ` <1256258028.7495.34.camel-6XWu2dSDoRTcKpUcGLbliUEOCMrvLtNR@public.gmane.org>
2009-10-25 13:01         ` Avi Kivity
2009-10-25 13:01           ` Avi Kivity
     [not found]           ` <4AE44C14.8040507-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-10-26 21:18             ` Hollis Blanchard
2009-10-26 21:18               ` Hollis Blanchard
2009-10-29  2:55             ` Benjamin Herrenschmidt
2009-10-29  2:55               ` Benjamin Herrenschmidt
2009-10-26 22:46   ` Olof Johansson
2009-10-26 23:06     ` Olof Johansson
     [not found]     ` <20091026230632.GB5366-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>
2009-10-26 23:20       ` Hollis Blanchard
2009-10-26 23:20         ` Hollis Blanchard
2009-10-26 23:21         ` Olof Johansson
2009-10-26 23:21           ` Olof Johansson
2009-10-27  8:56           ` Avi Kivity
2009-10-27  8:56             ` Avi Kivity
2009-10-27 13:42             ` Alexander Graf
2009-10-27 13:42               ` Alexander Graf
     [not found]               ` <8E92E3B9-39D5-4D71-8B8E-96B49430B67B-l3A5Bk7waGM@public.gmane.org>
2009-10-27 15:49                 ` Avi Kivity
2009-10-27 15:49                   ` Avi Kivity
2009-10-30 15:47 ` [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v6 Alexander Graf
2009-10-30 15:47   ` Alexander Graf
2009-10-30 15:47   ` Alexander Graf
2009-10-30 15:47   ` [PATCH 02/27] Pass PVR in sregs Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 04/27] Add Book3s fields to vcpu structs Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 05/27] Add asm/kvm_book3s.h Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 06/27] Add Book3s_64 intercept helpers Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
     [not found]   ` <1256917647-6200-1-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-30 15:47     ` [PATCH 01/27] Move dirty logging code to sub-arch Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 03/27] Add Book3s definitions Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 07/27] Add book3s_64 highmem asm code Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 08/27] Add SLB switching code for entry/exit Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-11-01 23:23       ` Michael Neuling
2009-11-01 23:23         ` Michael Neuling
2009-11-01 23:23         ` Michael Neuling
     [not found]         ` <6695.1257117827-/owAOxkjmzZAfugRpC6u6w@public.gmane.org>
2009-11-02  9:23           ` Alexander Graf
2009-11-02  9:23             ` Alexander Graf
2009-11-02  9:23             ` Alexander Graf
     [not found]             ` <00BF2D99-F2CE-4204-B4B4-0D113FD54CE6-l3A5Bk7waGM@public.gmane.org>
2009-11-02  9:39               ` Michael Neuling
2009-11-02  9:39                 ` Michael Neuling
2009-11-02  9:39                 ` Michael Neuling
2009-11-02  9:59                 ` Alexander Graf
2009-11-02  9:59                   ` Alexander Graf
2009-11-02  9:59                   ` Alexander Graf
2009-10-30 15:47     ` [PATCH 09/27] Add interrupt handling code Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 10/27] Add book3s.c Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 12/27] Add book3s_64 guest MMU Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 13/27] Add book3s_32 " Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 14/27] Add book3s_64 specific opcode emulation Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-11-03  8:47       ` Segher Boessenkool
2009-11-03  8:47         ` Segher Boessenkool
     [not found]         ` <A1CBD511-FF08-48BB-A8D6-9F66E20F770B-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
2009-11-03  9:06           ` Alexander Graf
2009-11-03  9:06             ` Alexander Graf
2009-11-03  9:06             ` Alexander Graf
2009-11-03 21:38             ` Benjamin Herrenschmidt
2009-11-03 21:38               ` Benjamin Herrenschmidt
2009-11-04  8:43               ` Arnd Bergmann
2009-11-04  8:43                 ` Arnd Bergmann
2009-11-04  8:47                 ` Benjamin Herrenschmidt
2009-11-04  8:47                   ` Benjamin Herrenschmidt
2009-11-04 11:35                   ` Alexander Graf
2009-11-04 11:35                     ` Alexander Graf
2009-11-04 11:35                     ` Alexander Graf
2009-11-05  0:53             ` Segher Boessenkool
2009-11-05  0:53               ` Segher Boessenkool
2009-11-05 10:09               ` Alexander Graf
2009-11-05 10:09                 ` Alexander Graf
2009-11-05 10:09                 ` Alexander Graf
2009-10-30 15:47     ` [PATCH 15/27] Add mfdec emulation Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 16/27] Add desktop PowerPC specific emulation Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 19/27] Export symbols for KVM module Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
     [not found]       ` <1256917647-6200-20-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-10-31  4:37         ` Stephen Rothwell
2009-10-31  4:37           ` Stephen Rothwell
2009-10-31  4:37           ` Stephen Rothwell
     [not found]           ` <20091031153719.10a4e61b.sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org>
2009-10-31 12:02             ` Alexander Graf
2009-10-31 12:02               ` Alexander Graf
2009-10-31 12:02               ` Alexander Graf
2009-10-30 15:47     ` [PATCH 20/27] Split init_new_context and destroy_context Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-31  4:40       ` Stephen Rothwell
2009-10-31  4:40         ` Stephen Rothwell
2009-10-31  4:40         ` Stephen Rothwell
2009-10-31 21:20         ` Alexander Graf
2009-10-31 21:20           ` Alexander Graf
2009-10-31 21:20           ` Alexander Graf
2009-10-31 21:37           ` Benjamin Herrenschmidt
2009-10-31 21:37             ` Benjamin Herrenschmidt
2009-10-30 15:47     ` [PATCH 21/27] Export KVM symbols for module Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 22/27] Add fields to PACA Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47     ` [PATCH 27/27] Use hrtimers for the decrementer Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-10-30 15:47       ` Alexander Graf
2009-11-05  6:03     ` [PATCH 00/27] Add KVM support for Book3s_64 (PPC64) hosts v6 Benjamin Herrenschmidt
2009-11-05  6:03       ` Benjamin Herrenschmidt
2009-11-05  6:03       ` Benjamin Herrenschmidt
2009-10-30 15:47   ` [PATCH 11/27] Add book3s_64 Host MMU handling Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
     [not found]     ` <1256917647-6200-12-git-send-email-agraf-l3A5Bk7waGM@public.gmane.org>
2009-11-01 23:39       ` Michael Neuling
2009-11-01 23:39         ` Michael Neuling
2009-11-01 23:39         ` Michael Neuling
2009-11-02  9:26         ` Alexander Graf
2009-11-02  9:26           ` Alexander Graf
2009-11-02  9:26           ` Alexander Graf
2009-10-30 15:47   ` [PATCH 17/27] Make head_64.S aware of KVM real mode code Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 18/27] Add Book3s_64 offsets to asm-offsets.c Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 23/27] Export new PACA constants in asm-offsets Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 24/27] Include Book3s_64 target in buildsystem Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 25/27] Fix trace.h Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47   ` [PATCH 26/27] Use Little Endian for Dirty Bitmap Alexander Graf
2009-10-30 15:47     ` Alexander Graf
2009-10-30 15:47     ` Alexander Graf
  -- strict thread matches above, loose matches on Subject: below --
2009-09-29  8:18 [PATCH 11/27] Add book3s_64 Host MMU handling Alexander Graf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.