@@ -1449,6 +1449,7 @@ static unsigned int terminate_bb(struct w_step *w)
const uint32_t bbe = 0xa << 23;
unsigned long mmap_start, mmap_len;
unsigned long batch_start = w->bb_sz;
+ bool keep_mmap = false;
unsigned int r = 0;
uint32_t *ptr, *cs;
@@ -1472,6 +1473,7 @@ static unsigned int terminate_bb(struct w_step *w)
*cs++ = w->preempt_us ? 0x5 << 23 /* MI_ARB_CHK; */ : MI_NOOP;
w->recursive_bb_start = cs;
+ keep_mmap = true;
*cs++ = MI_BATCH_BUFFER_START | 1 << 8 | 1;
*cs++ = 0;
*cs++ = 0;
@@ -1479,6 +1481,9 @@ static unsigned int terminate_bb(struct w_step *w)
*cs = bbe;
+ if (!keep_mmap)
+ munmap(ptr, mmap_len);
+
return r;
}