Loading drivers/iommu/arm-smmu.c +0 −30 Original line number Original line Diff line number Diff line Loading @@ -221,9 +221,6 @@ static bool is_iommu_pt_coherent(struct arm_smmu_domain *smmu_domain) if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, smmu_domain->attributes)) smmu_domain->attributes)) return true; return true; else if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes)) return false; else if (smmu_domain->smmu && smmu_domain->smmu->dev) else if (smmu_domain->smmu && smmu_domain->smmu->dev) return dev_is_dma_coherent(smmu_domain->smmu->dev); return dev_is_dma_coherent(smmu_domain->smmu->dev); else else Loading Loading @@ -2934,9 +2931,6 @@ static int arm_smmu_setup_default_domain(struct device *dev, if (!strcmp(str, "coherent")) if (!strcmp(str, "coherent")) __arm_smmu_domain_set_attr(domain, __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, &attr); DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, &attr); else if (!strcmp(str, "non-coherent")) __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, &attr); else if (!strcmp(str, "LLC")) else if (!strcmp(str, "LLC")) __arm_smmu_domain_set_attr(domain, __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_USE_UPSTREAM_HINT, &attr); DOMAIN_ATTR_USE_UPSTREAM_HINT, &attr); Loading Loading @@ -3789,12 +3783,6 @@ static int arm_smmu_domain_get_attr(struct iommu_domain *domain, smmu_domain->attributes); smmu_domain->attributes); ret = 0; ret = 0; break; break; case DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT: *((int *)data) = test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; break; case DOMAIN_ATTR_FAULT_MODEL_NO_CFRE: case DOMAIN_ATTR_FAULT_MODEL_NO_CFRE: case DOMAIN_ATTR_FAULT_MODEL_NO_STALL: case DOMAIN_ATTR_FAULT_MODEL_NO_STALL: case DOMAIN_ATTR_FAULT_MODEL_HUPCF: case DOMAIN_ATTR_FAULT_MODEL_HUPCF: Loading Loading @@ -4043,24 +4031,6 @@ static int __arm_smmu_domain_set_attr2(struct iommu_domain *domain, } } break; break; } } case DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT: { int force_non_coherent = *((int *)data); if (smmu_domain->smmu != NULL) { dev_err(smmu_domain->smmu->dev, "cannot change force non-coherent attribute while attached\n"); ret = -EBUSY; } else if (force_non_coherent) { set_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; } else { clear_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; } break; } case DOMAIN_ATTR_SPLIT_TABLES: { case DOMAIN_ATTR_SPLIT_TABLES: { int split_tables = *((int *)data); int split_tables = *((int *)data); /* can't be changed while attached */ /* can't be changed while attached */ Loading include/linux/iommu.h +6 −7 Original line number Original line Diff line number Diff line Loading @@ -191,13 +191,12 @@ enum iommu_attr { #define DOMAIN_ATTR_EARLY_MAP (EXTENDED_ATTR_BASE + 13) #define DOMAIN_ATTR_EARLY_MAP (EXTENDED_ATTR_BASE + 13) #define DOMAIN_ATTR_PAGE_TABLE_IS_COHERENT (EXTENDED_ATTR_BASE + 14) #define DOMAIN_ATTR_PAGE_TABLE_IS_COHERENT (EXTENDED_ATTR_BASE + 14) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT (EXTENDED_ATTR_BASE + 15) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT (EXTENDED_ATTR_BASE + 15) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT (EXTENDED_ATTR_BASE + 16) #define DOMAIN_ATTR_USE_LLC_NWA (EXTENDED_ATTR_BASE + 16) #define DOMAIN_ATTR_USE_LLC_NWA (EXTENDED_ATTR_BASE + 17) #define DOMAIN_ATTR_SPLIT_TABLES (EXTENDED_ATTR_BASE + 17) #define DOMAIN_ATTR_SPLIT_TABLES (EXTENDED_ATTR_BASE + 18) #define DOMAIN_ATTR_FAULT_MODEL_NO_CFRE (EXTENDED_ATTR_BASE + 18) #define DOMAIN_ATTR_FAULT_MODEL_NO_CFRE (EXTENDED_ATTR_BASE + 19) #define DOMAIN_ATTR_FAULT_MODEL_NO_STALL (EXTENDED_ATTR_BASE + 19) #define DOMAIN_ATTR_FAULT_MODEL_NO_STALL (EXTENDED_ATTR_BASE + 20) #define DOMAIN_ATTR_FAULT_MODEL_HUPCF (EXTENDED_ATTR_BASE + 20) #define DOMAIN_ATTR_FAULT_MODEL_HUPCF (EXTENDED_ATTR_BASE + 21) #define DOMAIN_ATTR_EXTENDED_MAX (EXTENDED_ATTR_BASE + 21) #define DOMAIN_ATTR_EXTENDED_MAX (EXTENDED_ATTR_BASE + 22) /* These are the possible reserved region types */ /* These are the possible reserved region types */ enum iommu_resv_type { enum iommu_resv_type { Loading Loading
drivers/iommu/arm-smmu.c +0 −30 Original line number Original line Diff line number Diff line Loading @@ -221,9 +221,6 @@ static bool is_iommu_pt_coherent(struct arm_smmu_domain *smmu_domain) if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, smmu_domain->attributes)) smmu_domain->attributes)) return true; return true; else if (test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes)) return false; else if (smmu_domain->smmu && smmu_domain->smmu->dev) else if (smmu_domain->smmu && smmu_domain->smmu->dev) return dev_is_dma_coherent(smmu_domain->smmu->dev); return dev_is_dma_coherent(smmu_domain->smmu->dev); else else Loading Loading @@ -2934,9 +2931,6 @@ static int arm_smmu_setup_default_domain(struct device *dev, if (!strcmp(str, "coherent")) if (!strcmp(str, "coherent")) __arm_smmu_domain_set_attr(domain, __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, &attr); DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT, &attr); else if (!strcmp(str, "non-coherent")) __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, &attr); else if (!strcmp(str, "LLC")) else if (!strcmp(str, "LLC")) __arm_smmu_domain_set_attr(domain, __arm_smmu_domain_set_attr(domain, DOMAIN_ATTR_USE_UPSTREAM_HINT, &attr); DOMAIN_ATTR_USE_UPSTREAM_HINT, &attr); Loading Loading @@ -3789,12 +3783,6 @@ static int arm_smmu_domain_get_attr(struct iommu_domain *domain, smmu_domain->attributes); smmu_domain->attributes); ret = 0; ret = 0; break; break; case DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT: *((int *)data) = test_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; break; case DOMAIN_ATTR_FAULT_MODEL_NO_CFRE: case DOMAIN_ATTR_FAULT_MODEL_NO_CFRE: case DOMAIN_ATTR_FAULT_MODEL_NO_STALL: case DOMAIN_ATTR_FAULT_MODEL_NO_STALL: case DOMAIN_ATTR_FAULT_MODEL_HUPCF: case DOMAIN_ATTR_FAULT_MODEL_HUPCF: Loading Loading @@ -4043,24 +4031,6 @@ static int __arm_smmu_domain_set_attr2(struct iommu_domain *domain, } } break; break; } } case DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT: { int force_non_coherent = *((int *)data); if (smmu_domain->smmu != NULL) { dev_err(smmu_domain->smmu->dev, "cannot change force non-coherent attribute while attached\n"); ret = -EBUSY; } else if (force_non_coherent) { set_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; } else { clear_bit(DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT, smmu_domain->attributes); ret = 0; } break; } case DOMAIN_ATTR_SPLIT_TABLES: { case DOMAIN_ATTR_SPLIT_TABLES: { int split_tables = *((int *)data); int split_tables = *((int *)data); /* can't be changed while attached */ /* can't be changed while attached */ Loading
include/linux/iommu.h +6 −7 Original line number Original line Diff line number Diff line Loading @@ -191,13 +191,12 @@ enum iommu_attr { #define DOMAIN_ATTR_EARLY_MAP (EXTENDED_ATTR_BASE + 13) #define DOMAIN_ATTR_EARLY_MAP (EXTENDED_ATTR_BASE + 13) #define DOMAIN_ATTR_PAGE_TABLE_IS_COHERENT (EXTENDED_ATTR_BASE + 14) #define DOMAIN_ATTR_PAGE_TABLE_IS_COHERENT (EXTENDED_ATTR_BASE + 14) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT (EXTENDED_ATTR_BASE + 15) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_COHERENT (EXTENDED_ATTR_BASE + 15) #define DOMAIN_ATTR_PAGE_TABLE_FORCE_NON_COHERENT (EXTENDED_ATTR_BASE + 16) #define DOMAIN_ATTR_USE_LLC_NWA (EXTENDED_ATTR_BASE + 16) #define DOMAIN_ATTR_USE_LLC_NWA (EXTENDED_ATTR_BASE + 17) #define DOMAIN_ATTR_SPLIT_TABLES (EXTENDED_ATTR_BASE + 17) #define DOMAIN_ATTR_SPLIT_TABLES (EXTENDED_ATTR_BASE + 18) #define DOMAIN_ATTR_FAULT_MODEL_NO_CFRE (EXTENDED_ATTR_BASE + 18) #define DOMAIN_ATTR_FAULT_MODEL_NO_CFRE (EXTENDED_ATTR_BASE + 19) #define DOMAIN_ATTR_FAULT_MODEL_NO_STALL (EXTENDED_ATTR_BASE + 19) #define DOMAIN_ATTR_FAULT_MODEL_NO_STALL (EXTENDED_ATTR_BASE + 20) #define DOMAIN_ATTR_FAULT_MODEL_HUPCF (EXTENDED_ATTR_BASE + 20) #define DOMAIN_ATTR_FAULT_MODEL_HUPCF (EXTENDED_ATTR_BASE + 21) #define DOMAIN_ATTR_EXTENDED_MAX (EXTENDED_ATTR_BASE + 21) #define DOMAIN_ATTR_EXTENDED_MAX (EXTENDED_ATTR_BASE + 22) /* These are the possible reserved region types */ /* These are the possible reserved region types */ enum iommu_resv_type { enum iommu_resv_type { Loading