bits-688 released with these changes:
Test additions and improvements:
- Add PSD (P-State Dependency) test for processors which require thread-specific scope for the domain. This test currently only applies to Jaketown (SandyBridge-EP).
- Add tests for _PSS (Pstates).
- Modify the SMRR test to recognize and abort if model-specific SMRR registers are used. The Intel Software Developer's Manual documents two sets of SMRR registers: the architectural IA32_SMRR_PHYS_BASE and IA32_SMRR_PHYS_MASK supported by all recent processors, which smrr_test can test for, and the older model-specific MSR_SMRR_PHYS_BASE and MSR_SMRR_PHYS_MASK, which smrr_test does not implement tests for. The SMRR test now checks for the latter and stops the test early.
Support "Run all tests" in submenus, and support tests which run in submenus but not from the top-level "Run all tests". This allows the creation of special-purpose test groupings (potentially duplicating tests from elsewhere in BITS), such as for specific test checklists.
Python API additions and improvements:
- Add Python API to read and write IO ports.
- Add Python API for 64-bit memory reads and writes.
- Add methods to the acpi module to parse the PSD, PSS, and _CST tables.
- testmsr functions now allow specifying highbit and lowbit rather than shift and mask, and adjust printed output accordingly.
- Move the Python addr_alignment function to the bits module.
Port more functionality to Python:
- Port legacy PCI operations from C to Python using the new IO port API.
- Port PCI Express operations from C to Python.
- Port the format command to Python. In the process, drop support for calling format without passing --dec or --hex, and drop support for hex numbers suffixed by 'h', since no callers used either of those features.
Remove various C code that became unused with more ports from C to Python.
Merge the "common" C code duplicated in multiple modules into the bitsutil module to share the same implementation.
Drop support for faking 64-bit legacy PCI operations via two 32-bit operations.
Bugfixes:
- Fix the docstring for bits.writel to use "dword" rather than "long", for consistency with readl.
- bits.socket_index should return None for the socket_index if the acpi_id input parameter is None.
- bits.get_cpupaths no longer returns ACPI namepaths for disabled processors. The ACPI namepaths for processors were already verified to have a status of enabled using ACPICA's AcpiGetObjectInfo(). But if the ACPI _STA() method does not exist (which is often the case for older BIOSes which populate processors in the _PR_ scope instead of the _SB_ scope), AcpiGetObjectInfo() returns a status of Present and Enabled. Add an additional check to ensure that each processor has a valid ApicId or a valid UID in the MADT. On systems without an MADT, bits.get_cpupaths just assumes that all CPUs are enabled.
- Make the menu entry to run all tests run them in the same order they appear in the test menu, rather than in the arbitrary order of a Python hash.
- When running all tests, only print submenu headings if they contain a test.
- The Nehalem power management test needs testpci, so import it.