On Wed 24-03-21 17:28:28, Mike Kravetz wrote: [...] > phys_addr_t cma_get_base(const struct cma *cma) > { > return PFN_PHYS(cma->base_pfn); > @@ -146,6 +155,10 @@ static int __init cma_init_reserved_areas(void) > for (i = 0; i < cma_area_count; i++) > cma_activate_area(&cma_areas[i]); > > + cma_release_wq = create_workqueue("cma_release"); Considering the workqueue is used to free up memory it should likely be WQ_MEM_RECLAIM to prevent from long stalls when WQs are overloaded. I cannot judge the CMA parts from a very quick glance this looks reasonably. -- Michal Hocko SUSE Labs