Changeset 107037 in vbox for trunk/src/VBox/Main
- Timestamp:
- Nov 19, 2024 10:07:33 AM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 165986
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/SystemTableBuilder.cpp
r106955 r107037 704 704 RTAcpiTblMethodFinalize(m_hAcpiDsdt); 705 705 706 /* Build the PPI interface. */ 707 RTAcpiTblMethodStart(m_hAcpiDsdt, "_DSM", 4, RTACPI_METHOD_F_SERIALIZED, 0 /*uSyncLvl*/); 708 709 /* 710 * Check that the UUID in Arg0 contains the Physical Presence Interface Specification UUID. 711 */ 712 RTAcpiTblIfStart(m_hAcpiDsdt); 713 714 /* Predicate (LEqual(Arg0, ToUUID("3dddfaa6-361b-4eb4-a424-8d10089d1653")))*/ 715 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 716 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 0); 717 RTAcpiTblUuidAppendFromStr(m_hAcpiDsdt, "3dddfaa6-361b-4eb4-a424-8d10089d1653"); 718 719 /* Standard _DSM query function. */ 720 RTAcpiTblIfStart(m_hAcpiDsdt); 721 722 /* LEqual(Arg2, Zero). */ 723 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 724 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 725 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 726 727 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 728 uint8_t abDsmQuery[2] = { 0xff, 0x01 }; 729 RTAcpiTblBufferAppend(m_hAcpiDsdt, &abDsmQuery[0], sizeof(abDsmQuery)); 730 731 RTAcpiTblIfFinalize(m_hAcpiDsdt); 732 733 /* Query supported PPI revision . */ 734 RTAcpiTblIfStart(m_hAcpiDsdt); 735 736 /* LEqual(Arg2, Zero). */ 737 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 738 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 739 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 740 741 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 742 RTAcpiTblStringAppend(m_hAcpiDsdt, "1.3"); 743 744 RTAcpiTblIfFinalize(m_hAcpiDsdt); 745 746 747 /* Submit TPM Operation Requested to pre-OS environment. */ 748 RTAcpiTblIfStart(m_hAcpiDsdt); 749 750 /* LEqual(Arg2, Zero). */ 751 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 752 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 753 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 754 755 /** @todo */ 756 757 RTAcpiTblIfFinalize(m_hAcpiDsdt); 758 759 760 /* Get Pending TPM Operation Requested by the OS. */ 761 RTAcpiTblIfStart(m_hAcpiDsdt); 762 763 /* LEqual(Arg2, Zero). */ 764 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 765 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 766 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 3); 767 768 /** @todo */ 769 770 RTAcpiTblIfFinalize(m_hAcpiDsdt); 771 772 773 /* Get Platform-specific Action to Transition to Pre-OS Environment. */ 774 RTAcpiTblIfStart(m_hAcpiDsdt); 775 776 /* LEqual(Arg2, Zero). */ 777 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 778 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 779 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 4); 780 781 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 782 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); /* Reboot */ 783 784 RTAcpiTblIfFinalize(m_hAcpiDsdt); 785 786 787 /* Return TPM Operation Response to OS Environment. */ 788 RTAcpiTblIfStart(m_hAcpiDsdt); 789 790 /* LEqual(Arg2, Zero). */ 791 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 792 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 793 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 5); 794 795 /** @todo */ 796 797 RTAcpiTblIfFinalize(m_hAcpiDsdt); 798 799 800 /* Submit Preferred user language - deprecated. */ 801 RTAcpiTblIfStart(m_hAcpiDsdt); 802 803 /* LEqual(Arg2, Zero). */ 804 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 805 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 806 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 6); 807 808 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 809 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 3); /* Not implemented */ 810 811 RTAcpiTblIfFinalize(m_hAcpiDsdt); 812 813 814 /* Submit TPM Operation Request to Pre-OS Environment 2. */ 815 RTAcpiTblIfStart(m_hAcpiDsdt); 816 817 /* LEqual(Arg2, Zero). */ 818 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 819 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 820 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 7); 821 822 /** @todo */ 823 824 RTAcpiTblIfFinalize(m_hAcpiDsdt); 825 826 827 /* Get User Confirmation Status for Operation. */ 828 RTAcpiTblIfStart(m_hAcpiDsdt); 829 830 /* LEqual(Arg2, Zero). */ 831 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 832 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 833 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 8); 834 835 /** @todo */ 836 837 RTAcpiTblIfFinalize(m_hAcpiDsdt); 838 839 840 /* Return Unknown function. */ 841 uint8_t bUnkFunc = 0x00; 842 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 843 RTAcpiTblBufferAppend(m_hAcpiDsdt, &bUnkFunc, sizeof(bUnkFunc)); 844 845 RTAcpiTblIfFinalize(m_hAcpiDsdt); 846 847 848 /* 849 * TCG Platform Reset Attack Mitigation Specification interface. 850 */ 851 RTAcpiTblIfStart(m_hAcpiDsdt); 852 853 /* Predicate (LEqual(Arg0, ToUUID("376054ed-cc13-4675-901c-4756d7f2d45d")))*/ 854 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 855 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 0); 856 RTAcpiTblUuidAppendFromStr(m_hAcpiDsdt, "376054ed-cc13-4675-901c-4756d7f2d45d"); 857 858 /* Standard _DSM query function. */ 859 RTAcpiTblIfStart(m_hAcpiDsdt); 860 861 /* LEqual(Arg2, Zero). */ 862 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 863 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 864 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 865 866 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 867 uint8_t bBuf = 0x03; 868 RTAcpiTblBufferAppend(m_hAcpiDsdt, &bBuf, sizeof(bBuf)); 869 870 RTAcpiTblIfFinalize(m_hAcpiDsdt); 871 872 /* Set Memory Overwrite Request (MOR) bit to specified value. */ 873 RTAcpiTblIfStart(m_hAcpiDsdt); 874 875 /* LEqual(Arg2, Zero). */ 876 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 877 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 2); 878 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 879 880 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 881 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); /* Memory always zeroed on reset. */ 882 883 RTAcpiTblIfFinalize(m_hAcpiDsdt); 884 885 /* Return Unknown function. */ 886 bUnkFunc = 0x00; 887 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 888 RTAcpiTblBufferAppend(m_hAcpiDsdt, &bUnkFunc, sizeof(bUnkFunc)); 889 890 RTAcpiTblIfFinalize(m_hAcpiDsdt); 891 892 /* Return Unknown function. */ 893 bUnkFunc = 0x00; 894 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 895 RTAcpiTblBufferAppend(m_hAcpiDsdt, &bUnkFunc, sizeof(bUnkFunc)); 896 897 RTAcpiTblMethodFinalize(m_hAcpiDsdt); 898 706 899 return RTAcpiTblDeviceFinalize(m_hAcpiDsdt); 707 900 }
Note:
See TracChangeset
for help on using the changeset viewer.