From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A1B3C433F5 for ; Mon, 24 Jan 2022 10:07:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B25596B0088; Mon, 24 Jan 2022 05:07:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AD6B76B0089; Mon, 24 Jan 2022 05:07:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C3B76B008A; Mon, 24 Jan 2022 05:07:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0144.hostedemail.com [216.40.44.144]) by kanga.kvack.org (Postfix) with ESMTP id 8BEC26B0088 for ; Mon, 24 Jan 2022 05:07:16 -0500 (EST) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 4BCD98249980 for ; Mon, 24 Jan 2022 10:07:16 +0000 (UTC) X-FDA: 79064752872.22.8754FAA Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf24.hostedemail.com (Postfix) with ESMTP id E6C9718002D for ; Mon, 24 Jan 2022 10:07:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=rGu/cVWqjKbmzWm5z1cUS5DKdCStpKhIQFvlPXr3oH8=; b=CwKvv+au3sSLPXpQy/TCrZHQxU y7J6x6rF3K+Ea/cuj5iosEJNVPaaD/mPPNaCKdy/qC5EzvZromUcN2uO1yDJ+Dn0mm6/O0aydVD1D 551ijFJi6+hIWWhXTayb+4OrSC4ht5ZjSWD5NreEEFg/2LuALzbFg2WCIPSMlBQidHcLDirOzMNv0 c39rSxzScRcI8rEvzqrmX9BC4x9oaF9adr0bjyTSSVa6+71Ulcbpwf1H56PsRuNp+rHrkbXuALn+p noONmub4xKIE2/UcTrfJkMQXXMbT7uPYl6VJliu6Vm/YfrckXv+ZdvAHyxwvQ5VDJBRoMOFqoUUvE gDZkOYRA==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=worktop.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nBwFd-0038Lz-2D; Mon, 24 Jan 2022 10:07:05 +0000 Received: by worktop.programming.kicks-ass.net (Postfix, from userid 1000) id A2863986245; Mon, 24 Jan 2022 11:07:04 +0100 (CET) Date: Mon, 24 Jan 2022 11:07:04 +0100 From: Peter Zijlstra To: Mark Rutland Cc: mingo@redhat.com, tglx@linutronix.de, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, x86@kernel.org, pjt@google.com, posk@google.com, avagin@google.com, jannh@google.com, tdelisle@uwaterloo.ca, posk@posk.io Subject: Re: [RFC][PATCH v2 5/5] sched: User Mode Concurency Groups Message-ID: <20220124100704.GC22849@worktop.programming.kicks-ass.net> References: <20220120155517.066795336@infradead.org> <20220120160822.914418096@infradead.org> <20220124100306.GO20638@worktop.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220124100306.GO20638@worktop.programming.kicks-ass.net> Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=CwKvv+au; dmarc=none; spf=none (imf24.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: E6C9718002D X-Stat-Signature: yhknpto9447togc31bnfpojrr4phmsii X-HE-Tag: 1643018835-769784 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Jan 24, 2022 at 11:03:06AM +0100, Peter Zijlstra wrote: > > Either way, it looks like we'd need helpers along the lines of: > > > > | static __always_inline void umcg_enter_from_user(struct pt_regs *regs) > > | { > > | if (current->flags & PF_UMCG_WORKER) > > | umcg_sys_enter(regs, -1); > > | } > > | > > | static __always_inline void umcg_exit_to_user(struct pt_regs *regs) > > | { > > | if (current->flags & PF_UMCG_WORKER) > > | umcg_sys_exit(regs); > > | } > > Would something like: > > #ifndef arch_irqentry_irq_enter > static __always_inline bool arch_irqentry_irq_enter(struct pt_regs *regs) > { > if (!regs_irqs_disabled(regs)) { > local_irq_enable(); > return true; > } > return false; > } > #endif > > static __always_inline void irqentry_irq_enter(struct pt_regs *regs) > { > if (arch_irqentry_irq_inherit(regs)) { > if (user_mode(regs) && (current->flags & PF_UMCG_WORKER)) > umcg_sys_enter(regs, -1); > } > } > > Work? Then arm64 can do: > > static __always_inline bool arch_irqentry_irq_enter(struct pt_regs *regs) > { > local_daif_inherit(); > return interrupts_enabled(regs); > } > > or somesuch... Ah,.. just read your other email, so your concern is about the user_mode() thing due to ARM64 taking a different exception path for from-user vs from-kernel ? I don't mind too much if arm64 decides to open-code the umcg hooks, but please do it such that's hard to forget a spot.