@@ -60,8 +60,6 @@
/* Max time to check for GP Timer IRQ */
#define GPTIMER_IRQ_WAIT_MAX_CNT 1000
-static void *dummy_va_addr;
-
static struct omap_dm_timer *timer;
dsp_status bridge_deh_create(struct deh_mgr **ret_deh_mgr,
@@ -203,6 +201,7 @@ void bridge_deh_notify(struct deh_mgr *deh_mgr, u32 ulEventMask, u32 dwErrInfo)
.element_size = HW_ELEM_SIZE16BIT,
.mixed_size = HW_MMU_CPUES,
};
+ void *dummy_va_addr;
if (!deh_mgr)
return;
@@ -259,6 +258,9 @@ void bridge_deh_notify(struct deh_mgr *deh_mgr, u32 ulEventMask, u32 dwErrInfo)
hw_mmu_event_ack(resources->dw_dmmu_base,
HW_MMU_TRANSLATION_FAULT);
dump_dsp_stack(dev_context);
+
+ hw_mmu_disable(resources->dw_dmmu_base);
+ free_page((unsigned long)dummy_va_addr);
break;
#ifdef CONFIG_BRIDGE_NTFY_PWRERR
case DSP_PWRERROR:
@@ -321,6 +323,4 @@ dsp_status bridge_deh_get_info(struct deh_mgr *deh_mgr,
void bridge_deh_release_dummy_mem(void)
{
- free_page((unsigned long)dummy_va_addr);
- dummy_va_addr = NULL;
}