Ooooh, that makes things much more interesting.
Is this a fully-custom OS, or does it derive from some other existing OS? What do you have configured as the guest OS type for the virtual machine?
I'm not sure if the timer interrupt delay issue is necessarily related, but if I were in your shoes I'd want to resolve the bad DMA writes before expending much more effort to reason about anything else in the guest, since bad DMA writes are very typical of misbehaving/hyperspaced guests and indicate that the guest OS is unexpectedly clobbering I/O registers, with unknown consequences.
DMA port 0: bad 4 byte access (1): 0x0 means that something inside the guest has done an outl(0x0, 0x0) or equivalent, which is almost certainly bogus. In the prior cases I've seen, it means that the guest OS is confused and is trying to do port I/O to the wrong place, since 8253-compatible DMA controllers' port interfaces are only intended to be addressed with byte I/O, not word or dword I/O. The (1) in the message indicates that it's a single I/O (outl), not a string I/O (outsl).
Likewise, DMA port 4: bad 4 byte access (1): 0x44c00249 means that something inside the guest has done an outl(0x44c00249, 0x4) or equivalent, which is probably also bogus.
We emit those warnings specifically to help us detect misbehaving guest OSes.
You might need to do some detective work to figure out what code inside the guest is performing those I/O accesses and to correct it so that it's doing what it intends.
Cheers,
--
Darius