| .. | .. |
|---|
| 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 | } |
|---|