diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs index cdb9b13bdb32..e20a5978eed6 100644 --- a/drivers/gpu/drm/tyr/driver.rs +++ b/drivers/gpu/drm/tyr/driver.rs @@ -11,6 +11,10 @@ Device, // }, devres::Devres, + dma::{ + Device as DmaDevice, + DmaMask, // + }, drm, drm::ioctl, io::{ @@ -124,6 +128,14 @@ fn probe( let gpu_info = GpuInfo::new(pdev.as_ref(), &iomem)?; gpu_info.log(pdev.as_ref()); + let pa_bits = MMU_FEATURES::from_raw(gpu_info.mmu_features) + .pa_bits() + .get(); + // SAFETY: No concurrent DMA allocations or mappings can be made because + // the device is still being probed and therefore isn't being used by + // other threads of execution. + unsafe { pdev.dma_set_mask_and_coherent(DmaMask::try_new(pa_bits)?)? }; + let platform: ARef = pdev.into(); let data = try_pin_init!(TyrDrmDeviceData {