vserver 1.9.5.x5
[linux-2.6.git] / arch / parisc / kernel / pci-dma.c
index 2485835..07850b6 100644 (file)
 #include <asm/pgalloc.h>
 #include <asm/uaccess.h>
 
+#ifdef DEBUG_PCI
+#undef ASSERT
+#define ASSERT(expr) \
+       if(!(expr)) { \
+               printk("\n%s:%d: Assertion " #expr " failed!\n", \
+                               __FILE__, __LINE__); \
+               panic(#expr); \
+       }
+#else
+#define ASSERT(expr)
+#endif
+
+
 static struct proc_dir_entry * proc_gsc_root = NULL;
 static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length);
 static unsigned long pcxl_used_bytes = 0;
@@ -91,7 +104,9 @@ static inline int map_pte_uncached(pte_t * pte,
                if (!pte_none(*pte))
                        printk(KERN_ERR "map_pte_uncached: page already exists\n");
                set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
+               purge_tlb_start();
                pdtlb_kernel(orig_vaddr);
+               purge_tlb_end();
                vaddr += PAGE_SIZE;
                orig_vaddr += PAGE_SIZE;
                (*paddr_ptr) += PAGE_SIZE;
@@ -166,7 +181,9 @@ static inline void unmap_uncached_pte(pmd_t * pmd, unsigned long vaddr,
        do {
                pte_t page = *pte;
                pte_clear(pte);
+               purge_tlb_start();
                pdtlb_kernel(orig_vaddr);
+               purge_tlb_end();
                vaddr += PAGE_SIZE;
                orig_vaddr += PAGE_SIZE;
                pte++;
@@ -539,10 +556,10 @@ struct hppa_dma_ops pcx_dma_ops = {
        .unmap_single =         pa11_dma_unmap_single,
        .map_sg =               pa11_dma_map_sg,
        .unmap_sg =             pa11_dma_unmap_sg,
-       .dma_sync_single_cpu =  pa11_dma_sync_single_cpu,
-       .dma_sync_single_device = pa11_dma_sync_single_device,
-       .dma_sync_sg_cpu =      pa11_dma_sync_sg_cpu,
-       .dma_sync_sg_device =   pa11_dma_sync_sg_device,
+       .dma_sync_single_for_cpu =      pa11_dma_sync_single_for_cpu,
+       .dma_sync_single_for_device =   pa11_dma_sync_single_for_device,
+       .dma_sync_sg_for_cpu =          pa11_dma_sync_sg_for_cpu,
+       .dma_sync_sg_for_device =       pa11_dma_sync_sg_for_device,
 };