Engineer a Feature Complete Port of Intel's igt-gpu-tools for FreeBSD

Project description

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.

Deliverables

A feature complete port of Intel's igt-gpu-tools for FreeBSD.

Milestones

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)

Test Plan

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:

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.

The Code

igt-gpu-tools Git debugfs Git

cdaemon: development process

SummerOfCode2022Projects/ImprovingTheLinuxKPICompatibilityLayerForTheFreeBSDGraphicsStack (last edited 2022-09-15T02:46:07+0000 by KubilayKocak)