Doh, thought I had sent this one out already...
On 11/11/21 15:55, Michael Ellerman wrote:
Valentin Schneider [off-list ref] writes:
quoted
Per PREEMPT_DYNAMIC, checking CONFIG_PREEMPT doesn't tell you the actual
preemption model of the live kernel. Use the newly-introduced accessors
instead.
sched_init() -> preempt_dynamic_init() happens way before IRQs are set up,
so this should be fine.
Despite the name interrupt_exit_kernel_prepare() is called before IRQs
are setup, traps and page faults are "interrupts" here.
So I'm not sure about adding that call there, because it will trigger a
WARN if called early in boot, which will trigger a trap and depending on
the context we may not survive.
I'd be happier if we can make it a build-time check.
This can't be done at build-time for PREEMPT_DYNAMIC, but that can be
punted off to whoever will implement ppc support for that :-) AFAICT if
this can't use preempt_dynamic_mode (due to how "late" it is setup), the
preempt_schedule_irq() needs to go and ppc needs to use irqentry_exit() /
irqentry_exit_cond_resched().
I dropped that for v2.
cheers