hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
....@@ -131,7 +131,7 @@
131131 {
132132 struct kbase_vmap_struct map;
133133 void *user_result;
134
- struct timespec ts;
134
+ struct timespec64 ts;
135135 struct base_dump_cpu_gpu_counters data;
136136 u64 system_time;
137137 u64 cycle_counter;
....@@ -759,6 +759,36 @@
759759 kunmap(pages[*target_page_nr]);
760760 }
761761
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
+
762792 static int kbase_mem_copy_from_extres(struct kbase_context *kctx,
763793 struct kbase_debug_copy_buffer *buf_data)
764794 {
....@@ -818,7 +848,12 @@
818848
819849 for (i = 0; i < buf_data->nr_extres_pages; i++) {
820850
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
821855 void *extres_page = dma_buf_kmap(dma_buf, i);
856
+#endif
822857
823858 if (extres_page)
824859 kbase_mem_copy_from_extres_page(kctx,
....@@ -827,7 +862,11 @@
827862 &target_page_nr,
828863 offset, &to_copy);
829864
865
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
866
+ kunmap(pg);
867
+#else
830868 dma_buf_kunmap(dma_buf, i, extres_page);
869
+#endif
831870 if (target_page_nr >= buf_data->nr_pages)
832871 break;
833872 }