Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1673485pxu; Tue, 24 Nov 2020 06:21:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJxip5tyVcYkJVCoNu0BA/xwTXtPVZ/NvdBYp/Mqq85YZudr1XSEcrs0L4VlyT0wK+hv+0U1 X-Received: by 2002:a17:906:6d52:: with SMTP id a18mr4256387ejt.224.1606227714033; Tue, 24 Nov 2020 06:21:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606227714; cv=none; d=google.com; s=arc-20160816; b=ifmUwEJt36DqFjRn5H65H6tXAxhcEKNpuZR6VrPpKaXd252T2Ii0x4ipVKfhDMzL+G BkUWC+w450wYeC7ME5KClJXFkTcFloGG+pV7w9Wur9aIk/kg3Q1S8dmMrmBq/NvVN/Y1 pLO2LzkoycjLfrSAWwYM43bNUURGCjKTtl3nEKiL974ZJPH3ptUXz/olXe4giLzV/cRp qREv1N+yQMKElUXRAGbsHsaZbmrZqLwKp7L/ss+1w+EIJWjDNbufIEf4y3VQZ0Cd8+Tg DjBs2QeIl7O9TsRasxs4QUrXr0jdabpvgYzwqXLqYTkfX6ary0wA6OrmSW6ZlPJM/8oI L5vg== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=J2LLyzdzpN0G6pJA06Rxb7MbtSu6Qjc/PlI8S4b8aXs=; b=EL9y3yJYbHoKbfFj1EHFKC6HhtNN0hWEY2cPt9AdIVE7jeHo3/v0eZKZqTXn0BKGoO Olj0sO3hse/rlTyM45wKEMhbDOXjlBh62X1a4ANmIba+7Q7q0v75A7okWylFfx/cafyZ ROTi4znjNuHRTIrZmCVmDUeUOmFIZ5bSX+5+JerGp5kaorzcNmkCRBzOjGOYmCq+NFFh e5ZrjzQCH0goZawYb9bPDgr6cFLzF7SO6k9ZVxL7z9E3URjeiq7LT8EzmOpkXM4TdVOg 2Lnyjof58gco1dcOkB5SWIxaCI/hAyXo4atwkzSKF74g8iZvBIYr8XfDkF+4Z9Z+fzy/ 5PwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MBZN3c7k; 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 cz27si8864023edb.291.2020.11.24.06.21.30; Tue, 24 Nov 2020 06:21:54 -0800 (PST) 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=default header.b=MBZN3c7k; 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 S2388477AbgKXOO5 (ORCPT + 99 others); Tue, 24 Nov 2020 09:14:57 -0500 Received: from mail.kernel.org ([198.145.29.99]:49864 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727207AbgKXOO4 (ORCPT ); Tue, 24 Nov 2020 09:14:56 -0500 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 CADBF2063A; Tue, 24 Nov 2020 14:14:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227296; bh=F30Bz9YLwr55lsxo6wyzgBYBg7fy7ZlU/lXDWGUcwyo=; h=From:To:Cc:Subject:Date:From; b=MBZN3c7k1F0VLck3VV8cjLn/E4zVyVpLdryZA32f7T7PeIZX/HlUwNA1PhlYrh7Ls +mDLLgB9aZxqe8HsldcKb84jnvsBC5jvCk/3Vb34BKpeXuRbVJOMQ0BYS71+AUzjNO CtXX45y7NH4ui/QiYxJjllyQrUVhKp4nmpNCI/0k= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5p-00DGcy-Iq; Tue, 24 Nov 2020 14:14:53 +0000 From: Marc Zyngier To: LAK , linux-kernel Cc: Will Deacon , Catalin Marinas , Thomas Gleixner , Valentin Schneider , Peter Zijlstra , Mark Rutland , Russell King , Android Kernel Team Subject: [PATCH v2 0/6] arm/arm64: Allow the rescheduling IPI to bypass irq_enter/exit Date: Tue, 24 Nov 2020 14:14:43 +0000 Message-Id: <20201124141449.572446-1-maz@kernel.org> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is the second version of my earlier series [1], which aims at fixing (or papering over, depending on how you look at things) a performance regression seen on arm64 for reched IPI heavy workloads (such as "perf bench sched pipe"). As eloquently described by Thomas in his earlier replies [2], the current situation is less than ideal on most architecture except x86, and my conclusion is that what was broken in 5.9 wouldn't be more broken in 5.10 with these patches (and addresses the performance regression). Needless to say, I intend to try and help fixing the issues Thomas mentioned, and I believe that Mark (cc'd) already has something that could be used as a healthy starting point (Mark, do correct me if I misrepresented your work). Thanks, M. * From v1: - Added a new __irq_modify_status() helper - Renamed IRQ_NAKED to IRQ_RAW - Renamed IRQ_HIDDEN to IRQ_IPI - Applied the same workaround to 32bit ARM for completeness [1] https://lore.kernel.org/r/20201101131430.257038-1-maz@kernel.org/ [2] https://lore.kernel.org/r/87lfewnmdz.fsf@nanos.tec.linutronix.de/ Marc Zyngier (6): genirq: Add __irq_modify_status() helper to clear/set special flags genirq: Allow an interrupt to be marked as 'raw' arm64: Mark the recheduling IPI as raw interrupt arm: Mark the recheduling IPI as raw interrupt genirq: Drop IRQ_HIDDEN from IRQF_MODIFY_MASK genirq: Rename IRQ_HIDDEN to IRQ_IPI arch/arm/Kconfig | 1 + arch/arm/kernel/smp.c | 6 +++++- arch/arm64/Kconfig | 1 + arch/arm64/kernel/smp.c | 6 +++++- include/linux/irq.h | 11 ++++++++--- kernel/irq/Kconfig | 3 +++ kernel/irq/chip.c | 12 ++++++++++-- kernel/irq/debugfs.c | 3 ++- kernel/irq/irqdesc.c | 17 ++++++++++++----- kernel/irq/proc.c | 2 +- kernel/irq/settings.h | 33 +++++++++++++++++++++++++++------ 11 files changed, 75 insertions(+), 20 deletions(-) -- 2.28.0