[IA64] use machvec=dig on hpzx1 platforms
authorTerry Loftin <terry.loftin@hp.com>
Thu, 12 Jul 2007 23:23:22 +0000 (17:23 -0600)
committerTony Luck <tony.luck@intel.com>
Fri, 13 Jul 2007 16:16:50 +0000 (09:16 -0700)
commit51b58e3e26ebfb8cd56825c4b396ed251f51dec9
tree13e04ced4a61562a7c4a0ade7b453fa4e24a6753
parent773208946a132fb733ba273ee8562814f828cc28
[IA64] use machvec=dig on hpzx1 platforms

On HP zx1 machines, the 'machvec=dig' parameter is needed for the
kdump kernel to avoid problems with the HP sba iommu.  The problem
is that during the boot of the kdump kernel, the iommu is re-initialized,
so in-flight DMA from improperly shutdown drivers causes an IOTLB
miss which leads to an MCA.  With kdump, the idea is to get into the
kdump kernel with as little code as we can, so shutting down drivers
properly is not an option.

The workaround is to add 'machvec=dig' to the kdump kernel boot
parameters.  This makes the kdump kernel avoid using the sba iommu
altogether, leaving the IOTLB intact.  Any ongoing DMA falls
harmlessly outside the kdump kernel.  After the kdump kernel reboots,
all devices will have been shutdown properly and DMA stopped.

This patch pushes that functionality into the sba iommu
initialization code, so that users won't have to find the obscure
documentation telling them about 'machvec=dig'.

This patch only affects HP platforms.  It still includes one
extern declaration in the file, because no applicable header file
exists.

Signed-off-by: Terry Loftin <terry.loftin@hp.com>
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/hp/common/sba_iommu.c