xref: /kvm-unit-tests/x86/rdpru.c (revision 70cea146df56b4711cd2f6ee5adfd118b55ce86a)
1 /* RDPRU test */
2 
3 #include "libcflat.h"
4 #include "processor.h"
5 #include "desc.h"
6 
7 static int rdpru_checking(void)
8 {
9 	asm volatile (ASM_TRY("1f")
10 		      ".byte 0x0f,0x01,0xfd \n\t" /* rdpru */
11 		      "1:" : : "c" (0) : "eax", "edx");
12 	return exception_vector();
13 }
14 
15 int main(int ac, char **av)
16 {
17 	setup_idt();
18 
19 	if (this_cpu_has(X86_FEATURE_RDPRU))
20 		report_skip("RDPRU raises #UD");
21 	else
22 		report(rdpru_checking() == UD_VECTOR, "RDPRU raises #UD");
23 
24 	return report_summary();
25 }
26