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 <c...@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)
> 

Reply via email to