rk3368: iommu: add page fault call back for master

Signed-off-by: Simon <xxm@rock-chips.com>
This commit is contained in:
Simon
2015-04-17 11:40:28 +08:00
parent c1ea5e1d90
commit 41e5a72d1b
3 changed files with 6 additions and 1 deletions

View File

@@ -593,6 +593,8 @@ static irqreturn_t rockchip_iommu_irq(int irq, void *dev_id)
if (data->domain)
report_iommu_fault(data->domain, data->iommu,
fault_address, flags);
if (data->fault_handler)
data->fault_handler(data->iommu, IOMMU_PAGEFAULT, dte, fault_address, 1);
rockchip_iommu_page_fault_done(data->res_bases[i],
data->dbgname);

View File

@@ -38,6 +38,7 @@ struct iommu_drvdata {
struct iommu_domain *domain; /* domain given to iommu_attach_device() */
unsigned int pgtable;
struct rk_iovmm vmm;
rockchip_iommu_fault_handler_t fault_handler;
};
#ifdef CONFIG_ROCKCHIP_IOVMM

View File

@@ -40,7 +40,9 @@ int rockchip_iovmm_invalidate_tlb(struct device *dev)
void rockchip_iovmm_set_fault_handler(struct device *dev,
rockchip_iommu_fault_handler_t handler)
{
return;
struct iommu_drvdata *data = dev_get_drvdata(dev->archdata.iommu);
data->fault_handler = handler;
}
int rockchip_iovmm_activate(struct device *dev)