On Mon, 23 Mar 2026 17:18:05 -0700 Deborah Brouwer <[email protected]> wrote:
> Currently GpuInfo reports the interconnect coherency protocol as none > without actually reading the `COHERENCY_ENABLE` register. > > Although the result is the same, write `NO_COHERENCY` to the register > during probe and then read back the register to populate the GpuInfo > struct. > > This ensures that GpuInfo is populated consistently and is always as > accurate as possible by reporting the register values directly. > > Signed-off-by: Deborah Brouwer <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> > --- > drivers/gpu/drm/tyr/driver.rs | 5 +++++ > drivers/gpu/drm/tyr/gpu.rs | 2 +- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs > index > 3ebb5e08bfca342f136e8d365b1d9dcb6cc3dbca..7232d9f9547c239689dc424380109a4e5140dd84 > 100644 > --- a/drivers/gpu/drm/tyr/driver.rs > +++ b/drivers/gpu/drm/tyr/driver.rs > @@ -136,6 +136,11 @@ fn probe( > issue_soft_reset(pdev.as_ref(), &iomem)?; > gpu::l2_power_on(pdev.as_ref(), &iomem)?; > > + let io = (*iomem).access(pdev.as_ref())?; > + // FIXME: This needs to be set properly once we get > + // device_get_dma_attr() properly exposed to the rust drivers. > + > io.write_reg(COHERENCY_ENABLE::zeroed().with_l2_cache_protocol_select(CoherencyMode::None)); > + > let gpu_info = GpuInfo::new(pdev.as_ref(), &iomem)?; > gpu_info_log(pdev.as_ref(), &iomem)?; > > diff --git a/drivers/gpu/drm/tyr/gpu.rs b/drivers/gpu/drm/tyr/gpu.rs > index > 4a50055b415c693a89cb99dba241b21351a14149..d5240f4567ca4e763b09e015908bdc5c22276e0d > 100644 > --- a/drivers/gpu/drm/tyr/gpu.rs > +++ b/drivers/gpu/drm/tyr/gpu.rs > @@ -60,7 +60,7 @@ pub(crate) fn new(dev: &Device<Bound>, iomem: > &Devres<IoMem>) -> Result<Self> { > io.read(TEXTURE_FEATURES::at(3)).supported_formats().get(), > ], > as_present: io.read(AS_PRESENT).into_raw(), > - selected_coherency: > uapi::drm_panthor_gpu_coherency_DRM_PANTHOR_GPU_COHERENCY_NONE, > + selected_coherency: io.read(COHERENCY_ENABLE).into_raw(), > shader_present: io.read(SHADER_PRESENT).into_raw(), > l2_present: io.read(L2_PRESENT).into_raw(), > tiler_present: io.read(TILER_PRESENT).into_raw(), >
