Attempting to initialize si_drv{1,2} with mda_si_drv{1,2} does not work if you are operating on cloned devices.
clone_create must be called prior to the make_dev* family to create/return the device on the clonelist as needed. This device is later returned early in newdev(), prior to si_drv{0,1,2} initialization.
This patch simply breaks out of the loop if we've found a non-(SI_CHEAPCLONE | SI_NAMED) device and finishes init. I'm not convinced SI_CHEAPCLONE needs to stick around from a brief poke around this stuff, but I've made sure we don't touch these devices if they are already initialized here.
Later check of !SI_NAMED in make_dev_sv could be removed now that newdev() should catch it earlier, but I've not done so.