Message ID | 20221111121518.44145-1-andriy.shevchenko@linux.intel.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp707748wru; Fri, 11 Nov 2022 04:22:34 -0800 (PST) X-Google-Smtp-Source: AA0mqf7/vKL4NBUhKT+ZjtlQGRb7a1D10uCIYbu0ojtGOC4yN2EgUCj4BOTs/rTkhwc736j0lEKa X-Received: by 2002:a17:907:6f17:b0:791:9801:e48a with SMTP id sy23-20020a1709076f1700b007919801e48amr1524407ejc.738.1668169354505; Fri, 11 Nov 2022 04:22:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668169354; cv=none; d=google.com; s=arc-20160816; b=d/iOz3CeNvF80jvnJm7wM5RCZ6ngcLkTJtt5j9IgqtZBi4CkZupZVZi/iOGmVcgr50 YoRME2uiPmrO1UQwuPZZxlq8JGUTtDBaRDpW5OOBxuPGz4uobjbFJetk/HcfVAUWAJGA Z/LWWJXd0XavaAKkrRrRwdz40oQe8uutwjpIdc5kNFMAG/F+J8+0cBd83qm/QEA5H8ov ovXLmsfIeK1Zz3n3hazS3Mgbx0U8RA6ZljZLizxi0yYv2dye48cCDRYMMNRDwx/ZyMxn 1HqWbbMj3s0KfZO45aPRpVGpWnZAE27ulaxvJJXwOyQbGGbSDsZIc9uF9XeMSIsynztI 5mFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=O2hnA/0COpF4s/QLTKqA+Rqy+4dbSzfNofk094FLKf4=; b=eqMJi+cynnpSlzQ4pNp2P2eIqTxnuHgDRjWLJRkqIInNK2Jh2L06MSy3e6np++CNJc Yobh07NzO8Sjg8xnbrPSTwvpOSVOJ9QEh7DRi0O4kQLe6AQKomyo18ApYBud2b7enyjm UNlibP2HF3n5dVm4mRN3bov5JGWw0FNLdrt7odNnkLrZwGaRIhoVfG096/q6zA7Ua1+S pXK5Z60Ks1fl+B4ZmQC4KpyZecx+SSOxrT0SPcfWJABUyuojU99bBBDohEBdXNW0uGba 7geKZW1lsU7BqtUjtJmlY242DNVctpwVI1zV2Lih6N7/RQlswYTwSqZdvHy0h/Be5g68 ojmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lkRAXUfp; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l27-20020a50d6db000000b0046194b2dd53si2167985edj.119.2022.11.11.04.22.09; Fri, 11 Nov 2022 04:22:34 -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=@intel.com header.s=Intel header.b=lkRAXUfp; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233817AbiKKMPE (ORCPT <rfc822;winker.wchi@gmail.com> + 99 others); Fri, 11 Nov 2022 07:15:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232968AbiKKMO7 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 11 Nov 2022 07:14:59 -0500 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C9BD532C0; Fri, 11 Nov 2022 04:14:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668168898; x=1699704898; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=4wRoo7N3PTMuyyFIGGkVMosd0G1YfaK6CY2wTW3dWT4=; b=lkRAXUfpN0lZBBtBTw3+AtfLYQiYCq8bQnGX6GKF574/EjTD2+5vsOO0 x0k7a8xJvpae8GIDIKFJZQCCbgYDyrTOO7PGBK7H8Eu5hrj4cl7XsgR6f 7VUDd5jJIllHDw4tQOi6SGqJvjCcWI6r7ee7XPFoVk/j2G0E0nbmHAE/4 Z6uezAod5MoJJmaoyq44W3d++YJa90D6QqAExHhRGVzpyFKFD8SGxka0R Rsu8rfZgJdo9bA5W47lDCx6Aclc1zl5OGx1UMK+gxfH4HO232Re/u/+D0 nGldqSZ1of7VXsaX2flva52UJkJ/ScHlZX6bIB6NHc9rdVbEW/IkqeSJl g==; X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="291990239" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="291990239" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2022 04:14:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="639997733" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="639997733" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga007.fm.intel.com with ESMTP; 11 Nov 2022 04:14:56 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 6DC32155; Fri, 11 Nov 2022 14:15:20 +0200 (EET) From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Daniel Scally <djrscally@gmail.com>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Sakari Ailus <sakari.ailus@linux.intel.com>, "Rafael J. Wysocki" <rafael@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org> Subject: [PATCH v2 1/2] device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*() Date: Fri, 11 Nov 2022 14:15:17 +0200 Message-Id: <20221111121518.44145-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749202349274096439?= X-GMAIL-MSGID: =?utf-8?q?1749202349274096439?= |
Series |
[v2,1/2] device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*()
|
|
Commit Message
Andy Shevchenko
Nov. 11, 2022, 12:15 p.m. UTC
First of all, _ELEMENT_SIZE() repeats existing sizeof_field() macro.
Second, usage of _ARRAY_ELSIZE_LEN() adds unnecessary indirection
to the data layout. It's more understandable when the data structure
is placed explicitly. That said, get rid of those macros by replacing
them with the existing helper and explicit data structure layout.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v2: rebased on latest Linux Next, fixed anon union assignment
include/linux/property.h | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
Comments
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on next-20221111]
[also build test ERROR on v6.1-rc4]
[cannot apply to linus/master sailus-media-tree/streams v6.1-rc4 v6.1-rc3 v6.1-rc2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/device-property-Get-rid-of-__PROPERTY_ENTRY_ARRAY_EL-SIZE/20221111-201519
patch link: https://lore.kernel.org/r/20221111121518.44145-1-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v2 1/2] device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*()
config: arm-randconfig-r024-20221111
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/5e456016551f46fb1ac6d6e105c5f643ec45dfd5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Andy-Shevchenko/device-property-Get-rid-of-__PROPERTY_ENTRY_ARRAY_EL-SIZE/20221111-201519
git checkout 5e456016551f46fb1ac6d6e105c5f643ec45dfd5
# 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=arm SHELL=/bin/bash drivers/base/test/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/base/test/property-entry-test.c:422:3: error: use of undeclared identifier 'DEV_PROP__Type_'; did you mean 'DEV_PROP_STRING'?
PROPERTY_ENTRY_REF_ARRAY("ref-3", refs),
^
include/linux/property.h:352:2: note: expanded from macro 'PROPERTY_ENTRY_REF_ARRAY'
PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_))
^
include/linux/property.h:337:10: note: expanded from macro 'PROPERTY_ENTRY_REF_ARRAY_LEN'
.type = DEV_PROP_##_Type_, \
^
<scratch space>:114:1: note: expanded from here
DEV_PROP__Type_
^
include/linux/property.h:26:2: note: 'DEV_PROP_STRING' declared here
DEV_PROP_STRING,
^
1 error generated.
vim +422 drivers/base/test/property-entry-test.c
c032ace71c29d5 Dmitry Torokhov 2019-12-04 404
c032ace71c29d5 Dmitry Torokhov 2019-12-04 405 /* Handling of reference properties */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 406 static void pe_test_reference(struct kunit *test)
c032ace71c29d5 Dmitry Torokhov 2019-12-04 407 {
c032ace71c29d5 Dmitry Torokhov 2019-12-04 408 static const struct software_node nodes[] = {
c032ace71c29d5 Dmitry Torokhov 2019-12-04 409 { .name = "1", },
c032ace71c29d5 Dmitry Torokhov 2019-12-04 410 { .name = "2", },
eabd5e7d8bf599 Qian Cai 2020-01-06 411 { }
c032ace71c29d5 Dmitry Torokhov 2019-12-04 412 };
c032ace71c29d5 Dmitry Torokhov 2019-12-04 413
c032ace71c29d5 Dmitry Torokhov 2019-12-04 414 static const struct software_node_ref_args refs[] = {
e588fead04ec51 Andy Shevchenko 2021-03-29 415 SOFTWARE_NODE_REFERENCE(&nodes[0]),
e588fead04ec51 Andy Shevchenko 2021-03-29 416 SOFTWARE_NODE_REFERENCE(&nodes[1], 3, 4),
c032ace71c29d5 Dmitry Torokhov 2019-12-04 417 };
c032ace71c29d5 Dmitry Torokhov 2019-12-04 418
c032ace71c29d5 Dmitry Torokhov 2019-12-04 419 const struct property_entry entries[] = {
c032ace71c29d5 Dmitry Torokhov 2019-12-04 420 PROPERTY_ENTRY_REF("ref-1", &nodes[0]),
c032ace71c29d5 Dmitry Torokhov 2019-12-04 421 PROPERTY_ENTRY_REF("ref-2", &nodes[1], 1, 2),
c032ace71c29d5 Dmitry Torokhov 2019-12-04 @422 PROPERTY_ENTRY_REF_ARRAY("ref-3", refs),
c032ace71c29d5 Dmitry Torokhov 2019-12-04 423 { }
c032ace71c29d5 Dmitry Torokhov 2019-12-04 424 };
c032ace71c29d5 Dmitry Torokhov 2019-12-04 425
c032ace71c29d5 Dmitry Torokhov 2019-12-04 426 struct fwnode_handle *node;
c032ace71c29d5 Dmitry Torokhov 2019-12-04 427 struct fwnode_reference_args ref;
c032ace71c29d5 Dmitry Torokhov 2019-12-04 428 int error;
c032ace71c29d5 Dmitry Torokhov 2019-12-04 429
c032ace71c29d5 Dmitry Torokhov 2019-12-04 430 error = software_node_register_nodes(nodes);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 431 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 432
c032ace71c29d5 Dmitry Torokhov 2019-12-04 433 node = fwnode_create_software_node(entries, NULL);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 434 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 435
c032ace71c29d5 Dmitry Torokhov 2019-12-04 436 error = fwnode_property_get_reference_args(node, "ref-1", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 437 0, 0, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 438 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 439 KUNIT_EXPECT_PTR_EQ(test, to_software_node(ref.fwnode), &nodes[0]);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 440 KUNIT_EXPECT_EQ(test, ref.nargs, 0U);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 441
c032ace71c29d5 Dmitry Torokhov 2019-12-04 442 /* wrong index */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 443 error = fwnode_property_get_reference_args(node, "ref-1", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 444 0, 1, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 445 KUNIT_EXPECT_NE(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 446
c032ace71c29d5 Dmitry Torokhov 2019-12-04 447 error = fwnode_property_get_reference_args(node, "ref-2", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 448 1, 0, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 449 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 450 KUNIT_EXPECT_PTR_EQ(test, to_software_node(ref.fwnode), &nodes[1]);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 451 KUNIT_EXPECT_EQ(test, ref.nargs, 1U);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 452 KUNIT_EXPECT_EQ(test, ref.args[0], 1LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 453
c032ace71c29d5 Dmitry Torokhov 2019-12-04 454 /* asking for more args, padded with zero data */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 455 error = fwnode_property_get_reference_args(node, "ref-2", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 456 3, 0, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 457 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 458 KUNIT_EXPECT_PTR_EQ(test, to_software_node(ref.fwnode), &nodes[1]);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 459 KUNIT_EXPECT_EQ(test, ref.nargs, 3U);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 460 KUNIT_EXPECT_EQ(test, ref.args[0], 1LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 461 KUNIT_EXPECT_EQ(test, ref.args[1], 2LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 462 KUNIT_EXPECT_EQ(test, ref.args[2], 0LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 463
c032ace71c29d5 Dmitry Torokhov 2019-12-04 464 /* wrong index */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 465 error = fwnode_property_get_reference_args(node, "ref-2", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 466 2, 1, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 467 KUNIT_EXPECT_NE(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 468
c032ace71c29d5 Dmitry Torokhov 2019-12-04 469 /* array of references */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 470 error = fwnode_property_get_reference_args(node, "ref-3", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 471 0, 0, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 472 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 473 KUNIT_EXPECT_PTR_EQ(test, to_software_node(ref.fwnode), &nodes[0]);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 474 KUNIT_EXPECT_EQ(test, ref.nargs, 0U);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 475
c032ace71c29d5 Dmitry Torokhov 2019-12-04 476 /* second reference in the array */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 477 error = fwnode_property_get_reference_args(node, "ref-3", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 478 2, 1, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 479 KUNIT_ASSERT_EQ(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 480 KUNIT_EXPECT_PTR_EQ(test, to_software_node(ref.fwnode), &nodes[1]);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 481 KUNIT_EXPECT_EQ(test, ref.nargs, 2U);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 482 KUNIT_EXPECT_EQ(test, ref.args[0], 3LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 483 KUNIT_EXPECT_EQ(test, ref.args[1], 4LLU);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 484
c032ace71c29d5 Dmitry Torokhov 2019-12-04 485 /* wrong index */
c032ace71c29d5 Dmitry Torokhov 2019-12-04 486 error = fwnode_property_get_reference_args(node, "ref-1", NULL,
c032ace71c29d5 Dmitry Torokhov 2019-12-04 487 0, 2, &ref);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 488 KUNIT_EXPECT_NE(test, error, 0);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 489
c032ace71c29d5 Dmitry Torokhov 2019-12-04 490 fwnode_remove_software_node(node);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 491 software_node_unregister_nodes(nodes);
c032ace71c29d5 Dmitry Torokhov 2019-12-04 492 }
c032ace71c29d5 Dmitry Torokhov 2019-12-04 493
Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on next-20221111] [also build test ERROR on v6.1-rc4] [cannot apply to linus/master sailus-media-tree/streams v6.1-rc4 v6.1-rc3 v6.1-rc2] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/device-property-Get-rid-of-__PROPERTY_ENTRY_ARRAY_EL-SIZE/20221111-201519 patch link: https://lore.kernel.org/r/20221111121518.44145-1-andriy.shevchenko%40linux.intel.com patch subject: [PATCH v2 1/2] device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*() config: sh-randconfig-r002-20221111 compiler: sh4-linux-gcc (GCC) 12.1.0 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 # https://github.com/intel-lab-lkp/linux/commit/5e456016551f46fb1ac6d6e105c5f643ec45dfd5 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/device-property-Get-rid-of-__PROPERTY_ENTRY_ARRAY_EL-SIZE/20221111-201519 git checkout 5e456016551f46fb1ac6d6e105c5f643ec45dfd5 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash drivers/base/test/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from drivers/base/test/property-entry-test.c:7: drivers/base/test/property-entry-test.c: In function 'pe_test_reference': >> include/linux/property.h:337:17: error: 'DEV_PROP__Type_' undeclared (first use in this function); did you mean 'DEV_PROP_STRING'? 337 | .type = DEV_PROP_##_Type_, \ | ^~~~~~~~~ include/linux/property.h:352:9: note: in expansion of macro 'PROPERTY_ENTRY_REF_ARRAY_LEN' 352 | PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/base/test/property-entry-test.c:422:17: note: in expansion of macro 'PROPERTY_ENTRY_REF_ARRAY' 422 | PROPERTY_ENTRY_REF_ARRAY("ref-3", refs), | ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/property.h:337:17: note: each undeclared identifier is reported only once for each function it appears in 337 | .type = DEV_PROP_##_Type_, \ | ^~~~~~~~~ include/linux/property.h:352:9: note: in expansion of macro 'PROPERTY_ENTRY_REF_ARRAY_LEN' 352 | PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/base/test/property-entry-test.c:422:17: note: in expansion of macro 'PROPERTY_ENTRY_REF_ARRAY' 422 | PROPERTY_ENTRY_REF_ARRAY("ref-3", refs), | ^~~~~~~~~~~~~~~~~~~~~~~~ vim +337 include/linux/property.h 322 323 #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \ 324 __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8_data, U8, _val_, _len_) 325 #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \ 326 __PROPERTY_ENTRY_ARRAY_LEN(_name_, u16_data, U16, _val_, _len_) 327 #define PROPERTY_ENTRY_U32_ARRAY_LEN(_name_, _val_, _len_) \ 328 __PROPERTY_ENTRY_ARRAY_LEN(_name_, u32_data, U32, _val_, _len_) 329 #define PROPERTY_ENTRY_U64_ARRAY_LEN(_name_, _val_, _len_) \ 330 __PROPERTY_ENTRY_ARRAY_LEN(_name_, u64_data, U64, _val_, _len_) 331 #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \ 332 __PROPERTY_ENTRY_ARRAY_LEN(_name_, str, STRING, _val_, _len_) 333 #define PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, _len_) \ 334 (struct property_entry) { \ 335 .name = _name_, \ 336 .length = (_len_) * sizeof(struct software_node_ref_args), \ > 337 .type = DEV_PROP_##_Type_, \ 338 { .pointer = _val_ }, \ 339 } 340
diff --git a/include/linux/property.h b/include/linux/property.h index 5d840299146d..aa58d4e8a21c 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -12,6 +12,7 @@ #include <linux/bits.h> #include <linux/fwnode.h> +#include <linux/stddef.h> #include <linux/types.h> struct device; @@ -311,24 +312,14 @@ struct property_entry { * crafted to avoid gcc-4.4.4's problems with initialization of anon unions * and structs. */ - -#define __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_) \ - sizeof(((struct property_entry *)NULL)->value._elem_[0]) - -#define __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, _elsize_, _Type_, \ - _val_, _len_) \ -(struct property_entry) { \ - .name = _name_, \ - .length = (_len_) * (_elsize_), \ - .type = DEV_PROP_##_Type_, \ - { .pointer = _val_ }, \ +#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_) \ +(struct property_entry) { \ + .name = _name_, \ + .length = (_len_) * sizeof_field(struct property_entry, value._elem_[0]), \ + .type = DEV_PROP_##_Type_, \ + { .pointer = _val_ }, \ } -#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_)\ - __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, \ - __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ - _Type_, _val_, _len_) - #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \ __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8_data, U8, _val_, _len_) #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \ @@ -340,9 +331,12 @@ struct property_entry { #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \ __PROPERTY_ENTRY_ARRAY_LEN(_name_, str, STRING, _val_, _len_) #define PROPERTY_ENTRY_REF_ARRAY_LEN(_name_, _val_, _len_) \ - __PROPERTY_ENTRY_ARRAY_ELSIZE_LEN(_name_, \ - sizeof(struct software_node_ref_args), \ - REF, _val_, _len_) +(struct property_entry) { \ + .name = _name_, \ + .length = (_len_) * sizeof(struct software_node_ref_args), \ + .type = DEV_PROP_##_Type_, \ + { .pointer = _val_ }, \ +} #define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \ PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_)) @@ -360,7 +354,7 @@ struct property_entry { #define __PROPERTY_ENTRY_ELEMENT(_name_, _elem_, _Type_, _val_) \ (struct property_entry) { \ .name = _name_, \ - .length = __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \ + .length = sizeof_field(struct property_entry, value._elem_[0]), \ .is_inline = true, \ .type = DEV_PROP_##_Type_, \ { .value = { ._elem_[0] = _val_ } }, \