AFAIU, the only issue is lack of ability to fine-tune period size of DMA runtime. Otherwise, for the requirement, having period-size almost equal to ring-buffer serves better than disabling interrupts and using timer based updating, more so for VMs with inaccurate timer source.
Then I think, rather then providing a way to disable hw-intr, we'd better provide a way to modify runtime period-size at DMA Driver level, and snd_pcm_period_elapsed seems already capable to handle that. That way, disabled interrupts would just be a special case with period-size := ULONG_MAX.
Is this a realistic option? With the majority of existing hardware period interrupts are programmed with a flag set in a descriptor when the DMA linked list is created. That includes HDAudio and numerous others. I am skeptical that one could reliably modify these descriptors at run-time, specifically in the case where the controller caches the descriptors. Modifying the linked list would likewise generate race conditions. I still view timers are the lesser of two evils.