From patchwork Mon Sep 2 19:17:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Leroy X-Patchwork-Id: 13787668 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 0EC38CA0ED3 for ; Mon, 2 Sep 2024 19:17:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 811C08D0108; Mon, 2 Sep 2024 15:17:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 799C98D00EF; Mon, 2 Sep 2024 15:17:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 613968D0108; Mon, 2 Sep 2024 15:17:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 40F0A8D00EF for ; Mon, 2 Sep 2024 15:17:35 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id E800941D80 for ; Mon, 2 Sep 2024 19:17:34 +0000 (UTC) X-FDA: 82520757228.13.27BF3A3 Received: from pegase2.c-s.fr (pegase2.c-s.fr [93.17.235.10]) by imf04.hostedemail.com (Postfix) with ESMTP id B776A40005 for ; Mon, 2 Sep 2024 19:17:32 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.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=1725304558; 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=1ELg/QOG9fGwj6TCDmkswti7plm4t6vg3WY7QTBORIU=; b=XiFt6tns8fDP6kgBH480Z0iB82WTA87lfuewknLIoyLtNRJCvtEmHa4L5HsPOX9MLalOvR pKgjgNXWS8sEJxLOnXZSO3bbBrkEfkLVSJrdDAa5J7OP514For2ajdwy1fP2OotNsWxP5m tD89lxT4TOcyBRkRyGYQyFKBEcZ4QfI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725304558; a=rsa-sha256; cv=none; b=iLrR4kHSAL8FHsO42tb0IVDZQ01o8IOFtg3wugvkfI82pDwGTcSzz78yIv8R5fl4ezFgKl KeDQvDlZ96bvHWx0U3VDcjxv2yy6pCo/FVo3F941ksVrcxGMe5L8l8kqzz2v0ZErVHEaQ/ mwAAi6QB+KzDu5NvkTzWdjZBoa9Gwps= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.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 Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4WyJRZ4rkWz9sSC; Mon, 2 Sep 2024 21:17:30 +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 ax3nmbJ-MmBS; Mon, 2 Sep 2024 21:17:30 +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 4WyJRZ3bHMz9sS7; Mon, 2 Sep 2024 21:17:30 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 63ACB8B773; Mon, 2 Sep 2024 21:17:30 +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 Gzm3BpU0vDdS; Mon, 2 Sep 2024 21:17:30 +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 655368B76E; Mon, 2 Sep 2024 21:17:29 +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 v5 0/5] Wire up getrandom() vDSO implementation on powerpc Date: Mon, 2 Sep 2024 21:17:17 +0200 Message-ID: X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1725304637; l=3687; i=christophe.leroy@csgroup.eu; s=20211009; h=from:subject:message-id; bh=G56Surs4RcPMKqkQ+D4HRpn8ohpC1w0ACTtV2JlOfkQ=; b=L7YIZ5u53kP07q3XacSpkIO1Xjr62J1hUfE5txFxRpTNzPgGtylrmGgBb9ZY29iqGucj6655o E5MakVa329fBcczeFP71VjjmQ8YbRTi4BpFAc8ULVyQWxF+LYYG38qW X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= X-Stat-Signature: 6ucw5t4qjm5jz67g8dbjdpbx9rm4z6b8 X-Rspamd-Queue-Id: B776A40005 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1725304652-623514 X-HE-Meta: U2FsdGVkX184Pa6TgeF9hW4Sxi43xfuFus8DN7l9K5i/R+HHwBkz+37vHcGYqL0nau/OyWwDI4lSn+32plWpFmnwsqaUWXvEQ4eT27Te0UPrDCYvJFJo2b6oBuTT3lUOWnMsSqLT4qR9bkzlxBykU541D5jlTk0Hx0FN4fFx6cBGptWp3vR/la3S1m+NKzECZP5sjI3cBirWxnWBZvdtstuO6iqIucLI3WSzhprYiknPcGzOEcccoIPsyMi92f5XOq1DNSYqGTITBUOQpInLj/PjzrCMt/zlGnj9xxuEihhl4Ul4o2tfnnoIHJfXAoAzngSzTG0+TJNxl0VR8T49j7sebSorGqJMr8AbQfpandk7NWoCnxpKUoxVTjTTR4TQjp5cSw8XVB2tvCi5w5R7vxALzfHHampANvk48XEaUMIrSVITGtPE3z+kYtSh+50B5JfXPYTk8X7Bnf1RWB0n5Nl60KUuoeW+OhjZAdxEqm5DqEBgzoPVpiue4OpyZc/xKyB0zQIaUqCpSb+I3OjbwSnvHVJON9w96vQVD5/Ar3DnFhjzcB8nXjbKOLAX4sSwMWACmpitcaWnrI+SH9xZkNT2LE9rJBP13vahQTy+ooINqK/z/juShQmtX6aa7OJtjGyU7b/jqFLseNtCYZluhnFzZUl7sHA5pX6vxPnxUpft+yQRlTERFPxDD/UFI0Gds5jKQ+fnRUas1FsXhvI9Eirilj8SosSyYouEMyu+sQBn+hyFZEe0h5EbKy2aV949wXKpEYhgBnR0Dro6WcsALWjmwu++Oto3/aBXB76X796sXGniCovkFrt3zYNxdB8LWfF8ef58Y3KEkXUVnSIlJpshelcz3DJcQ47CG9k7mCSfd6+YXiO5sf4vAL6I2glFnrsiy4lBfj1Xp0XoADfm6l5y8Yv7avhY5lfwQsjbfcET/OMJkGvYX+vrPJjPtq7nifBaCGHgwhK/9BsnWh+ VJ9tQ3z/ APCSfkcwHShULEXTQDfMzZHz2XktV+90AhijYrmND7iElJMkiJurPhtneiJ2WGK44ScGr 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 v5: - The split between last two patches is not anymore PPC32/PPC64 but VDSO32/VDSO64 - Removed the stub returning ENOSYS - Using meaningfull names for registers - Restored symbolic link that disappeared in v4 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 VDSO32 powerpc/vdso: Wire up getrandom() vDSO implementation on VDSO64 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 | 365 +++++++++++++++++++ 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/arch/powerpc/vdso | 1 + tools/testing/selftests/vDSO/Makefile | 2 +- 18 files changed, 547 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 create mode 120000 tools/arch/powerpc/vdso Acked-by: Michael Ellerman (powerpc)