All of lore.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: 74+ 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
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  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               ` Shawn Guo
2014-01-06  6:46               ` Dong Aisheng
2014-01-06  6:30           ` Shawn Guo
2014-01-06  6:30             ` Shawn Guo
2014-01-06  6:44           ` Shawn Guo
2014-01-06  6:44             ` Shawn Guo
2014-01-06  7:29             ` Stephen Rothwell
2014-01-06  7:29               ` Stephen Rothwell
2014-01-07  3:27             ` Stephen Rothwell
2014-01-07  3:27               ` Stephen Rothwell
2014-01-13 17:49       ` Chris Ball
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.