diff mbox

[v2] x86: i8259: export legacy_pic symbol

Message ID 20170408210327.2713-1-hdegoede@redhat.com
State Accepted
Headers show

Commit Message

Hans de Goede April 8, 2017, 9:03 p.m. UTC
The classic PC rtc-coms driver has a workaround for broken ACPI device
nodes for it which lack an irq resource. This workaround used to
unconditionally hardcode the irq to 8 in these cases.

This was causing irq conflict problems on systems without a legacy-pic
so a recent patch added an if (nr_legacy_irqs()) guard to the
workaround to avoid this irq conflict.

nr_legacy_irqs() uses the legacy_pic symbol under the hood causing
an undefined symbol error if the rtc-cmos code is build as a module.

This commit exports the legacy_pic symbol to fix this.

Cc: rtc-linux@googlegroups.com
Cc: alexandre.belloni@free-electrons.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Changes in v2:
-Use EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL
---
 arch/x86/kernel/i8259.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Alexandre Belloni April 13, 2017, 9:26 p.m. UTC | #1
Hi,

On 08/04/2017 at 23:03:27 +0200, Hans de Goede wrote:
> The classic PC rtc-coms driver has a workaround for broken ACPI device
> nodes for it which lack an irq resource. This workaround used to
> unconditionally hardcode the irq to 8 in these cases.
> 
> This was causing irq conflict problems on systems without a legacy-pic
> so a recent patch added an if (nr_legacy_irqs()) guard to the
> workaround to avoid this irq conflict.
> 
> nr_legacy_irqs() uses the legacy_pic symbol under the hood causing
> an undefined symbol error if the rtc-cmos code is build as a module.
> 

This is kind of a pressing issue as this makes linux-next fail to build
for certain configurations.

I can carry it in my tree with your ack or let you apply it for 4.12.
What would you prefer?

> This commit exports the legacy_pic symbol to fix this.
> 
> Cc: rtc-linux@googlegroups.com
> Cc: alexandre.belloni@free-electrons.com
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Changes in v2:
> -Use EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL
> ---
>  arch/x86/kernel/i8259.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
> index be22f5a..0bcf43d 100644
> --- a/arch/x86/kernel/i8259.c
> +++ b/arch/x86/kernel/i8259.c
> @@ -418,6 +418,7 @@ struct legacy_pic default_legacy_pic = {
>  };
>  
>  struct legacy_pic *legacy_pic = &default_legacy_pic;
> +EXPORT_SYMBOL_GPL(legacy_pic);
>  
>  static int __init i8259A_init_ops(void)
>  {
> -- 
> 2.9.3
>
Ingo Molnar April 14, 2017, 8:08 a.m. UTC | #2
* Alexandre Belloni <alexandre.belloni@free-electrons.com> wrote:

> Hi,
> 
> On 08/04/2017 at 23:03:27 +0200, Hans de Goede wrote:
> > The classic PC rtc-coms driver has a workaround for broken ACPI device
> > nodes for it which lack an irq resource. This workaround used to
> > unconditionally hardcode the irq to 8 in these cases.
> > 
> > This was causing irq conflict problems on systems without a legacy-pic
> > so a recent patch added an if (nr_legacy_irqs()) guard to the
> > workaround to avoid this irq conflict.
> > 
> > nr_legacy_irqs() uses the legacy_pic symbol under the hood causing
> > an undefined symbol error if the rtc-cmos code is build as a module.
> > 
> 
> This is kind of a pressing issue as this makes linux-next fail to build
> for certain configurations.
> 
> I can carry it in my tree with your ack or let you apply it for 4.12.
> What would you prefer?

Unless Thomas objects it looks good to me and feel free to carry it in your tree:

Acked-by: Ingo Molnar <mingo@kernel.org>

Thanks,

	Ingo
Thomas Gleixner April 14, 2017, 8:13 a.m. UTC | #3
On Fri, 14 Apr 2017, Ingo Molnar wrote:

> 
> * Alexandre Belloni <alexandre.belloni@free-electrons.com> wrote:
> 
> > Hi,
> > 
> > On 08/04/2017 at 23:03:27 +0200, Hans de Goede wrote:
> > > The classic PC rtc-coms driver has a workaround for broken ACPI device
> > > nodes for it which lack an irq resource. This workaround used to
> > > unconditionally hardcode the irq to 8 in these cases.
> > > 
> > > This was causing irq conflict problems on systems without a legacy-pic
> > > so a recent patch added an if (nr_legacy_irqs()) guard to the
> > > workaround to avoid this irq conflict.
> > > 
> > > nr_legacy_irqs() uses the legacy_pic symbol under the hood causing
> > > an undefined symbol error if the rtc-cmos code is build as a module.
> > > 
> > 
> > This is kind of a pressing issue as this makes linux-next fail to build
> > for certain configurations.
> > 
> > I can carry it in my tree with your ack or let you apply it for 4.12.
> > What would you prefer?
> 
> Unless Thomas objects it looks good to me and feel free to carry it in your tree:
> 
> Acked-by: Ingo Molnar <mingo@kernel.org>

Acked-by: Thomas Gleixner <tglx@linutronix.de>
Alexandre Belloni April 14, 2017, 10:08 a.m. UTC | #4
On 08/04/2017 at 23:03:27 +0200, Hans de Goede wrote:
> The classic PC rtc-coms driver has a workaround for broken ACPI device
> nodes for it which lack an irq resource. This workaround used to
> unconditionally hardcode the irq to 8 in these cases.
> 
> This was causing irq conflict problems on systems without a legacy-pic
> so a recent patch added an if (nr_legacy_irqs()) guard to the
> workaround to avoid this irq conflict.
> 
> nr_legacy_irqs() uses the legacy_pic symbol under the hood causing
> an undefined symbol error if the rtc-cmos code is build as a module.
> 
> This commit exports the legacy_pic symbol to fix this.
> 
> Cc: rtc-linux@googlegroups.com
> Cc: alexandre.belloni@free-electrons.com
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Changes in v2:
> -Use EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL
> ---
>  arch/x86/kernel/i8259.c | 1 +
>  1 file changed, 1 insertion(+)
> 
Applied, thanks.
diff mbox

Patch

diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c
index be22f5a..0bcf43d 100644
--- a/arch/x86/kernel/i8259.c
+++ b/arch/x86/kernel/i8259.c
@@ -418,6 +418,7 @@  struct legacy_pic default_legacy_pic = {
 };
 
 struct legacy_pic *legacy_pic = &default_legacy_pic;
+EXPORT_SYMBOL_GPL(legacy_pic);
 
 static int __init i8259A_init_ops(void)
 {