Message ID | 20230123220500.21077-1-kirill.shutemov@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | Linear Address Masking enabling | expand |
On Mon, Jan 23, 2023 at 2:05 PM Kirill A. Shutemov <kirill.shutemov@linux.intel.com> 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 JITs and virtual machines. > > The patchset brings support for LAM for userspace addresses. Only LAM_U57 at > this time. I didn't react to anything objectionable in the series. My only reaction was actually to ask "when / what CPU cores are expected to support this feature"? Maybe it was mentioned somewhere, and I'm just blind and not finding it. But even the "Instruction Set Extensions and Future Features" paper seems to just be talking about the CPUID bits, not about any actual "this is when we expect it". (But again, I only scanned it, so maybe it's there and I just missed it). Linus
On Mon, Jan 23, 2023 at 06:07:20PM -0800, Linus Torvalds wrote: > On Mon, Jan 23, 2023 at 2:05 PM Kirill A. Shutemov > <kirill.shutemov@linux.intel.com> 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 JITs and virtual machines. > > > > The patchset brings support for LAM for userspace addresses. Only LAM_U57 at > > this time. > > I didn't react to anything objectionable in the series. > > My only reaction was actually to ask "when / what CPU cores are > expected to support this feature"? > > Maybe it was mentioned somewhere, and I'm just blind and not finding > it. But even the "Instruction Set Extensions and Future Features" > paper seems to just be talking about the CPUID bits, not about any > actual "this is when we expect it". There's no announced CPUs that have the feature. And it is above my pay grade to disclose anything beyond that. But there's QEMU patch[1] if you want to play with the feature. The patch is not upstreamable, but it works. [1] https://lore.kernel.org/qemu-devel/20220407010107.34734-1-kirill.shutemov@linux.intel.com/
On Tue, Jan 24, 2023 at 02:01:58PM +0300, Kirill A. Shutemov wrote: > On Mon, Jan 23, 2023 at 06:07:20PM -0800, Linus Torvalds wrote: > > On Mon, Jan 23, 2023 at 2:05 PM Kirill A. Shutemov > > <kirill.shutemov@linux.intel.com> 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 JITs and virtual machines. > > > > > > The patchset brings support for LAM for userspace addresses. Only LAM_U57 at > > > this time. > > > > I didn't react to anything objectionable in the series. > > > > My only reaction was actually to ask "when / what CPU cores are > > expected to support this feature"? > > > > Maybe it was mentioned somewhere, and I'm just blind and not finding > > it. But even the "Instruction Set Extensions and Future Features" > > paper seems to just be talking about the CPUID bits, not about any > > actual "this is when we expect it". > > There's no announced CPUs that have the feature. And it is above my pay > grade to disclose anything beyond that. I've asked around and if everything goes well it will be available early 2024.
On Thu, Jan 26, 2023 at 6:42 AM Kirill A. Shutemov <kirill@shutemov.name> wrote: > > I've asked around and if everything goes well it will be available early > 2024. Thanks. Good to have some kind of timeframe for it, even if tentative, Linus
On 1/24/2023 6:04 AM, 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 JITs and 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 > ... > > [1] ISE, Chapter 10. https://cdrdv2.intel.com/v1/dl/getContent/671368 It is Chapter 7. Or maybe use the name of the chapter instead. > Kirill A. Shutemov (12): > x86/mm: Rework address range check in get_user() and put_user() > x86: Allow atomic MM_CONTEXT flags setting > x86: CPUID and CR3/CR4 flags for Linear Address Masking > x86/mm: Handle LAM on context switch > mm: Introduce untagged_addr_remote() > x86/uaccess: Provide untagged_addr() and remove tags before address > check > x86/mm: Reduce untagged_addr() overhead for systems without LAM > x86/mm: Provide arch_prctl() interface for LAM > mm: Expose untagging mask in /proc/$PID/status > iommu/sva: Replace pasid_valid() helper with mm_valid_pasid() > x86/mm/iommu/sva: Make LAM and SVA mutually exclusive > selftests/x86/lam: Add test cases for LAM vs thread creation > > Weihong Zhang (5): > 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 > selftests/x86/lam: Add ARCH_FORCE_TAGGED_SVA test cases for > linear-address masking > > arch/arm64/include/asm/mmu_context.h | 6 + > arch/sparc/include/asm/mmu_context_64.h | 6 + > arch/sparc/include/asm/uaccess_64.h | 2 + > arch/x86/Kconfig | 11 + > arch/x86/entry/vsyscall/vsyscall_64.c | 2 +- > arch/x86/include/asm/cpufeatures.h | 1 + > arch/x86/include/asm/disabled-features.h | 8 +- > arch/x86/include/asm/mmu.h | 18 +- > arch/x86/include/asm/mmu_context.h | 49 +- > arch/x86/include/asm/processor-flags.h | 2 + > arch/x86/include/asm/tlbflush.h | 48 +- > arch/x86/include/asm/uaccess.h | 58 +- > arch/x86/include/uapi/asm/prctl.h | 5 + > arch/x86/include/uapi/asm/processor-flags.h | 6 + > arch/x86/kernel/process.c | 6 + > arch/x86/kernel/process_64.c | 66 +- > arch/x86/kernel/traps.c | 6 +- > arch/x86/lib/getuser.S | 83 +- > arch/x86/lib/putuser.S | 54 +- > arch/x86/mm/init.c | 5 + > arch/x86/mm/tlb.c | 53 +- > drivers/iommu/iommu-sva.c | 8 +- > drivers/vfio/vfio_iommu_type1.c | 2 +- > fs/proc/array.c | 6 + > fs/proc/task_mmu.c | 9 +- > include/linux/ioasid.h | 9 - > include/linux/mm.h | 11 - > include/linux/mmu_context.h | 14 + > include/linux/sched/mm.h | 8 +- > include/linux/uaccess.h | 22 + > mm/debug.c | 1 + > mm/gup.c | 4 +- > mm/madvise.c | 5 +- > mm/migrate.c | 11 +- > tools/testing/selftests/x86/Makefile | 2 +- > tools/testing/selftests/x86/lam.c | 1241 +++++++++++++++++++ > 36 files changed, 1699 insertions(+), 149 deletions(-) > create mode 100644 tools/testing/selftests/x86/lam.c > > -- > 2.39.1 >