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 */