On Sun, Sep 30, 2012 at 4:13 PM, Avi Kivity <a...@redhat.com> wrote: > On 09/29/2012 11:20 AM, liu ping fan wrote: >> >> Do we have iommus in qemu now, > > We do, but they're hacked into the scsi layer, see hw/sun4m_iommu.c. I > don't know if it's a standalone iommu on real hardware or whether it is > part of the HBA. > >> since there are no separate phys_maps >> for real address and dev's virt address, and I think the iommu is only >> needed by host, not guest, so need not emulated by qemu. > > Eventually we will emulate iommus for x86 too, so we need to consider them. > For nested guest? The address translation is like nested mmu? >> If no, we >> can just reject the nested DMA, and the c_p_m_rw() can only be nested >> once, so if introduce a wrapper for c_p_m_rw(), we can avoid >> recursive big lock, right? > > Don't we need that for other reasons? If not, we can drop it for now. > Yes, there is another reason is about the unplug process as you suggest, DeviceState::uninit() can call del timer with nested biglock. Or as alternative, we del timer when unplug and check the valid of timer when mmio-dispatch in e1000.
Regards, pingfan > -- > error compiling committee.c: too many arguments to function