aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap
diff options
context:
space:
mode:
authorGuzman Lugo, Fernando <x0095840@ti.com>2010-12-14 19:54:00 -0500
committerHari Kanigeri <h-kanigeri2@ti.com>2010-12-15 12:28:30 -0500
commitba6e1f4ff41314906d81e6d96e646cdeafe42827 (patch)
tree93ab9d479d041de9b54525fa77e25635d8eb5321 /arch/arm/plat-omap
parentff0fba0bca4182e022c0a2ac0f3e63508e86e9f1 (diff)
OMAP: iovmm: no gap checking for fixed address
If some fixed da address is wanted to be mapped and the page is freed but it is used as gap, the mapping will fail. This patch is fixing that and olny keeps the gap for not fixed address. Signed-off-by: Fernando Guzman Lugo <x0095840@ti.com> Acked-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r--arch/arm/plat-omap/iovmm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c
index 8ce0de247c71..34f0012b5676 100644
--- a/arch/arm/plat-omap/iovmm.c
+++ b/arch/arm/plat-omap/iovmm.c
@@ -289,10 +289,10 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
289 prev_end = 0; 289 prev_end = 0;
290 list_for_each_entry(tmp, &obj->mmap, list) { 290 list_for_each_entry(tmp, &obj->mmap, list) {
291 291
292 if (prev_end >= start) 292 if (prev_end > start)
293 break; 293 break;
294 294
295 if (start + bytes < tmp->da_start) 295 if (start + bytes <= tmp->da_start)
296 goto found; 296 goto found;
297 297
298 if (flags & IOVMF_DA_ANON) 298 if (flags & IOVMF_DA_ANON)
@@ -301,7 +301,7 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
301 prev_end = tmp->da_end; 301 prev_end = tmp->da_end;
302 } 302 }
303 303
304 if ((start > prev_end) && (ULONG_MAX - start >= bytes)) 304 if ((start >= prev_end) && (ULONG_MAX - start + 1 >= bytes))
305 goto found; 305 goto found;
306 306
307 dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n", 307 dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",