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 9267CC433F5 for ; Thu, 6 Oct 2022 13:59:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C65B48E0002; Thu, 6 Oct 2022 09:58:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C14AC8E0001; Thu, 6 Oct 2022 09:58:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AB5DF8E0002; Thu, 6 Oct 2022 09:58:59 -0400 (EDT) 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 974F18E0001 for ; Thu, 6 Oct 2022 09:58:59 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 658311604DD for ; Thu, 6 Oct 2022 13:58:59 +0000 (UTC) X-FDA: 79990680798.05.19E3FE4 Received: from mail-yb1-f169.google.com (mail-yb1-f169.google.com [209.85.219.169]) by imf17.hostedemail.com (Postfix) with ESMTP id 0597C40013 for ; Thu, 6 Oct 2022 13:58:58 +0000 (UTC) Received: by mail-yb1-f169.google.com with SMTP id 126so2339786ybw.3 for ; Thu, 06 Oct 2022 06:58:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=s+YuoZmT4CdVaeJmCXtamdo4wpT48j9SRuR7X/Obpi8=; b=k4hRQcSXX5JjQYo+iakkHH05fcSOAuDnx2fZhjDqWO7F66LLlOstMRbBHxBhZbXY2P JbkaJ7cuc5WyaeM08s2NpgtwjHQOmsAL/NBLaHhwfm4BNEXkY55kaId1Dc5+sFdeAbJM OPF2vOSwGK77xi31bSpXePSyBjiOKNXbG91WCyetFoRMYou23+GrzSCt1tiIXNc5043l seCdkLL1gAwgKSMi7oeApt6/NZ9yVFKjIdxbM0dxlbMD1iPevoy/x3aY+kgN7JdwL53m 5/46p+SHXUU2wH/QZFv/arSfy0FOl1FrzJdvxcNI7ek+De5GzFmj++zw/4x2JP2BoG+R A29Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=s+YuoZmT4CdVaeJmCXtamdo4wpT48j9SRuR7X/Obpi8=; b=QCaHN6v1DDryKDjBQN8e8pseBdHFNLB/e4M5KE1+9j6wx5GJL2eN5Pfa+GBae6KXHV 0CXYyynmZZL+oLX3bmzGB/IvSJ68kFPNLSYmn0Xcvx2A2ruO3vTKwYIUkF0NYrXeh0aJ R1lDSYraQaK8gBnWz48TTzZJ65THQJgUWLWbhkvrscm0gJaHz+WXHvRr5jUD5+KyF6uo uo5O3xOZCNeq9Ef/0zvEncIF2AS49UM/IRDAVlP7qqXGkIo1q8fjsr/BuA42yuRM/we1 oQAVCFMe41s8OvS0ZVH2X4HeLmk6owAyG9nS1+VX3rfCnrocgD7qkrSz42g2+nxyYYtd +vZg== X-Gm-Message-State: ACrzQf33ysKSkvbOBErv9RBLTQUbMkN2/RMt55mbmAuDJShiJeMNKsoX 6thiJ6JwB+dWfAGNf2f18KVqxftdWZm7UhZBRL5Kvg== X-Google-Smtp-Source: AMsMyM6569uzjp7wIOkVrIiK3+Cucvhc4vsxZ0OCzNx1LMALdMvzKbWwnh2I4uFeAWJEVnPX5/tLRpWfgwfx3GodvBY= X-Received: by 2002:a25:9d0a:0:b0:6bc:2641:19d4 with SMTP id i10-20020a259d0a000000b006bc264119d4mr4444038ybp.388.1665064737939; Thu, 06 Oct 2022 06:58:57 -0700 (PDT) MIME-Version: 1.0 References: <20220930144758.30232-1-kirill.shutemov@linux.intel.com> In-Reply-To: <20220930144758.30232-1-kirill.shutemov@linux.intel.com> From: Alexander Potapenko Date: Thu, 6 Oct 2022 15:58:21 +0200 Message-ID: Subject: Re: [PATCHv9 00/14] Linear Address Masking enabling 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 , Bharata B Rao , Jacob Pan , Ashok Raj , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1665064739; 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=s+YuoZmT4CdVaeJmCXtamdo4wpT48j9SRuR7X/Obpi8=; b=gw9hDbBlU6ZkNmk62BTclx6Ld4fzcCBktljjDyKSZ0AUkAvpwYxluFwIxVxm2m+DXkCfw7 ZR9TQ7l4sfXA9Y510ki05UxK2Pz3lAu14ZTmnspzymiAZxsqoiXW5jqphyIr3YBVMTEzBY NQQo0nVxwE01reyF2KRXxX4ffAH33Y0= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=k4hRQcSX; spf=pass (imf17.hostedemail.com: domain of glider@google.com designates 209.85.219.169 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1665064739; a=rsa-sha256; cv=none; b=UwSGBkfbecslJx6EaxLbbpHNyCMjZ5WZ3POyfvOnXuDnRGMU9O2MQBXa9iA57Vs5Hs6AII P3sYMwkDcFsv1i+/lmLifFWUepwRDKuizGZgCM5l0K6C2mrKGtL9bj4BYqXsRVyd425Kqt mWQpakjhEPyWOsj8eDffNO+qxxhrqEY= X-Stat-Signature: k3ttrhd7wm7dpy3g77dhc7sbt8dtmhde X-Rspamd-Queue-Id: 0597C40013 Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=k4hRQcSX; spf=pass (imf17.hostedemail.com: domain of glider@google.com designates 209.85.219.169 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspamd-Server: rspam07 X-Rspam-User: X-HE-Tag: 1665064738-165988 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, Sep 30, 2022 at 4:48 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 capability can be used for efficient address sanitizers (ASAN) > implementation and for optimizations in virtual machines. > > The patchset brings support for LAM for userspace addresses. Only LAM_U57= at > this time. > > Please review and consider applying. > > git://git.kernel.org/pub/scm/linux/kernel/git/kas/linux.git lam Not a big deal, but this tree contains LAM_U48 patches, and after skipping those the SVM patch does not apply cleanly. > v9: > - Fix race between LAM enabling and check that KVM memslot address does= n't > have any tags; > - Reduce untagged_addr() overhead until the first LAM user; > - Clarify SVM vs. LAM semantics; > - Use mmap_lock to serialize LAM enabling; > v8: > - Drop redundant smb_mb() in prctl_enable_tagged_addr(); > - Cleanup code around build_cr3(); > - Fix commit messages; > - Selftests updates; > - Acked/Reviewed/Tested-bys from Alexander and Peter; > v7: > - Drop redundant smb_mb() in prctl_enable_tagged_addr(); > - Cleanup code around build_cr3(); > - Fix commit message; > - Fix indentation; > v6: > - Rebased onto v6.0-rc1 > - LAM_U48 excluded from the patchet. Still available in the git tree; > - add ARCH_GET_MAX_TAG_BITS; > - Fix build without CONFIG_DEBUG_VM; > - Update comments; > - Reviewed/Tested-by from Alexander; > v5: > - Do not use switch_mm() in enable_lam_func() > - Use mb()/READ_ONCE() pair on LAM enabling; > - Add self-test by Weihong Zhang; > - Add comments; > v4: > - Fix untagged_addr() for LAM_U48; > - Remove no-threads restriction on LAM enabling; > - Fix mm_struct access from /proc/$PID/arch_status > - Fix LAM handling in initialize_tlbstate_and_flush() > - Pack tlb_state better; > - Comments and commit messages; > v3: > - Rebased onto v5.19-rc1 > - Per-process enabling; > - API overhaul (again); > - Avoid branches and costly computations in the fast path; > - LAM_U48 is in optional patch. > v2: > - Rebased onto v5.18-rc1 > - New arch_prctl(2)-based API > - Expose status of LAM (or other thread features) in > /proc/$PID/arch_status > > [1] ISE, Chapter 10. https://cdrdv2.intel.com/v1/dl/getContent/671368 > > Kirill A. Shutemov (10): > x86/mm: Fix CR3_ADDR_MASK > x86: CPUID and CR3/CR4 flags for Linear Address Masking > mm: Pass down mm_struct to untagged_addr() > x86/mm: Handle LAM on context switch > x86/uaccess: Provide untagged_addr() and remove tags before address > check > KVM: Serialize tagged address check against tagging enabling > x86/mm: Provide arch_prctl() interface for LAM > x86/mm: Reduce untagged_addr() overhead until the first LAM user > x86: Expose untagging mask in /proc/$PID/arch_status > x86/mm, iommu/sva: Make LAM and SVM mutually exclusive > > Weihong Zhang (4): > selftests/x86/lam: Add malloc and tag-bits test cases for > linear-address masking > selftests/x86/lam: Add mmap and SYSCALL test cases for linear-address > masking > selftests/x86/lam: Add io_uring test cases for linear-address masking > selftests/x86/lam: Add inherit test cases for linear-address masking > > arch/arm64/include/asm/memory.h | 4 +- > arch/arm64/include/asm/signal.h | 2 +- > arch/arm64/include/asm/uaccess.h | 4 +- > arch/arm64/kernel/hw_breakpoint.c | 2 +- > arch/arm64/kernel/traps.c | 4 +- > arch/arm64/mm/fault.c | 10 +- > arch/sparc/include/asm/pgtable_64.h | 2 +- > arch/sparc/include/asm/uaccess_64.h | 2 + > arch/x86/include/asm/cpufeatures.h | 1 + > arch/x86/include/asm/mmu.h | 12 +- > arch/x86/include/asm/mmu_context.h | 47 + > arch/x86/include/asm/processor-flags.h | 4 +- > arch/x86/include/asm/tlbflush.h | 35 + > arch/x86/include/asm/uaccess.h | 46 +- > arch/x86/include/uapi/asm/prctl.h | 5 + > arch/x86/include/uapi/asm/processor-flags.h | 6 + > arch/x86/kernel/Makefile | 2 + > arch/x86/kernel/fpu/xstate.c | 47 - > arch/x86/kernel/proc.c | 60 ++ > arch/x86/kernel/process.c | 3 + > arch/x86/kernel/process_64.c | 82 +- > arch/x86/mm/tlb.c | 48 +- > .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 +- > drivers/gpu/drm/radeon/radeon_gem.c | 2 +- > drivers/infiniband/hw/mlx4/mr.c | 2 +- > drivers/iommu/iommu-sva-lib.c | 12 + > drivers/media/common/videobuf2/frame_vector.c | 2 +- > drivers/media/v4l2-core/videobuf-dma-contig.c | 2 +- > .../staging/media/atomisp/pci/hmm/hmm_bo.c | 2 +- > drivers/tee/tee_shm.c | 2 +- > drivers/vfio/vfio_iommu_type1.c | 2 +- > fs/proc/task_mmu.c | 2 +- > include/linux/mm.h | 11 - > include/linux/mmu_context.h | 4 + > include/linux/uaccess.h | 15 + > lib/strncpy_from_user.c | 2 +- > lib/strnlen_user.c | 2 +- > mm/gup.c | 6 +- > mm/madvise.c | 2 +- > mm/mempolicy.c | 6 +- > mm/migrate.c | 2 +- > mm/mincore.c | 2 +- > mm/mlock.c | 4 +- > mm/mmap.c | 2 +- > mm/mprotect.c | 2 +- > mm/mremap.c | 2 +- > mm/msync.c | 2 +- > tools/testing/selftests/x86/Makefile | 2 +- > tools/testing/selftests/x86/lam.c | 916 ++++++++++++++++++ > virt/kvm/kvm_main.c | 14 +- > 51 files changed, 1331 insertions(+), 125 deletions(-) > create mode 100644 arch/x86/kernel/proc.c > create mode 100644 tools/testing/selftests/x86/lam.c > > -- > 2.35.1 > --=20 Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Stra=C3=9Fe, 33 80636 M=C3=BCnchen Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Liana Sebastian Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg