Skip to content

Initial GT topology support

Matt Roper requested to merge mattrope/kernel:xe_topology into xe

Reading GT topology (DSS masks and EU masks) from fuse registers is a pre-requisite for several items:

  • Proper multicast/replicated (MCR) register handling
  • Some GT workarounds
  • Proper userspace operation

The topology masks are provided by hardware via one or more 32-bit registers. The DSS masks for future platforms are expected to eventually grow beyond the storage of a u64, so we provide a custom mask type based on the linux/bitmap.h facilities. EU masks (i.e., the mask of EUs available to a single DSS) are not expected to change significantly in the foreseeable future, so we stick with a simpler u64 there.

This MR also includes a possible uapi for userspace to query the topology. Since the other Xe queries are designed as one-shot queries that return all information at once, I've used a similar approach here where all three masks (geometry DSS, compute DSS, and EU) are returned for each GT. The query has not yet been tested.

References: DSS and EU fuse reading (#114 - closed)

Edited by Matt Roper

Merge request reports