Patchwork [v3,15/17] KVM: PPC: Book3S HV: XIVE: activate XIVE exploitation mode

login
register
mail settings
Submitter Cédric Le Goater
Date March 15, 2019, 12:06 p.m.
Message ID <20190315120609.25910-16-clg@kaod.org>
Download mbox | patch
Permalink /patch/749487/
State New
Headers show

Comments

Cédric Le Goater - March 15, 2019, 12:06 p.m.
Full support for the XIVE native exploitation mode is now available,
advertise the capability KVM_CAP_PPC_IRQ_XIVE for guests running on
PowerNV KVM Hypervisors only. Support for nested guests (pseries KVM
Hypervisor) is not yet available. XIVE should also have been activated
which is default setting on POWER9 systems running a recent Linux
kernel.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 arch/powerpc/kvm/powerpc.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
David Gibson - March 18, 2019, 6:42 a.m.
On Fri, Mar 15, 2019 at 01:06:07PM +0100, Cédric Le Goater wrote:
> Full support for the XIVE native exploitation mode is now available,
> advertise the capability KVM_CAP_PPC_IRQ_XIVE for guests running on
> PowerNV KVM Hypervisors only. Support for nested guests (pseries KVM
> Hypervisor) is not yet available. XIVE should also have been activated
> which is default setting on POWER9 systems running a recent Linux
> kernel.
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  arch/powerpc/kvm/powerpc.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
> index bb51faf29162..d70b19f8725b 100644
> --- a/arch/powerpc/kvm/powerpc.c
> +++ b/arch/powerpc/kvm/powerpc.c
> @@ -573,10 +573,11 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
>  #ifdef CONFIG_KVM_XIVE
>  	case KVM_CAP_PPC_IRQ_XIVE:
>  		/*
> -		 * Return false until all the XIVE infrastructure is
> -		 * in place including support for migration.
> +		 * We need XIVE to be enabled on the platform (implies
> +		 * a POWER9 processor) and the PowerNV platform, as
> +		 * nested is not yet supported.
>  		 */
> -		r = 0;
> +		r = xive_enabled() && !!cpu_has_feature(CPU_FTR_HVMODE);

Nit: && is already a logical operation, so there should be no need for
the '!!' here.

>  		break;
>  #endif
>

Patch

diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index bb51faf29162..d70b19f8725b 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -573,10 +573,11 @@  int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 #ifdef CONFIG_KVM_XIVE
 	case KVM_CAP_PPC_IRQ_XIVE:
 		/*
-		 * Return false until all the XIVE infrastructure is
-		 * in place including support for migration.
+		 * We need XIVE to be enabled on the platform (implies
+		 * a POWER9 processor) and the PowerNV platform, as
+		 * nested is not yet supported.
 		 */
-		r = 0;
+		r = xive_enabled() && !!cpu_has_feature(CPU_FTR_HVMODE);
 		break;
 #endif