public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: KVM list <kvm@vger.kernel.org>
Cc: kvm-ppc@vger.kernel.org
Subject: [PATCH 02/15] KVM: PPC: Resolve real-mode handlers through function exports
Date: Fri, 17 Jun 2011 16:49:39 +0200	[thread overview]
Message-ID: <1308322192-11918-3-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1308322192-11918-1-git-send-email-agraf@suse.de>

Up until now, Book3S KVM had variables stored in the kernel that a kernel module
or the kvm code in the kernel could read from to figure out where some real mode
helper functions are located.

This is all unnecessary. The high bits of the EA get ignore in real mode, so we
can just use the pointer as is. Also, it's a lot easier on relocations when we
use the normal way of resolving the address to a function, instead of jumping
through hoops.

This patch fixes compilation with CONFIG_RELOCATABLE=y.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/powerpc/include/asm/kvm_book3s.h |    4 ++--
 arch/powerpc/kvm/book3s.c             |    4 ++--
 arch/powerpc/kvm/book3s_exports.c     |    4 ++--
 arch/powerpc/kvm/book3s_rmhandlers.S  |    8 --------
 4 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h
index d62e703..70c409b 100644
--- a/arch/powerpc/include/asm/kvm_book3s.h
+++ b/arch/powerpc/include/asm/kvm_book3s.h
@@ -133,8 +133,8 @@ extern void kvmppc_giveup_ext(struct kvm_vcpu *vcpu, ulong msr);
 extern int kvmppc_emulate_paired_single(struct kvm_run *run, struct kvm_vcpu *vcpu);
 extern pfn_t kvmppc_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn);
 
-extern ulong kvmppc_trampoline_lowmem;
-extern ulong kvmppc_trampoline_enter;
+extern void kvmppc_handler_lowmem_trampoline(void);
+extern void kvmppc_handler_trampoline_enter(void);
 extern void kvmppc_rmcall(ulong srr0, ulong srr1);
 extern void kvmppc_load_up_fpu(void);
 extern void kvmppc_load_up_altivec(void);
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
index 0f95b5c..73fdab8 100644
--- a/arch/powerpc/kvm/book3s.c
+++ b/arch/powerpc/kvm/book3s.c
@@ -1342,8 +1342,8 @@ struct kvm_vcpu *kvmppc_core_vcpu_create(struct kvm *kvm, unsigned int id)
 	vcpu_book3s->slb_nr = 64;
 
 	/* remember where some real-mode handlers are */
-	vcpu->arch.trampoline_lowmem = kvmppc_trampoline_lowmem;
-	vcpu->arch.trampoline_enter = kvmppc_trampoline_enter;
+	vcpu->arch.trampoline_lowmem = (ulong)kvmppc_handler_lowmem_trampoline;
+	vcpu->arch.trampoline_enter = (ulong)kvmppc_handler_trampoline_enter;
 	vcpu->arch.highmem_handler = (ulong)kvmppc_handler_highmem;
 #ifdef CONFIG_PPC_BOOK3S_64
 	vcpu->arch.rmcall = *(ulong*)kvmppc_rmcall;
diff --git a/arch/powerpc/kvm/book3s_exports.c b/arch/powerpc/kvm/book3s_exports.c
index 1dd5a1d..f94fd9a 100644
--- a/arch/powerpc/kvm/book3s_exports.c
+++ b/arch/powerpc/kvm/book3s_exports.c
@@ -20,8 +20,8 @@
 #include <linux/module.h>
 #include <asm/kvm_book3s.h>
 
-EXPORT_SYMBOL_GPL(kvmppc_trampoline_enter);
-EXPORT_SYMBOL_GPL(kvmppc_trampoline_lowmem);
+EXPORT_SYMBOL_GPL(kvmppc_handler_trampoline_enter);
+EXPORT_SYMBOL_GPL(kvmppc_handler_lowmem_trampoline);
 EXPORT_SYMBOL_GPL(kvmppc_rmcall);
 EXPORT_SYMBOL_GPL(kvmppc_load_up_fpu);
 #ifdef CONFIG_ALTIVEC
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S
index 1a1b344..5f5d074 100644
--- a/arch/powerpc/kvm/book3s_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_rmhandlers.S
@@ -251,12 +251,4 @@ define_load_up(altivec)
 define_load_up(vsx)
 #endif
 
-.global kvmppc_trampoline_lowmem
-kvmppc_trampoline_lowmem:
-	PPC_LONG kvmppc_handler_lowmem_trampoline - CONFIG_KERNEL_START
-
-.global kvmppc_trampoline_enter
-kvmppc_trampoline_enter:
-	PPC_LONG kvmppc_handler_trampoline_enter - CONFIG_KERNEL_START
-
 #include "book3s_segment.S"
-- 
1.6.0.2


  parent reply	other threads:[~2011-06-17 14:49 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-17 14:49 [PULL 00/15] PPC KVM patch queue 2011-06-15 Alexander Graf
2011-06-17 14:49 ` [PATCH 01/15] KVM: PPC: fix partial application of "exit timing in ticks" Alexander Graf
2011-06-17 14:49 ` Alexander Graf [this message]
2011-06-17 14:49 ` [PATCH 03/15] KVM: Add compat ioctl for KVM_SET_SIGNAL_MASK Alexander Graf
2011-06-19  9:04   ` Avi Kivity
2011-06-19 12:53     ` Alexander Graf
2011-06-19 13:01       ` Avi Kivity
2011-06-17 14:49 ` [PATCH 04/15] powerpc/e500: Save SPEFCSR in flush_spe_to_thread() Alexander Graf
2011-06-17 14:49 ` [PATCH 05/15] powerpc/e500: SPE register saving: take arbitrary struct offset Alexander Graf
2011-06-17 14:49 ` [PATCH 06/15] KVM: PPC: booke: use shadow_msr Alexander Graf
2011-06-17 14:49 ` [PATCH 07/15] KVM: PPC: e500: Save/restore SPE state Alexander Graf
2011-06-17 14:49 ` [PATCH 08/15] KVM: PPC: e500: Disable preloading TLB1 in tlb_load() Alexander Graf
2011-06-17 14:49 ` [PATCH 09/15] KVM: PPC: e500: don't use MAS0 as intermediate storage Alexander Graf
2011-06-17 14:49 ` [PATCH 10/15] KVM: PPC: e500: Eliminate shadow_pages[], and use pfns instead Alexander Graf
2011-06-17 14:49 ` [PATCH 11/15] KVM: PPC: e500: Support large page mappings of PFNMAP vmas Alexander Graf
2011-06-17 14:49 ` [PATCH 12/15] KVM: PPC: e500: enable magic page Alexander Graf
2011-06-17 14:49 ` [PATCH 13/15] KVM: PPC: e500: Stop keeping shadow TLB Alexander Graf
2011-06-17 14:49 ` [PATCH 14/15] KVM: PPC: e500: Add shadow PID support Alexander Graf
2011-06-17 14:49 ` [PATCH 15/15] KVM: PPC: e500: Don't search over the entire TLB0 Alexander Graf
2011-06-19  9:11 ` [PULL 00/15] PPC KVM patch queue 2011-06-15 Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1308322192-11918-3-git-send-email-agraf@suse.de \
    --to=agraf@suse.de \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox