From 07b17f0f7485bcbc7902cf6f56a89f5b716344bd Mon Sep 17 00:00:00 2001 From: Yunsheng Lin Date: Fri, 7 Jan 2022 17:00:42 +0800 Subject: page_pool: remove spinlock in page_pool_refill_alloc_cache() As page_pool_refill_alloc_cache() is only called by __page_pool_get_cached(), which assumes non-concurrent access as suggested by the comment in __page_pool_get_cached(), and ptr_ring allows concurrent access between consumer and producer, so remove the spinlock in page_pool_refill_alloc_cache(). Signed-off-by: Yunsheng Lin Acked-by: Jesper Dangaard Brouer Link: https://lore.kernel.org/r/20220107090042.13605-1-linyunsheng@huawei.com Signed-off-by: Jakub Kicinski --- net/core/page_pool.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 7347d5c7dbe0..bd62c01a2ec3 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -130,9 +130,6 @@ static struct page *page_pool_refill_alloc_cache(struct page_pool *pool) pref_nid = numa_mem_id(); /* will be zero like page_to_nid() */ #endif - /* Slower-path: Get pages from locked ring queue */ - spin_lock(&r->consumer_lock); - /* Refill alloc array, but only if NUMA match */ do { page = __ptr_ring_consume(r); @@ -157,7 +154,6 @@ static struct page *page_pool_refill_alloc_cache(struct page_pool *pool) if (likely(pool->alloc.count > 0)) page = pool->alloc.cache[--pool->alloc.count]; - spin_unlock(&r->consumer_lock); return page; } -- cgit v1.2.3-59-g8ed1b