Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4568919pxv; Tue, 6 Jul 2021 04:17:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOFouUQNxfzMNmdg5mH5Jj0Y0hXpYXoPLMXjkwL727sEVM4DSD0rkLW8NzhcCBWTMmAb/w X-Received: by 2002:a92:d84d:: with SMTP id h13mr13848580ilq.179.1625570221227; Tue, 06 Jul 2021 04:17:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625570221; cv=none; d=google.com; s=arc-20160816; b=oOMSFLo4ycqslbbEB9mFofJfgPylWOlaiQnd1YhqwY4sElttM77wq153QrPsc/JeI2 ndWGgTBDw5nd+JzaUMcqpSUtXbxnRN8GAUfVCv8GHFwIf1BCyBCUVOeLSw58fZWeSsns 3pPQNVtUALayizZLRbsmovCb9BQsX9tZPyP4+bIgROA5J7deQHfq/4wnWB+AILS2y7jX Fak3dfaIHRoFN1EiFFHQ2IHy0Pe3PDPFvdEOj+BOty7Z2zq4WUi0kYqfvr693HqUJUQ0 N8LceHGR58qj8LnD3aWyJnWpaD/g7/yPEaGAWQM9uXHplZOrnlxjY7T4vLLLyb2yFVbD qrPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=m0fecpRznzAlJlheU0zW3Wi/lw3wPJJlTHP/gxbSbcc=; b=nD5BEYCdsIMIKFkNooD1o24sQDki6KneU4clnFe74N8XdJbANE01iiwl91wi3FAg8w OTVZeBKZZFBzS4gg0ICoyHzLp3BvCdvFs84MoeQMhBTJdTnwOyqZ9Y9sqWeStogI4j3c Dv1gHG7L4VZ1lPJ0G/yvZDmhlEhsbLiD72Uw+NSkixhGJQjFNYDlpNB85//sKYKFudTy oTJIdRIpg4d1uQy6/0GjpUpBSRFMV+2Pg9ys/4MKLeBVJg+Uey/uLlIpLC62NmaUQRHv Fk8K+uYaKvGReo1J/8/uUwY/uryNcycyWXBbJayLhOQr0iy5Ys/63IWEFO5V0sUHINCy sDow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=kVx4EcTJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m20si8435233iow.46.2021.07.06.04.16.49; Tue, 06 Jul 2021 04:17:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=kVx4EcTJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232539AbhGFLS3 (ORCPT + 99 others); Tue, 6 Jul 2021 07:18:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:52512 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232046AbhGFLRX (ORCPT ); Tue, 6 Jul 2021 07:17:23 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 86D0961C2B; Tue, 6 Jul 2021 11:14:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625570084; bh=pTdXuTegRiLLYwpB7TVilPlD4Q92JQ1noO5D+eow+qc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kVx4EcTJNOdjIKLwMrNpP3/EL9i2+OSIBNQvbDjvDHBtMSl0sKnxSlfHYcIu4wXEn IPdN3U6ynMlERLSRpM51zhlXBHoGUVmw1YUxkcgsmaZTl1tPu5DfUm59dX12YEDbmn IA9T4HXzTOoFWd+tuEKGpbkV2+zXGykwElSl5Y2B5N74YK540MfhdF1hNAfrygjsY0 DqvqcFIsVzAsAI1Zwpd1FBZtzO626qOK5wZHBoJfBQP+ztCKO4D3KvZtlnoYqcsWb2 U44rCadaS14+Ml25vNyi2aRZNwoI5gWZ53UQwy+kV72cemeMYMunA3XZXxQeOf7e+P qGqUyDROiF6zA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sebastian Andrzej Siewior , Juri Lelli , Thomas Gleixner , "David S . Miller" , Sasha Levin , netdev@vger.kernel.org Subject: [PATCH AUTOSEL 5.13 024/189] net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT Date: Tue, 6 Jul 2021 07:11:24 -0400 Message-Id: <20210706111409.2058071-24-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210706111409.2058071-1-sashal@kernel.org> References: <20210706111409.2058071-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sebastian Andrzej Siewior [ Upstream commit 8380c81d5c4fced6f4397795a5ae65758272bbfd ] __napi_schedule_irqoff() is an optimized version of __napi_schedule() which can be used where it is known that interrupts are disabled, e.g. in interrupt-handlers, spin_lock_irq() sections or hrtimer callbacks. On PREEMPT_RT enabled kernels this assumptions is not true. Force- threaded interrupt handlers and spinlocks are not disabling interrupts and the NAPI hrtimer callback is forced into softirq context which runs with interrupts enabled as well. Chasing all usage sites of __napi_schedule_irqoff() is a whack-a-mole game so make __napi_schedule_irqoff() invoke __napi_schedule() for PREEMPT_RT kernels. The callers of ____napi_schedule() in the networking core have been audited and are correct on PREEMPT_RT kernels as well. Reported-by: Juri Lelli Signed-off-by: Sebastian Andrzej Siewior Reviewed-by: Thomas Gleixner Reviewed-by: Juri Lelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/core/dev.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index ef8cf7619baf..50531a2d0b20 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6520,11 +6520,18 @@ EXPORT_SYMBOL(napi_schedule_prep); * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule * - * Variant of __napi_schedule() assuming hard irqs are masked + * Variant of __napi_schedule() assuming hard irqs are masked. + * + * On PREEMPT_RT enabled kernels this maps to __napi_schedule() + * because the interrupt disabled assumption might not be true + * due to force-threaded interrupts and spinlock substitution. */ void __napi_schedule_irqoff(struct napi_struct *n) { - ____napi_schedule(this_cpu_ptr(&softnet_data), n); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + ____napi_schedule(this_cpu_ptr(&softnet_data), n); + else + __napi_schedule(n); } EXPORT_SYMBOL(__napi_schedule_irqoff); -- 2.30.2