Engineer a Feature Complete Port of Intel's igt-gpu-tools for FreeBSD
Intel’s igt-gpu-tools serves as a generic testing suite for drm drivers on Linux. The igt-gpu-tools suite is seperated into tests and tools where tests are the primary focus of the project. These tests target the kernel API: specifically kms, memory management, and command submission. This low-level reporting allows for transparent tracking of kernel changes and efficient debugging.
Development of igt-gpu-tools shifted in 2019 to focus on generic kms-driven tests. The vendor-agnostic foundation of kms allows for igt-gpu-tools to function on a wide range of hardware. This versatility makes igt-gpu-tools extremely helpful when developing and debugging new drm drivers. Porting the project to FreeBSD could introduce greater stability in future releases of FreeBSD’s LinuxKPI-driven drm drivers.
Approach to solving the problem
Before porting igt-gpu-tools, the CONFIG_DEBUG_FS flag must be properly implemented in drm-kmod. The debugfs filesystem permits file sharing between the kernel and user space for debugging purposes.Emmanuel Vadot put some debugfs patches together, but has not upstreamed them to src yet. I will analyze the existing patches, ensure proper functionality, and implement a clean solution before proceeding with the igt-gpu-tools port.
Once the CONFIG_DEBUG_FS implementation is complete, I will take a look at Emmanuel Vadot and Mark Johnston’s incomplete igt-gpu-tools ports and carry over any functional code to my new port. After all existing code has been merged, I will start my own porting process. A high quality port will require extensive testing and debugging which will likely occupy the remainder of this Google Summer of Code project.
A feature complete port of Intel's igt-gpu-tools for FreeBSD.
June 13: Get igt-gpu-tools to compile on FreeBSD (Project Start)
June 22: Start debugfs, libprocps, libkmod implementations
June 29: Finish debugfs implementation with others on the way
July 29: Produce working KMS tests (Phase 1 Evaluation)
August 29: Produce working non-KMS tests
September 06: Ensure port is feature complete and functional (Final Submission)
November 21: Extended development and testing (Extended Final Submission)
With this lineup, I should be able to get a good idea of the port’s stability using the igt-gpu-tools tests and tools:
- Sandy Bridge (2011) Intel Integrated HD Graphics
- Radeon RDNA 2 (2020) Graphics
- Alder Lake (2021) Intel Integrated UHD Graphics
I will walk through the igt-gpu-tools tests for each graphics processor listed above and compare results to the native Linux build. If results are significantly different, I will revisit my implementation.