@@ -469,159 +469,187 @@ pub const GHCB_PAGE_HYPERCALL_OUTPUT_OFFSET: usize = 4080;
469
469
// Exit Codes.
470
470
open_enum:: open_enum! {
471
471
pub enum SevExitCode : u64 {
472
- CR0_READ = 0 ,
473
- CR1_READ = 1 ,
474
- CR2_READ = 2 ,
475
- CR3_READ = 3 ,
476
- CR4_READ = 4 ,
477
- CR5_READ = 5 ,
478
- CR6_READ = 6 ,
479
- CR7_READ = 7 ,
480
- CR8_READ = 8 ,
481
- CR9_READ = 9 ,
482
- CR10_READ = 10 ,
483
- CR11_READ = 11 ,
484
- CR12_READ = 12 ,
485
- CR13_READ = 13 ,
486
- CR14_READ = 14 ,
487
- CR15_READ = 15 ,
488
- CR0_WRITE = 16 ,
489
- CR1_WRITE = 17 ,
490
- CR2_WRITE = 18 ,
491
- CR3_WRITE = 19 ,
492
- CR4_WRITE = 20 ,
493
- CR5_WRITE = 21 ,
494
- CR6_WRITE = 22 ,
495
- CR7_WRITE = 23 ,
496
- CR8_WRITE = 24 ,
497
- CR9_WRITE = 25 ,
498
- CR10_WRITE = 26 ,
499
- CR11_WRITE = 27 ,
500
- CR12_WRITE = 28 ,
501
- CR13_WRITE = 29 ,
502
- CR14_WRITE = 30 ,
503
- CR15_WRITE = 31 ,
504
- DR0_READ = 32 ,
505
- DR1_READ = 33 ,
506
- DR2_READ = 34 ,
507
- DR3_READ = 35 ,
508
- DR4_READ = 36 ,
509
- DR5_READ = 37 ,
510
- DR6_READ = 38 ,
511
- DR7_READ = 39 ,
512
- DR8_READ = 40 ,
513
- DR9_READ = 41 ,
514
- DR10_READ = 42 ,
515
- DR11_READ = 43 ,
516
- DR12_READ = 44 ,
517
- DR13_READ = 45 ,
518
- DR14_READ = 46 ,
519
- DR15_READ = 47 ,
520
- DR0_WRITE = 48 ,
521
- DR1_WRITE = 49 ,
522
- DR2_WRITE = 50 ,
523
- DR3_WRITE = 51 ,
524
- DR4_WRITE = 52 ,
525
- DR5_WRITE = 53 ,
526
- DR6_WRITE = 54 ,
527
- DR7_WRITE = 55 ,
528
- DR8_WRITE = 56 ,
529
- DR9_WRITE = 57 ,
530
- DR10_WRITE = 58 ,
531
- DR11_WRITE = 59 ,
532
- DR12_WRITE = 60 ,
533
- DR13_WRITE = 61 ,
534
- DR14_WRITE = 62 ,
535
- DR15_WRITE = 63 ,
536
- EXCP0 = 64 ,
537
- EXCP_DB = 65 ,
538
- EXCP2 = 66 ,
539
- EXCP3 = 67 ,
540
- EXCP4 = 68 ,
541
- EXCP5 = 69 ,
542
- EXCP6 = 70 ,
543
- EXCP7 = 71 ,
544
- EXCP8 = 72 ,
545
- EXCP9 = 73 ,
546
- EXCP10 = 74 ,
547
- EXCP11 = 75 ,
548
- EXCP12 = 76 ,
549
- EXCP13 = 77 ,
550
- EXCP14 = 78 ,
551
- EXCP15 = 79 ,
552
- EXCP16 = 80 ,
553
- EXCP17 = 81 ,
554
- EXCP18 = 82 ,
555
- EXCP19 = 83 ,
556
- EXCP20 = 84 ,
557
- EXCP21 = 85 ,
558
- EXCP22 = 86 ,
559
- EXCP23 = 87 ,
560
- EXCP24 = 88 ,
561
- EXCP25 = 89 ,
562
- EXCP26 = 90 ,
563
- EXCP27 = 91 ,
564
- EXCP28 = 92 ,
565
- EXCP29 = 93 ,
566
- EXCP30 = 94 ,
567
- EXCP31 = 95 ,
568
- INTR = 96 ,
569
- NMI = 97 ,
570
- SMI = 98 ,
571
- INIT = 99 ,
572
- VINTR = 100 ,
573
- CR0_SEL_WRITE = 101 ,
574
- IDTR_READ = 102 ,
575
- GDTR_READ = 103 ,
576
- LDTR_READ = 104 ,
577
- TR_READ = 105 ,
578
- IDTR_WRITE = 106 ,
579
- GDTR_WRITE = 107 ,
580
- LDTR_WRITE = 108 ,
581
- TR_WRITE = 109 ,
582
- RDTSC = 110 ,
583
- RDPMC = 111 ,
584
- PUSHF = 112 ,
585
- POPF = 113 ,
586
- CPUID = 114 ,
587
- RSM = 115 ,
588
- IRET = 116 ,
589
- SWINT = 117 ,
590
- INVD = 118 ,
591
- PAUSE = 119 ,
592
- HLT = 120 ,
593
- INVLPG = 121 ,
594
- INVLPGA = 122 ,
595
- IOIO = 123 ,
596
- MSR = 124 ,
597
- TASK_SWITCH = 125 ,
598
- FERR_FREEZE = 126 ,
599
- SHUTDOWN = 127 ,
600
- VMRUN = 128 ,
601
- VMMCALL = 129 ,
602
- VMLOAD = 130 ,
603
- VMSAVE = 131 ,
604
- STGI = 132 ,
605
- CLGI = 133 ,
606
- SKINIT = 134 ,
607
- RDTSCP = 135 ,
608
- ICEBP = 136 ,
609
- WBINVD = 137 ,
610
- MONITOR = 138 ,
611
- MWAIT = 139 ,
612
- MWAIT_CONDITIONAL = 140 ,
613
- XSETBV = 141 ,
614
- INVLPGB = 160 ,
615
- ILLEGAL_INVLPGB = 161 ,
616
- NPF = 1024 ,
617
- AVIC_INCOMPLETE_IPI = 1025 ,
618
- AVIC_NOACCEL = 1026 ,
619
- VMGEXIT = 1027 ,
620
- PAGE_NOT_VALIDATED = 1028 ,
472
+ CR0_READ = 0x0 ,
473
+ CR1_READ = 0x1 ,
474
+ CR2_READ = 0x2 ,
475
+ CR3_READ = 0x3 ,
476
+ CR4_READ = 0x4 ,
477
+ CR5_READ = 0x5 ,
478
+ CR6_READ = 0x6 ,
479
+ CR7_READ = 0x7 ,
480
+ CR8_READ = 0x8 ,
481
+ CR9_READ = 0x9 ,
482
+ CR10_READ = 0xa ,
483
+ CR11_READ = 0xb ,
484
+ CR12_READ = 0xc ,
485
+ CR13_READ = 0xd ,
486
+ CR14_READ = 0xe ,
487
+ CR15_READ = 0xf ,
488
+ CR0_WRITE = 0x10 ,
489
+ CR1_WRITE = 0x11 ,
490
+ CR2_WRITE = 0x12 ,
491
+ CR3_WRITE = 0x13 ,
492
+ CR4_WRITE = 0x14 ,
493
+ CR5_WRITE = 0x15 ,
494
+ CR6_WRITE = 0x16 ,
495
+ CR7_WRITE = 0x17 ,
496
+ CR8_WRITE = 0x18 ,
497
+ CR9_WRITE = 0x19 ,
498
+ CR10_WRITE = 0x1a ,
499
+ CR11_WRITE = 0x1b ,
500
+ CR12_WRITE = 0x1c ,
501
+ CR13_WRITE = 0x1d ,
502
+ CR14_WRITE = 0x1e ,
503
+ CR15_WRITE = 0x1f ,
504
+ DR0_READ = 0x20 ,
505
+ DR1_READ = 0x21 ,
506
+ DR2_READ = 0x22 ,
507
+ DR3_READ = 0x23 ,
508
+ DR4_READ = 0x24 ,
509
+ DR5_READ = 0x25 ,
510
+ DR6_READ = 0x26 ,
511
+ DR7_READ = 0x27 ,
512
+ DR8_READ = 0x28 ,
513
+ DR9_READ = 0x29 ,
514
+ DR10_READ = 0x2a ,
515
+ DR11_READ = 0x2b ,
516
+ DR12_READ = 0x2c ,
517
+ DR13_READ = 0x2d ,
518
+ DR14_READ = 0x2e ,
519
+ DR15_READ = 0x2f ,
520
+ DR0_WRITE = 0x30 ,
521
+ DR1_WRITE = 0x31 ,
522
+ DR2_WRITE = 0x32 ,
523
+ DR3_WRITE = 0x33 ,
524
+ DR4_WRITE = 0x34 ,
525
+ DR5_WRITE = 0x35 ,
526
+ DR6_WRITE = 0x36 ,
527
+ DR7_WRITE = 0x37 ,
528
+ DR8_WRITE = 0x38 ,
529
+ DR9_WRITE = 0x39 ,
530
+ DR10_WRITE = 0x3a ,
531
+ DR11_WRITE = 0x3b ,
532
+ DR12_WRITE = 0x3c ,
533
+ DR13_WRITE = 0x3d ,
534
+ DR14_WRITE = 0x3e ,
535
+ DR15_WRITE = 0x3f ,
536
+ EXCP0 = 0x40 ,
537
+ EXCP_DB = 0x41 ,
538
+ EXCP2 = 0x42 ,
539
+ EXCP3 = 0x43 ,
540
+ EXCP4 = 0x44 ,
541
+ EXCP5 = 0x45 ,
542
+ EXCP6 = 0x46 ,
543
+ EXCP7 = 0x47 ,
544
+ EXCP8 = 0x48 ,
545
+ EXCP9 = 0x49 ,
546
+ EXCP10 = 0x4a ,
547
+ EXCP11 = 0x4b ,
548
+ EXCP12 = 0x4c ,
549
+ EXCP13 = 0x4d ,
550
+ EXCP14 = 0x4e ,
551
+ EXCP15 = 0x4f ,
552
+ EXCP16 = 0x50 ,
553
+ EXCP17 = 0x51 ,
554
+ EXCP18 = 0x52 ,
555
+ EXCP19 = 0x53 ,
556
+ EXCP20 = 0x54 ,
557
+ EXCP21 = 0x55 ,
558
+ EXCP22 = 0x56 ,
559
+ EXCP23 = 0x57 ,
560
+ EXCP24 = 0x58 ,
561
+ EXCP25 = 0x59 ,
562
+ EXCP26 = 0x5a ,
563
+ EXCP27 = 0x5b ,
564
+ EXCP28 = 0x5c ,
565
+ EXCP29 = 0x5d ,
566
+ EXCP30 = 0x5e ,
567
+ EXCP31 = 0x5f ,
568
+ INTR = 0x60 ,
569
+ NMI = 0x61 ,
570
+ SMI = 0x62 ,
571
+ INIT = 0x63 ,
572
+ VINTR = 0x64 ,
573
+ CR0_SEL_WRITE = 0x65 ,
574
+ IDTR_READ = 0x66 ,
575
+ GDTR_READ = 0x67 ,
576
+ LDTR_READ = 0x68 ,
577
+ TR_READ = 0x69 ,
578
+ IDTR_WRITE = 0x6a ,
579
+ GDTR_WRITE = 0x6b ,
580
+ LDTR_WRITE = 0x6c ,
581
+ TR_WRITE = 0x6d ,
582
+ RDTSC = 0x6e ,
583
+ RDPMC = 0x6f ,
584
+ PUSHF = 0x70 ,
585
+ POPF = 0x71 ,
586
+ CPUID = 0x72 ,
587
+ RSM = 0x73 ,
588
+ IRET = 0x74 ,
589
+ SWINT = 0x75 ,
590
+ INVD = 0x76 ,
591
+ PAUSE = 0x77 ,
592
+ HLT = 0x78 ,
593
+ INVLPG = 0x79 ,
594
+ INVLPGA = 0x7a ,
595
+ IOIO = 0x7b ,
596
+ MSR = 0x7c ,
597
+ TASK_SWITCH = 0x7d ,
598
+ FERR_FREEZE = 0x7e ,
599
+ SHUTDOWN = 0x7f ,
600
+ VMRUN = 0x80 ,
601
+ VMMCALL = 0x81 ,
602
+ VMLOAD = 0x82 ,
603
+ VMSAVE = 0x83 ,
604
+ STGI = 0x84 ,
605
+ CLGI = 0x85 ,
606
+ SKINIT = 0x86 ,
607
+ RDTSCP = 0x87 ,
608
+ ICEBP = 0x88 ,
609
+ WBINVD = 0x89 ,
610
+ MONITOR = 0x8a ,
611
+ MWAIT = 0x8b ,
612
+ MWAIT_CONDITIONAL = 0x8c ,
613
+ XSETBV = 0x8d ,
614
+ RDPRU = 0x8e ,
615
+ EFER_WRITE_TRAP = 0x8f ,
616
+ CR0_WRITE_TRAP = 0x90 ,
617
+ CR1_WRITE_TRAP = 0x91 ,
618
+ CR2_WRITE_TRAP = 0x92 ,
619
+ CR3_WRITE_TRAP = 0x93 ,
620
+ CR4_WRITE_TRAP = 0x94 ,
621
+ CR5_WRITE_TRAP = 0x95 ,
622
+ CR6_WRITE_TRAP = 0x96 ,
623
+ CR7_WRITE_TRAP = 0x97 ,
624
+ CR8_WRITE_TRAP = 0x98 ,
625
+ CR9_WRITE_TRAP = 0x99 ,
626
+ CR10_WRITE_TRAP = 0x9a ,
627
+ CR11_WRITE_TRAP = 0x9b ,
628
+ CR12_WRITE_TRAP = 0x9c ,
629
+ CR13_WRITE_TRAP = 0x9d ,
630
+ CR14_WRITE_TRAP = 0x9e ,
631
+ CR15_WRITE_TRAP = 0x9f ,
632
+ INVLPGB = 0xa0 ,
633
+ ILLEGAL_INVLPGB = 0xa1 ,
634
+ INVPCID = 0xa2 ,
635
+ BUSLOCK = 0xa5 ,
636
+ IDLE_HLT = 0xa6 ,
637
+ NPF = 0x400 ,
638
+ AVIC_INCOMPLETE_IPI = 0x401 ,
639
+ AVIC_NOACCEL = 0x402 ,
640
+ VMGEXIT = 0x403 ,
641
+ PAGE_NOT_VALIDATED = 0x404 ,
642
+
643
+ // SEV-ES software-defined exit codes
621
644
SNP_GUEST_REQUEST = 0x80000011 ,
622
645
SNP_EXTENDED_GUEST_REQUEST = 0x80000012 ,
623
646
HV_DOORBELL_PAGE = 0x80000014 ,
647
+
648
+ // SEV-SNP hardware error codes
624
649
INVALID_VMCB = 0xffff_ffff_ffff_ffff ,
650
+ VMSA_BUSY = 0xffff_ffff_ffff_fffe ,
651
+ IDLE_REQUIRED = 0xffff_ffff_ffff_fffd ,
652
+ INVALID_PMC = 0xffff_ffff_ffff_fffc ,
625
653
}
626
654
}
627
655
0 commit comments