--- common/lib/modules/fglrx/build_mod/firegl_public.c.orig 2017-02-21 17:41:25.000000000 +0200 +++ common/lib/modules/fglrx/build_mod/firegl_public.c 2017-02-21 17:44:16.000000000 +0200 @@ -3641,7 +3641,9 @@ unsigned long vma_offset; unsigned long pte_linear; mem_map_t* pMmPage; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + unsigned long address = (unsigned long) (vmf->address); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) unsigned long address = (unsigned long) (vmf->virtual_address); #endif @@ -3716,7 +3718,9 @@ { unsigned long kaddr; mem_map_t* pMmPage; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + unsigned long address = (unsigned long) (vmf->address); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) unsigned long address = (unsigned long) (vmf->virtual_address); #endif @@ -3761,7 +3765,9 @@ { unsigned long kaddr; mem_map_t* pMmPage; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + unsigned long address = (unsigned long) (vmf->address); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) unsigned long address = (unsigned long) (vmf->virtual_address); #endif @@ -3824,7 +3830,9 @@ mem_map_t* pMmPage; struct firegl_pcie_mem* pciemem; unsigned long* pagelist; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + unsigned long address = (unsigned long) (vmf->address); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) unsigned long address = (unsigned long) (vmf->virtual_address); #endif @@ -3886,7 +3894,9 @@ unsigned long offset; struct page *page; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + unsigned long address = (unsigned long) (vmf->address); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) unsigned long address = (unsigned long) (vmf->virtual_address); #endif @@ -4179,7 +4189,7 @@ TRACE_NOPAGE(vm_gart_nopage,vma, address,type); } -#else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0) #define TRACE_FAULT(_f, _v,_a) \ int ret; \ @@ -4187,6 +4197,45 @@ ret = _f(_v,_a); \ KCL_DEBUG_TRACEOUT(FN_DRM_NOPAGE, ret, NULL); \ return ret; + +static int ip_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_fault, vma, vmf); +} + +static int ip_vm_shm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_shm_fault, vma, vmf); +} + +static int ip_vm_dma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_dma_fault, vma, vmf); +} + +static int ip_vm_kmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_kmap_fault, vma, vmf); +} + +static int ip_vm_pcie_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_pcie_fault, vma, vmf); +} + +static int ip_vm_gart_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + TRACE_FAULT(do_vm_gart_fault, vma, vmf); +} + +#else + +#define TRACE_FAULT(_f, _v,_a) \ + int ret; \ + KCL_DEBUG_TRACEIN(FN_DRM_NOPAGE, (unsigned long)_a->address, NULL); \ + ret = _f(_v,_a); \ + KCL_DEBUG_TRACEOUT(FN_DRM_NOPAGE, ret, NULL); \ + return ret; static int ip_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) { --- common/lib/modules/fglrx/build_mod/kcl_acpi.c.orig 2017-02-21 17:43:44.000000000 +0200 +++ common/lib/modules/fglrx/build_mod/kcl_acpi.c 2017-02-21 17:44:16.000000000 +0200 @@ -359,7 +359,7 @@ { struct acpi_table_header *hdr; acpi_size tbl_size ; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3) && LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0) if (!ACPI_SUCCESS(acpi_get_table_with_size("VFCT", 1, &hdr, &tbl_size))) #else tbl_size = 0x7fffffff; @@ -1029,7 +1029,7 @@ return KCL_ACPI_ERROR; } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,3) && LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0) if (!ACPI_SUCCESS(acpi_get_table_with_size(id, 0, &hdr, &tbl_size))) #else tbl_size = 0x7fffffff;