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 E0220C77B73 for ; Mon, 22 May 2023 23:45:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 52505900002; Mon, 22 May 2023 19:45:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4D5626B0075; Mon, 22 May 2023 19:45:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3C3FD900002; Mon, 22 May 2023 19:45:18 -0400 (EDT) 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 2F5AC6B0074 for ; Mon, 22 May 2023 19:45:18 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EEEF1ADD65 for ; Mon, 22 May 2023 23:45:17 +0000 (UTC) X-FDA: 80819524674.12.1F32DD6 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf26.hostedemail.com (Postfix) with ESMTP id 2057314001C for ; Mon, 22 May 2023 23:45:15 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=1RihYSk6; spf=pass (imf26.hostedemail.com: domain of pcc@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=pcc@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684799116; 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=krhUajFGwK9L4o6aKxZVhfmKxVJjexnutJuCxQxG8Gg=; b=C8phYusBdsUMQ/2085EGtKeAzJMWO+gu3Hm01w4XRodb/9jVGbBGWxqjuq0UKyizXed5Cr uoSNinWSXD15fGWTKc0VNaQwgI9SPMMgasUSXYnd+tKwdI3TXCYfjzhTsUmF1PgYxaNNHd JoOXmbaDjsJ497azZRhSGR/yuUEY+OY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684799116; a=rsa-sha256; cv=none; b=Zrop2LeHzeQx3juWRKd9uEuxkUNc/N/9C9yn2Nbgifow6w7mQzM9f0z7SaJRcpIp4OOwFE 7cBW7GZj9yPuZ1LZLxqE16JlGrr+elCQNKu0V+WWM4X/Zjtjif8ijIZwIRxVirkCVXoVLc WxavWUYdwKDwzsGOH/FjdID3VkU78fw= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=1RihYSk6; spf=pass (imf26.hostedemail.com: domain of pcc@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=pcc@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-3f6a6e9d90dso89761cf.0 for ; Mon, 22 May 2023 16:45:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684799115; x=1687391115; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=krhUajFGwK9L4o6aKxZVhfmKxVJjexnutJuCxQxG8Gg=; b=1RihYSk6Zvns0JROPxQYk0Fcpayju51Z23Rlq8vH615/5q/51u3Z9nDKo4XsyRsvLC 57zj7WOOobI4CjKqY9mfJJU2hUrqCC7k1V7Nm/p8f06nWwps7cEdhSYj2Ai8BLC+oBlh TBINzV5AAn6g3j5T4NvLJfWkp6OapPffbMoDmGyaSSos/gP3RPmd1OJTgNxrJrhevCAY sMUKJoFw+PNZqTV9hMNlsJAN2ZpF1nxeBlGjqwJUg8qwFxl1rYmliIEFbAuxPIBTQEuZ 2Ai+XsSE1Q9DB+wyIi3zbWaw0i9YTfbJV8V6hBlze8sROH/ZR+LAfmGkxN06hca93jBd tR9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684799115; x=1687391115; h=content-transfer-encoding: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=krhUajFGwK9L4o6aKxZVhfmKxVJjexnutJuCxQxG8Gg=; b=CZSeXPD+PYsqymSkTqCgdnBobsvHv1kXxFovo1YUFRPLNnSdb9flbJxxpN2fdF9OjU szL+pu+su5rsAx8xv6PeMh1ODJ2ijB9Hyaehl9hEYVBB+itb4/1VbgAc30Q//TWFXv4V lT5bQKzMuWFuwcekUcYFy2jq8oGIV7gtYEDA7d2s1Ht7aiXFkGV/Y8zIwrtW7PugtxA7 np+ZeNC8N+mK4Fi5A+R2uxGUIRW0M86gQ+7TdKEdfxbv8295yfIn2ok552NUhgRZsmw0 9dpWEyfeFwY/hqVLXItt1fHnbDklBVc/dMrpZAYS5GBBhFxut0t8ecuYNZq4RqQjYmKn UwuA== X-Gm-Message-State: AC+VfDxZWTERgAH9TcOU4lomoqRPXPCib8GfE1VaE5G1N1/IgIclqw3W spS+vCZS8F6lzwgh1LlrVJyuuhPC4nzFOqkdQ3QpPA== X-Google-Smtp-Source: ACHHUZ7wBfGgsdy00R8ePI1bWfcVg1wI7q3Fky9eoCR908S8bzONaFI1Zv2vSD88c686ebxubQflLWpRUlZrF7OUwPk= X-Received: by 2002:ac8:598e:0:b0:3ed:86f6:6eab with SMTP id e14-20020ac8598e000000b003ed86f66eabmr104822qte.14.1684799115109; Mon, 22 May 2023 16:45:15 -0700 (PDT) MIME-Version: 1.0 References: <20230517022115.3033604-1-pcc@google.com> <20230517022115.3033604-4-pcc@google.com> In-Reply-To: From: Peter Collingbourne Date: Mon, 22 May 2023 16:45:03 -0700 Message-ID: Subject: Re: [PATCH v3 3/3] arm64: mte: Simplify swap tag restoration logic To: Catalin Marinas Cc: =?UTF-8?B?UXVuLXdlaSBMaW4gKOael+e+pOW0tCk=?= , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "surenb@google.com" , "david@redhat.com" , =?UTF-8?B?Q2hpbndlbiBDaGFuZyAo5by16Yym5paHKQ==?= , "kasan-dev@googlegroups.com" , =?UTF-8?B?S3Vhbi1ZaW5nIExlZSAo5p2O5Yag56mOKQ==?= , =?UTF-8?B?Q2FzcGVyIExpICjmnY7kuK3mpq4p?= , "gregkh@linuxfoundation.org" , vincenzo.frascino@arm.com, Alexandru Elisei , will@kernel.org, eugenis@google.com, Steven Price Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 2057314001C X-Rspam-User: X-Stat-Signature: gadqurp3hwdxmf9rpqnu5ehbh4pxqu8c X-Rspamd-Server: rspam03 X-HE-Tag: 1684799115-731606 X-HE-Meta: U2FsdGVkX18dG9tNqsquS2vMRFlrC7RK32WWbV8omJftt+JNaxgiONC9AqGL95sl0g82K0ep95OOgpFYLXhKiL+MOe2AkdVQHE1ioIWhEZpCxt0JV4WlPwZ+eSRO8v8oMUISF/SEXfeqebYPlG557EFujIbqtuPMWcnL12iT/rRWSu6UoQmQQgiBxeRhrP27/S84rx/smtOoeX72vUs8PY/u/UTZsB8dqHP9vG03A8hHfkPYjPxaGdOLZZmzBw1aFeFqy6693atMEngnOnTMWZWi9KbJnmgHx1Vvf8xr2RI3Tlrxyh4gh2S+fmThwFc1m4CC61bJRSPJweuJs/0eKax5sIpcbx/u9ZdEsMy7pRDWm8ILAhc3v0t05JJmLfB1a8a+tjZoceGOAGeDEsFoqUUeo9mEHXAy9V910xHZ/ZYYmYOb2ihnOxwg9LLY0IzxKz/AbGaRahpkLoOav5O/kYd7AYWsQO4SpFLnBTK0Utx9e8cQ37sDmeUWxSBXmWK0Aliplt1aEFNz+1/gwVfMb80aUOGj3Bww3aIhK4JyJYPhlEoGiwkrHheR16axZ9cMHSpNhdqmEJIF/qtT/D2pawm5OeR3aHV8dERZJagvzcj5H3U1yQ24DATBtgrdbK7U21sZgMX9gJRw78ykTVw/ENM36XaVDO8k/R8qC/b9wgQAkKyKVv7ClKgIpkT/UQVfc3At0vWrMRJszG5KsnRGVH9uSK3oB+wfGAGui1SVkCK8VEZkaWE20haC3z+yAOFklxvVzpPHCbauEpCfeeUd1WaF3Ie76Ngmu+JdqWxfy8NWYuBGI+xtpqnlp5YX1nnXiQjaDvOKMg1FfsqVgfjFrGs6CD8OpF/aKlZBTKv+ZPXxyV0FeWTSHTQ18iMbj1U8ZqDFt0AM2RHQ1Dw84/vrx2JexJqjYPFWSHIHENp2/vXAOQ52a4MqyA9S8G6ZcD9vDsb/9u8Ia56YJ8kyVga zSJdOtVs 3b3NnGyA+NkPTntyTL3R8VItBvxTBK9seB3UwrRaDtOD9Icls4IkUmDhs3Recx3r8J/Gl9ko5KdxX6cBM+xKJ7/W3AC8RYsTEoRywztoCCgp8q38AraIZ5UEZymTs+dRk4uwHVgq1IeanFyVcsS70b4/KUpX3gpg3j3Adpxkkltz84OnGs+XLQVFir7ETXUnmAajln/ILg7zkTxT3Q3bvOacXtAATt4eXUQhR2dK6ZcCZXRxrKOJR5ekR2zNjSU1NieZGwN2uPIDbXhCm/AEBp7r+rbw/4lu+tk5H7cfeST5SpbP2hiFZaRrMPcMtyjj6NEQ+bzg3s5hHELE= 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: Hi Catalin, On Fri, May 19, 2023 at 9:54=E2=80=AFAM Catalin Marinas wrote: > > On Tue, May 16, 2023 at 07:21:13PM -0700, Peter Collingbourne wrote: > > As a result of the previous two patches, there are no circumstances > > in which a swapped-in page is installed in a page table without first > > having arch_swap_restore() called on it. Therefore, we no longer need > > the logic in set_pte_at() that restores the tags, so remove it. > > > > Because we can now rely on the page being locked, we no longer need to > > handle the case where a page is having its tags restored by multiple ta= sks > > concurrently, so we can slightly simplify the logic in mte_restore_tags= (). > [...] > > diff --git a/arch/arm64/mm/mteswap.c b/arch/arm64/mm/mteswap.c > > index cd508ba80ab1..3a78bf1b1364 100644 > > --- a/arch/arm64/mm/mteswap.c > > +++ b/arch/arm64/mm/mteswap.c > > @@ -53,10 +53,9 @@ void mte_restore_tags(swp_entry_t entry, struct page= *page) > > if (!tags) > > return; > > > > - if (try_page_mte_tagging(page)) { > > - mte_restore_page_tags(page_address(page), tags); > > - set_page_mte_tagged(page); > > - } > > + WARN_ON_ONCE(!try_page_mte_tagging(page)); > > + mte_restore_page_tags(page_address(page), tags); > > + set_page_mte_tagged(page); > > } > > Can we have a situation where two processes share the same swap pte > (CoW) and they both enter the do_swap_page() or the unuse_pte() paths > triggering this warning? Having examined the code more closely, I realized that this is possible with two do_swap_page() calls on CoW shared pages (or do_swap_page() followed by unuse_pte()), because the swapcache page will be shared between the tasks and so they will both call arch_swap_restore() on the same page. I was able to provoke the warning with the following program: #include #include int main() { char *p =3D mmap(0, 4096, PROT_READ|PROT_WRITE|PROT_MTE, MAP_ANON|MAP_PRIVATE, -1, 0); p[0] =3D 1; madvise(p, 4096, MADV_PAGEOUT); fork(); return p[0]; } I will send a v4 with this hunk removed. > Other than that, the looks nice, it simplifies the logic and probably > saves a few cycles as well on the set_pte_at() path. > > Reviewed-by: Catalin Marinas Thanks for the review! Peter