Re: [PATCH] x86/mm/kaiser: Fix IRQ entries text section mapping

From: Peter Zijlstra
Date: Mon Nov 27 2017 - 03:15:16 EST


On Sat, Nov 25, 2017 at 05:08:08PM +0100, Thomas Gleixner wrote:
> On Sat, 25 Nov 2017, Ingo Molnar wrote:
> > kaiser_add_user_map_ptrs_early(__entry_text_start, __entry_text_end,
> > __PAGE_KERNEL_RX | _PAGE_GLOBAL);
> > + kaiser_add_user_map_ptrs_early(__irqentry_text_start, __irqentry_text_end,
> > + __PAGE_KERNEL_RX | _PAGE_GLOBAL);
>
> The bad news is that this maps more stuff than actually needed:
>
> ffffffff81ab1c20 T __irqentry_text_start
> ffffffff81ab1c20 T apic_timer_interrupt
> ffffffff81ab1cf0 T x86_platform_ipi
> ffffffff81ab1dc0 T threshold_interrupt
> ffffffff81ab1e90 T deferred_error_interrupt
> ffffffff81ab1f60 T thermal_interrupt
> ffffffff81ab2030 T call_function_single_interrupt
> ffffffff81ab2100 T call_function_interrupt
> ffffffff81ab21d0 T reschedule_interrupt
> ffffffff81ab22a0 T error_interrupt
> ffffffff81ab2370 T spurious_interrupt
> ffffffff81ab2440 T irq_work_interrupt

I'm confused though; for IDT we have that trampoline Andy did. So the
interrupt should land on the entry stack, do the switch magic and then
call the 'real' IDT entry, no?

So why do these functions need to be mapped at all?