linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init
@ 2012-02-10 10:02 Liu Yu
  2012-02-10 10:02 ` [PATCH v3 2/3] KVM: PPC: epapr: Add idle hcall support for host Liu Yu
  2012-02-10 18:39 ` [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Scott Wood
  0 siblings, 2 replies; 7+ messages in thread
From: Liu Yu @ 2012-02-10 10:02 UTC (permalink / raw)
  To: agraf, kvm-ppc, kvm; +Cc: linuxppc-dev, Liu Yu, B07421

from the kvm guest paravirt init code.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
---
v3:
apply the epapr init for all ppc platform

 arch/powerpc/Kconfig                    |    4 +++
 arch/powerpc/include/asm/epapr_hcalls.h |    8 +++++
 arch/powerpc/kernel/Makefile            |    1 +
 arch/powerpc/kernel/epapr_para.c        |   46 +++++++++++++++++++++++++++++++
 arch/powerpc/kernel/kvm.c               |   13 +++------
 arch/powerpc/kvm/Kconfig                |    1 +
 6 files changed, 64 insertions(+), 9 deletions(-)
 create mode 100644 arch/powerpc/kernel/epapr_para.c

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 47682b6..00bd508 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -196,6 +196,10 @@ config EPAPR_BOOT
 	  Used to allow a board to specify it wants an ePAPR compliant wrapper.
 	default n
 
+config EPAPR_PARA
+	bool
+	default n
+
 config DEFAULT_UIMAGE
 	bool
 	help
diff --git a/arch/powerpc/include/asm/epapr_hcalls.h b/arch/powerpc/include/asm/epapr_hcalls.h
index f3b0c2c..c4b86e4 100644
--- a/arch/powerpc/include/asm/epapr_hcalls.h
+++ b/arch/powerpc/include/asm/epapr_hcalls.h
@@ -148,6 +148,14 @@
 #define EV_HCALL_CLOBBERS2 EV_HCALL_CLOBBERS3, "r5"
 #define EV_HCALL_CLOBBERS1 EV_HCALL_CLOBBERS2, "r4"
 
+extern u32 *epapr_hcall_insts;
+extern int epapr_hcall_insts_len;
+
+static inline void epapr_get_hcall_insts(u32 **instp, int *lenp)
+{
+	*instp = epapr_hcall_insts;
+	*lenp = epapr_hcall_insts_len;
+}
 
 /*
  * We use "uintptr_t" to define a register because it's guaranteed to be a
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index ce4f7f1..1e41c76 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -134,6 +134,7 @@ ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC),)
 obj-y				+= ppc_save_regs.o
 endif
 
+obj-$(CONFIG_EPAPR_PARA)	+= epapr_para.o
 obj-$(CONFIG_KVM_GUEST)		+= kvm.o kvm_emul.o
 
 # Disable GCOV in odd or sensitive code
diff --git a/arch/powerpc/kernel/epapr_para.c b/arch/powerpc/kernel/epapr_para.c
new file mode 100644
index 0000000..7e1561a
--- /dev/null
+++ b/arch/powerpc/kernel/epapr_para.c
@@ -0,0 +1,46 @@
+/*
+ * ePAPR para-virtualization support.
+ *
+ * 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.
+ *
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ */
+
+#include <linux/of.h>
+#include <asm/epapr_hcalls.h>
+#include <asm/cacheflush.h>
+
+u32 *epapr_hcall_insts;
+int epapr_hcall_insts_len;
+
+static int __init epapr_para_init(void)
+{
+	struct device_node *hyper_node;
+	u32 *insts;
+	int len;
+
+	hyper_node = of_find_node_by_path("/hypervisor");
+	if (!hyper_node)
+		return -ENODEV;
+
+	insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);
+	if (!(len % 4) && (len >= (4 * 4))) {
+		epapr_hcall_insts = insts;
+		epapr_hcall_insts_len = len;
+	}
+
+	return 0;
+}
+
+early_initcall(epapr_para_init);
diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c
index b06bdae..2e03ab8 100644
--- a/arch/powerpc/kernel/kvm.c
+++ b/arch/powerpc/kernel/kvm.c
@@ -28,6 +28,7 @@
 #include <asm/sections.h>
 #include <asm/cacheflush.h>
 #include <asm/disassemble.h>
+#include <asm/epapr_hcalls.h>
 
 #define KVM_MAGIC_PAGE		(-4096L)
 #define magic_var(x) KVM_MAGIC_PAGE + offsetof(struct kvm_vcpu_arch_shared, x)
@@ -535,18 +536,12 @@ EXPORT_SYMBOL_GPL(kvm_hypercall);
 static int kvm_para_setup(void)
 {
 	extern u32 kvm_hypercall_start;
-	struct device_node *hyper_node;
 	u32 *insts;
 	int len, i;
 
-	hyper_node = of_find_node_by_path("/hypervisor");
-	if (!hyper_node)
-		return -1;
-
-	insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);
-	if (len % 4)
-		return -1;
-	if (len > (4 * 4))
+	insts = epapr_hcall_insts;
+	len = epapr_hcall_insts_len;
+	if (insts == NULL)
 		return -1;
 
 	for (i = 0; i < (len / 4); i++)
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
index 78133de..cd1ee68 100644
--- a/arch/powerpc/kvm/Kconfig
+++ b/arch/powerpc/kvm/Kconfig
@@ -20,6 +20,7 @@ config KVM
 	bool
 	select PREEMPT_NOTIFIERS
 	select ANON_INODES
+	select EPAPR_PARA
 
 config KVM_BOOK3S_HANDLER
 	bool
-- 
1.7.0.4

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

* [PATCH v3 2/3] KVM: PPC: epapr: Add idle hcall support for host
  2012-02-10 10:02 [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Liu Yu
@ 2012-02-10 10:02 ` Liu Yu
  2012-02-10 10:02   ` [PATCH v3 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest Liu Yu
  2012-02-10 18:39 ` [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Scott Wood
  1 sibling, 1 reply; 7+ messages in thread
From: Liu Yu @ 2012-02-10 10:02 UTC (permalink / raw)
  To: agraf, kvm-ppc, kvm; +Cc: linuxppc-dev, Liu Yu, B07421

And add a new flag definition in kvm_ppc_pvinfo to indicate
whether host support EV_IDLE hcall.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
---
v3:
no change

 arch/powerpc/include/asm/kvm_para.h |   14 ++++++++++++--
 arch/powerpc/kvm/powerpc.c          |    8 ++++++++
 include/linux/kvm.h                 |    2 ++
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_para.h b/arch/powerpc/include/asm/kvm_para.h
index 50533f9..e8632b6 100644
--- a/arch/powerpc/include/asm/kvm_para.h
+++ b/arch/powerpc/include/asm/kvm_para.h
@@ -41,9 +41,19 @@ struct kvm_vcpu_arch_shared {
 };
 
 #define KVM_SC_MAGIC_R0		0x4b564d21 /* "KVM!" */
-#define HC_VENDOR_KVM		(42 << 16)
+
+#include <asm/epapr_hcalls.h>
+
+/* ePAPR Hypercall Vendor ID */
+#define HC_VENDOR_EPAPR		(EV_EPAPR_VENDOR_ID << 16)
+#define HC_VENDOR_KVM		(EV_KVM_VENDOR_ID << 16)
+
+/* ePAPR Hypercall Token */
+#define HC_EV_IDLE		EV_IDLE
+
+/* ePAPR Hypercall Return Codes */
 #define HC_EV_SUCCESS		0
-#define HC_EV_UNIMPLEMENTED	12
+#define HC_EV_UNIMPLEMENTED	EV_UNIMPLEMENTED
 
 #define KVM_FEATURE_MAGIC_PAGE	1
 
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index c33f6a7..1242ee1 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -81,6 +81,10 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu)
 
 		/* Second return value is in r4 */
 		break;
+	case HC_VENDOR_EPAPR | HC_EV_IDLE:
+		r = HC_EV_SUCCESS;
+		kvm_vcpu_block(vcpu);
+		break;
 	default:
 		r = HC_EV_UNIMPLEMENTED;
 		break;
@@ -772,6 +776,10 @@ static int kvm_vm_ioctl_get_pvinfo(struct kvm_ppc_pvinfo *pvinfo)
 	pvinfo->hcall[2] = inst_sc;
 	pvinfo->hcall[3] = inst_nop;
 
+#ifdef CONFIG_BOOKE
+	pvinfo->flags |= KVM_PPC_PVINFO_FLAGS_EV_IDLE;
+#endif
+
 	return 0;
 }
 
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index c107fae..501712d 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -429,6 +429,8 @@ struct kvm_ppc_pvinfo {
 	__u8  pad[108];
 };
 
+#define KVM_PPC_PVINFO_FLAGS_EV_IDLE   (1<<0)
+
 #define KVMIO 0xAE
 
 /*
-- 
1.7.0.4

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

* [PATCH v3 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest
  2012-02-10 10:02 ` [PATCH v3 2/3] KVM: PPC: epapr: Add idle hcall support for host Liu Yu
@ 2012-02-10 10:02   ` Liu Yu
  2012-02-10 18:41     ` Scott Wood
  0 siblings, 1 reply; 7+ messages in thread
From: Liu Yu @ 2012-02-10 10:02 UTC (permalink / raw)
  To: agraf, kvm-ppc, kvm; +Cc: linuxppc-dev, Liu Yu, B07421

If the guest hypervisor node contains "has-idle" property.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
---
v3:
1. apply the hcall idle for all ppc platform
2. add a loop to prevent spurious wakeups

 arch/powerpc/kernel/Makefile     |    2 +-
 arch/powerpc/kernel/epapr.S      |   47 ++++++++++++++++++++++++++++++++++++++
 arch/powerpc/kernel/epapr_para.c |   14 ++++++++++-
 3 files changed, 61 insertions(+), 2 deletions(-)
 create mode 100644 arch/powerpc/kernel/epapr.S

diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 1e41c76..65e24be 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -134,7 +134,7 @@ ifneq ($(CONFIG_XMON)$(CONFIG_KEXEC),)
 obj-y				+= ppc_save_regs.o
 endif
 
-obj-$(CONFIG_EPAPR_PARA)	+= epapr_para.o
+obj-$(CONFIG_EPAPR_PARA)	+= epapr_para.o epapr.o
 obj-$(CONFIG_KVM_GUEST)		+= kvm.o kvm_emul.o
 
 # Disable GCOV in odd or sensitive code
diff --git a/arch/powerpc/kernel/epapr.S b/arch/powerpc/kernel/epapr.S
new file mode 100644
index 0000000..34cc54f
--- /dev/null
+++ b/arch/powerpc/kernel/epapr.S
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#include <linux/threads.h>
+#include <asm/reg.h>
+#include <asm/page.h>
+#include <asm/cputable.h>
+#include <asm/thread_info.h>
+#include <asm/ppc_asm.h>
+#include <asm/asm-offsets.h>
+
+#define HC_VENDOR_EPAPR		(1 << 16)
+#define HC_EV_IDLE		16
+
+_GLOBAL(epapr_ev_idle)
+epapr_ev_idle:
+#ifdef CONFIG_E500
+	rlwinm	r3,r1,0,0,31-THREAD_SHIFT	/* current thread_info */
+	lwz	r4,TI_LOCAL_FLAGS(r3)	/* set napping bit */
+	ori	r4,r4,_TLF_NAPPING	/* so when we take an exception */
+	stw	r4,TI_LOCAL_FLAGS(r3)	/* it will return to our caller */
+#endif
+	wrteei	1
+
+idle_loop:
+	LOAD_REG_IMMEDIATE(r11, HC_VENDOR_EPAPR | HC_EV_IDLE)
+
+/* Hypercall entry point. Will be patched with device tree instructions. */
+.global epapr_hypercall_start
+epapr_hypercall_start:
+	li	r3, -1
+	nop
+	nop
+	nop
+
+	/*
+	 * Guard against spurious wakeups (e.g. from a hypervisor) --
+	 * any real interrupt will cause us to return to LR due to
+	 * _TLF_NAPPING.
+	 */
+	b	idle_loop
diff --git a/arch/powerpc/kernel/epapr_para.c b/arch/powerpc/kernel/epapr_para.c
index 7e1561a..ff8fb78 100644
--- a/arch/powerpc/kernel/epapr_para.c
+++ b/arch/powerpc/kernel/epapr_para.c
@@ -20,6 +20,10 @@
 #include <linux/of.h>
 #include <asm/epapr_hcalls.h>
 #include <asm/cacheflush.h>
+#include <asm/machdep.h>
+
+extern void epapr_ev_idle(void);
+extern u32 epapr_hypercall_start[];
 
 u32 *epapr_hcall_insts;
 int epapr_hcall_insts_len;
@@ -28,7 +32,7 @@ static int __init epapr_para_init(void)
 {
 	struct device_node *hyper_node;
 	u32 *insts;
-	int len;
+	int len, i;
 
 	hyper_node = of_find_node_by_path("/hypervisor");
 	if (!hyper_node)
@@ -38,8 +42,16 @@ static int __init epapr_para_init(void)
 	if (!(len % 4) && (len >= (4 * 4))) {
 		epapr_hcall_insts = insts;
 		epapr_hcall_insts_len = len;
+
+		for (i = 0; i < (len / 4); i++)
+			epapr_hypercall_start[i] = insts[i];
+		flush_icache_range((ulong)epapr_hypercall_start,
+		                   (ulong)epapr_hypercall_start + len);
 	}
 
+	if (of_get_property(hyper_node, "has-idle", NULL))
+		ppc_md.power_save = epapr_ev_idle;
+
 	return 0;
 }
 
-- 
1.7.0.4

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

* Re: [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init
  2012-02-10 10:02 [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Liu Yu
  2012-02-10 10:02 ` [PATCH v3 2/3] KVM: PPC: epapr: Add idle hcall support for host Liu Yu
@ 2012-02-10 18:39 ` Scott Wood
  2012-02-13  5:47   ` Liu Yu-B13201
  1 sibling, 1 reply; 7+ messages in thread
From: Scott Wood @ 2012-02-10 18:39 UTC (permalink / raw)
  To: Liu Yu; +Cc: linuxppc-dev, B07421, agraf, kvm-ppc, kvm

On 02/10/2012 04:02 AM, Liu Yu wrote:
> from the kvm guest paravirt init code.
> 
> Signed-off-by: Liu Yu <yu.liu@freescale.com>
> ---
> v3:
> apply the epapr init for all ppc platform
> 
>  arch/powerpc/Kconfig                    |    4 +++
>  arch/powerpc/include/asm/epapr_hcalls.h |    8 +++++
>  arch/powerpc/kernel/Makefile            |    1 +
>  arch/powerpc/kernel/epapr_para.c        |   46 +++++++++++++++++++++++++++++++
>  arch/powerpc/kernel/kvm.c               |   13 +++------
>  arch/powerpc/kvm/Kconfig                |    1 +
>  6 files changed, 64 insertions(+), 9 deletions(-)
>  create mode 100644 arch/powerpc/kernel/epapr_para.c
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 47682b6..00bd508 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -196,6 +196,10 @@ config EPAPR_BOOT
>  	  Used to allow a board to specify it wants an ePAPR compliant wrapper.
>  	default n
>  
> +config EPAPR_PARA
> +	bool
> +	default n

EPAPR_PARAVIRT

>  config DEFAULT_UIMAGE
>  	bool
>  	help
> diff --git a/arch/powerpc/include/asm/epapr_hcalls.h b/arch/powerpc/include/asm/epapr_hcalls.h
> index f3b0c2c..c4b86e4 100644
> --- a/arch/powerpc/include/asm/epapr_hcalls.h
> +++ b/arch/powerpc/include/asm/epapr_hcalls.h
> @@ -148,6 +148,14 @@
>  #define EV_HCALL_CLOBBERS2 EV_HCALL_CLOBBERS3, "r5"
>  #define EV_HCALL_CLOBBERS1 EV_HCALL_CLOBBERS2, "r4"
>  
> +extern u32 *epapr_hcall_insts;
> +extern int epapr_hcall_insts_len;
> +
> +static inline void epapr_get_hcall_insts(u32 **instp, int *lenp)
> +{
> +	*instp = epapr_hcall_insts;
> +	*lenp = epapr_hcall_insts_len;
> +}

Why do we need a function for this?  Why is the public interface
anything other than "invoke a hypercall"?

> +static int __init epapr_para_init(void)
> +{
> +	struct device_node *hyper_node;
> +	u32 *insts;
> +	int len;
> +
> +	hyper_node = of_find_node_by_path("/hypervisor");
> +	if (!hyper_node)
> +		return -ENODEV;
> +
> +	insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);

Do not cast away that const.

> @@ -535,18 +536,12 @@ EXPORT_SYMBOL_GPL(kvm_hypercall);
>  static int kvm_para_setup(void)
>  {
>  	extern u32 kvm_hypercall_start;
> -	struct device_node *hyper_node;
>  	u32 *insts;
>  	int len, i;
>  
> -	hyper_node = of_find_node_by_path("/hypervisor");
> -	if (!hyper_node)
> -		return -1;
> -
> -	insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);
> -	if (len % 4)
> -		return -1;
> -	if (len > (4 * 4))
> +	insts = epapr_hcall_insts;
> +	len = epapr_hcall_insts_len;
> +	if (insts == NULL)
>  		return -1;
>  
>  	for (i = 0; i < (len / 4); i++)

Why are you still doing the patching inside kvm.c?

-Scott

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

* Re: [PATCH v3 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest
  2012-02-10 10:02   ` [PATCH v3 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest Liu Yu
@ 2012-02-10 18:41     ` Scott Wood
  0 siblings, 0 replies; 7+ messages in thread
From: Scott Wood @ 2012-02-10 18:41 UTC (permalink / raw)
  To: Liu Yu; +Cc: linuxppc-dev, B07421, agraf, kvm-ppc, kvm

On 02/10/2012 04:02 AM, Liu Yu wrote:
> +_GLOBAL(epapr_ev_idle)
> +epapr_ev_idle:
> +#ifdef CONFIG_E500
> +	rlwinm	r3,r1,0,0,31-THREAD_SHIFT	/* current thread_info */
> +	lwz	r4,TI_LOCAL_FLAGS(r3)	/* set napping bit */
> +	ori	r4,r4,_TLF_NAPPING	/* so when we take an exception */
> +	stw	r4,TI_LOCAL_FLAGS(r3)	/* it will return to our caller */
> +#endif
> +	wrteei	1

On what hardware would you not need to use _TLF_NAPPING?

-Scott

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

* RE: [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init
  2012-02-10 18:39 ` [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Scott Wood
@ 2012-02-13  5:47   ` Liu Yu-B13201
  2012-02-13 17:15     ` Scott Wood
  0 siblings, 1 reply; 7+ messages in thread
From: Liu Yu-B13201 @ 2012-02-13  5:47 UTC (permalink / raw)
  To: Wood Scott-B07421
  Cc: linuxppc-dev@ozlabs.org, agraf@suse.de, kvm-ppc@vger.kernel.org,
	kvm@vger.kernel.org

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogU2F0dXJkYXksIEZlYnJ1YXJ5IDExLCAyMDEyIDI6NDAgQU0NCj4gVG86IExp
dSBZdS1CMTMyMDENCj4gQ2M6IGFncmFmQHN1c2UuZGU7IGt2bS1wcGNAdmdlci5rZXJuZWwub3Jn
OyBrdm1Admdlci5rZXJuZWwub3JnOw0KPiBsaW51eHBwYy1kZXZAb3psYWJzLm9yZzsgV29vZCBT
Y290dC1CMDc0MjENCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxLzNdIEtWTTogUFBDOiBlcGFw
cjogRmFjdG9yIG91dCB0aGUgZXBhcHIgaW5pdA0KPiANCj4gT24gMDIvMTAvMjAxMiAwNDowMiBB
TSwgTGl1IFl1IHdyb3RlOg0KPiA+IGZyb20gdGhlIGt2bSBndWVzdCBwYXJhdmlydCBpbml0IGNv
ZGUuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29t
Pg0KPiA+IC0tLQ0KPiA+IHYzOg0KPiA+IGFwcGx5IHRoZSBlcGFwciBpbml0IGZvciBhbGwgcHBj
IHBsYXRmb3JtDQo+ID4NCj4gPiAgYXJjaC9wb3dlcnBjL0tjb25maWcgICAgICAgICAgICAgICAg
ICAgIHwgICAgNCArKysNCj4gPiAgYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2VwYXByX2hjYWxs
cy5oIHwgICAgOCArKysrKw0KPiA+ICBhcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlICAgICAg
ICAgICAgfCAgICAxICsNCj4gPiAgYXJjaC9wb3dlcnBjL2tlcm5lbC9lcGFwcl9wYXJhLmMgICAg
ICAgIHwgICA0Ng0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGFyY2gv
cG93ZXJwYy9rZXJuZWwva3ZtLmMgICAgICAgICAgICAgICB8ICAgMTMgKysrLS0tLS0tDQo+ID4g
IGFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiA+ICA2
IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pICBjcmVhdGUg
bW9kZSAxMDA2NDQNCj4gPiBhcmNoL3Bvd2VycGMva2VybmVsL2VwYXByX3BhcmEuYw0KPiA+DQo+
ID4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9LY29uZmlnIGIvYXJjaC9wb3dlcnBjL0tjb25m
aWcgaW5kZXgNCj4gPiA0NzY4MmI2Li4wMGJkNTA4IDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gvcG93
ZXJwYy9LY29uZmlnDQo+ID4gKysrIGIvYXJjaC9wb3dlcnBjL0tjb25maWcNCj4gPiBAQCAtMTk2
LDYgKzE5NiwxMCBAQCBjb25maWcgRVBBUFJfQk9PVA0KPiA+ICAJICBVc2VkIHRvIGFsbG93IGEg
Ym9hcmQgdG8gc3BlY2lmeSBpdCB3YW50cyBhbiBlUEFQUiBjb21wbGlhbnQNCj4gd3JhcHBlci4N
Cj4gPiAgCWRlZmF1bHQgbg0KPiA+DQo+ID4gK2NvbmZpZyBFUEFQUl9QQVJBDQo+ID4gKwlib29s
DQo+ID4gKwlkZWZhdWx0IG4NCj4gDQo+IEVQQVBSX1BBUkFWSVJUDQo+IA0KPiA+ICBjb25maWcg
REVGQVVMVF9VSU1BR0UNCj4gPiAgCWJvb2wNCj4gPiAgCWhlbHANCj4gPiBkaWZmIC0tZ2l0IGEv
YXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2VwYXByX2hjYWxscy5oDQo+ID4gYi9hcmNoL3Bvd2Vy
cGMvaW5jbHVkZS9hc20vZXBhcHJfaGNhbGxzLmgNCj4gPiBpbmRleCBmM2IwYzJjLi5jNGI4NmU0
IDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9lcGFwcl9oY2FsbHMu
aA0KPiA+ICsrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9lcGFwcl9oY2FsbHMuaA0KPiA+
IEBAIC0xNDgsNiArMTQ4LDE0IEBADQo+ID4gICNkZWZpbmUgRVZfSENBTExfQ0xPQkJFUlMyIEVW
X0hDQUxMX0NMT0JCRVJTMywgInI1Ig0KPiA+ICAjZGVmaW5lIEVWX0hDQUxMX0NMT0JCRVJTMSBF
Vl9IQ0FMTF9DTE9CQkVSUzIsICJyNCINCj4gPg0KPiA+ICtleHRlcm4gdTMyICplcGFwcl9oY2Fs
bF9pbnN0czsNCj4gPiArZXh0ZXJuIGludCBlcGFwcl9oY2FsbF9pbnN0c19sZW47DQo+ID4gKw0K
PiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZXBhcHJfZ2V0X2hjYWxsX2luc3RzKHUzMiAqKmluc3Rw
LCBpbnQgKmxlbnApIHsNCj4gPiArCSppbnN0cCA9IGVwYXByX2hjYWxsX2luc3RzOw0KPiA+ICsJ
KmxlbnAgPSBlcGFwcl9oY2FsbF9pbnN0c19sZW47DQo+ID4gK30NCj4gDQo+IFdoeSBkbyB3ZSBu
ZWVkIGEgZnVuY3Rpb24gZm9yIHRoaXM/ICBXaHkgaXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UgYW55
dGhpbmcNCj4gb3RoZXIgdGhhbiAiaW52b2tlIGEgaHlwZXJjYWxsIj8NCj4gDQo+ID4gK3N0YXRp
YyBpbnQgX19pbml0IGVwYXByX3BhcmFfaW5pdCh2b2lkKSB7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNl
X25vZGUgKmh5cGVyX25vZGU7DQo+ID4gKwl1MzIgKmluc3RzOw0KPiA+ICsJaW50IGxlbjsNCj4g
PiArDQo+ID4gKwloeXBlcl9ub2RlID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9oeXBlcnZpc29y
Iik7DQo+ID4gKwlpZiAoIWh5cGVyX25vZGUpDQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4g
Kw0KPiA+ICsJaW5zdHMgPSAodTMyKilvZl9nZXRfcHJvcGVydHkoaHlwZXJfbm9kZSwgImhjYWxs
LWluc3RydWN0aW9ucyIsDQo+ID4gKyZsZW4pOw0KPiANCj4gRG8gbm90IGNhc3QgYXdheSB0aGF0
IGNvbnN0Lg0KPiANCj4gPiBAQCAtNTM1LDE4ICs1MzYsMTIgQEAgRVhQT1JUX1NZTUJPTF9HUEwo
a3ZtX2h5cGVyY2FsbCk7ICBzdGF0aWMgaW50DQo+ID4ga3ZtX3BhcmFfc2V0dXAodm9pZCkgIHsN
Cj4gPiAgCWV4dGVybiB1MzIga3ZtX2h5cGVyY2FsbF9zdGFydDsNCj4gPiAtCXN0cnVjdCBkZXZp
Y2Vfbm9kZSAqaHlwZXJfbm9kZTsNCj4gPiAgCXUzMiAqaW5zdHM7DQo+ID4gIAlpbnQgbGVuLCBp
Ow0KPiA+DQo+ID4gLQloeXBlcl9ub2RlID0gb2ZfZmluZF9ub2RlX2J5X3BhdGgoIi9oeXBlcnZp
c29yIik7DQo+ID4gLQlpZiAoIWh5cGVyX25vZGUpDQo+ID4gLQkJcmV0dXJuIC0xOw0KPiA+IC0N
Cj4gPiAtCWluc3RzID0gKHUzMiopb2ZfZ2V0X3Byb3BlcnR5KGh5cGVyX25vZGUsICJoY2FsbC1p
bnN0cnVjdGlvbnMiLA0KPiAmbGVuKTsNCj4gPiAtCWlmIChsZW4gJSA0KQ0KPiA+IC0JCXJldHVy
biAtMTsNCj4gPiAtCWlmIChsZW4gPiAoNCAqIDQpKQ0KPiA+ICsJaW5zdHMgPSBlcGFwcl9oY2Fs
bF9pbnN0czsNCj4gPiArCWxlbiA9IGVwYXByX2hjYWxsX2luc3RzX2xlbjsNCj4gPiArCWlmIChp
bnN0cyA9PSBOVUxMKQ0KPiA+ICAJCXJldHVybiAtMTsNCj4gPg0KPiA+ICAJZm9yIChpID0gMDsg
aSA8IChsZW4gLyA0KTsgaSsrKQ0KPiANCj4gV2h5IGFyZSB5b3Ugc3RpbGwgZG9pbmcgdGhlIHBh
dGNoaW5nIGluc2lkZSBrdm0uYz8NCj4gDQoNCkRvIHlvdSBtZWFuIHdlIHNob3VsZCBtb3ZlIGt2
bV9oeXBlcmNhbGxfc3RhcnQoKSBpbnRvIGVwYXByIGJpdD8NCg0KVGhhbmtzLA0KWXUNCg==

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

* Re: [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init
  2012-02-13  5:47   ` Liu Yu-B13201
@ 2012-02-13 17:15     ` Scott Wood
  0 siblings, 0 replies; 7+ messages in thread
From: Scott Wood @ 2012-02-13 17:15 UTC (permalink / raw)
  To: Liu Yu-B13201
  Cc: linuxppc-dev@ozlabs.org, Wood Scott-B07421, agraf@suse.de,
	kvm-ppc@vger.kernel.org, kvm@vger.kernel.org

On 02/12/2012 11:47 PM, Liu Yu-B13201 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Saturday, February 11, 2012 2:40 AM
>> To: Liu Yu-B13201
>> Cc: agraf@suse.de; kvm-ppc@vger.kernel.org; kvm@vger.kernel.org;
>> linuxppc-dev@ozlabs.org; Wood Scott-B07421
>> Subject: Re: [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init
>>
>> Why are you still doing the patching inside kvm.c?
>>
> 
> Do you mean we should move kvm_hypercall_start() into epapr bit?

Yes.  This is an ePAPR mechanism; KVM just happens to be a user of it.

We should also update arch/powerpc/include/asm/epapr_hcalls.h to use
this mechanism.

-Scott

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

end of thread, other threads:[~2012-02-13 17:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-10 10:02 [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Liu Yu
2012-02-10 10:02 ` [PATCH v3 2/3] KVM: PPC: epapr: Add idle hcall support for host Liu Yu
2012-02-10 10:02   ` [PATCH v3 3/3] KVM: PPC: epapr: install ev_idle hcall for e500 guest Liu Yu
2012-02-10 18:41     ` Scott Wood
2012-02-10 18:39 ` [PATCH v3 1/3] KVM: PPC: epapr: Factor out the epapr init Scott Wood
2012-02-13  5:47   ` Liu Yu-B13201
2012-02-13 17:15     ` Scott Wood

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).