[Skiboot] [PATCH-RESEND] capi: Disable CAPP virtual machines

Andrew Donnellan andrew.donnellan at au1.ibm.com
Thu Jan 18 15:38:41 AEDT 2018


On 18/01/18 15:09, Vaibhav Jain wrote:
> When exercising more than one CAPI accelerators simultaneously in
> cache coherency mode, the verification team is seeing a deadlock. To
> fix this a workaround of disabling CAPP virtual machines is
> suggested. These 'virtual machines' let PSL queue multiple CAPP
> commands for servicing by CAPP there by increasing
> throughput. Below is the error scenario described by the h/w team:
> 
> " With virtual machines enabled we had a deadlock scenario where with 2
> or more CAPI's in a system you could get in a deadlock scenario due to
> cast-outs that are required break the deadlock (evict lines that
> another CAPI is requesting) get stuck in the virtual machine queue by
> a command ahead of it that is being retried by the same scenario in
> the other CAPI. "
> 
> So this patch updates CAPP APC Master Powerbus control
> register during CAPP init to also set Bit(12) that disables CAPP
> virtual machines. This forces processing of CAPP commands from PSL one
> at a time and thereby preventing above mentioned deadlock scenario.
> 
> Signed-off-by: Vaibhav Jain <vaibhav at linux.vnet.ibm.com>

Thanks for the description - that makes a lot more sense.

Should this be heading to stable?

Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>

> ---
> Change-log:
> Resend -> Updated the patch description with more info CAPP virtual
>         	  machines and the error scenario.
> ---
>   hw/phb4.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/hw/phb4.c b/hw/phb4.c
> index ff912e1f..8e660b66 100644
> --- a/hw/phb4.c
> +++ b/hw/phb4.c
> @@ -3581,6 +3581,7 @@ static void phb4_init_capp_regs(struct phb4 *p, uint32_t capp_eng)
>   	xscom_read(p->chip_id, APC_MASTER_PB_CTRL + offset, &reg);
>   	reg |= PPC_BIT(0); /* enable cResp exam */
>   	reg |= PPC_BIT(3); /* disable vg not sys */
> +	reg |= PPC_BIT(12);/* HW417025: disable capp virtual machines */
>   	if (p->rev == PHB4_REV_NIMBUS_DD10) {
>   		reg |= PPC_BIT(1);
>   	} else {
> 

-- 
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com  IBM Australia Limited



More information about the Skiboot mailing list