linux/virt/kvm/dirty_ring.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * KVM dirty ring implementation
 *
 * Copyright 2019 Red Hat, Inc.
 */
#include <linux/kvm_host.h>
#include <linux/kvm.h>
#include <linux/vmalloc.h>
#include <linux/kvm_dirty_ring.h>
#include <trace/events/kvm.h>
#include "kvm_mm.h"

int __weak kvm_cpu_dirty_log_size(void)
{}

u32 kvm_dirty_ring_get_rsvd_entries(void)
{}

bool kvm_use_dirty_bitmap(struct kvm *kvm)
{}

#ifndef CONFIG_NEED_KVM_DIRTY_RING_WITH_BITMAP
bool kvm_arch_allow_write_without_running_vcpu(struct kvm *kvm)
{}
#endif

static u32 kvm_dirty_ring_used(struct kvm_dirty_ring *ring)
{}

static bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring)
{}

static bool kvm_dirty_ring_full(struct kvm_dirty_ring *ring)
{}

static void kvm_reset_dirty_gfn(struct kvm *kvm, u32 slot, u64 offset, u64 mask)
{}

int kvm_dirty_ring_alloc(struct kvm_dirty_ring *ring, int index, u32 size)
{}

static inline void kvm_dirty_gfn_set_invalid(struct kvm_dirty_gfn *gfn)
{}

static inline void kvm_dirty_gfn_set_dirtied(struct kvm_dirty_gfn *gfn)
{}

static inline bool kvm_dirty_gfn_harvested(struct kvm_dirty_gfn *gfn)
{}

int kvm_dirty_ring_reset(struct kvm *kvm, struct kvm_dirty_ring *ring)
{}

void kvm_dirty_ring_push(struct kvm_vcpu *vcpu, u32 slot, u64 offset)
{}

bool kvm_dirty_ring_check_request(struct kvm_vcpu *vcpu)
{}

struct page *kvm_dirty_ring_get_page(struct kvm_dirty_ring *ring, u32 offset)
{}

void kvm_dirty_ring_free(struct kvm_dirty_ring *ring)
{}