mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-06-07 17:46:15 +00:00
modularization: move vMTRR code to guest directory
MTRR emulation belongs to virtual CPU component. - rename mtrr.c to vmtrr.c and move it to arch/x86/guest - rename mtrr.h to vmtrr.h and move it to include/arch/x86/guest Tracked-On: #1842 Signed-off-by: Zide Chen <zide.chen@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
86
hypervisor/include/arch/x86/guest/vmtrr.h
Normal file
86
hypervisor/include/arch/x86/guest/vmtrr.h
Normal file
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (C) <2018> Intel Corporation
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
/**
|
||||
* @file vmtrr.h
|
||||
*
|
||||
* @brief MTRR Virtualization
|
||||
*/
|
||||
#ifndef VMTRR_H
|
||||
#define VMTRR_H
|
||||
/**
|
||||
* @brief MTRR Virtualization
|
||||
*
|
||||
* @addtogroup acrn_mem ACRN Memory Management
|
||||
* @{
|
||||
*/
|
||||
#define FIXED_RANGE_MTRR_NUM 11U
|
||||
#define MTRR_SUB_RANGE_NUM 8U
|
||||
|
||||
union mtrr_cap_reg {
|
||||
uint64_t value;
|
||||
struct {
|
||||
uint32_t vcnt:8;
|
||||
uint32_t fix:1;
|
||||
uint32_t res0:1;
|
||||
uint32_t wc:1;
|
||||
uint32_t res1:21;
|
||||
uint32_t res2:32;
|
||||
} bits;
|
||||
};
|
||||
|
||||
union mtrr_def_type_reg {
|
||||
uint64_t value;
|
||||
struct {
|
||||
uint32_t type:8;
|
||||
uint32_t res0:2;
|
||||
uint32_t fixed_enable:1;
|
||||
uint32_t enable:1;
|
||||
uint32_t res1:20;
|
||||
uint32_t res2:32;
|
||||
} bits;
|
||||
};
|
||||
|
||||
union mtrr_fixed_range_reg {
|
||||
uint64_t value;
|
||||
uint8_t type[MTRR_SUB_RANGE_NUM];
|
||||
};
|
||||
|
||||
struct mtrr_state {
|
||||
union mtrr_cap_reg cap;
|
||||
union mtrr_def_type_reg def_type;
|
||||
union mtrr_fixed_range_reg fixed_range[FIXED_RANGE_MTRR_NUM];
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Virtual MTRR MSR write
|
||||
*
|
||||
* @param[inout] vcpu The pointer that points VCPU data structure
|
||||
* @param[in] msr Virtual MTRR MSR Address
|
||||
* @param[in] value The value that will be writen into virtual MTRR MSR
|
||||
*
|
||||
* @return None
|
||||
*/
|
||||
void mtrr_wrmsr(struct acrn_vcpu *vcpu, uint32_t msr, uint64_t value);
|
||||
/**
|
||||
* @brief Virtual MTRR MSR read
|
||||
*
|
||||
* @param[in] vcpu The pointer that points VCPU data structure
|
||||
* @param[in] msr Virtual MTRR MSR Address
|
||||
*
|
||||
* @return The specified virtual MTRR MSR value
|
||||
*/
|
||||
uint64_t mtrr_rdmsr(const struct acrn_vcpu *vcpu, uint32_t msr);
|
||||
/**
|
||||
* @brief Virtual MTRR initialization
|
||||
*
|
||||
* @param[inout] vcpu The pointer that points VCPU data structure
|
||||
*
|
||||
* @return None
|
||||
*/
|
||||
void init_mtrr(struct acrn_vcpu *vcpu);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
#endif /* VMTRR_H */
|
||||
Reference in New Issue
Block a user