* [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 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 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 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).