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) >