Check xgetbv availability before use for machines without it (i.e. KVM)
This commit is contained in:
@ -1473,29 +1473,28 @@ void ihk_mc_delay_us(int us)
|
|||||||
arch_delay(us);
|
arch_delay(us);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define EXTENDED_ARCH_SHOW_CONTEXT
|
|
||||||
#ifdef EXTENDED_ARCH_SHOW_CONTEXT
|
|
||||||
void arch_show_extended_context(void)
|
void arch_show_extended_context(void)
|
||||||
{
|
{
|
||||||
unsigned long cr0, cr4, msr, xcr0;
|
unsigned long cr0, cr4, msr, xcr0 = 0;
|
||||||
|
|
||||||
/* Read and print CRs, MSR_EFER, XCR0 */
|
/* Read and print CRs, MSR_EFER, XCR0 */
|
||||||
asm volatile("movq %%cr0, %0" : "=r"(cr0));
|
asm volatile("movq %%cr0, %0" : "=r"(cr0));
|
||||||
asm volatile("movq %%cr4, %0" : "=r"(cr4));
|
asm volatile("movq %%cr4, %0" : "=r"(cr4));
|
||||||
msr = rdmsr(MSR_EFER);
|
msr = rdmsr(MSR_EFER);
|
||||||
xcr0 = xgetbv(0);
|
if (xsave_available) {
|
||||||
|
xcr0 = xgetbv(0);
|
||||||
|
}
|
||||||
__kprintf("\n CR0 CR4\n");
|
__kprintf("\n CR0 CR4\n");
|
||||||
__kprintf("%016lX %016lX\n", cr0, cr4);
|
__kprintf("%016lX %016lX\n", cr0, cr4);
|
||||||
|
|
||||||
__kprintf(" MSR_EFER\n");
|
__kprintf(" MSR_EFER\n");
|
||||||
__kprintf("%016lX\n", msr);
|
__kprintf("%016lX\n", msr);
|
||||||
|
|
||||||
__kprintf(" XCR0\n");
|
if (xsave_available) {
|
||||||
__kprintf("%016lX\n", xcr0);
|
__kprintf(" XCR0\n");
|
||||||
|
__kprintf("%016lX\n", xcr0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*@
|
/*@
|
||||||
@ requires \valid(reg);
|
@ requires \valid(reg);
|
||||||
@ -1526,9 +1525,7 @@ void arch_show_interrupt_context(const void *reg)
|
|||||||
__kprintf("%16lx %16lx %16lx %16lx\n",
|
__kprintf("%16lx %16lx %16lx %16lx\n",
|
||||||
regs->cs, regs->ss, regs->rflags, regs->error);
|
regs->cs, regs->ss, regs->rflags, regs->error);
|
||||||
|
|
||||||
#ifdef EXTENDED_ARCH_SHOW_CONTEXT
|
arch_show_extended_context();
|
||||||
arch_show_extended_context();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
kprintf_unlock(irqflags);
|
kprintf_unlock(irqflags);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user