Re: RCU: undefined reference to irq_work_queue

From: Randy Dunlap
Date: Thu Mar 17 2022 - 16:31:13 EST




On 3/17/22 13:29, Paul E. McKenney wrote:
> On Thu, Mar 17, 2022 at 01:26:45PM -0700, Randy Dunlap wrote:
>>
>>
>> On 3/17/22 10:36, Paul E. McKenney wrote:
>>> On Thu, Mar 17, 2022 at 04:45:11PM +0000, Hyeonggon Yoo wrote:
>>>> On Thu, Mar 17, 2022 at 09:20:33AM -0700, Paul E. McKenney wrote:
>>>>> On Thu, Mar 17, 2022 at 03:24:42PM +0000, Hyeonggon Yoo wrote:
>>>>>> On Thu, Mar 17, 2022 at 07:00:00AM -0700, Paul E. McKenney wrote:
>>>>>>> On Thu, Mar 17, 2022 at 11:32:53AM +0000, Hyeonggon Yoo wrote:
>>>>>>>> Hello RCU folks,
>>>>>>>>
>>
>>> ------------------------------------------------------------------------
>>>
>>> diff --git a/arch/Kconfig b/arch/Kconfig
>>> index 678a80713b21..66c5b5543511 100644
>>> --- a/arch/Kconfig
>>> +++ b/arch/Kconfig
>>> @@ -38,6 +38,7 @@ config KPROBES
>>> depends on MODULES
>>> depends on HAVE_KPROBES
>>> select KALLSYMS
>>> + select TASKS_RCU if PREEMPTION
>>> help
>>> Kprobes allows you to trap at almost any kernel address and
>>> execute a callback function. register_kprobe() establishes
>>> diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig
>>> index f559870fbf8b..4f665ae0cf55 100644
>>> --- a/kernel/rcu/Kconfig
>>> +++ b/kernel/rcu/Kconfig
>>> @@ -78,7 +78,8 @@ config TASKS_RCU_GENERIC
>>> task-based RCU implementations. Not for manual selection.
>>>
>>> config TASKS_RCU
>>> - def_bool PREEMPTION
>>> + def_bool 0
>>
>> preferably
>> def_bool n
>>
>> but the 0 probably works... :)
>
> In a later commit, it ends up like this:
>
> config TASKS_TRACE_RCU
> bool "Enable Tasks Trace RCU"
> depends on RCU_EXPERT
> default n
> select IRQ_WORK
> help
> This option enables a task-based RCU implementation that uses
> explicit rcu_read_lock_trace() read-side markers, and allows
> these readers to appear in the idle loop as well as on the CPU
> hotplug code paths. It can force IPIs on online CPUs, including
> idle ones, so use with caution.
>
> The reason being to allow people to use rcutorture without having
> to have TASKS_TRACE_RCU enabled.
>
> So you got your wish! I think... ;-)
>
> Thanx, Paul

Yeah, thanks.

>>> + select IRQ_WORK
>>> help
>>> This option enables a task-based RCU implementation that uses
>>> only voluntary context switch (not preemption!), idle, and
>>> diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
>>> index 752ed89a293b..a7aaf150b704 100644
>>> --- a/kernel/trace/Kconfig
>>> +++ b/kernel/trace/Kconfig
>>> @@ -127,6 +127,7 @@ config TRACING
>>> select BINARY_PRINTF
>>> select EVENT_TRACING
>>> select TRACE_CLOCK
>>> + select TASKS_RCU if PREEMPTION
>>>
>>> config GENERIC_TRACER
>>> bool
>>
>> --
>> ~Randy

--
~Randy