On Fri, Mar 12, 2010 at 12:43 AM, Avi Kivity <avi@xxxxxxxxxx> wrote: > On 03/12/2010 07:08 AM, Cam Macdonell wrote: >> >> + s->ivshmem_mmio_io_addr = cpu_register_io_memory(ivshmem_mmio_read, >> + ivshmem_mmio_write, s); >> + /* region for registers*/ >> + pci_register_bar(&d->dev, 0, 0x100, >> + PCI_BASE_ADDRESS_SPACE_MEMORY, >> ivshmem_mmio_map); >> > > You've selected the memory address space here. > >> my basic attempt looks like this: >> >> struct kvm_ioeventfd ked; >> >> ked.addr = s->otheraddr + Doorbell; >> ked.len = 4; >> ked.flags = KVM_IOEVENTFD_FLAG_PIO; >> ked.fd = an_eventfd; >> ret = kvm_vm_ioctl(kvm_state, KVM_IOEVENTFD,&ked); >> > > But the PIO address space here. > >> but when the guest writes to the offset of Doorbell, I cannot see any >> action (via a select on the fd). Is there something obviously wrong >> that I'm doing? >> > > Yes - they must match. Not PIO is faster on x86 but nonexistant elsewhere. Does it matter that PIO is slower since with ioeventfd Qemu is being bypassed all together? Can I use the memory space with ioeventfds? There doesn't seem to be a flag (KVM_IOEVENTFD_FLAG_MMIO) for it. Cam > > -- > Do not meddle in the internals of kernels, for they are subtle and quick to > panic. > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html