Merge "arm-smmu: Add clock and regulator vote in qcom io page table sync path"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
27a17e4cc4
@@ -1459,7 +1459,9 @@ static void arm_smmu_qcom_tlb_sync(void *cookie)
|
|||||||
{
|
{
|
||||||
struct arm_smmu_domain *smmu_domain = cookie;
|
struct arm_smmu_domain *smmu_domain = cookie;
|
||||||
|
|
||||||
|
arm_smmu_rpm_get(smmu_domain->smmu);
|
||||||
__arm_smmu_flush_iotlb_all(&smmu_domain->domain, false);
|
__arm_smmu_flush_iotlb_all(&smmu_domain->domain, false);
|
||||||
|
arm_smmu_rpm_put(smmu_domain->smmu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct qcom_iommu_pgtable_ops arm_smmu_pgtable_ops = {
|
static const struct qcom_iommu_pgtable_ops arm_smmu_pgtable_ops = {
|
||||||
|
@@ -385,9 +385,18 @@ static arm_lpae_iopte arm_lpae_install_table(arm_lpae_iopte *table,
|
|||||||
struct arm_lpae_io_pgtable *data)
|
struct arm_lpae_io_pgtable *data)
|
||||||
{
|
{
|
||||||
arm_lpae_iopte old, new;
|
arm_lpae_iopte old, new;
|
||||||
|
unsigned long flags = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Drop the lock for TLB SYNC operation in order to
|
||||||
|
* enable clock & regulator through rpm hooks and
|
||||||
|
* resoter after it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
/* Due to tlb maintenance in unmap being deferred */
|
/* Due to tlb maintenance in unmap being deferred */
|
||||||
qcom_io_pgtable_tlb_sync(data->iommu_pgtbl_ops, data->iop.cookie);
|
qcom_io_pgtable_tlb_sync(data->iommu_pgtbl_ops, data->iop.cookie);
|
||||||
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
|
|
||||||
new = __pa(table) | ARM_LPAE_PTE_TYPE_TABLE;
|
new = __pa(table) | ARM_LPAE_PTE_TYPE_TABLE;
|
||||||
if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS)
|
if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS)
|
||||||
|
Reference in New Issue
Block a user