From patchwork Mon Sep 2 12:04:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Leroy X-Patchwork-Id: 13787160 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 7911BCA0ED3 for ; Mon, 2 Sep 2024 12:04:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0CAAC6B02CF; Mon, 2 Sep 2024 08:04:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 053CE6B02D0; Mon, 2 Sep 2024 08:04:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E10366B02D1; Mon, 2 Sep 2024 08:04:50 -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 C259E6B02CF for ; Mon, 2 Sep 2024 08:04:50 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 43477141C48 for ; Mon, 2 Sep 2024 12:04:50 +0000 (UTC) X-FDA: 82519666740.19.6814113 Received: from pegase2.c-s.fr (pegase2.c-s.fr [93.17.235.10]) by imf03.hostedemail.com (Postfix) with ESMTP id 0B43B20027 for ; Mon, 2 Sep 2024 12:04:47 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of christophe.leroy@csgroup.eu designates 93.17.235.10 as permitted sender) smtp.mailfrom=christophe.leroy@csgroup.eu; dmarc=pass (policy=quarantine) header.from=csgroup.eu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725278665; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=LjHMEt846IW9aLaYIYwEYTaIvvYR0XhxSzJN1jZ4iew=; b=wf/81b3/DiGg6Prp5E3Mr5OV9/pjP8d0QMtbVNvxOBw/q6EEq5LtAvSQ/eAqduA/Q1XeXg op8zQQR7V9Mz5DLnaHP0o/JaMUcQ4w3IgYv4qAV0VSsTpuv0X95r6tMArQ+FOuFCyh/goM pjtkUVNaeaj1wUEoEhPyfcScszmdgNw= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of christophe.leroy@csgroup.eu designates 93.17.235.10 as permitted sender) smtp.mailfrom=christophe.leroy@csgroup.eu; dmarc=pass (policy=quarantine) header.from=csgroup.eu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725278665; a=rsa-sha256; cv=none; b=yM1Gja0D20Biou6z6gKQYl7J7JtavEPrti2iedGfgbF91m9k+s6Rb2+pU4N0Wdhhf/diHc Vwls9k1jdyTARGiiefwsPiSPELRm+RHBf36hfj6bIqlc3PSHup2Eai4gC+Af1BAXoAs3bl GmYdnc14J2J7w3hECPPgbzp1xUwdzkw= Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4Wy6rF4LfZz9sSN; Mon, 2 Sep 2024 14:04:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase2.c-s.fr ([172.26.127.65]) by localhost (pegase2.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yk9NbO304bBT; Mon, 2 Sep 2024 14:04:45 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase2.c-s.fr (Postfix) with ESMTP id 4Wy6rF35r3z9sS7; Mon, 2 Sep 2024 14:04:45 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 5422D8B76D; Mon, 2 Sep 2024 14:04:45 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 52TK7Nj36tHo; Mon, 2 Sep 2024 14:04:45 +0200 (CEST) Received: from PO20335.idsi0.si.c-s.fr (unknown [192.168.234.167]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 524D28B763; Mon, 2 Sep 2024 14:04:44 +0200 (CEST) From: Christophe Leroy To: Andrew Morton , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Michael Ellerman , Nicholas Piggin , Naveen N Rao , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt , Shuah Khan , "Jason A . Donenfeld" Cc: Christophe Leroy , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kselftest@vger.kernel.org, llvm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, Adhemerval Zanella , Xi Ruoyao Subject: [PATCH v4 0/5] Wire up getrandom() vDSO implementation on powerpc Date: Mon, 2 Sep 2024 14:04:37 +0200 Message-ID: X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1725278679; l=3360; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=6QJA22qLgaef3fSOvlKvx8xuZHLDNXZ+/mQjcDCzEMY=; b=rkRd0PJANyDxoARin8UZaDw85VDVM67JUNJRPKtg/l5osHwVfNdLo2rqVgI+mMAut8vXZ2bwB KXoGERc0HRoCjQSpBMuxuW9ZLqlOAtlY/8R4T+eTO3MO/rpoaIMyeN7 X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= X-Rspam-User: X-Stat-Signature: p95sbp3gxaifhgbq4appg38q46y8mpc6 X-Rspamd-Queue-Id: 0B43B20027 X-Rspamd-Server: rspam11 X-HE-Tag: 1725278687-461437 X-HE-Meta: U2FsdGVkX1+cXKwNJhVG/b7n4VxZw8lQPr0rfngsR2711TeUTm1GFOExalmyoxuEUC13nroYzErMfY8UK6aB7WVMX5NoX6xc8Yr1sImrrWWpfSrK/l5BA+4ClN5CnlBIjbJ7Ul76Bj+kO96dlleu8iOinTpM/E5AP0Ovm0gUTTwZxVuV7g7/aKaSs3+i1ms+y9qcVAplyo8/O35+genLffHysW8X/w+fiqSzwo1N1DSwbq8IWqBxJsJOvzvgd1D4XFLPxmIzYEyk/iGdJ71aSHQ+zX45mlpLH4CSDeIJJPlVNh97L6EftUgIPDkPvs6pM/5Mcq5dV920jXDKdmIagWeOCTxvOf3AcVVRpfcgbtrrtHnVxPtd3TknJBhtsOGsjuVJJDE7lnKlcdNT33wWAW/Gwu8kuhEIu3qflQzZMOqrIEHGrY5vI8HAuy+n/u2h9osOxqPVVnkKFbJI7kSD24WZfQ0o15qGnXFfvJHmjs5De84vPSesR4M1QFtyLT0+SESQtjTiIERFPsPgz7e5XB9JXwGgTns+s5c/37NbfPHa1vJlMFZeSpju16z0eGz/EVX30OUeRmxcOnPHtxeyigDV6w9zJwZClQukaVsdU+iKw6oE40eADu4P6n7P6WfFXuO/jgVwdbkqvO3Gf1N8vqord8vBOqZd5bqohVLqUgOWC7TPcHeOP4dQGXL/RRMzbNEaHWPZtExXSnaYRUoyuXKNcfOXjdke/PGOcwybpU4p709S9YM4rxeMD9NFkkjPXLI+z5H+aS84eJbI0oE878Jx13woenDnKiugJcAaK4I7udmDhYIfD4xkh5OGtaB0Him1F3Tt+MdJYJF0MX6k/s5ONvAcjLXucJm+ofSvWZxmWhjnMrzchx8rXVDkZCoHj4G2NJlh9aQXk04Yo9bKT/TohPM8TQZ6YCJeHZfaixQUPc0K9gqEZcRwcg2XCa7ZB1MkGw6mMGn3Fdk0UyC VNG/nf+Y 67Dh57jHngm4KbhcY+7FwGSZPrth54g1UXFfSVR3x4NHDlikJ9BkIAIQSvY2FkivgrPJT 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: List-Subscribe: List-Unsubscribe: This series wires up getrandom() vDSO implementation on powerpc. Tested on PPC32 on real hardware. Tested on PPC64 (both BE and LE) on QEMU: Performance on powerpc 885: ~# ./vdso_test_getrandom bench-single vdso: 25000000 times in 62.938002291 seconds libc: 25000000 times in 535.581916866 seconds syscall: 25000000 times in 531.525042806 seconds Performance on powerpc 8321: ~# ./vdso_test_getrandom bench-single vdso: 25000000 times in 16.899318858 seconds libc: 25000000 times in 131.050596522 seconds syscall: 25000000 times in 129.794790389 seconds Performance on QEMU pseries: ~ # ./vdso_test_getrandom bench-single vdso: 25000000 times in 4.977777162 seconds libc: 25000000 times in 75.516749981 seconds syscall: 25000000 times in 86.842242014 seconds Changes in v4: - Rebased on recent random git tree (963233ff0133) (The new tree includes selftests fixes) - Read/write counter in native byte order - Don't use anymore compat macros to write output - Fixed selftests build failure with patch 4 (without patch 5) on little endian on PPC64 - Implement a __kernel_getrandom() stub returning ENOSYS on ppc64 in patch 4 (without patch 5) to make selftests happy. Changes in v3: - Rebased on recent random git tree (0c7e00e22c21) - Fixed build failures reported by robots around VM_DROPPABLE - Fixed crash on PPC64 due to clobbered r13 by not using r13 anymore (saving it was not enough for signals). - Split final patch in two, first for PPC32, second for PPC64 - Moved selftest fixes out of this series Changes in v2: - Define VM_DROPPABLE for powerpc/32 - Fixes generic vDSO getrandom headers to enable CONFIG_COMPAT build. - Fixed size of generation counter - Fixed selftests to work on non x86 architectures Christophe Leroy (5): mm: Define VM_DROPPABLE for powerpc/32 powerpc/vdso32: Add crtsavres powerpc/vdso: Refactor CFLAGS for CVDSO build powerpc/vdso: Wire up getrandom() vDSO implementation on PPC32 powerpc/vdso: Wire up getrandom() vDSO implementation on PPC64 arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/mman.h | 2 +- arch/powerpc/include/asm/vdso/getrandom.h | 54 ++++ arch/powerpc/include/asm/vdso/vsyscall.h | 6 + arch/powerpc/include/asm/vdso_datapage.h | 2 + arch/powerpc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/vdso/Makefile | 57 ++-- arch/powerpc/kernel/vdso/getrandom.S | 58 ++++ arch/powerpc/kernel/vdso/gettimeofday.S | 13 - arch/powerpc/kernel/vdso/vdso32.lds.S | 1 + arch/powerpc/kernel/vdso/vdso64.lds.S | 1 + arch/powerpc/kernel/vdso/vgetrandom-chacha.S | 320 +++++++++++++++++++ arch/powerpc/kernel/vdso/vgetrandom.c | 14 + fs/proc/task_mmu.c | 4 +- include/linux/mm.h | 4 +- include/trace/events/mmflags.h | 4 +- tools/testing/selftests/vDSO/Makefile | 2 +- 17 files changed, 501 insertions(+), 43 deletions(-) create mode 100644 arch/powerpc/include/asm/vdso/getrandom.h create mode 100644 arch/powerpc/kernel/vdso/getrandom.S create mode 100644 arch/powerpc/kernel/vdso/vgetrandom-chacha.S create mode 100644 arch/powerpc/kernel/vdso/vgetrandom.c