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 X-Spam-Level: X-Spam-Status: No, score=-23.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54154C433E0 for ; Sun, 7 Feb 2021 08:24:37 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id B0C7064D9D for ; Sun, 7 Feb 2021 08:24:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B0C7064D9D Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id F207E6B0006; Sun, 7 Feb 2021 03:24:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ED0E66B006C; Sun, 7 Feb 2021 03:24:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DE83F6B006E; Sun, 7 Feb 2021 03:24:35 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0241.hostedemail.com [216.40.44.241]) by kanga.kvack.org (Postfix) with ESMTP id CAAB86B0006 for ; Sun, 7 Feb 2021 03:24:35 -0500 (EST) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 96D763636 for ; Sun, 7 Feb 2021 08:24:35 +0000 (UTC) X-FDA: 77790785310.02.scene40_350ea02275f4 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id 69BF910097AA1 for ; Sun, 7 Feb 2021 08:24:35 +0000 (UTC) X-HE-Tag: scene40_350ea02275f4 X-Filterd-Recvd-Size: 7314 Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Sun, 7 Feb 2021 08:24:34 +0000 (UTC) Received: by mail-qv1-f52.google.com with SMTP id ew18so5624664qvb.4 for ; Sun, 07 Feb 2021 00:24:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GhMUHv1x/ybfl3YdrOgHIRdqoV6sFesTDMrbAcmBRB8=; b=evKtEwNvPvjYn+Jl81Aogtf/fHtLsDMfupnbuL+ofBT3z/p/lDh3vvyRVjpJwgkNY+ 7+3hJLR8uEpRvylALOnAX8QI4raMdVjRVYXq8UTPYtpbWSN13otHGdyv3Lts9M/iR4RQ AztSn1EHbCra0z2d/+5eDmUsn4DqefAo8F4HVVSRb4Yob7xazCPd4DqDdyiRZb+OKNdH XsZYOsuFKEd5S2t3sKIptRjiy+4MWgw0akSuymAV5svR4ZeyX+P5tbUfFb6b916hxfFE aYBl+p+2UlRwR5hoVIwDIFwYtu5uu62pBjTjhV1ocTGJCP4gH4pKSqfnLQADFzwqjciF UTyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GhMUHv1x/ybfl3YdrOgHIRdqoV6sFesTDMrbAcmBRB8=; b=DKOAI6VhqZmkigg6SseuVm4QQZkteIFyPJT4CR/wco6JHf9TeYLXRO3vjDuw9ENFT7 ME4k2d5nfnE102cXAB/RM8HoYrSBeTwco+KFNmBYIT4eWhFOpeybry6YdrZNkGZmQb/T 10PFhFfPETNloniRcY6SbtmE4qNs1ECnXXho95431OrIynQgPQAVpOjiys7pEchdgnsZ r5OZhumXwgcmMNk1/xzVVHxgrzbr2IQPlKRJNPA2fNVAn9ud+3BaMoD9K8qEAouK2Jsv TYToom6ntnP60LsJfnIWHGtFK5xO9hgdIpNTmvIPPguEGLPvDb5P7DXLMIKpz6jOoNoy jBIw== X-Gm-Message-State: AOAM530GcHhS3ed/hhWGns2w9s66isNiik4ZUgF/ALF7qYqNdsmHUcAY yVbpxTv1AQKxMTcQGQbdBzk/t4m3QldUtPzPcUcrqA== X-Google-Smtp-Source: ABdhPJxJ57rXoVcBTYselg8pRz8hX0JKofwnxDtRjilKLP9qileqVPAfC/JnkaQxx9VIwlwPx2cZM5B4ttkD8Kp2xbQ= X-Received: by 2002:a05:6214:522:: with SMTP id x2mr11744804qvw.13.1612686274113; Sun, 07 Feb 2021 00:24:34 -0800 (PST) MIME-Version: 1.0 References: <20210205151631.43511-1-kirill.shutemov@linux.intel.com> In-Reply-To: <20210205151631.43511-1-kirill.shutemov@linux.intel.com> From: Dmitry Vyukov Date: Sun, 7 Feb 2021 09:24:23 +0100 Message-ID: Subject: Re: [RFC 0/9] Linear Address Masking enabling To: "Kirill A. Shutemov" Cc: Dave Hansen , Andy Lutomirski , Peter Zijlstra , "the arch/x86 maintainers" , Andrey Ryabinin , Alexander Potapenko , Catalin Marinas , Will Deacon , "H . J . Lu" , Andi Kleen , Linux-MM , LKML Content-Type: text/plain; charset="UTF-8" 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 Fri, Feb 5, 2021 at 4:16 PM Kirill A. Shutemov wrote: > > Linear Address Masking[1] (LAM) modifies the checking that is applied to > 64-bit linear addresses, allowing software to use of the untranslated > address bits for metadata. > > The patchset brings support for LAM for userspace addresses. > > The most sensitive part of enabling is change in tlb.c, where CR3 flags > get set. Please take a look that what I'm doing makes sense. > > The patchset is RFC quality and the code requires more testing before it > can be applied. > > The userspace API is not finalized yet. The patchset extends API used by > ARM64: PR_GET/SET_TAGGED_ADDR_CTRL. The API is adjusted to not imply ARM > TBI: it now allows to request a number of bits of metadata needed and > report where these bits are located in the address. > > There's an alternative proposal[2] for the API based on Intel CET > interface. Please let us know if you prefer one over another. > > The feature competes for bits with 5-level paging: LAM_U48 makes it > impossible to map anything about 47-bits. The patchset made these > capability mutually exclusive: whatever used first wins. LAM_U57 can be > combined with mappings above 47-bits. > > I include QEMU patch in case if somebody wants to play with the feature. Exciting! Do you plan to send the QEMU patch to QEMU? > The branch: > > git://git.kernel.org/pub/scm/linux/kernel/git/kas/linux.git lam > > Any comments are welcome. > > [1] ISE, Chapter 14. https://software.intel.com/content/dam/develop/external/us/en/documents-tps/architecture-instruction-set-extensions-programming-reference.pdf > [2] https://github.com/hjl-tools/linux/commit/e85fa032e5b276ddf17edd056f92f599db9e8369 > > Kirill A. Shutemov (9): > mm, arm64: Update PR_SET/GET_TAGGED_ADDR_CTRL interface > x86/mm: Fix CR3_ADDR_MASK > x86: CPUID and CR3/CR4 flags for Linear Address Masking > x86/mm: Introduce TIF_LAM_U57 and TIF_LAM_U48 > x86/mm: Provide untagged_addr() helper > x86/uaccess: Remove tags from the address before checking > x86/mm: Handle tagged memory accesses from kernel threads > x86/mm: Make LAM_U48 and mappings above 47-bits mutually exclusive > x86/mm: Implement PR_SET/GET_TAGGED_ADDR_CTRL with LAM > > arch/arm64/include/asm/processor.h | 12 +- > arch/arm64/kernel/process.c | 45 +++++- > arch/arm64/kernel/ptrace.c | 4 +- > arch/x86/include/asm/cpufeatures.h | 1 + > arch/x86/include/asm/elf.h | 3 +- > arch/x86/include/asm/mmu.h | 1 + > arch/x86/include/asm/mmu_context.h | 13 ++ > arch/x86/include/asm/page_32.h | 3 + > arch/x86/include/asm/page_64.h | 19 +++ > arch/x86/include/asm/processor-flags.h | 2 +- > arch/x86/include/asm/processor.h | 10 ++ > arch/x86/include/asm/thread_info.h | 9 +- > arch/x86/include/asm/tlbflush.h | 5 + > arch/x86/include/asm/uaccess.h | 16 +- > arch/x86/include/uapi/asm/processor-flags.h | 6 + > arch/x86/kernel/process_64.c | 145 ++++++++++++++++++ > arch/x86/kernel/sys_x86_64.c | 5 +- > arch/x86/mm/hugetlbpage.c | 6 +- > arch/x86/mm/mmap.c | 9 +- > arch/x86/mm/tlb.c | 124 +++++++++++++-- > kernel/sys.c | 14 +- > .../testing/selftests/arm64/tags/tags_test.c | 31 ---- > .../selftests/{arm64 => vm}/tags/.gitignore | 0 > .../selftests/{arm64 => vm}/tags/Makefile | 0 > .../{arm64 => vm}/tags/run_tags_test.sh | 0 > tools/testing/selftests/vm/tags/tags_test.c | 57 +++++++ > 26 files changed, 464 insertions(+), 76 deletions(-) > delete mode 100644 tools/testing/selftests/arm64/tags/tags_test.c > rename tools/testing/selftests/{arm64 => vm}/tags/.gitignore (100%) > rename tools/testing/selftests/{arm64 => vm}/tags/Makefile (100%) > rename tools/testing/selftests/{arm64 => vm}/tags/run_tags_test.sh (100%) > create mode 100644 tools/testing/selftests/vm/tags/tags_test.c > > -- > 2.26.2 >