forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/gpu/drm/drm_scatter.c
....@@ -1,4 +1,4 @@
1
-/**
1
+/*
22 * \file drm_scatter.c
33 * IOCTLs to manage scatter/gather memory
44 *
....@@ -31,21 +31,17 @@
3131 * DEALINGS IN THE SOFTWARE.
3232 */
3333
34
-#include <linux/vmalloc.h>
34
+#include <linux/mm.h>
3535 #include <linux/slab.h>
36
-#include <drm/drmP.h>
36
+#include <linux/vmalloc.h>
37
+
38
+#include <drm/drm.h>
39
+#include <drm/drm_drv.h>
40
+#include <drm/drm_print.h>
41
+
3742 #include "drm_legacy.h"
3843
3944 #define DEBUG_SCATTER 0
40
-
41
-static inline void *drm_vmalloc_dma(unsigned long size)
42
-{
43
-#if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE)
44
- return __vmalloc(size, GFP_KERNEL, pgprot_noncached_wc(PAGE_KERNEL));
45
-#else
46
- return vmalloc_32(size);
47
-#endif
48
-}
4945
5046 static void drm_sg_cleanup(struct drm_sg_mem * entry)
5147 {
....@@ -89,9 +85,12 @@
8985 DRM_DEBUG("\n");
9086
9187 if (!drm_core_check_feature(dev, DRIVER_LEGACY))
92
- return -EINVAL;
88
+ return -EOPNOTSUPP;
9389
9490 if (!drm_core_check_feature(dev, DRIVER_SG))
91
+ return -EOPNOTSUPP;
92
+
93
+ if (request->size > SIZE_MAX - PAGE_SIZE)
9594 return -EINVAL;
9695
9796 if (dev->sg)
....@@ -118,7 +117,7 @@
118117 return -ENOMEM;
119118 }
120119
121
- entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT);
120
+ entry->virtual = vmalloc_32(pages << PAGE_SHIFT);
122121 if (!entry->virtual) {
123122 kfree(entry->busaddr);
124123 kfree(entry->pagelist);
....@@ -202,10 +201,10 @@
202201 struct drm_sg_mem *entry;
203202
204203 if (!drm_core_check_feature(dev, DRIVER_LEGACY))
205
- return -EINVAL;
204
+ return -EOPNOTSUPP;
206205
207206 if (!drm_core_check_feature(dev, DRIVER_SG))
208
- return -EINVAL;
207
+ return -EOPNOTSUPP;
209208
210209 entry = dev->sg;
211210 dev->sg = NULL;