From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Tue, 02 Jul 2013 15:23:11 +0000 Subject: Re: RFC: proposal for VM reset & shutdown hcall (v2) Message-Id: <51D2F05F.6020202@suse.de> List-Id: References: <9F6FE96B71CF29479FF1CDC8046E150363308E@039-SN1MPN1-004.039d.mgd.msft.net> In-Reply-To: <9F6FE96B71CF29479FF1CDC8046E150363308E@039-SN1MPN1-004.039d.mgd.msft.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Yoder Stuart-B08248 Cc: Bhushan Bharat-R65777 , Wood Scott-B07421 , "kvm@vger.kernel.org list" , "kvm-ppc@vger.kernel.org" On 07/02/2013 05:07 PM, Yoder Stuart-B08248 wrote: > Version 2 changes > -remove advertising via KVM_HC_FEATURES > -define a new exit type (KVM_EXIT_EPAPR_HCALL) for user space > handled hcalls > -advertise KVM_EXIT_EPAPR_HCALL to user space via new capability > flag > -defined device tree properties to advertise the existence > of reset and shutdown hcalls to a guest > > ------------------------------------------------------------------------ > KVM_CAP_EXIT_EPAPR_HCALL Capability > > A new capability KVM_CAP_EXIT_EPAPR_HCALL is defined to advertise > the new KVM_EXIT_EPAPR_HCALL exit . > > ------------------------------------------------------------------------ > KVM_EXIT_EPAPR_HCALL exit definition > > /* KVM_EXIT_EPAPR_HCALL */ > struct { > __u64 nr; > __u64 ret; > __u64 args[8]; > } epapr_hcall; > > This is used on e500 Power Architecture for the paravirt e500 It can also be used on book3s systems. We use the same logic for -M g3beige and -M mac99. We even use it for -M mpc8544ds. > platform. It occurs when a guest does a hypercall (as defined > in the ePAPR 1.1) and the hcall is not handled by the kernel. > > The 'nr' field contains the hypercall number (from the guest R11), > and 'args' contains the arguments (from the guest R3 - R10). > Userspace should put the return code in 'ret' and any extra returned > values in args[]. Please specify which registers ret and args will end up in. > > ------------------------------------------------------------------------ > Advertising reset and shutdown in device tree. > > A virtual machine can detect the availability of the reset > and shutdown hcalls by looking at properties on the /hypervisor > node. > > Property name: has-reset I don't remember how ePAPR specifies this. Aren't keys in /hypervisor supposed to be common throughout hypervisors? So if Windriver wants to add a reset hypercall, they'd also add "has-reset"? How does the guest know which hcall number to issue? Thanks a lot for writing all of this down :) Alex > Value type: > Definition: If the property is present the hypervisor supports > the KVM_HC_VM_RESET hcall. > > Property name: has-shutdown > Value type: > Definition: If the property is present the hypervisor supports > the KVM_HC_VM_SHUTDOWN hcall. > > ------------------------------------------------------------------------ > Hypercall: KVM_HC_VM_RESET > Description: Requests that the virtual machine be reset. The > hcall takes no arguments. If successful the hcall does not > return. > > Arguments: > r11 hcall-token KVM_HC_VM_RESET > > Return values > r3 status Status of the hcall. If the hcall succeeds > it does not return. If an error occurs > EV_INTERNAL is returned. > > ------------------------------------------------------------------------ > Hypercall: KVM_HC_VM_SHUTDOWN > Description: Requests that the virtual machine be powered-off/halted. > The hcall takes no arguments. If successful the hcall does not > return. > > Arguments: > r11 hcall-token KVM_HC_VM_SHUTDOWN > > Return values > r3 status Status of the hcall. If the hcall succeeds > it does not return. If an error occurs > EV_INTERNAL is returned. > > > > Regards, > Stuart > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Subject: Re: RFC: proposal for VM reset & shutdown hcall (v2) Date: Tue, 02 Jul 2013 17:23:11 +0200 Message-ID: <51D2F05F.6020202@suse.de> References: <9F6FE96B71CF29479FF1CDC8046E150363308E@039-SN1MPN1-004.039d.mgd.msft.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Bhushan Bharat-R65777 , Wood Scott-B07421 , "kvm@vger.kernel.org list" , "kvm-ppc@vger.kernel.org" To: Yoder Stuart-B08248 Return-path: In-Reply-To: <9F6FE96B71CF29479FF1CDC8046E150363308E@039-SN1MPN1-004.039d.mgd.msft.net> Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 07/02/2013 05:07 PM, Yoder Stuart-B08248 wrote: > Version 2 changes > -remove advertising via KVM_HC_FEATURES > -define a new exit type (KVM_EXIT_EPAPR_HCALL) for user space > handled hcalls > -advertise KVM_EXIT_EPAPR_HCALL to user space via new capability > flag > -defined device tree properties to advertise the existence > of reset and shutdown hcalls to a guest > > ------------------------------------------------------------------------ > KVM_CAP_EXIT_EPAPR_HCALL Capability > > A new capability KVM_CAP_EXIT_EPAPR_HCALL is defined to advertise > the new KVM_EXIT_EPAPR_HCALL exit . > > ------------------------------------------------------------------------ > KVM_EXIT_EPAPR_HCALL exit definition > > /* KVM_EXIT_EPAPR_HCALL */ > struct { > __u64 nr; > __u64 ret; > __u64 args[8]; > } epapr_hcall; > > This is used on e500 Power Architecture for the paravirt e500 It can also be used on book3s systems. We use the same logic for -M g3beige and -M mac99. We even use it for -M mpc8544ds. > platform. It occurs when a guest does a hypercall (as defined > in the ePAPR 1.1) and the hcall is not handled by the kernel. > > The 'nr' field contains the hypercall number (from the guest R11), > and 'args' contains the arguments (from the guest R3 - R10). > Userspace should put the return code in 'ret' and any extra returned > values in args[]. Please specify which registers ret and args will end up in. > > ------------------------------------------------------------------------ > Advertising reset and shutdown in device tree. > > A virtual machine can detect the availability of the reset > and shutdown hcalls by looking at properties on the /hypervisor > node. > > Property name: has-reset I don't remember how ePAPR specifies this. Aren't keys in /hypervisor supposed to be common throughout hypervisors? So if Windriver wants to add a reset hypercall, they'd also add "has-reset"? How does the guest know which hcall number to issue? Thanks a lot for writing all of this down :) Alex > Value type: > Definition: If the property is present the hypervisor supports > the KVM_HC_VM_RESET hcall. > > Property name: has-shutdown > Value type: > Definition: If the property is present the hypervisor supports > the KVM_HC_VM_SHUTDOWN hcall. > > ------------------------------------------------------------------------ > Hypercall: KVM_HC_VM_RESET > Description: Requests that the virtual machine be reset. The > hcall takes no arguments. If successful the hcall does not > return. > > Arguments: > r11 hcall-token KVM_HC_VM_RESET > > Return values > r3 status Status of the hcall. If the hcall succeeds > it does not return. If an error occurs > EV_INTERNAL is returned. > > ------------------------------------------------------------------------ > Hypercall: KVM_HC_VM_SHUTDOWN > Description: Requests that the virtual machine be powered-off/halted. > The hcall takes no arguments. If successful the hcall does not > return. > > Arguments: > r11 hcall-token KVM_HC_VM_SHUTDOWN > > Return values > r3 status Status of the hcall. If the hcall succeeds > it does not return. If an error occurs > EV_INTERNAL is returned. > > > > Regards, > Stuart > >