Hi,
The problem seems to be that initialization functions are marked as __init which is perfectly fine for anything which is not a module. Any code which sits in .init.text section (basically anything with __init annotation) gets freed very early during boot. This means that that particular initialization function might not be available to be called on a second module insertion.
I have a patch ready, but it needs testing. I have sent it to colleagues who can help with testing and we should have an answer pretty soon; but if you want to see the patch in early stage, I can certainly email it to you.
regards