From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C3CFC433F5 for ; Fri, 7 Jan 2022 13:32:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F6FC6B0071; Fri, 7 Jan 2022 08:32:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9A58D6B0073; Fri, 7 Jan 2022 08:32:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 86D0F6B0074; Fri, 7 Jan 2022 08:32:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0185.hostedemail.com [216.40.44.185]) by kanga.kvack.org (Postfix) with ESMTP id 773AE6B0071 for ; Fri, 7 Jan 2022 08:32:18 -0500 (EST) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 3AC5396772 for ; Fri, 7 Jan 2022 13:32:18 +0000 (UTC) X-FDA: 79003579956.04.3CCFEDA Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf15.hostedemail.com (Postfix) with ESMTP id AACD9A0016 for ; Fri, 7 Jan 2022 13:32:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641562337; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cFxA12PHF5x2snjaqknP/Xo7sJEChO7mQ3FWdzGbJfc=; b=KyyORVYRcX6gOPvMFsS/rzMG8e8W9P8C4aqr01Dky9fVGLmG/Hv+gH3YWRjFJ6lAidPxkH fQD5xv37FC3tNfk6EFvZRMqojgHSH67E2lPtVAh9JyP3v47M72nAROmHx2yO03dQ2mwCYZ 1bCCI3KtUSllcUa0jQfCbucgHo7O6tk= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-27-iTCNAJ49MpurQYYaOytgew-1; Fri, 07 Jan 2022 08:32:13 -0500 X-MC-Unique: iTCNAJ49MpurQYYaOytgew-1 Received: by mail-wm1-f70.google.com with SMTP id m19-20020a05600c4f5300b00345cb6e8dd4so833296wmq.3 for ; Fri, 07 Jan 2022 05:32:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:date:mime-version:user-agent:cc :subject:content-language:to:references:in-reply-to :content-transfer-encoding; bh=cFxA12PHF5x2snjaqknP/Xo7sJEChO7mQ3FWdzGbJfc=; b=ArWAlS+oLPyCIgy1xzGtr8fJ/sXsBBYj55sQo7+m6NcvGv6ftWxUQt4ax3EwfcQP9H LxXvWsUsTTLq1F335d0u9gAcp0c0EUnaweBgg1jPMSlTqSA4MGARtCAxVowD+o1m1+41 G0bADJLF++tr2Vn2b9sAcDlGeFNulMkF/eyqOtO9/PxxbLA0TgV3Bun/rl0BHVhjSjlo kC1f5OdZw/X+GqtN2PW6P7eaJshwdfH5Kjsledp91OIrReGFCEchwahXFxv3jH7qzQhJ En7YUpkmrPB3IuFWH3dGxt5EVHNBw1YgNLovlR/+gbNbWKOyqbxJ0NWkx6cT5bWvlk30 Vykg== X-Gm-Message-State: AOAM533FlG1w59OMwgCEg5AuChvrwMNfBw2RaVm17TPtlG9L8bJTJJVF UysIrqU3lmHW+S1pfVkWIh+y75OTTQelP/uFGrEskJNWKqr1tC8ZC3roGpX/9dbscQdlEEQiv/m l6GN8+3jEFSI= X-Received: by 2002:a1c:6a13:: with SMTP id f19mr10216394wmc.13.1641562332761; Fri, 07 Jan 2022 05:32:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJyftZXAOc3XjSdwFOB0wtyxXs5TYDRf8z1gme7WWUEWB4FfE05bcdM3IruZ8l9IzQVuhX/J9A== X-Received: by 2002:a1c:6a13:: with SMTP id f19mr10216376wmc.13.1641562332491; Fri, 07 Jan 2022 05:32:12 -0800 (PST) Received: from [192.168.2.20] (3-14-107-185.static.kviknet.dk. [185.107.14.3]) by smtp.gmail.com with ESMTPSA id o11sm8663447wmq.15.2022.01.07.05.32.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Jan 2022 05:32:11 -0800 (PST) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: <3b7780d5-8f0b-0388-37e2-51ee8b282ab0@redhat.com> Date: Fri, 7 Jan 2022 14:32:10 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Cc: brouer@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, hawk@kernel.org, ilias.apalodimas@linaro.org, "Michael S. Tsirkin" , Linux-MM Subject: Re: [PATCH net-next] page_pool: remove spinlock in page_pool_refill_alloc_cache() To: Yunsheng Lin , davem@davemloft.net, kuba@kernel.org References: <20220107090042.13605-1-linyunsheng@huawei.com> In-Reply-To: <20220107090042.13605-1-linyunsheng@huawei.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: AACD9A0016 X-Stat-Signature: 5msxgmzoqrxhs34q8i57484x9c4s74ip Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KyyORVYR; dmarc=pass (policy=none) header.from=redhat.com; spf=none (imf15.hostedemail.com: domain of jbrouer@redhat.com has no SPF policy when checking 170.10.129.124) smtp.mailfrom=jbrouer@redhat.com X-Rspamd-Server: rspam11 X-HE-Tag: 1641562337-768412 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 07/01/2022 10.00, Yunsheng Lin wrote: > 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(). This should be okay as __ptr_ring_consume() have a memory barrier via READ_ONCE in __ptr_ring_peek(). The code page_pool_empty_ring() also does ptr_ring consume, but drivers should already take care that this will not be called concurrently, as it is part of the teardown code path (which can only run concurrently with ptr_ring producer side). Acked-by: Jesper Dangaard Brouer The original reason behind this lock was that I was planning to allow the memory subsystem to reclaim pages sitting in page_pool's cache. Unfortunately I never got around to implement this. > Signed-off-by: Yunsheng Lin > --- > 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 1a6978427d6c..6efad8b29e9c 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; > } > >