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 D9312C46467 for ; Mon, 16 Jan 2023 12:54:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34C7E6B0071; Mon, 16 Jan 2023 07:54:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2FD946B0072; Mon, 16 Jan 2023 07:54:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1C3A36B0073; Mon, 16 Jan 2023 07:54:51 -0500 (EST) 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 0D5C86B0071 for ; Mon, 16 Jan 2023 07:54:51 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D23851408E9 for ; Mon, 16 Jan 2023 12:54:50 +0000 (UTC) X-FDA: 80360656740.06.BFF77FA Received: from mail-il1-f182.google.com (mail-il1-f182.google.com [209.85.166.182]) by imf26.hostedemail.com (Postfix) with ESMTP id 5211A140013 for ; Mon, 16 Jan 2023 12:54:49 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=WwyqIv5u; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of jannh@google.com designates 209.85.166.182 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673873689; 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=3SxhgAvgDMdZQpeBwjT3HHcfCZOqbwGa4aErLEE5tZo=; b=bflj3qBiqmFFHV5Jc53Fh20hrNxlJmFa/DQonVhCzbJo0Z7OmexJg64eIaqoQQ7wVB398H XQhNlNgr0k6duqjnxtC9MYoYM1JvgOUy7sKPDt7JI89lBuG9CRdpOG7ubgwnzvt1Y6vDDe 2GgDOEBVO+lOEexTHtDnpwdRDauwImQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=WwyqIv5u; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of jannh@google.com designates 209.85.166.182 as permitted sender) smtp.mailfrom=jannh@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673873689; a=rsa-sha256; cv=none; b=Pg75IiFKFsi+2G1yzbtFZBMiNT8jSwHbLh3WKogfBG5eMPEbIrduEFQFQWF/Yb5RKHTV4t oMgSVMCH5aF8RkvZR8XkLpYRPBb9ZOZwI299/GO6P0W7h/xHuh6Y9CHDkwaVMPScOtFk9u XudpORfUCTCrh1ZEpXrUVWfMR6v5TzY= Received: by mail-il1-f182.google.com with SMTP id d10so13897618ilc.12 for ; Mon, 16 Jan 2023 04:54:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3SxhgAvgDMdZQpeBwjT3HHcfCZOqbwGa4aErLEE5tZo=; b=WwyqIv5ugeBGMCRLeuLpLHV07NTeipvLkTInSKY42RrdU1vwWtTEUtYdXEw52BsKUK UWbwuyCoIkqFYwgNoVURc0Qd+yxukDctYsO4kMlxKDHjOhHUUDxij8rPJZdn7baGV7R8 IVwBQmT+J8xjrPnEg5xWbuKr7an/po/Xo4dLxEruoxwIofEZklyzkoBABsbLvFeyVXMY saELXXNxzqPU2fIV2Hqg3KsVwrn/54eK6/5MJCNxToqkQApDvz/lHFtoOs4Q/txSM+rL bSn40FZt6uIxSLwD06kXtY7RC8GwxwprFjIrn1reOzSKbr9dWMwZZpaz+jeAOjNsEU9g WxVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3SxhgAvgDMdZQpeBwjT3HHcfCZOqbwGa4aErLEE5tZo=; b=aWvklxvNfz479jH/4u4nNugkVbdYxym7b+hBpEbfkHRJrEvoyU9fbxuCL50gMHAos/ 1cKHQMjIc9xgz4CcuqwI7VLol2ROYnliu+nPfHlcNOoQvpIZkvRMIJV1AkSFitnx1tMI He7pZbLQgywPm1lVxLr5Gsaf5Bk1NIYGTw8hIKBw2KTT1AgKXU4D85W3eHM6Tgg6nN5A L7ha/YhzLJZxAwrJW8BtFpsEnYNVHaoze9tLypYtdJySaHRKze07cq7qfSGyhNu36zvj CBGZI9m3xMEGtg+QSsct7EK+tppPPGagdKIeABcSJZ5v53TS0cFN0BxO7kXqePDejzjN 8Qig== X-Gm-Message-State: AFqh2kpwCfWDCwA8I7eSKCw2vGtuZSAknvEcfdLMAwKYMP/h+HbZney9 Vh4+Ah6v5XBBCh3rWV6QoME0JP/SdvhOgVzZeEdgQA== X-Google-Smtp-Source: AMrXdXtF4fTIbcgFeVqFPRLkNiAKgONng9+vuomJpuOpDmWCrv9ygQHNjTNH4Xz4bhmmGP+Q9IxPNljxO4mKZyYrcZM= X-Received: by 2002:a92:c04e:0:b0:30f:12c9:f765 with SMTP id o14-20020a92c04e000000b0030f12c9f765mr116249ilf.187.1673873688380; Mon, 16 Jan 2023 04:54:48 -0800 (PST) MIME-Version: 1.0 References: <20230111133351.807024-1-jannh@google.com> <20230112085649.gvriasb2t5xwmxkm@box.shutemov.name> <20230115190654.mehtlyz2rxtg34sl@box.shutemov.name> <20230116123403.fiyv22esqgh7bzp3@box.shutemov.name> In-Reply-To: <20230116123403.fiyv22esqgh7bzp3@box.shutemov.name> From: Jann Horn Date: Mon, 16 Jan 2023 13:54:12 +0100 Message-ID: Subject: Re: [PATCH] mm/khugepaged: Fix ->anon_vma race To: "Kirill A. Shutemov" Cc: Andrew Morton , linux-mm@kvack.org, "Kirill A. Shutemov" , "Zach O'Keefe" , linux-kernel@vger.kernel.org, David Hildenbrand , Yang Shi , Will Deacon , "Aneesh Kumar K.V" , Nick Piggin , Peter Zijlstra Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 5211A140013 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: 9akcbb9qmnt8jhg3scrfbjanem5o59ad X-HE-Tag: 1673873689-319095 X-HE-Meta: U2FsdGVkX1/DrKSVVOY8HiJNPHcCFNUliDSVIyBpC5frQDfYwaXe5adQbE2PhArVRjOygXe386IGY16GMdVv/Q5mVpI7JzWw9p0LiKbtZHsoh170OpwUSNAYy6QKQsD0i1CaArgNQa4B6OhXhuWUxs2yd345g3Mb1mb1X3S3JQW1cdADOyvDLoSrRDVd0JXpiL1sDkIV2l6phrySYTVRvuGo+W/boMy7Jjyyi4G3b5PRr+L4F4yu3psFLdH/k539s/XZJ6XeTnPxBfmh6RY+80cCoz55wME2G8LHiKu00bygexZEWpJh6WPc0I+cvkocScr0dfcKP/x0sqh5fT3fONJh6ZMBq7bMEdBUK9CbvM+nXRWfLIy7MlhUHDO5Ot+S68Tt+G9niV8X1Sl+KCRRgCJV4J+SS9y3nxz/SVJnUSRy/smijIOmgpR8pLBMEdKFoS4ktHGzhc6vh/BYDMcOjKuo6G0m0b8pb/zdn/dXQxUR6sjFgHw2jUQi6i24OnlPvbIXFoJCyqgF2lRYH29SLO4cU02GX0TmDa4jXOJsbFWhPzqB6kyPcqZXxDP8knda8M4aP2qWwfaJuwafnI5doIFX6FxQMtv+3UweFSHffs1MOE0CXjP7qYEfrcquL9aAR2DDeHVWCRaPeD28w9SBTJmu0gFr6vpe8eN3LDYp+xNy6op0mce24tQwWJEPFixnV20ykoPK2B+3JmFZ3uRR4P6bAgtKzXBjKEs0hkxK/rrvo7ttcFUQRlQ1l/Zdsb9bmR3y+6N7T3drIquOm0rzY3834UHd3BGPvDV/o9/Bx4qA2ApjxXDsylWUVOYSlaE+RYk46Lo+Ds9fnatLStlaFSvKJJx/W3IAXhNgklV23OfvmhKzLqAPAfFgF38tZl5SpgOJdKwSzzPDL/tEjsrIatR+lnmuZPjJ2YH6o6ayLegojQvRSYWwZBdGNTNQ2W9KgdQUZ6Dat0S+eV0hNcE jfntTXqY 1ErOtQQHW/roHuVko1+EctiO/vkKpB9iKjZXjguq6JDWHSNZ3J+JCa5WduA== 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: +cc mmu-gather maintainers On Mon, Jan 16, 2023 at 1:34 PM Kirill A. Shutemov wrote: > On Mon, Jan 16, 2023 at 01:06:59PM +0100, Jann Horn wrote: > > On Sun, Jan 15, 2023 at 8:07 PM Kirill A. Shutemov wrote: > > > BTW, I've noticied that you recently added tlb_remove_table_sync_one(). > > > I'm not sure why it is needed. Why IPI in pmdp_collapse_flush() in not > > > good enough to serialize against GUP fast? > > > > If that sent an IPI, it would be good enough; but > > pmdp_collapse_flush() is not guaranteed to send an IPI. > > It does a TLB flush, but on some architectures (including arm64 and > > also virtualized x86), a remote TLB flush can be done without an IPI. > > For example, arm64 has some fancy hardware support for remote TLB > > invalidation without IPIs ("broadcast TLB invalidation"), and > > virtualized x86 has (depending on the hypervisor) things like TLB > > shootdown hypercalls (under Hyper-V, see hyperv_flush_tlb_multi) or > > TLB shootdown signalling for preempted CPUs through shared memory > > (under KVM, see kvm_flush_tlb_multi). > > I think such architectures must provide proper pmdp_collapse_flush() > with the required serialization. FWIW, the IPI that I added is not unconditional; tlb_remove_table_sync_one() is a no-op depending on CONFIG_MMU_GATHER_RCU_TABLE_FREE, which an architecture can use to signal that it uses "Semi RCU freeing of the page directories". The kernel has arch-independent support for these semantics in the normal TLB flushing code. But yeah, I guess you could move the tlb_remove_table_sync_one() calls into pmdp_collapse_flush() (including the generic version)? I'm CC-ing the mmu-gather maintainers in case they have an opinion. Anyway, I'm not going to do that refactor; feel free to do that if you want. > Power and S390 already do that. What's the call graph from pmdp_collapse_flush() to IPI on powerpc and s390?