Try msi and fallback to old intr mapping. Works on my box where the ahci is on a non-msi bus.
ok? .... Ken Index: ahci.c =================================================================== RCS file: /cvs/src/sys/dev/pci/ahci.c,v retrieving revision 1.178 diff -u -p -r1.178 ahci.c --- ahci.c 8 May 2011 19:46:10 -0000 1.178 +++ ahci.c 1 Jun 2011 14:53:05 -0000 @@ -762,7 +762,7 @@ ahci_pci_attach(struct device *parent, s } } - if (pci_intr_map(pa, &ih) != 0) { + if (pci_intr_map_msi(pa, &ih) != 0 && pci_intr_map(pa, &ih) != 0) { printf(": unable to map interrupt\n"); return; }