staging: ti dspbridge: deh: free dummy page immediately
authorFelipe Contreras <felipe.contreras@gmail.com>
Sun, 4 Jul 2010 13:34:29 +0000 (16:34 +0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 8 Jul 2010 20:33:00 +0000 (13:33 -0700)
There's no need to keep it around. DSP should stop trying to access
system memory.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/tidspbridge/core/ue_deh.c

index ee2d23a9fe20a418b5340580018d8e33918b725b..50868a4b7750d39aab06b8df8db042caac49af21 100644 (file)
@@ -52,8 +52,6 @@
 #include <dspbridge/io_sm.h>
 
 
-static void *dummy_va_addr;
-
 int bridge_deh_create(struct deh_mgr **ret_deh_mgr,
                struct dev_object *hdev_obj)
 {
@@ -154,6 +152,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;
@@ -214,6 +213,9 @@ void bridge_deh_notify(struct deh_mgr *deh_mgr, u32 ulEventMask, u32 dwErrInfo)
                                HW_MMU_TRANSLATION_FAULT);
                dump_dsp_stack(dev_context);
                dsp_clk_disable(DSP_CLK_GPT8);
+
+               hw_mmu_disable(resources->dw_dmmu_base);
+               free_page((unsigned long)dummy_va_addr);
                break;
 #ifdef CONFIG_BRIDGE_NTFY_PWRERR
        case DSP_PWRERROR:
@@ -276,6 +278,4 @@ int 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;
 }