Changeset View
Changeset View
Standalone View
Standalone View
graphics/drm-next-kmod/files/patch-drm__ttm__ttm_memory.c
- This file was added.
Property | Old Value | New Value |
---|---|---|
fbsd:nokeywords | null | yes \ No newline at end of property |
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
--- drm/ttm/ttm_memory.c.orig 2018-10-25 02:29:04.000000000 -0700 | |||||
+++ drm/ttm/ttm_memory.c | |||||
@@ -263,6 +263,9 @@ | |||||
#ifdef __linux__ | |||||
uint64_t mem; | |||||
#endif | |||||
+#ifdef __FreeBSD__ | |||||
+ uint64_t maxmem; | |||||
+#endif | |||||
int ret; | |||||
if (unlikely(!zone)) | |||||
@@ -274,6 +277,16 @@ | |||||
#endif | |||||
zone->name = "kernel"; | |||||
+#ifdef __FreeBSD__ | |||||
+ /* | |||||
+ * As a hack workaround for the lack of good backpressure system | |||||
+ * between FreeBSD pagedaemon and the TTM cache, just allow users to | |||||
+ * impose an arbitrary limit on the big TTM cache size. | |||||
+ */ | |||||
+ if (getenv_uint64("dev.drm.ttm_kernel_zone_maxmem", &maxmem) && | |||||
+ (mem >> 1) > maxmem) | |||||
+ mem = maxmem << 1; | |||||
+#endif | |||||
zone->zone_mem = mem; | |||||
zone->max_mem = mem >> 1; | |||||
zone->emer_mem = (mem >> 1) + (mem >> 2); | |||||
@@ -339,6 +352,9 @@ | |||||
#ifdef __linux__ | |||||
uint64_t mem; | |||||
#endif | |||||
+#ifdef __FreeBSD__ | |||||
+ uint64_t maxmem; | |||||
+#endif | |||||
int ret; | |||||
if (unlikely(!zone)) | |||||
@@ -366,6 +382,11 @@ | |||||
mem = ((uint64_t) 1ULL << 32); | |||||
zone->name = "dma32"; | |||||
+#ifdef __FreeBSD__ | |||||
+ if (getenv_uint64("dev.drm.ttm_dma32_zone_maxmem", &maxmem) && | |||||
+ (mem >> 1) > maxmem) | |||||
+ mem = maxmem << 1; | |||||
+#endif | |||||
zone->zone_mem = mem; | |||||
zone->max_mem = mem >> 1; | |||||
zone->emer_mem = (mem >> 1) + (mem >> 2); |