diff options
| author | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2021-08-05 16:28:43 +0200 | 
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2021-08-05 16:28:43 +0200 | 
| commit | 9c3a0f285248899dfa81585bc5d5bc9ebdb8fead (patch) | |
| tree | 908decd51fbb0e1c774444b002e3b89dee3fae26 /drivers/gpu/drm/msm/msm_iommu.c | |
| parent | bfee75f73c37a2f46a6326eaa06f5db701f76f01 (diff) | |
| parent | c500bee1c5b2f1d59b1081ac879d73268ab0ff17 (diff) | |
Merge tag 'v5.14-rc4' into media_tree
Linux 5.14-rc4
* tag 'v5.14-rc4': (948 commits)
  Linux 5.14-rc4
  pipe: make pipe writes always wake up readers
  Revert "perf map: Fix dso->nsinfo refcounting"
  mm/memcg: fix NULL pointer dereference in memcg_slab_free_hook()
  slub: fix unreclaimable slab stat for bulk free
  mm/migrate: fix NR_ISOLATED corruption on 64-bit
  mm: memcontrol: fix blocking rstat function called from atomic cgroup1 thresholding code
  ocfs2: issue zeroout to EOF blocks
  ocfs2: fix zero out valid data
  lib/test_string.c: move string selftest in the Runtime Testing menu
  gve: Update MAINTAINERS list
  arch: Kconfig: clean up obsolete use of HAVE_IDE
  can: esd_usb2: fix memory leak
  can: ems_usb: fix memory leak
  can: usb_8dev: fix memory leak
  can: mcba_usb_start(): add missing urb->transfer_dma initialization
  can: hi311x: fix a signedness bug in hi3110_cmd()
  MAINTAINERS: add Yasushi SHOJI as reviewer for the Microchip CAN BUS Analyzer Tool driver
  scsi: fas216: Fix fall-through warning for Clang
  scsi: acornscsi: Fix fall-through warning for clang
  ...
Diffstat (limited to 'drivers/gpu/drm/msm/msm_iommu.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_iommu.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/msm/msm_iommu.c b/drivers/gpu/drm/msm/msm_iommu.c index eed2a762e9dd..bcaddbba564d 100644 --- a/drivers/gpu/drm/msm/msm_iommu.c +++ b/drivers/gpu/drm/msm/msm_iommu.c @@ -142,6 +142,9 @@ static const struct iommu_flush_ops null_tlb_ops = {  	.tlb_add_page = msm_iommu_tlb_add_page,  }; +static int msm_fault_handler(struct iommu_domain *domain, struct device *dev, +		unsigned long iova, int flags, void *arg); +  struct msm_mmu *msm_iommu_pagetable_create(struct msm_mmu *parent)  {  	struct adreno_smmu_priv *adreno_smmu = dev_get_drvdata(parent->dev); @@ -157,6 +160,13 @@ struct msm_mmu *msm_iommu_pagetable_create(struct msm_mmu *parent)  	if (!ttbr1_cfg)  		return ERR_PTR(-ENODEV); +	/* +	 * Defer setting the fault handler until we have a valid adreno_smmu +	 * to avoid accidentially installing a GPU specific fault handler for +	 * the display's iommu +	 */ +	iommu_set_fault_handler(iommu->domain, msm_fault_handler, iommu); +  	pagetable = kzalloc(sizeof(*pagetable), GFP_KERNEL);  	if (!pagetable)  		return ERR_PTR(-ENOMEM); @@ -300,7 +310,6 @@ struct msm_mmu *msm_iommu_new(struct device *dev, struct iommu_domain *domain)  	iommu->domain = domain;  	msm_mmu_init(&iommu->base, dev, &funcs, MSM_MMU_IOMMU); -	iommu_set_fault_handler(domain, msm_fault_handler, iommu);  	atomic_set(&iommu->pagetables, 0); | 
