One of my developers has reported that when qemu x86 (version 3.0.0) sees an STI instruction (enable interrupts, but defer one instruction before doing so), and the next instruction is a RET (return from subroutine), then interrupts are never enabled. If a "nop" is inserted between the STI and the RET, then everything works as expected. I checked the changelog from 4.1.0 back to 3.0.0 and I didn't see a fix for this.
If anyone has a quick patch, I'd be happy to check it out :-)