[yocto] Preempt-rt kernel build for beagleboard

Bruce Ashfield bruce.ashfield at windriver.com
Wed Nov 28 09:58:07 PST 2012


On 12-11-28 01:07 AM, Yu Pan wrote:
> Hi Bruce,
>
> Thanks for commenting :-)
>
>     You shouldn't have needed to do this part, since the board already has
>     a preempt-rt BSP description:
>
>     http://git.yoctoproject.org/__cgit/cgit.cgi/linux-yocto-3.4/__tree/meta/cfg/kernel-cache/__bsp/beagleboard/beagleboard-__preempt-rt.scc?h=meta
>     <http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.4/tree/meta/cfg/kernel-cache/bsp/beagleboard/beagleboard-preempt-rt.scc?h=meta>
>
>     And when you build the linux-yocto-rt kernel with that board, that
>     description should be found, and it enables all the base options
>     already.
>
>     If you look in your build, what does the file 'linux/meta/top_tgt'
>     contain ?
>
>
> This was what puzzles me as well. I thought bitbake should pickup what
> is specified in beagleboard-preempt-rt.scc to produce the .config in the
> kernel build directory. But it did not, at least for the PREEMPT part.
> Below is the PREEMPT related configs in the .config without manually
> doing the menuconfig:
>
> # CONFIG_PREEMPT_RCU is not set
> CONFIG_PREEMPT_NONE=y
> # CONFIG_PREEMPT_VOLUNTARY is not set
> # CONFIG_PREEMPT__LL is not set
> # CONFIG_PREEMPT_RTB is not set
> # CONFIG_PREEMPT_RT_FULL is not set
>
> Follow your pointer, I checked linux/meta/top_tgt, it indeed points to
> meta/cfg/kernel-cache/bsp/beagleboard/beagleboard-preempt-rt.scc, which
> includes ktypes/preempt-rt (why not ktypes/preempt-rt.scc?). In
> ktypes/preempt-rt.cfg (included by ktypes/preempt-rt.scc),
> CONFIG_PREEMPT_RT_FULL=y is there. So why not this configuration
> fragment not picked up in the final .config?

Mystery solved. The fragment is picked up properly in the build and
everything is operating as expected.

We had an old commit (that is still required for some configurations)
that disabled preemption for the beagleboard due to SD card boot
issues.

That being said, the entire point of trying out preempt-rt is for the
extra preemption, and without it, why bother. So I moved the preempt
disable to the standard kernel only in this commit:

http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-cache/commit/?id=551c7ad8c46d371c6b135357ed2d388d45af13d8

Once I update the SRCREVs for the meta branch of the linux-yocto-3.4
tree, you'll get the expected preempt settings out of the box:

 > grep PREEMPT linux-beagleboard-preempt-rt-build/.config
CONFIG_TINY_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_RT_BASE=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT__LL is not set
# CONFIG_PREEMPT_RTB is not set
CONFIG_PREEMPT_RT_FULL=y
CONFIG_PREEMPT_COUNT=y
CONFIG_DEBUG_PREEMPT=y
# CONFIG_PREEMPT_TRACER is not set

Cheers,

Bruce


>
> Cheers
> Pan Yu




More information about the yocto mailing list