Module Name: src
Committed By: matt
Date: Tue Dec 6 17:37:55 UTC 2011
Modified Files:
src/sys/arch/mips/mips [matt-nb5-mips64]: bus_dma.c
Log Message:
Add missing KSEGX support.
To generate a diff of this commit:
cvs rdiff -u -r1.22.16.20 -r1.22.16.21 src/sys/arch/mips/mips/bus_dma.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/mips/bus_dma.c
diff -u src/sys/arch/mips/mips/bus_dma.c:1.22.16.20 src/sys/arch/mips/mips/bus_dma.c:1.22.16.21
--- src/sys/arch/mips/mips/bus_dma.c:1.22.16.20 Thu May 26 19:21:56 2011
+++ src/sys/arch/mips/mips/bus_dma.c Tue Dec 6 17:37:55 2011
@@ -1013,6 +1013,11 @@ _bus_dmamem_map(bus_dma_tag_t t, bus_dma
if (((mips_options.mips_cpu_flags & CPU_MIPS_D_CACHE_COHERENT) == 0)
&& (flags & BUS_DMA_COHERENT))
*kvap = (void *)MIPS_PHYS_TO_KSEG1(segs[0].ds_addr);
+#ifdef ENABLE_MIPS_KSEGX
+ else if (mips_ksegx_start < segs[0].ds_addr
+ && segs[0].ds_addr < mips_ksegx_start + VM_KSEGX_SIZE)
+ *kvap = (void *)(vaddr_t)(VM_KSEGX_ADDRESS + segs[0].ds_addr);
+#endif
else
*kvap = (void *)MIPS_PHYS_TO_KSEG0(segs[0].ds_addr);
return (0);
@@ -1065,6 +1070,11 @@ _bus_dmamem_unmap(bus_dma_tag_t t, void
*/
if (MIPS_KSEG0_P(kva) || MIPS_KSEG1_P(kva))
return;
+#ifdef ENABLE_MIPS_KSEGX
+ if (VM_KSEGX_ADDRESS <= (vaddr_t)kva
+ && (vaddr_t)kva < VM_KSEGX_ADDRESS + VM_KSEGX_SIZE)
+ return;
+#endif
#ifdef _LP64
if (MIPS_XKPHYS_P((vaddr_t)kva))
return;