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: 11903569 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F276C1391 for ; Fri, 13 Nov 2020 14:24:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D7BEA22226 for ; Fri, 13 Nov 2020 14:24:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (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" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726611AbgKMOYQ (ORCPT ); Fri, 13 Nov 2020 09:24:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726439AbgKMOYP (ORCPT ); Fri, 13 Nov 2020 09:24:15 -0500 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C017EC0613D1; Fri, 13 Nov 2020 06:24:15 -0800 (PST) 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 Cc: Peter Zijlstra , Frederic Weisbecker , Paul McKenney , Sebastian Andrzej Siewior , Arnd Bergmann , "James E.J. Bottomley" , Helge Deller , linux-parisc@vger.kernel.org, Yoshinori Sato , Rich Felker , linux-sh@vger.kernel.org, Jeff Dike , Richard Weinberger , Anton Ivanov , linux-um@lists.infradead.org, Russell King , Marc Zyngier , Valentin Schneider , linux-arm-kernel@lists.infradead.org, Catalin Marinas , Will Deacon Subject: [patch 00/19] softirq: Cleanups and RT awareness MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.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(-)