[PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set

Randy Dunlap posted 1 patch 4 years, 4 months ago
Failed in applying to current master (apply log)
drivers/tty/serial/8250/Kconfig |    2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Randy Dunlap 4 years, 4 months ago
There is a build error when using a kernel .config file from
'kernel test robot' for a different build problem:

hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
(.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'

when:
  CONFIG_GSC=y
  CONFIG_SERIO_GSCPS2=y
  CONFIG_SERIAL_8250_GSC=y
  CONFIG_PCI is not set
    and hence PCI_LBA is not set.
  IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.

Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: kernel test robot <lkp@intel.com>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-parisc@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-serial@vger.kernel.org
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: Johan Hovold <johan@kernel.org>
---
 drivers/tty/serial/8250/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
+++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
@@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
 
 config SERIAL_8250_GSC
 	tristate
-	depends on SERIAL_8250 && GSC
+	depends on SERIAL_8250 && GSC && PCI_LBA
 	default SERIAL_8250
 
 config SERIAL_8250_DMA
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Helge Deller 4 years, 4 months ago
Hi Randy,

On 2/13/22 20:39, Randy Dunlap wrote:
> There is a build error when using a kernel .config file from
> 'kernel test robot' for a different build problem:
>
> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>
> when:
>   CONFIG_GSC=y
>   CONFIG_SERIO_GSCPS2=y
>   CONFIG_SERIAL_8250_GSC=y
>   CONFIG_PCI is not set
>     and hence PCI_LBA is not set.
>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>
> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.

It maybe makes the build error go away, but ...

> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Reported-by: kernel test robot <lkp@intel.com>
> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
> Cc: Helge Deller <deller@gmx.de>
> Cc: linux-parisc@vger.kernel.org
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-serial@vger.kernel.org
> Cc: Jiri Slaby <jirislaby@kernel.org>
> Cc: Johan Hovold <johan@kernel.org>
> ---
>  drivers/tty/serial/8250/Kconfig |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>
>  config SERIAL_8250_GSC
>  	tristate
> -	depends on SERIAL_8250 && GSC
> +	depends on SERIAL_8250 && GSC && PCI_LBA
>  	default SERIAL_8250

The serial device is on the GSC bus, so if you make it
dependend on the PCI bus it will not be useable on machines
which only have a GSC bus...

We need another patch.
Do you have a link to the build error?

Helge
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Randy Dunlap 4 years, 4 months ago

On 2/13/22 12:35, Helge Deller wrote:
> Hi Randy,
> 
> On 2/13/22 20:39, Randy Dunlap wrote:
>> There is a build error when using a kernel .config file from
>> 'kernel test robot' for a different build problem:
>>
>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>
>> when:
>>   CONFIG_GSC=y
>>   CONFIG_SERIO_GSCPS2=y
>>   CONFIG_SERIAL_8250_GSC=y
>>   CONFIG_PCI is not set
>>     and hence PCI_LBA is not set.
>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>
>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
> 
> It maybe makes the build error go away, but ...
> 
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>> Reported-by: kernel test robot <lkp@intel.com>
>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>> Cc: Helge Deller <deller@gmx.de>
>> Cc: linux-parisc@vger.kernel.org
>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> Cc: linux-serial@vger.kernel.org
>> Cc: Jiri Slaby <jirislaby@kernel.org>
>> Cc: Johan Hovold <johan@kernel.org>
>> ---
>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>
>>  config SERIAL_8250_GSC
>>  	tristate
>> -	depends on SERIAL_8250 && GSC
>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>  	default SERIAL_8250
> 
> The serial device is on the GSC bus, so if you make it
> dependend on the PCI bus it will not be useable on machines
> which only have a GSC bus...
> 
> We need another patch.
> Do you have a link to the build error?


No, it's from the other build error that you just replied to,
where the incorrect compiler was used.

I'll recheck it and reconsider what to do, if anything.

thanks.

-- 
~Randy
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Helge Deller 4 years, 4 months ago
On 2/13/22 22:07, Randy Dunlap wrote:
>
>
> On 2/13/22 12:35, Helge Deller wrote:
>> Hi Randy,
>>
>> On 2/13/22 20:39, Randy Dunlap wrote:
>>> There is a build error when using a kernel .config file from
>>> 'kernel test robot' for a different build problem:
>>>
>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>
>>> when:
>>>   CONFIG_GSC=y
>>>   CONFIG_SERIO_GSCPS2=y
>>>   CONFIG_SERIAL_8250_GSC=y
>>>   CONFIG_PCI is not set
>>>     and hence PCI_LBA is not set.
>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>
>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>
>> It maybe makes the build error go away, but ...
>>
>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>> Reported-by: kernel test robot <lkp@intel.com>
>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>> Cc: Helge Deller <deller@gmx.de>
>>> Cc: linux-parisc@vger.kernel.org
>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>> Cc: linux-serial@vger.kernel.org
>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>> Cc: Johan Hovold <johan@kernel.org>
>>> ---
>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>
>>>  config SERIAL_8250_GSC
>>>  	tristate
>>> -	depends on SERIAL_8250 && GSC
>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>  	default SERIAL_8250
>>
>> The serial device is on the GSC bus, so if you make it
>> dependend on the PCI bus it will not be useable on machines
>> which only have a GSC bus...
>>
>> We need another patch.
>> Do you have a link to the build error?
>
>
> No, it's from the other build error that you just replied to,
> where the incorrect compiler was used.
>
> I'll recheck it and reconsider what to do, if anything.

Ok, thank you!

By the way, I just sent another patch (and added it to the parisc for-next tree)
which should at least give a better error message if someone uses the wrong compiler:
https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git/commit/?h=for-next&id=b160628e9ebcdc85d0db9d7f423c26b3c7c179d0

Helge
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Randy Dunlap 4 years, 4 months ago
Hi,

On 2/13/22 14:15, Helge Deller wrote:
> On 2/13/22 22:07, Randy Dunlap wrote:
>>
>>
>> On 2/13/22 12:35, Helge Deller wrote:
>>> Hi Randy,
>>>
>>> On 2/13/22 20:39, Randy Dunlap wrote:
>>>> There is a build error when using a kernel .config file from
>>>> 'kernel test robot' for a different build problem:
>>>>
>>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>>
>>>> when:
>>>>   CONFIG_GSC=y
>>>>   CONFIG_SERIO_GSCPS2=y
>>>>   CONFIG_SERIAL_8250_GSC=y
>>>>   CONFIG_PCI is not set
>>>>     and hence PCI_LBA is not set.
>>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>>
>>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>>
>>> It maybe makes the build error go away, but ...
>>>
>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>>> Cc: Helge Deller <deller@gmx.de>
>>>> Cc: linux-parisc@vger.kernel.org
>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>> Cc: linux-serial@vger.kernel.org
>>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>>> Cc: Johan Hovold <johan@kernel.org>
>>>> ---
>>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>>
>>>>  config SERIAL_8250_GSC
>>>>  	tristate
>>>> -	depends on SERIAL_8250 && GSC
>>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>>  	default SERIAL_8250
>>>
>>> The serial device is on the GSC bus, so if you make it
>>> dependend on the PCI bus it will not be useable on machines
>>> which only have a GSC bus...
>>>
>>> We need another patch.
>>> Do you have a link to the build error?
>>
>>
>> No, it's from the other build error that you just replied to,
>> where the incorrect compiler was used.
>>
>> I'll recheck it and reconsider what to do, if anything.
> 
> Ok, thank you!

I dunno what to do. This:

#ifdef CONFIG_64BIT
	if (!dev->irq && (dev->id.sversion == 0xad))
		dev->irq = iosapic_serial_irq(dev);
#endif

makes it look like 64BIT requires IOSAPIC (hence PCI_LBA).


> By the way, I just sent another patch (and added it to the parisc for-next tree)
> which should at least give a better error message if someone uses the wrong compiler:
> https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git/commit/?h=for-next&id=b160628e9ebcdc85d0db9d7f423c26b3c7c179d0

Yes, I applied that, but that's not the problem here.
It is a 64BIT config and parisc64 compiler.

-- 
~Randy
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Helge Deller 4 years, 4 months ago
On 2/14/22 01:15, Randy Dunlap wrote:
> Hi,
>
> On 2/13/22 14:15, Helge Deller wrote:
>> On 2/13/22 22:07, Randy Dunlap wrote:
>>>
>>>
>>> On 2/13/22 12:35, Helge Deller wrote:
>>>> Hi Randy,
>>>>
>>>> On 2/13/22 20:39, Randy Dunlap wrote:
>>>>> There is a build error when using a kernel .config file from
>>>>> 'kernel test robot' for a different build problem:
>>>>>
>>>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>>>
>>>>> when:
>>>>>   CONFIG_GSC=y
>>>>>   CONFIG_SERIO_GSCPS2=y
>>>>>   CONFIG_SERIAL_8250_GSC=y
>>>>>   CONFIG_PCI is not set
>>>>>     and hence PCI_LBA is not set.
>>>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>>>
>>>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>>>
>>>> It maybe makes the build error go away, but ...
>>>>
>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>>>> Cc: Helge Deller <deller@gmx.de>
>>>>> Cc: linux-parisc@vger.kernel.org
>>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>>> Cc: linux-serial@vger.kernel.org
>>>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>>>> Cc: Johan Hovold <johan@kernel.org>
>>>>> ---
>>>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>>>
>>>>>  config SERIAL_8250_GSC
>>>>>  	tristate
>>>>> -	depends on SERIAL_8250 && GSC
>>>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>>>  	default SERIAL_8250
>>>>
>>>> The serial device is on the GSC bus, so if you make it
>>>> dependend on the PCI bus it will not be useable on machines
>>>> which only have a GSC bus...
>>>>
>>>> We need another patch.
>>>> Do you have a link to the build error?
>>>
>>>
>>> No, it's from the other build error that you just replied to,
>>> where the incorrect compiler was used.
>>>
>>> I'll recheck it and reconsider what to do, if anything.
>>
>> Ok, thank you!
>
> I dunno what to do. This:
>
> #ifdef CONFIG_64BIT
> 	if (!dev->irq && (dev->id.sversion == 0xad))
> 		dev->irq = iosapic_serial_irq(dev);
> #endif
>
> makes it look like 64BIT requires IOSAPIC (hence PCI_LBA).

Although I think all 64bit machines have a PCI bus, the better
fix is that the driver should only call iosapic_serial_irq(dev)
if CONFIG_IOSAPIC is set. This patch fixes the build:

-#ifdef CONFIG_64BIT
+#ifdef CONFIG_IOSAPIC
        if (!dev->irq && (dev->id.sversion == 0xad))
                dev->irq = iosapic_serial_irq(dev);
 #endif

Will you send an updated patch?

Thanks!
Helge
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Helge Deller 4 years, 4 months ago
On 2/14/22 13:05, Helge Deller wrote:
> On 2/14/22 01:15, Randy Dunlap wrote:
>> Hi,
>>
>> On 2/13/22 14:15, Helge Deller wrote:
>>> On 2/13/22 22:07, Randy Dunlap wrote:
>>>>
>>>>
>>>> On 2/13/22 12:35, Helge Deller wrote:
>>>>> Hi Randy,
>>>>>
>>>>> On 2/13/22 20:39, Randy Dunlap wrote:
>>>>>> There is a build error when using a kernel .config file from
>>>>>> 'kernel test robot' for a different build problem:
>>>>>>
>>>>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>>>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>>>>
>>>>>> when:
>>>>>>   CONFIG_GSC=y
>>>>>>   CONFIG_SERIO_GSCPS2=y
>>>>>>   CONFIG_SERIAL_8250_GSC=y
>>>>>>   CONFIG_PCI is not set
>>>>>>     and hence PCI_LBA is not set.
>>>>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>>>>
>>>>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>>>>
>>>>> It maybe makes the build error go away, but ...
>>>>>
>>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>>>>> Cc: Helge Deller <deller@gmx.de>
>>>>>> Cc: linux-parisc@vger.kernel.org
>>>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>>>> Cc: linux-serial@vger.kernel.org
>>>>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>>>>> Cc: Johan Hovold <johan@kernel.org>
>>>>>> ---
>>>>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>>>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>>>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>>>>
>>>>>>  config SERIAL_8250_GSC
>>>>>>  	tristate
>>>>>> -	depends on SERIAL_8250 && GSC
>>>>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>>>>  	default SERIAL_8250
>>>>>
>>>>> The serial device is on the GSC bus, so if you make it
>>>>> dependend on the PCI bus it will not be useable on machines
>>>>> which only have a GSC bus...
>>>>>
>>>>> We need another patch.
>>>>> Do you have a link to the build error?
>>>>
>>>>
>>>> No, it's from the other build error that you just replied to,
>>>> where the incorrect compiler was used.
>>>>
>>>> I'll recheck it and reconsider what to do, if anything.
>>>
>>> Ok, thank you!
>>
>> I dunno what to do. This:
>>
>> #ifdef CONFIG_64BIT
>> 	if (!dev->irq && (dev->id.sversion == 0xad))
>> 		dev->irq = iosapic_serial_irq(dev);
>> #endif
>>
>> makes it look like 64BIT requires IOSAPIC (hence PCI_LBA).
>
> Although I think all 64bit machines have a PCI bus, the better
> fix is that the driver should only call iosapic_serial_irq(dev)
> if CONFIG_IOSAPIC is set. This patch fixes the build:
>
> -#ifdef CONFIG_64BIT
> +#ifdef CONFIG_IOSAPIC
>         if (!dev->irq && (dev->id.sversion == 0xad))
>                 dev->irq = iosapic_serial_irq(dev);
>  #endif

That was not fully correct.
It needs to be:

#if defined(CONFIG_64BIT) && defined(CONFIG_IOSAPIC)

Otherwise you'll get an undefined reference in the 32-bit build.

Helge
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Randy Dunlap 4 years, 4 months ago
Hi Helge,

On 2/14/22 04:24, Helge Deller wrote:
> On 2/14/22 13:05, Helge Deller wrote:
>> On 2/14/22 01:15, Randy Dunlap wrote:
>>> Hi,
>>>
>>> On 2/13/22 14:15, Helge Deller wrote:
>>>> On 2/13/22 22:07, Randy Dunlap wrote:
>>>>>
>>>>>
>>>>> On 2/13/22 12:35, Helge Deller wrote:
>>>>>> Hi Randy,
>>>>>>
>>>>>> On 2/13/22 20:39, Randy Dunlap wrote:
>>>>>>> There is a build error when using a kernel .config file from
>>>>>>> 'kernel test robot' for a different build problem:
>>>>>>>
>>>>>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>>>>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>>>>>
>>>>>>> when:
>>>>>>>   CONFIG_GSC=y
>>>>>>>   CONFIG_SERIO_GSCPS2=y
>>>>>>>   CONFIG_SERIAL_8250_GSC=y
>>>>>>>   CONFIG_PCI is not set
>>>>>>>     and hence PCI_LBA is not set.
>>>>>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>>>>>
>>>>>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>>>>>
>>>>>> It maybe makes the build error go away, but ...
>>>>>>
>>>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>>>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>>>>>> Cc: Helge Deller <deller@gmx.de>
>>>>>>> Cc: linux-parisc@vger.kernel.org
>>>>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>>>>> Cc: linux-serial@vger.kernel.org
>>>>>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>>>>>> Cc: Johan Hovold <johan@kernel.org>
>>>>>>> ---
>>>>>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>>>>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>>>>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>>>>>
>>>>>>>  config SERIAL_8250_GSC
>>>>>>>  	tristate
>>>>>>> -	depends on SERIAL_8250 && GSC
>>>>>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>>>>>  	default SERIAL_8250
>>>>>>
>>>>>> The serial device is on the GSC bus, so if you make it
>>>>>> dependend on the PCI bus it will not be useable on machines
>>>>>> which only have a GSC bus...
>>>>>>
>>>>>> We need another patch.
>>>>>> Do you have a link to the build error?
>>>>>
>>>>>
>>>>> No, it's from the other build error that you just replied to,
>>>>> where the incorrect compiler was used.
>>>>>
>>>>> I'll recheck it and reconsider what to do, if anything.
>>>>
>>>> Ok, thank you!
>>>
>>> I dunno what to do. This:
>>>
>>> #ifdef CONFIG_64BIT
>>> 	if (!dev->irq && (dev->id.sversion == 0xad))
>>> 		dev->irq = iosapic_serial_irq(dev);
>>> #endif
>>>
>>> makes it look like 64BIT requires IOSAPIC (hence PCI_LBA).
>>
>> Although I think all 64bit machines have a PCI bus, the better
>> fix is that the driver should only call iosapic_serial_irq(dev)
>> if CONFIG_IOSAPIC is set. This patch fixes the build:
>>
>> -#ifdef CONFIG_64BIT
>> +#ifdef CONFIG_IOSAPIC
>>         if (!dev->irq && (dev->id.sversion == 0xad))
>>                 dev->irq = iosapic_serial_irq(dev);
>>  #endif
> 
> That was not fully correct.
> It needs to be:
> 
> #if defined(CONFIG_64BIT) && defined(CONFIG_IOSAPIC)
> 
> Otherwise you'll get an undefined reference in the 32-bit build.

Sure, I can send such a patch.
I would have used a bigger hammer and done something like

	depends on IOSAPIC if 64BIT


Just for info, how would dev->irq be set for CONFIG_64BIT
when CONFIG_IOSAPIC is not set?


thanks.
-- 
~Randy
Re: [PATCH] serial: parisc: GSC: fix build when PCI_LBA is not set
Posted by Helge Deller 4 years, 4 months ago
On 2/14/22 18:47, Randy Dunlap wrote:
> Hi Helge,
>
> On 2/14/22 04:24, Helge Deller wrote:
>> On 2/14/22 13:05, Helge Deller wrote:
>>> On 2/14/22 01:15, Randy Dunlap wrote:
>>>> Hi,
>>>>
>>>> On 2/13/22 14:15, Helge Deller wrote:
>>>>> On 2/13/22 22:07, Randy Dunlap wrote:
>>>>>>
>>>>>>
>>>>>> On 2/13/22 12:35, Helge Deller wrote:
>>>>>>> Hi Randy,
>>>>>>>
>>>>>>> On 2/13/22 20:39, Randy Dunlap wrote:
>>>>>>>> There is a build error when using a kernel .config file from
>>>>>>>> 'kernel test robot' for a different build problem:
>>>>>>>>
>>>>>>>> hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3':
>>>>>>>> (.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq'
>>>>>>>>
>>>>>>>> when:
>>>>>>>>   CONFIG_GSC=y
>>>>>>>>   CONFIG_SERIO_GSCPS2=y
>>>>>>>>   CONFIG_SERIAL_8250_GSC=y
>>>>>>>>   CONFIG_PCI is not set
>>>>>>>>     and hence PCI_LBA is not set.
>>>>>>>>   IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled.
>>>>>>>>
>>>>>>>> Making SERIAL_8250_GSC depend on PCI_LBA prevents the build error.
>>>>>>>
>>>>>>> It maybe makes the build error go away, but ...
>>>>>>>
>>>>>>>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>>>>>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>>>>>> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
>>>>>>>> Cc: Helge Deller <deller@gmx.de>
>>>>>>>> Cc: linux-parisc@vger.kernel.org
>>>>>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>>>>>> Cc: linux-serial@vger.kernel.org
>>>>>>>> Cc: Jiri Slaby <jirislaby@kernel.org>
>>>>>>>> Cc: Johan Hovold <johan@kernel.org>
>>>>>>>> ---
>>>>>>>>  drivers/tty/serial/8250/Kconfig |    2 +-
>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> --- linux-next-20220211.orig/drivers/tty/serial/8250/Kconfig
>>>>>>>> +++ linux-next-20220211/drivers/tty/serial/8250/Kconfig
>>>>>>>> @@ -118,7 +118,7 @@ config SERIAL_8250_CONSOLE
>>>>>>>>
>>>>>>>>  config SERIAL_8250_GSC
>>>>>>>>  	tristate
>>>>>>>> -	depends on SERIAL_8250 && GSC
>>>>>>>> +	depends on SERIAL_8250 && GSC && PCI_LBA
>>>>>>>>  	default SERIAL_8250
>>>>>>>
>>>>>>> The serial device is on the GSC bus, so if you make it
>>>>>>> dependend on the PCI bus it will not be useable on machines
>>>>>>> which only have a GSC bus...
>>>>>>>
>>>>>>> We need another patch.
>>>>>>> Do you have a link to the build error?
>>>>>>
>>>>>>
>>>>>> No, it's from the other build error that you just replied to,
>>>>>> where the incorrect compiler was used.
>>>>>>
>>>>>> I'll recheck it and reconsider what to do, if anything.
>>>>>
>>>>> Ok, thank you!
>>>>
>>>> I dunno what to do. This:
>>>>
>>>> #ifdef CONFIG_64BIT
>>>> 	if (!dev->irq && (dev->id.sversion == 0xad))
>>>> 		dev->irq = iosapic_serial_irq(dev);
>>>> #endif
>>>>
>>>> makes it look like 64BIT requires IOSAPIC (hence PCI_LBA).
>>>
>>> Although I think all 64bit machines have a PCI bus, the better
>>> fix is that the driver should only call iosapic_serial_irq(dev)
>>> if CONFIG_IOSAPIC is set. This patch fixes the build:
>>>
>>> -#ifdef CONFIG_64BIT
>>> +#ifdef CONFIG_IOSAPIC
>>>         if (!dev->irq && (dev->id.sversion == 0xad))
>>>                 dev->irq = iosapic_serial_irq(dev);
>>>  #endif
>>
>> That was not fully correct.
>> It needs to be:
>>
>> #if defined(CONFIG_64BIT) && defined(CONFIG_IOSAPIC)
>>
>> Otherwise you'll get an undefined reference in the 32-bit build.
>
> Sure, I can send such a patch.

Thanks!
I see you sent it in a seperate mail.
I can take it through the parisc tree.

> I would have used a bigger hammer and done something like
>
> 	depends on IOSAPIC if 64BIT
>
> Just for info, how would dev->irq be set for CONFIG_64BIT
> when CONFIG_IOSAPIC is not set?

All found devices in the parisc system are in a device table.
The serial driver scans those against the ones listed in
serial_tbl[] and lasi_tbl[], and hand over the parisc_device
pointer which usually has the irq set.
In case the device is connected via iosapic and hasn't an irq
already set, iosapic_serial_irq() is called to find the irq.
The
 	depends on IOSAPIC if 64BIT
would have dropped *all* serial ports on 64bit kernels, even
those which are on the GSC bus.

Helge