From patchwork Fri Nov 13 14:02:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 11903651 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=-8.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 603D1C388F7 for ; Fri, 13 Nov 2020 14:24:53 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1765022240 for ; Fri, 13 Nov 2020 14:24:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Hy3UZBxV"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="l6bH+B8+"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="AtBmIxr4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1765022240 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Subject:To:From:Date:Message-Id: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=25WIRqYwOdLswJ6NWyN12vtG35X0ku+UL43m/ESiN3g=; b=Hy3UZBxVyCQKKdSn1EDCpb6Idr GyAy3JGQNgSRHBwrbadrW1YFKM7Hhflt5RvkmgEiuzKYmc/gBgiYU5jdYnLJR0glehJO2Rn154CHm 4agQmKba47Wyl4h7T/QAwvx6YfsCbH3b4JkNng/75K/YjMIEYGSjHVaTOCg4pZCM3VhK58Z6Ov1DB QSRU0XT3VgdyMyMJpDRJ3Kn69XVuXigdW4VfMvM0Sz3+bwmWLa/eg0V/j3qp79Bm5bRN/dY5TetZV 6RauyKbLfeRVhz9aNSOzjH3kIqpZIlBhEASMwhftUFpN/d+tlfGcgYr1Lcfs98bSxCdLq2mQP0iJV pwvK9Dyw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdZzu-0006EE-Vu; Fri, 13 Nov 2020 14:24:19 +0000 Received: from galois.linutronix.de ([2a0a:51c0:0:12e:550::1]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdZzr-0006Cx-Eg; Fri, 13 Nov 2020 14:24:16 +0000 Message-Id: <20201113140207.499353218@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1605277454; 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; bh=PPLSKX/xmwMFedV4IKRF5BuAJaVvtEPUqA8f9IDGXCY=; b=l6bH+B8+huzeAxpMYHuCQ+BdXfK4ENMqPIutQyozeuaag6I+Pmy6ws+WrwDbEagC3owhXI e4kOg45yiOiOBMpnbUwvzjw1Tlx6yx4Ye3qjtp2kB3pq0AXDAY0An3a6gQMMuvB9iI5QfZ 6TZbWH8hO0g2VO+IUwYA8+zv2sktar1yVgv1Xh66xRbP5r7MCuWHWzeEHg1Yb8Gaiy1nqx B7O33xFns3qON2zrMoRmKB6KwXQMe40ktnUKHoQlcuNns3+6hSrP50xwIMejS/s24v7nt2 +SpT+tCx3yonhfxcC3z29pyyJjzqseiDZ6UACrnYcf5sbVrhUdT9ZIS6cWp21w== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1605277454; 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; bh=PPLSKX/xmwMFedV4IKRF5BuAJaVvtEPUqA8f9IDGXCY=; b=AtBmIxr4B4x8cNg20chnLUnH8GQLpcWJEzBvaxV/w167Qbq0G7oSGl8oTsx7v+PGYUbpun UEH3CJUGQMXh0FBQ== Date: Fri, 13 Nov 2020 15:02:07 +0100 From: Thomas Gleixner To: LKML Subject: [patch 00/19] softirq: Cleanups and RT awareness MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_092415_601165_2C7FBCCC X-CRM114-Status: UNSURE ( 8.89 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marc Zyngier , Rich Felker , Catalin Marinas , Paul McKenney , Arnd Bergmann , linux-sh@vger.kernel.org, Peter Zijlstra , Richard Weinberger , Frederic Weisbecker , Valentin Schneider , Jeff Dike , Russell King , Yoshinori Sato , "James E.J. Bottomley" , linux-parisc@vger.kernel.org, Helge Deller , linux-um@lists.infradead.org, Will Deacon , Sebastian Andrzej Siewior , linux-arm-kernel@lists.infradead.org, Anton Ivanov Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RT runs softirq processing always in thread context and it requires that both the softirq execution and the BH disabled sections are preemptible. This is achieved by serialization through per CPU local locks and substituting a few parts of the existing softirq processing code with helper functions. The following series has two parts: 1) Cleanup irq_cpustats and consolidation of the preempt count maze so softirq_count() and related parts can be substituted for RT 2) The actual core implementation including the required fixups for NOHZ, RCU and tasklets. The series is also available from git: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git softirq The RT variant has sucessfully been tested in the current 5.10-rt patches. For non-RT kernels there is no functional change. Thanks, tglx --- b/arch/arm/include/asm/hardirq.h | 11 b/arch/arm/include/asm/irq.h | 2 b/arch/arm64/include/asm/hardirq.h | 7 b/arch/parisc/include/asm/hardirq.h | 1 b/arch/sh/include/asm/hardirq.h | 14 - b/arch/sh/kernel/irq.c | 2 b/arch/sh/kernel/traps.c | 2 b/arch/um/include/asm/hardirq.h | 17 - b/include/asm-generic/hardirq.h | 6 b/include/linux/bottom_half.h | 8 b/include/linux/hardirq.h | 1 b/include/linux/interrupt.h | 13 - b/include/linux/preempt.h | 36 +-- b/include/linux/rcupdate.h | 3 b/include/linux/sched.h | 3 b/kernel/softirq.c | 412 ++++++++++++++++++++++++++++++------ b/kernel/time/tick-sched.c | 2 include/linux/irq_cpustat.h | 28 -- 18 files changed, 405 insertions(+), 163 deletions(-)