irqchip/gic-v3-its: Drop the setting of PTZ altogether
authorShenming Lu <lushenming@huawei.com>
Mon, 22 Mar 2021 06:01:54 +0000 (14:01 +0800)
committerMarc Zyngier <maz@kernel.org>
Wed, 24 Mar 2021 18:12:20 +0000 (18:12 +0000)
GICv4.1 gives a way to get the VLPI state, which needs to map the
vPE first, and after the state read, we may remap the vPE back while
the VPT is not empty. So we can't assume that the VPT is empty at
the first map. Besides, the optimization of PTZ is probably limited
since the HW should be fairly efficient to parse the empty VPT. Let's
drop the setting of PTZ altogether.

Signed-off-by: Shenming Lu <lushenming@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210322060158.1584-3-lushenming@huawei.com
drivers/irqchip/irq-gic-v3-its.c

index 4eb907f..d205faf 100644 (file)
@@ -794,8 +794,13 @@ static struct its_vpe *its_build_vmapp_cmd(struct its_node *its,
 
        its_encode_alloc(cmd, alloc);
 
-       /* We can only signal PTZ when alloc==1. Why do we have two bits? */
-       its_encode_ptz(cmd, alloc);
+       /*
+        * GICv4.1 provides a way to get the VLPI state, which needs the vPE
+        * to be unmapped first, and in this case, we may remap the vPE
+        * back while the VPT is not empty. So we can't assume that the
+        * VPT is empty on map. This is why we never advertise PTZ.
+        */
+       its_encode_ptz(cmd, false);
        its_encode_vconf_addr(cmd, vconf_addr);
        its_encode_vmapp_default_db(cmd, desc->its_vmapp_cmd.vpe->vpe_db_lpi);