mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
2b3c246a68
This patch changes coalesced mmio to create one mmio device per zone instead of handling all zones in one device. Doing so enables us to take advantage of existing locking and prevents a race condition between coalesced mmio registration/unregistration and lookups. Suggested-by: Avi Kivity <avi@redhat.com> Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
39 lines
915 B
C
39 lines
915 B
C
#ifndef __KVM_COALESCED_MMIO_H__
|
|
#define __KVM_COALESCED_MMIO_H__
|
|
|
|
/*
|
|
* KVM coalesced MMIO
|
|
*
|
|
* Copyright (c) 2008 Bull S.A.S.
|
|
*
|
|
* Author: Laurent Vivier <Laurent.Vivier@bull.net>
|
|
*
|
|
*/
|
|
|
|
#ifdef CONFIG_KVM_MMIO
|
|
|
|
#include <linux/list.h>
|
|
|
|
struct kvm_coalesced_mmio_dev {
|
|
struct list_head list;
|
|
struct kvm_io_device dev;
|
|
struct kvm *kvm;
|
|
struct kvm_coalesced_mmio_zone zone;
|
|
};
|
|
|
|
int kvm_coalesced_mmio_init(struct kvm *kvm);
|
|
void kvm_coalesced_mmio_free(struct kvm *kvm);
|
|
int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm,
|
|
struct kvm_coalesced_mmio_zone *zone);
|
|
int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,
|
|
struct kvm_coalesced_mmio_zone *zone);
|
|
|
|
#else
|
|
|
|
static inline int kvm_coalesced_mmio_init(struct kvm *kvm) { return 0; }
|
|
static inline void kvm_coalesced_mmio_free(struct kvm *kvm) { }
|
|
|
|
#endif
|
|
|
|
#endif
|