Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp2750058rwb; Fri, 11 Nov 2022 14:18:00 -0800 (PST) X-Google-Smtp-Source: AA0mqf6xx8fjOrhXWxVP9Rq+SkySaL9mV2xj8qH9325WaKtAlvQE2c0QCIASun5YM21xUdr11ACn X-Received: by 2002:a17:90a:1b44:b0:213:4959:fb74 with SMTP id q62-20020a17090a1b4400b002134959fb74mr3959124pjq.190.1668205079937; Fri, 11 Nov 2022 14:17:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668205079; cv=none; d=google.com; s=arc-20160816; b=dMOPruI22zc6Nc/VCu9sCeAfuQ3HP4Akl4FlcG5uJZC50OXKzpueGfnLXa91w4KXZP MUa7Z/hyl6rBpmJGt7ShfzCZDInXzRvl7RL/LqXs0tzJkFf0kv0/eMTabLdT8+sZi7Oa +oW26h7B5K8rW3y7InPOeLHxyHaMI5rUkCntkgZhQMSn9zc0Z8KChp1IAk3CEH3TGYM1 ajx4q55Ax8H5mD6cC+H9Vl/ctsWX1mTjNPCzkBkf4lrPQiBz3GACLqOjMG0lCOs4Ivhm IuhA1b5PObJpW4HUZCIV/XeprnTt+qvPL9WhnDwCkgrnf3H4nkj7OTKeWoZxbFySGU7y vS8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :content-language:references:cc:to:subject:from:user-agent :mime-version:date:message-id:dkim-signature; bh=beLHtOxF6kCxGUTEGseHfS+O7VRs82p3voVTAU84sF8=; b=eyGPFjohfk6grGcoM1JmkORDg5vunUdptXpLffeqT3oDwoxCk7YdtaZbJMg/33p9C9 hIXwFP9hgGdL9EN4MrbXPTH21LljC2cIoqI8rY7wL6DWfo47/IzwiuHVvaNNeUlX9T5y 0R1a7hPUnxlLwghfNKP5GBeCzQO4V7ifO1O90Dr4SxWkmayv6uWy+1HtnZNUu0qYcBOn fGiIWF1okZ0amJ7kQ1g76BpmA5VtAKOc2bEWROWJtRouPRsSMyC5rGgKii8CUAsGWSsl Nnqz2HmJShEiY1ECvOay0lo9PgFs8J8McKemuaXIrLG23+889s6hGy9xuBfZ4bk1NH3i U3kw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b="msZ2/Yz8"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p14-20020a17090a74ce00b001fe4eebefe5si7243272pjl.135.2022.11.11.14.17.47; Fri, 11 Nov 2022 14:17:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b="msZ2/Yz8"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234537AbiKKWBX (ORCPT + 90 others); Fri, 11 Nov 2022 17:01:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234157AbiKKWBF (ORCPT ); Fri, 11 Nov 2022 17:01:05 -0500 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 321EA8B44C for ; Fri, 11 Nov 2022 13:59:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:References:Cc:To:Subject:From:MIME-Version:Date: Message-ID:Sender:Reply-To:Content-ID:Content-Description; bh=beLHtOxF6kCxGUTEGseHfS+O7VRs82p3voVTAU84sF8=; b=msZ2/Yz8u4rU76Y8q6ZG9RDy/u 7eIwj4NAo98Ht1vduN9HBVABDWJRrPOOHpIJC0OLhPaqdrxmITHHcZqZqFYPGpbEw/KtQngTLuv43 oY+KU7edg+2JE+J2t3XnT4x7ehP0QhtwVUvT1v/zRe4IZ+3u62nvHsB2x1fRs+gb9qOXu/qYGZtCG //Axo3CoxrQScDAY2vDv7GEgwjms8lvMREr+GB7vzsDD9Hp4VKvirZWVnf4CiY0G/t7F0zlulTkaB ViNiYfKOkAUtaUutotnmTx9bDFK+fbCVLtgYQsNjT1VKx3eAkbbvFmoZHF66M/n67f6nRPOPQO+O0 dkSHsabw==; Received: from [2601:1c2:d80:3110::a2e7] by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1otc3p-001OrX-1l; Fri, 11 Nov 2022 21:59:41 +0000 Message-ID: Date: Fri, 11 Nov 2022 13:59:40 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 From: Randy Dunlap Subject: Re: ld.lld: error: undefined symbol: firmware_upload_register To: kernel test robot , Russ Weight , Luis Chamberlain , Greg Kroah-Hartman Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org, Xu Yilun References: <202211092004.GI7IL067-lkp@intel.com> Content-Language: en-US In-Reply-To: <202211092004.GI7IL067-lkp@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi-- On 11/9/22 04:30, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: f141df371335645ce29a87d9683a3f79fba7fd67 > commit: 5cd339b370e29b04b85fbb83f40496991465318e fpga: m10bmc-sec: add max10 secure update functions > date: 5 months ago > config: mips-buildonly-randconfig-r004-20221109 > compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 463da45892e2d2a262277b91b96f5f8c05dc25d0) > 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 mips cross compiling tool for clang build > # apt-get install binutils-mips-linux-gnu > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5cd339b370e29b04b85fbb83f40496991465318e > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > git fetch --no-tags linus master > git checkout 5cd339b370e29b04b85fbb83f40496991465318e > # save the config file > mkdir build_dir && cp config build_dir/.config > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash > > If you fix the issue, kindly add following tag where applicable > | Reported-by: kernel test robot > > All errors (new ones prefixed by >>): > >>> ld.lld: error: undefined symbol: firmware_upload_register > >>> referenced by intel-m10-bmc-sec-update.c > >>> fpga/intel-m10-bmc-sec-update.o:(m10bmc_sec_probe) in archive drivers/built-in.a > -- >>> ld.lld: error: undefined symbol: firmware_upload_unregister > >>> referenced by intel-m10-bmc-sec-update.c > >>> fpga/intel-m10-bmc-sec-update.o:(m10bmc_sec_remove) in archive drivers/built-in.a This happens when (bool) CONFIG_FW_UPLOAD=y and CONFIG_FW_LOADER=m. Ah, it's the old "bool depending on a tristate" problem. There may be some Makefile fix for this - I don't know. Or the Kconfig fix works AFAICT (below). Change FW_UPLOAD to a tristate and modify 2 header files for exports/inlines. Luis -- how was FW_LOADER=m and FW_UPLOAD=y supposed to work? Thanks. -- --- drivers/base/firmware_loader/Kconfig | 2 +- drivers/base/firmware_loader/sysfs.h | 2 +- include/linux/firmware.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff -- a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig --- a/drivers/base/firmware_loader/Kconfig +++ b/drivers/base/firmware_loader/Kconfig @@ -204,7 +204,7 @@ config FW_CACHE If unsure, say Y. config FW_UPLOAD - bool "Enable users to initiate firmware updates using sysfs" + tristate "Enable users to initiate firmware updates using sysfs" select FW_LOADER_SYSFS select FW_LOADER_PAGED_BUF help diff -- a/drivers/base/firmware_loader/sysfs.h b/drivers/base/firmware_loader/sysfs.h --- a/drivers/base/firmware_loader/sysfs.h +++ b/drivers/base/firmware_loader/sysfs.h @@ -99,7 +99,7 @@ struct fw_sysfs * fw_create_instance(struct firmware *firmware, const char *fw_name, struct device *device, u32 opt_flags); -#ifdef CONFIG_FW_UPLOAD +#if IS_ENABLED(CONFIG_FW_UPLOAD) extern struct device_attribute dev_attr_status; extern struct device_attribute dev_attr_error; extern struct device_attribute dev_attr_cancel; diff -- a/include/linux/firmware.h b/include/linux/firmware.h --- a/include/linux/firmware.h +++ b/include/linux/firmware.h @@ -170,7 +170,7 @@ static inline int request_partial_firmwa #endif -#ifdef CONFIG_FW_UPLOAD +#if IS_ENABLED(CONFIG_FW_UPLOAD) struct fw_upload * firmware_upload_register(struct module *module, struct device *parent,