From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 017C2C433E0 for ; Thu, 11 Mar 2021 18:52:03 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 77E9864FAF for ; Thu, 11 Mar 2021 18:52:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 77E9864FAF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E85318D02E0; Thu, 11 Mar 2021 13:52:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E35DA8D02B2; Thu, 11 Mar 2021 13:52:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D01128D02E0; Thu, 11 Mar 2021 13:52:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0115.hostedemail.com [216.40.44.115]) by kanga.kvack.org (Postfix) with ESMTP id AE7E68D02B2 for ; Thu, 11 Mar 2021 13:52:01 -0500 (EST) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6A056180ACF8B for ; Thu, 11 Mar 2021 18:52:01 +0000 (UTC) X-FDA: 77908488042.02.A2B59CF Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf19.hostedemail.com (Postfix) with ESMTP id DC23090009F0 for ; Thu, 11 Mar 2021 18:51:58 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 6FE8964FE0; Thu, 11 Mar 2021 18:51:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1615488719; bh=wKRABhxtKp7MBFdE9mBHR6d7D5et9IuPdNzG6UUhoD0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hEsBfIvDBdy4GpD9ttxm3twbcaWOIqTek5N/dJoMBMsjjUujQe+MTY1dFkhA4/VVO DTuS6YEEoFPDBQBmYjFXZhcixjkhIXgs0jMdTCK5O+DKH7YC1eJNEBiVWEccJ+B5o2 qANJ7kHlP3OzHbHy1m51eAHcRdY4E/GAD/9ZZVyCbAgkpI6HVaZTS1AZ6TrlFYIfEI spgJrm+uo+XwWagKws4G3QOea+U3oVaLfXLfS8ONBcqwalOxRJcWx1wM6V3nBd2Lor Wys57IE+OAWu93z4WZkEkCOH+wvanIUQUxL/WqCQjKMiyWYM9SL0F0yaUeRiR0LnB/ 9o6hLjUZGvFdw== Date: Thu, 11 Mar 2021 11:51:54 -0700 From: Nathan Chancellor To: Maximilian Luz Cc: kernel test robot , kbuild-all@lists.01.org, clang-built-linux@googlegroups.com, Linux Memory Management List , Hans de Goede Subject: Re: [linux-next:master 1430/3917] drivers/platform/surface/surface_aggregator_registry.c:398:25: warning: implicit conversion from 'int' to '__u8' (aka 'unsigned char') changes value from 65535 to 255 Message-ID: <20210311185154.6uysryumfho73zlb@archlinux-ax161> References: <202103112158.loq4oyJu-lkp@intel.com> <8c252429-5000-0649-c49f-8225d911241b@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8c252429-5000-0649-c49f-8225d911241b@gmail.com> X-Stat-Signature: udksgg3xfcgpou7q4xhztwc4mqoia7ej X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DC23090009F0 Received-SPF: none (kernel.org>: No applicable sender policy available) receiver=imf19; identity=mailfrom; envelope-from=""; helo=mail.kernel.org; client-ip=198.145.29.99 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1615488718-218838 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Mar 11, 2021 at 02:39:03PM +0100, Maximilian Luz wrote: > On 3/11/21 2:06 PM, kernel test robot wrote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > > head: 98546348153dee5f8ced572fd6c4690461d20f51 > > commit: 797e78564634275ed4fe6b3f586c4b96eb1d86bc [1430/3917] platform/surface: aggregator_registry: Add base device hub > > config: arm64-randconfig-r026-20210311 (attached as .config) > > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 574a9dabc63ba1e7a04c08d4bde2eacd61b44ce1) > > reproduce (this is a W=1 build): > > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > > chmod +x ~/bin/make.cross > > # install arm64 cross compiling tool for clang build > > # apt-get install binutils-aarch64-linux-gnu > > # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=797e78564634275ed4fe6b3f586c4b96eb1d86bc > > git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git > > git fetch --no-tags linux-next master > > git checkout 797e78564634275ed4fe6b3f586c4b96eb1d86bc > > # save the attached .config to linux build tree > > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 > > > > If you fix the issue, kindly add following tag as appropriate > > Reported-by: kernel test robot > > > > All warnings (new ones prefixed by >>): > > > > In file included from drivers/platform/surface/surface_aggregator_registry.c:12: > > In file included from include/linux/acpi.h:35: > > In file included from include/acpi/acpi_io.h:7: > > In file included from arch/arm64/include/asm/acpi.h:12: > > include/linux/efi.h:1093:34: warning: passing 1-byte aligned argument to 4-byte aligned parameter 2 of 'get_var' may result in an unaligned pointer access [-Walign-mismatch] > > status = get_var(L"SecureBoot", &EFI_GLOBAL_VARIABLE_GUID, NULL, &size, > > ^ > > include/linux/efi.h:1101:24: warning: passing 1-byte aligned argument to 4-byte aligned parameter 2 of 'get_var' may result in an unaligned pointer access [-Walign-mismatch] > > get_var(L"SetupMode", &EFI_GLOBAL_VARIABLE_GUID, NULL, &size, &setupmode); > > ^ > > >> drivers/platform/surface/surface_aggregator_registry.c:398:25: warning: implicit conversion from 'int' to '__u8' (aka 'unsigned char') changes value from 65535 to 255 [-Wconstant-conversion] > > { SSAM_VDEV(HUB, 0x02, SSAM_ANY_IID, 0x00) }, > > ~ ^~~~~~~~~~~~ > > This is a false positive: > > > include/linux/surface_aggregator/device.h:71:23: note: expanded from macro 'SSAM_ANY_IID' > > #define SSAM_ANY_IID 0xffff > > ^~~~~~ > > Here, clang complains that the input is SSAM_ANY_ID. That is a special > value which has special considerations below. The SSAM_DEVICE() and > thus SSAM_VDEV() macros are intended to only allow either __u8 or > SSAM_ANY_ID as input in this place. > > > include/linux/surface_aggregator/device.h:126:63: note: expanded from macro 'SSAM_VDEV' > > SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, tid, iid, fun) > > ^~~ > > include/linux/surface_aggregator/device.h:102:41: note: expanded from macro 'SSAM_DEVICE' > > .instance = ((iid) != SSAM_ANY_IID) ? (iid) : 0, \ > > ^~~ > > Here is the special handling for SSAM_ANY_ID. So there is an implicit > conversion from iid, which may be __u8, to int (i.e. the type of > SSAM_ANY_ID), but there is at no point any implicit conversion of > SSAM_ANY_ID to __u8, as clang alleges. Looks like we are getting bit by https://llvm.org/pr38789 here (also tracked at https://github.com/ClangBuiltLinux/linux/issues/92). > Is there any way to silence this warning in particular without > suppressing it (e.g. by explicit casting) when users of this macro > _actually_ input any non-u8 and non-SSAM_ANY_ID value as iid, > leading to an _actual_ implicit value-changing cast? This has been worked around once before, commit b27aca2e555f ("soc: rockchip: work around clang warning"). I am not sure of another way to silence the warning in specific instances like you described aside from just fixing clang (which is obviously the correct solution) so that we will get real warnings. Unfortunately, the patch that is linked in the LLVM PR above does not appear to fix this instance. Cheers, Nathan > I believe GCC does get this right and only emits a warning if a > non-u8 _and_ non-SSAM_ANY_ID value is input. > > Regards, > Max > > > 3 warnings generated. > > > > > > vim +398 drivers/platform/surface/surface_aggregator_registry.c > > > > 396 > > 397 static const struct ssam_device_id ssam_base_hub_match[] = { > > > 398 { SSAM_VDEV(HUB, 0x02, SSAM_ANY_IID, 0x00) }, > > 399 { }, > > 400 }; > > 401 > > > > --- > > 0-DAY CI Kernel Test Service, Intel Corporation > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org > > >