Hi Heiko, Thanks for your quick reply. Le Sunday 05 May 2013 à 22:41 +0200, Heiko Carstens a écrit : > On Sun, May 05, 2013 at 01:11:17PM +0200, Jean Delvare wrote: > > In kernel 3.9 went this commit of yours: > > > > commit 870a2b5e4fcde08c91c102712ea07d3cbc96f19a > > Author: Heiko Carstens <heiko.carstens@xxxxxxxxxx> > > Date: Wed Feb 6 10:09:31 2013 +0100 > > > > phylib: remove !S390 dependeny from Kconfig > > > > Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> > > Signed-off-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> > > > > Now we get the following build failure on all s390/s390x kernels: > > > > ERROR: "enable_irq" [drivers/net/phy/libphy.ko] undefined! > > ERROR: "free_irq" [drivers/net/phy/libphy.ko] undefined! > > > > I do not understand why the dependency was dropped if the code calls > > functions which do not exist on S390. Can you explain? What is the > > proper way to fix this? > > the correct fix would be to add a "depends on GENERIC_HARDIRQS" to the > offending driver. However I do not see the link error here. > What kernel is that? OpenSUSE Factory's kernels. You can find the configuration files here: https://build.opensuse.org/package/show?package=kernel-s390&project=Kernel%3AHEAD (under config/*) All 6 kernels fail with the error above. > An allmodconfig just compiles fine.. well sort of. If one would add > the usual missing GENERIC_HARDIRQS dependencies (see patch below). I think I understand why our s390 (32-bit) kernels do not build. enable_irq() and free_irq() are defined in arch/s390/pci/pci.c, which is only built if CONFIG_PCI is set. However PCI depends on 64BIT on S390. So you should be able to reproduce the failure easily with a 32-bit allmodconfig build. For our s390x (64-bit) kernels, well it turns out that we have not selected CONFIG_PCI. I don't know if it was a deliberate choice or an overlook, I'll ask. But the result is the same, and you should be able to reproduce the build failure with a 64-bit allmodconfig with CONFIG_PCI disabled. I admit I'm not sure what is the proper way to fix this. Having PCI code export non-PCI functions seems weird, but unless/until this gets fixed, the most immediate fix would be: From: Jean Delvare <jdelvare@xxxxxxx> Subject: S390: Fix libphy link failure On S390 basic IRQ functions are provided by the PCI subsystem, so code which calls these cannot be built if PCI support was not selected. Signed-off-by: Jean Delvare <jdelvare@xxxxxxx> Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx> --- drivers/net/phy/Kconfig | 1 + 1 file changed, 1 insertion(+) --- linux-3.10-rc0.orig/drivers/net/phy/Kconfig 2013-04-29 02:36:01.000000000 +0200 +++ linux-3.10-rc0/drivers/net/phy/Kconfig 2013-05-06 10:34:41.141846466 +0200 @@ -5,6 +5,7 @@ menuconfig PHYLIB tristate "PHY Device support and infrastructure" depends on NETDEVICES + depends on !S390 || PCI help Ethernet controllers are usually attached to PHY devices. This option provides infrastructure for But honestly this isn't very appealing and looks like a step backwards from what you were trying to achieve in the first place :( -- Jean Delvare Suse L3 -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html