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 EC262C02185 for ; Fri, 17 Jan 2025 09:54:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7DC296B0088; Fri, 17 Jan 2025 04:54:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 78BE76B0089; Fri, 17 Jan 2025 04:54:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 605446B008A; Fri, 17 Jan 2025 04:54:24 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 42C7D6B0088 for ; Fri, 17 Jan 2025 04:54:24 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id CA587161872 for ; Fri, 17 Jan 2025 09:54:23 +0000 (UTC) X-FDA: 83016483606.02.8025ABA Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf26.hostedemail.com (Postfix) with ESMTP id 6F6D1140007 for ; Fri, 17 Jan 2025 09:54:21 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LE8U3DmT; spf=pass (imf26.hostedemail.com: domain of vschneid@redhat.com designates 170.10.133.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=1737107661; 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=L9Oe7BkLz3ZQnhnrUC9eWHjE3nyj6wgCJoWV2O/5t40=; b=Uq3w4HFB3MFpp2UoUzrOkPxkCPQNA/zzlIKA5P16G4ssEXSmn4oJhp5hqUEU/4UGrh3J7B X5UPgRRQZIoW3SAq/tcpYMJjC0GhZeqPhsFauYv7FzNkZpeHH6XzujRb02tXWYe0dEUi8a taUg11R/eVqXNBSHSVZBEy4aKUCCalA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737107661; a=rsa-sha256; cv=none; b=h8WYxY4als6IF60d5lkKOfEe/7QDwoI8T+Aem16cBzlLd5S4aceMdrqSIlKU3doJbPVx1i kIGkyLYiQFd02E1zBP5AfIoQACmy8pYIt/JJOv2Vc4NmWA9YNu5nFvzyhbL/0mW2cfD6oe aoweqFBVJtpsgtlCMDrGPMHdJBuig+g= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=LE8U3DmT; spf=pass (imf26.hostedemail.com: domain of vschneid@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=vschneid@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737107660; 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=L9Oe7BkLz3ZQnhnrUC9eWHjE3nyj6wgCJoWV2O/5t40=; b=LE8U3DmT3gzpsSVFq0G5WDH9SYgbFj6TVLii4ma06aBuEWYVYd2eJNuxPkNLvfsYiqJuu3 SaD/zTjPzp/QiCEAsfHKsreZ/8YCg/VmwgRRQJ/eh+c2PIGcZaqG9z/hNRVmWS1ohVGyie d/a/zXCy9UjF3/6QPXwk8EnEFj9v3vA= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-630-SN5gbLtdOF2XLIQiem0lzA-1; Fri, 17 Jan 2025 04:54:16 -0500 X-MC-Unique: SN5gbLtdOF2XLIQiem0lzA-1 X-Mimecast-MFC-AGG-ID: SN5gbLtdOF2XLIQiem0lzA Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-43628594d34so9636495e9.2 for ; Fri, 17 Jan 2025 01:54:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737107655; x=1737712455; 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=L9Oe7BkLz3ZQnhnrUC9eWHjE3nyj6wgCJoWV2O/5t40=; b=PMsNp//RNYgRgmgBkyBGLk1hhYQumhMvonR90NP1myWDOF0FbDdqlDcz9NnPS2ih0n WYHcnhKzpGYKmoi/n7DPqwSE35EFqIh/v/XYNPKFW5BSUn97YLmvOA6H38uT8rvrNE3a P4yljMWZPwRMUz9Q0iBFD5SC4lgjQM/wa1rndPRdzjXtZ44MKc80uL2xBXwZtyF9HC0U Y3UMFePTvTuajmhjFfpMPtZMHE4c4TkdhbIFWso6g2OQ4Ri8LKE5iGomW1k70l1+0rsC UDtF/o3JmuqHjy9M4SbXoJInaqSMLT/AE35Byk1hZwIdFCc3j1UhLjiL2nSPiXbF7MVZ braQ== X-Forwarded-Encrypted: i=1; AJvYcCWIDkqiY91Arln42oXJv/lpJg+Agub8/EXef83C3T64Ytbl0QHzuGdyWPFgvAkG5YbtWI3WQordbg==@kvack.org X-Gm-Message-State: AOJu0YxpaEZHHlhPuZWqyJdcE8K5iClkLvVOFDpZ+B6MTYA7W6Gil5Lb xCKeHbur1QOLPhbpGCDGErqyUmgeji+ABSJAVGA5r9IszKxVXHp/HVO8PMYcdxH3aZYssimJNOF S30Ymdgcn1cUhwIyIm8GmY1qFgB6O1dD2w6pquitR7+pHmVPM X-Gm-Gg: ASbGnctUkSSA3+8EYniWr25ymI5TacMJHrniyV13hsqg89vjADRl+IEY+pG0yLbSWDP QhUQ1yRtMYQPyL/FNiJkp1JOkRyjpNFYT12sv2dQLy2KmYy6INxM6NIqdi/Zmp4aW+fCZUY9gEH CF+u26BFgalkjo6ZNK0Pra3ktVplM4UHTBtS7xf6tag7rePKLjprvz+gGc+8AG+wSsntzpivzNh hv+FgSAWytMdVPCn82m6MxnTs4J4X9vuh7UtSgyibGqaZoVQM0Kezedb1i0nhONMEo5yf7N7N9w jtvV72L17G9KWXGpW+PVzt6YFbmALl7ypmwLWCCa/w== X-Received: by 2002:a05:600c:450d:b0:436:840b:261c with SMTP id 5b1f17b1804b1-438914340afmr16339925e9.19.1737107655101; Fri, 17 Jan 2025 01:54:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IFuw6rUkDZiEIMePly7ic4RGfvY46wjcWihk2kMpcZz3D30VqRFOYeHlJ+bekZM5WnBbSAhfQ== X-Received: by 2002:a05:600c:450d:b0:436:840b:261c with SMTP id 5b1f17b1804b1-438914340afmr16338925e9.19.1737107654599; Fri, 17 Jan 2025 01:54:14 -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-43890420412sm28393455e9.18.2025.01.17.01.54.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jan 2025 01:54:14 -0800 (PST) From: Valentin Schneider To: Sean Christopherson 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, Peter Zijlstra , Nicolas Saenz Julienne , 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" , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Boris Ostrovsky , Josh Poimboeuf , Pawan Gupta , Paolo Bonzini , Andy Lutomirski , Arnd Bergmann , Frederic Weisbecker , "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 , Geert Uytterhoeven , Yosry Ahmed , "Kirill A. Shutemov" , "Masami Hiramatsu (Google)" , Jinghao Jia , Luis Chamberlain , Randy Dunlap , Tiezhu Yang Subject: Re: [PATCH v4 25/30] context_tracking,x86: Defer kernel text patching IPIs In-Reply-To: References: <20250114175143.81438-1-vschneid@redhat.com> <20250114175143.81438-26-vschneid@redhat.com> Date: Fri, 17 Jan 2025 10:54:11 +0100 Message-ID: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: C5V_rZ76R69i6pjm4UkCJzqIkq633sGOUWFdvfY9bxE_1737107655 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Stat-Signature: dyatp91ieoxi5r5xhuoidmu95sijfou6 X-Rspamd-Queue-Id: 6F6D1140007 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1737107661-637047 X-HE-Meta: U2FsdGVkX180vcfWy79/iVPwOvZ/8aU89q1/jiBHT3JvHcROtLLCVMIi2sOV6ZpiYE8eCip4IIBeGpaVJw8cSJagMZgh0PFvpYpB1lOg2n0GxUPu09siee4d20EAtEUxI9rkuOV8FwzkvPAGljGX1TKpLgpCDobPVViNYfOlNR3hZnRkqvWyMM/C2lwUxtLAwHOK3FJxnljvhq6G20maLRB9Ef1xen2bG/YwelZAeHdndrCyizp0MWPMVdQOnBtMhCTcprhJjXaWGmygPIu8bxGPh6KSGK59eo1IbpFGa1W3I585EwAma2rFpGv+wc/WhbAhF2+HhQu49FGrLda9XO6aomngeueZ51Th5WWHIw5Sc/sYkv+qUoFoTwlFvSGKJJWEf5wVEO3UIM854By0GnG5AY19oDV1CV5NLPvSRM9Ns6XwH2PlUf0IVI8PMkJmdA0Qi+0MY+pZl4nB1Vae1WRNhBvoPq/AU/SW8QjQZ4lzGbJG21NIjK6wuTb+Cz1CgzohnXqycAnc+Fs4m03AAGOQlIgWCHWy3zaytvDiS8SMy7pvx4zsEakqL3bgb89y5eeM9SYizWtpvV/g+OkyY6GZtEVwZz35gAeUU38ezq9Dg4MUX7p54G3K5TqcDSbeagWLa34wRCmHhDGZCuvjAlsRqIW5hZdn5N+P3D81158Od/+vUc/FoC4hDY0H/9RVcBnI/YyQqZOrEfEIVsZpV2SAS+EKzpkjO48b+4+aezNy+siLKVqfVVV7JNZReztfv0WSX4yH0wDUQRRYJ4tlI/BNrG3hFMmy3hOO3arb6RZIK/xoTTerHMfhyQpMBpj+GukDJd2+ck/y66YUmklO9umqN3ar3R1SqRvD1OE/7/ZAx+pRkfYxgE8uw6lj4xMHGXbkHbzaD3ofVnA6MyLbDTYgQiDdIaFDDWst9ccH6NkoKsfkeNhgR7FtNGaP8KfD6KWUDXOBeJmJ/fsYdd1 HG04Mdgc yq0XXj7ufF4Hc9mT1WS3IAYnt2Sk97sPsBY2jcPu/2tSpftSatLC0OWi2I9UUjw+ilUcyKprQylKdzQT0z+V9SVqZsuJYowaUHwkt87Ze13MOgvxEflp6R6QPF1H+mQWAyikk8r9DQAAayQBzvwXXfo8XDHncKiYypKNTHUb7S6tz/bVEjZkgfY9saxwysiFixrTlMiA3ZcVm3P74Zy474NyNyLVrAmdoyV1psX1mo2Fh7e3m0ThUKsfIvJ6SbYPcHbv9CaV5Niec0XdLqcn+jMVFXVOo9Cd23t+x7Y266koHDNn8VImdJ3xyXDmTWlzkbwtR3d+liowGoF5myQlI/EHKF2MUCJMQ2O870lrkJSIOyHNgSDIZHYwzkhZMauU5ZMvzU/iM20qXA6pPmCboyupEq6K8Mxt4gM4ZSLX+TRoFLx4/UgSYx0xQa/nb7FCmx+j2v5eMcGZFnYkV/jknlkduq1SK928kyeQc 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 14/01/25 13:48, Sean Christopherson wrote: > On Tue, Jan 14, 2025, Sean Christopherson wrote: >> On Tue, Jan 14, 2025, Valentin Schneider wrote: >> > +/** >> > + * is_kernel_noinstr_text - checks if the pointer address is located in the >> > + * .noinstr section >> > + * >> > + * @addr: address to check >> > + * >> > + * Returns: true if the address is located in .noinstr, false otherwise. >> > + */ >> > +static inline bool is_kernel_noinstr_text(unsigned long addr) >> > +{ >> > + return addr >= (unsigned long)__noinstr_text_start && >> > + addr < (unsigned long)__noinstr_text_end; >> > +} >> >> This doesn't do the right thing for modules, which matters because KVM can be >> built as a module on x86, and because context tracking understands transitions >> to GUEST mode, i.e. CPUs that are running in a KVM guest will be treated as not >> being in the kernel, and thus will have IPIs deferred. If KVM uses a static key >> or branch between guest_state_enter_irqoff() and guest_state_exit_irqoff(), the >> patching code won't wait for CPUs to exit guest mode, i.e. KVM could theoretically >> use the wrong static path. >> >> I don't expect this to ever cause problems in practice, because patching code in >> KVM's VM-Enter/VM-Exit path that has *functional* implications, while CPUs are >> actively running guest code, would be all kinds of crazy. But I do think we >> should plug the hole. >> >> If this issue is unique to KVM, i.e. is not a generic problem for all modules (I >> assume module code generally isn't allowed in the entry path, even via NMI?), one >> idea would be to let KVM register its noinstr section for text poking. > > Another idea would be to track which keys/branches are tagged noinstr, i.e. generate > the information at compile time instead of doing lookups at runtime. The biggest > downside I can think of is that it would require plumbing in the information to > text_poke_bp_batch(). IIUC that's what I went for in v3: https://lore.kernel.org/lkml/20241119153502.41361-11-vschneid@redhat.com but, modules notwithstanding, simply checking if the patched instruction is in .noinstr was a lot neater.