Message ID | 20240206162801.882585-1-mjeanson@efficios.com |
---|---|
Headers |
Return-Path: <libc-alpha-bounces+patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 37F823858291 for <patchwork@sourceware.org>; Tue, 6 Feb 2024 16:28:38 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from smtpout.efficios.com (smtpout.efficios.com [IPv6:2607:5300:203:b2ee::31e5]) by sourceware.org (Postfix) with ESMTPS id 4EF623858D33 for <libc-alpha@sourceware.org>; Tue, 6 Feb 2024 16:28:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4EF623858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4EF623858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:5300:203:b2ee::31e5 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707236892; cv=none; b=LrBk4owT1gRPpCV/xNMI2mK6NbtMXEj7SVXXlS9TRR3nifg8soc0HmYWmdUBMf0E9ML096jl7oaRpyKiWVu67g64QQmK/d/XOjZ9gc+j0qztPuy+jBGcchoRU7KNsPemn93XdlIilQBXoekiypBxr+XHx+m27VUHMPBW25Uj3eE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707236892; c=relaxed/simple; bh=6HZd9633FxFIQif94onBNq3FFl7LZfYa6mmV3piAB9E=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=wuV7d1Qs904QJupmnOMIAq6a1NHj41d2syxhN33i8KB2emalwqDWrwECdqg1eE6ybaDsVgdk9n9TaZn9EZDK3NCa/SuVQmwS2t2/s0CyOwmdI5klNUcMmTiRxn/k20KPBe1CrJ/yrbj9Qo4iIllKYhp79JfHkj5KB5DO8aSFxC4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1707236887; bh=6HZd9633FxFIQif94onBNq3FFl7LZfYa6mmV3piAB9E=; h=From:To:Cc:Subject:Date:From; b=YumAySJiI9mqaz/dolQc/G3GohEcJBl7quoyy6ODFdDmqxEBk5mG0HjNzNseveAme hBl5jFH5GqnnHz90OsO3n71FM92JNqkOmQyhx8onq5jDgaGcfGFJMI9bwu8pKpuGYR 5j4akuXK7w46IeFSR9vkLDtaKb3XBsx8mcVhVGl6LNOSpak3KtG974xkP7CqYUBKEq WCQGOdGH9IkwzUjYka/QPSONGeGz145MwfFYikZN2arVGef/63Xo3B5s8SGhaC8q48 Esqc4GsBqzZK2CkMAki3ztkvIJoIKHGzwCmS2hF4Fr3HYJQMeBIf/oUy7KOnMQfK3O YNsO4K1nnHDaA== Received: from laptop-mjeanson.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4TTpZb5ltRzXDQ; Tue, 6 Feb 2024 11:28:07 -0500 (EST) From: Michael Jeanson <mjeanson@efficios.com> To: libc-alpha@sourceware.org Cc: Michael Jeanson <mjeanson@efficios.com> Subject: [PATCH v8 0/8] Extend rseq support Date: Tue, 6 Feb 2024 11:27:53 -0500 Message-Id: <20240206162801.882585-1-mjeanson@efficios.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list <libc-alpha.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=subscribe> Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org |
Series |
Extend rseq support
|
|
Message
Michael Jeanson
Feb. 6, 2024, 4:27 p.m. UTC
This series rebases the standalone "Add rseq extensible ABI" patch on current master and adds an accelerated getcpu() implementation using the rseq extensible ABI with initial support for aarch64 and x86_64. On an aarch64 system (Snapdragon 8cx Gen 3) which lacks a vDSO for getcpu() we measured an improvement from 130 ns to 1 ns while on x86_64 (i7-8550U) which has a vDSO we measured a more modest improvement from 10 ns to 2 ns. Tested on i386, aarch64 and x86_64. --- Changes since v7: * Fix sorting of symbols in abilist files Mathieu Desnoyers (2): x86-64: Add rseq_load32_load32_relaxed aarch64: Add rseq_load32_load32_relaxed Michael Jeanson (6): nptl: fix potential merge of __rseq_* relro symbols Add rseq extensible ABI support nptl: Add public __rseq_feature_size symbol nptl: Add features to internal 'struct rseq_area' nptl: Add rseq internal utils Linux: Use rseq to accelerate getcpu csu/Makefile | 2 +- csu/libc-tls.c | 66 ++++++- csu/rseq-sizes.sym | 11 ++ elf/Makefile | 1 + elf/dl-rseq-symbols.S | 72 ++++++++ elf/dl-tls.c | 62 +++++++ elf/rtld_static_init.c | 12 ++ manual/threads.texi | 8 + nptl/descr.h | 20 +- nptl/pthread_create.c | 2 +- sysdeps/generic/dl-rseq.h | 26 +++ sysdeps/generic/ldsodefs.h | 12 ++ sysdeps/i386/nptl/tcb-access.h | 56 ++++++ sysdeps/nptl/dl-tls_init_tp.c | 16 +- sysdeps/nptl/tcb-access.h | 5 + sysdeps/unix/sysv/linux/Makefile | 10 + sysdeps/unix/sysv/linux/Versions | 3 + sysdeps/unix/sysv/linux/aarch64/ld.abilist | 1 + .../unix/sysv/linux/aarch64/rseq-internal.h | 173 ++++++++++++++++++ sysdeps/unix/sysv/linux/alpha/ld.abilist | 1 + sysdeps/unix/sysv/linux/arc/ld.abilist | 1 + sysdeps/unix/sysv/linux/arm/be/ld.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/ld.abilist | 1 + sysdeps/unix/sysv/linux/csky/ld.abilist | 1 + sysdeps/unix/sysv/linux/dl-parse_auxv.h | 6 + sysdeps/unix/sysv/linux/getcpu.c | 32 +++- sysdeps/unix/sysv/linux/hppa/ld.abilist | 1 + sysdeps/unix/sysv/linux/i386/ld.abilist | 1 + .../unix/sysv/linux/loongarch/lp64/ld.abilist | 1 + .../unix/sysv/linux/m68k/coldfire/ld.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/ld.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/ld.abilist | 1 + .../unix/sysv/linux/mips/mips32/ld.abilist | 1 + .../sysv/linux/mips/mips64/n32/ld.abilist | 1 + .../sysv/linux/mips/mips64/n64/ld.abilist | 1 + sysdeps/unix/sysv/linux/nios2/ld.abilist | 1 + sysdeps/unix/sysv/linux/or1k/ld.abilist | 1 + .../sysv/linux/powerpc/powerpc32/ld.abilist | 1 + .../linux/powerpc/powerpc64/be/ld.abilist | 1 + .../linux/powerpc/powerpc64/le/ld.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist | 1 + sysdeps/unix/sysv/linux/riscv/rv64/ld.abilist | 1 + sysdeps/unix/sysv/linux/rseq-internal.h | 89 ++++++++- .../unix/sysv/linux/s390/s390-32/ld.abilist | 1 + .../unix/sysv/linux/s390/s390-64/ld.abilist | 1 + sysdeps/unix/sysv/linux/sched_getcpu.c | 3 +- sysdeps/unix/sysv/linux/sh/be/ld.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/ld.abilist | 1 + .../unix/sysv/linux/sparc/sparc32/ld.abilist | 1 + .../unix/sysv/linux/sparc/sparc64/ld.abilist | 1 + sysdeps/unix/sysv/linux/sys/rseq.h | 4 + .../unix/sysv/linux/tst-rseq-disable-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq-disable.c | 20 +- .../unix/sysv/linux/tst-rseq-nptl-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq-static.c | 1 + sysdeps/unix/sysv/linux/tst-rseq.c | 24 ++- sysdeps/unix/sysv/linux/tst-rseq.h | 9 +- sysdeps/unix/sysv/linux/x86_64/64/ld.abilist | 1 + .../unix/sysv/linux/x86_64/rseq-internal.h | 109 +++++++++++ sysdeps/unix/sysv/linux/x86_64/x32/ld.abilist | 1 + sysdeps/x86_64/nptl/tcb-access.h | 56 ++++++ 61 files changed, 886 insertions(+), 56 deletions(-) create mode 100644 csu/rseq-sizes.sym create mode 100644 elf/dl-rseq-symbols.S create mode 100644 sysdeps/generic/dl-rseq.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/rseq-internal.h create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-disable-static.c create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-nptl-static.c create mode 100644 sysdeps/unix/sysv/linux/tst-rseq-static.c create mode 100644 sysdeps/unix/sysv/linux/x86_64/rseq-internal.h