b) is there any way to tell where the IRQ pins for each PCI device are connected to the IRQ router chip?
schematics. Or a volt-ohm meter. In all too many cases, the IRQ table in the fuctory bios is wrong. It can not be trusted.
[OT: Google reports 485 hits for "fuctory bios"].
Another way is to add some instrumentation code to either the kernel or your firmware to report which IRQ triggered (and as what all the way on your interrupt chain), and then "manually" trigger an interrupt event on one of your devices, and see what happens. With something like Open Firmware, this isn't all that hard, as the firmware typically runs with interrupts disabled on the CPU, so you get no bad side effects; when done on a running kernel, it's pretty easy to hang the system. But most often you'll at least see what IRQ it was :-)
Doing this properly requires some in-depth knowledge of the whole interrupt chain on your system -- you'll need that to correctly program the interrupt subsystem anyway, though.
Segher