Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a88dee55 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Revert "iommu/arm-smmu: Add support to disable page-table coherency""

parents 7d2d40a8 48acf9e2
Loading
Loading
Loading
Loading
+0 −30
Original line number Original line Diff line number Diff line
@@ -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
@@ -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);
@@ -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:
@@ -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 */
+6 −7
Original line number Original line Diff line number Diff line
@@ -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 {