Hi,

>>> The point is that both pt as well as emulation suffer from the same
>>> issue: lacking real-time support of QEMU. So I guess Windows uses a
>>> different buffer size for the real hardware than for our HDA model.
>>
>> For pt hardware, the BARs just get directly mapped into guest memory space, 
>> so BAR accesses don't go through QEMU anymore. I guess you're also using the 
>> in-kernel PIC, at which point you're not using QEMU anymore for the HDA. The 
>> vcpus should keep running even when you move windows in VNC, right?
>>
>> So it could just as well be that Windows is not using a different buffer 
>> size, but you're simply exiting into QEMU a lot less, getting better 
>> latencies.
> 
> That appears like a simple explanation, but I'm basically getting the
> same exit rate with emulation as with pt (>2000 userspace exits/s). At
> this rate, every significant userspace delay should be audible as it
> also delays vcpu execution.

No.  Whatever the qemu iothread is doing does *not* disturb the vcpu(s),
as long as they don't need the qemu mutex.  And with pt windows can play
sound without needing the qemu mutex, whereas with emulation it is needed.

> The IRQ rate with pt is around 100 HZ. When does the hardware trigger an
> IRQ? Likely before the end of the buffer. At half of its size?

Yes, half buffer.  one page buffersize -> 20ms sound data total -> irq &
refill every 10ms -> 100 irqs/s needed.  Windows uses the same buffer
size in passthrough case.

cheers,
  Gerd


Reply via email to