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.

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.

  • summerofcode2022projects/improvingthelinuxkpicompatibilitylayerforthefreebsdgraphicsstack.txt
  • Last modified: 2022/09/15 02:46
  • by KubilayKocak