- Timestamp:
- Sep 24, 2018 1:00:15 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/vbox.dsl
r70713 r74441 1634 1634 } 1635 1635 1636 /* Defined in PCI Firmware Specification 3.0 and ACPI 3.0, with both specs 1637 * referencing each other. The _OSC method must be present to make Linux happy, 1638 * but needs to prevent the OS from taking much control so as to not upset Windows. 1639 * NB: The first DWORD is defined in the ACPI spec but not the PCI FW spec. 1640 */ 1636 1641 Method (_OSC, 4) 1637 1642 { 1643 Name(SUPP, 0) // Support field value 1644 Name(CTRL, 0) // Control field value 1645 1646 // Break down the input capabilities buffer into individual DWORDs 1647 CreateDWordField(Arg3, 0, CDW1) 1648 CreateDWordField(Arg3, 4, CDW2) 1649 CreateDWordField(Arg3, 8, CDW3) 1650 1638 1651 If (LEqual (Arg0, ToUUID("33db4d5b-1ff7-401c-9657-7441c03dd766"))) 1639 1652 { 1640 // OS controls everything. 1641 Return (Arg3) 1653 // Stash the Support and Control fields 1654 Store(CDW2, SUPP) 1655 Store(CDW3, CTRL) 1656 1657 DBG("_OSC: SUPP=") 1658 HEX4(SUPP) 1659 DBG(" CTRL=") 1660 HEX4(CTRL) 1661 DBG("\n") 1662 1663 // Mask off the PCI Express Capability Structure control 1664 // Not emulated well enough to satisfy Windows (Vista and later) 1665 And(CTRL, 0x0F, CTRL) 1666 1667 // If capabilities were masked, set the Capabilities Masked flag (bit 4) 1668 If (LNotEqual(CDW3, CTRL)) 1669 { 1670 Or(CDW1, 0x10, CDW1) 1671 } 1672 1673 // Update the Control field and return 1674 Store(CTRL, CDW3) 1675 Return(Arg3) 1642 1676 } 1643 1677 Else 1644 1678 { 1645 // UUID not known 1646 CreateDWordField(Arg3, 0, CDW1) 1647 Or(CDW1, 4, CDW1) 1648 Return (Arg3) 1679 // UUID not known, set Unrecognized UUID flag (bit 2) 1680 Or(CDW1, 0x04, CDW1) 1681 Return(Arg3) 1649 1682 } 1650 1683 }
Note:
See TracChangeset
for help on using the changeset viewer.