Loading arch/arm64/configs/vendor/lahaina_QGKI.config +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ CONFIG_CMA_PCP_LISTS=y CONFIG_DMA_COHERENT_HINT_CACHED=y CONFIG_PRIORITIZE_OOM_TASKS=y CONFIG_DMA_CONFIGURE_ALIGNMENT=y CONFIG_LIMIT_MOVABLE_ZONE_ALLOC=y # CONFIG_ZONE_DEVICE is not set # CONFIG_BUG_ON_HW_MEM_ONLINE_FAIL is not set CONFIG_MSM_BT_POWER=m Loading drivers/block/zram/zram_drv.c +4 −2 Original line number Diff line number Diff line Loading @@ -1360,13 +1360,15 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec, __GFP_NOWARN | __GFP_HIGHMEM | __GFP_MOVABLE | __GFP_CMA); __GFP_CMA | __GFP_OFFLINABLE); if (!handle) { zcomp_stream_put(zram->comp); atomic64_inc(&zram->stats.writestall); handle = zs_malloc(zram->mem_pool, comp_len, GFP_NOIO | __GFP_HIGHMEM | __GFP_MOVABLE | __GFP_CMA); __GFP_MOVABLE | __GFP_CMA | __GFP_OFFLINABLE); if (handle) goto compress_again; return -ENOMEM; Loading include/linux/gfp.h +14 −10 Original line number Diff line number Diff line Loading @@ -39,19 +39,20 @@ struct vm_area_struct; #define ___GFP_HARDWALL 0x100000u #define ___GFP_THISNODE 0x200000u #define ___GFP_ACCOUNT 0x400000u #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define ___GFP_CMA 0x800000u #ifdef CONFIG_LOCKDEP #define ___GFP_NOLOCKDEP 0x800000u #else #define ___GFP_CMA 0 #define ___GFP_NOLOCKDEP 0 #endif #ifdef CONFIG_LOCKDEP #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define ___GFP_NOLOCKDEP 0x1000000u #define ___GFP_CMA 0x1000000u #else #define __GFP_NOLOCKDEP 0x800000u #define ___GFP_CMA 0 #endif #ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC #define ___GFP_OFFLINABLE 0x2000000u #else #define ___GFP_NOLOCKDEP 0 #define ___GFP_OFFLINABLE 0 #endif /* If the above are modified, __GFP_BITS_SHIFT may need updating */ Loading @@ -67,6 +68,7 @@ struct vm_area_struct; #define __GFP_DMA32 ((__force gfp_t)___GFP_DMA32) #define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE) /* ZONE_MOVABLE allowed */ #define __GFP_CMA ((__force gfp_t)___GFP_CMA) #define __GFP_OFFLINABLE ((__force gfp_t)___GFP_OFFLINABLE) #define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE) /** Loading Loading @@ -227,8 +229,10 @@ struct vm_area_struct; #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP) /* Room for N __GFP_FOO bits */ #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define __GFP_BITS_SHIFT (24 + IS_ENABLED(CONFIG_LOCKDEP)) #ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC #define __GFP_BITS_SHIFT 26 #elif defined CONFIG_CMA_DIRECT_UTILIZATION #define __GFP_BITS_SHIFT 25 #else #define __GFP_BITS_SHIFT (23 + IS_ENABLED(CONFIG_LOCKDEP)) #endif Loading Loading @@ -458,7 +462,7 @@ static inline enum zone_type gfp_zone(gfp_t flags) int bit; if (!IS_ENABLED(CONFIG_HIGHMEM)) { if ((flags & __GFP_MOVABLE) && !(flags & __GFP_CMA)) if ((flags & __GFP_MOVABLE) && !(flags & __GFP_OFFLINABLE)) flags &= ~__GFP_HIGHMEM; } Loading include/linux/highmem.h +3 −6 Original line number Diff line number Diff line Loading @@ -205,12 +205,9 @@ static inline struct page * alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma, unsigned long vaddr) { #ifndef CONFIG_CMA_DIRECT_UTILIZATION return __alloc_zeroed_user_highpage(__GFP_MOVABLE, vma, vaddr); #else return __alloc_zeroed_user_highpage(__GFP_MOVABLE|__GFP_CMA, vma, return __alloc_zeroed_user_highpage( __GFP_MOVABLE|__GFP_CMA|__GFP_OFFLINABLE, vma, vaddr); #endif } static inline void clear_highpage(struct page *page) Loading include/linux/pagemap.h +7 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,13 @@ static inline struct page *page_cache_alloc(struct address_space *x) static inline gfp_t readahead_gfp_mask(struct address_space *x) { return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; gfp_t gfp_mask = mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; if (gfp_mask & __GFP_MOVABLE) gfp_mask |= __GFP_CMA; return gfp_mask; } typedef int filler_t(void *, struct page *); Loading Loading
arch/arm64/configs/vendor/lahaina_QGKI.config +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ CONFIG_CMA_PCP_LISTS=y CONFIG_DMA_COHERENT_HINT_CACHED=y CONFIG_PRIORITIZE_OOM_TASKS=y CONFIG_DMA_CONFIGURE_ALIGNMENT=y CONFIG_LIMIT_MOVABLE_ZONE_ALLOC=y # CONFIG_ZONE_DEVICE is not set # CONFIG_BUG_ON_HW_MEM_ONLINE_FAIL is not set CONFIG_MSM_BT_POWER=m Loading
drivers/block/zram/zram_drv.c +4 −2 Original line number Diff line number Diff line Loading @@ -1360,13 +1360,15 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec, __GFP_NOWARN | __GFP_HIGHMEM | __GFP_MOVABLE | __GFP_CMA); __GFP_CMA | __GFP_OFFLINABLE); if (!handle) { zcomp_stream_put(zram->comp); atomic64_inc(&zram->stats.writestall); handle = zs_malloc(zram->mem_pool, comp_len, GFP_NOIO | __GFP_HIGHMEM | __GFP_MOVABLE | __GFP_CMA); __GFP_MOVABLE | __GFP_CMA | __GFP_OFFLINABLE); if (handle) goto compress_again; return -ENOMEM; Loading
include/linux/gfp.h +14 −10 Original line number Diff line number Diff line Loading @@ -39,19 +39,20 @@ struct vm_area_struct; #define ___GFP_HARDWALL 0x100000u #define ___GFP_THISNODE 0x200000u #define ___GFP_ACCOUNT 0x400000u #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define ___GFP_CMA 0x800000u #ifdef CONFIG_LOCKDEP #define ___GFP_NOLOCKDEP 0x800000u #else #define ___GFP_CMA 0 #define ___GFP_NOLOCKDEP 0 #endif #ifdef CONFIG_LOCKDEP #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define ___GFP_NOLOCKDEP 0x1000000u #define ___GFP_CMA 0x1000000u #else #define __GFP_NOLOCKDEP 0x800000u #define ___GFP_CMA 0 #endif #ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC #define ___GFP_OFFLINABLE 0x2000000u #else #define ___GFP_NOLOCKDEP 0 #define ___GFP_OFFLINABLE 0 #endif /* If the above are modified, __GFP_BITS_SHIFT may need updating */ Loading @@ -67,6 +68,7 @@ struct vm_area_struct; #define __GFP_DMA32 ((__force gfp_t)___GFP_DMA32) #define __GFP_MOVABLE ((__force gfp_t)___GFP_MOVABLE) /* ZONE_MOVABLE allowed */ #define __GFP_CMA ((__force gfp_t)___GFP_CMA) #define __GFP_OFFLINABLE ((__force gfp_t)___GFP_OFFLINABLE) #define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE) /** Loading Loading @@ -227,8 +229,10 @@ struct vm_area_struct; #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP) /* Room for N __GFP_FOO bits */ #ifdef CONFIG_CMA_DIRECT_UTILIZATION #define __GFP_BITS_SHIFT (24 + IS_ENABLED(CONFIG_LOCKDEP)) #ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC #define __GFP_BITS_SHIFT 26 #elif defined CONFIG_CMA_DIRECT_UTILIZATION #define __GFP_BITS_SHIFT 25 #else #define __GFP_BITS_SHIFT (23 + IS_ENABLED(CONFIG_LOCKDEP)) #endif Loading Loading @@ -458,7 +462,7 @@ static inline enum zone_type gfp_zone(gfp_t flags) int bit; if (!IS_ENABLED(CONFIG_HIGHMEM)) { if ((flags & __GFP_MOVABLE) && !(flags & __GFP_CMA)) if ((flags & __GFP_MOVABLE) && !(flags & __GFP_OFFLINABLE)) flags &= ~__GFP_HIGHMEM; } Loading
include/linux/highmem.h +3 −6 Original line number Diff line number Diff line Loading @@ -205,12 +205,9 @@ static inline struct page * alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma, unsigned long vaddr) { #ifndef CONFIG_CMA_DIRECT_UTILIZATION return __alloc_zeroed_user_highpage(__GFP_MOVABLE, vma, vaddr); #else return __alloc_zeroed_user_highpage(__GFP_MOVABLE|__GFP_CMA, vma, return __alloc_zeroed_user_highpage( __GFP_MOVABLE|__GFP_CMA|__GFP_OFFLINABLE, vma, vaddr); #endif } static inline void clear_highpage(struct page *page) Loading
include/linux/pagemap.h +7 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,13 @@ static inline struct page *page_cache_alloc(struct address_space *x) static inline gfp_t readahead_gfp_mask(struct address_space *x) { return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; gfp_t gfp_mask = mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; if (gfp_mask & __GFP_MOVABLE) gfp_mask |= __GFP_CMA; return gfp_mask; } typedef int filler_t(void *, struct page *); Loading