linux/tools/testing/selftests/kvm/lib/kvm_util_internal.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * tools/testing/selftests/kvm/lib/kvm_util_internal.h
   4 *
   5 * Copyright (C) 2018, Google LLC.
   6 */
   7
   8#ifndef SELFTEST_KVM_UTIL_INTERNAL_H
   9#define SELFTEST_KVM_UTIL_INTERNAL_H
  10
  11#include "sparsebit.h"
  12
  13#define KVM_DEV_PATH            "/dev/kvm"
  14
  15struct userspace_mem_region {
  16        struct kvm_userspace_memory_region region;
  17        struct sparsebit *unused_phy_pages;
  18        int fd;
  19        off_t offset;
  20        void *host_mem;
  21        void *mmap_start;
  22        size_t mmap_size;
  23        struct list_head list;
  24};
  25
  26struct vcpu {
  27        struct list_head list;
  28        uint32_t id;
  29        int fd;
  30        struct kvm_run *state;
  31};
  32
  33struct kvm_vm {
  34        int mode;
  35        unsigned long type;
  36        int kvm_fd;
  37        int fd;
  38        unsigned int pgtable_levels;
  39        unsigned int page_size;
  40        unsigned int page_shift;
  41        unsigned int pa_bits;
  42        unsigned int va_bits;
  43        uint64_t max_gfn;
  44        struct list_head vcpus;
  45        struct list_head userspace_mem_regions;
  46        struct sparsebit *vpages_valid;
  47        struct sparsebit *vpages_mapped;
  48        bool has_irqchip;
  49        bool pgd_created;
  50        vm_paddr_t pgd;
  51        vm_vaddr_t gdt;
  52        vm_vaddr_t tss;
  53};
  54
  55struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid);
  56
  57/*
  58 * Virtual Translation Tables Dump
  59 *
  60 * Input Args:
  61 *   stream - Output FILE stream
  62 *   vm     - Virtual Machine
  63 *   indent - Left margin indent amount
  64 *
  65 * Output Args: None
  66 *
  67 * Return: None
  68 *
  69 * Dumps to the FILE stream given by @stream, the contents of all the
  70 * virtual translation tables for the VM given by @vm.
  71 */
  72void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent);
  73
  74/*
  75 * Register Dump
  76 *
  77 * Input Args:
  78 *   stream - Output FILE stream
  79 *   regs   - Registers
  80 *   indent - Left margin indent amount
  81 *
  82 * Output Args: None
  83 *
  84 * Return: None
  85 *
  86 * Dumps the state of the registers given by @regs, to the FILE stream
  87 * given by @stream.
  88 */
  89void regs_dump(FILE *stream, struct kvm_regs *regs, uint8_t indent);
  90
  91/*
  92 * System Register Dump
  93 *
  94 * Input Args:
  95 *   stream - Output FILE stream
  96 *   sregs  - System registers
  97 *   indent - Left margin indent amount
  98 *
  99 * Output Args: None
 100 *
 101 * Return: None
 102 *
 103 * Dumps the state of the system registers given by @sregs, to the FILE stream
 104 * given by @stream.
 105 */
 106void sregs_dump(FILE *stream, struct kvm_sregs *sregs, uint8_t indent);
 107
 108struct userspace_mem_region *
 109memslot2region(struct kvm_vm *vm, uint32_t memslot);
 110
 111#endif /* SELFTEST_KVM_UTIL_INTERNAL_H */
 112