OSDN Git Service

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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Mar 2016 23:07:29 +0000 (15:07 -0800)
commite1d61091db0ba3ef805510bb5fee46dedd7c8734
tree92f049e14b719a9c7b51246cb5ddfa38a4a8273a
parentb8558ada696e26f51cbde1d24cdf291bbc7ec79b
of/irq: Fix msi-map calculation for nonzero rid-base

commit 5d589d81acf974d23af98044aac56c6339d659f8 upstream.

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.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/of/irq.c