diff mbox series

[2/2] kconfig: tests: test reverse dependency with tristate if-conditional

Message ID 1543216969-2227-2-git-send-email-yamada.masahiro@socionext.com
State New
Headers show
Series [1/2] kconfig: fix reverse dependency with tristate if-conditional | expand

Commit Message

Masahiro Yamada Nov. 26, 2018, 7:22 a.m. UTC
Add a test-case for the fixed reverse dependency handling.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

---

 .../kconfig/tests/revdep_with_tristate_if/Kconfig   | 21 +++++++++++++++++++++
 .../tests/revdep_with_tristate_if/__init__.py       | 14 ++++++++++++++
 .../tests/revdep_with_tristate_if/expected_config   |  9 +++++++++
 3 files changed, 44 insertions(+)
 create mode 100644 scripts/kconfig/tests/revdep_with_tristate_if/Kconfig
 create mode 100644 scripts/kconfig/tests/revdep_with_tristate_if/__init__.py
 create mode 100644 scripts/kconfig/tests/revdep_with_tristate_if/expected_config

-- 
2.7.4

Comments

kernel test robot Nov. 27, 2018, 1:09 a.m. UTC | #1
Hi Masahiro,

I love your patch! Yet something to improve:

[auto build test ERROR on masahiroy/kconfig]
[also build test ERROR on v4.20-rc4 next-20181126]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Masahiro-Yamada/kconfig-fix-reverse-dependency-with-tristate-if-conditional/20181126-152716
base:   https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

   include/linux/slab.h:332:43: warning: dubious: x & !y
   include/linux/slab.h:332:43: warning: dubious: x & !y
>> drivers/input/mouse/synaptics.c:1754:16: error: undefined identifier 'psmouse_smbus_init'

   drivers/input/mouse/synaptics.c: In function 'synaptics_create_intertouch':
   drivers/input/mouse/synaptics.c:1754:9: error: implicit declaration of function 'psmouse_smbus_init'; did you mean 'psmouse_smbus_cleanup'? [-Werror=implicit-function-declaration]
     return psmouse_smbus_init(psmouse, &intertouch_board,
            ^~~~~~~~~~~~~~~~~~
            psmouse_smbus_cleanup
   cc1: some warnings being treated as errors
--
>> drivers/input/mouse/elantech.c:1786:16: error: undefined identifier 'psmouse_smbus_init'

   include/linux/slab.h:332:43: warning: dubious: x & !y
   drivers/input/mouse/elantech.c: In function 'elantech_create_smbus':
   drivers/input/mouse/elantech.c:1786:9: error: implicit declaration of function 'psmouse_smbus_init'; did you mean 'psmouse_smbus_cleanup'? [-Werror=implicit-function-declaration]
     return psmouse_smbus_init(psmouse, &smbus_board, NULL, 0, false,
            ^~~~~~~~~~~~~~~~~~
            psmouse_smbus_cleanup
   cc1: some warnings being treated as errors
--
   sound/soc/intel/skylake/skl-topology.c:2474:39:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2478:41: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2478:41:    expected unsigned int [unsigned] [usertype] instance_id
   sound/soc/intel/skylake/skl-topology.c:2478:41:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2493:34: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2493:34:    expected unsigned int [unsigned] [usertype] vbus_id
   sound/soc/intel/skylake/skl-topology.c:2493:34:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2497:39: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2497:39:    expected unsigned int [unsigned] [usertype] params_fixup
   sound/soc/intel/skylake/skl-topology.c:2497:39:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2501:36: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2501:36:    expected unsigned int [unsigned] [usertype] converter
   sound/soc/intel/skylake/skl-topology.c:2501:36:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2505:36: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2505:36:    expected unsigned int enum d0i3_capability [unsigned] d0i3_caps
   sound/soc/intel/skylake/skl-topology.c:2505:36:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2523:26: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2523:26:    expected int static [signed] conf_idx
   sound/soc/intel/skylake/skl-topology.c:2523:26:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2534:49: warning: incorrect type in argument 3 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2534:49:    expected unsigned int [unsigned] [usertype] tkn
   sound/soc/intel/skylake/skl-topology.c:2534:49:    got restricted __le32 [usertype] token
   sound/soc/intel/skylake/skl-topology.c:2534:66: warning: incorrect type in argument 4 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2534:66:    expected unsigned int [unsigned] [usertype] tkn_val
   sound/soc/intel/skylake/skl-topology.c:2534:66:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2547:49: warning: incorrect type in argument 3 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2547:49:    expected unsigned int [unsigned] [usertype] tkn
   sound/soc/intel/skylake/skl-topology.c:2547:49:    got restricted __le32 [usertype] token
   sound/soc/intel/skylake/skl-topology.c:2547:66: warning: incorrect type in argument 4 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2547:66:    expected unsigned int [unsigned] [usertype] tkn_val
   sound/soc/intel/skylake/skl-topology.c:2547:66:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2555:52: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2555:52:    expected unsigned char [unsigned] [usertype] res_idx
   sound/soc/intel/skylake/skl-topology.c:2555:52:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2559:52: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2559:52:    expected unsigned char [unsigned] [usertype] fmt_idx
   sound/soc/intel/skylake/skl-topology.c:2559:52:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2568:31: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2569:38: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2582:68: warning: incorrect type in argument 3 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2582:68:    expected unsigned int [unsigned] [usertype] tkn
   sound/soc/intel/skylake/skl-topology.c:2582:68:    got restricted __le32 [usertype] token
   sound/soc/intel/skylake/skl-topology.c:2583:41: warning: incorrect type in argument 4 (different base types)
   sound/soc/intel/skylake/skl-topology.c:2583:41:    expected unsigned int [unsigned] [usertype] val
   sound/soc/intel/skylake/skl-topology.c:2583:41:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2602:51: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2602:51:    expected unsigned int [unsigned] [usertype] caps_size
   sound/soc/intel/skylake/skl-topology.c:2602:51:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2608:52: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2608:52:    expected unsigned int [unsigned] [usertype] set_params
   sound/soc/intel/skylake/skl-topology.c:2608:52:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2613:50: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2613:50:    expected unsigned int [unsigned] [usertype] param_id
   sound/soc/intel/skylake/skl-topology.c:2613:50:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2618:33: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2618:33:    expected unsigned char [unsigned] [usertype] domain
   sound/soc/intel/skylake/skl-topology.c:2618:33:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2624:42: warning: incorrect type in assignment (different base types)
   sound/soc/intel/skylake/skl-topology.c:2624:42:    expected unsigned int [unsigned] [usertype] dma_buffer_size
   sound/soc/intel/skylake/skl-topology.c:2624:42:    got restricted __le32 [usertype] value
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: restricted __le32 degrades to integer
   sound/soc/intel/skylake/skl-topology.c:2422:25: warning: too many warnings
>> sound/soc/intel/skylake/skl-topology.c:3075:15: error: undefined identifier 'snd_soc_tplg_widget_bind_event'

>> sound/soc/intel/skylake/skl-topology.c:3740:15: error: undefined identifier 'snd_soc_tplg_component_load'

   sound/soc/intel/skylake/skl-topology.c: In function 'skl_tplg_widget_load':
   sound/soc/intel/skylake/skl-topology.c:3075:8: error: implicit declaration of function 'snd_soc_tplg_widget_bind_event'; did you mean 'snd_soc_dapm_get_bias_level'? [-Werror=implicit-function-declaration]
     ret = snd_soc_tplg_widget_bind_event(w, skl_tplg_widget_ops,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           snd_soc_dapm_get_bias_level
   sound/soc/intel/skylake/skl-topology.c: In function 'skl_tplg_init':
   sound/soc/intel/skylake/skl-topology.c:3740:8: error: implicit declaration of function 'snd_soc_tplg_component_load'; did you mean 'snd_soc_tplg_component_remove'? [-Werror=implicit-function-declaration]
     ret = snd_soc_tplg_component_load(component,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
           snd_soc_tplg_component_remove
   cc1: some warnings being treated as errors
--
>> drivers/char/tpm/tpm_ibmvtpm.c:21:11: error: unable to open 'asm/vio.h'

--
>> sound/soc/codecs/ac97.c:76:58: error: undefined identifier 'soc_ac97_ops'

   sound/soc/codecs/ac97.c: In function 'ac97_soc_probe':
   sound/soc/codecs/ac97.c:76:51: error: 'soc_ac97_ops' undeclared (first use in this function); did you mean 'snd_ac97_bus'?
     ret = snd_ac97_bus(component->card->snd_card, 0, soc_ac97_ops,
                                                      ^~~~~~~~~~~~
                                                      snd_ac97_bus
   sound/soc/codecs/ac97.c:76:51: note: each undeclared identifier is reported only once for each function it appears in
--
>> sound/pci/hda/hda_intel.c:184:25: error: undefined identifier 'CONFIG_SND_HDA_POWER_SAVE_DEFAULT'

   include/linux/slab.h:332:43: warning: dubious: x & !y
   sound/pci/hda/hda_intel.c:184:25: error: 'CONFIG_SND_HDA_POWER_SAVE_DEFAULT' undeclared here (not in a function); did you mean 'CONFIG_SND_SEQ_HRTIMER_DEFAULT'?
    static int power_save = CONFIG_SND_HDA_POWER_SAVE_DEFAULT;
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            CONFIG_SND_SEQ_HRTIMER_DEFAULT
--
   arch/x86/kernel/devicetree.c:27:16: warning: symbol 'initial_dtb' was not declared. Should it be static?
   arch/x86/kernel/devicetree.c:28:17: warning: symbol 'cmd_line' was not declared. Should it be static?
   arch/x86/kernel/devicetree.c:30:16: warning: symbol 'of_ioapic' was not declared. Should it be static?
   arch/x86/kernel/devicetree.c:32:13: warning: symbol 'early_init_dt_scan_chosen_arch' was not declared. Should it be static?
>> arch/x86/kernel/devicetree.c:37:13: warning: symbol 'early_init_dt_add_memory_arch' was not declared. Should it be static?

   arch/x86/kernel/devicetree.c:42:13: warning: symbol 'add_dtb' was not declared. Should it be static?
   arch/x86/kernel/devicetree.c:108:6: warning: symbol 'x86_of_pci_init' was not declared. Should it be static?
   arch/x86/kernel/devicetree.c:314:13: warning: symbol 'x86_dtb_init' was not declared. Should it be static?

vim +/psmouse_smbus_init +1754 drivers/input/mouse/synaptics.c

e839ffab Benjamin Tissoires 2017-03-02  1728  
e839ffab Benjamin Tissoires 2017-03-02  1729  static int synaptics_create_intertouch(struct psmouse *psmouse,
e839ffab Benjamin Tissoires 2017-03-02  1730  				       struct synaptics_device_info *info,
e839ffab Benjamin Tissoires 2017-03-02  1731  				       bool leave_breadcrumbs)
e839ffab Benjamin Tissoires 2017-03-02  1732  {
e839ffab Benjamin Tissoires 2017-03-02  1733  	bool topbuttonpad =
e839ffab Benjamin Tissoires 2017-03-02  1734  		psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) &&
e839ffab Benjamin Tissoires 2017-03-02  1735  		!SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10);
e839ffab Benjamin Tissoires 2017-03-02  1736  	const struct rmi_device_platform_data pdata = {
e839ffab Benjamin Tissoires 2017-03-02  1737  		.sensor_pdata = {
e839ffab Benjamin Tissoires 2017-03-02  1738  			.sensor_type = rmi_sensor_touchpad,
e839ffab Benjamin Tissoires 2017-03-02  1739  			.axis_align.flip_y = true,
2b30297d Andrew Duggan      2017-10-09  1740  			.kernel_tracking = false,
e839ffab Benjamin Tissoires 2017-03-02  1741  			.topbuttonpad = topbuttonpad,
e839ffab Benjamin Tissoires 2017-03-02  1742  		},
e839ffab Benjamin Tissoires 2017-03-02  1743  		.f30_data = {
e839ffab Benjamin Tissoires 2017-03-02  1744  			.buttonpad = SYN_CAP_CLICKPAD(info->ext_cap_0c),
e839ffab Benjamin Tissoires 2017-03-02  1745  			.trackstick_buttons =
e839ffab Benjamin Tissoires 2017-03-02  1746  				!!SYN_CAP_EXT_BUTTONS_STICK(info->ext_cap_10),
e839ffab Benjamin Tissoires 2017-03-02  1747  		},
e839ffab Benjamin Tissoires 2017-03-02  1748  	};
e839ffab Benjamin Tissoires 2017-03-02  1749  	const struct i2c_board_info intertouch_board = {
e839ffab Benjamin Tissoires 2017-03-02  1750  		I2C_BOARD_INFO("rmi4_smbus", 0x2c),
e839ffab Benjamin Tissoires 2017-03-02  1751  		.flags = I2C_CLIENT_HOST_NOTIFY,
e839ffab Benjamin Tissoires 2017-03-02  1752  	};
e839ffab Benjamin Tissoires 2017-03-02  1753  
e839ffab Benjamin Tissoires 2017-03-02 @1754  	return psmouse_smbus_init(psmouse, &intertouch_board,
bf232e46 Benjamin Tissoires 2018-05-22  1755  				  &pdata, sizeof(pdata), true,
e839ffab Benjamin Tissoires 2017-03-02  1756  				  leave_breadcrumbs);
e839ffab Benjamin Tissoires 2017-03-02  1757  }
e839ffab Benjamin Tissoires 2017-03-02  1758  

:::::: The code at line 1754 was first introduced by commit
:::::: e839ffab028981ac77f650faf8c84f16e1719738 Input: synaptics - add support for Intertouch devices

:::::: TO: Benjamin Tissoires <benjamin.tissoires@redhat.com>
:::::: CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox series

Patch

diff --git a/scripts/kconfig/tests/revdep_with_tristate_if/Kconfig b/scripts/kconfig/tests/revdep_with_tristate_if/Kconfig
new file mode 100644
index 0000000..2bd1141
--- /dev/null
+++ b/scripts/kconfig/tests/revdep_with_tristate_if/Kconfig
@@ -0,0 +1,21 @@ 
+# SPDX-License-Identifier: GPL-2.0
+
+config MODULES
+	def_bool y
+	option modules
+
+config A
+	tristate
+
+config B
+	tristate "b"
+	default y
+	select A if C
+	imply D if C
+
+config C
+	tristate "c"
+	default m
+
+config D
+	tristate "d"
diff --git a/scripts/kconfig/tests/revdep_with_tristate_if/__init__.py b/scripts/kconfig/tests/revdep_with_tristate_if/__init__.py
new file mode 100644
index 0000000..ad95cec
--- /dev/null
+++ b/scripts/kconfig/tests/revdep_with_tristate_if/__init__.py
@@ -0,0 +1,14 @@ 
+# SPDX-License-Identifier: GPL-2.0
+"""
+select/imply property with tristate if-conditional
+
+The reverse dependencies (select/imply) are used to define a lower limit
+of another symbol. The current value of the selector is set to the lower
+limit of the selectee. This did not handled correctly in the past when the
+property has a tristate if-conditional.
+"""
+
+
+def test(conf):
+    assert conf.alldefconfig() == 0
+    assert conf.config_matches('expected_config')
diff --git a/scripts/kconfig/tests/revdep_with_tristate_if/expected_config b/scripts/kconfig/tests/revdep_with_tristate_if/expected_config
new file mode 100644
index 0000000..9826223
--- /dev/null
+++ b/scripts/kconfig/tests/revdep_with_tristate_if/expected_config
@@ -0,0 +1,9 @@ 
+#
+# Automatically generated file; DO NOT EDIT.
+# Main menu
+#
+CONFIG_MODULES=y
+CONFIG_A=y
+CONFIG_B=y
+CONFIG_C=m
+CONFIG_D=y