Messages in this thread | | | Subject | Re: [patch] preempt: select PREEMPT_DYNAMIC under PREEMPTION instead of PREEMPT | From | Mike Galbraith <> | Date | Tue, 09 Feb 2021 17:05:14 +0100 |
| |
On Tue, 2021-02-09 at 16:13 +0100, Peter Zijlstra wrote: > On Tue, Feb 09, 2021 at 02:45:37PM +0100, Mike Galbraith wrote: > > > > PREEMPT_RT and PREEMPT both needs PREEMPT_DYNAMIC to build, so move > > selection of PREEMPT_DYNAMIC to the common denominator, PREEMPTION. > > I'm confused, why would you want PREEMPT_DYNAMIC for > PREEMPT_RT ? > > PREEMPT_RT without full preemption is just plain daft, no?
If you turn on PREEMPT, PREEMPT_DYNAMIC is selected because HAVE_PREEMPT_DYNAMIC is true.
homer:..kernel/linux-tip # grep PREEMPT .config # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y CONFIG_PREEMPTION=y CONFIG_PREEMPT_DYNAMIC=y CONFIG_PREEMPT_RCU=y CONFIG_HAVE_PREEMPT_DYNAMIC=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 CONFIG_DEBUG_PREEMPT=y # CONFIG_PREEMPT_TRACER is not set # CONFIG_PREEMPTIRQ_DELAY_TEST is not set
Now over to tip-rt, with patchlet...
homer:..kernel/linux-tip-rt # grep PREEMPT .config CONFIG_HAVE_PREEMPT_LAZY=y CONFIG_PREEMPT_LAZY=y # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_PREEMPT_RT=y CONFIG_PREEMPT_COUNT=y CONFIG_PREEMPTION=y CONFIG_PREEMPT_DYNAMIC=y CONFIG_PREEMPT_RCU=y CONFIG_HAVE_PREEMPT_DYNAMIC=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 CONFIG_DEBUG_PREEMPT=y # CONFIG_PREEMPT_TRACER is not set # CONFIG_PREEMPTIRQ_DELAY_TEST is not set
...tree builds/runs. Pop patchlet, and...
LD vmlinux.o MODPOST vmlinux.symvers MODINFO modules.builtin.modinfo GEN modules.builtin LD .tmp_vmlinux.kallsyms1 ld: init/main.o: in function `trace_initcall_start': /backup/usr/local/src/kernel/linux-tip-rt/./include/trace/events/initcall.h:27: undefined reference to `__SCT__preempt_schedule_notrace' ld: init/main.o: in function `trace_initcall_finish': /backup/usr/local/src/kernel/linux-tip-rt/./include/trace/events/initcall.h:48: undefined reference to `__SCT__preempt_schedule_notrace' ld: init/main.o: in function `trace_initcall_level': /backup/usr/local/src/kernel/linux-tip-rt/./include/trace/events/initcall.h:10: undefined reference to `__SCT__preempt_schedule_notrace' ld: init/main.o:(.static_call_sites+0x4): undefined reference to `__SCK__preempt_schedule_notrace' ld: init/main.o:(.static_call_sites+0x14): undefined reference to `__SCK__preempt_schedule_notrace' ld: init/main.o:(.static_call_sites+0x24): undefined reference to `__SCK__preempt_schedule_notrace' ld: arch/x86/entry/vsyscall/vsyscall_64.o: in function `trace_emulate_vsyscall': /backup/usr/local/src/kernel/linux-tip-rt/arch/x86/entry/vsyscall/vsyscall_trace.h:10: undefined reference to `__SCT__preempt_schedule_notrace' ld: arch/x86/entry/vsyscall/vsyscall_64.o:(.static_call_sites+0x4): undefined reference to `__SCK__preempt_schedule_notrace' ld: arch/x86/events/amd/ibs.o: in function `ibs_eilvt_valid': /backup/usr/local/src/kernel/linux-tip-rt/arch/x86/events/amd/ibs.c:865: undefined reference to `__SCT__preempt_schedule' ld: arch/x86/events/amd/ibs.o: in function `force_ibs_eilvt_setup': /backup/usr/local/src/kernel/linux-tip-rt/arch/x86/events/amd/ibs.c:923: undefined reference to `__SCT__preempt_schedule' ld: /backup/usr/local/src/kernel/linux-tip-rt/arch/x86/events/amd/ibs.c:943: undefined reference to `__SCT__preempt_schedule' ld: arch/x86/events/amd/ibs.o: in function `ibs_eilvt_valid': /backup/usr/local/src/kernel/linux-tip-rt/arch/x86/events/amd/ibs.c:865: undefined reference to `__SCT__preempt_schedule' ...
| |