Linux / Xen 源代码片段解读 (1):函数 adjust_vmx_controls(arch/x86/kvm/vmx.c)

本文详细解读了Linux内核arch/x86/kvm/vmx.c中的adjust_vmx_controls函数,该函数用于根据MSR寄存器的值校正虚拟机监控器(VMX)的控制设置。通过对ctl_min和ctl_opt的处理,确保CPU功能的正确开启,并满足最小设置要求。
摘要由CSDN通过智能技术生成
arch/x86/kvm/vmx.c Kernel-based Virtual Machine driver for Linux
static __init int adjust_vmx_controls(u32 ctl_min, u32 ctl_opt,
                                      u32 msr, u32 *result)
{
        u32 vmx_msr_low, vmx_msr_high;
        u32 ctl = ctl_min | ctl_opt;

        rdmsr(msr, vmx_msr_low, vmx_msr_high);

        ctl &= vmx_msr_high; /* bit == 0 in high word ==> must be zero */
        ctl |= vmx_msr_low;  /* bit == 1 in low word  ==> must be one  */

        /* Ensure minimum (required) set of control bits are supported. */
        if (ctl_min & ~ctl)
                return -EIO;

        *result = ctl;
        return 0;
}
该函数用于根据 MSR 寄存器的实际值,校正(adjust)期望的设置,这里的所谓“设置”表示为 32 位的控制字符(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值