Make IPIs work on the Altix 450. We kluged support by hardcoding specifics
of the SHub1 in ipi_send(). Improve the kluge a bit by saving the IPI
register address of the SHub in the PCPU structure and initialize it when
we create the PCPU. There we can ask the firmware about the SHub and handle
the difference between SHub1 and SHub2.

This makes SMP work.

Sponsored by:	HOB GmbH & Co. KG
Add drivers for H/W found in the Altix 450:
	mpt(4), ohci(4) and ehci(4)

Of these, mpt(4) is already rewritten to use busdma/mi and since it's
the first PCI device we probe and attach, we're in a good shape to
finalize the TIOCP bridge support.

Note also the the Altix 450 doesn't have an ioc4-base ATA controller.
It uses a SII controller. With that, we're also setup to rewrite ata(4)
to use busdma/mi.

Thus: Most of the support for the Altix 350 and Altix 450 pivots around
proper DMA handling -- i.e. busdma/mi.

Sponsored by:	HOB GmbH & Co. KG
We get a stray interrupt 54 on the Altic 450 and the problem is that
there's no way to mask interrupts. So, until I know where it comes
from or what device generates the interrupt, let's not panic...
Implement SHub2 & TIOCP bridge address translations. With this change,
mpt(4) seems to work.
o   Implement busdma_md_load_mbuf()
o   The behaviour provided by bus_dmamap_load_mbuf_sg() is achieved
    by passing a NULL pointer for the callback function. Change
    existing load functions to do the same.
o   Allow per-device busdma flags to be set using hints. A typical
    use would be for debugging and tracing on a per device basis.
Port bge(4) to busdma/mi. We now have networking. After some time
we do get:
	pcib0: IOMMU: cannot find 1 free entries for DMA
	_busdma_iommu_map: error=28

This'll have to be fixed.
Don't enable interrupts before we call sched_throw(). Interrupts
are expected to be disabled by virtue of md_spinlock_count==1
assumed to hold.
Use the correct map to setup the jumbo RX ring entry.
Use the right operator to get the bit shift form the entry. We were
mistakenly clearing bit 0 in the corresponding 64-bit integral.
Add PROCDESC
Fix busdma_md_unload() to recursively call devices up the
device tree. When we map we start at the root and recurse
down to the leaf device. When we unmap, we go the reverse
direction.

This fix actually has us call the unmap function of the
PCI bridge, which means we now free up I/O MMU mappings.

This and previous few commits were all done from the Altix
itself. Looking good...
Use an I/O MMU page size of 4KB when the kernel uses a page size less
than 16KB. Use a 16KB I/O MMU page size otherwise.
Fix Altix 350 support (SHub1/PIC), broken when Altix 450 (SHub2/TIOCP)
support was added: prefetch cannot be set when consistent/coherent I/O
is wanted. It's one or the other or none.