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 120C4C76196 for ; Mon, 3 Apr 2023 10:22:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8F0A76B0075; Mon, 3 Apr 2023 06:22:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8A0066B0078; Mon, 3 Apr 2023 06:22:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 78EF36B007B; Mon, 3 Apr 2023 06:22:18 -0400 (EDT) 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 682D66B0075 for ; Mon, 3 Apr 2023 06:22:18 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 3AAC78087B for ; Mon, 3 Apr 2023 10:22:18 +0000 (UTC) X-FDA: 80639689956.29.A30FFAC Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181]) by imf06.hostedemail.com (Postfix) with ESMTP id 6C73118000D for ; Mon, 3 Apr 2023 10:22:16 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="aj/faN4P"; spf=pass (imf06.hostedemail.com: domain of dvyukov@google.com designates 209.85.208.181 as permitted sender) smtp.mailfrom=dvyukov@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=1680517336; 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=96t9GjOEgpXEZ9acE0qRgTs7kWloWEC0J4minDuLaxo=; b=P4eejnF3GKd5+0o0Z84oYd51nuFbigtL+dGVXDeFqIVwwUNS66lIytF2sf0BCcBREJzxCl HjVTq+pwdoRwVDiMnPbuLTnLQ5xw0f4oA5sVJzzfFKrIxcj0urENIfa0vCzwCBr8q+c46R tHTV25YLdYA5hiXN4j4GCXUUY0o27SE= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b="aj/faN4P"; spf=pass (imf06.hostedemail.com: domain of dvyukov@google.com designates 209.85.208.181 as permitted sender) smtp.mailfrom=dvyukov@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680517336; a=rsa-sha256; cv=none; b=UYujqPxj8to7lIY/kgL5hxHmgRSlzUSkWYCJXNWMMMlxVVGdVViwdIuwJ0O0RtYb/zWMNv i3BZKraX0NAtBqMdVg1FcWlMSFdlV2o2DumunzM61Ny73b87AU+/aLyrrJwpvuRcN6WSXj 7rWHxOuiMR+DGLcOaZ5F09VX65kBf7k= Received: by mail-lj1-f181.google.com with SMTP id by14so10599539ljb.12 for ; Mon, 03 Apr 2023 03:22:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680517334; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=96t9GjOEgpXEZ9acE0qRgTs7kWloWEC0J4minDuLaxo=; b=aj/faN4PYQkIL9hKnHImtE76LCPU8xKlVAfZ2msVYAfPKX7tYJlpPwRAW0FdlkCHij smH7wkgg76UjkaCWfxe2dMeMehRR+VLic1lof0LfgM4cAQPQJXDBvx+bq15OrTT2/SAk UM6gxCrxqhdreTZDfjzqswlYk+Rp/Zc8ngn3q0C14q/9F3cifNUe8F0MmDeEDFWdrr6J U1Ew3qZyzY5E9Kjdip797uaRAX3UpFSEOBFwWFxXXzNlWoI4soGdgBTbd4xIeprVmD05 Qf/hSojTQXfhESuqE1MkGqJvr0ftCv72S9weZQhMMGhrrrKwm4b+Dw7LhoEpjiYPVwb3 2Opg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680517334; 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=96t9GjOEgpXEZ9acE0qRgTs7kWloWEC0J4minDuLaxo=; b=wW29HwyxLXdhG5ljJjdQ5iHj2tDJrU8q4yna/ZMGvTn1KMm9NJD4/wCfBOPJj6u6/F CS+Fs4BpjLeOfWJMX3HG5Zn87QM76iPUENe4mA2E15k53SxDcDz9GLmA9mlAZam6s705 DEU524kKrTTEDoutscAtJ/DB9XRhS+VaTws55Z5xHof9JniRWIbDOL5GNovuYm88cxSl Y7v155/R19mgtynsuMvHDQP6P497mFv4d32J315d9RLIRVBcvsGItMrzDRDRu5hdWklA KeRdYHwEKjgs8tMEekY8kgRbZfWhEmX8ohOqfg+RdLOGelZDM+EfLuobk4t5hfZoz1lO KzVA== X-Gm-Message-State: AAQBX9cLGDQIOE6PpWiOoqI7NpI8/wNHOZtK5wNYfC8KZXcW2kSRhJQu 2U6BHr4UmhGnxpzPgMNybzAALf9Vmm86lpUavAfb1Q== X-Google-Smtp-Source: AKy350bYYOTxXK8oCcjada9AsvBb3DgZ6WBEzQnxTEkBOr+Wt0p9dorCunXBY5zpBbykt71KuPTp+ep6Ka7LtpDEJw0= X-Received: by 2002:a2e:a0c6:0:b0:298:a7c2:489 with SMTP id f6-20020a2ea0c6000000b00298a7c20489mr10896129ljm.8.1680517334457; Mon, 03 Apr 2023 03:22:14 -0700 (PDT) MIME-Version: 1.0 References: <20230312112612.31869-1-kirill.shutemov@linux.intel.com> <20230312112612.31869-12-kirill.shutemov@linux.intel.com> <20230403094419.zl2ncsd4qyd35fex@box> <20230403101707.satsniziz3tn2zyd@box> In-Reply-To: <20230403101707.satsniziz3tn2zyd@box> From: Dmitry Vyukov Date: Mon, 3 Apr 2023 12:22:01 +0200 Message-ID: Subject: Re: [PATCHv16 11/17] x86/mm/iommu/sva: Make LAM and SVA mutually exclusive To: "Kirill A. Shutemov" Cc: "Kirill A. Shutemov" , Dave Hansen , Andy Lutomirski , Peter Zijlstra , x86@kernel.org, Kostya Serebryany , Andrey Ryabinin , Andrey Konovalov , Alexander Potapenko , Taras Madan , "H . J . Lu" , Andi Kleen , Rick Edgecombe , Bharata B Rao , Jacob Pan , Ashok Raj , Linus Torvalds , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 6C73118000D X-Stat-Signature: iyesw7ox9y5dtc1amj95znd3h5nthtcj X-HE-Tag: 1680517336-812309 X-HE-Meta: U2FsdGVkX1+diEwTIEbnjPO9I7DyktFJhL3+g3nsvWXuGs021/pHzQzZILjZDf7bdzZqL6oEc3mrslNQjJEaCINdGZLObKrsr4rm9yU2qvXJnoEKTg7DCVbPbRr28hUcRaG6ijESde2RjVspxMbvIFMZMmNyLSsVtF/odJRaS2J25xP2hHJ/401Gw2v6jrwwLUuNhcJcWRuzMXAhdGguKfypgGiujHdRMox2cKT/LL7fBQZkfauBC/8R4/qSleE+B2OgkJwvs2L4kgUoau3IrQjFu16zYzkSMRnrw/MNX6Kc4rr96xw+bnkCZ/bCbbRA5sOqZYdXScLb9N221goTT42Kb0TaYHqbaxagC8B0gFO3mKhVfpGpkwtZLoDOGJGPtdpX50n3TgEjfk8Vp2ABl+d+QAt2VnC0OY9LSPK6D4nD9a2c3B+Mvo9rL7Ej1V+2q13gBeaFngaQ+7iRMG5QwOxhcO/eUR3rkzfBWHYJwwlirf3F7hH0OsF0LvNlzAQ2IUlaWS9O+9J9/ASx50KRHRbKOV1Q7bNhPGJkBCp2dsEwcyuYyBhN+r/uKCuLjm34EQgpsqPIszPiltSMKwj4mOvVLEIsuNnrc9TCFL3XrCQkMupI7Wbe6WHW9f6eiMg4dD71XLYqezzUyvQd/WIlm37cLEfMkA1nj97gZRhZLwuLpsghDM5A9fIrltxbB0vBMZGEI7KDSFvERoLobh0lj/3fOGGEpi5srti3xjfbfaXSKOI8iFABmnbRr026j8mvmmV/U6yTUH19e4F/z/RoDfK0Q1U7JWo85h5EuP9TOTc2PsTQKEWbiwS/o5TUKjxEBCdSfytyrG0uQBxN808MPp1Edgy9yRJSyWRl2y8g88fWzTh56cbOf1tlTFxrSlEmTViml/qMnbtLdhBDn2CAfBSeE0G5YfP2baVnwbV7DoBEeOLtvjPgJVIvcoVcwhcXtxZrlGRnSe+EDgUwlhG KiaiJPmg gE0zBjgnjGN4dyx0CNXvmZFAKdt3EKWu4udN+IbAHIBOTNwelmqQijnBZazTDCQpq5liaCRh6GHrLFDev+0c4kYqpJUo3HiVbx+rTxhyZWRZZMrN82Tz3INZ7fo7nG3FDRV/bbx7bghRKYarlN5kq1rGFKA4YpsYyiyiJ3X33xlPB0qqFUjD9UF0BAzYCZcF6CtAENsKdf+O0mhd0s9nkdi+DMO4mgewdOALyIK6wTHYbO/OJIPrja0ZbukD+O2jzNoSlwFbFQyWF1AKbRbjLmCgqHnfpn7g5GIM1ol95cP6MDFhKdNZnrEdYPmfy7fYvxeMd 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 Mon, 3 Apr 2023 at 12:17, Kirill A. Shutemov wrote: > > On Mon, Apr 03, 2023 at 11:56:48AM +0200, Dmitry Vyukov wrote: > > On Mon, 3 Apr 2023 at 11:44, Kirill A. Shutemov wrote: > > > > > > On Mon, Apr 03, 2023 at 08:18:57AM +0200, Dmitry Vyukov wrote: > > > > Hi Kirill, > > > > > > > > ARCH_ENABLE_TAGGED_ADDR checks that task->mm == current->mm, > > > > shouldn't ARCH_FORCE_TAGGED_SVA check that as well? > > > > > > Do you a particular race in mind? I cannot think of anything right away. > > > > > > I guess we can add the check for consistency. But if there's a bug it is a > > > different story. > > > > No, I don't have a particular race in mind. Was thinking solely about > > consistency and if these things should be set for other processes > > (relaxing the check is always possible in future, but adding new > > restrictions is generally not possible). > > Okay. Makes sense. > > It is only reachable with task != current from ptrace, which is rather > obscure path. > > Anyway, I will prepare a proper patch with this fixup: > > diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c > index eda826a956df..4ffd8e67d273 100644 > --- a/arch/x86/kernel/process_64.c > +++ b/arch/x86/kernel/process_64.c > @@ -883,6 +883,8 @@ long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2) > case ARCH_ENABLE_TAGGED_ADDR: > return prctl_enable_tagged_addr(task->mm, arg2); > case ARCH_FORCE_TAGGED_SVA: > + if (current != task) > + return -EINVAL; > set_bit(MM_CONTEXT_FORCE_TAGGED_SVA, &task->mm->context.flags); > return 0; > case ARCH_GET_MAX_TAG_BITS: > > > > > Also it looks like currently to enable both LAM and SVA. > > > > LAM enabling checks for SVA, but SVA doesn't and both are not mutually > > > > exclusive. > > > > > > For LAM we check SVM with mm_valid_pasid() && !test_bit() in > > > prctl_enable_tagged_addr(). > > > > > > For SVM we check for LAM with !mm_lam_cr3_mask() || test_bit() in > > > arch_pgtable_dma_compat() which called from iommu_sva_alloc_pasid(). > > > > It seems that currently it's possible to both enable LAM and set SVA bit. > > Then arch_pgtable_dma_compat() will return true, but LAM is enabled. > > Right. That's the point of the bit. It allows SVA and LAM to co-exist: > > The new ARCH_FORCE_TAGGED_SVA arch_prctl() overrides the limitation. > By using the arch_prctl() userspace takes responsibility to never pass > tagged address to the device. > > I'm confused. Then I misunderstood what it means. Ignore. While we are here: if (mm_valid_pasid(mm) && !test_bit(MM_CONTEXT_FORCE_TAGGED_SVA, &mm->context.flags)) return -EINTR; should be EINVAL?