* [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest part
@ 2008-04-07 12:37 ehrhardt
2008-04-07 12:37 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - host part ehrhardt
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: ehrhardt @ 2008-04-07 12:37 UTC (permalink / raw)
To: kvm-ppc
From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
This is the guest portion of this patch, it submits a trap with the special
immediate value where the native code would enter a infinite loop with irq's
disabled (no native shutdown available).
This is only a interim solution until the hypercall abi/api is fully
defined. Then we will recode it in according to that specification.
I would wait for these final hypercall variant before we go to
linuxppc-dev@ozlabs.org with these patch, but for now this patch could stay in
our patch queues because it easens daily usage e.g. scripted testing.
Note - since qemu defaults to reboot the guest on shutdown you might need to
the -no-reboot command line option to qemu to get what is expected.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
[diffstat]
kernel/setup-common.c | 4 ++++
kvm/Kconfig | 11 ++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
---
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -146,6 +146,10 @@ void machine_halt(void)
#endif
printk(KERN_EMERG "System Halted, OK to turn off power\n");
local_irq_disable();
+#ifdef CONFIG_KVM_PPC_GUEST
+ /* FIXME port to the proper hypercall API/ABI when defined */
+ __asm__ __volatile__("twi 31,0,1");
+#endif
while (1) ;
}
diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
--- a/arch/powerpc/kvm/Kconfig
+++ b/arch/powerpc/kvm/Kconfig
@@ -35,7 +35,7 @@ config KVM_POWERPC
bool
config KVM_POWERPC_440
- tristate "KVM guest support for PowerPC 440"
+ tristate "KVM host support for PowerPC 440 guests"
depends on KVM && 44x
select KVM_POWERPC
---help---
@@ -52,5 +52,14 @@ config KVM_PPC_VIRTIO
# the virtualization menu.
source drivers/virtio/Kconfig
+
+config KVM_PPC_GUEST
+ bool "Paravirt guest extensions for KVM on POWERPC"
+ depends on 44x
+ ---help---
+ This add support of paravirt features for KVM on POWERPC
+
+
+
endif # VIRTUALIZATION
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - host part
2008-04-07 12:37 [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest part ehrhardt
@ 2008-04-07 12:37 ` ehrhardt
2008-04-07 14:13 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest Jimi Xenidis
2008-04-07 15:23 ` Christian Ehrhardt
2 siblings, 0 replies; 4+ messages in thread
From: ehrhardt @ 2008-04-07 12:37 UTC (permalink / raw)
To: kvm-ppc
From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
This is the host portion of this patch, it detects a trap with the special
immediate value and then exits with the kvm exit_reason for shutdown.
This is only a interim solution until the hypercall abi/api is fully
defined. Then we will recode it in according to that specification.
I would wait for these final hypercall variant before we go to
linuxppc-dev@ozlabs.org with these patch, but for now this patch could stay in
our patch queues because it easens daily usage e.g. scripted testing.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
[diffstat]
arch/powerpc/kvm/emulate.c | 5 +++++
arch/powerpc/kvm/powerpc.c | 4 ++++
include/asm-powerpc/kvm_ppc.h | 1 +
3 files changed, 10 insertions(+)
---
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -229,6 +229,11 @@ int kvmppc_emulate_instruction(struct kv
switch (get_op(inst)) {
case 3: /* trap */
+ if (get_d(inst) = 1) {
+ /* FIXME port to final hypercall API when defined */
+ printk(KERN_INFO"Guest requested shutdown\n");
+ return EMULATE_SHUTDOWN;
+ }
printk("trap!\n");
kvmppc_queue_exception(vcpu, BOOKE_INTERRUPT_PROGRAM);
advance = 0;
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -354,6 +354,10 @@ int kvmppc_handle_exit(struct kvm_run *r
* report it to userspace. */
run->hw.hardware_exit_reason = ~0ULL << 32;
run->hw.hardware_exit_reason |= vcpu->arch.last_inst;
+ r = RESUME_HOST;
+ break;
+ case EMULATE_SHUTDOWN:
+ run->exit_reason = KVM_EXIT_SHUTDOWN;
r = RESUME_HOST;
break;
default:
diff --git a/include/asm-powerpc/kvm_ppc.h b/include/asm-powerpc/kvm_ppc.h
--- a/include/asm-powerpc/kvm_ppc.h
+++ b/include/asm-powerpc/kvm_ppc.h
@@ -39,6 +39,7 @@ enum emulation_result {
EMULATE_DO_MMIO, /* kvm_run filled with MMIO request */
EMULATE_DO_DCR, /* kvm_run filled with DCR request */
EMULATE_FAIL, /* can't emulate this instruction */
+ EMULATE_SHUTDOWN, /* shutdown guest requested (no kvm_run data) */
};
extern const unsigned char exception_priority[];
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest
2008-04-07 12:37 [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest part ehrhardt
2008-04-07 12:37 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - host part ehrhardt
@ 2008-04-07 14:13 ` Jimi Xenidis
2008-04-07 15:23 ` Christian Ehrhardt
2 siblings, 0 replies; 4+ messages in thread
From: Jimi Xenidis @ 2008-04-07 14:13 UTC (permalink / raw)
To: kvm-ppc
On Apr 7, 2008, at 8:37 AM, ehrhardt@linux.vnet.ibm.com wrote:
> From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
>
> This is the guest portion of this patch, it submits a trap with the
> special
> immediate value where the native code would enter a infinite loop
> with irq's
> disabled (no native shutdown available).
> This is only a interim solution until the hypercall abi/api is fully
> defined. Then we will recode it in according to that specification.
> I would wait for these final hypercall variant before we go to
> linuxppc-dev@ozlabs.org with these patch, but for now this patch
> could stay in
> our patch queues because it easens daily usage e.g. scripted testing.
> Note - since qemu defaults to reboot the guest on shutdown you
> might need to
> the -no-reboot command line option to qemu to get what is expected.
>
> Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
>
> [diffstat]
> kernel/setup-common.c | 4 ++++
> kvm/Kconfig | 11 ++++++++++-
> 2 files changed, 14 insertions(+), 1 deletion(-)
> ---
>
> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/
> kernel/setup-common.c
> --- a/arch/powerpc/kernel/setup-common.c
> +++ b/arch/powerpc/kernel/setup-common.c
> @@ -146,6 +146,10 @@ void machine_halt(void)
> #endif
> printk(KERN_EMERG "System Halted, OK to turn off power\n");
> local_irq_disable();
hmm.. shouldn't you just be defining ppc_md.halt in your setup so it
can be called in this function above this line?
Functionally I would assume this "zombies" the guest rather then
completely destroys it?
This is important if I want to externally debug said state.
You may also want to consider defining ppc_md.power_off as well which
would automatically and completely destroy the guest.
> +#ifdef CONFIG_KVM_PPC_GUEST
> + /* FIXME port to the proper hypercall API/ABI when defined */
> + __asm__ __volatile__("twi 31,0,1");
> +#endif
Have you considered using mtmsr(MSR_WE) which puts you in wait with
no hope of coming back, unless forced by probe.
> while (1) ;
> }
>
> diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
> --- a/arch/powerpc/kvm/Kconfig
> +++ b/arch/powerpc/kvm/Kconfig
> @@ -35,7 +35,7 @@ config KVM_POWERPC
> bool
>
> config KVM_POWERPC_440
> - tristate "KVM guest support for PowerPC 440"
> + tristate "KVM host support for PowerPC 440 guests"
> depends on KVM && 44x
> select KVM_POWERPC
> ---help---
> @@ -52,5 +52,14 @@ config KVM_PPC_VIRTIO
> # the virtualization menu.
> source drivers/virtio/Kconfig
>
> +
> +config KVM_PPC_GUEST
> + bool "Paravirt guest extensions for KVM on POWERPC"
> + depends on 44x
> + ---help---
> + This add support of paravirt features for KVM on POWERPC
> +
> +
> +
> endif # VIRTUALIZATION
>
>
> ----------------------------------------------------------------------
> ---
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Register now and save $200. Hurry, offer ends at 11:59 p.m.,
> Monday, April 7! Use priority code J8TLD2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://
> java.sun.com/javaone
> _______________________________________________
> kvm-ppc-devel mailing list
> kvm-ppc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest
2008-04-07 12:37 [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest part ehrhardt
2008-04-07 12:37 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - host part ehrhardt
2008-04-07 14:13 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest Jimi Xenidis
@ 2008-04-07 15:23 ` Christian Ehrhardt
2 siblings, 0 replies; 4+ messages in thread
From: Christian Ehrhardt @ 2008-04-07 15:23 UTC (permalink / raw)
To: kvm-ppc
Jimi Xenidis wrote:
>
> On Apr 7, 2008, at 8:37 AM, ehrhardt@linux.vnet.ibm.com wrote:
>> From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
>>
>> This is the guest portion of this patch, it submits a trap with the
>> special
>> immediate value where the native code would enter a infinite loop with
>> irq's
>> disabled (no native shutdown available).
>> This is only a interim solution until the hypercall abi/api is fully
>> defined. Then we will recode it in according to that specification.
>> I would wait for these final hypercall variant before we go to
>> linuxppc-dev@ozlabs.org with these patch, but for now this patch could
>> stay in
>> our patch queues because it easens daily usage e.g. scripted testing.
>> Note - since qemu defaults to reboot the guest on shutdown you might
>> need to
>> the -no-reboot command line option to qemu to get what is expected.
>>
>> Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
>>
>> [diffstat]
>> kernel/setup-common.c | 4 ++++
>> kvm/Kconfig | 11 ++++++++++-
>> 2 files changed, 14 insertions(+), 1 deletion(-)
>> ---
>>
>> diff --git a/arch/powerpc/kernel/setup-common.c
>> b/arch/powerpc/kernel/setup-common.c
>> --- a/arch/powerpc/kernel/setup-common.c
>> +++ b/arch/powerpc/kernel/setup-common.c
>> @@ -146,6 +146,10 @@ void machine_halt(void)
>> #endif
>> printk(KERN_EMERG "System Halted, OK to turn off power\n");
>> local_irq_disable();
>
> hmm.. shouldn't you just be defining ppc_md.halt in your setup so it can
> be called in this function above this line?
I'll look into that - thx Jimi
> Functionally I would assume this "zombies" the guest rather then
> completely destroys it?
> This is important if I want to externally debug said state.
hmmm ... I started with the demand to get it destroyed on halt.
> You may also want to consider defining ppc_md.power_off as well which
> would automatically and completely destroy the guest.
>
>> +#ifdef CONFIG_KVM_PPC_GUEST
>> + /* FIXME port to the proper hypercall API/ABI when defined */
>> + __asm__ __volatile__("twi 31,0,1");
>> +#endif
>
> Have you considered using mtmsr(MSR_WE) which puts you in wait with no
> hope of coming back, unless forced by probe.
atm I want it dead ;-).
But you'r right - eventually we should implement the differences between halt, poweroff, ... in the final version
>> while (1) ;
>> }
>>
>> diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
>> --- a/arch/powerpc/kvm/Kconfig
>> +++ b/arch/powerpc/kvm/Kconfig
>> @@ -35,7 +35,7 @@ config KVM_POWERPC
>> bool
>>
>> config KVM_POWERPC_440
>> - tristate "KVM guest support for PowerPC 440"
>> + tristate "KVM host support for PowerPC 440 guests"
>> depends on KVM && 44x
>> select KVM_POWERPC
>> ---help---
>> @@ -52,5 +52,14 @@ config KVM_PPC_VIRTIO
>> # the virtualization menu.
>> source drivers/virtio/Kconfig
>>
>> +
>> +config KVM_PPC_GUEST
>> + bool "Paravirt guest extensions for KVM on POWERPC"
>> + depends on 44x
>> + ---help---
>> + This add support of paravirt features for KVM on POWERPC
>> +
>> +
>> +
>> endif # VIRTUALIZATION
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
>> Register now and save $200. Hurry, offer ends at 11:59 p.m.,
>> Monday, April 7! Use priority code J8TLD2.
>> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
>>
>> _______________________________________________
>> kvm-ppc-devel mailing list
>> kvm-ppc-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
>
--
Grüsse / regards,
Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-04-07 15:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-07 12:37 [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest part ehrhardt
2008-04-07 12:37 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - host part ehrhardt
2008-04-07 14:13 ` [kvm-ppc-devel] [PATCH] kvmppc: support guest shutdown - guest Jimi Xenidis
2008-04-07 15:23 ` Christian Ehrhardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox