.. | .. |
---|
131 | 131 | { |
---|
132 | 132 | struct kbase_vmap_struct map; |
---|
133 | 133 | void *user_result; |
---|
134 | | - struct timespec ts; |
---|
| 134 | + struct timespec64 ts; |
---|
135 | 135 | struct base_dump_cpu_gpu_counters data; |
---|
136 | 136 | u64 system_time; |
---|
137 | 137 | u64 cycle_counter; |
---|
.. | .. |
---|
759 | 759 | kunmap(pages[*target_page_nr]); |
---|
760 | 760 | } |
---|
761 | 761 | |
---|
| 762 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) |
---|
| 763 | +static void *dma_buf_kmap_page(struct kbase_mem_phy_alloc *gpu_alloc, |
---|
| 764 | + unsigned long page_num, struct page **page) |
---|
| 765 | +{ |
---|
| 766 | + struct sg_table *sgt = gpu_alloc->imported.umm.sgt; |
---|
| 767 | + struct sg_page_iter sg_iter; |
---|
| 768 | + unsigned long page_index = 0; |
---|
| 769 | + |
---|
| 770 | + if (WARN_ON(gpu_alloc->type != KBASE_MEM_TYPE_IMPORTED_UMM)) |
---|
| 771 | + return NULL; |
---|
| 772 | + |
---|
| 773 | + if (!sgt) |
---|
| 774 | + return NULL; |
---|
| 775 | + |
---|
| 776 | + if (WARN_ON(page_num >= gpu_alloc->nents)) |
---|
| 777 | + return NULL; |
---|
| 778 | + |
---|
| 779 | + for_each_sg_page(sgt->sgl, &sg_iter, sgt->nents, 0) { |
---|
| 780 | + if (page_index == page_num) { |
---|
| 781 | + *page = sg_page_iter_page(&sg_iter); |
---|
| 782 | + |
---|
| 783 | + return kmap(*page); |
---|
| 784 | + } |
---|
| 785 | + page_index++; |
---|
| 786 | + } |
---|
| 787 | + |
---|
| 788 | + return NULL; |
---|
| 789 | +} |
---|
| 790 | +#endif |
---|
| 791 | + |
---|
762 | 792 | static int kbase_mem_copy_from_extres(struct kbase_context *kctx, |
---|
763 | 793 | struct kbase_debug_copy_buffer *buf_data) |
---|
764 | 794 | { |
---|
.. | .. |
---|
818 | 848 | |
---|
819 | 849 | for (i = 0; i < buf_data->nr_extres_pages; i++) { |
---|
820 | 850 | |
---|
| 851 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) |
---|
| 852 | + struct page *pg; |
---|
| 853 | + void *extres_page = dma_buf_kmap_page(gpu_alloc, i, &pg); |
---|
| 854 | +#else |
---|
821 | 855 | void *extres_page = dma_buf_kmap(dma_buf, i); |
---|
| 856 | +#endif |
---|
822 | 857 | |
---|
823 | 858 | if (extres_page) |
---|
824 | 859 | kbase_mem_copy_from_extres_page(kctx, |
---|
.. | .. |
---|
827 | 862 | &target_page_nr, |
---|
828 | 863 | offset, &to_copy); |
---|
829 | 864 | |
---|
| 865 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) |
---|
| 866 | + kunmap(pg); |
---|
| 867 | +#else |
---|
830 | 868 | dma_buf_kunmap(dma_buf, i, extres_page); |
---|
| 869 | +#endif |
---|
831 | 870 | if (target_page_nr >= buf_data->nr_pages) |
---|
832 | 871 | break; |
---|
833 | 872 | } |
---|