mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-08-12 13:32:31 +00:00
hv:Wrap some APIs related with guest pm
-- change some APIs to static -- combine two APIs to init_guest_pm Tracked-On: #1842 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
This commit is contained in:
parent
988c1e483b
commit
292d1a15f9
@ -103,7 +103,7 @@ static inline void init_cx_port(struct acrn_vm *vm)
|
||||
}
|
||||
}
|
||||
|
||||
void vm_setup_cpu_state(struct acrn_vm *vm)
|
||||
static void vm_setup_cpu_state(struct acrn_vm *vm)
|
||||
{
|
||||
vm_setup_cpu_px(vm);
|
||||
vm_setup_cpu_cx(vm);
|
||||
@ -113,7 +113,7 @@ void vm_setup_cpu_state(struct acrn_vm *vm)
|
||||
/* This function is for power management Sx state implementation,
|
||||
* VM need to load the Sx state data to implement S3/S5.
|
||||
*/
|
||||
int32_t vm_load_pm_s_state(struct acrn_vm *vm)
|
||||
static int32_t vm_load_pm_s_state(struct acrn_vm *vm)
|
||||
{
|
||||
int32_t ret;
|
||||
struct pm_s_state_data *sx_data = get_host_sstate_data();
|
||||
@ -278,7 +278,7 @@ static void register_gas_io_handler(struct acrn_vm *vm, uint32_t pio_idx, const
|
||||
}
|
||||
}
|
||||
|
||||
void register_pm1ab_handler(struct acrn_vm *vm)
|
||||
static void register_pm1ab_handler(struct acrn_vm *vm)
|
||||
{
|
||||
struct pm_s_state_data *sx_data = vm->pm.sx_state_data;
|
||||
|
||||
@ -315,7 +315,7 @@ static bool rt_vm_pm1a_io_write(struct acrn_vcpu *vcpu, uint16_t addr, size_t wi
|
||||
return false;
|
||||
}
|
||||
|
||||
void register_rt_vm_pm1a_ctl_handler(struct acrn_vm *vm)
|
||||
static void register_rt_vm_pm1a_ctl_handler(struct acrn_vm *vm)
|
||||
{
|
||||
struct vm_io_range io_range;
|
||||
|
||||
@ -325,3 +325,20 @@ void register_rt_vm_pm1a_ctl_handler(struct acrn_vm *vm)
|
||||
register_pio_emulation_handler(vm, VIRTUAL_PM1A_CNT_PIO_IDX, &io_range,
|
||||
&rt_vm_pm1a_io_read, &rt_vm_pm1a_io_write);
|
||||
}
|
||||
|
||||
void init_guest_pm(struct acrn_vm *vm)
|
||||
{
|
||||
vm_setup_cpu_state(vm);
|
||||
|
||||
if (is_sos_vm(vm)) {
|
||||
/* Load pm S state data */
|
||||
if (vm_load_pm_s_state(vm) == 0) {
|
||||
register_pm1ab_handler(vm);
|
||||
}
|
||||
}
|
||||
|
||||
/* Intercept the virtual pm port for RTVM */
|
||||
if (is_rt_vm(vm)) {
|
||||
register_rt_vm_pm1a_ctl_handler(vm);
|
||||
}
|
||||
}
|
||||
|
@ -397,21 +397,6 @@ static void prepare_epc_vm_memmap(struct acrn_vm *vm)
|
||||
}
|
||||
}
|
||||
|
||||
static void register_pm_io_handler(struct acrn_vm *vm)
|
||||
{
|
||||
if (is_sos_vm(vm)) {
|
||||
/* Load pm S state data */
|
||||
if (vm_load_pm_s_state(vm) == 0) {
|
||||
register_pm1ab_handler(vm);
|
||||
}
|
||||
}
|
||||
|
||||
/* Intercept the virtual pm port for RTVM */
|
||||
if (is_rt_vm(vm)) {
|
||||
register_rt_vm_pm1a_ctl_handler(vm);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief get bitmap of pCPUs whose vCPUs have LAPIC PT enabled
|
||||
*
|
||||
@ -515,9 +500,7 @@ int32_t create_vm(uint16_t vm_id, struct acrn_vm_config *vm_config, struct acrn_
|
||||
*/
|
||||
setup_io_bitmap(vm);
|
||||
|
||||
vm_setup_cpu_state(vm);
|
||||
|
||||
register_pm_io_handler(vm);
|
||||
init_guest_pm(vm);
|
||||
|
||||
if (!is_lapic_pt_configured(vm)) {
|
||||
vpic_init(vm);
|
||||
|
@ -7,10 +7,7 @@
|
||||
#ifndef GUEST_PM_H
|
||||
#define GUEST_PM_H
|
||||
|
||||
void vm_setup_cpu_state(struct acrn_vm *vm);
|
||||
int32_t vm_load_pm_s_state(struct acrn_vm *vm);
|
||||
int32_t validate_pstate(const struct acrn_vm *vm, uint64_t perf_ctl);
|
||||
void register_pm1ab_handler(struct acrn_vm *vm);
|
||||
void register_rt_vm_pm1a_ctl_handler(struct acrn_vm *vm);
|
||||
void init_guest_pm(struct acrn_vm *vm);
|
||||
|
||||
#endif /* PM_H */
|
||||
|
Loading…
Reference in New Issue
Block a user