From patchwork Tue Aug 15 15:27:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= X-Patchwork-Id: 43230 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4c9d:b0:130:ccc6:6c4b with SMTP id fq29csp648213pzb; Tue, 15 Aug 2023 08:28:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHBliJxG/AqVmISmttPT4Vw/qxVzB1ZAMMOTpnPH287MlL5hfE/AC5NHk+seP6MppNC4mQ8 X-Received: by 2002:a17:906:7390:b0:99b:d068:9504 with SMTP id f16-20020a170906739000b0099bd0689504mr10857652ejl.2.1692113290168; Tue, 15 Aug 2023 08:28:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692113290; cv=none; d=google.com; s=arc-20160816; b=m1cNcw3uJ0WyRJC5RoUS6vrJ33TewEkjsiEnw/rLaBOqTVB2vz5kwUrrOF8RRI2I0q 8jsx0uPIjCDAlvWCQVh4du3F4UJUt0y4zppBJLo3tAVz14Q59OxctIv4DnralI4YBhX8 1rOFWI4sPD/zvNb9Wt8a7wHP8CMLSVHumzHTTgiwGJUYuHJ9YPZtWxoZfzvC1/aCY/Hs 27jDEhVIc+icssup8pBXWN1ctTmJgkA58N3phwFniUYtLlHF/fORmKMh2kEw/KiTX3DM eYA76SOrxSzE4F+9PpRJ8FSxE1605enMBJ5DR8R9CoSbNDUfeI7zzPu/gBoXS61e0KU6 NcYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=dm84ItmWANchlkPoYwvA8+xXYHv+Fp3w3S9zyZfsqDI=; fh=hQcp50obTJ8bXC1it5NuEN23RGKfx0/zZ3s2gmreL+A=; b=uBqyPNXxHJlfe/b79xx+rnLT60YJGtiParn5bm2cZVqDYjCLw2YZNqdEvCfnPDhq8y NMTdd3kwyXIf2GwW8gFE7yR1JTc9VCo7gQZUsTvtu3CRN+BR946+GBX9DWbLWU+uiCI9 5WSBQLXgKLp+32Jecu+0996Pxv0n8u+xiRNxvX9w4RUQNSbJrrWLJj6ttfzD/3gqghYn 67hHosnZRGXiO06zY+C9+qb9EpH2wU1OTfUPNJleZ0v6v1YmaCC6V6aK1RQl4VYS2thw dsYShcDu+53rcMPSX26TxSp0rBQ35SbOwe7MXYffH4iULR5H7GwY4DHMqrRAPW7l0nW/ l4tQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e21-20020a1709067e1500b0099bcf4fc3d8si9035860ejr.330.2023.08.15.08.28.09; Tue, 15 Aug 2023 08:28:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 748CC68C6E4; Tue, 15 Aug 2023 18:27:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org 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_Denis-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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TcSuGm8gz10W 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 */ From patchwork Tue Aug 15 15:27:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= X-Patchwork-Id: 43229 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4c9d:b0:130:ccc6:6c4b with SMTP id fq29csp648119pzb; Tue, 15 Aug 2023 08:27:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEeDfD35qgrqP73jJ1ndY4tEQfEtQpB8QvJUjvJrZ291XWngQv/STZoYLuRTH+XHB/qLs9i X-Received: by 2002:a17:907:a42a:b0:988:d841:7f90 with SMTP id sg42-20020a170907a42a00b00988d8417f90mr2198990ejc.27.1692113279557; Tue, 15 Aug 2023 08:27:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692113279; cv=none; d=google.com; s=arc-20160816; b=sYHpr1Q5DY99wD2UB8vWpGuAoiu0TMys+p6GoCDPt6cUGsJu85QR+n2hRZqQmG8nly iD2EwDpXz2ycsPv2CEn6pFdQtq5zSjniFavSipggE+A0H6EnGPYd+l7h5FPTJUxAf5c5 ebjzXOLg4ui+kxahM+QUXwYVJlmAnvpYSLmMjVSOX6P3a6N/eleAozAvJLy5VSoeUXTB 5yV9JUDStH7cqr/3jO9N95kt4fLuCk8tokPwoFhuYqR8rgqetiMFbVmskjYKi1gui/Y8 W4c0HFaquTOX4K0J4mvb16+DOR57e308kIL9tyPQY7UNmnTsi3VC5qyb//56ALBhyxZX 1/jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=2nymFQ/zuRyB3CqGW05J3PMqwbYVEeWBziJkeHKHcqs=; fh=hQcp50obTJ8bXC1it5NuEN23RGKfx0/zZ3s2gmreL+A=; b=r2SdnO4mzZziCMF3fZm05BIAWjtJQbgWHRvr7GkWhQO61ovqv/n8SFigHc1EVJvU4f v83w31Hy/4XbieAXTzMtbUPq8dZBlAAC0Cm0cmCVuHctomkOHWt0BAfnTaU6zVUlf8XZ kXLqGK0KjKf4j1XAtVwnhe5mLN7OpYFeoCU2tvA6sQxZ2PcCCnW0A1RydhUmI/30Yskm NRXjOHIcfBO9U9ZznCcBa43QLfczEfQHVNk2pXVpG9nYBSu3F+TqZHb5pvoC9/jztEus mbnOoCe+YyoMZENkw17dSllF2VW8/DazTFCPvQ3xyWOC/DFsHIy7cAT97kMpvVtNH1VQ 8KZg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id kd11-20020a17090798cb00b0098e1c7a62casi8806837ejc.334.2023.08.15.08.27.58; Tue, 15 Aug 2023 08:27:59 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4D8A668C684; Tue, 15 Aug 2023 18:27:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ursule.remlab.net (vps-a2bccee9.vps.ovh.net [51.75.19.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6E59A68B947 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 078EFC0165 for ; Tue, 15 Aug 2023 18:27:47 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Aug 2023 18:27:46 +0300 Message-Id: <20230815152747.28925-2-remi@remlab.net> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] lavu/timer: remove gratuitous volatile 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sKYFnTAQt9sj AV_READ_TIME has no side effects. It does not need to be volatile. --- libavutil/riscv/timer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavutil/riscv/timer.h b/libavutil/riscv/timer.h index c2465a4524..b418d13a26 100644 --- a/libavutil/riscv/timer.h +++ b/libavutil/riscv/timer.h @@ -29,13 +29,13 @@ static inline uint64_t ff_read_time(void) #if (__riscv_xlen >= 64) uintptr_t cycles; - __asm__ volatile ("rdtime %0" : "=r" (cycles)); + __asm__ ("rdtime %0" : "=r" (cycles)); #else uint64_t cycles; uint32_t hi, lo, check; - __asm__ volatile ( + __asm__ ( "1: rdtimeh %0\n" " rdtime %1\n" " rdtimeh %2\n" From patchwork Tue Aug 15 15:27:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= X-Patchwork-Id: 43231 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4c9d:b0:130:ccc6:6c4b with SMTP id fq29csp648320pzb; Tue, 15 Aug 2023 08:28:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGndq7clwq/pplEPRMI/os0BjvsfLtnnnCyD1If4U3M1+1Uh0yncg3EaSC5yT7rrphz6e5J X-Received: by 2002:a17:906:76d0:b0:99b:4668:8666 with SMTP id q16-20020a17090676d000b0099b46688666mr10985093ejn.6.1692113300050; Tue, 15 Aug 2023 08:28:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692113300; cv=none; d=google.com; s=arc-20160816; b=R84hhJM6w4dUPE4x1zMxEFT7eRG0gJZnCInJw7V2atXVb/BWTZmRoJyBtSRL7A9mU7 0k5QGLIZfhSP1BFXoKc9DWriW+P/uAAWIqtU0HiFAgziyAFd2lYJpdFB5iqPAufrQRJN WtaMfcyJ5wEJd6FGDv1ruM6Z17EO18LXnlLMWKW0cuN7Ge13ic451YXvlRhgg2mE0/P3 VkzsVLYxmd3uh11OP5ZM4Skrl7SjX5CqqipEjvkbprlKWehQRCbNJwZYLoLLgOREWAaP lGTTylNYcHElzierHw7jdUc0CGfXaLfJAs/Jsqn+5dfKtS/K/Lgq2D2lD958FgQ4l43f YQRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=+qSMtd9hgsdgQZbZa+a0zdSHvGysAOmj9tTgIGwctMg=; fh=hQcp50obTJ8bXC1it5NuEN23RGKfx0/zZ3s2gmreL+A=; b=rvSg5Z58CGBrUR7sqVOjTIBlGSSdV3FEp/JWLA43Rk9gDELHgeWLqbWvXUKNPehwQp /f3HMXUo/TnJ9BC3Ydmq6xLoQkhNnO0yeMyUudTmOB+WmIWWPG0G6t1GBlLNBNhlEFEI r3nEoCreU/gZcWx44lKOphHyJcGpj2abVuc0ZdCwO/zTcT2DJwQJ+XIdAITol08dBtKz GYCGoJV3+zd3Ye0tgQ+A1lm7iUeyLLd5iNn334QPKG6juzxrLbQyV/wLVHzlwuLy4JHd rJNk0+cZriKGHN0d+IJEhiD0PnSkKw5pmkWVd8bvMNnkiIAJot4gDCiq2RqvRolroGhW ITgw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gx7-20020a170906f1c700b0099bcc0b48e4si9693836ejb.229.2023.08.15.08.28.19; Tue, 15 Aug 2023 08:28:20 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C74C68C6EF; Tue, 15 Aug 2023 18:27:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ursule.remlab.net (vps-a2bccee9.vps.ovh.net [51.75.19.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8496A68C684 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 3247AC018D for ; Tue, 15 Aug 2023 18:27:48 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Aug 2023 18:27:47 +0300 Message-Id: <20230815152747.28925-3-remi@remlab.net> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] lavu/timer: specify RISC-V time unit 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5tKnl096Roap --- libavutil/riscv/timer.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/riscv/timer.h b/libavutil/riscv/timer.h index b418d13a26..df1a730b5e 100644 --- a/libavutil/riscv/timer.h +++ b/libavutil/riscv/timer.h @@ -48,6 +48,7 @@ static inline uint64_t ff_read_time(void) } #define AV_READ_TIME ff_read_time +#define FF_TIMER_UNITS "ticks" #endif #endif /* AVUTIL_RISCV_TIMER_H */