[PATCH 07/10] powerpc/xive: add XIVE exploitation mode to CAS

Cédric Le Goater clg at kaod.org
Thu Aug 10 20:20:22 AEST 2017


On 08/08/2017 10:56 AM, Cédric Le Goater wrote:
> On POWER9, the Client Architecture Support (CAS) negotiation process
> determines whether the guest operates in XIVE Legacy compatibility or
> in XIVE exploitation mode.
> 
> Now that we have initial guest support for the XIVE interrupt
> controller, let's inform the hypervisor what we can do.
> 
> Signed-off-by: Cédric Le Goater <clg at kaod.org>
> ---
>  arch/powerpc/kernel/prom_init.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
> index 613f79f03877..25c14f543bd7 100644
> --- a/arch/powerpc/kernel/prom_init.c
> +++ b/arch/powerpc/kernel/prom_init.c
> @@ -177,6 +177,7 @@ struct platform_support {
>  	bool hash_mmu;
>  	bool radix_mmu;
>  	bool radix_gtse;
> +	bool xive;
>  };
>  
>  /* Platforms codes are now obsolete in the kernel. Now only used within this
> @@ -1054,6 +1055,12 @@ static void __init prom_parse_platform_support(u8 index, u8 val,
>  			support->radix_gtse = true;
>  		}
>  		break;
> +	case OV5_INDX(OV5_XIVE_SUPPORT): /* XIVE Exploitation mode */
> +		if (val & OV5_FEAT(OV5_XIVE_SUPPORT)) {

This should be :

+		if (val & OV5_FEAT(OV5_XIVE_EXPLOIT)) {

I will fix it in the next version of the patchset.

C.

> +			prom_debug("XIVE - exploitation mode\n");
> +			support->xive = true;
> +		}
> +		break;
>  	}
>  }
>  
> @@ -1062,7 +1069,8 @@ static void __init prom_check_platform_support(void)
>  	struct platform_support supported = {
>  		.hash_mmu = false,
>  		.radix_mmu = false,
> -		.radix_gtse = false
> +		.radix_gtse = false,
> +		.xive = false
>  	};
>  	int prop_len = prom_getproplen(prom.chosen,
>  				       "ibm,arch-vec-5-platform-support");
> @@ -1095,6 +1103,11 @@ static void __init prom_check_platform_support(void)
>  		/* We're probably on a legacy hypervisor */
>  		prom_debug("Assuming legacy hash support\n");
>  	}
> +
> +	if (supported.xive) {
> +		prom_debug("Asking for XIVE\n");
> +		ibm_architecture_vec.vec5.intarch = OV5_FEAT(OV5_XIVE_EXPLOIT);
> +	}
>  }
>  
>  static void __init prom_send_capabilities(void)
> 



More information about the Linuxppc-dev mailing list