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 B3E3FC28D13 for ; Mon, 22 Aug 2022 09:33:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 27DF48D0002; Mon, 22 Aug 2022 05:33:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 206626B0074; Mon, 22 Aug 2022 05:33:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0A78A8D0002; Mon, 22 Aug 2022 05:33:26 -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 EB1356B0073 for ; Mon, 22 Aug 2022 05:33:25 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B950E80381 for ; Mon, 22 Aug 2022 09:33:25 +0000 (UTC) X-FDA: 79826715570.30.60DD54F Received: from mail-yw1-f179.google.com (mail-yw1-f179.google.com [209.85.128.179]) by imf02.hostedemail.com (Postfix) with ESMTP id 75E0280137 for ; Mon, 22 Aug 2022 09:33:25 +0000 (UTC) Received: by mail-yw1-f179.google.com with SMTP id 00721157ae682-324ec5a9e97so276172107b3.7 for ; Mon, 22 Aug 2022 02:33:25 -0700 (PDT) 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; bh=9R4smTUrTtix23hl1msdwJHbp39AGcuckFuYU8krxz0=; b=Vhe5DlOn73vTv+pl6O9HXPL4V7zdUqRVPETGHnfRntxfQVtDCPY5APeE5CidkUBSBW 04W0ZabHynsQ5RGaE8KRWRYUS36OCfo+6s/InP5ShZwZW3Mwayad7MHRMIFcnXKQlhK5 sVEshfoOAf7+S81uH0SRXKrA9611Zcefy55zJ1IAKp2todYVRoX7KvvvpIicu5EEnK3C sfvoOsZhpJ5MDRk9bteLnCC7aTUcfreqCKY6EJhJFAPN4UdLvX0MokVxnx2hORzjTw2b tIMu46zdt6rmNRD/RuF9SWXVlCbBd4HBc0DZqReob6KnkvaIETvlTH8gIymTrCKuiLmC vAvQ== 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; bh=9R4smTUrTtix23hl1msdwJHbp39AGcuckFuYU8krxz0=; b=obaKW5F08J2yDFA+XYLBtYviaLz+B9v44rVkDx0N14clPqb86hXfojQ0D0ln2Lp15l MVr+NAyrM71CsqLFFaji6CCG1jv7qbMJ282edpz6IPUSmqBDzlZuqrnL4lWbMPoiIXMZ 9qp3kZOaOkERNlYsmgt/I6LirfKhcGDedDjQERrXa34CuSfdrvx1jj303T2LcwK+f0Qd oPP2MY7O14CWSjG56OnbWSs0vLHULkp08Na8FX94MpibfEuvkllPK3xuzjJg0qiv7HHx ki6ZGVfj/76Trvdjt8Tk4c+2bD7AWREoz2MFqOFZ+ZkNsDPWPFTS4ED7RA56vBS8O2Vc eQ8g== X-Gm-Message-State: ACgBeo34A9Q8djfjaI7T/rWUvaDKJGDs8xwCrmjl1bWl7BGzAxhH9X9p Adr4/ZkXDhudp8BhKWo/RXhfinb9v3bE24IYrqsmEw== X-Google-Smtp-Source: AA6agR6AqGVT05hXT86203WI/ugfWvFwTAZ/n75hbNxSyuqn/zFfpss2El6hX/Phvonwj/sZxZX4gPl7QKaajEr7v74= X-Received: by 2002:a05:6902:2cb:b0:684:aebe:49ab with SMTP id w11-20020a05690202cb00b00684aebe49abmr18525186ybh.242.1661160804578; Mon, 22 Aug 2022 02:33:24 -0700 (PDT) MIME-Version: 1.0 References: <20220815041803.17954-1-kirill.shutemov@linux.intel.com> <20220815041803.17954-7-kirill.shutemov@linux.intel.com> In-Reply-To: <20220815041803.17954-7-kirill.shutemov@linux.intel.com> From: Alexander Potapenko Date: Mon, 22 Aug 2022 11:32:48 +0200 Message-ID: Subject: Re: [PATCHv6 06/11] x86/mm: Provide arch_prctl() interface for LAM To: "Kirill A. Shutemov" Cc: Dave Hansen , Andy Lutomirski , Peter Zijlstra , "the arch/x86 maintainers" , Kostya Serebryany , Andrey Ryabinin , Andrey Konovalov , Taras Madan , Dmitry Vyukov , "H . J . Lu" , Andi Kleen , Rick Edgecombe , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661160805; a=rsa-sha256; cv=none; b=u7XhxPma6wYuLrkogFGSVXMBDn9R2hXneIJ+JRUAzmSGour3TOogER5DTS7ZM+UVZnYQ5A oHPuwOW58brL9CAouISJzhZ9SchxKKrou9zFVq93pd5keS4+t6BFQddfz9jaobAPxCo55e A/I9JADq6mSkRFeWMN0bzprUZnw5zvM= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=Vhe5DlOn; spf=pass (imf02.hostedemail.com: domain of glider@google.com designates 209.85.128.179 as permitted sender) smtp.mailfrom=glider@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=1661160805; 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=9R4smTUrTtix23hl1msdwJHbp39AGcuckFuYU8krxz0=; b=RyA2iRC6fEY+HisjrKuHycHb3iJmHtVjyW1/i5V/H2Wgcqx1QhvpOGWy0lMMLakqBhn6I6 W/cuzMw091Lu/QTqR5jExJiKRrzXuDcnBAJtMo6VBxd7sqJ7uBdgTCdX98lVCcSd7NvOn7 09Bt0f611djPSWRfN6+f96N3vSvA8OQ= X-Stat-Signature: tu9pd3e3wziykbuj5pmzn5ibthon8r5w X-Rspamd-Queue-Id: 75E0280137 Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=Vhe5DlOn; spf=pass (imf02.hostedemail.com: domain of glider@google.com designates 209.85.128.179 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1661160805-614828 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, Aug 15, 2022 at 6:15 AM Kirill A. Shutemov wrote: > > Add a couple of arch_prctl() handles: > > - ARCH_ENABLE_TAGGED_ADDR enabled LAM. The argument is required number > of tag bits. It is rounded up to the nearest LAM mode that can > provide it. For now only LAM_U57 is supported, with 6 tag bits. > > - ARCH_GET_UNTAG_MASK returns untag mask. It can indicates where tag > bits located in the address. > > - ARCH_GET_MAX_TAG_BITS returns the maximum tag bits user can request. > Zero if LAM is not supported. > > Signed-off-by: Kirill A. Shutemov Reviewed-by: Alexander Potapenko (with a nit, see below) > +static int prctl_enable_tagged_addr(struct mm_struct *mm, unsigned long nr_bits) > +{ > + int ret = 0; > + > + if (!cpu_feature_enabled(X86_FEATURE_LAM)) > + return -ENODEV; > + > + mutex_lock(&mm->context.lock); > + > + /* Already enabled? */ > + if (mm->context.lam_cr3_mask) { > + ret = -EBUSY; > + goto out; > + } > + > + if (!nr_bits) { > + ret = -EINVAL; > + goto out; > + } else if (nr_bits <= 6) { Can you please make this 6 a #define? > + return put_user(6, (unsigned long __user *)arg2); ... and use it at least here (could also express masks in terms of this number, but maybe it's enough to just declare them in the same header next to each other).