From patchwork Tue Feb 14 12:25:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shiyou Yin X-Patchwork-Id: 40393 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp4283542pzk; Tue, 14 Feb 2023 04:26:12 -0800 (PST) X-Google-Smtp-Source: AK7set/w+o4A2FaneCWOp+mBqDu/wDm/mbidBmAxTP4HVtxTbj/7kl+89ZS6VSyRYbkkd+zK/E0O X-Received: by 2002:a17:907:3208:b0:8ac:f02b:7ea8 with SMTP id xg8-20020a170907320800b008acf02b7ea8mr29585938ejb.6.1676377571894; Tue, 14 Feb 2023 04:26:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676377571; cv=none; d=google.com; s=arc-20160816; b=GCarrCcZyvPH0xWlPYUwBX2EO5778pGZJIZYTRJa+6wzdi1jqwAVlmEFhZW75gWFym YeQ7I8oP1oUY5yMLKp87ZFeh53l3hMaAY41ksB8jG/K2y3fyS5cl1oU2rtlUdCHBjxbc q50C6BjQ3Vv0XuzZXr03+7JCQV0giA6aoBwR0zvEyyVuxntM9/5RnSvTI1jjbDvKhLL+ vUlvA/3W4bGHr8oDzQNmUWkwZJpxft/Lbo+YTWiUNWgkkC/LXYhjOPdghIl4DgvWC07f CmDQD0vVPTa4lf4glfZoAgZu0Twnjq2atizlUzdPoUqpMs3u6mFo5ca1DiDbmQl6tf+D cYWg== 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=qqtEgAdeksud0ytxlxDLpOfZIgFqja/6tu8rCBuOHao=; b=c14HIsdfdvP3aK890e0ytMcGQ+WXMDWxR+kcOtxXdfn66J3foNXEaqcdAYu3EbitAx D/LGg4XxTqy/WrArIsqyAfJsNZurA4V7jUGw0uSNX0Wd2au+6YxMabPbV3BxIRO9Ykwx zCk62I0poXZaUyZdHNz+DLZU9JwEj2WnVxqLZkK73KzgsKEPA05g4lMktQ23Sh91Vyxo 5ZtyzYI1z9npybA5ddLDUCdXr82GUc8Siz3rTFr2iNVdDIL6wDv/YNCXDj+9g7cvGmT0 n9kZPQ1G5/6BwFmDT1VZiVGN9aaatQRLmWFyIq2+6PGYsQnqeEP3a09ekeySVJVLDg1E 34ww== 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 uk7-20020a170907ca0700b008897b74cf85si17186627ejc.839.2023.02.14.04.26.11; Tue, 14 Feb 2023 04:26:11 -0800 (PST) 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 CF43B68BE7B; Tue, 14 Feb 2023 14:26:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8533E68BD27 for ; Tue, 14 Feb 2023 14:26:00 +0200 (EET) Received: from loongson.cn (unknown [36.33.26.144]) by gateway (Coremail) with SMTP id _____8CxSNnWfetjQ4UAAA--.1272S3; Tue, 14 Feb 2023 20:25:58 +0800 (CST) Received: from localhost (unknown [36.33.26.144]) by localhost.localdomain (Coremail) with SMTP id AQAAf8AxHuTUfetjXdcyAA--.58161S3; Tue, 14 Feb 2023 20:25:56 +0800 (CST) From: Shiyou Yin To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Feb 2023 20:25:56 +0800 Message-Id: <20230214122556.24384-1-yinshiyou-hf@loongson.cn> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CM-TRANSID: AQAAf8AxHuTUfetjXdcyAA--.58161S3 X-CM-SenderInfo: p1lq2x5l1r3gtki6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjvJXoW7tFy7AFyUJw13trWkCry3Arb_yoW8GrWxpr sayF12yr4DKFySyws7Jr10qrs5Xrs7CFy2vFW3W34kCF45Zr1UZr9YyFZI9Fy5WFWkXFy2 9a4DC3WSva4DJaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU b7xYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVWUCVW8JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwA2z4 x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Cr1j6rxdM2AI xVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I8CrVACY4xI64 kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AKxVW8JVWxJwAm 72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64vIr41l4I8I3I 0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWU GVWUWwC2zVAF1VAY17CE14v26r1j6r15MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI 0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0 rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r 4UYxBIdaVFxhVjvjDU0xZFpf9x07UiiSdUUUUU= Subject: [FFmpeg-devel] [PATCH] avutil: [LA] use getauxval to do runtime check. 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: hz9lvlwk5BD/ Replace cpucfg with getauxval to avoid crash in case of some processor capabilities are not supportted by kernel used. --- libavutil/loongarch/cpu.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/libavutil/loongarch/cpu.c b/libavutil/loongarch/cpu.c index e4b240bc44..cad8504fde 100644 --- a/libavutil/loongarch/cpu.c +++ b/libavutil/loongarch/cpu.c @@ -21,26 +21,18 @@ #include #include "cpu.h" +#include -#define LOONGARCH_CFG2 0x2 -#define LOONGARCH_CFG2_LSX (1 << 6) -#define LOONGARCH_CFG2_LASX (1 << 7) - -static int cpu_flags_cpucfg(void) +#define LA_HWCAP_LSX (1<<4) +#define LA_HWCAP_LASX (1<<5) +static int cpu_flags_getauxval(void) { int flags = 0; - uint32_t cfg2 = 0; - - __asm__ volatile( - "cpucfg %0, %1 \n\t" - : "+&r"(cfg2) - : "r"(LOONGARCH_CFG2) - ); + int flag = (int)getauxval(AT_HWCAP); - if (cfg2 & LOONGARCH_CFG2_LSX) + if (flag & LA_HWCAP_LSX) flags |= AV_CPU_FLAG_LSX; - - if (cfg2 & LOONGARCH_CFG2_LASX) + if (flag & LA_HWCAP_LASX) flags |= AV_CPU_FLAG_LASX; return flags; @@ -49,7 +41,7 @@ static int cpu_flags_cpucfg(void) int ff_get_cpu_flags_loongarch(void) { #if defined __linux__ - return cpu_flags_cpucfg(); + return cpu_flags_getauxval(); #else /* Assume no SIMD ASE supported */ return 0;