mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
KVM: Introduce CONFIG_HAVE_KVM_DIRTY_RING
I'd like to make the build include dirty_ring.c based on whether the arch wants it or not. That's a whole lot simpler if there's a config symbol instead of doing it implicitly on KVM_DIRTY_LOG_PAGE_OFFSET being set to something non-zero. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Message-Id: <20211121125451.9489-2-dwmw2@infradead.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
45af1bb99b
commit
dc70ec217c
@ -27,6 +27,7 @@ config KVM
|
||||
select MMU_NOTIFIER
|
||||
select HAVE_KVM_IRQCHIP
|
||||
select HAVE_KVM_IRQFD
|
||||
select HAVE_KVM_DIRTY_RING
|
||||
select IRQ_BYPASS_MANAGER
|
||||
select HAVE_KVM_IRQ_BYPASS
|
||||
select HAVE_KVM_IRQ_ROUTING
|
||||
|
@ -27,9 +27,9 @@ struct kvm_dirty_ring {
|
||||
int index;
|
||||
};
|
||||
|
||||
#if (KVM_DIRTY_LOG_PAGE_OFFSET == 0)
|
||||
#ifndef CONFIG_HAVE_KVM_DIRTY_RING
|
||||
/*
|
||||
* If KVM_DIRTY_LOG_PAGE_OFFSET not defined, kvm_dirty_ring.o should
|
||||
* If CONFIG_HAVE_HVM_DIRTY_RING not defined, kvm_dirty_ring.o should
|
||||
* not be included as well, so define these nop functions for the arch.
|
||||
*/
|
||||
static inline u32 kvm_dirty_ring_get_rsvd_entries(void)
|
||||
@ -74,7 +74,7 @@ static inline bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring)
|
||||
return true;
|
||||
}
|
||||
|
||||
#else /* KVM_DIRTY_LOG_PAGE_OFFSET == 0 */
|
||||
#else /* CONFIG_HAVE_KVM_DIRTY_RING */
|
||||
|
||||
u32 kvm_dirty_ring_get_rsvd_entries(void);
|
||||
int kvm_dirty_ring_alloc(struct kvm_dirty_ring *ring, int index, u32 size);
|
||||
@ -98,6 +98,6 @@ struct page *kvm_dirty_ring_get_page(struct kvm_dirty_ring *ring, u32 offset);
|
||||
void kvm_dirty_ring_free(struct kvm_dirty_ring *ring);
|
||||
bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring);
|
||||
|
||||
#endif /* KVM_DIRTY_LOG_PAGE_OFFSET == 0 */
|
||||
#endif /* CONFIG_HAVE_KVM_DIRTY_RING */
|
||||
|
||||
#endif /* KVM_DIRTY_RING_H */
|
||||
|
@ -13,6 +13,9 @@ config HAVE_KVM_IRQFD
|
||||
config HAVE_KVM_IRQ_ROUTING
|
||||
bool
|
||||
|
||||
config HAVE_KVM_DIRTY_RING
|
||||
bool
|
||||
|
||||
config HAVE_KVM_EVENTFD
|
||||
bool
|
||||
select EVENTFD
|
||||
|
@ -3600,7 +3600,7 @@ EXPORT_SYMBOL_GPL(kvm_vcpu_on_spin);
|
||||
|
||||
static bool kvm_page_in_dirty_ring(struct kvm *kvm, unsigned long pgoff)
|
||||
{
|
||||
#if KVM_DIRTY_LOG_PAGE_OFFSET > 0
|
||||
#ifdef CONFIG_HAVE_KVM_DIRTY_RING
|
||||
return (pgoff >= KVM_DIRTY_LOG_PAGE_OFFSET) &&
|
||||
(pgoff < KVM_DIRTY_LOG_PAGE_OFFSET +
|
||||
kvm->dirty_ring_size / PAGE_SIZE);
|
||||
@ -4305,7 +4305,7 @@ static long kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg)
|
||||
case KVM_CAP_NR_MEMSLOTS:
|
||||
return KVM_USER_MEM_SLOTS;
|
||||
case KVM_CAP_DIRTY_LOG_RING:
|
||||
#if KVM_DIRTY_LOG_PAGE_OFFSET > 0
|
||||
#ifdef CONFIG_HAVE_KVM_DIRTY_RING
|
||||
return KVM_DIRTY_RING_MAX_ENTRIES * sizeof(struct kvm_dirty_gfn);
|
||||
#else
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user