diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig index c59f9253dff1e..2eb1969cfdf02 100644 --- a/arch/arm64/configs/bcm2711_defconfig +++ b/arch/arm64/configs/bcm2711_defconfig @@ -85,6 +85,8 @@ CONFIG_MAC_PARTITION=y CONFIG_BINFMT_MISC=m CONFIG_ZSWAP=y # CONFIG_COMPAT_BRK is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y CONFIG_CMA=y CONFIG_CMA_AREAS=7 CONFIG_LRU_GEN=y diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig index c4fb7babd9a43..e13fbb8839a04 100644 --- a/arch/arm64/configs/bcm2712_defconfig +++ b/arch/arm64/configs/bcm2712_defconfig @@ -88,6 +88,8 @@ CONFIG_MAC_PARTITION=y CONFIG_BINFMT_MISC=m CONFIG_ZSWAP=y # CONFIG_COMPAT_BRK is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y CONFIG_CMA=y CONFIG_CMA_AREAS=7 CONFIG_LRU_GEN=y diff --git a/drivers/gpu/drm/v3d/v3d_bo.c b/drivers/gpu/drm/v3d/v3d_bo.c index c41476ddde686..50c9cd07b3837 100644 --- a/drivers/gpu/drm/v3d/v3d_bo.c +++ b/drivers/gpu/drm/v3d/v3d_bo.c @@ -116,7 +116,7 @@ v3d_bo_create_finish(struct drm_gem_object *obj) align = SZ_4K; else if (obj->size >= SZ_1M) align = SZ_1M; - else if (obj->size >= SZ_64K) + else if (obj->size >= SZ_512K) align = SZ_64K; else align = SZ_4K; @@ -150,10 +150,14 @@ struct v3d_bo *v3d_bo_create(struct drm_device *dev, struct drm_file *file_priv, struct drm_gem_shmem_object *shmem_obj; struct v3d_dev *v3d = to_v3d_dev(dev); struct v3d_bo *bo; + size_t size = PAGE_ALIGN(unaligned_size); int ret; - shmem_obj = drm_gem_shmem_create_with_mnt(dev, unaligned_size, - v3d->gemfs); + if (size >= SZ_512K) + shmem_obj = drm_gem_shmem_create_with_mnt(dev, size, v3d->gemfs); + else + shmem_obj = drm_gem_shmem_create(dev, size); + if (IS_ERR(shmem_obj)) return ERR_CAST(shmem_obj); bo = to_v3d_bo(&shmem_obj->base);