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 B3FF3C41513 for ; Tue, 25 Jul 2023 17:41:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D76C88D0001; Tue, 25 Jul 2023 13:41:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D27236B0074; Tue, 25 Jul 2023 13:41:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC7E88D0001; Tue, 25 Jul 2023 13:41:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id ACB586B0071 for ; Tue, 25 Jul 2023 13:41:38 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 6DF56A0EA7 for ; Tue, 25 Jul 2023 17:41:38 +0000 (UTC) X-FDA: 81050851476.20.88215E4 Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by imf14.hostedemail.com (Postfix) with ESMTP id 53CF210000A for ; Tue, 25 Jul 2023 17:41:36 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=joelfernandes.org header.s=google header.b=e5ID1UqX; dmarc=none; spf=pass (imf14.hostedemail.com: domain of joel@joelfernandes.org designates 209.85.160.180 as permitted sender) smtp.mailfrom=joel@joelfernandes.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690306896; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=WJvVodEb8nnJEl20cUTyJdImyktiXScfem+69qgqo3Q=; b=YsFLLO8s1vHBr6bxPX3Yz632wPxneh4UdqzR478Zh4B/snOfwqePUp+Wkdlup+6vMAxVWr kVwz6Jm4trMhy5xXneVRHipsUk1ZpzSJMF1Z3HCGQ7gHM6LbSSOOaN7MGmN2kXjNljyjFi 2zqjoPiaQV6o28tiAxp18vBebBVLCQg= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=joelfernandes.org header.s=google header.b=e5ID1UqX; dmarc=none; spf=pass (imf14.hostedemail.com: domain of joel@joelfernandes.org designates 209.85.160.180 as permitted sender) smtp.mailfrom=joel@joelfernandes.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690306896; a=rsa-sha256; cv=none; b=cBdGyKU4h6Q7iAdZNJ8V42x5tjG9j6wavNuZEzOlxPciVFuDTcnE++OLtfZFlo/IRedJxV zqfKc19RRCTdFvNFEzj60zDJ9lv5grmX+a0tcuFQOidrHgOEnC/JgVteUbF0Y61X3SCXqg n3bS+DIN1gxEQe+LkbgJQeTUyALSDs4= Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-403ea0a50f7so44449021cf.1 for ; Tue, 25 Jul 2023 10:41:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; t=1690306895; x=1690911695; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=WJvVodEb8nnJEl20cUTyJdImyktiXScfem+69qgqo3Q=; b=e5ID1UqXliZ+Zyl9RyCsKE4cEfBV1Yk3CrsZNrSv5V3zn6E8LT99TL1D17Nwe6Lqiv nW/9bnXAFTLNnHj1mEGcktsTtyeTL09GQF65dj1XCRs8uhbyeGqbtPrqeu2zjjCtPw6E CGqFZ4KvpaNSKdpjWcT/8chMGtdRtPBD4m7d8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690306895; x=1690911695; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WJvVodEb8nnJEl20cUTyJdImyktiXScfem+69qgqo3Q=; b=eAeZulxFqEnbfgGoHcvANgyo6iU432OHw21wvFzrzsD2zJiqtVwaDFLhDvf1QVH1xL 4EQElAaZEcMPpcfNGI3xjh7Sl8nLqxlU13eeIW+4imCj6DlRzfL3FFNPAAXyxJ5ihOAn QUdmsQGl/JDnUlLx6LaY7VDgXpXJi/4XU7urdWxVxvhuFt06Q59Bdw28xLq7PUlAYfgS xb+3egI755k2efEYX5/iG+oR8qscAL8wRZ3tm7GaC8BSrHy4XS+pZk4AOaeO3rEEamRK J6YQVMQlA1d1USbWEnxMDAgVrFWQaYxinMFjc2XzE3s9XY3hz9Mni3NL54DTZJ4m+5gB d8Lg== X-Gm-Message-State: ABy/qLZEtOPtD9T8Ee9rDcT8wbD2x0RuGuRm+AsqbSeWBgN3MGU/TWmY cKLfSEkX7zMFA1c6EXwVe8iwrA== X-Google-Smtp-Source: APBJJlHBHpNnHoYZv15+3LbjPWhNhvppPgE8W+pmrg9pYJauopPMXA+KIqGV321IR1oTEDcTpImI2Q== X-Received: by 2002:a05:622a:1742:b0:403:b6a9:b8f9 with SMTP id l2-20020a05622a174200b00403b6a9b8f9mr3981171qtk.36.1690306895263; Tue, 25 Jul 2023 10:41:35 -0700 (PDT) Received: from [192.168.0.198] (c-98-249-43-138.hsd1.va.comcast.net. [98.249.43.138]) by smtp.gmail.com with ESMTPSA id z4-20020a05622a124400b004054b7cc490sm3480130qtx.73.2023.07.25.10.41.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Jul 2023 10:41:34 -0700 (PDT) Message-ID: <1e254a35-d0c2-8d41-f020-21694945911a@joelfernandes.org> Date: Tue, 25 Jul 2023 13:41:32 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [RFC PATCH v2 18/20] context_tracking,x86: Defer kernel text patching IPIs Content-Language: en-US To: Valentin Schneider Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, bpf@vger.kernel.org, x86@kernel.org, rcu@vger.kernel.org, linux-kselftest@vger.kernel.org, Peter Zijlstra , Nicolas Saenz Julienne , Steven Rostedt , Masami Hiramatsu , Jonathan Corbet , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Paolo Bonzini , Wanpeng Li , Vitaly Kuznetsov , Andy Lutomirski , Frederic Weisbecker , "Paul E. McKenney" , Neeraj Upadhyay , Josh Triplett , Boqun Feng , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Lorenzo Stoakes , Josh Poimboeuf , Jason Baron , Kees Cook , Sami Tolvanen , Ard Biesheuvel , Nicholas Piggin , Juerg Haefliger , Nicolas Saenz Julienne , "Kirill A. Shutemov" , Nadav Amit , Dan Carpenter , Chuang Wang , Yang Jihong , Petr Mladek , "Jason A. Donenfeld" , Song Liu , Julian Pidancet , Tom Lendacky , Dionna Glaze , =?UTF-8?Q?Thomas_Wei=c3=9fschuh?= , Juri Lelli , Daniel Bristot de Oliveira , Marcelo Tosatti , Yair Podemsky References: <20230720163056.2564824-19-vschneid@redhat.com> <6EBAEEED-6F38-472D-BA31-9C61179EFA2F@joelfernandes.org> From: Joel Fernandes In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 53CF210000A X-Stat-Signature: hrnjd1wuyjoq1be9mkdqgqj7uu7oy9hp X-HE-Tag: 1690306896-588947 X-HE-Meta: U2FsdGVkX18EX9/+qBAvT6vgxvEpFOWBkbI05kpMv4Yefe5wkP2aNA2V6BlE4li8TUlYbQAOYf3WeTHQsOZ7SQs8eWB1rftK0Fne3UFImQYtu/Whfi+KVQ5NKUPq5vQaELlpcG4uOGW1sXus0rlOSK25TSGnpIT8TvhW1NQI45S8Tsz9afSF82CWjO+Ai3b0XMX2hoSErY8l2pp5HIgB5cErEqusA2zkLA+fo4b+DZdWSIHRsTg3jdFnVEazAzkGUQo1jFLPMZPdG8mSwtJd1CxvoGr1ykGQwQEKs1Zj1dbXPb4yP3tTTlioS4wwVgPF7uz80nDZx9uPGaZ9JjAqBQlgK6HGz+RO/eL6ZOOE1hJ9PBtVTgbhemoZ54iKwL9t0rh9FDFgBGWp/WRI2Tt9RXbc4TTJYkRIIXwhKYBejhyvyJSDwQq8A8z2NIsgPOI8HzIY1Hkazw/hsEo2s7ZWmACSHKTKeYtPEUaL6unr7KULmd6BmZ7LBkewYjOz6mH8CJUw6l3Anknn78nf51d90ctuF0j5eHtmtdKO4teO4ziEEIRxQD11IusrvMKyjwPC/SWCd6VMKUQHKn4vdJTKy5GGEtXZxFwEvpHlXRn/PeIK5C9Q1j1p1ybat/dbc4rMQ1ShxRLhmKupJPehHlvGcCvvJzlVDAyOEXjFXt88LAPX4Bxl5J3xFHg8Oajn1HUexnH9lrAa3ZEM12e9i63DhQpq3srN5AotWYShQZ2iuPCYMQl6m/WS1tyHy4ciLxfS4eoihlxd7lZJkPD9sLNPVOrk3maauwJ/Vp29gbedTOHYYR8HByN0MwSB4+W1+vU1QI+D3FhXP0z0SH2F3ZQdFTBUyILM3e5EDueUGv/B0/QPeWuzlePe8u+hOWcHkxDhcRwtcrGJTQtalXNeOAqzA4s0GEHNHYQprOxmfqMDPtBvQ7L1DR8rJUlG3g4uWyXDTGL2t1xlCgKnlzqvLX8 3WYP0Ygf RFP5e1oEvy+FP528zaJ5lIKJJ0DvxN5C2jDaNu+CoGRhDB0pmOvzcQG76wH0Kqbo9n7KZtA+bbHjohPjm2nPyxoy1waJ4dqK3o/s9Tbk2XLWaZVxaQEReVfFEqSSvhJICkg+vYJdY9cMQ+vcLLZvMeS9+yW6Df/bm6grVO6diQ3HO6O07q1NiqdRJo6cQoXf/bGfuC6xe84avfl4QvulkS9TqEQMXqmwNwTFUreikvMgKTW3Vdpldj/XWjGm0OY1VTN30k6u1ppglXMvtNbDKHZRYi77PEve99OBuS+LiSr/AYArbsG+yIcVRdLPEE6hYkv+dC2IaulTsm/kmB6hNOoLkYnHpWjptd3gwc2NzmX3SGmkbjlcF5DKEtEtofzDXwiSRZEnYXYbziDBFIWroDudv3ys1uCWI5VUlCYv+zOLU1YgDmsYUG0c+82iyJ1BihjBq7cuEhDawLlwZufsPrxlp6rPO0GQZtg5h/Ut7LDHr3WIyX3P4sAkQbA== 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 7/25/23 09:36, Valentin Schneider wrote: > On 25/07/23 06:49, Joel Fernandes wrote: >> Interesting series Valentin. Some high-level question/comments on this one: >> >>> On Jul 20, 2023, at 12:34 PM, Valentin Schneider wrote: >>> >>> text_poke_bp_batch() sends IPIs to all online CPUs to synchronize >>> them vs the newly patched instruction. CPUs that are executing in userspace >>> do not need this synchronization to happen immediately, and this is >>> actually harmful interference for NOHZ_FULL CPUs. >> >> Does the amount of harm not correspond to practical frequency of text_poke? >> How often does instruction patching really happen? If it is very infrequent >> then I am not sure if it is that harmful. >> > > Being pushed over a latency threshold *once* is enough to impact the > latency evaluation of your given system/application. > > It's mainly about shielding the isolated, NOHZ_FULL CPUs from whatever the > housekeeping CPUs may be up to (flipping static keys, loading kprobes, > using ftrace...) - frequency of the interference isn't such a big part of > the reasoning. Makes sense. >>> As the synchronization IPIs are sent using a blocking call, returning from >>> text_poke_bp_batch() implies all CPUs will observe the patched >>> instruction(s), and this should be preserved even if the IPI is deferred. >>> In other words, to safely defer this synchronization, any kernel >>> instruction leading to the execution of the deferred instruction >>> sync (ct_work_flush()) must *not* be mutable (patchable) at runtime. >> >> If it is not infrequent, then are you handling the case where userland >> spends multiple seconds before entering the kernel, and all this while >> the blocking call waits? Perhaps in such situation you want the real IPI >> to be sent out instead of the deferred one? >> > > The blocking call only waits for CPUs for which it queued a CSD. Deferred > calls do not queue a CSD thus do not impact the waiting at all. See > smp_call_function_many_cond(). Ah I see you are using on_each_cpu_cond(). I should have gone through the other patch before making noise. thanks, - Joel