gcmkHEADER_ARG("Mdl=%p NumPages=%d", Mdl, NumPages);
-#if IMX8_CMA_LIMIT
- if (!(Flags & gcvALLOC_FLAG_CMA_LIMIT))
+ if (os->allocatorLimitMarker && !(Flags & gcvALLOC_FLAG_CMA_LIMIT))
{
gcmkONERROR(gcvSTATUS_NOT_SUPPORTED);
}
-#endif
gcmkONERROR(gckOS_Allocate(os, sizeof(struct mdl_cma_priv), (gctPOINTER *)&mdl_priv));
mdl_priv->kvaddr = gcvNULL;
allocator->capability = gcvALLOC_FLAG_CONTIGUOUS;
-#if IMX8_CMA_LIMIT
- allocator->capability |= gcvALLOC_FLAG_CMA_LIMIT;
+#if defined(CONFIG_ARM64)
+ Os->allocatorLimitMarker = (Os->device->baseAddress + totalram_pages * PAGE_SIZE) > 0x100000000;
+#else
+ Os->allocatorLimitMarker = gcvFALSE;
#endif
+ if (Os->allocatorLimitMarker)
+ {
+ allocator->capability |= gcvALLOC_FLAG_CMA_LIMIT;
+ }
+
*Allocator = allocator;
return gcvSTATUS_OK;
gcsDEBUGFS_DIR allocatorDebugfsDir;
+ gctBOOL allocatorLimitMarker;
+
/* Lock for register access check. */
struct mutex registerAccessLocks[gcdMAX_GPU_COUNT];
gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
}
-#if IMX8_CMA_LIMIT
- flag |= gcvALLOC_FLAG_CMA_LIMIT;
-#endif
+ if (Os->allocatorLimitMarker)
+ {
+ flag |= gcvALLOC_FLAG_CMA_LIMIT;
+ }
/* Walk all allocators. */
list_for_each_entry(allocator, &Os->allocatorList, head)
gcmkONERROR(gcvSTATUS_OUT_OF_MEMORY);
}
-#if IMX8_CMA_LIMIT
- if (Flag & gcvALLOC_FLAG_CMA_LIMIT)
+ if (Os->allocatorLimitMarker && (Flag & gcvALLOC_FLAG_CMA_LIMIT))
{
Flag &= ~gcvALLOC_FLAG_CACHEABLE;
}
-#else
- Flag &= ~gcvALLOC_FLAG_CMA_LIMIT;
-#endif
+ else
+ {
+ Flag &= ~gcvALLOC_FLAG_CMA_LIMIT;
+ }
/* Walk all allocators. */
list_for_each_entry(allocator, &Os->allocatorList, head)
ifneq ($(CONFIG_ARCH_FSL_IMX8DV),)
EXTRA_CFLAGS += -DIMX8_SCU_CONTROL=1 -DIMX8_PHYS_BASE=0xA0000000 -DIMX8_PHYS_SIZE=0x28000000
-EXTRA_CFLAGS += -DIMX8_CMA_LIMIT=1
else
EXTRA_CFLAGS += -DIMX8_SCU_CONTROL=0 -DIMX8_PHYS_BASE=0x00000000 -DIMX8_PHYS_SIZE=0x00000000
-EXTRA_CFLAGS += -DIMX8_CMA_LIMIT=0
endif
EXTRA_CFLAGS += -DLINUX_CMA_FSL=1