提交 80f97f0f 编写于 作者: V Varun Sethi 提交者: Joerg Roedel

iommu/fsl: Add the window permission flag as a parameter to iommu_window_enable API.

Each iommu window can have access permissions associated with it. Extended the
window_enable API to incorporate window access permissions.

In case of PAMU each window can have its specific set of permissions.
Signed-off-by: NVarun Sethi <Varun.Sethi@freescale.com>
Signed-off-by: NJoerg Roedel <joro@8bytes.org>
上级 bb5547ac
...@@ -853,12 +853,13 @@ EXPORT_SYMBOL_GPL(iommu_unmap); ...@@ -853,12 +853,13 @@ EXPORT_SYMBOL_GPL(iommu_unmap);
int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
phys_addr_t paddr, u64 size) phys_addr_t paddr, u64 size, int prot)
{ {
if (unlikely(domain->ops->domain_window_enable == NULL)) if (unlikely(domain->ops->domain_window_enable == NULL))
return -ENODEV; return -ENODEV;
return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size); return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size,
prot);
} }
EXPORT_SYMBOL_GPL(iommu_domain_window_enable); EXPORT_SYMBOL_GPL(iommu_domain_window_enable);
......
...@@ -104,7 +104,7 @@ struct iommu_ops { ...@@ -104,7 +104,7 @@ struct iommu_ops {
/* Window handling functions */ /* Window handling functions */
int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr, int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
phys_addr_t paddr, u64 size); phys_addr_t paddr, u64 size, int prot);
void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr); void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr);
/* Set the numer of window per domain */ /* Set the numer of window per domain */
int (*domain_set_windows)(struct iommu_domain *domain, u32 w_count); int (*domain_set_windows)(struct iommu_domain *domain, u32 w_count);
...@@ -169,7 +169,8 @@ extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr, ...@@ -169,7 +169,8 @@ extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
/* Window handling function prototypes */ /* Window handling function prototypes */
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
phys_addr_t offset, u64 size); phys_addr_t offset, u64 size,
int prot);
extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr); extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
/** /**
* report_iommu_fault() - report about an IOMMU fault to the IOMMU framework * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
...@@ -255,7 +256,7 @@ static inline int iommu_unmap(struct iommu_domain *domain, unsigned long iova, ...@@ -255,7 +256,7 @@ static inline int iommu_unmap(struct iommu_domain *domain, unsigned long iova,
static inline int iommu_domain_window_enable(struct iommu_domain *domain, static inline int iommu_domain_window_enable(struct iommu_domain *domain,
u32 wnd_nr, phys_addr_t paddr, u32 wnd_nr, phys_addr_t paddr,
u64 size) u64 size, int prot)
{ {
return -ENODEV; return -ENODEV;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册