x86-64: Calgary IOMMU: Fix off by one when calculating register space location
commit7752e010ee0222af173d59948b92d0eabd806384
authorJon Mason <jdmason@kudzu.us>
Tue, 10 Oct 2006 14:04:23 +0000 (10 09:04 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Oct 2006 20:23:28 +0000 (13 13:23 -0700)
treef1f8294bd705a43b2c2b534db24930c6c3e055e0
parent0c6de226bc1907bf392dab17c50c691b19b46792
x86-64: Calgary IOMMU: Fix off by one when calculating register space location

This patch has already been submitted for inclusion in the 2.6.19
tree, but not backported to the 2.6.18.  Please pull the bug fix
below into the stable tree for the 2.6.18.1 release.

The purpose of the code being modified is to determine the location
of the calgary chip address space.  This is done by a magical formula
of FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase) to
find the offset where BIOS puts it.  In this formula,
OneBasedChassisNumber corresponds to the NUMA node, and rionodeid is
always 2 or 3 depending on which chip in the system it is.  The
problem was that we had an off by one error that caused us to account
some busses to the wrong chip and thus give them the wrong address
space.

Fixes RH bugzilla #203971.

Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86_64/kernel/pci-calgary.c