Hi, I think that I might have misunderstood something fundamental about the BQL (or possibly Qemu in general).
I have a custom PCIe device that connects to an outside simulation environment using Unix domain sockets. To deal with bus-mastering from this outside environment I have a thread created with qemu_thread_create listening to the socket. If I get a read/write/interrupt request over the socket then the thread should perform a pci_dma_read/pci_dma_write/msix_notify. Since this is called from the threads context I assumed I should first grab the BQL. Issuing a bql_lock from the thread however hangs Qemu. Is my thinking flawed? I think looks very similar to what is going on in hw/misc/edu.c where bql_lock is called from a thread. Thanks, Markus