Skip to contentSkip to conversation

Remove unneeded build directory traversals

PATCH Applied Andrew F. Davis 6 participants 28 messages Jun 13, 2016 – Jun 21, 2016

Subsystems (7)

v1 of 4 Applied Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover Remove unneeded build directory traversals

Hello all,

I was building a kernel for x86 and noticed Make still descended into directories like drivers/gpu/drm/hisilicon, this seems kind of odd given nothing will be built here. It looks to be due to some directories being included in obj-y unconditionally instead of only when the relevant CONFIG_ is set.

These patches are split by subsystem in-case, for some reason, a file in a directory does need to be built, I believe I have checked for all instances of this, but a quick review from some maintainers would be nice.

Thanks,
Andrew

Andrew F. Davis (12):
gpio: Only descend into gpio directory when CONFIG_GPIOLIB is set
pwm: Only descend into pwm directory when CONFIG_PWM is set
amba: Only descend into amba directory when CONFIG_ARM_AMBA is set
NFC: Only descend into nfc directory when CONFIG_NFC is set
macintosh: Only descend into directory when CONFIG_MACINTOSH_DRIVERS
is set
hsi: Only descend into hsi directory when CONFIG_HSI is set
auxdisplay: Only descend into directory when CONFIG_AUXDISPLAY is set
i2c: Only descend into i2c directory when CONFIG_I2C is set [media] Only descend into directory when CONFIG_MEDIA_SUPPORT is set
lguest: Only descend into lguest directory when CONFIG_LGUEST is set
mmc: Only descend into mmc directory when CONFIG_MMC is set
leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

 drivers/Makefile | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#1 lore raw

PATCH 1/12 gpio: Only descend into gpio directory when CONFIG_GPIOLIB is set

When CONFIG_GPIOLIB is not set make will still descend into the gpio directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 0b6f3d6..50f6131 100644
@@ -12,7 +12,7 @@ obj-$(CONFIG_GENERIC_PHY)	+= phy/
 
 # GPIO must come after pinctrl as gpios may need to mux pins etc
 obj-$(CONFIG_PINCTRL)		+= pinctrl/
-obj-y				+= gpio/
+obj-$(CONFIG_GPIOLIB)		+= gpio/
 obj-y				+= pwm/
 obj-$(CONFIG_PCI)		+= pci/
 obj-$(CONFIG_PARISC)		+= parisc/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#2 lore raw

Re: [PATCH 01/12] gpio: Only descend into gpio directory when CONFIG_GPIOLIB is set

Quoted 5 lines · Andrew F. Davis

When CONFIG_GPIOLIB is not set make will still descend into the gpio directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

Patch applied. Strange that this went unnoticed for years.

Yours,
Linus Walleij

#3 lore raw

PATCH 2/12 pwm: Only descend into pwm directory when CONFIG_PWM is set

In reply to Andrew F. Davis

When CONFIG_PWM is not set make will still descend into the pwm directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 50f6131..01e707b 100644
@@ -13,7 +13,7 @@ obj-$(CONFIG_GENERIC_PHY)	+= phy/
 # GPIO must come after pinctrl as gpios may need to mux pins etc
 obj-$(CONFIG_PINCTRL)		+= pinctrl/
 obj-$(CONFIG_GPIOLIB)		+= gpio/
-obj-y				+= pwm/
+obj-$(CONFIG_PWM)		+= pwm/
 obj-$(CONFIG_PCI)		+= pci/
 obj-$(CONFIG_PARISC)		+= parisc/
 obj-$(CONFIG_RAPIDIO)		+= rapidio/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#4 lore raw

PATCH 3/12 amba: Only descend into amba directory when CONFIG_ARM_AMBA is set

In reply to Andrew F. Davis

When CONFIG_ARM_AMBA is not set make will still descend into the amba directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 01e707b..841c2dc 100644
@@ -28,7 +28,7 @@ obj-$(CONFIG_SFI)		+= sfi/
 # PnP must come after ACPI since it will eventually need to check if acpi
 # was used and do nothing if so
 obj-$(CONFIG_PNP)		+= pnp/
-obj-y				+= amba/
+obj-$(CONFIG_ARM_AMBA)		+= amba/
 # Many drivers will want to use DMA so this has to be made available
 # really early.
 obj-$(CONFIG_DMADEVICES)	+= dma/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#5 lore raw

PATCH 4/12 NFC: Only descend into nfc directory when CONFIG_NFC is set

In reply to Andrew F. Davis

When CONFIG_NFC is not set make will still descend into the nfc directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/Makefile +5 -1
index 841c2dc..4a885d8 100644
@@ -64,7 +64,11 @@ obj-$(CONFIG_FB_INTEL)          += video/fbdev/intelfb/
 
 obj-$(CONFIG_PARPORT)		+= parport/
 obj-$(CONFIG_NVM)		+= lightnvm/
-obj-y				+= base/ block/ misc/ mfd/ nfc/
+obj-y				+= base/
+obj-y				+= block/
+obj-y				+= misc/
+obj-y				+= mfd/
+obj-$(CONFIG_NFC)		+= nfc/
 obj-$(CONFIG_LIBNVDIMM)		+= nvdimm/
 obj-$(CONFIG_DEV_DAX)		+= dax/
 obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#6 lore raw

PATCH 5/12 macintosh: Only descend into directory when CONFIG_MACINTOSH_DRIVERS is set

In reply to Andrew F. Davis

When CONFIG_MACINTOSH_DRIVERS is not set make will still descend into the macintosh directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 4a885d8..5be5619 100644
@@ -73,7 +73,7 @@ obj-$(CONFIG_LIBNVDIMM)		+= nvdimm/
 obj-$(CONFIG_DEV_DAX)		+= dax/
 obj-$(CONFIG_DMA_SHARED_BUFFER) += dma-buf/
 obj-$(CONFIG_NUBUS)		+= nubus/
-obj-y				+= macintosh/
+obj-$(CONFIG_MACINTOSH_DRIVERS)	+= macintosh/
 obj-$(CONFIG_IDE)		+= ide/
 obj-$(CONFIG_SCSI)		+= scsi/
 obj-y				+= nvme/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#7 lore raw

PATCH 6/12 hsi: Only descend into hsi directory when CONFIG_HSI is set

In reply to Andrew F. Davis

When CONFIG_HSI is not set make will still descend into the hsi directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 5be5619..78162ba 100644
@@ -82,7 +82,7 @@ obj-$(CONFIG_TARGET_CORE)	+= target/
 obj-$(CONFIG_MTD)		+= mtd/
 obj-$(CONFIG_SPI)		+= spi/
 obj-$(CONFIG_SPMI)		+= spmi/
-obj-y				+= hsi/
+obj-$(CONFIG_HSI)		+= hsi/
 obj-y				+= net/
 obj-$(CONFIG_ATM)		+= atm/
 obj-$(CONFIG_FUSION)		+= message/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#8 lore raw

Re: [PATCH 06/12] hsi: Only descend into hsi directory when CONFIG_HSI is set

reproduce:

Hi,

[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andrew-F-Davis/gpio-Only-descend-into-gpio-directory-when-CONFIG_GPIOLIB-is-set/20160614-061705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: i386-randconfig-sb0-06140627 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

>> ERROR: "hsi_board_list" [drivers/hsi/hsi.ko] undefined!

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#9 lore raw

PATCH 1/1 hsi: Build hsi_boardinfo.c into hsi core if enabled

If the HSI core is built as a module hsi_boardinfo may still be built-in as its Kconfig type is bool, which can cause build issues. Fix this by building this code into the HSI core when enabled.

---
This build error seems to be due to Kconfig symbol CONFIG_HSI_BOARDINFO being a bool but depending on a tristate (CONFIG_HSI). This is normally okay when it is just a flag to enable a feature in source, but the helper code file hsi_boardinfo.c is built as a separate entity when enabled. This patch is probably how it was intended, and is more like how others do this kind of thing.

This patch should be applied before the parent patch:

 drivers/hsi/Makefile              | 3 ++-
 drivers/hsi/{hsi.c => hsi_core.c} | 0
 2 files changed, 2 insertions(+), 1 deletion(-)
 rename drivers/hsi/{hsi.c => hsi_core.c} (100%)
drivers/hsi/Makefile +2 -1
index 360371e..9694478 100644
@@ -1,7 +1,8 @@
 #
 # Makefile for HSI
 #
-obj-$(CONFIG_HSI_BOARDINFO)    += hsi_boardinfo.o
 obj-$(CONFIG_HSI)              += hsi.o
+hsi-objs                       := hsi_core.o
+hsi-$(CONFIG_HSI_BOARDINFO)    += hsi_boardinfo.o
 obj-y                          += controllers/
 obj-y                          += clients/
drivers/hsi/hsi_core.c renamed from drivers/hsi/hsi.c +0 -0
similarity index 100%
rename from drivers/hsi/hsi.c
rename to drivers/hsi/hsi_core.c
Signature · 1 line
2.8.3
#10 lore raw

Re: [PATCH] hsi: Build hsi_boardinfo.c into hsi core if enabled

Hi Andrew,

Quoted 15 lines · Andrew F. Davis

If the HSI core is built as a module hsi_boardinfo may still be built-in as its Kconfig type is bool, which can cause build issues. Fix this by building this code into the HSI core when enabled.

---
This build error seems to be due to Kconfig symbol CONFIG_HSI_BOARDINFO being a bool but depending on a tristate (CONFIG_HSI). This is normally okay when it is just a flag to enable a feature in source, but the helper code file hsi_boardinfo.c is built as a separate entity when enabled. This patch is probably how it was intended, and is more like how others do this kind of thing.

Quoted 1 line

This patch should be applied before the parent patch:

Thanks, I applied both patches.

-- Sebastian

#11 lore raw

PATCH 7/12 auxdisplay: Only descend into directory when CONFIG_AUXDISPLAY is set

In reply to Andrew F. Davis

When CONFIG_AUXDISPLAY is not set make will still descend into the auxdisplay directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 78162ba..b4202d0 100644
@@ -90,7 +90,7 @@ obj-y				+= firewire/
 obj-$(CONFIG_UIO)		+= uio/
 obj-$(CONFIG_VFIO)		+= vfio/
 obj-y				+= cdrom/
-obj-y				+= auxdisplay/
+obj-$(CONFIG_AUXDISPLAY)	+= auxdisplay/
 obj-$(CONFIG_PCCARD)		+= pcmcia/
 obj-$(CONFIG_DIO)		+= dio/
 obj-$(CONFIG_SBUS)		+= sbus/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#12 lore raw

PATCH 8/12 i2c: Only descend into i2c directory when CONFIG_I2C is set

In reply to Andrew F. Davis

When CONFIG_I2C is not set make will still descend into the i2c directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/Makefile +2 -1
index b4202d0..2d99d4e 100644
@@ -107,7 +107,8 @@ obj-$(CONFIG_SERIO)		+= input/serio/
 obj-$(CONFIG_GAMEPORT)		+= input/gameport/
 obj-$(CONFIG_INPUT)		+= input/
 obj-$(CONFIG_RTC_LIB)		+= rtc/
-obj-y				+= i2c/ media/
+obj-$(CONFIG_I2C)		+= i2c/
+obj-y				+= media/
 obj-$(CONFIG_PPS)		+= pps/
 obj-$(CONFIG_PTP_1588_CLOCK)	+= ptp/
 obj-$(CONFIG_W1)		+= w1/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#13 lore raw

Re: [PATCH 08/12] i2c: Only descend into i2c directory when CONFIG_I2C is set

reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree…

Hi,

[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andrew-F-Davis/gpio-Only-descend-into-gpio-directory-when-CONFIG_GPIOLIB-is-set/20160614-061705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: m32r-m32104ut_defconfig (attached as .config)
compiler: m32r-linux-gcc (GCC) 4.9.0

reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=m32r

All errors (new ones prefixed by >>):

>> ERROR: "__i2c_board_list" [drivers/i2c/i2c-core.ko] undefined!
>> ERROR: "__i2c_board_lock" [drivers/i2c/i2c-core.ko] undefined!
>> ERROR: "__i2c_first_dynamic_bus_num" [drivers/i2c/i2c-core.ko] undefined!

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#14 lore raw

PATCH 9/12 Only descend into directory when CONFIG_MEDIA_SUPPORT is set

In reply to Andrew F. Davis

When CONFIG_MEDIA_SUPPORT is not set make will still descend into the media directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 2d99d4e..19305e0 100644
@@ -108,7 +108,7 @@ obj-$(CONFIG_GAMEPORT)		+= input/gameport/
 obj-$(CONFIG_INPUT)		+= input/
 obj-$(CONFIG_RTC_LIB)		+= rtc/
 obj-$(CONFIG_I2C)		+= i2c/
-obj-y				+= media/
+obj-$(CONFIG_MEDIA_SUPPORT)	+= media/
 obj-$(CONFIG_PPS)		+= pps/
 obj-$(CONFIG_PTP_1588_CLOCK)	+= ptp/
 obj-$(CONFIG_W1)		+= w1/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#15 lore raw

PATCH 10/12 lguest: Only descend into lguest directory when CONFIG_LGUEST is set

In reply to Andrew F. Davis

When CONFIG_LGUEST is not set make will still descend into the lguest directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 19305e0..b178e2f 100644
@@ -122,7 +122,7 @@ obj-$(CONFIG_ACCESSIBILITY)	+= accessibility/
 obj-$(CONFIG_ISDN)		+= isdn/
 obj-$(CONFIG_EDAC)		+= edac/
 obj-$(CONFIG_EISA)		+= eisa/
-obj-y				+= lguest/
+obj-$(CONFIG_LGUEST)		+= lguest/
 obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
 obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
 obj-y				+= mmc/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#16 lore raw

Re: [PATCH 10/12] lguest: Only descend into lguest directory when CONFIG_LGUEST is set

Quoted 8 lines · Andrew F. Davis

When CONFIG_LGUEST is not set make will still descend into the lguest directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Applied,

Thanks!
Rusty.

Quoted 16 lines
drivers/Makefile +1 -1
index 19305e0..b178e2f 100644
@@ -122,7 +122,7 @@ obj-$(CONFIG_ACCESSIBILITY)	+= accessibility/
 obj-$(CONFIG_ISDN)		+= isdn/
 obj-$(CONFIG_EDAC)		+= edac/
 obj-$(CONFIG_EISA)		+= eisa/
-obj-y				+= lguest/
+obj-$(CONFIG_LGUEST)		+= lguest/
 obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
 obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
 obj-y				+= mmc/
Signature · 1 line
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev

#17 lore raw

PATCH 11/12 mmc: Only descend into mmc directory when CONFIG_MMC is set

In reply to Andrew F. Davis

When CONFIG_MMC is not set make will still descend into the mmc directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index b178e2f..567e32c 100644
@@ -125,7 +125,7 @@ obj-$(CONFIG_EISA)		+= eisa/
 obj-$(CONFIG_LGUEST)		+= lguest/
 obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
 obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
-obj-y				+= mmc/
+obj-$(CONFIG_MMC)		+= mmc/
 obj-$(CONFIG_MEMSTICK)		+= memstick/
 obj-y				+= leds/
 obj-$(CONFIG_INFINIBAND)	+= infiniband/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#18 lore raw

Re: [PATCH 11/12] mmc: Only descend into mmc directory when CONFIG_MMC is set

reproduce:

Hi,

[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andrew-F-Davis/gpio-Only-descend-into-gpio-directory-when-CONFIG_GPIOLIB-is-set/20160614-061705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: i386-randconfig-sb0-06140627 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

>> ERROR: "sdhci_pci_get_data" [drivers/mmc/host/sdhci-pci.ko] undefined!
>> ERROR: "sdhci_pci_spt_drive_strength" [drivers/mmc/host/sdhci-pci.ko] undefined!

ERROR: "hsi_board_list" [drivers/hsi/hsi.ko] undefined!

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#19 lore raw

PATCH 12/12 leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

In reply to Andrew F. Davis

When CONFIG_NEW_LEDS is not set make will still descend into the leds directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
 drivers/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 567e32c..fa514d5 100644
@@ -127,7 +127,7 @@ obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
 obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
 obj-$(CONFIG_MMC)		+= mmc/
 obj-$(CONFIG_MEMSTICK)		+= memstick/
-obj-y				+= leds/
+obj-$(CONFIG_NEW_LEDS)		+= leds/
 obj-$(CONFIG_INFINIBAND)	+= infiniband/
 obj-$(CONFIG_SGI_SN)		+= sn/
 obj-y				+= firmware/
Signature · 6 lines
2.8.3

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#20 lore raw

Re: [PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree…

Hi,

[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.7-rc3 next-20160609]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andrew-F-Davis/gpio-Only-descend-into-gpio-directory-when-CONFIG_GPIOLIB-is-set/20160614-061705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: arm-s3c6400_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 5.3.1-8) 5.3.1 20160205

reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm

All errors (new ones prefixed by >>):

arch/arm/mach-s3c64xx/built-in.o: In function `crag6410_machine_init':

>> arch/arm/mach-s3c64xx/mach-crag6410.c:854: undefined reference to `gpio_led_register_device'

vim +854 arch/arm/mach-s3c64xx/mach-crag6410.c

e1a3c74f Mark Brown     2011-05-06  838  	s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
e1a3c74f Mark Brown     2011-05-06  839  
e1a3c74f Mark Brown     2011-05-06  840  	s3c_i2c0_set_platdata(&i2c0_pdata);
8351c7aa Mark Brown     2011-12-02  841  	s3c_i2c1_set_platdata(&i2c1_pdata);
e1a3c74f Mark Brown     2011-05-06  842  	s3c_fb_set_platdata(&crag6410_lcd_pdata);
1f91b4cc Felipe Balbi   2015-08-06  843  	dwc2_hsotg_set_platdata(&crag6410_hsotg_pdata);
e1a3c74f Mark Brown     2011-05-06  844  
e1a3c74f Mark Brown     2011-05-06  845  	i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
e1a3c74f Mark Brown     2011-05-06  846  	i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
e1a3c74f Mark Brown     2011-05-06  847  
e1a3c74f Mark Brown     2011-05-06  848  	samsung_keypad_set_platdata(&crag6410_keypad_data);
479535ed Mark Brown     2012-10-17  849  	s3c64xx_spi0_set_platdata(NULL, 0, 2);
e1a3c74f Mark Brown     2011-05-06  850  
799fbf8c Thierry Reding 2015-10-13  851  	pwm_add_table(crag6410_pwm_lookup, ARRAY_SIZE(crag6410_pwm_lookup));
e1a3c74f Mark Brown     2011-05-06  852  	platform_add_devices(crag6410_devices, ARRAY_SIZE(crag6410_devices));
e1a3c74f Mark Brown     2011-05-06  853  
66211f98 Mark Brown     2011-12-29 @854  	gpio_led_register_device(-1, &gpio_leds_pdata);
66211f98 Mark Brown     2011-12-29  855  
ae24c263 Mark Brown     2011-06-22  856  	regulator_has_full_constraints();
ae24c263 Mark Brown     2011-06-22  857  
c656c306 Mark Brown     2011-12-08  858  	s3c64xx_pm_init();
e1a3c74f Mark Brown     2011-05-06  859  }
e1a3c74f Mark Brown     2011-05-06  860  
e1a3c74f Mark Brown     2011-05-06  861  MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
e1a3c74f Mark Brown     2011-05-06  862  	/* Maintainer: Mark Brown <[email protected]> */

:::::: The code at line 854 was first introduced by commit
:::::: 66211f98d611056bf5fe918bbda37c636688574e ARM: S3C64XX: Support GPIO LEDs on Cragganmore

:::::: TO: Mark Brown <[email protected]> :::::: CC: Kukjin Kim <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#21 lore raw

Re: [PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

In reply to Andrew F. Davis

Hi Andrew,

Thanks for the patch.

Please address the issue [1] raised by test bot and resubmit.

Thanks,
Jacek Anaszewski

[1] https://lkml.org/lkml/2016/6/13/1091

Quoted 23 lines · Andrew F. Davis

When CONFIG_NEW_LEDS is not set make will still descend into the leds directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
  drivers/Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 567e32c..fa514d5 100644
@@ -127,7 +127,7 @@ obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
  obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
  obj-$(CONFIG_MMC)		+= mmc/
  obj-$(CONFIG_MEMSTICK)		+= memstick/
-obj-y				+= leds/
+obj-$(CONFIG_NEW_LEDS)		+= leds/
  obj-$(CONFIG_INFINIBAND)	+= infiniband/
  obj-$(CONFIG_SGI_SN)		+= sn/
  obj-y				+= firmware/
Signature · 2 lines
Best regards,
Jacek Anaszewski
#22 lore raw

Re: [PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

Quoted 11 lines · Jacek Anaszewski

Hi Andrew,

Thanks for the patch.

Please address the issue [1] raised by test bot and resubmit.

Thanks,
Jacek Anaszewski

[1] https://lkml.org/lkml/2016/6/13/1091

It looks like some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. This doesn't necessarily depend on the LED subsystem but it kind of seems useless when the rest of the subsystem is disabled.

One solution could be to use a dummy 'gpio_led_register_device' when the subsystem is not enabled. Another is just to remove the five or so uses of 'gpio_led_register_device' and have those systems register LED device tables like other systems do.

If nether of these are acceptable then this patch can be dropped from this series for now.

Thanks,
Andrew

Quoted 26 lines · Andrew F. Davis
Quoted 23 lines

When CONFIG_NEW_LEDS is not set make will still descend into the leds directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
  drivers/Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 567e32c..fa514d5 100644
@@ -127,7 +127,7 @@ obj-$(CONFIG_CPU_FREQ)        += cpufreq/
  obj-$(CONFIG_CPU_IDLE)        += cpuidle/
  obj-$(CONFIG_MMC)        += mmc/
  obj-$(CONFIG_MEMSTICK)        += memstick/
-obj-y                += leds/
+obj-$(CONFIG_NEW_LEDS)        += leds/
  obj-$(CONFIG_INFINIBAND)    += infiniband/
  obj-$(CONFIG_SGI_SN)        += sn/
  obj-y                += firmware/
#23 lore raw

Re: [PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set

Quoted 13 lines · Andrew F. Davis
Quoted 11 lines · Jacek Anaszewski

Hi Andrew,

Thanks for the patch.

Please address the issue [1] raised by test bot and resubmit.

Thanks,
Jacek Anaszewski

[1] https://lkml.org/lkml/2016/6/13/1091

Quoted 7 lines

It looks like some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. This doesn't necessarily depend on the LED subsystem but it kind of seems useless when the rest of the subsystem is disabled.

One solution could be to use a dummy 'gpio_led_register_device' when the subsystem is not enabled.

It sounds good. Please add a no-op version of gpio_led_register_device() to include/leds.h, in a separate patch.

Thanks,
Jacek Anaszewski

Quoted 4 lines

Another is just to remove the five or so uses
of 'gpio_led_register_device' and have those systems register LED device tables like other systems do.

Quoted 34 lines

If nether of these are acceptable then this patch can be dropped from this series for now.

Thanks,
Andrew

Quoted 26 lines · Andrew F. Davis
Quoted 23 lines

When CONFIG_NEW_LEDS is not set make will still descend into the leds directory but nothing will be built. This produces unneeded build artifacts and messages in addition to slowing the build. Fix this here.

---
   drivers/Makefile | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
drivers/Makefile +1 -1
index 567e32c..fa514d5 100644
@@ -127,7 +127,7 @@ obj-$(CONFIG_CPU_FREQ)        += cpufreq/
   obj-$(CONFIG_CPU_IDLE)        += cpuidle/
   obj-$(CONFIG_MMC)        += mmc/
   obj-$(CONFIG_MEMSTICK)        += memstick/
-obj-y                += leds/
+obj-$(CONFIG_NEW_LEDS)        += leds/
   obj-$(CONFIG_INFINIBAND)    += infiniband/
   obj-$(CONFIG_SGI_SN)        += sn/
   obj-y                += firmware/

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev

#24 lore raw

PATCH 1/1 leds: Add no-op gpio_led_register_device when LED subsystem is disabled

Some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. When the LED subsystem is not enabled source in the led directory is not built and so this function may be undefined. Fix this here.

---
 include/linux/leds.h | 8 ++++++++
 1 file changed, 8 insertions(+)
include/linux/leds.h +8 -0
index d2b1306..a4a3da6 100644
@@ -386,8 +386,16 @@ struct gpio_led_platform_data {
                                        unsigned long *delay_off);
 };
 
+#ifdef CONFIG_NEW_LEDS
 struct platform_device *gpio_led_register_device(
                int id, const struct gpio_led_platform_data *pdata);
+#else
+static inline struct platform_device *gpio_led_register_device(
+               int id, const struct gpio_led_platform_data *pdata)
+{
+       return 0;
+}
+#endif
 
 enum cpu_led_event {
        CPU_LED_IDLE_START,     /* CPU enters idle */
Signature · 5 lines
2.9.0
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#25 lore raw

Re: [PATCH] leds: Add no-op gpio_led_register_device when LED subsystem is disabled

Hi Andrew,

This patch doesn't apply, please rebase onto recent LED tree.

Quoted 15 lines · Andrew F. Davis

Some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. When the LED subsystem is not enabled source in the led directory is not built and so this function may be undefined. Fix this here.

---
  include/linux/leds.h | 8 ++++++++
  1 file changed, 8 insertions(+)
include/linux/leds.h +0 -0
index d2b1306..a4a3da6 100644

include/linux/leds.h struct gpio_led_platform_data { · line 386

Quoted 1 line
include/linux/leds.h +0 -0
@@ -386,8 +386,16 @@ struct gpio_led_platform_data {
                                         unsigned long *delay_off);

Currently there is some stuff here, and in fact it has been for a long time.

Patch "[PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set" also doesn't apply.
What repository are you using?

Quoted 16 lines
include/linux/leds.h +8 -0
  };
 
+#ifdef CONFIG_NEW_LEDS
  struct platform_device *gpio_led_register_device(
                 int id, const struct gpio_led_platform_data *pdata);
+#else
+static inline struct platform_device *gpio_led_register_device(
+               int id, const struct gpio_led_platform_data *pdata)
+{
+       return 0;
+}
+#endif
 
  enum cpu_led_event {
         CPU_LED_IDLE_START,     /* CPU enters idle */
Signature · 6 lines
Best regards,
Jacek Anaszewski
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev
#26 lore raw

Re: [PATCH] leds: Add no-op gpio_led_register_device when LED subsystem is disabled

Quoted 25 lines · Jacek Anaszewski

Hi Andrew,

This patch doesn't apply, please rebase onto recent LED tree.

Quoted 15 lines · Andrew F. Davis

Some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. When the LED subsystem is not enabled source in the led directory is not built and so this function may be undefined. Fix this here.

---
  include/linux/leds.h | 8 ++++++++
  1 file changed, 8 insertions(+)
include/linux/leds.h +0 -0
index d2b1306..a4a3da6 100644

include/linux/leds.h struct gpio_led_platform_data { · line 386

Quoted 1 line
include/linux/leds.h +0 -0
@@ -386,8 +386,16 @@ struct gpio_led_platform_data {
                                         unsigned long *delay_off);

Currently there is some stuff here, and in fact it has been for a long time.

Quoted 4 lines

Patch "[PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set" also doesn't apply.
What repository are you using?

v4.7-rc4, it may not apply due to the surrounding lines being changed in the other patches which may not be applied to your tree. It is a single line change per patch so hopefully the merge conflict resolutions will be trivial.

A better solution could have been getting an ack from each maintainer and having someone pull the whole series into one tree, but parts have already been picked so it may be a little late for that.

Quoted 13 lines
Quoted 13 lines
include/linux/leds.h +8 -0
  };
 
+#ifdef CONFIG_NEW_LEDS
  struct platform_device *gpio_led_register_device(
                 int id, const struct gpio_led_platform_data *pdata);
+#else
+static inline struct platform_device *gpio_led_register_device(
+               int id, const struct gpio_led_platform_data *pdata)
+{
+       return 0;
+}
+#endif
 
Quoted 5 lines

include/linux/leds.h struct gpio_led_platform_data { · line 401

Quoted 3 lines
include/linux/leds.h +0 -0
  enum cpu_led_event {
         CPU_LED_IDLE_START,     /* CPU enters idle */

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://lists.ozlabs.org/listinfo/linuxppc-dev

#27 lore raw

Re: [PATCH] leds: Add no-op gpio_led_register_device when LED subsystem is disabled

Quoted 31 lines · Andrew F. Davis
Quoted 25 lines · Jacek Anaszewski

Hi Andrew,

This patch doesn't apply, please rebase onto recent LED tree.

Quoted 15 lines · Andrew F. Davis

Some systems use 'gpio_led_register_device' to make an in-memory copy of their LED device table so the original can be removed as .init.rodata. When the LED subsystem is not enabled source in the led directory is not built and so this function may be undefined. Fix this here.

---
   include/linux/leds.h | 8 ++++++++
   1 file changed, 8 insertions(+)
include/linux/leds.h +0 -0
index d2b1306..a4a3da6 100644

include/linux/leds.h struct gpio_led_platform_data { · line 386

Quoted 1 line
include/linux/leds.h +0 -0
@@ -386,8 +386,16 @@ struct gpio_led_platform_data {
                                          unsigned long *delay_off);

Currently there is some stuff here, and in fact it has been for a long time.

Quoted 4 lines

Patch "[PATCH 12/12] leds: Only descend into leds directory when CONFIG_NEW_LEDS is set" also doesn't apply.
What repository are you using?

Quoted 8 lines

v4.7-rc4, it may not apply due to the surrounding lines being changed in the other patches which may not be applied to your tree. It is a single line change per patch so hopefully the merge conflict resolutions will be trivial.

A better solution could have been getting an ack from each maintainer and having someone pull the whole series into one tree, but parts have already been picked so it may be a little late for that.

OK, I resolved the issues and applied, thanks.

Quoted 20 lines
Quoted 18 lines
Quoted 16 lines
include/linux/leds.h +8 -0
   };
 
+#ifdef CONFIG_NEW_LEDS
   struct platform_device *gpio_led_register_device(
                  int id, const struct gpio_led_platform_data *pdata);
+#else
+static inline struct platform_device *gpio_led_register_device(
+               int id, const struct gpio_led_platform_data *pdata)
+{
+       return 0;
+}
+#endif
 
   enum cpu_led_event {
          CPU_LED_IDLE_START,     /* CPU enters idle */
Signature · 2 lines
Best regards,
Jacek Anaszewski