Hello,
It happened probably during a level 6 interrupt, caused by your IOblix card. Those a standard ns8250/16550-compatible com(4) ports, which means that comintr() from dev/ic/com.c would be called immediately, which certainly doesn't have a major problem.
Now for strangeness... I added a simple printf in the beginning of the comintr routine in com.c, as you suggested, and it doesn't panic now. I removed it, made a new kernel, got a panic... Strange...
The built-in serial port works fine, as that's what I'm using for the console right now. Also, this card is replacing a Multiface card, so I know the mfc ports work fine. I just wanted more ports.
Some more testing shows that a really short printf around line 1864 (after (if (COM_ISALIVE(sc) == 0)) doesn't affect anything (it still panics on the first character), but a longer printf allows the use of the port for a little while. I'm just pressing on the keyboard, so I'd guess it's just changing the timing a little, and I'd guess that any sort of full-speed serial usage would be much faster than my keyboard repeat rate.
Does anyone have any clue why a printf in that area changes things? A delay() doesn't...
John