Message ID | 20240128-fix-clang-warnings-v1-3-1d946013a421@chromium.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2395:b0:106:343:edcb with SMTP id gw21csp757084dyb; Sat, 27 Jan 2024 18:13:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IEs+47ZUSVQ9qYv8obWRkB2J870YJlGHWGWQFIGv49qU11D3iCyON4vUWPf6iRM3lvxzKOL X-Received: by 2002:a05:6808:3186:b0:3bd:a199:cea2 with SMTP id cd6-20020a056808318600b003bda199cea2mr6210196oib.30.1706408020484; Sat, 27 Jan 2024 18:13:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706408020; cv=pass; d=google.com; s=arc-20160816; b=KTcihkcPi4fUMeb4J/0NatKrscoKkflpBLNn8svDk2cvttob06jLh8LaW8vKhTBwh0 4Mot8nYoSDVjRw9IDy2QBh7K0OmzKfTXnlAc1J+n2OQO/6JoE5E2JbJYzbKUL7IOwM7v G1UAGyFyLeuNBrYbAw3VcIGcNz/DWqSexMTEC+IwWJL+aXActw39Gpfm1xK8JdV+dD6I fuHiaOeweaW4jecuvKGj4n+f69jH/+jrqXnMiEm2DQ/eawX31yqBVd8mj4+C3uWmH1qq H3ROs0LfcJugfDBuj0bcR8Rid8FpzxoO7J9rzctw2NXki4flfkfEnj94iDWEDqvhFVQQ IWWw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:dkim-signature; bh=j3C7WQBZgNLZ3JFZZb+3FA3visUd8j+r0zGWZyg3Ybg=; fh=gnL8uShfXrBm11n/oB2cBj/6LDJpR2x+b96Zpkf7O6U=; b=iMtjmZiuoxLvA8myJwhLDb1RYXYhpX2nzQnJZYIxnY29Ipp6JupwCoMauhIjS2nA0Z Q6D9rUZjEj3nlJyJq/4KrJSsR1GWCHiC5zQCKPj2rn5P7zaMJp00ik6aBQGGIAeqJ/6b D49ETAhHqmqrU/wW2wg+u1dS7XQc1dAENmPszp27FHPDWOhjelWrilFICoT9Rs2tBDeL uSKY3zsPdjWkYLUyO5BYNQVjhaxmXLmBK99HNWHRa4t3SfdHHO6yoTyLBIhq4DYrJeEW zl9tX7Fq20I8gSaR0/Cf9SvXXNs/BnA/GFgo3lf857p/oYpPd8G5Il0mepBDSY80RnFG d3xA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cv1kF7YQ; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id d17-20020a170902c19100b001d737fce309si3502371pld.536.2024.01.27.18.13.40 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Jan 2024 18:13:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cv1kF7YQ; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-41499-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 1DE9EB22A82 for <ouuuleilei@gmail.com>; Sun, 28 Jan 2024 02:13:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2FE5CDDDC; Sun, 28 Jan 2024 02:12:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="cv1kF7YQ" Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9E1446AD for <linux-kernel@vger.kernel.org>; Sun, 28 Jan 2024 02:12:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706407947; cv=none; b=DIcXz07GXUteheLDdFW7F6LLPJB2sUp6q2uHIZu9wCKHV1ALozPOQD7/Oq18DX5QUQPKJwK9JKHyBn17mepGm+jJs+b/DwLer8tO0SR4uVi5TVUCJJsehFGvBhixtgec+OOP9k6wwScvhpIzN2yg5ZQv2A9vkKoCEAcK/FXUWuM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706407947; c=relaxed/simple; bh=9FkkM0hWSfNgvycjkBk9G6d+gbIZbwtTlwMJBT/mtG4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j1fgJsXNIaDH3TWIvIg7LlPHwUhfpl6fWKJge/pj8BvNjOcwA/mhw99J+VnZHX6mUYxrtWuRgv7Xv1xKmi55PrrpiX8kIxK5SbcDPseXg90g1Aqp/UUubyNkrPj64PH7JhqzPNLNekBqucNF9hmq3iaqe22ZMWnJv1CunITXSs8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=cv1kF7YQ; arc=none smtp.client-ip=209.85.160.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-42a8be32041so11059891cf.1 for <linux-kernel@vger.kernel.org>; Sat, 27 Jan 2024 18:12:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1706407945; x=1707012745; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=j3C7WQBZgNLZ3JFZZb+3FA3visUd8j+r0zGWZyg3Ybg=; b=cv1kF7YQM5NyC7/Jeh3KhL1qC/id6nz8hCXK0zJzhm7e1QGAwpIJCYF0dg6PoR0CyK sfVoLuXKp+C7E2VFBWxbrVZsg70FX+8gJT9hQP1KicVB9ejLwEZBueXnlyIC1TZNKdn+ FgkdKDKqXmHzMsWOMz6AvdkjUvT8wugbh+RL0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706407945; x=1707012745; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j3C7WQBZgNLZ3JFZZb+3FA3visUd8j+r0zGWZyg3Ybg=; b=iby6QLaKwq6t8D2K9K5JWRFgumaFptCuBfJqvEE5i4NjLc+59ODn65PUrS3FwJ+zUR lS4A2TFZGLa+C12UMnHUkxJ5kfmxfN2w+SuKsbzi32WZq/wWBPp2NZqsG+/ashnqkT8v UduzoB3Sw0b9QIIbWpufsrnz30xtwvi8S9hwPXSa23jwlen/o3cwFAHJRx3PVpoksl0x iakgADIk6hjLnluoBYY74xY0fbki2OwnhLItuMrSJE1SFPh8ojPhpIfMgQvdwqIYBHhj YTpM4P7sjW2TKmdMctTC2dn+W1M4RtXyWbYvK4g8xf5/SWmzG1QJC30Rtf49TKaVEwnj ty2A== X-Gm-Message-State: AOJu0YyLB8/0PMQh7jeagpQGRbw4IlFOWdfBSpUeclNPNPFHDDxEkDIz uZmrkvmO6FOPPuxiRcBbcxz4zpujLMHZ2FNlFKRVizpyhHtLLm3szB123s/BTg== X-Received: by 2002:ac8:4e96:0:b0:42a:87ff:4b0a with SMTP id 22-20020ac84e96000000b0042a87ff4b0amr4978445qtp.99.1706407944870; Sat, 27 Jan 2024 18:12:24 -0800 (PST) Received: from denia.c.googlers.com (240.157.150.34.bc.googleusercontent.com. [34.150.157.240]) by smtp.gmail.com with ESMTPSA id ka23-20020a05622a441700b0042a98bf0117sm568061qtb.78.2024.01.27.18.12.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Jan 2024 18:12:24 -0800 (PST) From: Ricardo Ribalda <ribalda@chromium.org> Date: Sun, 28 Jan 2024 02:12:22 +0000 Subject: [PATCH 3/3] media: mediatek: vcodedc: Fix Wcast-function-type-strict warnings Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240128-fix-clang-warnings-v1-3-1d946013a421@chromium.org> References: <20240128-fix-clang-warnings-v1-0-1d946013a421@chromium.org> In-Reply-To: <20240128-fix-clang-warnings-v1-0-1d946013a421@chromium.org> To: Mauro Carvalho Chehab <mchehab@kernel.org>, Nathan Chancellor <nathan@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, Bill Wendling <morbo@google.com>, Justin Stitt <justinstitt@google.com>, Mike Isely <isely@pobox.com>, Tiffany Lin <tiffany.lin@mediatek.com>, Andrew-CT Chen <andrew-ct.chen@mediatek.com>, Yunfei Dong <yunfei.dong@mediatek.com>, Matthias Brugger <matthias.bgg@gmail.com>, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Ricardo Ribalda <ribalda@chromium.org> X-Mailer: b4 0.12.3 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1789298496312877889 X-GMAIL-MSGID: 1789298496312877889 |
Series |
media: Fix warnings building with LLVM=1
|
|
Commit Message
Ricardo Ribalda
Jan. 28, 2024, 2:12 a.m. UTC
Building with LLVM=1 throws the following warning:
drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict]
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
Comments
On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: > Building with LLVM=1 throws the following warning: > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> I am not positive because I don't have any hardware to test this driver but I suspect this patch is just hiding the warning without actually addressing the issue that it is pointing out. If handler is called through vpu_ipi_register() indirectly (which it obviously is if it is being passed down), there will be a CFI failure because the type of mtk_vcodec_ipi_handler is not the same as ipi_handler_t, as the comment mentions. Has this seen testing on real hardware with kCFI? > --- > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c b/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c > index 9f6e4b59455d..781a0359afdc 100644 > --- a/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c > +++ b/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c > @@ -33,9 +33,11 @@ static int mtk_vcodec_vpu_set_ipi_register(struct mtk_vcodec_fw *fw, int id, > * The handler we receive takes a void * as its first argument. We > * cannot change this because it needs to be passed down to the rproc > * subsystem when SCP is used. VPU takes a const argument, which is > - * more constrained, so the conversion below is safe. > + * more constrained, so the conversion below is safe. We use the void > + * casting, to convince clang with -Wcast-function-type-sctrict that > + * this is safe. > */ > - ipi_handler_t handler_const = (ipi_handler_t)handler; > + ipi_handler_t handler_const = (ipi_handler_t)((void *)handler); > > return vpu_ipi_register(fw->pdev, id, handler_const, name, priv); > } > > -- > 2.43.0.429.g432eaa2c6b-goog >
On Thu, Feb 1, 2024 at 10:17 PM Nathan Chancellor <nathan@kernel.org> wrote: > > On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: > > Building with LLVM=1 throws the following warning: > > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > I am not positive because I don't have any hardware to test this driver > but I suspect this patch is just hiding the warning without actually > addressing the issue that it is pointing out. Agreed, this won't fix the issue. The correct solution is to drop the cast and change the handler type to match the pointer type (i.e. use const void* for the first argument). Sami
Il 01/02/24 23:25, Sami Tolvanen ha scritto: > On Thu, Feb 1, 2024 at 10:17 PM Nathan Chancellor <nathan@kernel.org> wrote: >> >> On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: >>> Building with LLVM=1 throws the following warning: >>> drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] >>> >>> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> >> >> I am not positive because I don't have any hardware to test this driver >> but I suspect this patch is just hiding the warning without actually >> addressing the issue that it is pointing out. > > Agreed, this won't fix the issue. The correct solution is to drop the > cast and change the handler type to match the pointer type (i.e. use > const void* for the first argument). > Even though I agree that the correct solution is to change the handler's type, I think that having a test on the actual hardware done is still valuable. We scheduled a job on KernelCI to test this commit on our integration kernel, you'll get results for ChromeOS' tast decoders (MT8195 only) and Fluster tests on MT8183/8186/8192/8195. The results should be available in a couple of hours here, relative to commit `49955a84129dbe1f94fedf729690efcf28513828` on our tree: https://chromeos.kernelci.org/job/collabora-chromeos-kernel/branch/for-kernelci/ P.S.: If they don't, feel free to ping me or Nicolas (added to the loop) about it. Cheers, Angelo
On Fri, Feb 02, 2024 at 01:58:05PM +0100, AngeloGioacchino Del Regno wrote: > Il 01/02/24 23:25, Sami Tolvanen ha scritto: > > On Thu, Feb 1, 2024 at 10:17 PM Nathan Chancellor <nathan@kernel.org> wrote: > > > > > > On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: > > > > Building with LLVM=1 throws the following warning: > > > > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] > > > > > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > > > > > I am not positive because I don't have any hardware to test this driver > > > but I suspect this patch is just hiding the warning without actually > > > addressing the issue that it is pointing out. > > > > Agreed, this won't fix the issue. The correct solution is to drop the > > cast and change the handler type to match the pointer type (i.e. use > > const void* for the first argument). > > > > Even though I agree that the correct solution is to change the handler's type, > I think that having a test on the actual hardware done is still valuable. > > We scheduled a job on KernelCI to test this commit on our integration kernel, > you'll get results for ChromeOS' tast decoders (MT8195 only) and Fluster tests > on MT8183/8186/8192/8195. > > > The results should be available in a couple of hours here, relative to > commit `49955a84129dbe1f94fedf729690efcf28513828` on our tree: > https://chromeos.kernelci.org/job/collabora-chromeos-kernel/branch/for-kernelci/ > > P.S.: If they don't, feel free to ping me or Nicolas (added to the loop) about it. Hi, the results are available at https://chromeos.kernelci.org/test/job/collabora-chromeos-kernel/branch/for-kernelci/kernel/v6.8-rc2-3109-g49955a84129d/ (You need to type "decoder" into the search bar to limit the results to only the decoder tests) The only regressions I see are due to infrastructure error or broken test unrelated to this change (v4l2-decoder-conformance-h264-frext test on MT8195-Tomato, and cros-tast-decoder-v4l2-sl-h264 test on MT8183-Juniper) Otherwise, all platforms (MT8183/8186/8192/8195) and video codecs (VP8/VP9/H264/H265/AV1) seem unaffected. Note that these are GCC builds. Thanks, Nícolas
On Fri, Feb 02, 2024 at 03:15:46PM -0500, Nícolas F. R. A. Prado wrote: > On Fri, Feb 02, 2024 at 01:58:05PM +0100, AngeloGioacchino Del Regno wrote: > > Il 01/02/24 23:25, Sami Tolvanen ha scritto: > > > On Thu, Feb 1, 2024 at 10:17 PM Nathan Chancellor <nathan@kernel.org> wrote: > > > > > > > > On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: > > > > > Building with LLVM=1 throws the following warning: > > > > > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] > > > > > > > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > > > > > > > I am not positive because I don't have any hardware to test this driver > > > > but I suspect this patch is just hiding the warning without actually > > > > addressing the issue that it is pointing out. > > > > > > Agreed, this won't fix the issue. The correct solution is to drop the > > > cast and change the handler type to match the pointer type (i.e. use > > > const void* for the first argument). > > > > > > > Even though I agree that the correct solution is to change the handler's type, > > I think that having a test on the actual hardware done is still valuable. > > > > We scheduled a job on KernelCI to test this commit on our integration kernel, > > you'll get results for ChromeOS' tast decoders (MT8195 only) and Fluster tests > > on MT8183/8186/8192/8195. > > > > > > The results should be available in a couple of hours here, relative to > > commit `49955a84129dbe1f94fedf729690efcf28513828` on our tree: > > https://chromeos.kernelci.org/job/collabora-chromeos-kernel/branch/for-kernelci/ > > > > P.S.: If they don't, feel free to ping me or Nicolas (added to the loop) about it. > > Hi, > > the results are available at > > https://chromeos.kernelci.org/test/job/collabora-chromeos-kernel/branch/for-kernelci/kernel/v6.8-rc2-3109-g49955a84129d/ > > (You need to type "decoder" into the search bar to limit the results to only the > decoder tests) > > The only regressions I see are due to infrastructure error or broken test > unrelated to this change (v4l2-decoder-conformance-h264-frext test on > MT8195-Tomato, and cros-tast-decoder-v4l2-sl-h264 test on MT8183-Juniper) > > Otherwise, all platforms (MT8183/8186/8192/8195) and video codecs > (VP8/VP9/H264/H265/AV1) seem unaffected. > > Note that these are GCC builds. Thank you for running the tests to make sure this series does not regress anything. If possible, it would be good to try and build with LLVM and enable kernel Control Flow Integrity (kCFI, CONFIG_CFI_CLANG) to see if my theory that this is currently broken is correct. I have prebuilt LLVM toolchains on kernel.org but if it is too much of a hassle, I would not worry about it. https://mirrors.edge.kernel.org/pub/tools/llvm/ Cheers, Nathan
On Sun, Feb 04, 2024 at 01:55:49PM -0700, Nathan Chancellor wrote: > On Fri, Feb 02, 2024 at 03:15:46PM -0500, Nícolas F. R. A. Prado wrote: > > On Fri, Feb 02, 2024 at 01:58:05PM +0100, AngeloGioacchino Del Regno wrote: > > > Il 01/02/24 23:25, Sami Tolvanen ha scritto: > > > > On Thu, Feb 1, 2024 at 10:17 PM Nathan Chancellor <nathan@kernel.org> wrote: > > > > > > > > > > On Sun, Jan 28, 2024 at 02:12:22AM +0000, Ricardo Ribalda wrote: > > > > > > Building with LLVM=1 throws the following warning: > > > > > > drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c:38:32: warning: cast from 'mtk_vcodec_ipi_handler' (aka 'void (*)(void *, unsigned int, void *)') to 'ipi_handler_t' (aka 'void (*)(const void *, unsigned int, void *)') converts to incompatible function type [-Wcast-function-type-strict] > > > > > > > > > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > > > > > > > > > I am not positive because I don't have any hardware to test this driver > > > > > but I suspect this patch is just hiding the warning without actually > > > > > addressing the issue that it is pointing out. > > > > > > > > Agreed, this won't fix the issue. The correct solution is to drop the > > > > cast and change the handler type to match the pointer type (i.e. use > > > > const void* for the first argument). > > > > > > > > > > Even though I agree that the correct solution is to change the handler's type, > > > I think that having a test on the actual hardware done is still valuable. > > > > > > We scheduled a job on KernelCI to test this commit on our integration kernel, > > > you'll get results for ChromeOS' tast decoders (MT8195 only) and Fluster tests > > > on MT8183/8186/8192/8195. > > > > > > > > > The results should be available in a couple of hours here, relative to > > > commit `49955a84129dbe1f94fedf729690efcf28513828` on our tree: > > > https://chromeos.kernelci.org/job/collabora-chromeos-kernel/branch/for-kernelci/ > > > > > > P.S.: If they don't, feel free to ping me or Nicolas (added to the loop) about it. > > > > Hi, > > > > the results are available at > > > > https://chromeos.kernelci.org/test/job/collabora-chromeos-kernel/branch/for-kernelci/kernel/v6.8-rc2-3109-g49955a84129d/ > > > > (You need to type "decoder" into the search bar to limit the results to only the > > decoder tests) > > > > The only regressions I see are due to infrastructure error or broken test > > unrelated to this change (v4l2-decoder-conformance-h264-frext test on > > MT8195-Tomato, and cros-tast-decoder-v4l2-sl-h264 test on MT8183-Juniper) > > > > Otherwise, all platforms (MT8183/8186/8192/8195) and video codecs > > (VP8/VP9/H264/H265/AV1) seem unaffected. > > > > Note that these are GCC builds. > > Thank you for running the tests to make sure this series does not > regress anything. If possible, it would be good to try and build with > LLVM and enable kernel Control Flow Integrity (kCFI, CONFIG_CFI_CLANG) > to see if my theory that this is currently broken is correct. I have > prebuilt LLVM toolchains on kernel.org but if it is too much of a > hassle, I would not worry about it. We don't have a way in KernelCI to run a one-off test, instead we need to make a PR adding a build definition that will be triggered for every update on a given tree. The results I reported above were for configurations that we already had in place. That said, maybe we should be running with LLVM and CONFIG_CFI_CLANG enabled on a regular basis, if you think it is useful as a general tool for identifying issues. I'd also be interested in hearing more from you on what other kind of clang configs you think might be good to enable in CI to provide value to the community. Thanks, Nícolas
diff --git a/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c b/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c index 9f6e4b59455d..781a0359afdc 100644 --- a/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c +++ b/drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c @@ -33,9 +33,11 @@ static int mtk_vcodec_vpu_set_ipi_register(struct mtk_vcodec_fw *fw, int id, * The handler we receive takes a void * as its first argument. We * cannot change this because it needs to be passed down to the rproc * subsystem when SCP is used. VPU takes a const argument, which is - * more constrained, so the conversion below is safe. + * more constrained, so the conversion below is safe. We use the void + * casting, to convince clang with -Wcast-function-type-sctrict that + * this is safe. */ - ipi_handler_t handler_const = (ipi_handler_t)handler; + ipi_handler_t handler_const = (ipi_handler_t)((void *)handler); return vpu_ipi_register(fw->pdev, id, handler_const, name, priv); }