of/irq: Fix msi-map calculation for nonzero rid-base
authorRobin Murphy <robin.murphy@arm.com>
Tue, 9 Feb 2016 11:04:45 +0000 (11:04 +0000)
committerRob Herring <robh@kernel.org>
Thu, 11 Feb 2016 22:51:41 +0000 (16:51 -0600)
commit5d589d81acf974d23af98044aac56c6339d659f8
treed41d421c966a902b2747006c0c7cebfe21bf4f8d
parent388f7b1d6e8ca06762e2454d28d6c3c55ad0fe95
of/irq: Fix msi-map calculation for nonzero rid-base

The existing msi-map code is fine for shifting the entire RID space
upwards, but attempting finer-grained remapping reveals a bug. It turns
out that we are mistakenly treating the msi-base part as an offset, not
as a new base to remap onto, so things get squiffy when rid-base is
nonzero. Fix this, and at the same time add a sanity check against
having msi-map-mask clash with a nonzero rid-base, as that's another
thing one can easily get wrong.

CC: <stable@vger.kernel.org>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Stuart Yoder <stuart.yoder@nxp.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: David Daney <david.daney@cavium.com>
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/irq.c