irqchip/gic-v3: Fix ICC_SGI1R_EL1.INTID decoding mask
authorMarc Zyngier <marc.zyngier@arm.com>
Thu, 2 Jun 2016 08:00:28 +0000 (09:00 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Thu, 2 Jun 2016 16:55:06 +0000 (17:55 +0100)
The INTID mask is wrong, and is made a signed value, which has
nteresting effects in the KVM emulation. Let's sanitize it.

Cc: stable@vger.kernel.org
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
include/linux/irqchip/arm-gic-v3.h

index bfbd707de390df9ea6734406d7ac7fb94c26e335..85a8c2acdef57cb686c6700a554ac70cf79397ca 100644 (file)
 #define ICC_SGI1R_AFFINITY_1_SHIFT     16
 #define ICC_SGI1R_AFFINITY_1_MASK      (0xff << ICC_SGI1R_AFFINITY_1_SHIFT)
 #define ICC_SGI1R_SGI_ID_SHIFT         24
-#define ICC_SGI1R_SGI_ID_MASK          (0xff << ICC_SGI1R_SGI_ID_SHIFT)
+#define ICC_SGI1R_SGI_ID_MASK          (0xfULL << ICC_SGI1R_SGI_ID_SHIFT)
 #define ICC_SGI1R_AFFINITY_2_SHIFT     32
 #define ICC_SGI1R_AFFINITY_2_MASK      (0xffULL << ICC_SGI1R_AFFINITY_1_SHIFT)
 #define ICC_SGI1R_IRQ_ROUTING_MODE_BIT 40