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.