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 X-Spam-Level: X-Spam-Status: No, score=-5.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A149C433DF for ; Thu, 27 Aug 2020 15:10:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F1402177B for ; Thu, 27 Aug 2020 15:10:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598541011; bh=8ivePe96dqpUr5wV1RUMJKtJljdYsYT4qDcLw69YnrM=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=f0qCWwBeh2xY5s+vwnOdCkM1s8eNy266UFe1cmtusHW5b5+vtI2VnYkM3w+Oh+fBT 4QErExxcOSuBnLXegedBQ37Jx/+HBALGGVAjfawyt/lUR1t/RjtNMpePef/7f0FJZx UQdmipoGJzMSbvCJcBGXMN91cpaXw08Eg/Jnwqgs= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728468AbgH0PKJ (ORCPT ); Thu, 27 Aug 2020 11:10:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:50838 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727851AbgH0PKF (ORCPT ); Thu, 27 Aug 2020 11:10:05 -0400 Received: from kicinski-fedora-PC1C0HJN (unknown [163.114.132.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id E373C22B40; Thu, 27 Aug 2020 15:10:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598541005; bh=8ivePe96dqpUr5wV1RUMJKtJljdYsYT4qDcLw69YnrM=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=otgFaDfgw82soAyvvp04dagDx8xLncxrZPIDh00gJMGm83HcN4f9d4+091JF8NR8S TdG7zFIumB0OKRfEX2a8xbBEbR1nHXvNWVrhW742GPUGMv0mVLNQc6ndLyJpTG7Swg Bs0GfDkoJVu88g1UP+o4NFoIy99fidqDPaFlW2kI= Date: Thu, 27 Aug 2020 08:10:03 -0700 From: Jakub Kicinski To: Eric Dumazet Cc: davem@davemloft.net, michael.chan@broadcom.com, netdev@vger.kernel.org, kernel-team@fb.com, Rob Sherwood Subject: Re: [PATCH net 1/2] net: disable netpoll on fresh napis Message-ID: <20200827081003.289009f4@kicinski-fedora-PC1C0HJN> In-Reply-To: <25872247-9776-2638-cf83-a51861ce5cd4@gmail.com> References: <20200826194007.1962762-1-kuba@kernel.org> <20200826194007.1962762-2-kuba@kernel.org> <25872247-9776-2638-cf83-a51861ce5cd4@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Thu, 27 Aug 2020 00:25:31 -0700 Eric Dumazet wrote: > On 8/26/20 12:40 PM, Jakub Kicinski wrote: > > To ensure memory ordering is correct we need to use RCU accessors. > > > + set_bit(NAPI_STATE_NPSVC, &napi->state); > > + list_add_rcu(&napi->dev_list, &dev->napi_list); > > > > > - list_for_each_entry(napi, &dev->napi_list, dev_list) { > > + list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) { > > if (cmpxchg(&napi->poll_owner, -1, cpu) == -1) { > > poll_one_napi(napi); > > smp_store_release(&napi->poll_owner, -1); > > > > You added rcu in this patch (without anything in the changelog). I mentioned I need it for the barriers, in particular I wanted the store release barrier in list_add. Not extremely clean :( > netpoll_poll_dev() uses rcu_dereference_bh(), suggesting you might > need list_for_each_entry_rcu_bh() I thought the RCU flavors are mostly meaningless at this point, list_for_each_entry_rcu() checks rcu_read_lock_any_held(). I can add the definition of list_for_each_entry_rcu_bh() (since it doesn't exist) or go back to non-RCU iteration (since the use is just documentation, the code is identical). Or fix it some other way?