I am launching an x86 debian system as guest using QEMU2.6.0 on my x86 host machine. The host is an 8-core, 2-socket machine booted with RHEL7 with KVM enabled. 2 PCI devices are being emulated on the guest. -I need to verify the concurrent operation of these PCI devices. PCI device A is designed in such a way that accesing a particular BAR offset X induces sleep() in this device for fixed duration. During this sleep duration, the test application tries to access BAR for PCI device B & write data to it.

  • Global locking is cleared while creating memory regions for both PCI devices.
  • Task affinity is set for processes launched to kick test applications which are trying to access BARs for PCI A & B.
  • When QEMU is booted with -smp 4 option, 4 vcpus are created. By Setting task affinity , I force the scheduler to schedule access operation for both devices to separate vcpus.
  • In that case, even if PCI device A goes to sleep on say vcpu0, PCI device B BAR access should be scheduled on another vcpu number chosen using taskset .
  • This behavior is not being observed. When device A enter sleep, R/W operations on device B are halted & they resume only when device A comes out of sleep.

Can anyone share your view on why such behavior is observed ?

I am currenty in dark regarding debugging this problem & need a pointer as to how should I start debugging this issue.

Regards LT

  • Since this is a pretty low level question, I'd try and ask on the qemu developers list. – dyasny Sep 20 '16 at 13:24
  • I tried asking there too, but no reply yet :( – Linux Techie Sep 26 '16 at 5:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.