I have no idea how com_cd.cd_devs[DEVUNIT(dev)] became NULL. > com4 at puc0 port 0 apic 2 int 16: ns16550a, 16 byte fifo
because the way the config works is that if that line is printed, the com_cd.cd_devs[] has been filled with pointer to a properly-over-sized struct device * useable as a device-specific softc. One ugly thing about console in some drivers, is that the *open function might not be called before the first *write call, but *open() is responsible for allocating the tty structure with a call to ttymalloc().
