"error code is %x\n", vmcb->exitinfo2,
vmcb->exitinfo1 & 0xf);
break;
+ case VMEXIT_XSETBV:
+ cpu_data->stats[JAILHOUSE_CPU_STAT_VMEXITS_XSETBV]++;
+ if ((guest_regs->rax & X86_XCR0_FP) &&
+ (guest_regs->rax & ~cpuid_eax(0x0d)) == 0 &&
+ guest_regs->rcx == 0 && guest_regs->rdx == 0) {
+ vcpu_skip_emulated_instruction(X86_INST_LEN_XSETBV);
+ asm volatile(
+ "xsetbv"
+ : /* no output */
+ : "a" (guest_regs->rax), "c" (0), "d" (0));
+ return;
+ }
+ panic_printk("FATAL: Invalid xsetbv parameters: "
+ "xcr[%d] = %x:%x\n", guest_regs->rcx,
+ guest_regs->rdx, guest_regs->rax);
+ break;
case VMEXIT_IOIO:
cpu_data->stats[JAILHOUSE_CPU_STAT_VMEXITS_PIO]++;
vcpu_vendor_get_io_intercept(cpu_data, &io);