Skip to contentSkip to conversation

v4.1-rcX regression in v4l2 build

DISCUSSION Robert Jarzmik 3 participants 6 messages May 12, 2015 – May 13, 2015 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hi Guennadi,

Today I noticed the mioa701 build is broken on v4.1-rcX series. It was working in v4.0.

The build error I get is :
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o

  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o

drivers/built-in.o: In function `v4l2_clk_set_rate':
/home/rj/mio_linux/kernel/drivers/media/v4l2-core/v4l2-clk.c:196: undefined reference to `clk_round_rate' Makefile:932: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
make: Target '_all' not remade because of errors.

I have no idea what changed. Do you have a clue ?

Cheers.

Signature · 17 lines
Robert

PS: A small extract of my .config
rj@belgarion:~/mio_linux/kernel$ grep CLK .config
CONFIG_HAVE_CLK=y
CONFIG_PM_CLK=y
# CONFIG_MMC_CLKGATE is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_OF=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLKSRC_PXA=y
rj@belgarion:~/mio_linux/kernel$ grep V4L .config
CONFIG_VIDEO_V4L2=y
CONFIG_V4L_PLATFORM_DRIVERS=y
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
CONFIG_DVB_AU8522_V4L=m
#1 lore raw

Hi Robert,

Quoted 14 lines · Robert Jarzmik

Hi Guennadi,

Today I noticed the mioa701 build is broken on v4.1-rcX series. It was working in v4.0.

The build error I get is :
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o

  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
Quoted 5 lines

drivers/built-in.o: In function `v4l2_clk_set_rate':
/home/rj/mio_linux/kernel/drivers/media/v4l2-core/v4l2-clk.c:196: undefined reference to `clk_round_rate' Makefile:932: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
make: Target '_all' not remade because of errors.

Not good:(

Quoted 1 line

I have no idea what changed. Do you have a clue ?

I've seen some patches on ALKML for PXA CCF, is it in the mainline now? Could that have been the reason? Is CONFIG_COMMON_CLK defined in your .config? Although, no, it's not PXA CCF, it's most probably this

commit 4f528afcfbcac540c8690b41307cac5c22088ff1

Author: Guennadi Liakhovetski <[email protected]>
Date:   Sun Feb 1 08:12:33 2015 -0300

[media] V4L: add CCF support to the v4l2_clk API

:( But I don't understand how this can happen. V4L is certainly not the only driver in your build, that uses clk ops! They are exported from drivers/clk/clk.c for GPL, but v4l2-dev.c defines the GPL licence, so, should be ok. V4L is built as a module in your configuration, right? Can you try building it into the image?

Thanks
Guennadi

Quoted 22 lines

Cheers.

Signature · 17 lines
Robert

PS: A small extract of my .config
rj@belgarion:~/mio_linux/kernel$ grep CLK .config
CONFIG_HAVE_CLK=y
CONFIG_PM_CLK=y
# CONFIG_MMC_CLKGATE is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_OF=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLKSRC_PXA=y
rj@belgarion:~/mio_linux/kernel$ grep V4L .config
CONFIG_VIDEO_V4L2=y
CONFIG_V4L_PLATFORM_DRIVERS=y
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
CONFIG_DVB_AU8522_V4L=m
#2 lore raw
Quoted 36 lines · Guennadi Liakhovetski

Hi Robert,

Quoted 14 lines · Robert Jarzmik

Hi Guennadi,

Today I noticed the mioa701 build is broken on v4.1-rcX series. It was working in v4.0.

The build error I get is :
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o

  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
Quoted 5 lines

drivers/built-in.o: In function `v4l2_clk_set_rate':
/home/rj/mio_linux/kernel/drivers/media/v4l2-core/v4l2-clk.c:196: undefined reference to `clk_round_rate' Makefile:932: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
make: Target '_all' not remade because of errors.

Not good:(

Quoted 1 line

I have no idea what changed. Do you have a clue ?

I've seen some patches on ALKML for PXA CCF, is it in the mainline now? Could that have been the reason? Is CONFIG_COMMON_CLK defined in your .config? Although, no, it's not PXA CCF, it's most probably this

commit 4f528afcfbcac540c8690b41307cac5c22088ff1

Author: Guennadi Liakhovetski <[email protected]>
Date:   Sun Feb 1 08:12:33 2015 -0300
Quoted 7 lines

[media] V4L: add CCF support to the v4l2_clk API

:( But I don't understand how this can happen. V4L is certainly not the only driver in your build, that uses clk ops! They are exported from drivers/clk/clk.c for GPL, but v4l2-dev.c defines the GPL licence, so, should be ok. V4L is built as a module in your configuration, right? Can you try building it into the image?

I think I know how this is possible. PXA uses arch/arm/mach-pxa/clock.c for clk ops, and clk_round_rate() isn't defined there... Can we add a dummy for PXA? It won't be used anyway as long as PXA doesn't support CCF.

Thanks
Guennadi

Quoted 23 lines
Quoted 22 lines

Cheers.

Signature · 17 lines
Robert

PS: A small extract of my .config
rj@belgarion:~/mio_linux/kernel$ grep CLK .config
CONFIG_HAVE_CLK=y
CONFIG_PM_CLK=y
# CONFIG_MMC_CLKGATE is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_OF=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLKSRC_PXA=y
rj@belgarion:~/mio_linux/kernel$ grep V4L .config
CONFIG_VIDEO_V4L2=y
CONFIG_V4L_PLATFORM_DRIVERS=y
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
CONFIG_DVB_AU8522_V4L=m
#3 lore raw

Guennadi Liakhovetski <[email protected]> writes:
...zip...

First, a question for Russell :
Given that the current PXA architecture is not implementing the clk_round_rate() function, while implementing clk_get(), etc..., is it correct to say that it is betraying the clk API by doing so ?

And now the answers to your mail Guennadi :

Quoted 3 lines
Quoted 3 lines

I've seen some patches on ALKML for PXA CCF, is it in the mainline now? Could that have been the reason? Is CONFIG_COMMON_CLK defined in your .config? Although, no, it's not PXA CCF, it's most probably this

No it's not in clock common framework yet.
PXA will switch to CCF in 4.2, as it missed the 4.1 merge window.

Quoted 3 lines

I think I know how this is possible. PXA uses arch/arm/mach-pxa/clock.c for clk ops, and clk_round_rate() isn't defined there... Can we add a dummy for PXA? It won't be used anyway as long as PXA doesn't support CCF.

I could do it. I'm a bit reluctant because I already prepared my pull request which fully shifts PXA to CCF, and adding a dummy function will create a merge issue.

But is PXA the only one in this case ?

Quoted 1 line

From a first sight there are 5 ARM architectures in the same case :

    rj@belgarion:~/mio_linux/kernel/arch/arm$ grep -rsl 'EXPORT_SYMBOL(clk_round_rate' *
    mach-davinci/clock.c
    mach-lpc32xx/clock.c
    mach-omap1/clock.c
    plat-versatile/clock.c
    rj@belgarion:~/mio_linux/kernel/arch/arm$ grep -rsl 'EXPORT_SYMBOL(clk_get_rate' *
    mach-davinci/clock.c
    mach-ep93xx/clock.c
    mach-lpc32xx/clock.c
    mach-mmp/clock.c
    mach-omap1/clock.c
    mach-pxa/clock.c
    mach-sa1100/clock.c
    mach-w90x900/clock.c
    plat-versatile/clock.c

Cheers.

Signature · 1 line
Robert
#4 lore raw
Quoted 4 lines · Robert Jarzmik

First, a question for Russell :
Given that the current PXA architecture is not implementing the clk_round_rate() function, while implementing clk_get(), etc..., is it correct to say that it is betraying the clk API by doing so ?

Really, yes. PXA used to be self-contained as far as clk API usage, and so it only ever implemented what it needed from the API to support the SoC. Now that things are getting "more complicated" then the other functions will probably be needed.

Signature · 2 lines
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
#5 lore raw
Quoted 10 lines · Russell King - ARM Linux
Quoted 4 lines · Robert Jarzmik

First, a question for Russell :
Given that the current PXA architecture is not implementing the clk_round_rate() function, while implementing clk_get(), etc..., is it correct to say that it is betraying the clk API by doing so ?

Really, yes. PXA used to be self-contained as far as clk API usage, and so it only ever implemented what it needed from the API to support the SoC. Now that things are getting "more complicated" then the other functions will probably be needed.

So I thought, thanks.

Cheers.

Signature · 1 line
Robert