diff mbox series

bus: brcmstb_gisb: Allow building as module

Message ID 20210924191035.1032106-1-f.fainelli@gmail.com (mailing list archive)
State New, archived
Headers show
Series bus: brcmstb_gisb: Allow building as module | expand

Commit Message

Florian Fainelli Sept. 24, 2021, 7:10 p.m. UTC
Allow building the Broadcom STB GISB arbiter driver as a module, however
similar to interrupt controller drivers, don't allow its unbind/removal
since it is not quite prepared for that and we want it to catch bus
errors all the time.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/bus/Kconfig        | 2 +-
 drivers/bus/brcmstb_gisb.c | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

Comments

Florian Fainelli Sept. 27, 2021, 9:04 p.m. UTC | #1
On Fri, 24 Sep 2021 12:10:34 -0700, Florian Fainelli <f.fainelli@gmail.com> wrote:
> Allow building the Broadcom STB GISB arbiter driver as a module, however
> similar to interrupt controller drivers, don't allow its unbind/removal
> since it is not quite prepared for that and we want it to catch bus
> errors all the time.
> 
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---

Applied to https://github.com/Broadcom/stblinux/commits/drivers/next, thanks!
--
Florian
Guenter Roeck Nov. 5, 2021, 2:51 a.m. UTC | #2
On Fri, Sep 24, 2021 at 12:10:34PM -0700, Florian Fainelli wrote:
> Allow building the Broadcom STB GISB arbiter driver as a module, however
> similar to interrupt controller drivers, don't allow its unbind/removal
> since it is not quite prepared for that and we want it to catch bus
> errors all the time.
> 
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Hmm, did you actually test that ?

Building mips:allmodconfig ... failed
--------------
Error log:
<stdin>:1559:2: warning: #warning syscall futex_waitv not implemented [-Wcpp]
ERROR: modpost: "board_be_handler" [drivers/bus/brcmstb_gisb.ko] undefined!

Guenter

>  drivers/bus/Kconfig        | 2 +-
>  drivers/bus/brcmstb_gisb.c | 7 ++++++-
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
> index a5b96f3aad67..9cfeae3fc244 100644
> --- a/drivers/bus/Kconfig
> +++ b/drivers/bus/Kconfig
> @@ -30,7 +30,7 @@ config ARM_INTEGRATOR_LM
>  	  found on the ARM Integrator AP (Application Platform)
>  
>  config BRCMSTB_GISB_ARB
> -	bool "Broadcom STB GISB bus arbiter"
> +	tristate "Broadcom STB GISB bus arbiter"
>  	depends on ARM || ARM64 || MIPS
>  	default ARCH_BRCMSTB || BMIPS_GENERIC
>  	help
> diff --git a/drivers/bus/brcmstb_gisb.c b/drivers/bus/brcmstb_gisb.c
> index 6551286a60cc..4c2f7d61cb9b 100644
> --- a/drivers/bus/brcmstb_gisb.c
> +++ b/drivers/bus/brcmstb_gisb.c
> @@ -1,6 +1,6 @@
>  // SPDX-License-Identifier: GPL-2.0-only
>  /*
> - * Copyright (C) 2014-2017 Broadcom
> + * Copyright (C) 2014-2021 Broadcom
>   */
>  
>  #include <linux/init.h>
> @@ -536,6 +536,7 @@ static struct platform_driver brcmstb_gisb_arb_driver = {
>  		.name	= "brcm-gisb-arb",
>  		.of_match_table = brcmstb_gisb_arb_of_match,
>  		.pm	= &brcmstb_gisb_arb_pm_ops,
> +		.suppress_bind_attrs = true,
>  	},
>  };
>  
> @@ -546,3 +547,7 @@ static int __init brcm_gisb_driver_init(void)
>  }
>  
>  module_init(brcm_gisb_driver_init);
> +
> +MODULE_AUTHOR("Broadcom");
> +MODULE_DESCRIPTION("Broadcom STB GISB arbiter driver");
> +MODULE_LICENSE("GPL v2");
Florian Fainelli Nov. 5, 2021, 2:56 a.m. UTC | #3
On 11/4/2021 7:51 PM, Guenter Roeck wrote:
> On Fri, Sep 24, 2021 at 12:10:34PM -0700, Florian Fainelli wrote:
>> Allow building the Broadcom STB GISB arbiter driver as a module, however
>> similar to interrupt controller drivers, don't allow its unbind/removal
>> since it is not quite prepared for that and we want it to catch bus
>> errors all the time.
>>
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> 
> Hmm, did you actually test that ?

Great way to introduce someone to a problem, really.

> 
> Building mips:allmodconfig ... failed
> --------------
> Error log:
> <stdin>:1559:2: warning: #warning syscall futex_waitv not implemented [-Wcpp]
> ERROR: modpost: "board_be_handler" [drivers/bus/brcmstb_gisb.ko] undefined!

I did not indeed test a modular build for MIPS and had not anticipated 
it to fail. Thomas, do you have any objections exporting 
board_be_handler to modules or would you rather not do it and force the 
driver to be boolean for MIPS?

> 
> Guenter
> 
>>   drivers/bus/Kconfig        | 2 +-
>>   drivers/bus/brcmstb_gisb.c | 7 ++++++-
>>   2 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
>> index a5b96f3aad67..9cfeae3fc244 100644
>> --- a/drivers/bus/Kconfig
>> +++ b/drivers/bus/Kconfig
>> @@ -30,7 +30,7 @@ config ARM_INTEGRATOR_LM
>>   	  found on the ARM Integrator AP (Application Platform)
>>   
>>   config BRCMSTB_GISB_ARB
>> -	bool "Broadcom STB GISB bus arbiter"
>> +	tristate "Broadcom STB GISB bus arbiter"
>>   	depends on ARM || ARM64 || MIPS
>>   	default ARCH_BRCMSTB || BMIPS_GENERIC
>>   	help
>> diff --git a/drivers/bus/brcmstb_gisb.c b/drivers/bus/brcmstb_gisb.c
>> index 6551286a60cc..4c2f7d61cb9b 100644
>> --- a/drivers/bus/brcmstb_gisb.c
>> +++ b/drivers/bus/brcmstb_gisb.c
>> @@ -1,6 +1,6 @@
>>   // SPDX-License-Identifier: GPL-2.0-only
>>   /*
>> - * Copyright (C) 2014-2017 Broadcom
>> + * Copyright (C) 2014-2021 Broadcom
>>    */
>>   
>>   #include <linux/init.h>
>> @@ -536,6 +536,7 @@ static struct platform_driver brcmstb_gisb_arb_driver = {
>>   		.name	= "brcm-gisb-arb",
>>   		.of_match_table = brcmstb_gisb_arb_of_match,
>>   		.pm	= &brcmstb_gisb_arb_pm_ops,
>> +		.suppress_bind_attrs = true,
>>   	},
>>   };
>>   
>> @@ -546,3 +547,7 @@ static int __init brcm_gisb_driver_init(void)
>>   }
>>   
>>   module_init(brcm_gisb_driver_init);
>> +
>> +MODULE_AUTHOR("Broadcom");
>> +MODULE_DESCRIPTION("Broadcom STB GISB arbiter driver");
>> +MODULE_LICENSE("GPL v2");
Thomas Bogendoerfer Nov. 5, 2021, 8:13 a.m. UTC | #4
On Thu, Nov 04, 2021 at 07:56:12PM -0700, Florian Fainelli wrote:
> 
> 
> On 11/4/2021 7:51 PM, Guenter Roeck wrote:
> > On Fri, Sep 24, 2021 at 12:10:34PM -0700, Florian Fainelli wrote:
> > > Allow building the Broadcom STB GISB arbiter driver as a module, however
> > > similar to interrupt controller drivers, don't allow its unbind/removal
> > > since it is not quite prepared for that and we want it to catch bus
> > > errors all the time.
> > > 
> > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > 
> > Hmm, did you actually test that ?
> 
> Great way to introduce someone to a problem, really.
> 
> > 
> > Building mips:allmodconfig ... failed
> > --------------
> > Error log:
> > <stdin>:1559:2: warning: #warning syscall futex_waitv not implemented [-Wcpp]
> > ERROR: modpost: "board_be_handler" [drivers/bus/brcmstb_gisb.ko] undefined!
> 
> I did not indeed test a modular build for MIPS and had not anticipated it to
> fail. Thomas, do you have any objections exporting board_be_handler to
> modules or would you rather not do it and force the driver to be boolean for
> MIPS?

I'd prefer to not export it, so making the driver non-modular for MIPS
would be a solution. If there is a need to set the bus error handling
I'd like to see a function setting and that function could be exported.

Thomas.
diff mbox series

Patch

diff --git a/drivers/bus/Kconfig b/drivers/bus/Kconfig
index a5b96f3aad67..9cfeae3fc244 100644
--- a/drivers/bus/Kconfig
+++ b/drivers/bus/Kconfig
@@ -30,7 +30,7 @@  config ARM_INTEGRATOR_LM
 	  found on the ARM Integrator AP (Application Platform)
 
 config BRCMSTB_GISB_ARB
-	bool "Broadcom STB GISB bus arbiter"
+	tristate "Broadcom STB GISB bus arbiter"
 	depends on ARM || ARM64 || MIPS
 	default ARCH_BRCMSTB || BMIPS_GENERIC
 	help
diff --git a/drivers/bus/brcmstb_gisb.c b/drivers/bus/brcmstb_gisb.c
index 6551286a60cc..4c2f7d61cb9b 100644
--- a/drivers/bus/brcmstb_gisb.c
+++ b/drivers/bus/brcmstb_gisb.c
@@ -1,6 +1,6 @@ 
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (C) 2014-2017 Broadcom
+ * Copyright (C) 2014-2021 Broadcom
  */
 
 #include <linux/init.h>
@@ -536,6 +536,7 @@  static struct platform_driver brcmstb_gisb_arb_driver = {
 		.name	= "brcm-gisb-arb",
 		.of_match_table = brcmstb_gisb_arb_of_match,
 		.pm	= &brcmstb_gisb_arb_pm_ops,
+		.suppress_bind_attrs = true,
 	},
 };
 
@@ -546,3 +547,7 @@  static int __init brcm_gisb_driver_init(void)
 }
 
 module_init(brcm_gisb_driver_init);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("Broadcom STB GISB arbiter driver");
+MODULE_LICENSE("GPL v2");