提交 50b4860d 编写于 作者: O Omar Ramirez Luna 提交者: Tony Lindgren

OMAP: iovmm: fix SW flags passed by user

Commit d038aee2
"omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED flag",
changes iovmm to receive flags specified by user, however
the upper 16 bits of the flags are wiped by iovmm itself.

This fixes IOVMF_DA_FIXED flags from being lost, and lets the user
map its desired "device addresses".
Signed-off-by: NOmar Ramirez Luna <omar.ramirez@ti.com>
Acked-by: NHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 77f7059a
...@@ -29,9 +29,6 @@ struct iovm_struct { ...@@ -29,9 +29,6 @@ struct iovm_struct {
* lower 16 bit is used for h/w and upper 16 bit is for s/w. * lower 16 bit is used for h/w and upper 16 bit is for s/w.
*/ */
#define IOVMF_SW_SHIFT 16 #define IOVMF_SW_SHIFT 16
#define IOVMF_HW_SIZE (1 << IOVMF_SW_SHIFT)
#define IOVMF_HW_MASK (IOVMF_HW_SIZE - 1)
#define IOVMF_SW_MASK (~IOVMF_HW_MASK)UL
/* /*
* iovma: h/w flags derived from cam and ram attribute * iovma: h/w flags derived from cam and ram attribute
......
...@@ -648,7 +648,6 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, ...@@ -648,7 +648,6 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt,
return PTR_ERR(va); return PTR_ERR(va);
} }
flags &= IOVMF_HW_MASK;
flags |= IOVMF_DISCONT; flags |= IOVMF_DISCONT;
flags |= IOVMF_MMIO; flags |= IOVMF_MMIO;
...@@ -706,7 +705,6 @@ u32 iommu_vmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) ...@@ -706,7 +705,6 @@ u32 iommu_vmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags)
if (!va) if (!va)
return -ENOMEM; return -ENOMEM;
flags &= IOVMF_HW_MASK;
flags |= IOVMF_DISCONT; flags |= IOVMF_DISCONT;
flags |= IOVMF_ALLOC; flags |= IOVMF_ALLOC;
...@@ -795,7 +793,6 @@ u32 iommu_kmap(struct iommu *obj, u32 da, u32 pa, size_t bytes, ...@@ -795,7 +793,6 @@ u32 iommu_kmap(struct iommu *obj, u32 da, u32 pa, size_t bytes,
if (!va) if (!va)
return -ENOMEM; return -ENOMEM;
flags &= IOVMF_HW_MASK;
flags |= IOVMF_LINEAR; flags |= IOVMF_LINEAR;
flags |= IOVMF_MMIO; flags |= IOVMF_MMIO;
...@@ -853,7 +850,6 @@ u32 iommu_kmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) ...@@ -853,7 +850,6 @@ u32 iommu_kmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags)
return -ENOMEM; return -ENOMEM;
pa = virt_to_phys(va); pa = virt_to_phys(va);
flags &= IOVMF_HW_MASK;
flags |= IOVMF_LINEAR; flags |= IOVMF_LINEAR;
flags |= IOVMF_ALLOC; flags |= IOVMF_ALLOC;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册