Hi was trying to do some digging for multi core scenarios both with and without KVM.
In short i have some devices and a user application that does some r/w operations on those devices.
As per my understanding, in case binary translation using TCG is invoked, we only create a single Qemuthread for all vcpu's. In case of KVM we have a Qemuthread for each vcpu as TCG is bypassed in this case.
[Test scenario]
Lets say i have devices dev1 and dev2. Test application for dev1 is executed on core0 and dev2 on core1.
For device dev1, for testing purposes i specified some sleep whenever a read comes.
In case KVM is enabled, whenever the sleep is hit my whole VM freezes.
1. Are are devices emulated in a separate single thread ?
2. How and where in the code do we do a switch between CPU thread and IOthread ?
Regards,
Gaurav