提交 20420430 编写于 作者: S Sheng Yang 提交者: Marcelo Tosatti

kvm: allow qemu to set EPT identity mapping address

If we use larger BIOS image than current 256KB, we would need move reserved
TSS and EPT identity mapping pages. Currently TSS support this, but not
EPT.
Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: NAvi Kivity <avi@redhat.com>
上级 7c80eef8
......@@ -326,6 +326,25 @@ static int kvm_has_msr_star(CPUState *env)
return 0;
}
static int kvm_init_identity_map_page(KVMState *s)
{
#ifdef KVM_CAP_SET_IDENTITY_MAP_ADDR
int ret;
uint64_t addr = 0xfffbc000;
if (!kvm_check_extension(s, KVM_CAP_SET_IDENTITY_MAP_ADDR)) {
return 0;
}
ret = kvm_vm_ioctl(s, KVM_SET_IDENTITY_MAP_ADDR, &addr);
if (ret < 0) {
fprintf(stderr, "kvm_set_identity_map_addr: %s\n", strerror(ret));
return ret;
}
#endif
return 0;
}
int kvm_arch_init(KVMState *s, int smp_cpus)
{
int ret;
......@@ -353,7 +372,12 @@ int kvm_arch_init(KVMState *s, int smp_cpus)
perror("e820_add_entry() table is full");
exit(1);
}
return kvm_vm_ioctl(s, KVM_SET_TSS_ADDR, 0xfffbd000);
ret = kvm_vm_ioctl(s, KVM_SET_TSS_ADDR, 0xfffbd000);
if (ret < 0) {
return ret;
}
return kvm_init_identity_map_page(s);
}
static void set_v8086_seg(struct kvm_segment *lhs, const SegmentCache *rhs)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册