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 2EC79C02194 for ; Fri, 7 Feb 2025 17:07:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89F7F6B0088; Fri, 7 Feb 2025 12:07:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8778E6B0089; Fri, 7 Feb 2025 12:07:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 717E76B008A; Fri, 7 Feb 2025 12:07:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 54C296B0088 for ; Fri, 7 Feb 2025 12:07:39 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 4DB6BA1D71 for ; Fri, 7 Feb 2025 17:06:58 +0000 (UTC) X-FDA: 83093778516.28.CA195C1 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf03.hostedemail.com (Postfix) with ESMTP id 9A82F2000B for ; Fri, 7 Feb 2025 17:06:55 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=i4RuBrvr; spf=pass (imf03.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738948015; h=from:from:sender: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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YX0Ta551pNoazXrou1rxJx7Jk32CWnG6aaI06lzcMPk=; b=06yat4v2/iwl4/XajILN4j9sKck2bLnFW63EijJOZvbPrk8cySITmhMnkE0oGR8ej2K7wh fsIil6F6n+oJkbXMFfC4ApOyJgq7aq6Uj5wDX451CxQqfah7WbIr6c+gkshNa3pJCOxYz1 dYAwDmW58zNtWOSwORMZkoSDfrWez8s= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=i4RuBrvr; spf=pass (imf03.hostedemail.com: domain of vschneid@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738948015; a=rsa-sha256; cv=none; b=BKZh3KUBKRUMjf2wJ6JD2tsqviOq2hrwXNG13+xH9QSzNO/BFap9h4g5zFbRR5IJunWSv6 F8+wj++2kCkiXY7rIAhzzjmBjqsqRjrmGRa4bF2A1oGY6LCEuec0NeBXctB8VngRMgWKJB RnYpCcsTbDgVanInYTeUKGEISWW+0UY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1738948014; 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: in-reply-to:in-reply-to:references:references; bh=YX0Ta551pNoazXrou1rxJx7Jk32CWnG6aaI06lzcMPk=; b=i4RuBrvrqyZc449LyajITzX67djMhVI+bqm4bwMzq+A5h8Y8oHg0zfgvngReWRRok1TI4h y1v/njZ4/VRn4yrUJS9kQGIC8d4Vx4/Z9wi4V+AviU8hjLJr6tM5hjiomgyUZTKXPJijuL eqAl59Jgvu52k7Ln4Ojbf782CFouUAE= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-83-yr0Jc4lQNpGNqwA_s5kg6Q-1; Fri, 07 Feb 2025 12:06:52 -0500 X-MC-Unique: yr0Jc4lQNpGNqwA_s5kg6Q-1 X-Mimecast-MFC-AGG-ID: yr0Jc4lQNpGNqwA_s5kg6Q Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-38daf7d2d1cso1030823f8f.3 for ; Fri, 07 Feb 2025 09:06:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738948011; x=1739552811; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YX0Ta551pNoazXrou1rxJx7Jk32CWnG6aaI06lzcMPk=; b=Z7cj2969I4Xco4P1LLOkvv/vR1bpzShzbK6QPmgRJ9q+lfSy6jZeYR74eBalrY0vY8 izfFLZ/TUVyj+++yJforUklKUry3SrPk5WBe3Ro8NxFpq2T+O5mFSjGCcc0cNlkk6wqR tJE7wd/FW6Wqai0F/K8C5wxvhaNWG2NfLR4is599r+FgHe7WCKCJnHVYwfoN4xCVvuQ/ RlhGcOHOMVNrQRB9HDQzgsrvPmitPcW/+wnT2eMSNKEngN3gZ7K60DXw02N3bMLmnapS YtHNq7hHPhchT/F3fvlSS1qJDnjMgQ3PjJ3C29wsU2epiCPiEsROJsmyuDci64LmdIss 2uOA== X-Forwarded-Encrypted: i=1; AJvYcCWRrQ+Qg1a6U+7P+3EaIKaWYWbqXavPGxZKzzELiDCXHWwKHVeB3gC1ijXVn81Tc2q3ZqhhMRySzQ==@kvack.org X-Gm-Message-State: AOJu0Yw59pGKWN4YJ7YzGn53qXYwhDd0Cnu7+EwuNCjylqIeAs96j2jL OPEfjVoKR63pjJzN1yPwFkmCsPq/abdZqO6rMphHPZbVK0Ez808uKTJY84ngxIp/HqyDae6wmt8 p2IS+rENQbOjV9+yTW5z/EFHUIhyZIgD655eP7YJdDoXKDCJm X-Gm-Gg: ASbGncsHS3bLZePMZl9z5F86VZ8JVBwUjy2pjMDrUqQPrkC5lGGzd3CNPCHwK6D8bLP aUQ46FWeUTUeoLyHUmh8tGBciYKBrv/X22NDzhWnMP1lTqWs/arK1aCofW7KuxT6LcZbU7CW/Me L/KT/a+CufXKqPyaTQYdpb0PqzbSNhYv1YHMDa80SNzd2ohQ1Ty+rFCkKjELXBUBsvmJQAYR5Ve +p+rrJ3qrtcUwhgo6TKJ7Wx8+ER+0hShWrKG1E82v7JFf/olD3SKwKH+iWMSE+hzz/DPURsRvMZ fZyc/2cEu3ZMB5l8/kPDPiT40vO5oXsPur4JB/Y5zhHT9CQMPq4pS2YPzrE9If6sPA== X-Received: by 2002:a5d:638d:0:b0:386:5b2:a9d9 with SMTP id ffacd0b85a97d-38dc9497d11mr1923946f8f.53.1738948010991; Fri, 07 Feb 2025 09:06:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IEOdkgTDMixdzesAbzZ6LQT5F1eKCI9U7dpB+ZFF0HwYFgHj2Fc571j17/M7jlf73QfQ/8NiQ== X-Received: by 2002:a5d:638d:0:b0:386:5b2:a9d9 with SMTP id ffacd0b85a97d-38dc9497d11mr1923876f8f.53.1738948010215; Fri, 07 Feb 2025 09:06:50 -0800 (PST) Received: from vschneid-thinkpadt14sgen2i.remote.csb (213-44-141-166.abo.bbox.fr. [213.44.141.166]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4391dca0041sm59887155e9.14.2025.02.07.09.06.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2025 09:06:49 -0800 (PST) From: Valentin Schneider To: Frederic Weisbecker Cc: linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux.dev, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, linux-perf-users@vger.kernel.org, xen-devel@lists.xenproject.org, kvm@vger.kernel.org, linux-arch@vger.kernel.org, rcu@vger.kernel.org, linux-hardening@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, bpf@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, Juergen Gross , Ajay Kaher , Alexey Makhalov , Russell King , Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Paul Walmsley , Palmer Dabbelt , Albert Ou , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , "Liang, Kan" , Boris Ostrovsky , Josh Poimboeuf , Pawan Gupta , Sean Christopherson , Paolo Bonzini , Andy Lutomirski , Arnd Bergmann , "Paul E. McKenney" , Jason Baron , Steven Rostedt , Ard Biesheuvel , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Juri Lelli , Clark Williams , Yair Podemsky , Tomas Glozar , Vincent Guittot , Dietmar Eggemann , Ben Segall , Mel Gorman , Kees Cook , Andrew Morton , Christoph Hellwig , Shuah Khan , Sami Tolvanen , Miguel Ojeda , Alice Ryhl , "Mike Rapoport (Microsoft)" , Samuel Holland , Rong Xu , Nicolas Saenz Julienne , Geert Uytterhoeven , Yosry Ahmed , "Kirill A. Shutemov" , "Masami Hiramatsu (Google)" , Jinghao Jia , Luis Chamberlain , Randy Dunlap , Tiezhu Yang Subject: Re: [PATCH v4 22/30] context_tracking: Exit CT_STATE_IDLE upon irq/nmi entry In-Reply-To: References: <20250114175143.81438-1-vschneid@redhat.com> <20250114175143.81438-23-vschneid@redhat.com> Date: Fri, 07 Feb 2025 18:06:45 +0100 Message-ID: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: tNE-DrcFg6OmSgjnfiM3feXGDsazpG7FOgbi_Z1gFZ4_1738948011 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Rspam-User: X-Rspamd-Queue-Id: 9A82F2000B X-Stat-Signature: ejyzhs8i37hkw67nh9wye8geisaha9qn X-Rspamd-Server: rspam03 X-HE-Tag: 1738948015-160579 X-HE-Meta: U2FsdGVkX1+sFlMmn3XoT9ug8GJoAep3/I11h1bkgaOwFmxe5JzO/fHWHluU4Qc/WJj0yEEtkE7XhCrVx08Si6gogjmDjBJhKMNR+SBxZ3qADeDYjNM04l1C6mGAszquYAXP18rHXknT2Tr4lA0UuJALnMuTQzpDI6oAcZ3qhBwPaimD4FH3w9SYlOr1Z/WVycpIfIiYN5vhPBvHNLz1OI5eBvxDybPXYp+1G53LtRIRlG+fVVmwupyDuXBrM+FBR5U5jy503wS/aAGH/1aGmURNi4UrnY4Ye1zoSfJ7l8lcFsuNJN8NFiQUxjTft1CdcAUR229DEQ+5M5dvLsbFawlcpkL7kAw1VzNXReuiU1fiwn3SMNI556JGF4OLKhHxC8pWeul0w7eMHw3SjfPWcUkB7mB+0sGchFBN80aEZWPI7+m6dS5mi9rMoDsb09mgWN0Tqj7/hJOWFrfLtorgYu64g2oXZDn0ykTYcxTbryvR7m1NyEeGVoCJIoTrJYqV7ugiYBDGfAFl+JQiNg4dtToLed7iJoHwVbgCNSVTMVJJkfiMhZK0TZKVz1l044zyvEHjCMdXKBRx8oZtQtn4HbbcDb+FZRbluBJc8AqZ494Cr0m4EVJwJVzYr485ZDiJ0PzCR2KMfpvdivLg06hFUGMBtv7mYWQHREyCqlx/PMa7hAEZ0FrfL05tzHZIEXSK7zJk/5WyZcQHIWW+sBLjAv3f2mPa8HQBXmZWV723EOe8WIv4/iuTHe4HR4oMAlWKyu5gUQFeq4qp7aywP87lHNFg06jJ5Ni60hBLqHOGkABUkRDT94/QcgknWCS93bxyF9bIPxKfRh9rodlCeiRzFUfuct/KWYhHPPhbDULdUIxVKlqXu2KNEsjSrTpfzv1jV7iEA4Nsdu02yEqeaDEJgwED7W5azgtqA1V7seaAweKutSCnlDaUBgMf4XLKAZ6vvDvmwU/htysZl+5aByw kr3dB/kY zh5+szMp1MrQ6tXZuFriF6Ut6L67ca9KrdFwVu9YBtSoqM6I7d5K900l2e5a8WDV366C+AFEZdncUrfWOo81E7XTQeHkzZR+erqPU5HkWmY7gvvNBd75yM1EdB+Ai7OPI2bQpTDxBYLKmnpDCAbWOhjHN08uXzHw3g128isk1YbZ5LLlWCUbMEXQXndPjRGSAH/AUGQavBguTdYXm3zEZDw+zjy9YTP6MqJoWoNzgFIegA4koklwA8EiMcWFfDuWTZ9XMNOwwVSGtiEvqOXxxtK7/ACcjz+9QRPtYw3BbgjYZrg/fhu/RUDnpZ3RaB12sKZypqIvT5e6/2FtKhqDHgEL4mpEDqHSs8nGIvaNOnlhqGJvCyOBPx/4V5cFPJf4fHhtWNJmMYJYOofCkn0MriT23y18P2R7JBR1dXxm4z5ppkyE= 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: List-Subscribe: List-Unsubscribe: On 27/01/25 12:17, Valentin Schneider wrote: > On 22/01/25 01:22, Frederic Weisbecker wrote: >> And NMIs interrupting userspace don't call >> enter_from_user_mode(). In fact they don't call irqentry_enter_from_user_mode() >> like regular IRQs but irqentry_nmi_enter() instead. Well that's for archs >> implementing common entry code, I can't speak for the others. >> > > That I didn't realize, so thank you for pointing it out. Having another > look now, I mistook DEFINE_IDTENTRY_RAW(exc_int3) for the general case > when it really isn't :( > >> Unifying the behaviour between user and idle such that the IRQs/NMIs exit the >> CT_STATE can be interesting but I fear this may not come for free. You would >> need to save the old state on IRQ/NMI entry and restore it on exit. >> > > That's what I tried to avoid, but it sounds like there's no nice way around it. > >> Do we really need it? >> > > Well, my problem with not doing IDLE->KERNEL transitions on IRQ/NMI is that > this leads the IPI deferral logic to observe a technically-out-of-sync sate > for remote CPUs. Consider: > > CPUx CPUy > state := CT_STATE_IDLE > ... > ~>IRQ > ... > ct_nmi_enter() > [in the kernel proper by now] > > text_poke_bp_batch() > ct_set_cpu_work(CPUy, CT_WORK_SYNC) > READ CPUy ct->state > `-> CT_IDLE_STATE > `-> defer IPI > > > I thought this meant I would need to throw out the "defer IPIs if CPU is > idle" part, but AIUI this also affects CT_STATE_USER and CT_STATE_GUEST, > which is a bummer :( Soooo I've been thinking... Isn't (context_tracking.state & CT_RCU_WATCHING) pretty much a proxy for knowing whether a CPU is executing in kernelspace, including NMIs? NMI interrupts userspace/VM/idle -> ct_nmi_enter() -> it becomes true IRQ interrupts idle -> ct_irq_enter() -> it becomes true IRQ interrupts userspace -> __ct_user_exit() -> it becomes true IRQ interrupts VM -> __ct_user_exit() -> it becomes true IOW, if I gate setting deferred work by checking for this instead of explicitely CT_STATE_KERNEL, "it should work" and prevent the aforementioned issue? Or should I be out drinking instead? :-)