DSS and EU fuse reading
Although GuC's HWCONFIG can provide per-SKU counts of subslices and EUs, it cannot provide masks of exactly which units are present and which are fused off on the current device. This information is needed in a few places:
- Multicast/replicated (MCR) register accesses steered toward a fused-off unit are terminated (i.e., reads return 0, writes are silently dropped by HW). There are a number of MCR accesses (especially in workarounds) where we must specifically seek out a non-terminated instance.
- Some workarounds are dependent on the presence/absence of other hardware units such as memory slices, GAMs, etc.; the DSS mask is used to derive whether these higher-level units are present.
- Some userspace consumers still need to know exactly which DSS or EUs are present/absent for their own functionality; the counts from HWCONFIG will not suffice. To satisfy this need Xe either needs to provide a (heavily simplified) equivalent of i915's topology query, or provide a means for userspace to access these registers directly. See #113 (closed) for discussion on that.