From patchwork Mon Mar 11 22:47:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valentin Schneider X-Patchwork-Id: 10848395 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6F5D9139A for ; Mon, 11 Mar 2019 22:48:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 55B9829339 for ; Mon, 11 Mar 2019 22:48:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 499432934A; Mon, 11 Mar 2019 22:48:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id CDA4729339 for ; Mon, 11 Mar 2019 22:48:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From: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=JJy/FfBPwpBjA4R07ePIHaPWPGyH3D0KQc+g0ORdK9s=; b=UCFtXUx/psInM5 9SG6DOPRuQog8QWpjBKt+bO3gMDFdh2JOAqAN1tIkysnSfN6BwDn1gZf8JE9AahicT5bsApLVeRpA Gi39rNis3x0fiFB/y5xwcLUuP6MnOpseMPbpGPPF7eKBn7xd1eRXoMR17JLJUngTy9UZLuqwCJlE5 vDEFcXqQV+C1chaZfXB2ZN+VYZLO5qB8IJBxT1LCl34uY3s2G64m4JmiOj1jf4fstnf1demEwDT7s btYqSxyrQEdMTSaLRhUnLzoPK+HftB3dGx3MEuSQJSspVoS0kk3Hc2zuFtS2fKVNZkasXVb2M5TQh Z+JoQ4g6HBX/vbdhJGYA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h3TiJ-0003gR-2G; Mon, 11 Mar 2019 22:48:07 +0000 Received: from foss.arm.com ([217.140.101.70]) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h3TiG-0003fB-7j; Mon, 11 Mar 2019 22:48:06 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B7D60A78; Mon, 11 Mar 2019 15:48:01 -0700 (PDT) Received: from e113632-lin.cambridge.arm.com (e113632-lin.cambridge.arm.com [10.1.194.37]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 7AC513F59C; Mon, 11 Mar 2019 15:47:58 -0700 (PDT) From: Valentin Schneider To: linux-kernel@vger.kernel.org Subject: [PATCH 00/14] entry: preempt_schedule_irq() callers scrub Date: Mon, 11 Mar 2019 22:47:38 +0000 Message-Id: <20190311224752.8337-1-valentin.schneider@arm.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190311_154804_329628_4B262532 X-CRM114-Status: GOOD ( 10.96 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: uclinux-h8-devel@lists.sourceforge.jp, linux-xtensa@linux-xtensa.org, linux-ia64@vger.kernel.org, linux-c6x-dev@linux-c6x.org, Julien Thierry , Peter Zijlstra , linux-s390@vger.kernel.org, x86@kernel.org, linux-mips@vger.kernel.org, linux-m68k@lists.linux-m68k.org, Ingo Molnar , linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, nios2-dev@lists.rocketboards.org, Thomas Gleixner , linux-snps-arc@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Hi, This is the continuation of [1] where I'm hunting down preempt_schedule_irq() callers because of [2]. I told myself the best way to get this moving forward wouldn't be to write doc about it, but to go write some fixes and get some discussions going, which is what this patch-set is about. I've looked at users of preempt_schedule_irq(), and made sure they didn't have one of those useless loops. The list of offenders is: $ grep -r -I "preempt_schedule_irq" arch/ | cut -d/ -f2 | sort | uniq arc arm arm64 c6x csky h8300 ia64 m68k microblaze mips nds32 nios2 parisc powerpc riscv s390 sh sparc x86 xtensa Regarding that loop, archs seem to fall in 3 categories: A) Those that don't have the loop B) Those that have a small need_resched() loop around the preempt_schedule_irq() callsite C) Those that branch to some more generic code further up the entry code and eventually branch back to preempt_schedule_irq() arc, m68k, nios2 fall in A) sparc, ia64, s390 fall in C) all the others fall in B) I've written patches for B) and C) EXCEPT for ia64 and s390 because I haven't been able to tell if it's actually fine to kill that "long jump" (and maybe I'm wrong on sparc). Hopefully folks who understand what goes on in there might be able to shed some light. Also, since I sent patches for arm & arm64 in [1] I'm not including them here. Boot-tested on: - x86 Build-tested on: - h8300 - c6x - powerpc - mips - nds32 - microblaze - sparc - xtensa Thanks, Valentin [1]: https://lore.kernel.org/lkml/20190131182339.9835-1-valentin.schneider@arm.com/ [2]: https://lore.kernel.org/lkml/cc989920-a13b-d53b-db83-1584a7f53edc@arm.com/ Valentin Schneider (14): sched/core: Fix preempt_schedule() interrupt return comment c6x: entry: Remove unneeded need_resched() loop csky: entry: Remove unneeded need_resched() loop h8300: entry: Remove unneeded need_resched() loop microblaze: entry: Remove unneeded need_resched() loop MIPS: entry: Remove unneeded need_resched() loop nds32: ex-exit: Remove unneeded need_resched() loop powerpc: entry: Remove unneeded need_resched() loop RISC-V: entry: Remove unneeded need_resched() loop sh: entry: Remove unneeded need_resched() loop sh64: entry: Remove unneeded need_resched() loop sparc64: rtrap: Remove unneeded need_resched() loop x86/entry: Remove unneeded need_resched() loop xtensa: entry: Remove unneeded need_resched() loop arch/c6x/kernel/entry.S | 3 +-- arch/csky/kernel/entry.S | 4 ---- arch/h8300/kernel/entry.S | 3 +-- arch/microblaze/kernel/entry.S | 5 ----- arch/mips/kernel/entry.S | 3 +-- arch/nds32/kernel/ex-exit.S | 4 ++-- arch/powerpc/kernel/entry_32.S | 6 +----- arch/powerpc/kernel/entry_64.S | 8 +------- arch/riscv/kernel/entry.S | 3 +-- arch/sh/kernel/cpu/sh5/entry.S | 5 +---- arch/sh/kernel/entry-common.S | 4 +--- arch/sparc/kernel/rtrap_64.S | 1 - arch/x86/entry/entry_32.S | 3 +-- arch/x86/entry/entry_64.S | 3 +-- arch/xtensa/kernel/entry.S | 2 +- kernel/sched/core.c | 7 +++---- 16 files changed, 16 insertions(+), 48 deletions(-) --- 2.20.1