diff -ur nvidia-source-100.14.19-x86_64/conftest.sh nvidia-source-100.14.19-x86_64-xen/conftest.sh --- nvidia-source-100.14.19-x86_64/conftest.sh 2007-09-12 23:53:20.000000000 +0200 +++ nvidia-source-100.14.19-x86_64-xen/conftest.sh 2007-11-22 05:47:37.000000000 +0100 @@ -30,7 +30,7 @@ CFLAGS="$CFLAGS -I$OUTPUT/include2 -I$OUTPUT/include \ -I$HEADERS -I$HEADERS/asm-$ARCH/mach-default" else - CFLAGS="$CFLAGS -I$HEADERS -I$HEADERS/asm/mach-default" + CFLAGS="$CFLAGS -I$HEADERS/asm/mach-xen -I$HEADERS -I$HEADERS/asm/mach-default" fi if [ -n "$BUILD_PARAMS" ]; then diff -ur nvidia-source-100.14.19-x86_64/nv-linux.h nvidia-source-100.14.19-x86_64-xen/nv-linux.h --- nvidia-source-100.14.19-x86_64/nv-linux.h 2007-09-12 23:53:20.000000000 +0200 +++ nvidia-source-100.14.19-x86_64-xen/nv-linux.h 2007-11-22 04:45:26.000000000 +0100 @@ -261,7 +261,7 @@ * tiny, and the kernel panics when it is exhausted. try to warn the user that * they need to boost the size of their pool. */ -#if defined(CONFIG_SWIOTLB) && !defined(GFP_DMA32) +#if defined(CONFIG_SWIOTLB) && !defined(GFP_DMA32) && !defined(CONFIG_XEN) #define NV_SWIOTLB 1 #endif @@ -836,7 +836,10 @@ #define NV_VM_INSERT_PAGE(vma, addr, page) \ vm_insert_page(vma, addr, page) #endif -#if defined(NV_REMAP_PFN_RANGE_PRESENT) +#if defined(CONFIG_XEN) +#define NV_REMAP_PAGE_RANGE(from, offset, x...) \ + io_remap_pfn_range(vma, from, ((offset) >> PAGE_SHIFT), x) +#elif defined(NV_REMAP_PFN_RANGE_PRESENT) #define NV_REMAP_PAGE_RANGE(from, offset, x...) \ remap_pfn_range(vma, from, ((offset) >> PAGE_SHIFT), x) #elif defined(NV_REMAP_PAGE_RANGE_5_PRESENT) @@ -956,6 +959,9 @@ __pte_value; \ }) +#if !defined(CONFIG_XEN) +#define phys_to_machine(x) x +#endif #define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE) #define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) ) diff -ur nvidia-source-100.14.19-x86_64/nv-vm.c nvidia-source-100.14.19-x86_64-xen/nv-vm.c --- nvidia-source-100.14.19-x86_64/nv-vm.c 2007-09-12 23:53:20.000000000 +0200 +++ nvidia-source-100.14.19-x86_64-xen/nv-vm.c 2007-11-22 04:45:26.000000000 +0100 @@ -38,7 +38,7 @@ page_ptr->phys_addr, page_ptr->dma_addr, NV_GET_PAGE_COUNT(page_ptr), - NV_GET_PAGE_STRUCT(page_ptr->phys_addr)->flags); + NV_GET_PAGE_STRUCT(phys_to_machine(page_ptr->phys_addr)->flags); } } #endif @@ -352,6 +352,9 @@ static void nv_flush_caches(void) { +#if defined(CONFIG_PREEMPT_RT) + if(!nv_pat_enabled) return; +#endif #if defined(KERNEL_2_4) // for 2.4 kernels, just automatically flush the caches and invalidate tlbs nv_execute_on_all_cpus(cache_flush, NULL); diff -ur nvidia-source-100.14.19-x86_64/os-agp.c nvidia-source-100.14.19-x86_64-xen/os-agp.c --- nvidia-source-100.14.19-x86_64/os-agp.c 2007-09-12 23:53:20.000000000 +0200 +++ nvidia-source-100.14.19-x86_64-xen/os-agp.c 2007-11-22 04:45:26.000000000 +0100 @@ -295,7 +295,7 @@ page_ptr->phys_addr = (ptr->memory[i] & PAGE_MASK); page_ptr->virt_addr = (unsigned long) __va(page_ptr->phys_addr); - page_ptr->dma_addr = page_ptr->phys_addr; + page_ptr->dma_addr = phys_to_machine(page_ptr->phys_addr); } return RM_OK; diff -ur nvidia-source-100.14.19-x86_64/os-interface.c nvidia-source-100.14.19-x86_64-xen/os-interface.c --- nvidia-source-100.14.19-x86_64/os-interface.c 2007-09-12 23:53:20.000000000 +0200 +++ nvidia-source-100.14.19-x86_64-xen/os-interface.c 2007-11-22 04:45:26.000000000 +0100 @@ -564,6 +564,7 @@ MicroSeconds = MilliSeconds * 1000; tm_end.tv_usec = MicroSeconds; tm_end.tv_sec = 0; +#if !defined(CONFIG_XEN) NV_TIMERADD(&tm_aux, &tm_end, &tm_end); /* do we have a full jiffie to wait? */ @@ -611,6 +612,7 @@ MicroSeconds = 0; } while ((jiffies = NV_USECS_TO_JIFFIES(MicroSeconds)) != 0); } +#endif if (MicroSeconds > 1000) {