mirror of https://github.com/xqemu/xqemu.git
Add function to assign ioeventfd to MMIO.
Signed-off-by: Cam Macdonell <cam@cs.ualberta.ca> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
b6828931eb
commit
44f1a3d876
32
kvm-all.c
32
kvm-all.c
|
@ -1241,6 +1241,38 @@ int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int kvm_set_ioeventfd_mmio_long(int fd, uint32_t addr, uint32_t val, bool assign)
|
||||||
|
{
|
||||||
|
#ifdef KVM_IOEVENTFD
|
||||||
|
int ret;
|
||||||
|
struct kvm_ioeventfd iofd;
|
||||||
|
|
||||||
|
iofd.datamatch = val;
|
||||||
|
iofd.addr = addr;
|
||||||
|
iofd.len = 4;
|
||||||
|
iofd.flags = KVM_IOEVENTFD_FLAG_DATAMATCH;
|
||||||
|
iofd.fd = fd;
|
||||||
|
|
||||||
|
if (!kvm_enabled()) {
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!assign) {
|
||||||
|
iofd.flags |= KVM_IOEVENTFD_FLAG_DEASSIGN;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = kvm_vm_ioctl(kvm_state, KVM_IOEVENTFD, &iofd);
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
return -errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
return -ENOSYS;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int kvm_set_ioeventfd_pio_word(int fd, uint16_t addr, uint16_t val, bool assign)
|
int kvm_set_ioeventfd_pio_word(int fd, uint16_t addr, uint16_t val, bool assign)
|
||||||
{
|
{
|
||||||
#ifdef KVM_IOEVENTFD
|
#ifdef KVM_IOEVENTFD
|
||||||
|
|
1
kvm.h
1
kvm.h
|
@ -175,6 +175,7 @@ static inline void cpu_synchronize_post_init(CPUState *env)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
int kvm_set_ioeventfd_mmio_long(int fd, uint32_t adr, uint32_t val, bool assign);
|
||||||
|
|
||||||
int kvm_set_ioeventfd_pio_word(int fd, uint16_t adr, uint16_t val, bool assign);
|
int kvm_set_ioeventfd_pio_word(int fd, uint16_t adr, uint16_t val, bool assign);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue