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=-9.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 9B113C433E0 for ; Fri, 12 Mar 2021 00:13:29 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 28E0F64F86 for ; Fri, 12 Mar 2021 00:13:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 28E0F64F86 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id B45F58D031A; Thu, 11 Mar 2021 19:13:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AF7F98D0317; Thu, 11 Mar 2021 19:13:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 997468D031A; Thu, 11 Mar 2021 19:13:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0233.hostedemail.com [216.40.44.233]) by kanga.kvack.org (Postfix) with ESMTP id 6A8E18D0317 for ; Thu, 11 Mar 2021 19:13:28 -0500 (EST) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 221E68249980 for ; Fri, 12 Mar 2021 00:13:28 +0000 (UTC) X-FDA: 77909298096.01.AD2426D Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by imf10.hostedemail.com (Postfix) with ESMTP id BD333407F8FA for ; Fri, 12 Mar 2021 00:13:23 +0000 (UTC) Received: by mail-ej1-f48.google.com with SMTP id ox4so34341210ejb.11 for ; Thu, 11 Mar 2021 16:13:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=QsUXZR9XS9PG5oKJhSRrJkrlaZau+ttlNcJKeApcmrU=; b=tpybh/hfCbQJLA8O5MB1v7eNEY5sDEY+k5WlgVlfv+K64eCqhF/QMxauUjLHZJaFHT kDB+K5fIPkaXdQVzPPa5ACO0H5NyMUma3piIKBqFg9Vu0DuA9k8ZE+M28GzPg8wrf15M oKnG57fe42cGaXUy1RvSqOoqqiJbNo7sdoy0VIZIWp3QeWkunII82/8nWm3vf8COQG4J Ql47aHdi4qveduQbla6jZ0JobcNjLxxH4juIsESdfcRD2ECRqjVGcgwIiy/CFcKpY99V GTy5ewIipsiJQZxc93er5bcLQUDlnxk3suScSk4nmwyTZcwhXwfitgvpcFGvw+DOeRr0 tBtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=QsUXZR9XS9PG5oKJhSRrJkrlaZau+ttlNcJKeApcmrU=; b=LK08KtmjwFVRZSvaYaZoJceD9M2F7WUYQBaZVIpg49M0pHWgK8narhZqqza8p2Y52N JVA9SwAyy6UmzJmwk8xbCQlN1iO//4n6X62asbsNMIxokdWTCztlz28SFcul2PKKHjTd keNqOKt3/f1+lMlpSdpgr5YrDjnqGRiZV+Ihker73YDhzgGsSIJhDXugisyvnNU9hpXn 4ta5e+0HMyEPXT6iSG1KxM75mmLUjDv0FZUe+GFwaMoiQbhe9qkDwXp7L54sR8w+WzOz BFG7QHKueNXAIDLa+K70hOxm1TZcNQB576fEwAskpZ0Quau61e1l7Qew3dHD4ulZoTnv slTg== X-Gm-Message-State: AOAM530qC3Vnczvaig5xzEnahlOpPN8aIfNjfXBfrEOYk5lWPCbaC/1m 9LVZ9qZ/O9QLj8t09dDcAlA= X-Google-Smtp-Source: ABdhPJxKsBKIpJ48b9g81R/UwjO2O2/xfrWsmCVYb9psApcSh7OpHO8cghsgnEPBNNaNuRELTVfftg== X-Received: by 2002:a17:906:1a44:: with SMTP id j4mr5759061ejf.401.1615508006304; Thu, 11 Mar 2021 16:13:26 -0800 (PST) Received: from [10.20.0.8] ([37.58.58.229]) by smtp.gmail.com with ESMTPSA id k9sm2182001edn.68.2021.03.11.16.13.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 11 Mar 2021 16:13:25 -0800 (PST) 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 To: Nathan Chancellor Cc: kernel test robot , kbuild-all@lists.01.org, clang-built-linux@googlegroups.com, Linux Memory Management List , Hans de Goede References: <202103112158.loq4oyJu-lkp@intel.com> <8c252429-5000-0649-c49f-8225d911241b@gmail.com> <20210311185154.6uysryumfho73zlb@archlinux-ax161> From: Maximilian Luz Message-ID: <7db15c91-db37-69a4-84b7-6f58cca2ee1b@gmail.com> Date: Fri, 12 Mar 2021 01:13:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210311185154.6uysryumfho73zlb@archlinux-ax161> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Stat-Signature: 4nomkog6inib1hc5q3ch1ecc5mdaehny X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: BD333407F8FA Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf10; identity=mailfrom; envelope-from=""; helo=mail-ej1-f48.google.com; client-ip=209.85.218.48 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1615508003-371847 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 3/11/21 7:51 PM, Nathan Chancellor wrote: > 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). Thanks for the links! Looks like this is the same issue. >> 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. So what's the way forward here? Ignore this warning for now and wait for the clang team to fix it or find a workaround? The best workaround I can come up with is setting the match_flags parameter directly as macro argument, which would be a bit more verbose and feel slightly less clean, but would do the trick. Also note that any changes to those macros would have to be synchronized with a couple of patches which are still out to non-pdx86 trees, so if we're working around this it's best to do this as soon as possible. Specifically talking to Hans here, as those patches all have a dependency on stuff that's only in the pdx86 tree right now. I.e. getting the workaround in before setting up a tag for those dependencies would simplify things. Regards, Max > 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 >>> >>