From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id A75E940211 for ; Tue, 15 Aug 2023 15:28:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3A38A68C6E0; Tue, 15 Aug 2023 18:27:56 +0300 (EEST) Received: from ursule.remlab.net (vps-a2bccee9.vps.ovh.net [51.75.19.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7411568C503 for ; Tue, 15 Aug 2023 18:27:48 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id C59B0C00C0 for ; Tue, 15 Aug 2023 18:27:47 +0300 (EEST) From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Aug 2023 18:27:45 +0300 Message-Id: <20230815152747.28925-1-remi@remlab.net> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] lavu/timer: use time for AV_READ_TIME on RISC-V X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: So far, AV_READ_TIME would return the cycle counter. This posed two problems: 1) On recent systems, it would just raise an illegal instruction exception. Indeed RDCYCLE is blocked in user space to ward off some side channel attacks. In particular, this would cause the random number generator to crash. 2) It does not match the x86 behaviour and the apparent original intent of AV_READ_TIME in the functional code base (outside test cases). So this replaces the cycle counter with the time counter. The unit is a platform-dependent constant fraction of time, and the value should be stable across harts (RISC-V lingo for physical CPU thread). --- libavutil/riscv/timer.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavutil/riscv/timer.h b/libavutil/riscv/timer.h index a34157a566..c2465a4524 100644 --- a/libavutil/riscv/timer.h +++ b/libavutil/riscv/timer.h @@ -24,21 +24,21 @@ #if HAVE_INLINE_ASM #include -static inline uint64_t rdcycle64(void) +static inline uint64_t ff_read_time(void) { #if (__riscv_xlen >= 64) uintptr_t cycles; - __asm__ volatile ("rdcycle %0" : "=r"(cycles)); + __asm__ volatile ("rdtime %0" : "=r" (cycles)); #else uint64_t cycles; uint32_t hi, lo, check; __asm__ volatile ( - "1: rdcycleh %0\n" - " rdcycle %1\n" - " rdcycleh %2\n" + "1: rdtimeh %0\n" + " rdtime %1\n" + " rdtimeh %2\n" " bne %0, %2, 1b\n" : "=r" (hi), "=r" (lo), "=r" (check)); cycles = (((uint64_t)hi) << 32) | lo; @@ -47,7 +47,7 @@ static inline uint64_t rdcycle64(void) return cycles; } -#define AV_READ_TIME rdcycle64 +#define AV_READ_TIME ff_read_time #endif #endif /* AVUTIL_RISCV_TIMER_H */ -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".