Re: Build regressions/improvements in v6.3-rc4 (parport_pc)

From: Randy Dunlap
Date: Tue Apr 04 2023 - 20:02:02 EST




On 4/4/23 15:40, Randy Dunlap wrote:
>
>
> On 4/4/23 14:16, Sudip Mukherjee wrote:
>> On Mon, 27 Mar 2023 at 08:29, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>>>
>>> On Mon, 27 Mar 2023, Geert Uytterhoeven wrote:
>>>> JFYI, when comparing v6.3-rc4[1] to v6.3-rc3[3], the summaries are:
>>>> - build errors: +9/-1
>>>
>>> + /kisskb/src/drivers/net/wireless/cisco/airo.c: error: 'status_rid.currentXmitRate' is used uninitialized [-Werror=uninitialized]: => 6163:45
>>>
>>> sh4-gcc11/sh-allmodconfig
>>> seen before
>>>
>>> + error: modpost: "ebus_dma_enable" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_irq_enable" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_prepare" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_register" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_request" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_residue" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ebus_dma_unregister" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>> + error: modpost: "ns87303_lock" [drivers/parport/parport_pc.ko] undefined!: => N/A
>>>
>>> sparc64-gcc11/sparc-allmodconfig
>>> seen before
>>
>> Tried sparc64 allmodconfig with gcc-11 and did not see the parport
>> errors with 6ab608fe852b ("Merge tag 'for-6.3-rc4-tag' of
>> git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux").
>> Is it still being seen?
>>
>
> This is reported at http://kisskb.ellerman.id.au/kisskb/buildresult/14905002/
>
> I still see it on sparc32 using gcc-12.2.0.
>
> The compiler info vs. the sparc-allmodconfig is confusing IMO.
> I am compiling with sparc-linux, not sparc64-linux.
>
> The .config file says:
> # CONFIG_64BIT is not set
> CONFIG_SPARC=y
> CONFIG_SPARC32=y

It looks to me like we have 2 choices (though there may be others
that are more complicated):

(1) restrict PARPORT_PC to !SPARC32
This fixes the build errors.

(2) We could build ebus.o and some (new) binary that includes
ns87303_lock for SPARC32. They are currently only built for SPARC64.

I prefer option (1) unless we need to support PARPORT_PC on
Sparc32 (which I have no idea about). Patch for it is below for inspection.

---
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Subject: [PATCH] parport_pc: don't allow driver for SPARC32

arch/sparc/kernel/ebus.o is only built for SPARC64.
ns87303_lock is only built for SPARC64.
Also, arch/sparc/include/asm/parport.h says that it is for sparc64.

Therefore don't allow PARPORT_PC to be built for SPARC32.

Fixes these build errors on SPARC32:

ERROR: modpost: "ebus_dma_irq_enable" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_unregister" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_register" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ns87303_lock" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_enable" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_prepare" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_request" [drivers/parport/parport_pc.ko] undefined!
ERROR: modpost: "ebus_dma_residue" [drivers/parport/parport_pc.ko] undefined!

Fixes: 66bcd06099bb ("parport_pc: Also enable driver for PCI systems")
Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Cc: Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx>
Cc: Maciej W. Rozycki <macro@xxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
Cc: sparclinux@xxxxxxxxxxxxxxx
Cc: Sam Ravnborg <sam@xxxxxxxxxxxx>
Cc: linux-parport@xxxxxxxxxxxxxxxxxxx
---
drivers/parport/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -- a/drivers/parport/Kconfig b/drivers/parport/Kconfig
--- a/drivers/parport/Kconfig
+++ b/drivers/parport/Kconfig
@@ -42,7 +42,7 @@ if PARPORT

config PARPORT_PC
tristate "PC-style hardware"
- depends on ARCH_MIGHT_HAVE_PC_PARPORT || (PCI && !S390)
+ depends on ARCH_MIGHT_HAVE_PC_PARPORT || (PCI && !S390 && !SPARC32)
help
You should say Y here if you have a PC-style parallel port. All
IBM PC compatible computers and some Alphas have PC-style