Linux-4.14.69-rt40 __migrate_disabled not exposed when external modules are built

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

I am building lttng-modules-2.10.x/2.9.10 against Linux-4.14.69-rt43
as out-of-tree modules and have been noticing the error/warning as
shown below:

Build warning:
--------------------------------------------------------------------------------------------
WARNING: "__migrate_disabled"
[/home/builder/lttng-modules/lttng-modules-2.10.7/lttng-tracer.ko]
undefined!
--------------------------------------------------------

Runtime issue:
--------------------------------------------------------
debian at debian:~$ sudo dmesg  | grep -i migrate
[   10.721478] lttng_tracer: Unknown symbol __migrate_disabled (err 0)
--------------------------------------------------------

Impact: LTTng Kernel tracing not working, Lttng modules are not loaded.

Reference: https://lists.lttng.org/pipermail/lttng-dev/2018-September/028216.html

RT code which affects external modules build is:

File: include/linux/preempt.h
-------------------------------------------
#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE)

extern void migrate_disable(void);
extern void migrate_enable(void);

int __migrate_disabled(struct task_struct *p)

#elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE)
-------------------------------------------

The kernel has both SMP & PREEMPT_RT_BASE/FULL enabled, Since I am
building LTTNG as module i.e. CONFIG_LTTNG=m, I see this warning and
LTTng kernel tracing isnt working anymore.

OTOH, If I modify the condition as shown below, then no warning is
seen and the Lttng builds and runs fine.

--------------------------------------------
-#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE)
+#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) &&
defined(CONFIG_MODULES)

extern void migrate_disable(void);
extern void migrate_enable(void);

int __migrate_disabled(struct task_struct *p);

-#elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE)
+#elif !defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE) &&
defined(CONFIG_MODULES)
--------------------------------------------

Kindly suggest if there is a better approach to fix this issue ?

Thanks in Advance!

--

Srikanth



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux