IOMMU Fixes for Linux v6.11-rc1
- Fix NULL dereference when freeing domain in Unisoc SPRD driver. - Separate assignment statements with semicolons in AMD page-table code. - Fix Tegra erratum workaround when the CPU is using 16KiB pages. -----BEGIN PGP SIGNATURE----- iQFEBAABCgAuFiEEPxTL6PPUbjXGY88ct6xw3ITBYzQFAmaiQhUQHHdpbGxAa2Vy bmVsLm9yZwAKCRC3rHDchMFjNI3SB/9m78weKYVHUc87Vwzs/3aEmMzjNiCuIIax nFKIFKZIeL7UqiUK1dehoVU+S/JYYjjPyR/0yeb+l4w4IaTmkcAu48r9rDssuoLe I6rkLbIfwGIw5pKtf21UtkRmMhnoW2ptx8qrCFbvIkFYVWyfayP+c7hkbKBh2bMD cal8bYrgWuax3TTgxu5V6cBBSK+EDmdN2ZVGArY1x7VZImFWZuZ1s5OowjHCX4Q1 il2ETdL4M8OmlIsitO96I0zvne2Ci+12i5TQOl8Ao5d7BhM5LfjdQjeNvT6YhdX9 X3u+p+GfVYQNZI1HYvwNvWTEuF+PIj5Oem9hfKDo/8vAYERe2M1A =7kvS -----END PGP SIGNATURE----- Merge tag 'iommu-fixes-v6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux Pull iommu fixes from Will Deacon: "We're still resolving a regression with the handling of unexpected page faults on SMMUv3, but we're not quite there with a fix yet. - Fix NULL dereference when freeing domain in Unisoc SPRD driver - Separate assignment statements with semicolons in AMD page-table code - Fix Tegra erratum workaround when the CPU is using 16KiB pages" * tag 'iommu-fixes-v6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux: iommu: arm-smmu: Fix Tegra workaround for PAGE_SIZE mappings iommu/amd: Convert comma to semicolon iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en
This commit is contained in:
commit
b465ed28f7
@ -588,9 +588,9 @@ static struct io_pgtable *v1_alloc_pgtable(struct io_pgtable_cfg *cfg, void *coo
|
|||||||
{
|
{
|
||||||
struct amd_io_pgtable *pgtable = io_pgtable_cfg_to_data(cfg);
|
struct amd_io_pgtable *pgtable = io_pgtable_cfg_to_data(cfg);
|
||||||
|
|
||||||
cfg->pgsize_bitmap = AMD_IOMMU_PGSIZES,
|
cfg->pgsize_bitmap = AMD_IOMMU_PGSIZES;
|
||||||
cfg->ias = IOMMU_IN_ADDR_BIT_SIZE,
|
cfg->ias = IOMMU_IN_ADDR_BIT_SIZE;
|
||||||
cfg->oas = IOMMU_OUT_ADDR_BIT_SIZE,
|
cfg->oas = IOMMU_OUT_ADDR_BIT_SIZE;
|
||||||
cfg->tlb = &v1_flush_ops;
|
cfg->tlb = &v1_flush_ops;
|
||||||
|
|
||||||
pgtable->iop.ops.map_pages = iommu_v1_map_pages;
|
pgtable->iop.ops.map_pages = iommu_v1_map_pages;
|
||||||
|
@ -277,7 +277,7 @@ static int nvidia_smmu_init_context(struct arm_smmu_domain *smmu_domain,
|
|||||||
*/
|
*/
|
||||||
if (of_device_is_compatible(np, "nvidia,tegra234-smmu") ||
|
if (of_device_is_compatible(np, "nvidia,tegra234-smmu") ||
|
||||||
of_device_is_compatible(np, "nvidia,tegra194-smmu")) {
|
of_device_is_compatible(np, "nvidia,tegra194-smmu")) {
|
||||||
smmu->pgsize_bitmap = PAGE_SIZE;
|
smmu->pgsize_bitmap &= GENMASK(PAGE_SHIFT, 0);
|
||||||
pgtbl_cfg->pgsize_bitmap = smmu->pgsize_bitmap;
|
pgtbl_cfg->pgsize_bitmap = smmu->pgsize_bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,8 +232,8 @@ static void sprd_iommu_cleanup(struct sprd_iommu_domain *dom)
|
|||||||
|
|
||||||
pgt_size = sprd_iommu_pgt_size(&dom->domain);
|
pgt_size = sprd_iommu_pgt_size(&dom->domain);
|
||||||
dma_free_coherent(dom->sdev->dev, pgt_size, dom->pgt_va, dom->pgt_pa);
|
dma_free_coherent(dom->sdev->dev, pgt_size, dom->pgt_va, dom->pgt_pa);
|
||||||
dom->sdev = NULL;
|
|
||||||
sprd_iommu_hw_en(dom->sdev, false);
|
sprd_iommu_hw_en(dom->sdev, false);
|
||||||
|
dom->sdev = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sprd_iommu_domain_free(struct iommu_domain *domain)
|
static void sprd_iommu_domain_free(struct iommu_domain *domain)
|
||||||
|
Loading…
Reference in New Issue
Block a user