public inbox for linux-next@vger.kernel.org
 help / color / mirror / Atom feed
From: Josua Mayer <josua@solid-run.com>
To: Mark Brown <broonie@kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Next Mailing List <linux-next@vger.kernel.org>
Subject: Re: linux-next: build failure after merge of the mmc tree
Date: Thu, 5 Feb 2026 20:28:58 +0000	[thread overview]
Message-ID: <db9b6ada-896d-42f9-9072-d67803122190@solid-run.com> (raw)
In-Reply-To: <b4d5a179-b0b6-403d-bedc-56b3ae69cadb@solid-run.com>

On 2/5/26 22:11, Josua Mayer wrote:
> Hi Mark,
>
> On 2/5/26 15:33, Mark Brown wrote:
>> Hi all,
>>
>> After merging the mmc tree, today's linux-next build (x86_64 
>> allmodconfig)
>> failed like this:
>>
>> /tmp/next/build/drivers/mux/core.c:312:14: error: redefinition of 
>> 'mux_control_states'
>>    312 | unsigned int mux_control_states(struct mux_control *mux)
>>        |              ^~~~~~~~~~~~~~~~~~
>> In file included from /tmp/next/build/drivers/mux/core.c:19:
>> /tmp/next/build/include/linux/mux/consumer.h:70:28: note: previous 
>> definition of 'mux_control_states' with type 'unsigned int(struct 
>> mux_control *)'
>>     70 | static inline unsigned int mux_control_states(struct 
>> mux_control *mux)
>>        |                            ^~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:375:5: error: redefinition of 
>> 'mux_control_select_delay'
>>    375 | int mux_control_select_delay(struct mux_control *mux, 
>> unsigned int state,
>>        |     ^~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:74:32: note: previous 
>> definition of 'mux_control_select_delay' with type 'int(struct 
>> mux_control *, unsigned int,  unsigned int)'
>>     74 | static inline int __must_check 
>> mux_control_select_delay(struct mux_control *mux,
>>        |                                ^~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:413:5: error: redefinition of 
>> 'mux_state_select_delay'
>>    413 | int mux_state_select_delay(struct mux_state *mstate, 
>> unsigned int delay_us)
>>        |     ^~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:79:32: note: previous 
>> definition of 'mux_state_select_delay' with type 'int(struct 
>> mux_state *, unsigned int)'
>>     79 | static inline int __must_check mux_state_select_delay(struct 
>> mux_state *mstate,
>>        |                                ^~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:435:5: error: redefinition of 
>> 'mux_control_try_select_delay'
>>    435 | int mux_control_try_select_delay(struct mux_control *mux, 
>> unsigned int state,
>>        |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:84:32: note: previous 
>> definition of 'mux_control_try_select_delay' with type 'int(struct 
>> mux_control *, unsigned int,  unsigned int)'
>>     84 | static inline int __must_check 
>> mux_control_try_select_delay(struct mux_control *mux,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:469:5: error: redefinition of 
>> 'mux_state_try_select_delay'
>>    469 | int mux_state_try_select_delay(struct mux_state *mstate, 
>> unsigned int delay_us)
>>        |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:90:32: note: previous 
>> definition of 'mux_state_try_select_delay' with type 'int(struct 
>> mux_state *, unsigned int)'
>>     90 | static inline int __must_check 
>> mux_state_try_select_delay(struct mux_state *mstate,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:487:5: error: redefinition of 
>> 'mux_control_deselect'
>>    487 | int mux_control_deselect(struct mux_control *mux)
>>        |     ^~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:118:19: note: previous 
>> definition of 'mux_control_deselect' with type 'int(struct 
>> mux_control *)'
>>    118 | static inline int mux_control_deselect(struct mux_control *mux)
>>        |                   ^~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:513:5: error: redefinition of 
>> 'mux_state_deselect'
>>    513 | int mux_state_deselect(struct mux_state *mstate)
>>        |     ^~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:122:19: note: previous 
>> definition of 'mux_state_deselect' with type 'int(struct mux_state *)'
>>    122 | static inline int mux_state_deselect(struct mux_state *mstate)
>>        |                   ^~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:636:21: error: redefinition of 
>> 'mux_control_get'
>>    636 | struct mux_control *mux_control_get(struct device *dev, 
>> const char *mux_name)
>>        |                     ^~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:127:35: note: previous 
>> definition of 'mux_control_get' with type 'struct mux_control 
>> *(struct device *, const char *)'
>>    127 | static inline struct mux_control *mux_control_get(struct 
>> device *dev, const char *mux_name)
>>        |                                   ^~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:655:21: error: redefinition of 
>> 'mux_control_get_optional'
>>    655 | struct mux_control *mux_control_get_optional(struct device 
>> *dev, const char *mux_name)
>>        |                     ^~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:131:35: note: previous 
>> definition of 'mux_control_get_optional' with type 'struct 
>> mux_control *(struct device *, const char *)'
>>    131 | static inline struct mux_control 
>> *mux_control_get_optional(struct device *dev,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:667:6: error: redefinition of 
>> 'mux_control_put'
>>    667 | void mux_control_put(struct mux_control *mux)
>>        |      ^~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:136:20: note: previous 
>> definition of 'mux_control_put' with type 'void(struct mux_control *)'
>>    136 | static inline void mux_control_put(struct mux_control *mux) {}
>>        |                    ^~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:688:21: error: redefinition of 
>> 'devm_mux_control_get'
>>    688 | struct mux_control *devm_mux_control_get(struct device *dev,
>>        |                     ^~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:138:35: note: previous 
>> definition of 'devm_mux_control_get' with type 'struct mux_control 
>> *(struct device *, const char *)'
>>    138 | static inline struct mux_control 
>> *devm_mux_control_get(struct device *dev, const char *mux_name)
>>        |                                   ^~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:831:19: error: redefinition of 
>> 'devm_mux_state_get'
>>    831 | struct mux_state *devm_mux_state_get(struct device *dev, 
>> const char *mux_name)
>>        |                   ^~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:142:33: note: previous 
>> definition of 'devm_mux_state_get' with type 'struct mux_state 
>> *(struct device *, const char *)'
>>    142 | static inline struct mux_state *devm_mux_state_get(struct 
>> device *dev, const char *mux_name)
>>        |                                 ^~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:848:19: error: redefinition of 
>> 'devm_mux_state_get_optional'
>>    848 | struct mux_state *devm_mux_state_get_optional(struct device 
>> *dev, const char *mux_name)
>>        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:146:33: note: previous 
>> definition of 'devm_mux_state_get_optional' with type 'struct 
>> mux_state *(struct device *, const char *)'
>>    146 | static inline struct mux_state 
>> *devm_mux_state_get_optional(struct device *dev,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:866:19: error: redefinition of 
>> 'devm_mux_state_get_selected'
>>    866 | struct mux_state *devm_mux_state_get_selected(struct device 
>> *dev, const char *mux_name)
>>        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:151:33: note: previous 
>> definition of 'devm_mux_state_get_selected' with type 'struct 
>> mux_state *(struct device *, const char *)'
>>    151 | static inline struct mux_state 
>> *devm_mux_state_get_selected(struct device *dev,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/drivers/mux/core.c:885:19: error: redefinition of 
>> 'devm_mux_state_get_optional_selected'
>>    885 | struct mux_state 
>> *devm_mux_state_get_optional_selected(struct device *dev,
>>        |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> /tmp/next/build/include/linux/mux/consumer.h:156:33: note: previous 
>> definition of 'devm_mux_state_get_optional_selected' with type 
>> 'struct mux_state *(struct device *, const char *)'
>>    156 | static inline struct mux_state 
>> *devm_mux_state_get_optional_selected(struct device *dev,
>>        | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Caused by commit
>>
>>    ad314348ceb4f (mux: Add helper functions for getting optional and 
>> selected mux-state)
>
> I am puzzled by this result, and trying to debug but x86 allmodconfig
> is a very slow build on my laptop.
>
> The static inline function declarations from the errors are in the else
> case if an ifdef CONIG_MULTIPLEXER.
>
> The mux.c should only be compiled if CONFIG_MULTIPLEXER is defined,
> based on drivers/mux/Makefile:
>
> mux-core-objs                   := core.o
> obj-$(CONFIG_MULTIPLEXER)       += mux-core.o
>
> I don't understand how it is possible for mux.c to be compiled,
> while at the same time CONFIG_MULTIPLEXER is not defined.
>
> Any ideas?
Looks like my mistake, I wrongly assumed that CONFIG_MULTIPLEXER
would be defined in both cases MULTIPLEXER=y or =m.
Sorry about the noise :(

Instead I should have used IS_ENABLED macro:

diff --git a/include/linux/mux/consumer.h b/include/linux/mux/consumer.h
index 3ede55b907eb..dd1c6207fc09 100644
--- a/include/linux/mux/consumer.h
+++ b/include/linux/mux/consumer.h
@@ -16,7 +16,7 @@ struct device;
  struct mux_control;
  struct mux_state;

-#ifdef CONFIG_MULTIPLEXER
+#if IS_ENABLED(CONFIG_MULTIPLEXER)

  unsigned int mux_control_states(struct mux_control *mux);
  int __must_check mux_control_select_delay(struct mux_control *mux,

>
>>
>> I have used the version from next-20260204 insted.

  reply	other threads:[~2026-02-05 20:29 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-05 13:33 linux-next: build failure after merge of the mmc tree Mark Brown
2026-02-05 20:11 ` Josua Mayer
2026-02-05 20:28   ` Josua Mayer [this message]
2026-02-05 20:52     ` Mark Brown
  -- strict thread matches above, loose matches on Subject: below --
2025-05-21  5:42 Stephen Rothwell
2025-05-21  6:05 ` Binbin Zhou
2024-10-08  3:31 Stephen Rothwell
2024-10-08 15:26 ` Ulf Hansson
2024-10-10  6:34   ` Avri Altman
2024-06-21 15:11 Mark Brown
2023-06-09  1:34 Stephen Rothwell
2023-06-09  6:10 ` Wenbin Mei (梅文彬)
2023-05-10  1:18 Stephen Rothwell
2023-05-10  2:26 ` Jakub Kicinski
2023-05-11 10:54 ` Ulf Hansson
2021-04-16  3:48 Stephen Rothwell
2021-04-16  3:49 ` Stephen Rothwell
2021-04-26  1:31   ` Stephen Rothwell
2021-04-26  9:46     ` Ulf Hansson
2020-10-06  5:29 Stephen Rothwell
2020-09-25  4:40 Stephen Rothwell
2020-06-02  3:44 Stephen Rothwell
2020-06-02 12:05 ` Ulf Hansson
2020-06-02 12:15 ` Kalle Valo
2020-05-18  4:27 Stephen Rothwell
2020-05-18  6:10 ` Martin Blumenstingl
2018-02-15  0:49 Stephen Rothwell
2018-02-15  5:29 ` Kishon Vijay Abraham I
2014-05-30  3:23 Stephen Rothwell
2014-06-02  9:31 ` Ulf Hansson
     [not found]   ` <20140602214039.10062.15077@quantum>
2014-06-02 21:43     ` Chris Ball
2014-05-26  4:07 Stephen Rothwell
2014-06-02  5:11 ` Stephen Rothwell
2014-06-03 22:52   ` Stephen Rothwell
2014-06-04 19:21     ` Chris Ball
2014-06-05  2:57       ` Chris Ball
2014-05-23  5:32 Stephen Rothwell
2014-05-23  8:45 ` Sebastian Hesselbarth
2014-04-22  3:06 Stephen Rothwell
2014-04-22  4:57 ` Seungwon Jeon
2014-04-22  8:40 ` Ulf Hansson
2014-04-22 11:10   ` Chris Ball
2013-12-13  1:57 Stephen Rothwell
2013-12-17  2:28 ` Stephen Rothwell
2013-12-17  3:07   ` Dong Aisheng
2013-12-17  3:16     ` Shawn Guo
2013-12-17  8:06       ` Dong Aisheng
2014-01-06  6:22         ` Stephen Rothwell
2014-01-06  6:30           ` Dong Aisheng
2014-01-06  6:46             ` Shawn Guo
2014-01-06  6:46               ` Dong Aisheng
2014-01-06  6:30           ` Shawn Guo
2014-01-06  6:44           ` Shawn Guo
2014-01-06  7:29             ` Stephen Rothwell
2014-01-07  3:27             ` Stephen Rothwell
2014-01-13 17:49       ` Chris Ball
2013-12-23  1:40   ` Stephen Rothwell
2011-11-09  1:06 Stephen Rothwell
2011-11-09  1:35 ` Chris Ball
2011-09-22  6:13 Stephen Rothwell
2011-09-22 11:56 ` Chris Ball
2011-07-16  9:30 Stephen Rothwell
2011-07-18 22:29 ` Per Forlin
2011-03-28  2:10 Stephen Rothwell
2010-10-25  1:12 Stephen Rothwell
2010-10-25  2:21 ` Chris Ball

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=db9b6ada-896d-42f9-9072-d67803122190@solid-run.com \
    --to=josua@solid-run.com \
    --cc=broonie@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    --cc=wsa+renesas@sang-engineering.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox